DATA: la_header TYPE bapisdhd1, "表头
la_headerx TYPE bapisdhd1x, "表头标志
l_salesdocumentin TYPE bapivbeln-vbeln,
l_salesdocument TYPE bapivbeln-vbeln,
lt_return TYPE STANDARD TABLE OF bapiret2,
lt_item TYPE STANDARD TABLE OF bapisditm,
lt_itemx TYPE STANDARD TABLE OF bapisditmx,
la_partner TYPE bapiparnr,
lt_partner TYPE STANDARD TABLE OF bapiparnr,
lt_schdl TYPE STANDARD TABLE OF bapischdl,
lt_schdlx TYPE STANDARD TABLE OF bapischdlx,
lt_cond TYPE STANDARD TABLE OF bapicond,
lt_condx TYPE STANDARD TABLE OF bapicondx,
lt_text TYPE STANDARD TABLE OF bapisdtext,
lt_extensionin TYPE STANDARD TABLE OF bapiparex,
la_bape_vbak TYPE bape_vbak,
la_bape_vbakx TYPE bape_vbakx,
la_extensionin TYPE bapiparex,
la_item TYPE bapisditm,
la_itemx TYPE bapisditmx,
la_cond TYPE bapicond,
la_condx TYPE bapicondx,
la_schdl TYPE bapischdl,
la_text TYPE bapisdtext,
la_schdlx TYPE bapischdlx,
lv_itemno TYPE posnr_va,
la_bape_vbap TYPE bape_vbap,
la_bape_vbapx TYPE bape_vbapx.
LOOP AT pt_ztxnth INTO DATA(ps_ztxnth) .
MOVE ps_ztxnth TO ls_ztxnth.
AT FIRST.
-
表头数据 la_header-doc_type = ls_ztxnth-auart. "销售凭证类型 la_header-sales_org = ls_ztxnth-vkorg. "销售组织 la_header-distr_chan = ls_ztxnth-vtweg. "分销渠道 la_header-division = ls_ztxnth-spart. "产品组 la_header-price_grp = ls_ztxnth-konda. "价格组(客户) la_header-ord_reason = '009'. "订购原因( 业务原因 ) la_headerx-doc_type = 'X'. "销售凭证类型 la_headerx-sales_org = 'X'. "销售组织 la_headerx-distr_chan = 'X'. "分销渠道 la_headerx-division = 'X'. "产品组 la_headerx-price_grp = 'X'. "价格组(客户) la_headerx-ord_reason = 'X'. "订购原因( 业务原因 ) CLEAR lv_itemno.
ENDAT.
-
客户数据
CLEAR: la_partner.
la_partner-partn_role = ‘AG’. "AG 售达方
la_partner-partn_numb = ls_ztxnth-kunnr.
APPEND la_partner TO lt_partner. -
明细数据
CLEAR la_item.
lv_itemno = lv_itemno + 10.
la_item-itm_number = lv_itemno. "行项目号
CALL FUNCTION ‘CONVERSION_EXIT_ALPHA_INPUT’
EXPORTING
input = ls_ztxnth-matnr
IMPORTING
output = la_item-material. "物料la_item-purch_no_s = ls_ztxnth-barcode.
APPEND la_item TO lt_item.
CLEAR la_itemx.
la_itemx-itm_number = lv_itemno.
la_itemx-material = ‘X’.
la_itemx-purch_no_s = ‘X’.APPEND la_itemx TO lt_itemx.
CLEAR la_schdl.
la_schdl-itm_number = lv_itemno.
la_schdl-sched_line = 1.
la_schdl-req_qty = ls_ztxnth-menge. "数量
APPEND la_schdl TO lt_schdl.CLEAR la_schdlx.
la_schdlx-itm_number = lv_itemno.
la_schdlx-sched_line = 1.
la_schdlx-req_qty = ‘X’. "数量
APPEND la_schdlx TO lt_schdlx.
ENDLOOP.
IF lt_item[] IS NOT INITIAL.
PERFORM sapgui_progress_indicator USING '正在创建退货销售订单'."进度条显示
CALL FUNCTION 'BAPI_CUSTOMERRETURN_CREATE'
EXPORTING
salesdocumentin = l_salesdocumentin
return_header_in = la_header
return_header_inx = la_headerx
-
testrun = pu_testrun "测试 IMPORTING salesdocument = l_salesdocument TABLES return = lt_return return_items_in = lt_item return_items_inx = lt_itemx return_partners = lt_partner return_schedules_in = lt_schdl return_schedules_inx = lt_schdlx return_conditions_in = lt_cond return_text = lt_text extensionin = lt_extensionin. "
IF sy-subrc = 0 AND l_salesdocument IS NOT INITIAL.
COMMIT WORK AND WAIT."取条码对应的退货订单行 WHILE lt_vbkd[] IS INITIAL. SELECT vbeln, posnr, bstkd_e INTO CORRESPONDING FIELDS OF TABLE @lt_vbkd FROM vbkd WHERE bstkd_e <> '' AND vbeln = @l_salesdocument. ENDWHILE.
ELSE.
ROLLBACK WORK. LOOP AT lt_return INTO DATA(la_return) WHERE type = 'E' OR type = 'A' OR ( type = 'W' AND id = 'V1' AND number = '555' ). IF lv_msgtxt NS la_return-message. CONCATENATE lv_msgtxt la_return-message INTO lv_msgtxt SEPARATED BY '/' . ENDIF. ENDLOOP.
ENDIF.
ENDIF.