ABAP:BAPI_ACC_DOCUMENT_POST扩展字段
???Reason Code等;
2、SE19實現BADI增強ACC_DOCUMENT,這個增強是用來將BAPI_ACC_DOCUMENT_POST參數表EXTENSION2傳入系統表
3、使用BAPI_ACC_DOCUMENT_POST參數表EXTENSION2,將擴展字段傳入。
以下詳細列出方法:
1、略
2、引用bapi中的extession2表,將字段擴展進去。
???但是必須得通過BADI增強將字段擴展進去。
Step1:創建Badi
tcode:SE19
此處有2種方式來創建增強,“Classic BADI”或“New BADI”
創建Classic Badi名稱:ACC_DOCUMENT
或創建New Badi名稱:BADI_ACC_DOCUMENT
這篇文章里以創建Classic Badi為例。
命名為Z_MY_ACC_DOCUMENT
?Step2:增加一個Filter
新增一條BKPFF的Filter
?
Step3:保存
如果保存時出現了下面這個消息,說明你必須將你做的Classic Badi遷移到New Badi。
此時可以選擇已有的或創建新的Badi Enhancement Implementation。我們選擇創建新的。
?
?
?
創建好之后,系統會提示消息。
Step5:編輯代碼
在New Badi里面顯示Z_MY_ACC_DOCUMENT,此時將不會報出需要刪除Classic Badi的警告了。
雙擊CHANGE方法即可進入編輯。
代碼例子:
[c-sharp]?view plaincopy代碼釋義
CHANGE方法中參數FLT_VAL,C_ACCHD,C_ACCIT,C_ACCCR,C_ACCWT,C_ACCTX均與憑證數據相關。
C_EXTENSION2中傳入的數據即為BAPI_ACC_DOCUMENT_POST中EXTENSION2參數。
BAPIPAREX-TE_STRUC為數據字典中結構的名稱,其余為擴展數據。
上面例子中,生成BAPI的EXTENTION2參數時,就是按照ZKS_OA_ACC_EXT的數據結構順序寫入的,讀取時也按照相同的方式讀取即可。
根據參數里面的類型和說明來判斷某個參數對應憑證中的什么數據,將BAPI中無法傳入的數據從EXTENTION2里面取出,傳入CHANGE的參數里面即可。
3、調用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?=?'計提存貨跌價準備'.
?????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'.?????????"記賬代碼?增強字段
???????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[]?.
總結
以上是生活随笔為你收集整理的ABAP:BAPI_ACC_DOCUMENT_POST扩展字段的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浅析SAP EWM与WMS的差异
- 下一篇: sap abap在表VBAP和VBAK上