&---------------------------------------------------------------------
*& Report YTEST05
&---------------------------------------------------------------------
*&
&---------------------------------------------------------------------
REPORT ytest05.
METHOD zeq_ii_si_materialdoc_reverse~si_materialdoc_reverse.
*** **** INSERT IMPLEMENTATION HERE **** ***
DATA: table1 TYPE STANDARD TABLE OF zeq_dt_materialdoc_reverse_upl,
table1_wa TYPE zeq_dt_materialdoc_reverse_upl,
l_header TYPE zeq_dt_tec_header.
-
定义bapi变量
DATA: t_item TYPE TABLE OF bapi2017_gm_item_04,
l_pstngdate TYPE d,
l_materialdocument TYPE bapi2017_gm_head_02-mat_doc,
l_matdocumentyear TYPE bapi2017_gm_head_02-doc_year,
l_goodsmvt_headret TYPE bapi2017_gm_head_ret,
table_return TYPE STANDARD TABLE OF bapiret2,
table_return_wa TYPE bapiret2.
** 定义下传的类.
DATA: obj1 TYPE REF TO zeq_co_si_upinfo_retun_downloa,
row_date TYPE zeq_dt_upinfo_retun_download_u,
out_para TYPE zeq_mt_upinfo_retun_download,
row_date_header TYPE zeq_dt_tec_header.
DATA:
ls_locked TYPE zzmt_materialdoc_reverse,
l_id TYPE indx_srtfd.DATA: l_doc106 TYPE bapi2017_gm_head_02-mat_doc,
l_doc302 TYPE bapi2017_gm_head_02-mat_doc.CLEAR table1_wa.
CLEAR l_header.
l_header-receiver = input-mt_materialdoc_reverse-dt_tec_header-sender.
l_header-message_id = input-mt_materialdoc_reverse-dt_tec_header-message_id.
l_header-interface_name = input-mt_materialdoc_reverse-dt_tec_header-interface_name.
l_header-plant = input-mt_materialdoc_reverse-dt_tec_header-plant.
l_header-refeid = input-mt_materialdoc_reverse-dt_tec_header-refeid.
20100401 增加锁定处理 by maguoyu******
-
modify by yuxl 2008/11/04*
LOOP AT input-mt_materialdoc_reverse-materialdoc_reverse INTO table1_wa.
SEARCH table1_wa-mat_doc FOR ‘,’.
IF sy-subrc <> 0.
l_materialdocument = table1_wa-mat_doc.
l_matdocumentyear = table1_wa-doc_year.
2014/04/02 ma*****************************
IF table1_wa-doc_year IS INITIAL.
row_date-messageid_send = l_header-message_id.
row_date-bill_of_lading = table1_wa-standby_1.
row_date-header_txt = l_header-plant.row_date-ref_doc_no = l_header-refeid. row_date-type = 'E'. row_date-message = '凭证年度不能为空!'. APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return. CLEAR table1_wa. CONTINUE. ENDIF.
2014/04/02 ma*****************************
20120906 by magy
IF table1_wa-standby_1 IS NOT INITIAL.
l_pstngdate = table1_wa-standby_1.
ELSE.
SELECT SINGLE budat FROM mkpf INTO l_pstngdate WHERE mblnr = l_materialdocument AND mjahr = l_matdocumentyear.
ENDIF.
*反冲指定凭证的行项目 20190515
IF table1_wa-standby_2 IS NOT INITIAL.
SPLIT table1_wa-standby_2 AT ‘+’ INTO TABLE t_item.
ENDIF.
*反冲指定凭证的行项目 20190515
2013/05/30 供应处已结算的物料凭证禁止反冲
TRY.
CALL FUNCTION ‘BAPI_GOODSMVT_CANCEL’
EXPORTING
materialdocument = l_materialdocument
matdocumentyear = l_matdocumentyear
goodsmvt_pstng_date = l_pstngdate
-
GOODSMVT_PR_UNAME = IMPORTING goodsmvt_headret = l_goodsmvt_headret TABLES goodsmvt_matdocitem = t_item return = table_return.
-
GOODSMVT_MATDOCITEM = ENDTRY.
** *** * 数据上传信息反馈
LOOP AT table_return INTO table_return_wa.
ENDLOOP.
IF table_return_wa-message <> '' .
row_date-messageid_send = l_header-message_id.
row_date-bill_of_lading = table1_wa-standby_1.
row_date-header_txt = l_header-plant.
row_date-ref_doc_no = l_header-refeid.
row_date-type = 'E'.
row_date-message = table_return_wa-message.
APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return.
-
ENDIF. ELSEIF l_goodsmvt_headret <> ''. row_date-messageid_send = l_header-message_id. row_date-bill_of_lading = table1_wa-standby_1. row_date-header_txt = l_header-plant. row_date-ref_doc_no = l_header-refeid. row_date-type = 'S'. row_date-mat_doc = l_goodsmvt_headret-mat_doc. row_date-mjahr = l_goodsmvt_headret-doc_year. APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return. COMMIT WORK. ENDIF. CLEAR table1_wa. "20120912 增加 REFRESH t_item. ELSE. "20230105--先302,再106 SPLIT table1_wa-mat_doc AT ',' INTO l_doc302 l_doc106. l_materialdocument = l_doc106. l_matdocumentyear = table1_wa-doc_year. IF table1_wa-doc_year IS INITIAL. row_date-messageid_send = l_header-message_id. row_date-bill_of_lading = table1_wa-standby_1. row_date-header_txt = l_header-plant. row_date-ref_doc_no = l_header-refeid. row_date-type = 'E'. row_date-message = '凭证年度不能为空!'. APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return. CLEAR table1_wa. CONTINUE. ENDIF.
2014/04/02 ma*****************************
IF table1_wa-standby_1 IS NOT INITIAL.
l_pstngdate = table1_wa-standby_1.
ELSE.
SELECT SINGLE budat FROM mkpf INTO l_pstngdate WHERE mblnr = l_materialdocument AND mjahr = l_matdocumentyear.
ENDIF.
*反冲指定凭证的行项目 20190515
IF table1_wa-standby_2 IS NOT INITIAL.
SPLIT table1_wa-standby_2 AT ‘+’ INTO TABLE t_item.
ENDIF.
TRY.
CALL FUNCTION 'BAPI_GOODSMVT_CANCEL'
EXPORTING
materialdocument = l_materialdocument
matdocumentyear = l_matdocumentyear
goodsmvt_pstng_date = l_pstngdate
-
GOODSMVT_PR_UNAME = IMPORTING goodsmvt_headret = l_goodsmvt_headret TABLES goodsmvt_matdocitem = t_item return = table_return.
-
GOODSMVT_MATDOCITEM = ENDTRY.
** *** * 数据上传信息反馈
LOOP AT table_return INTO table_return_wa.
ENDLOOP.
IF table_return_wa-message <> ‘’ AND table_return_wa-message NS ‘短缺未限制使用的SL’.
row_date-messageid_send = l_header-message_id.
row_date-bill_of_lading = table1_wa-standby_1.
row_date-header_txt = l_header-plant.
row_date-ref_doc_no = l_header-refeid.
row_date-type = ‘E’.
row_date-message = table_return_wa-message.
APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return.
CALL FUNCTION ‘BAPI_TRANSACTION_ROLLBACK’.
-
ENDIF. ELSEIF l_goodsmvt_headret <> ''.
-
row_date-messageid_send = l_header-message_id.
-
row_date-bill_of_lading = table1_wa-standby_1.
-
row_date-header_txt = l_header-plant.
-
row_date-ref_doc_no = l_header-refeid.
-
row_date-type = 'S'.
-
row_date-mat_doc = l_goodsmvt_headret-mat_doc.
-
row_date-mjahr = l_goodsmvt_headret-doc_year.
-
APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. """302 CLEAR:l_materialdocument,table_return,table_return_wa,l_goodsmvt_headret. l_materialdocument = l_doc302. TRY. CALL FUNCTION 'BAPI_GOODSMVT_CANCEL' EXPORTING materialdocument = l_materialdocument matdocumentyear = l_matdocumentyear goodsmvt_pstng_date = l_pstngdate
-
GOODSMVT_PR_UNAME = IMPORTING goodsmvt_headret = l_goodsmvt_headret TABLES goodsmvt_matdocitem = t_item return = table_return.
-
GOODSMVT_MATDOCITEM = ENDTRY. LOOP AT table_return INTO table_return_wa. ENDLOOP. IF table_return_wa-message <> '' . row_date-messageid_send = l_header-message_id. row_date-bill_of_lading = table1_wa-standby_1. row_date-header_txt = l_header-plant. row_date-ref_doc_no = l_header-refeid. row_date-type = 'E'. row_date-message = table_return_wa-message. APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
-
ENDIF. ELSEIF l_goodsmvt_headret <> ''. row_date-messageid_send = l_header-message_id. row_date-bill_of_lading = table1_wa-standby_1. row_date-header_txt = l_header-plant. row_date-ref_doc_no = l_header-refeid. row_date-type = 'S'. row_date-mat_doc = l_goodsmvt_headret-mat_doc. row_date-mjahr = l_goodsmvt_headret-doc_year.
-
APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. WAIT UP TO 1 SECONDS. """106 CLEAR:l_materialdocument,table_return,table_return_wa,l_goodsmvt_headret. l_materialdocument = l_doc106. TRY. CALL FUNCTION 'BAPI_GOODSMVT_CANCEL' EXPORTING materialdocument = l_materialdocument matdocumentyear = l_matdocumentyear goodsmvt_pstng_date = l_pstngdate
-
GOODSMVT_PR_UNAME = IMPORTING goodsmvt_headret = l_goodsmvt_headret TABLES goodsmvt_matdocitem = t_item return = table_return.
-
GOODSMVT_MATDOCITEM = ENDTRY. LOOP AT table_return INTO table_return_wa. ENDLOOP. IF table_return_wa-message <> '' . row_date-messageid_send = l_header-message_id. row_date-bill_of_lading = table1_wa-standby_1. row_date-header_txt = l_header-plant. row_date-ref_doc_no = l_header-refeid. row_date-type = 'E'. row_date-message = table_return_wa-message. APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return. CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
-
ENDIF. ELSEIF l_goodsmvt_headret <> ''.
-
row_date-messageid_send = l_header-message_id.
-
row_date-bill_of_lading = table1_wa-standby_1.
-
row_date-header_txt = l_header-plant.
-
row_date-ref_doc_no = l_header-refeid.
-
row_date-type = 'S'. row_date-mat_doc = row_date-mat_doc && ',' && l_goodsmvt_headret-mat_doc.
-
row_date-mjahr = l_goodsmvt_headret-doc_year. APPEND row_date TO out_para-mt_upinfo_retun_download-upinfo_return. CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. ENDIF. ENDIF. ENDIF. CLEAR table1_wa. "20120912 增加 REFRESH t_item. ENDIF.
ENDLOOP.
ENDMETHOD.