SAP货物移动BAPI BAPI_GOODSMVT_CREATE(WMS TO SAP)
来源:互联网 发布:淘宝加盟可靠吗 编辑:程序博客网 时间:2024/06/05 18:53
移动代码
01 -- MB01
02 -- MB31
03 -- MB1A
04 -- MB1B
05 -- MB1C
06 -- MB11
07 -- MB04
一、收货(101)
说明:采购订单、生产订单收货
form recvfromord tables pt_tran structure zwttran. "移库定义 data: goodsmvt_header type bapi2017_gm_head_01, goodsmvt_code type bapi2017_gm_code, goodsmvt_headret type bapi2017_gm_head_ret, materialdocument type bapi2017_gm_head_ret-mat_doc, matdocumentyear type bapi2017_gm_head_ret-doc_year, goodsmvt_item type standard table of /afs/bapi2017_gm_item_create, return type standard table of bapiret2, w_creturn type bapiret2, w_goodsmvt_item type /afs/bapi2017_gm_item_create, w_return type bapiret2. data:lt_retmsg like table of bapiret2 with header line, lt_return like table of bapiret2 with header line. data:l_tran_nbr like zwttran-tran_nbr, l_tranpo like zwttran-tranpo, l_matdoc like zwttran-matdoc, l_flag like zwttran-flag, l_line_id type i. data:l_asn_nbr type ze_ref_field, "asn号 l_po type ze_ref_field,"po号 l_po_line(5) type n,"po行号 l_matnr type matnr."货号 data:l_type type char1,"类型 l_afpo type afpo,"生产订单 l_j_3abssi type j_3abssi,"生产订单计划行 l_eket type eket,"采购订单计划行 l_ekpo type ekpo."采购订单行项目 data:lt_bom like table of zwmbom with header line. refresh:t_tran_nbr. loop at pt_tran. clear :t_tran_nbr. t_tran_nbr-tran_nbr = pt_tran-tran_nbr. if pt_tran-tran_type = '603' and pt_tran-tran_code = '02' and pt_tran-proc_stat_code = '10' and pt_tran-ref_field_6 = 'P'. t_tran_nbr-po = pt_tran-ref_field_3. endif. append t_tran_nbr. endloop. sort t_tran_nbr by tran_nbr po. delete adjacent duplicates from t_tran_nbr. loop at t_tran_nbr. clear:l_tran_nbr,l_matdoc,l_matnr,l_asn_nbr,l_po,l_matnr,l_type,l_afpo,l_j_3abssi,l_eket,l_ekpo,l_tranpo,lt_retmsg,lt_return,pt_tran. refresh:lt_return. clear:goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return. refresh:goodsmvt_item ,return. "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '603' and tran_code = '02' and proc_stat_code = '10' and units_rcvd > 0 and tran_nbr = t_tran_nbr-tran_nbr and ref_field_3 = t_tran_nbr-po. if pt_tran-ref_field_6 = 'P'. l_tran_nbr = pt_tran-tran_nbr. "获取asn号 l_asn_nbr = pt_tran-ref_field_1. l_po = pt_tran-ref_field_3. concatenate l_tran_nbr l_po into l_tranpo. if pt_tran-ref_field_4 is not initial. l_po_line = pt_tran-ref_field_4. else. clear l_po_line. endif. l_matnr = pt_tran-matnr. clear:lt_retmsg. refresh:lt_retmsg. call function 'ZLC_GET_PREMOVE101' EXPORTING p_matnr = l_matnr p_po = l_po p_po_line = l_po_line IMPORTING p_type = l_type p_afpo = l_afpo p_j_3abssi = l_j_3abssi p_ekpo = l_ekpo p_eket = l_eket TABLES pt_retmsg = lt_retmsg. read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. case l_type. when 'E'. "事务代码 goodsmvt_code-gm_code = '02'. "mb31 "明细 w_goodsmvt_item-line_id = w_goodsmvt_item-line_id + 1. w_goodsmvt_item-move_type = '101'."移动类型 w_goodsmvt_item-material = l_j_3abssi-matnr."大货号 w_goodsmvt_item-grid_value = l_j_3abssi-j_3asize."网格值 w_goodsmvt_item-plant = g_plant."工厂 w_goodsmvt_item-stge_loc = g_stge_loc."地点 w_goodsmvt_item-entry_qnt = pt_tran-units_rcvd."数量 w_goodsmvt_item-orderid = l_j_3abssi-j_3absnr."订单号 w_goodsmvt_item-order_itno = l_j_3abssi-j_3ahbsp."行项目 w_goodsmvt_item-sched_line_sku = l_j_3abssi-j_3aebsp."计划行项目 w_goodsmvt_item-mvt_ind = 'F'."生产订单 w_goodsmvt_item-stck_type = 'E'. w_goodsmvt_item-gr_rcpt = pt_tran-user_id. append w_goodsmvt_item to goodsmvt_item. when 'F'. "事务代码 goodsmvt_code-gm_code = '01'. "mb01 "明细 w_goodsmvt_item-line_id = w_goodsmvt_item-line_id + 1. l_line_id = w_goodsmvt_item-line_id. w_goodsmvt_item-move_type = '101'."移动类型 w_goodsmvt_item-material = l_ekpo-matnr."大货号 w_goodsmvt_item-grid_value = l_eket-j_3asize."网格值 w_goodsmvt_item-plant = g_plant."工厂 w_goodsmvt_item-stge_loc = g_stge_loc."地点 clear w_goodsmvt_item-vendor. w_goodsmvt_item-entry_qnt = pt_tran-units_rcvd."数量 clear w_goodsmvt_item-batch. w_goodsmvt_item-po_number = l_eket-ebeln."采购订单 w_goodsmvt_item-po_item = l_eket-ebelp."采购订单行号 w_goodsmvt_item-sched_line_sku = l_eket-etenr."计划行 clear:w_goodsmvt_item-parent_id,w_goodsmvt_item-line_depth. w_goodsmvt_item-mvt_ind = 'B'."采购订单 w_goodsmvt_item-stck_type = 'E'."库存类型 w_goodsmvt_item-gr_rcpt = pt_tran-user_id. append w_goodsmvt_item to goodsmvt_item. refresh:lt_bom. call function 'ZLC_GET_BOM' EXPORTING p_ebeln = l_eket-ebeln p_ebelp = l_eket-ebelp p_etenr = l_eket-etenr TABLES pt_bom = lt_bom. if lines( lt_bom ) > 0. loop at lt_bom. w_goodsmvt_item-line_id = w_goodsmvt_item-line_id + 1. w_goodsmvt_item-move_type = '543'."移动类型 w_goodsmvt_item-material = lt_bom-matnr."货号 if lt_bom-grdv is not initial. w_goodsmvt_item-grid_value = lt_bom-grdv. else. clear w_goodsmvt_item-grid_value. endif. w_goodsmvt_item-plant = '1000'."工厂 clear w_goodsmvt_item-stge_loc. w_goodsmvt_item-vendor = lt_bom-vendor."供应商 w_goodsmvt_item-entry_qnt = lt_bom-entry_qnt * pt_tran-units_rcvd."数量 if lt_bom-charg is not initial. w_goodsmvt_item-batch = lt_bom-charg. else. clear w_goodsmvt_item-batch. endif. w_goodsmvt_item-parent_id = l_line_id. w_goodsmvt_item-line_depth = 1. w_goodsmvt_item-mvt_ind = 'B'."采购订单 w_goodsmvt_item-stck_type = 'E'."库存类型 w_goodsmvt_item-gr_rcpt = pt_tran-user_id. append w_goodsmvt_item to goodsmvt_item. endloop. endif. endcase. else. append lines of lt_retmsg to lt_return. endif. endif. endloop. read table lt_return with key type = 'E'. if sy-subrc <> 0. if goodsmvt_item[] is not initial. "删除日志 perform deletepixtranlog using l_tranpo. "执行操作 call function '/AFS/BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES afs_goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. "提交 call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. l_flag = 'S'. l_matdoc = materialdocument. else. call function 'BAPI_TRANSACTION_ROLLBACK'. l_flag = 'F'. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tranpo = l_tranpo. if l_flag = 'F'. perform writepixtranlog tables return using l_tranpo. endif. endif. else. update zwttran set flag = 'F' where tranpo = l_tranpo. perform writepixtranlog tables lt_return using l_tranpo. endif. endloop.endform. "recvfromord
二、移库、冻结、解冻、内部领用、盘点、报废、转包、门店退货等
form dopixtran tables pt_tran structure zwttran. data: l_tran_nbr like zwttran-tran_nbr, l_matdoc like zwttran-matdoc, l_flag like zwttran-flag, l_mara like mara, lt_mard like table of mard with header line. data:goodsmvt_header type bapi2017_gm_head_01, goodsmvt_code type bapi2017_gm_code, goodsmvt_headret type bapi2017_gm_head_ret, materialdocument type bapi2017_gm_head_ret-mat_doc, matdocumentyear type bapi2017_gm_head_ret-doc_year, goodsmvt_item type standard table of bapi2017_gm_item_create, return type standard table of bapiret2, w_goodsmvt_item type bapi2017_gm_item_create, w_return type bapiret2. data:lt_retmsg like table of bapiret2 with header line. refresh:t_tran_nbr. loop at pt_tran. clear:t_tran_nbr. t_tran_nbr-tran_nbr = pt_tran-tran_nbr. collect t_tran_nbr. endloop. sort t_tran_nbr by tran_nbr. loop at t_tran_nbr. "&--------------------------------------------------------------------------------------------------------------& "& BEGIN 从3,4仓移库到物流中心仓库 "&--------------------------------------------------------------------------------------------------------------& clear:l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return. refresh:goodsmvt_item ,return. "事物码 goodsmvt_code-gm_code = '04'. "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '603' and tran_code = '02' and proc_stat_code = '10' and units_rcvd > 0 and tran_nbr = t_tran_nbr-tran_nbr. if pt_tran-ref_field_6 = 'Y'. l_tran_nbr = pt_tran-tran_nbr. w_goodsmvt_item-move_type = '311'."移库 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = pt_tran-ref_field_7. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-units_rcvd. w_goodsmvt_item-move_plant = g_plant. w_goodsmvt_item-move_stloc = g_stge_loc. append w_goodsmvt_item to goodsmvt_item. endif. endloop. "执行操作 if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 移入 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& BEGIN 从物流中心仓库移至3,4仓 "&--------------------------------------------------------------------------------------------------------------& clear:l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return. refresh:goodsmvt_item ,return. "事物码 goodsmvt_code-gm_code = '04'. "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '300' and tran_code = '01' and actn_code = '07'and invn_adjmt_qty > 0 and tran_nbr = t_tran_nbr-tran_nbr. if pt_tran-rsn_code = 'YC'. l_tran_nbr = pt_tran-tran_nbr. w_goodsmvt_item-move_type = '311'."移库 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = g_stge_loc. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-invn_adjmt_qty. w_goodsmvt_item-move_plant = g_plant. w_goodsmvt_item-move_stloc = pt_tran-ref_field_5. append w_goodsmvt_item to goodsmvt_item. endif. endloop. "执行操作 if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 移出 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& begin 冻结库存 "&--------------------------------------------------------------------------------------------------------------& clear:l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return. refresh:goodsmvt_item ,return. "事物码 goodsmvt_code-gm_code = '04'. "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '300' and tran_code = '01' and actn_code = '05' and invn_adjmt_qty > 0 and tran_nbr = t_tran_nbr-tran_nbr. l_tran_nbr = pt_tran-tran_nbr. w_goodsmvt_item-move_type = '344'."冻结库存 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = g_stge_loc. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-invn_adjmt_qty. append w_goodsmvt_item to goodsmvt_item. endloop. "执行操作 if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 冻结库存 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& begin 解冻库存 "&--------------------------------------------------------------------------------------------------------------& clear:l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return. refresh:goodsmvt_item ,return. "事物码 goodsmvt_code-gm_code = '04'. "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '606' and tran_code = '02' and actn_code = '06' and invn_adjmt_qty > 0 and tran_nbr = t_tran_nbr-tran_nbr. l_tran_nbr = pt_tran-tran_nbr. w_goodsmvt_item-move_type = '343'."解冻库存 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = g_stge_loc. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-invn_adjmt_qty. append w_goodsmvt_item to goodsmvt_item. endloop. "执行操作 if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 解冻库存 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& BEGIN 内部领用 "&--------------------------------------------------------------------------------------------------------------& data:l_kostl like csks-kostl,"成本中心 l_prctr like cepc-prctr,"利润中心 l_csks like csks,"成本中心结构 l_cepc like cepc."利润中心结构 data:lt_tpmsg like table of bapiret2 with header line. clear:l_kostl,l_prctr,l_csks,l_cepc. clear:l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return,lt_tpmsg,lt_retmsg. refresh:goodsmvt_item,return,lt_tpmsg,lt_retmsg. "事物码 goodsmvt_code-gm_code = '03'. "MB1A "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '300' and tran_code = '01' and actn_code = '07'and invn_adjmt_qty > 0 and tran_nbr = t_tran_nbr-tran_nbr. if pt_tran-rsn_code = 'NL'. clear:l_kostl,l_csks,lt_tpmsg. refresh:lt_tpmsg. l_tran_nbr = pt_tran-tran_nbr. l_kostl = pt_tran-ref_field_5. call function 'ZLC_GET_CSKS' EXPORTING P_KOKRS = '1000' P_KOSTL = l_kostl IMPORTING p_csks = l_csks TABLES pt_retmsg = lt_tpmsg. read table lt_tpmsg with key type = 'E'. if sy-subrc <> 0. w_goodsmvt_item-move_type = '201'."内部领用 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = g_stge_loc. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-invn_adjmt_qty. w_goodsmvt_item-costcenter = l_kostl."成本中心 w_goodsmvt_item-profit_ctr = l_csks-prctr."利润中心 append w_goodsmvt_item to goodsmvt_item. else. append lines of lt_tpmsg to lt_retmsg. endif. endif. endloop. "执行操作 read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. else. update zwttran set flag = 'F' where tran_nbr = l_tran_nbr. perform writepixtranlog tables lt_retmsg using l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 内部领用 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& BEGIN 内部领用退回 "&--------------------------------------------------------------------------------------------------------------& clear:l_kostl,l_prctr,l_csks,l_cepc. clear:l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return,lt_tpmsg,lt_retmsg. refresh:goodsmvt_item,return,lt_tpmsg,lt_retmsg. "事物码 goodsmvt_code-gm_code = '03'. "MB1A "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '603' and tran_code = '02' and proc_stat_code = '10' and units_rcvd > 0 and tran_nbr = t_tran_nbr-tran_nbr. if pt_tran-ref_field_6 = 'N'. clear:l_kostl,l_csks,lt_tpmsg. refresh:lt_tpmsg. l_tran_nbr = pt_tran-tran_nbr. l_kostl = pt_tran-ref_field_5. call function 'ZLC_GET_CSKS' EXPORTING P_KOKRS = '1000' P_KOSTL = l_kostl IMPORTING p_csks = l_csks TABLES pt_retmsg = lt_tpmsg. read table lt_tpmsg with key type = 'E'. if sy-subrc <> 0. w_goodsmvt_item-move_type = '202'."内部领用冲销 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = g_stge_loc. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-units_rcvd. w_goodsmvt_item-costcenter = l_kostl."成本中心 w_goodsmvt_item-profit_ctr = l_csks-prctr."利润中心 append w_goodsmvt_item to goodsmvt_item. else. append lines of lt_tpmsg to lt_retmsg. endif. endif. endloop. "执行操作 read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. else. update zwttran set flag = 'F' where tran_nbr = l_tran_nbr. perform writepixtranlog tables lt_retmsg using l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 内部领用退回 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& BEGIN 报废 "&--------------------------------------------------------------------------------------------------------------& clear:l_kostl,l_prctr,l_csks,l_cepc. clear:l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return,lt_tpmsg,lt_retmsg. refresh:goodsmvt_item,return,lt_tpmsg,lt_retmsg. "事物码 goodsmvt_code-gm_code = '03'. "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '300' and tran_code = '01' and actn_code = '07'and invn_adjmt_qty > 0 and tran_nbr = t_tran_nbr-tran_nbr. if pt_tran-rsn_code = 'BF'. clear:l_prctr,l_cepc. refresh:lt_tpmsg. l_tran_nbr = pt_tran-tran_nbr. l_prctr = pt_tran-ref_field_5. call function 'ZLC_GET_CEPC' EXPORTING p_kokrs = '1000' p_prctr = l_prctr IMPORTING p_cepc = l_cepc TABLES pt_retmsg = lt_tpmsg. read table lt_tpmsg with key type = 'E'. if sy-subrc <> 0. w_goodsmvt_item-move_type = '551'."报废 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = g_stge_loc. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-invn_adjmt_qty. w_goodsmvt_item-profit_ctr = l_prctr."利润中心 append w_goodsmvt_item to goodsmvt_item. else. append lines of lt_tpmsg to lt_retmsg. endif. endif. endloop. "执行操作 read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. else. update zwttran set flag = 'F' where tran_nbr = l_tran_nbr. perform writepixtranlog tables lt_retmsg using l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 报废 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& BEGIN 转包 "&--------------------------------------------------------------------------------------------------------------& data:l_lifnr like lfa1-lifnr. clear:l_lifnr,l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return,lt_tpmsg,lt_retmsg. refresh:goodsmvt_item,return,lt_tpmsg,lt_retmsg. "事物码 goodsmvt_code-gm_code = '04'. "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '300' and tran_code = '01' and actn_code = '07'and invn_adjmt_qty > 0 and tran_nbr = t_tran_nbr-tran_nbr. if pt_tran-rsn_code = 'ZB'. clear:l_lifnr. refresh:lt_tpmsg. l_tran_nbr = pt_tran-tran_nbr. l_lifnr = pt_tran-ref_field_5. call function 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_lifnr IMPORTING output = l_lifnr. select count(*) from lfa1 where lifnr = l_lifnr. if sy-subrc <> 0. lt_tpmsg-type = 'E'. concatenate '供应商' l_lifnr '不存在!' into lt_tpmsg-message. append lt_tpmsg. endif. read table lt_tpmsg with key type = 'E'. if sy-subrc <> 0. w_goodsmvt_item-move_type = '541'."转包 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = g_stge_loc. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-invn_adjmt_qty. w_goodsmvt_item-vendor = l_lifnr."供应商 append w_goodsmvt_item to goodsmvt_item. else. append lines of lt_tpmsg to lt_retmsg. endif. endif. endloop. "执行操作 read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. else. update zwttran set flag = 'F' where tran_nbr = l_tran_nbr. perform writepixtranlog tables lt_retmsg using l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 转包 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& BEGIN 转包冲销 "&--------------------------------------------------------------------------------------------------------------& clear:l_lifnr,l_tran_nbr,l_flag,l_matdoc,goodsmvt_header,goodsmvt_code,goodsmvt_headret,materialdocument,matdocumentyear, goodsmvt_item ,return,w_return,lt_tpmsg,lt_retmsg. refresh:goodsmvt_item,return,lt_tpmsg,lt_retmsg. "事物码 goodsmvt_code-gm_code = '04'. "头 goodsmvt_header-pstng_date = sy-datum. goodsmvt_header-doc_date = sy-datum. "明细 loop at pt_tran where tran_type = '603' and tran_code = '02' and proc_stat_code = '10' and units_rcvd > 0 and tran_nbr = t_tran_nbr-tran_nbr. if pt_tran-ref_field_6 = 'T'. clear:l_lifnr. refresh:lt_tpmsg. l_tran_nbr = pt_tran-tran_nbr. l_lifnr = pt_tran-ref_field_7. call function 'CONVERSION_EXIT_ALPHA_INPUT' EXPORTING input = l_lifnr IMPORTING output = l_lifnr. select count(*) from lfa1 where lifnr = l_lifnr. if sy-subrc <> 0. lt_tpmsg-type = 'E'. concatenate '供应商' l_lifnr '不存在!' into lt_tpmsg-message. append lt_tpmsg. endif. read table lt_tpmsg with key type = 'E'. if sy-subrc <> 0. w_goodsmvt_item-move_type = '542'."转包冲销 w_goodsmvt_item-plant = g_plant. w_goodsmvt_item-stge_loc = g_stge_loc. w_goodsmvt_item-material = pt_tran-matnr. w_goodsmvt_item-entry_qnt = pt_tran-units_rcvd. w_goodsmvt_item-vendor = l_lifnr."供应商 append w_goodsmvt_item to goodsmvt_item. else. append lines of lt_tpmsg to lt_retmsg. endif. endif. endloop. "执行操作 read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. if goodsmvt_item[] is not initial. l_flag = 'F'. call function 'BAPI_GOODSMVT_CREATE' EXPORTING goodsmvt_header = goodsmvt_header goodsmvt_code = goodsmvt_code IMPORTING goodsmvt_headret = goodsmvt_headret materialdocument = materialdocument matdocumentyear = matdocumentyear TABLES goodsmvt_item = goodsmvt_item return = return. read table return with key type = 'E' into w_return. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. if materialdocument is not initial. l_flag = 'S'. l_matdoc = materialdocument. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. perform writepixtranlog tables return using l_tran_nbr. endif. update zwttran set flag = l_flag matdoc = l_matdoc where tran_nbr = l_tran_nbr. endif. else. update zwttran set flag = 'F' where tran_nbr = l_tran_nbr. perform writepixtranlog tables lt_retmsg using l_tran_nbr. endif. "&--------------------------------------------------------------------------------------------------------------& "& END 转包冲销 "&--------------------------------------------------------------------------------------------------------------& "&--------------------------------------------------------------------------------------------------------------& "& BEGIN 盘点 "&--------------------------------------------------------------------------------------------------------------& data:l_physinv_head type bapi_physinv_create_head, lt_physinv_item like table of bapi_physinv_create_items with header line. data:it_count_item like table of bapi_physinv_count_items with header line, lt_temp like table of bapi_physinv_count_items with header line, l_invdoc type iblnr, l_nblnr(10) type c, l_count type i. "&--------------------------------------------盘点-------------------------------------------------------------& "初始化 clear:l_tran_nbr,l_flag,l_matdoc,l_physinv_head,lt_physinv_item, lt_retmsg,it_count_item,lt_temp,l_invdoc,l_nblnr,l_count. refresh:lt_physinv_item, lt_retmsg,lt_temp,it_count_item. "盘点单头 l_physinv_head-plant = g_plant. l_physinv_head-stge_loc = g_stge_loc. l_physinv_head-doc_date = sy-datum. l_physinv_head-plan_date = sy-datum. loop at pt_tran where ( ( tran_type = '300' and ( tran_code = '04' or tran_code = '01') and actn_code = '14' ) or ( tran_type = '300' and tran_code = '04' and actn_code = '' ) ) and invn_adjmt_qty > 0 and tran_nbr = t_tran_nbr-tran_nbr. clear:lt_temp. l_tran_nbr = pt_tran-tran_nbr. "盘点单计数 lt_temp-material = pt_tran-matnr. case pt_tran-invn_adjmt_type. when 'A'. lt_temp-entry_qnt = pt_tran-invn_adjmt_qty. when 'S'. lt_temp-entry_qnt = - pt_tran-invn_adjmt_qty. endcase. collect lt_temp. endloop. loop at lt_temp. add 1 to l_count. "初始化 clear:lt_mard. refresh:lt_mard. "获取当前库存 call function 'ZLC_GET_STOCK' EXPORTING p_matnr = lt_temp-material p_werks = g_plant p_lgort = g_stge_loc TABLES pt_mard = lt_mard. read table lt_mard index 1. "盘点处理 if sy-subrc = 0. "盘点单物料 lt_physinv_item-material = lt_temp-material. append lt_physinv_item. "盘点单计数 it_count_item-item = l_count. it_count_item-material = lt_temp-material. it_count_item-entry_qnt = lt_mard-labst + lt_temp-entry_qnt. clear:l_mara. call function 'ZLC_GET_MARA' EXPORTING p_matnr = lt_temp-material IMPORTING p_mara = l_mara. if l_mara is not initial. it_count_item-entry_uom = l_mara-meins. endif. append it_count_item. else. clear:lt_retmsg. lt_retmsg-type = 'E'. concatenate '商品' lt_temp-material ',' g_plant ',' g_stge_loc '不存在!' into lt_retmsg-message. append lt_retmsg. endif. endloop. read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. if it_count_item[] is not initial. l_flag = 'F'. clear:lt_retmsg. refresh:lt_retmsg. call function 'BAPI_MATPHYSINV_CREATE_MULT'"创建盘点凭证 exporting head = l_physinv_head tables items = lt_physinv_item return = lt_retmsg. loop at lt_retmsg. if lt_retmsg-type = 'S' and lt_retmsg-id = 'M7' and lt_retmsg-number = '710'. l_nblnr = lt_retmsg-message_v1. shift l_nblnr right deleting trailing space. overlay l_nblnr with '0000000000'. l_invdoc = l_nblnr. endif. endloop. read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. clear:lt_retmsg. refresh:lt_retmsg. call function 'BAPI_MATPHYSINV_COUNT'"输入盘点数量 exporting physinventory = l_invdoc fiscalyear = sy-datum+0(4) count_date = sy-datum tables items = it_count_item return = lt_retmsg. read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. clear:lt_retmsg. refresh:lt_retmsg. call function 'BAPI_MATPHYSINV_POSTDIFF'"处理差异 exporting physinventory = l_invdoc fiscalyear = sy-datum+0(4) pstng_date = sy-datum tables return = lt_retmsg. read table lt_retmsg with key type = 'E'. if sy-subrc <> 0. call function 'BAPI_TRANSACTION_COMMIT' EXPORTING wait = 'X'. loop at lt_retmsg. if lt_retmsg-type = 'S' and lt_retmsg-id = 'M7' and lt_retmsg-number = '716'. l_nblnr = lt_retmsg-message_v2. shift l_nblnr right deleting trailing space. overlay l_nblnr with '0000000000'. l_matdoc = l_nblnr. endif. endloop. l_flag = 'S'. else. call function 'BAPI_TRANSACTION_ROLLBACK'. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. endif. else. call function 'BAPI_TRANSACTION_ROLLBACK'. endif. update zwttran set flag = l_flag matdoc = l_matdoc iblnr = l_invdoc where tran_nbr = l_tran_nbr. if l_flag = 'F'. perform writepixtranlog tables lt_retmsg using l_tran_nbr. endif. endif. else. update zwttran set flag = 'F' where tran_nbr = l_tran_nbr. perform writepixtranlog tables lt_retmsg using l_tran_nbr. endif. " &--------------------------------------------------------------------------------------------------------------& " & end 报损、报溢、盘点 " &--------------------------------------------------------------------------------------------------------------& endloop.
阅读全文
0 0
- SAP货物移动BAPI BAPI_GOODSMVT_CREATE(WMS TO SAP)
- SAP 货物移动 BAPI 的简单使用 BAPI_GOODSMVT_CREATE
- BAPI_GOODSMVT_CREATE移库操作(WMS TO SAP)
- BAPI_GOODSMVT_CREATE移库操作(WMS TO SAP)
- BAPI:BAPI_GOODSMVT_CREATE货物移动例子
- BAPI调用 - SAP 货物移动相关Bapi(MIGO/MB1A)
- sap货物移动相关的bapi(MIGO/MB1A)
- SAP BAPI
- BAPI货物移动时报错
- SAP call BAPI
- SAP 常用的BAPI
- SAP BAPI一览 史上最全
- SAP BAPI MB01
- sap常用bapi
- How to Find Bapi for Particular Transaction in SAP
- How to Find Bapi for Particular Transaction in SAP
- BAPI调用 - SAP 库存管理常用BAPI
- SAP QM BAPI : Main BAPI in SAP Quality Management
- 左右滑动浏览图片
- 1.5学习数据结构的意义
- Java中Date日期格式的各种转换
- HDU 6055 Regular polygon(计算几何+思维)——2017 Multi-University Training Contest
- Python数据类型之间的转换(三)
- SAP货物移动BAPI BAPI_GOODSMVT_CREATE(WMS TO SAP)
- 性能测试Jmeter
- uva 11987 Almost Union-Find (并查集删点,转移)
- MySQL与Oracle数据类型对应关系(表格形式)
- ContextLoaderListener容器初始化
- 中介者模式
- 帝国CMS列表内容list.var,首页嵌入PHP代码
- SpringMVC
- linux集群时间同步,ntpd、ntpdate