使用BAPI_ACC_DOCUMENT_POST生成FI凭证

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的代码


点击(此处)折叠或打开

  1. DATA header TYPE bapiache09.
  2. DATA accountgl LIKE TABLE OF bapiacgl09 WITH HEADER LINE.
  3. DATA currencyamount LIKE TABLE OF bapiaccr09 WITH HEADER LINE.
  4. DATA lt_return LIKE TABLE OF bapiret2 WITH HEADER LINE .

  5. header-doc_date = sy-datum.
  6. header-username = sy-uname.
  7. header-pstng_date = sy-datum.
  8. header-doc_type = \'SA\'.
  9. header-comp_code = \'5000\'.

  10. accountgl-itemno_acc = \'10\'.
  11. accountgl-profit_ctr = \'9941500020\'.
  12. accountgl-gl_account = \'0017100011\'.
  13. APPEND accountgl.

  14. accountgl-itemno_acc = \'20\'.
  15. accountgl-profit_ctr = \'9941500020\'.
  16. accountgl-gl_account = \'0017101001\'.
  17. APPEND accountgl.

  18. currencyamount-itemno_acc = \'10\'.
  19. currencyamount-currency = \'CNY\'.
  20. currencyamount-amt_doccur = 100.
  21. APPEND currencyamount.

  22. currencyamount-itemno_acc = \'20\'.
  23. currencyamount-currency = \'CNY\'.
  24. currencyamount-amt_doccur = -100.
  25. APPEND currencyamount.
  26. DATA : it_bapiparex TYPE TABLE OF bapiparex,
  27.          wa_bapiparex TYPE bapiparex.

  28. * Populate the Extension table
  29. wa_bapiparex-structure = \'POSTING_KEY\'.
  30. wa_bapiparex-valuepart1 = \'10\'. \" Item number
  31. wa_bapiparex-valuepart2 = \'40\'. \" Posting Key
  32. APPEND wa_bapiparex TO it_bapiparex.
  33. wa_bapiparex-valuepart1 = \'20\'. \" Item number
  34. wa_bapiparex-valuepart2 = \'50\'. \" Posting Key
  35. APPEND wa_bapiparex TO it_bapiparex.

  36. CALL FUNCTION \'BAPI_ACC_DOCUMENT_POST\'
  37.   EXPORTING
  38.     documentheader = header
  39.   TABLES
  40.     accountgl = accountgl[]
  41.     currencyamount = currencyamount[]
  42.     return = lt_return[]
  43.     extension2 = it_bapiparex[].


  44. CALL FUNCTION \'BAPI_TRANSACTION_COMMIT\'.

  45. LOOP AT lt_return.
  46.   WRITE : / lt_return-message.
  47. ENDLOOP.
2.implement badi : ACC_DOCUMENT 在change method中写入代码如下:

点击(此处)折叠或打开

  1. DATA: wa_extension TYPE bapiparex,
  2.               wa_accit TYPE accit.

  3.     LOOP AT c_extension2 INTO wa_extension.

  4. * Extend BAPI to have Posting Keys defined by user
  5.       IF wa_extension-structure = \'POSTING_KEY\'.
  6.         CLEAR wa_accit.
  7.         READ TABLE c_accit INTO wa_accit
  8.                            WITH KEY posnr = wa_extension-valuepart1.
  9.         IF sy-subrc = 0.
  10.           wa_accit-bschl = wa_extension-valuepart2.
  11.           MODIFY c_accit FROM wa_accit INDEX sy-tabix TRANSPORTING bschl.
  12.         ENDIF.

  13.       ENDIF.

  14.     ENDLOOP.

执行的结果就是FI凭证生成了。


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/7714329/viewspace-1467162/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/7714329/viewspace-1467162/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值