METHOD zeq_ii_si_sbcc_mat_movement_in~si_sbcc_mat_movement_in.
*** **** INSERT IMPLEMENTATION HERE **** ***
DATA: l_god1 TYPE zeq_dt_sbcc_mat_movement_mate1,
l_god_item1 TYPE zeq_dt_sbcc_mat_movement_mater,
l_header1 TYPE zeq_dt_tec_header.
DATA: l_goodsmvt_header1 TYPE STANDARD TABLE OF bapi2017_gm_head_01,
l_goodsmvt_header_wa1 TYPE bapi2017_gm_head_01.
DATA: l_goodsmvt_code1 TYPE STANDARD TABLE OF bapi2017_gm_code,
l_goodsmvt_code_wa1 TYPE bapi2017_gm_code.
DATA: l_goodsmvt_item1 TYPE STANDARD TABLE OF bapi2017_gm_item_create,
l_goodsmvt_item_wa1 TYPE bapi2017_gm_item_create.
DATA: l_return1 TYPE STANDARD TABLE OF bapiret2.
DATA: l_return_wa1 TYPE bapiret2.
DATA: l_goodsmvt_headret1 TYPE STANDARD TABLE OF bapi2017_gm_head_ret.
DATA: l_goodsmvt_headret_wa1 TYPE bapi2017_gm_head_ret.
DATA: obj1 TYPE REF TO zeq_co_si_upinfo_retun_downloa,
row_date1 TYPE zeq_dt_upinfo_retun_download_u,
out_para1 TYPE zeq_mt_upinfo_retun_download,
row_date_header1 TYPE zeq_dt_tec_header.
DATA: zeile(3) TYPE c VALUE '000'.
DATA ztex(40) TYPE c.
DATA: l_matnr TYPE matnr,
l_aufnr TYPE aufnr,
l_elifn TYPE elifn,
l_kdauf TYPE kdauf,
l_kostl TYPE kostl,
l_ebeln TYPE ebeln,
l_ummat TYPE ummat,
l_mat_kdauf TYPE mat_kdauf.
DATA:li_goodsmvt_headret TYPE bapi2017_gm_head_ret,
li_goodsmvt_matdocitem TYPE TABLE OF bapi2017_gm_item_04.
DATA:i_return TYPE TABLE OF bapiret2 ..
DATA: l2_mblnr TYPE mblnr, "物料凭证
l2_mjahr TYPE mjahr. "年
DATA: l_werks TYPE ekpo-werks.
DATA: l_flag TYPE c.
CLEAR: l_god1,l_god_item1,l_header1.
l_header1-dtsend = input-mt_sbcc_mat_movement-dt_tec_header-dtsend.
l_header1-receiver = input-mt_sbcc_mat_movement-dt_tec_header-sender.
l_header1-message_id = input-mt_sbcc_mat_movement-dt_tec_header-message_id.
l_header1-interface_name = input-mt_sbcc_mat_movement-dt_tec_header-interface_name.
LOOP AT input-mt_sbcc_mat_movement-material_movement_header INTO l_god1.
l_goodsmvt_code_wa1-gm_code = l_god1-gm_code.
l_goodsmvt_header_wa1-pstng_date = l_god1-pstng_date.
l_goodsmvt_header_wa1-doc_date = l_god1-doc_date.
l_goodsmvt_header_wa1-header_txt = l_god1-header_txt.
-
l_goodsmvt_header_wa1-bill_of_lading = l_god1-bill_of_lading. l_goodsmvt_header_wa1-gr_gi_slip_no = l_god1-gr_gi_slip_no. l_goodsmvt_header_wa1-ref_doc_no = l_god1-ref_doc_no. IF l_god1-material_movement_items IS INITIAL . row_date1-messageid_send = l_header1-message_id. row_date1-type = 'E'. row_date1-message = '行项目为空,请确认数据'. row_date1-bill_of_lading = l_god1-bill_of_lading. row_date1-ref_doc_no = l_goodsmvt_header_wa1-ref_doc_no. APPEND row_date1 TO out_para1-mt_upinfo_retun_download-upinfo_return. EXIT. ENDIF. "20230109新增 LOOP AT l_god1-material_movement_items INTO l_god_item1.
-
zeile = zeile + 1.
-
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
-
EXPORTING
-
input = zeile
-
IMPORTING
-
output = zeile. "行项目号 CLEAR: l_flag. IF ( l_god_item1-bwart = '101' OR l_god_item1-bwart = '261' ) AND ( l_god_item1-aufnr IS INITIAL AND l_god_item1-bstnr IS INITIAL ). row_date1-messageid_send = l_header1-message_id. row_date1-type = 'E'. row_date1-message = '订单号空,请确认数据'. row_date1-bill_of_lading = l_god1-bill_of_lading. row_date1-ref_doc_no = l_goodsmvt_header_wa1-ref_doc_no. APPEND row_date1 TO out_para1-mt_upinfo_retun_download-upinfo_return. REFRESH l_goodsmvt_item1. EXIT. ELSEIF ( l_god_item1-bwart = '311' ) AND ( l_god_item1-werks <> l_god_item1-umwrk ). row_date1-messageid_send = l_header1-message_id. row_date1-type = 'E'. row_date1-message = '311移动类型,发货工厂和收货工厂必须相同'. APPEND row_date1 TO out_para1-mt_upinfo_retun_download-upinfo_return. REFRESH l_goodsmvt_item1. EXIT. ENDIF. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_god_item1-matnr IMPORTING output = l_matnr. CLEAR: l_god_item1-matnr. l_god_item1-matnr = l_matnr. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_god_item1-aufnr IMPORTING output = l_aufnr. CLEAR: l_god_item1-aufnr. l_god_item1-aufnr = l_aufnr. "20230109新增 IF l_header1-interface_name = 'POPI11'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_god_item1-bstnr IMPORTING output = l_ebeln. SELECT SINGLE werks INTO l_werks FROM ekpo WHERE ebeln = l_ebeln AND ebelp = l_god_item1-ebelp. IF l_werks = '2061' AND l_god_item1-bwart = '105'. l_flag = 'X'. ENDIF. CLEAR l_werks. ENDIF. l_goodsmvt_item_wa1-move_type = l_god_item1-bwart. l_goodsmvt_item_wa1-material = l_god_item1-matnr. IF l_flag = 'X'. l_goodsmvt_item_wa1-plant = '2061'. l_goodsmvt_item_wa1-stge_loc = '2699'. ELSE. l_goodsmvt_item_wa1-plant = l_god_item1-werks. l_goodsmvt_item_wa1-stge_loc = l_god_item1-lgort. ENDIF.
-
l_goodsmvt_item_wa1-plant = l_god_item1-werks.
-
l_goodsmvt_item_wa1-stge_loc = l_god_item1-lgort. l_goodsmvt_item_wa1-batch = l_god_item1-charg. l_goodsmvt_item_wa1-spec_stock = l_god_item1-sobkz. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_god_item1-elifn IMPORTING output = l_elifn. CLEAR: l_god_item1-elifn. l_god_item1-elifn = l_elifn. IF l_god_item1-bwart = '251' OR l_god_item1-bwart = 'Z51'. l_goodsmvt_item_wa1-customer = l_god_item1-elifn. ELSE. l_goodsmvt_item_wa1-vendor = l_god_item1-elifn. ENDIF.
*{ INSERT APEK901357 1
*} INSERT
IF l_god_item1-bwart = ‘411’.
*{ INSERT APEK901357 2
IF l_god_item1-sobkz = ‘Q’.
DATA: wbs_c(24) TYPE c.
CALL FUNCTION ‘CONVERSION_EXIT_ABPSP_INPUT’
EXPORTING
input = l_god_item1-standby_2
IMPORTING
output = wbs_c.
CLEAR:l_god_item1-standby_2.
CALL FUNCTION ‘CONVERSION_EXIT_ABPSP_OUTPUT’
EXPORTING
input = wbs_c
IMPORTING
output = l_god_item1-standby_2.
l_goodsmvt_item_wa1-val_wbs_elem = l_god_item1-standby_2.
ENDIF.
*} INSERT
l_goodsmvt_item_wa1-wbs_elem = l_god_item1-standby_2.
ENDIF.
IF l_god_item1-bwart = ‘415’.
l_goodsmvt_item_wa1-val_wbs_elem = l_god_item1-standby_2.
ENDIF.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = l_god_item1-kdauf
IMPORTING
output = l_kdauf.
CLEAR: l_god_item1-kdauf.
l_god_item1-kdauf = l_kdauf.
l_goodsmvt_item_wa1-sales_ord = l_god_item1-kdauf. "目标订单##
l_goodsmvt_item_wa1-s_ord_item = l_god_item1-kdpos. "目标订单项目
l_goodsmvt_item_wa1-entry_qnt = l_god_item1-menge.
l_goodsmvt_item_wa1-entry_uom = l_god_item1-meins.
l_goodsmvt_item_wa1-po_pr_qnt = l_god_item1-bpmng. "采购订单结算数量
l_goodsmvt_item_wa1-orderpr_un = l_god_item1-bbprm."采购订单单位
l_goodsmvt_item_wa1-orderid = l_god_item1-aufnr.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = l_god_item1-kostl
IMPORTING
output = l_kostl.
CLEAR: l_god_item1-kostl.
l_god_item1-kostl = l_kostl.
l_goodsmvt_item_wa1-costcenter = l_god_item1-kostl.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = l_god_item1-bstnr
IMPORTING
output = l_ebeln.
CLEAR: l_god_item1-bstnr.
l_god_item1-bstnr = l_ebeln.
l_goodsmvt_item_wa1-po_number = l_god_item1-bstnr." 采购订单
l_goodsmvt_item_wa1-po_item = l_god_item1-ebelp.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = l_god_item1-ummat
IMPORTING
output = l_ummat.
CLEAR: l_god_item1-ummat.
l_god_item1-ummat = l_ummat.
l_goodsmvt_item_wa1-move_mat = l_god_item1-ummat.
l_goodsmvt_item_wa1-move_plant = l_god_item1-umwrk.
l_goodsmvt_item_wa1-move_stloc = l_god_item1-umlgo.
l_goodsmvt_item_wa1-move_batch = l_god_item1-umcha.
l_goodsmvt_item_wa1-move_stloc = l_god_item1-umlgo.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = l_god_item1-val_sales_ord
IMPORTING
output = l_mat_kdauf.
CLEAR: l_god_item1-val_sales_ord.
l_god_item1-val_sales_ord = l_mat_kdauf.
l_goodsmvt_item_wa1-val_sales_ord = l_god_item1-val_sales_ord. "源订单号
l_goodsmvt_item_wa1-val_s_ord_item = l_god_item1-val_s_ord_item. "源订单项##
l_goodsmvt_item_wa1-move_reas = l_god_item1-grund.
l_goodsmvt_item_wa1-gr_rcpt = l_god_item1-gr_rcpt.
l_goodsmvt_item_wa1-unload_pt = l_god_item1-unload_pt.
l_goodsmvt_item_wa1-move_reas = l_god_item1-grund.
l_goodsmvt_item_wa1-item_text = l_god_item1-item_text.
l_goodsmvt_item_wa1-mvt_ind = l_god_item1-mvt_ind.
l_goodsmvt_item_wa1-asset_no = l_god_item1-asset_no.
l_goodsmvt_item_wa1-sub_number = l_god_item1-sub_number.
l_goodsmvt_item_wa1-reserv_no = l_god_item1-reserv_no.
l_goodsmvt_item_wa1-res_item = l_god_item1-res_item.
l_goodsmvt_item_wa1-network = l_god_item1-network.
IF l_header1-receiver = 'EQ'.
ztex = l_god_item1-ztext.
l_goodsmvt_item_wa1-ref_doc_yr = ztex+0(4).
l_goodsmvt_item_wa1-ref_doc = ztex+5(10).
l_goodsmvt_item_wa1-ref_doc_it = ztex+16(2).
ENDIF.
APPEND l_goodsmvt_item_wa1 TO l_goodsmvt_item1.
CLEAR:ztex.
CLEAR: l_matnr, l_aufnr,l_elifn, l_kdauf, l_kostl,l_ebeln,l_ummat,l_mat_kdauf.
ENDLOOP.
ENDLOOP.
-
exception declaration
DATA: l_cx_root TYPE REF TO cx_root.DATA: l_error_text TYPE string.
DATA: lmun TYPE TABLE OF bapi2017_gm_serialnumber,
lw_mun TYPE bapi2017_gm_serialnumber.lw_mun-matdoc_itm = 5.
IF l_goodsmvt_item1[] IS NOT INITIAL.
TRY.
CALL FUNCTION ‘BAPI_GOODSMVT_CREATE’
EXPORTING
goodsmvt_header = l_goodsmvt_header_wa1
goodsmvt_code = l_goodsmvt_code_wa1
IMPORTING
goodsmvt_headret = l_goodsmvt_headret_wa1
TABLES
goodsmvt_item = l_goodsmvt_item1
goodsmvt_serialnumber = lmun
return = l_return1.CATCH cx_ai_system_fault INTO l_cx_root. l_error_text = l_cx_root->get_text( ). ENDTRY. LOOP AT l_return1 INTO l_return_wa1 WHERE type = 'A' OR type = 'E'. EXIT. ENDLOOP. IF sy-subrc = 0. row_date1-messageid_send = l_header1-message_id. row_date1-header_txt = l_god_item1-bwart."20220909设备要求新增 row_date1-type = 'E'. row_date1-message = l_return_wa1-message. row_date1-bill_of_lading = l_god1-bill_of_lading.. row_date1-ref_doc_no = l_goodsmvt_header_wa1-ref_doc_no. APPEND row_date1 TO out_para1-mt_upinfo_retun_download-upinfo_return. ELSE. COMMIT WORK. row_date1-messageid_send = l_header1-message_id. row_date1-header_txt = l_god_item1-bwart. row_date1-type = 'S'. row_date1-mat_doc = l_goodsmvt_headret_wa1-mat_doc. row_date1-mjahr = l_goodsmvt_headret_wa1-doc_year. row_date1-bill_of_lading = l_god1-bill_of_lading. row_date1-ref_doc_no = l_goodsmvt_header_wa1-ref_doc_no. l2_mblnr = l_goodsmvt_headret_wa1-mat_doc. l2_mjahr = l_goodsmvt_headret_wa1-doc_year.
"20221215新增反馈301逻辑********************
CLEAR: l_return1,l_god1 ,l_goodsmvt_item1,l_goodsmvt_header_wa1,l_goodsmvt_code_wa1,l_goodsmvt_headret_wa1,l_goodsmvt_item_wa1,l_ebeln.
LOOP AT input-mt_sbcc_mat_movement-material_movement_header INTO l_god1.
l_goodsmvt_code_wa1-gm_code = '04'.
l_goodsmvt_header_wa1-pstng_date = l_god1-pstng_date.
l_goodsmvt_header_wa1-doc_date = l_god1-doc_date.
l_goodsmvt_header_wa1-header_txt = l_god1-header_txt.
-
l_goodsmvt_header_wa1-bill_of_lading = l_god1-bill_of_lading. l_goodsmvt_header_wa1-gr_gi_slip_no = l_god1-gr_gi_slip_no. l_goodsmvt_header_wa1-ref_doc_no = l_god1-ref_doc_no. CLEAR:l_god_item1. LOOP AT l_god1-material_movement_items INTO l_god_item1. CLEAR: l_flag. "20230109新增 IF l_header1-interface_name = 'POPI11'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_god_item1-bstnr IMPORTING output = l_ebeln. SELECT SINGLE werks INTO l_werks FROM ekpo WHERE ebeln = l_ebeln AND ebelp = l_god_item1-ebelp. IF l_werks = '2061'. l_flag = 'X'. ENDIF. CLEAR l_werks. ENDIF. IF ( l_god_item1-werks = '2061' AND l_god_item1-bwart = '105' ) OR l_flag = 'X'. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_god_item1-matnr IMPORTING output = l_matnr. l_goodsmvt_item_wa1-move_type = '301'. l_goodsmvt_item_wa1-material = l_matnr. IF l_flag = 'X'. l_goodsmvt_item_wa1-plant = '2061'. l_goodsmvt_item_wa1-stge_loc = '2699'. ELSE. l_goodsmvt_item_wa1-plant = l_god_item1-werks. l_goodsmvt_item_wa1-stge_loc = l_god_item1-lgort. ENDIF.
-
l_goodsmvt_item_wa1-plant = l_god_item1-werks.
-
l_goodsmvt_item_wa1-stge_loc = l_god_item1-lgort. l_goodsmvt_item_wa1-batch = l_god_item1-charg. l_goodsmvt_item_wa1-spec_stock = l_god_item1-sobkz. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_god_item1-elifn IMPORTING output = l_elifn. l_goodsmvt_item_wa1-vendor = l_elifn. l_goodsmvt_item_wa1-entry_qnt = l_god_item1-menge. l_goodsmvt_item_wa1-entry_uom = l_god_item1-meins. CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_god_item1-bstnr IMPORTING output = l_ebeln. l_goodsmvt_item_wa1-po_number = l_ebeln." 采购订单 l_goodsmvt_item_wa1-po_item = l_god_item1-ebelp.
-
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
-
EXPORTING
-
input = l_god_item1-ummat
-
IMPORTING
-
output = l_ummat. l_goodsmvt_item_wa1-move_mat = l_matnr. IF l_flag = 'X'. l_goodsmvt_item_wa1-move_plant = l_god_item1-werks. l_goodsmvt_item_wa1-move_stloc = l_god_item1-lgort. ELSE. l_goodsmvt_item_wa1-move_plant = l_god_item1-standby_1. l_goodsmvt_item_wa1-move_stloc = l_god_item1-standby_2. ENDIF.
-
l_goodsmvt_item_wa1-move_plant = l_god_item1-standby_1.
-
l_goodsmvt_item_wa1-move_stloc = l_god_item1-standby_2. l_goodsmvt_item_wa1-move_batch = l_god_item1-charg.
-
IF l_header1-receiver = 'EQ'.
-
ztex = l_god_item1-ztext.
-
l_goodsmvt_item_wa1-ref_doc_yr = ztex+0(4).
-
l_goodsmvt_item_wa1-ref_doc = ztex+5(10).
-
l_goodsmvt_item_wa1-ref_doc_it = ztex+16(2).
-
ENDIF. APPEND l_goodsmvt_item_wa1 TO l_goodsmvt_item1. CLEAR:ztex. CLEAR: l_goodsmvt_item_wa1, l_matnr, l_aufnr,l_elifn, l_kdauf, l_kostl,l_ebeln,l_ummat,l_mat_kdauf. ENDIF. ENDLOOP. ENDLOOP. IF l_goodsmvt_item1[] IS NOT INITIAL. TRY. CALL FUNCTION 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = l_goodsmvt_header_wa1 goodsmvt_code = l_goodsmvt_code_wa1 IMPORTING goodsmvt_headret = l_goodsmvt_headret_wa1 TABLES goodsmvt_item = l_goodsmvt_item1 return = l_return1. CATCH cx_ai_system_fault INTO l_cx_root. l_error_text = l_cx_root->get_text( ). ENDTRY. LOOP AT l_return1 INTO l_return_wa1 WHERE type = 'A' OR type = 'E'. EXIT. ENDLOOP. IF sy-subrc = 0. "“冲销105 CALL FUNCTION 'BAPI_GOODSMVT_CANCEL' EXPORTING materialdocument = l2_mblnr "物料凭证 matdocumentyear = l2_mjahr "年 goodsmvt_pstng_date = sy-datum
-
goodsmvt_pr_uname = sy-uname IMPORTING goodsmvt_headret = li_goodsmvt_headret TABLES return = i_return goodsmvt_matdocitem = li_goodsmvt_matdocitem. READ TABLE i_return INTO DATA(ls_ret) WITH KEY type = 'E'. IF sy-subrc <> 0. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ELSE. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. ENDIF. row_date1-messageid_send = l_header1-message_id. row_date1-header_txt = l_god_item1-bwart."20220909设备要求新增 row_date1-type = 'E'. row_date1-message = l_return_wa1-message. row_date1-bill_of_lading = l_god1-bill_of_lading.. row_date1-ref_doc_no = l_goodsmvt_header_wa1-ref_doc_no. APPEND row_date1 TO out_para1-mt_upinfo_retun_download-upinfo_return. ELSE. COMMIT WORK.
-
row_date1-messageid_send = l_header1-message_id.
-
row_date1-header_txt = l_god_item1-bwart.
-
row_date1-type = 'S'.
-
row_date1-mat_doc = l_goodsmvt_headret_wa1-mat_doc.
-
row_date1-mjahr = l_goodsmvt_headret_wa1-doc_year.
-
row_date1-bill_of_lading = l_god1-bill_of_lading. row_date1-agd1 = l_goodsmvt_headret_wa1-mat_doc. row_date1-agd2 = '301'. APPEND row_date1 TO out_para1-mt_upinfo_retun_download-upinfo_return. ENDIF. ELSE. APPEND row_date1 TO out_para1-mt_upinfo_retun_download-upinfo_return. ENDIF. ENDIF.
ENDIF.
CHECK out_para1-mt_upinfo_retun_download-upinfo_return[] IS NOT INITIAL.
TRY.
CALL METHOD zpo_upinfo_return=>download
EXPORTING
tec_header = l_header1
upinfo_return = out_para1-mt_upinfo_retun_download-upinfo_return.
ENDTRY.ENDMETHOD.