SAP MM发票校验接口分享
一、接口逻辑
二、接口代码
FUNCTION zsrm_rfc_003.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(IS_HEADERDATA) TYPE ZXK_SINVOICE_HEAD
*" EXPORTING
*" VALUE(E_MSG) TYPE STRING
*" TABLES
*" IT_ITEMDATA STRUCTURE ZSINVOICE_ITEM
*" ES_INVOICE STRUCTURE ZXK_INVOICE_RET
*"----------------------------------------------------------------------
********************************记录日志**************************************
CLEAR:ls_log.
CALL FUNCTION 'ZFMSRM_RFC_LOG'
EXPORTING
iv_btype = 'RFC003'
* iv_key1 = e_lifnr
* iv_status = gv_status_log
is_req_strc1 = is_headerdata
* IS_REQ_STRC2 =
* IS_REQ_STRC3 =
iv_req_pname1 = 'IS_HEADERDATA'
* IV_REQ_PNAME2 =
* IV_REQ_PNAME3 =
iv_tabname1 = 'IT_ITEMDATA'
TABLES
it_tab1 = it_itemdata[]
CHANGING
ls_log = ls_log.
********************************记录日志**************************************
DATA: ls_headerdata TYPE bapi_incinv_create_header,
ls_invoicedoc TYPE bapi_incinv_fld,
lt_itemdata TYPE TABLE OF bapi_incinv_create_item,
ls_itemdata TYPE bapi_incinv_create_item,
lt_glaccountdata TYPE TABLE OF bapi_incinv_create_gl_account,
ls_glaccountdata TYPE bapi_incinv_create_gl_account,
lt_taxdata TYPE TABLE OF bapi_incinv_create_tax,
ls_taxdata TYPE bapi_incinv_create_tax,
lt_return TYPE TABLE OF bapiret2,
ls_return TYPE bapiret2,
lv_item TYPE rseg-buzei,
lv_message TYPE string,
lv_error_occured TYPE c,
is_itemdata TYPE zsinvoice_item,
lv_awkey TYPE bkpf-awkey,
ls_bkpf TYPE bkpf,
ls_bseg TYPE bseg,
ls_faede TYPE faede.
*--------------------------------------------------------------------* added by dq 2020331 新增退货发票拆分
DATA: ls_headerdata1 TYPE bapi_incinv_create_header,
ls_invoicedoc1 TYPE bapi_incinv_fld,
lt_itemdata1 TYPE TABLE OF bapi_incinv_create_item,
ls_itemdata1 TYPE bapi_incinv_create_item,
lt_glaccountdata1 TYPE TABLE OF bapi_incinv_create_gl_account,
ls_glaccountdata1 TYPE bapi_incinv_create_gl_account,
lt_taxdata1 TYPE TABLE OF bapi_incinv_create_tax,
ls_taxdata1 TYPE bapi_incinv_create_tax,
lt_return1 TYPE TABLE OF bapiret2,
ls_return1 TYPE bapiret2,
lv_item1 TYPE rseg-buzei,
lv_message1 TYPE string,
lv_error_occured1 TYPE c,
is_itemdata1 TYPE zsinvoice_item,
lv_awkey1 TYPE bkpf-awkey,
ls_bkpf1 TYPE bkpf,
ls_bseg1 TYPE bseg,
ls_faede1 TYPE faede.
*--------------------------------------------------------------------* end
* generate data record
fbgenmac 'ZSRM_RFC_003'.
*--------------------------------------------------------------------* added by dq 2020331 新增退货发票拆分
LOOP AT it_itemdata INTO DATA(lwa_itemdata) WHERE ref_doc NE ''
AND quantity NE '0'
AND gl_account = ''
AND item_amount < 0.
DATA(lv_flag_th) = 'X'.
EXIT.
ENDLOOP.
IF lv_flag_th = 'X'.
ls_headerdata1-invoice_ind = ''.
ls_headerdata1-doc_type = 'RE'."凭证类型
ls_headerdata1-doc_date = is_headerdata-pstng_date."凭证中的凭证日期
ls_headerdata1-pstng_date = is_headerdata-pstng_date."凭证中的过帐日期
ls_headerdata1-bline_date = is_headerdata-pstng_date."用于到期日计算的基准日期‘
ls_headerdata1-comp_code = is_headerdata-comp_code."公司代码
ls_headerdata1-currency = is_headerdata-currency."货币码
* ls_headerdata-calc_tax_ind = 'X'. "自动结算税额
* ls_headerdata-gross_amount = is_headerdata-gross_amount. "总金额
ls_headerdata1-del_costs = is_headerdata-del_costs. "未计划的运费-尾差
ls_headerdata1-alloc_nmbr = is_headerdata-alloc_nmbr. "发票号
ls_headerdata1-ref_doc_no = is_headerdata-ref_doc_no. "参考凭证编号
ls_headerdata1-item_text = is_headerdata-item_text. "‘基本页签 - ’文本
ls_headerdata1-header_txt = is_headerdata-header_txt. "详细信息 -抬头文本
lv_item = 0.
LOOP AT it_itemdata INTO lwa_itemdata WHERE ref_doc NE ''
AND quantity NE&nb