requirement:使用BAPI_ACC_DOCUMENT_POST创建FI凭证,模拟的是前台tcode:FB01.
issue:未找到posting key的传入字段。
solution:使用BAPI_ACC_DOCUMENT_POST的表参数extension2来传入posting key信息,
增强badi ACC_DOCUMENT来将传入的posting key更新到FI凭证生成时所使用的内表。
本人的实现过程,供参考:
1.编写调用bapi的代码
-
DATA header TYPE bapiache09.
-
DATA accountgl LIKE TABLE OF bapiacgl09 WITH HEADER LINE.
-
DATA currencyamount LIKE TABLE OF bapiaccr09 WITH HEADER LINE.
-
DATA lt_return LIKE TABLE OF bapiret2 WITH HEADER LINE .
-
-
header-doc_date = sy-datum.
-
header-username = sy-uname.
-
header-pstng_date = sy-datum.
-
header-doc_type = \'SA\'.
-
header-comp_code = \'5000\'.
-
-
accountgl-itemno_acc = \'10\'.
-
accountgl-profit_ctr = \'9941500020\'.
-
accountgl-gl_account = \'0017100011\'.
-
APPEND accountgl.
-
-
accountgl-itemno_acc = \'20\'.
-
accountgl-profit_ctr = \'9941500020\'.
-
accountgl-gl_account = \'0017101001\'.
-
APPEND accountgl.
-
-
currencyamount-itemno_acc = \'10\'.
-
currencyamount-currency = \'CNY\'.
-
currencyamount-amt_doccur = 100.
-
APPEND currencyamount.
-
-
currencyamount-itemno_acc = \'20\'.
-
currencyamount-currency = \'CNY\'.
-
currencyamount-amt_doccur = -100.
-
APPEND currencyamount.
-
DATA : it_bapiparex TYPE TABLE OF bapiparex,
-
wa_bapiparex TYPE bapiparex.
-
-
* Populate the Extension table
-
wa_bapiparex-structure = \'POSTING_KEY\'.
-
wa_bapiparex-valuepart1 = \'10\'. \" Item number
-
wa_bapiparex-valuepart2 = \'40\'. \" Posting Key
-
APPEND wa_bapiparex TO it_bapiparex.
-
wa_bapiparex-valuepart1 = \'20\'. \" Item number
-
wa_bapiparex-valuepart2 = \'50\'. \" Posting Key
-
APPEND wa_bapiparex TO it_bapiparex.
-
-
CALL FUNCTION \'BAPI_ACC_DOCUMENT_POST\'
-
EXPORTING
-
documentheader = header
-
TABLES
-
accountgl = accountgl[]
-
currencyamount = currencyamount[]
-
return = lt_return[]
-
extension2 = it_bapiparex[].
-
-
-
CALL FUNCTION \'BAPI_TRANSACTION_COMMIT\'.
-
-
LOOP AT lt_return.
-
WRITE : / lt_return-message.
-
ENDLOOP.
2.implement badi : ACC_DOCUMENT 在change method中写入代码如下:
-
DATA: wa_extension TYPE bapiparex,
-
wa_accit TYPE accit.
-
-
LOOP AT c_extension2 INTO wa_extension.
-
-
* Extend BAPI to have Posting Keys defined by user
-
IF wa_extension-structure = \'POSTING_KEY\'.
-
CLEAR wa_accit.
-
READ TABLE c_accit INTO wa_accit
-
WITH KEY posnr = wa_extension-valuepart1.
-
IF sy-subrc = 0.
-
wa_accit-bschl = wa_extension-valuepart2.
-
MODIFY c_accit FROM wa_accit INDEX sy-tabix TRANSPORTING bschl.
-
ENDIF.
-
-
ENDIF.
-
-
ENDLOOP.
执行的结果就是FI凭证生成了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/7714329/viewspace-1467162/
,如需转载,请注明出处,否则将追究法律责任。