ABAP BAPI委外訂單入庫

2021-10-25 02:30:49 字數 4754 閱讀 4999

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...