创建销售订单BAPI一些心得
1.創(chuàng)建銷售訂單使用的BAPI
BAPI_SALESORDER_CREATEFROMDAT2
但是??BUSINESS OBJECT限制為?BUS2032
?
使用FM:
DATA???????????LV_OBJTYPE?TYPE?OJ_NAME?.
LS_HEADER-SD_DOC_CAT為銷售訂單類型,即類型為:VBAK-VBTYP ????CALL?FUNCTION?'SD_OBJECT_TYPE_DETERMINE'
????EXPORTING
??????I_DOCUMENT_TYPE???=?LS_HEADER-SD_DOC_CAT
????IMPORTING
??????E_BUSINESS_OBJECT?=?LV_OBJTYPE
????EXCEPTIONS
??????OTHERS????????????=?1.
如果LV_OBJTYPE = BUS2032
則可以使用BAPI_SALESORDER_CREATEFROMDAT2
如果其他的業(yè)務對象則使用FM:?SD_SALESDOCUMENT_CREATE創(chuàng)建銷售訂單
?2.關于銷售訂單的增強使用
?參數(shù)?EXTENSIONIN?
舉個例子,例如VBKD的數(shù)據(jù)??VBKD-?TRATY??VBKD-?TRMTYP
大家應該可以看出來VBKD 數(shù)據(jù)中, 雖然分為vbeln posnr??但是一般只會使用vbeln字段,posnr 為空,
此時,VBKD 數(shù)據(jù) 一般都可以在bapi參數(shù)
ORDER_HEADER_IN 找到,但是VBKD- ??TRATY???卻在bapi 中沒有.
所以我們需要做增強.
首先 我們要確認使用 BAPE_VBAK 和BAPE_VBAKX兩個結(jié)構(gòu)
???LS_BAPIPAREX-STRUCTURE?=?'BAPE_VBAK'.????LS_BAPE_VBAK-TRATY???=?LS_BAPISDHD1_VBKD-TRATY.
????LS_BAPE_VBAK-VSART???=?LS_BAPISDHD1_VBKD-VSART.
????LS_BAPE_VBAK-TRMTYP??=?LS_BAPISDHD1_VBKD-TRMTYP.
????LS_BAPE_VBAK-SDABW???=?LS_BAPISDHD1_VBKD-SDABW.
????LS_BAPIPAREX-VALUEPART1?=?LS_BAPE_VBAK.
????APPEND?LS_BAPIPAREX?TO?ET_BAPIPAREX.
????LS_BAPIPAREX-STRUCTURE?=?'BAPE_VBAKX'.
????LS_BAPE_VBAKX-TRATY????=?CNS_X.
????LS_BAPE_VBAKX-VSART????=?CNS_X.
????LS_BAPE_VBAKX-TRMTYP???=?CNS_X.
????LS_BAPE_VBAKX-SDABW????=?CNS_X.
????LS_BAPIPAREX-VALUEPART1?=?LS_BAPE_VBAKX.
??其次:VBAKKOZ 需要增加TRATY . VBAKKOZX 也添加相應的控制字段TRATY type BAPIUPDATE
??然后請注意,
ORDER_HEADER_INX-UPDATEFLAG = SPACE . !! 這點很重要.詳細邏輯請找:
?
SE38:FV45KFAK_VBAK_FUELLEN_VBAKKOM
總結(jié)
以上是生活随笔為你收集整理的创建销售订单BAPI一些心得的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Oracle】触发器最系统入门学习指导
- 下一篇: 【Smartform】开发中报SSFCO