ABAP 外向交貨單拆分批次 BAPI
阿新 • • 發佈:2022-03-05
前臺事務碼:VL02N
程式使用BAPI對交貨單進行批次拆分,並且賦值庫位。
使用BAPI: BAPI_OUTB_DELIVERY_CHANGE
使用BAPI_OUTB_DELIVERY_CHANGE建立批次,在引數正確的情況下,依舊報錯,可能導致的原因是庫位賦值不上。
程式碼分成兩部的情況下依舊出錯,需考慮前臺配置。
程式碼案例如下:
"頭資訊 ls_header_data-deliv_numb = gs_code_scll-vbeln . "交貨單號 ls_header_control-deliv_numb = gs_code_scll-vbeln . "交貨單號 lv_delivery = gs_code_scll-vbeln . "交貨單號 * ls_techn_control-upd_ind = 'U'. "修改原來行專案的數量 CLEAR lt_item_data. lt_item_data-deliv_numb = gs_code_scll-vbeln. lt_item_data-deliv_item = gs_code_scll-posnr. * lt_item_data-material = gs_code_scll-matnr. "物料 * lt_item_data-batch = ''. "批次為空 * lt_item_data-usehieritm = '1'. lt_item_data-dlv_qty = 0. lt_item_data-dlv_qty_imunit = 0. "數量為0 lt_item_data-fact_unit_nom = 1. lt_item_data-fact_unit_denom = 1. lt_item_data-base_uom = gs_code_scll-meins. "基本單位 lt_item_data-sales_unit = gs_code_scll-meins. "銷售單位 APPEND lt_item_data. CLEAR : lt_item_control. lt_item_control-deliv_numb = gs_code_scll-vbeln. lt_item_control-deliv_item = gs_code_scll-posnr. lt_item_control-chg_delqty = 'X'. APPEND lt_item_control. CLEAR lt_item_data. CLEAR : lt_item_control. "新拆分的批次 **行專案(根據自己的情況進行修改)** LOOP AT gt_code_scll INTO DATA(ls_code_scll) WHERE zbarcode IS NOT INITIAL AND vbeln IS NOT INITIAL . lv_num = lv_num + 1 . lt_item_data-deliv_numb = ls_code_scll-vbeln. lt_item_data-deliv_item = 900000 + lv_num. "交貨單行專案 * lt_item_data-material = ls_code_scll-matnr. "物料 lt_item_data-batch = ls_code_scll-charg. "批次 lt_item_data-hieraritem = ls_code_scll-posnr. "專案層次中的高階專案 lt_item_data-usehieritm = '1'. lt_item_data-dlv_qty = ls_code_scll-erfmg. "數量 lt_item_data-dlv_qty_imunit = ls_code_scll-erfmg. "數量 lt_item_data-fact_unit_nom = 1. lt_item_data-fact_unit_denom = 1. lt_item_data-base_uom = ls_code_scll-meins. "基本單位 lt_item_data-sales_unit = ls_code_scll-meins. "銷售單位 APPEND lt_item_data. lt_item_control-deliv_numb = gs_code_scll-vbeln. lt_item_control-deliv_item = 900000 + lv_num. "拆分後的新專案 lt_item_control-chg_delqty = 'X'. "數量修改標誌 APPEND lt_item_control. ENDLOOP. "第一次呼叫 進行批次拆分 CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING header_data = ls_header_data header_control = ls_header_control delivery = lv_delivery TECHN_CONTROL = ls_techn_control * HEADER_DATA_SPL = * HEADER_CONTROL_SPL = * SENDER_SYSTEM = TABLES * HEADER_PARTNER = * HEADER_PARTNER_ADDR = * HEADER_DEADLINES = ITEM_DATA = lt_item_data ITEM_CONTROL = lt_item_control * ITEM_SERIAL_NO = * SUPPLIER_CONS_DATA = * EXTENSION1 = * EXTENSION2 = return = lt_return * TOKENREFERENCE = ITEM_DATA_SPL = lt_item_data_spl * COLLECTIVE_CHANGE_ITEMS = * NEW_ITEM_DATA = * NEW_ITEM_DATA_SPL = * NEW_ITEM_ORG = * ITEM_DATA_DOCU_BATCH = * CWM_ITEM_DATA = . "批次拆分沒問題 再給拆分批次的庫位進行賦值 賦值庫位 LOOP AT gt_code_scll INTO DATA(ls_code_scll1) WHERE zbarcode IS NOT INITIAL AND vbeln IS NOT INITIAL. lt_item_data_spl-deliv_numb = ls_code_scll1-vbeln. lt_item_data_spl-deliv_item = 900000 + lv_num. lt_item_data_spl-stge_loc = ls_code_scll1-lgort. APPEND lt_item_data_spl. ENDLOOP. CALL FUNCTION 'BAPI_OUTB_DELIVERY_CHANGE' EXPORTING header_data = ls_header_data header_control = ls_header_control delivery = lv_delivery TECHN_CONTROL = ls_techn_control * HEADER_DATA_SPL = * HEADER_CONTROL_SPL = * SENDER_SYSTEM = TABLES * HEADER_PARTNER = * HEADER_PARTNER_ADDR = * HEADER_DEADLINES = ITEM_DATA = lt_item_data ITEM_CONTROL = lt_item_control * ITEM_SERIAL_NO = * SUPPLIER_CONS_DATA = * EXTENSION1 = * EXTENSION2 = return = lt_return * TOKENREFERENCE = ITEM_DATA_SPL = lt_item_data_spl. * COLLECTIVE_CHANGE_ITEMS = * NEW_ITEM_DATA = * NEW_ITEM_DATA_SPL = * NEW_ITEM_ORG = * ITEM_DATA_DOCU_BATCH = * CWM_ITEM_DATA =