前言:因为替代的逻辑涉及到其他行的会计凭证,因此本次替代选择了使用BADI:AC_DOCUMENT来实现
增强步骤:
1. SE19,创建实施:
2.完善实施信息:
3.编辑代码:
DATA:LS_ACCIT_T TYPE ACCIT.
DATA:LS_ACCIT TYPE ACCIT.
DATA:LS_ACCIT_SUB TYPE ACCIT_SUB.
"利润中心替代"
IF IM_DOCUMENT-HEADER-TCODE EQ 'VF02' .
READ TABLE IM_DOCUMENT-ITEM WITH KEY PRCTR = '' TRANSPORTING NO FIELDS. "判断是否有空利润中心的记录"
IF sy-subrc = 0.
CLEAR:LS_ACCIT_T.
LOOP AT IM_DOCUMENT-ITEM INTO LS_ACCIT_T WHERE PRCTR <> ''.
EXIT. "获取利润中心"
ENDLOOP.
LOOP AT IM_DOCUMENT-ITEM INTO LS_ACCIT WHERE PRCTR = ''.
MOVE-CORRESPONDING LS_ACCIT TO LS_ACCIT_SUB. "将空的利润中心替代为其他科目的利润中心"
LS_ACCIT_SUB-PRCTR = LS_ACCIT_T-PRCTR.
APPEND LS_ACCIT_SUB TO EX_DOCUMENT-ITEM .
CLEAR:LS_ACCIT.
ENDLOOP.
ENDIF.
ENDIF.
"MIRO抬头文本为空的话,将文本内容替换为参照"
IF IM_DOCUMENT-HEADER-BKTXT = '' AND IM_DOCUMENT-HEADER-TCODE EQ 'MIRO'.
IF IM_DOCUMENT-HEADER-AWREF <> ''.
EX_DOCUMENT-HEADER-BKTXT = IM_DOCUMENT-HEADER-AWREF.
ELSE.
EX_DOCUMENT-HEADER-BKTXT = 'Header Text!'.
ENDIF.
ENDIF.