SAP MM寄售发票校验接口分享

一、接口逻辑

由于寄售发票校验没有标准的BAPI可以调用,本接口采用调用事务码MRKO处理,并由于会计凭证999行没有增强或OBCY能处理,只能在接口中进行了800行拆分(行数设置了配置表)。

二、接口代码

FUNCTION zfmsrm_rfc_006 .
*"----------------------------------------------------------------------
*"*"本地接口:
*"  IMPORTING
*"     VALUE(IV_INPUT) TYPE  ZSRM_INPUT_006
*"     VALUE(IV_ACCOUNTING_HEAD) TYPE  ZSSFICO_INPUT_005_HEAD OPTIONAL
*"     VALUE(IV_LCDH) TYPE  STRING OPTIONAL
*"  EXPORTING
*"     VALUE(EV_OUTPUT) TYPE  ZSRM_OUTPUT_006
*"     VALUE(EV_ACCOUNTING_RET) TYPE  ZSFICO_OUTPUT_005
*"  TABLES
*"      IT_ITEMDATA STRUCTURE  ZSRM_RFC_PO_ITEM OPTIONAL
*"      IT_ACCOUNTING_ITEM STRUCTURE  ZSSFICO_INPUT_005_ITEM OPTIONAL
*"----------------------------------------------------------------------

********************************记录日志**************************************
  CLEAR:ls_log.
  gv_status_log = 'S'. "默认成功
  CALL FUNCTION 'ZFMSRM_RFC_LOG'
    EXPORTING
      iv_btype      = 'RFC006'
      is_req_strc1  = iv_input
      is_req_strc2  = iv_accounting_head
      is_req_strc3  = iv_lcdh
      iv_req_pname1 = 'IV_INPUT'
      iv_req_pname2 = 'IV_ACCOUNTING_HEAD'
      iv_req_pname3 = 'IV_LCDH'
      iv_tabname1   = 'IT_ITEMDATA'
      iv_tabname2   = 'IT_ACCOUNTING_ITEM'
    TABLES
      it_tab1       = it_itemdata[]
      it_tab2       = it_accounting_item[]
    CHANGING
      ls_log        = ls_log.
********************************记录日志**************************************

  IF iv_input IS NOT INITIAL.
    RANGES: s_bukrs FOR rkwa-bukrs,
            s_lifnr FOR rkwa-lifnr,
            s_werks FOR rkwa-werks,
            s_matnr FOR rkwa-matnr,
            s_bldat FOR rkwa-bldat,
            s_budat FOR rkwa-budat,
            s_mblnr FOR rkwa-mblnr,
            s_belnr FOR rkwa-belnr.

    TYPES:BEGIN OF ty_jsfp,
            bukrs TYPE bkpf-bukrs,  "公司
            belnr TYPE bkpf-belnr,  "凭证号
            gjahr TYPE bkpf-gjahr,  "年度
            bktxt TYPE bkpf-bktxt,  "SRM寄售发票单号
          END OF ty_jsfp.

    DATA:ls_jsfp TYPE ty_jsfp.
    CLEAR:ls_jsfp.

    DATA: lwa_data_list TYPE zsssrm_output_006.
    DATA: lv_msg TYPE char220.
    DATA :ls_data  TYPE  REF  TO  data.
    FIELD-SYMBOLS : <lt_data> TYPE  table,
                    <l_data>  TYPE  data.
    DATA: gt_alv TYPE TABLE OF mrm_con_alv WITH HEADER LINE.
    DATA: lt_data_list TYPE zttsrm_output_006.
    DATA lr_cx TYPE REF TO cx_salv_bs_sc_runtime_info.

    DATA:gv_create_invice TYPE c.  "是否创建寄售发票

    CLEAR:gv_create_invice.

    IF iv_input-bukrs IS INITIAL.
      lwa_data_list-type = 'E'.
      lwa_data_list-message = '公司不能为空!'.
      APPEND lwa_data_list TO ev_output-data_list.
      CLEAR lwa_data_list.
      DATA(lv_error) = 'X'.
    ELSE.

      s_bukrs[] = VALUE #( ( sign = 'I'
                             option = 'EQ'
                             low = iv_input-bukrs ) ).
    ENDIF.

    IF iv_input-lifnr IS INITIAL.
      lwa_data_list-type = 'E'.
      lwa_data_list-message = '供应商不能为空!'.
      APPEND lwa_data_list TO ev_output-data_list.
      CLEAR lwa_data_list.
      lv_error = 'X'.
    ELSE.

      s_lifnr[] = VALUE #( ( sign = 'I'
                             option = 'EQ'
                             low = iv_input-lifnr ) ).
    ENDIF.


    IF iv_input-werks IS INITIAL.
      lwa_data_list-type = 'E'.
      lwa_data_list-message = '工厂不能为空!'.
      APPEND lwa_data_list TO ev_output-data_list.
      CLEAR lwa_data_list.
      lv_error = 'X'.
    ELSE.
      s_werks[] = VALUE #( ( sign = 'I'
       &

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值