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博客 ” ,链接:http://blog.itpub.net/7714329/viewspace-1467162/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/7714329/viewspace-1467162/