bapi委外訂單入庫相比普通入庫要多加三個字段,line_id、parent_id 、line_depth。
委外訂單的上層只需要line_id,下層需要line_id、parent_id 、line_depth。
line_id唯一不重複,下層的parent_id 要等於上層的line_id,line_depth = 『01』。
字段定義
data
:begin
of wa_bapi_header.
include
structure bapi2017_gm_head_01.
data
:end
of wa_bapi_header.
data
:begin
of wa_goodsmvt_code.
include
structure bapi2017_gm_code.
data
:end
of wa_goodsmvt_code.
data
:begin
of it_bapi_item occurs
0.include
structure bapi2017_gm_item_create.
data
:end
of it_bapi_item.
data
:begin
of it_cmtmsg occurs
0.include
structure bapiret2.
data
:end
of it_cmtmsg.
data
:wa_ekpo
like ekpo.
data
:g_mblnr
like mseg-mblnr,
g_mjahr like mseg-mjahr,
g_bamng like ekbe-bamng,
g_msg
(100
)type c.
data
:l_line_id
type mseg-line_id value
'000000'
, l_parent_id type mseg-parent_id value
'000000'
, l_line_depth type mseg-line_depth value
'00'
.
內錶賦值,呼叫bapi
"抬頭資訊
* wa_bapi_header-pstng_date = sy-datum. "憑證中的憑證日期
wa_bapi_header-doc_date = p_budat.
if wa_bapi_header-doc_date is
initial
. wa_bapi_header-doc_date = sy-datum. "憑證記帳日期
endif
. wa_bapi_header-pstng_date = p_budat.
if wa_bapi_header-pstng_date is
initial
. wa_bapi_header-pstng_date = sy-datum. "憑證記帳日期
endif
. wa_bapi_header-header_txt = p_bktxt. "憑證抬頭文字
wa_goodsmvt_code-gm_code =
'01'
. "gm
code
"明細資訊
loop
at it_out2 into wa_out where check =
'x'." and wtmng >
0and rsnum =''.
select
single
*into wa_ekpo
from ekpo
where ebeln = wa_out-ebeln
and ebelp = wa_out-ebelp.
if wa_out-rspos =''.
it_bapi_item-move_type =
'101'
.else
. it_bapi_item-move_type =
'543'
.endif
. it_bapi_item-plant = wa_ekpo-werks.
it_bapi_item-stge_loc = wa_out-lgort.
it_bapi_item-po_number = wa_out-ebeln.
it_bapi_item-po_item = wa_out-ebelp.
it_bapi_item-entry_qnt = wa_out-wtmng.
it_bapi_item-entry_uom = wa_out-meins.
it_bapi_item-mvt_ind =
'b'.
if wa_out-rsnum ne''.
if wa_out-rspos =''.
l_line_id = l_line_id +
1. l_parent_id = l_line_id.
it_bapi_item-line_id = l_line_id.
else
. it_bapi_item-parent_id = l_parent_id.
l_line_id = l_line_id +
1. it_bapi_item-line_id = l_line_id.
it_bapi_item-line_depth =
'01'
.call
function
'conversion_exit_alpha_input'
exporting
input = wa_out-vbeln
importing
output = it_bapi_item-val_sales_ord.
it_bapi_item-val_s_ord_item = wa_out-vbelp.
endif
.endif
.if wa_out-wtmng <=
0.message
'此次收貨數量必須大於0'
type
's'.
exit
.endif
. "補前導零
call
function
'conversion_exit_alpha_input'
exporting
input = wa_out-matnr
importing
output = wa_out-matnr.
it_bapi_item-material = wa_out-matnr.
clear
:it_bapi_item
,wa_ekpo.
endloop
.if it_bapi_itemis
notinitial
.call
function
'bapi_goodsmvt_create'
exporting
goodsmvt_header = wa_bapi_header
goodsmvt_code = wa_goodsmvt_code
importing
materialdocument = g_mblnr
matdocumentyear = g_mjahr
tables
goodsmvt_item = it_bapi_item
return
= it_cmtmsg.
if g_mblnr is
notinitial
. "提交
call
function
'bapi_transaction_commit'
. "刪除已經過賬的資料
delete it_out where check =
'x'and wtmng >0.
concatenate
'物料憑證:' g_mblnr '已經建立.'
into g_msg.
message g_msg type
's'.
else
. "回滾
call
function
'bapi_transaction_rollback'
.read
table it_cmtmsg with
key type =
'e'.
concatenate
'入庫過賬失敗!' it_cmtmsg-message into g_msg.
message g_msg type
'e'.
exit
.endif
.endif
.clear
:wa_bapi_header
,it_bapi_item,p_bktxt.
free
:it_bapi_item
.
典型委外處理
兩種典型委外處理 外包業務是乙個普通的業務 通常發生在 1.企業短期內訂單過多暫時產能不足,為了如期交貨需要外援 2.產品的某道關鍵工序企業自有生產工藝滿足不了需求 3.隨著產品生命週期不斷縮短,為了避免企業生產投資負擔,某道工序外包低於自製成本 4.企業產品線長 可以將非核心的業務外包以降低成本等...
SAP 採購訂單入庫 交貨已完成
未清採購訂單 還有多少剩餘可入庫數量 1 如果收貨無未清數量後,則採購訂單中自動鉤選 交貨已完成 需提前後台配置 也可以在還有未清數量時手工打鉤 即提前交貨完成 a 自動收貨已完成 後台配置 後台 物料管理 庫存管理和實際庫存 收貨 設定 交貨完成 標記 migo設定 migo 採購訂單資料 交貨已...
bom sap 替代專案 SAP 委外工序帶料外協
在最近的工作中,有業務同事在對生產訂單進行261投料時,報錯 具有移動型別543的貨物移動不可能,如下 這是因為生產訂單0010工序為工序外協工序,訂單bom的物料恰好分配給了委外加工工序0010上,因而引起報錯 同時,通過此事例,也可以看出sap裡面委外工序帶料外協的基本功能邏輯,大致如下 1.c...