ABAP:BAPI_ACC_DOCUMENT_POST扩展字段
???Reason Code等;
2、SE19實(shí)現(xiàn)BADI增強(qiáng)ACC_DOCUMENT,這個(gè)增強(qiáng)是用來(lái)將BAPI_ACC_DOCUMENT_POST參數(shù)表EXTENSION2傳入系統(tǒng)表
3、使用BAPI_ACC_DOCUMENT_POST參數(shù)表EXTENSION2,將擴(kuò)展字段傳入。
以下詳細(xì)列出方法:
1、略
2、引用bapi中的extession2表,將字段擴(kuò)展進(jìn)去。
???但是必須得通過(guò)BADI增強(qiáng)將字段擴(kuò)展進(jìn)去。
Step1:創(chuàng)建Badi
tcode:SE19
此處有2種方式來(lái)創(chuàng)建增強(qiáng),“Classic BADI”或“New BADI”
創(chuàng)建Classic Badi名稱:ACC_DOCUMENT
或創(chuàng)建New Badi名稱:BADI_ACC_DOCUMENT
這篇文章里以創(chuàng)建Classic Badi為例。
命名為Z_MY_ACC_DOCUMENT
?Step2:增加一個(gè)Filter
新增一條BKPFF的Filter
?
Step3:保存
如果保存時(shí)出現(xiàn)了下面這個(gè)消息,說(shuō)明你必須將你做的Classic Badi遷移到New Badi。
此時(shí)可以選擇已有的或創(chuàng)建新的Badi Enhancement Implementation。我們選擇創(chuàng)建新的。
?
?
?
創(chuàng)建好之后,系統(tǒng)會(huì)提示消息。
Step5:編輯代碼
在New Badi里面顯示Z_MY_ACC_DOCUMENT,此時(shí)將不會(huì)報(bào)出需要?jiǎng)h除Classic Badi的警告了。
雙擊CHANGE方法即可進(jìn)入編輯。
代碼例子:
[c-sharp]?view plaincopy代碼釋義
CHANGE方法中參數(shù)FLT_VAL,C_ACCHD,C_ACCIT,C_ACCCR,C_ACCWT,C_ACCTX均與憑證數(shù)據(jù)相關(guān)。
C_EXTENSION2中傳入的數(shù)據(jù)即為BAPI_ACC_DOCUMENT_POST中EXTENSION2參數(shù)。
BAPIPAREX-TE_STRUC為數(shù)據(jù)字典中結(jié)構(gòu)的名稱,其余為擴(kuò)展數(shù)據(jù)。
上面例子中,生成BAPI的EXTENTION2參數(shù)時(shí),就是按照Z(yǔ)KS_OA_ACC_EXT的數(shù)據(jù)結(jié)構(gòu)順序?qū)懭氲?#xff0c;讀取時(shí)也按照相同的方式讀取即可。
根據(jù)參數(shù)里面的類型和說(shuō)明來(lái)判斷某個(gè)參數(shù)對(duì)應(yīng)憑證中的什么數(shù)據(jù),將BAPI中無(wú)法傳入的數(shù)據(jù)從EXTENTION2里面取出,傳入CHANGE的參數(shù)里面即可。
3、調(diào)用BAPI,引用Extenssion2.
?READ?TABLE??lt_alv?INDEX?1.
???IF?sy-subrc?=?0.
?????documentheader-comp_code??=?lt_alv-bukrs.
?????documentheader-fisc_year??=?lv_endda+0(4)..
?????documentheader-fis_period?=?lv_endda+4(2).
?????documentheader-doc_date???=?lv_endda.
?????documentheader-pstng_date?=?lv_endda.
?????documentheader-doc_type???=?'SA'.
?????documentheader-header_txt?=?'計(jì)提存貨跌價(jià)準(zhǔn)備'.
?????documentheader-username???=?sy-uname.
?????LOOP?AT??lt_alv.
???????item?=?item?+?1.
???????accountgl-itemno_acc??=?item.
???????accountgl-comp_code???=?lt_alv-bukrs.
???????accountgl-doc_type????=?'SA'.
???????accountgl-plant???????=?lt_alv-werks.
???????accountgl-gl_account??=?'1471000010'.
???????accountgl-material????=??lt_alv-matnr.
???????APPEND?accountgl.
???????currencyamount-itemno_acc??=?item.
???????currencyamount-currency????=?'CNY'.
???????currencyamount-amt_doccur??=??lt_alv-zytje?*?(?-1?).
???????APPEND?currencyamount.
???????CLEAR?extension2.
???????CLEAR?wa_zsfi040.
???????wa_zsfi040-posnr?=?item.
???????wa_zsfi040-bschl??????=?'50'.?????????"記賬代碼?增強(qiáng)字段
???????extension2-structure??=?'ZSFI040'.
???????extension2-valuepart1?=?wa_zsfi040.
???????APPEND?extension2.
???????CLEAR:accountgl,currencyamount.
???????CLEAR:lt_alv-matnr,lt_alv-zchemc,
?????????????lt_alv-maktx,lt_alv-meins,
?????????????lt_alv-bklas,lt_alv-bkbez,
?????????????lt_alv-zkckm,lt_alv-zkckmz,
?????????????lt_alv-zcykm,lt_alv-zcykmz,
?????????????lt_alv-zbqcy,lt_alv-zqmze,
?????????????lt_alv-zqmsl,lt_alv-zqmdj,
?????????????lt_alv-zkbdj,lt_alv-zdjce.
???????COLLECT?lt_alv?INTO?lt_salv.
?????ENDLOOP.
?????READ?TABLE?lt_salv?INDEX?1.
?????item?=?item?+?1.
?????accountgl-itemno_acc??=?item.
?????accountgl-comp_code???=?lt_salv-bukrs.
?????accountgl-doc_type????=?'SA'.
?????accountgl-plant???????=?lt_salv-werks.
?????accountgl-gl_account??=?'6701000020'.
?????APPEND?accountgl.
?????currencyamount-itemno_acc??=?item.
?????currencyamount-currency????=?'CNY'.
?????currencyamount-amt_doccur??=??lt_salv-zytje?.
?????APPEND?currencyamount.
?????wa_zsfi040-posnr?=?item.
?????wa_zsfi040-bschl??????=?'40'.?????????"記賬代碼
?????extension2-structure??=?'ZSFI040'.
?????extension2-valuepart1?=?wa_zsfi040.
?????APPEND?extension2.
?????CLEAR?lt_salv.
?????CLEAR?lt_alv.
?????CALL?FUNCTION?'BAPI_ACC_DOCUMENT_POST'
???????EXPORTING
?????????documentheader?=?documentheader
???????TABLES
?????????accountgl??????=?accountgl
?????????currencyamount?=?currencyamount
?????????return?????????=?return
?????????extension2?????=?extension2.
???ENDIF.
???CLEAR:documentheader,accountgl[],currencyamount[],extension2[].
???READ?TABLE?return?WITH?KEY?type?=?'E'.
???IF?sy-subrc?<>?0.
?????CALL?FUNCTION?'BAPI_TRANSACTION_COMMIT'
???????EXPORTING
?????????wait???=?'X'
???????IMPORTING
?????????return?=?return.
???ELSE.
?????CALL?FUNCTION?'BAPI_TRANSACTION_ROLLBACK'
???????IMPORTING
?????????return?=?return.
???ENDIF.
???LOOP?AT?return.
*將返回日志記入LOG
?????gs_log-type????=?return-type.
?????gs_log-message?=?return-message.
?????APPEND?gs_log?TO?gt_log.
???ENDLOOP.
???PERFORM?display_log.
???CLEAR:gt_log[],return[]?.
總結(jié)
以上是生活随笔為你收集整理的ABAP:BAPI_ACC_DOCUMENT_POST扩展字段的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 浅析SAP EWM与WMS的差异
- 下一篇: sap abap在表VBAP和VBAK上