前言:因为替代的逻辑涉及到其他行的会计凭证,因此本次替代选择了使用BADI:AC_DOCUMENT来实现
增强步骤:

1. SE19,创建实施:

image.png

2.完善实施信息:

image.png

3.编辑代码:

image.png

  1. DATA:LS_ACCIT_T TYPE ACCIT.
  2. DATA:LS_ACCIT TYPE ACCIT.
  3. DATA:LS_ACCIT_SUB TYPE ACCIT_SUB.
  4. "利润中心替代"
  5. IF IM_DOCUMENT-HEADER-TCODE EQ 'VF02' .
  6. READ TABLE IM_DOCUMENT-ITEM WITH KEY PRCTR = '' TRANSPORTING NO FIELDS. "判断是否有空利润中心的记录"
  7. IF sy-subrc = 0.
  8. CLEAR:LS_ACCIT_T.
  9. LOOP AT IM_DOCUMENT-ITEM INTO LS_ACCIT_T WHERE PRCTR <> ''.
  10. EXIT. "获取利润中心"
  11. ENDLOOP.
  12. LOOP AT IM_DOCUMENT-ITEM INTO LS_ACCIT WHERE PRCTR = ''.
  13. MOVE-CORRESPONDING LS_ACCIT TO LS_ACCIT_SUB. "将空的利润中心替代为其他科目的利润中心"
  14. LS_ACCIT_SUB-PRCTR = LS_ACCIT_T-PRCTR.
  15. APPEND LS_ACCIT_SUB TO EX_DOCUMENT-ITEM .
  16. CLEAR:LS_ACCIT.
  17. ENDLOOP.
  18. ENDIF.
  19. ENDIF.
  20. "MIRO抬头文本为空的话,将文本内容替换为参照"
  21. IF IM_DOCUMENT-HEADER-BKTXT = '' AND IM_DOCUMENT-HEADER-TCODE EQ 'MIRO'.
  22. IF IM_DOCUMENT-HEADER-AWREF <> ''.
  23. EX_DOCUMENT-HEADER-BKTXT = IM_DOCUMENT-HEADER-AWREF.
  24. ELSE.
  25. EX_DOCUMENT-HEADER-BKTXT = 'Header Text!'.
  26. ENDIF.
  27. ENDIF.