BAPI_ACC_DOCUMENT_CHECK BAPI_ACC_DOCUMENT_POST字段增强||字段拓展
对于关联类型中没有的字段,如开户行等,需要自行定义拓展字段进行处理
第一步 创建一个数据类型 ZFI001_EXTEN
拓展字段最好是字符类型 不然会出错
遇到你就知道了 哈哈哈哈 我太菜了 没解决这个问题
POSNR必须存在!其余根据需要自行添加即可
第二步 进入增强点进行处理
事务代码SE18,创建实施
双击CHANGE输入以下模块代码,通常情况不需要做改变
METHOD IF_EX_ACC_DOCUMENT~CHANGE.
DATA: WA_EXTENSION TYPE BAPIPAREX,
EXT_VALUE(960) TYPE C,
WA_ACCIT TYPE ACCIT,
L_REF TYPE REF TO DATA.
FIELD-SYMBOLS: <L_STRUC> TYPE ANY,
<L_FIELD> TYPE ANY.
SORT C_EXTENSION2 BY STRUCTURE.
LOOP AT C_EXTENSION2 INTO WA_EXTENSION.
AT NEW STRUCTURE.
CREATE DATA L_REF TYPE (WA_EXTENSION-STRUCTURE).
ASSIGN L_REF->* TO <L_STRUC>.
ENDAT.
CONCATENATE WA_EXTENSION-VALUEPART1 WA_EXTENSION-VALUEPART2
WA_EXTENSION-VALUEPART3 WA_EXTENSION-VALUEPART4
INTO EXT_VALUE.
MOVE EXT_VALUE TO <L_STRUC>.
ASSIGN COMPONENT 'POSNR' OF STRUCTURE <L_STRUC> TO <L_FIELD>.
READ TABLE C_ACCIT WITH KEY POSNR = <L_FIELD>
INTO WA_ACCIT.
IF SY-SUBRC IS INITIAL.
MOVE-CORRESPONDING <L_STRUC> TO WA_ACCIT.
MODIFY C_ACCIT FROM WA_ACCIT INDEX SY-TABIX.
ENDIF.
ENDLOOP.
ENDMETHOD.
第三步 程序调用
-
创建对应工作区和内表
DATA: LS_EXTEN2 TYPE ZFI001_EXTEN. "定义的增强字段结构 DATA: GT_EXTENSION2 TYPE TABLE OF BAPIPAREX, GS_EXTENSION2 TYPE BAPIPAREX. DATA :L_EXTNAME TYPE STRING VALUE 'ZFI001_EXTEN'.
-
插入拓展字段数据
CLEAR LS_EXTEN2. CLEAR GS_EXTENSION2. LS_EXTEN2-POSNR = NUM. *LS_EXTEN2-DMBTR = <FS_LINE>-DMBTR. LS_EXTEN2-FKBER = <FS_LINE>-FKBER. *LS_EXTEN2-MEINS = <FS_LINE>-MEINS. LS_EXTEN2-NEWBW = <FS_LINE>-NEWBW. LS_EXTEN2-POSID = <FS_LINE>-POSID. LS_EXTEN2-RBUSA = <FS_LINE>-RBUSA. LS_EXTEN2-XNEGP = <FS_LINE>-XNEGP. GS_EXTENSION2-STRUCTURE = L_EXTNAME. "结构名 GS_EXTENSION2-VALUEPART1 = LS_EXTEN2. " APPEND GS_EXTENSION2 TO GT_EXTENSION2.
-
调用BAPI
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK' EXPORTING DOCUMENTHEADER = * CUSTOMERCPD = * CONTRACTHEADER = TABLES * ACCOUNTGL = * ACCOUNTRECEIVABLE = * ACCOUNTPAYABLE = * ACCOUNTTAX = * CURRENCYAMOUNT = * CRITERIA = * VALUEFIELD = EXTENSION1 = GT_EXTENSION2 RETURN = * PAYMENTCARD = * CONTRACTITEM = * EXTENSION2 = * REALESTATE = * ACCOUNTWT = .