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'
&