通過屏幕增強,我在MM01中增強兩個字段
image.png
- 數(shù)據(jù)定義
* BAPI數(shù)據(jù)聲明
DATA: CLIDAINP LIKE BAPI_MARA_GA, "客戶端層次物料數(shù)據(jù)
CLIDAOUT LIKE BAPI_MARA, "客戶端層次物料數(shù)據(jù)
CLIDAOUTX LIKE BAPI_MARAX, "BAPI_MARA 的復(fù)選框結(jié)構(gòu)
HEADDATA LIKE BAPIMATHEAD, "帶有控制信息的表頭段
RETURN LIKE BAPIRET2, "返回參數(shù)
RETURNMES LIKE BAPI_MATRETURN2 OCCURS 0 WITH HEADER LINE.
DATA:LT_EXTENSION TYPE STANDARD TABLE OF BAPIPAREX , "參考結(jié)構(gòu)
LS_EXTENSION TYPE BAPIPAREX,
LT_EXTENSIONX TYPE STANDARD TABLE OF BAPIPAREXX , "參考結(jié)構(gòu)
LS_EXTENSIONX TYPE BAPIPAREXX.
DATA:WA_ZEXTEN LIKE BAPI_TE_MARA,
WA_ZEXTENX LIKE BAPI_TE_MARAX.
- 讀取物料數(shù)據(jù)
CALL FUNCTION 'BAPI_MATERIAL_GET_ALL'
EXPORTING
MATERIAL = GS_TAB-MATNR
IMPORTING
CLIENTDATA = CLIDAINP
TABLES
RETURN = RETURNMES.
IF SY-SUBRC EQ 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
BAPI_MATERIAL_GET_ALL 這個FUNCTION可以取出該物料下的基礎(chǔ)數(shù)據(jù)
- 抬頭數(shù)據(jù) 嘉赎,物料和視圖維護
HEADDATA-MATERIAL = GS_TAB-MATNR.
HEADDATA-BASIC_VIEW = 'X'.
WA_ZEXTEN-MATERIAL = GS_TAB-MATNR.
"物料是必須要給的讲岁,不然報S類型的消息翩活,但是不更新MARA表
WA_ZEXTEN-ZJPAUDIT = GS_TAB-JPAUDIT.
"要更新的字段
LS_EXTENSION-STRUCTURE = 'BAPI_TE_MARA'.
"擴展結(jié)構(gòu)是系統(tǒng)標(biāo)準(zhǔn)的(敲重點)
LS_EXTENSION-VALUEPART1 = WA_ZEXTEN.
APPEND LS_EXTENSION TO LT_EXTENSION.
CLEAR LS_EXTENSION.
*給更新字段打上啊X標(biāo)識
WA_ZEXTENX-MATERIAL = GS_TAB-MATNR.
WA_ZEXTENX-ZJPAUDIT = 'X'.
LS_EXTENSIONX-STRUCTURE = 'BAPI_TE_MARAX'.
LS_EXTENSIONX-VALUEPART1 = WA_ZEXTENX.
APPEND LS_EXTENSIONX TO LT_EXTENSIONX.
CLEAR LS_EXTENSIONX.
附加結(jié)構(gòu)參考
image.png
image.png
自己往標(biāo)準(zhǔn)結(jié)構(gòu)拂檩,表里面插入數(shù)據(jù),一般通過附加結(jié)構(gòu)又厉,新建一個結(jié)構(gòu)插入九府,插入的結(jié)構(gòu)不可以提前建好引用,我的理解是你通過點擊結(jié)構(gòu)的附加結(jié)構(gòu)按鈕馋没,建立的會出現(xiàn)某種勾稽關(guān)系吧昔逗。
- CallBAPI
CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
EXPORTING
HEADDATA = HEADDATA
CLIENTDATA = CLIDAOUT
CLIENTDATAX = CLIDAOUTX
IMPORTING
RETURN = RETURN
TABLES
RETURNMESSAGES = RETURNMES
EXTENSIONIN = LT_EXTENSION "敲重點
EXTENSIONINX = LT_EXTENSIONX."敲重點
IF RETURN-TYPE = 'E'.
GS_TAB-TYPE = 'E'.
GS_TAB-MESS = RETURN-MESSAGE.
ROLLBACK WORK.
ELSE.
GS_TAB-MESS = TEXT-011.
GS_TAB-TYPE = 'S'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
MODIFY GT_TAB FROM GS_TAB.
CLEAR GS_TAB.
MESSAGE TEXT-011 TYPE 'S'.
ELSE.
GS_TAB-TYPE = 'E'.
GS_TAB-MESS = TEXT-012 .
MODIFY GT_TAB FROM GS_TAB.
CLEAR GS_TAB.
ENDIF.
先確定自己的前臺可以跑通,在測試bapi