导语:不太理解SAP为什么BAPI预留了增强结构,还需要我们处理一下才可以用,物料主数据是这样,会计凭证也是这样,需要实施一个增强才可以用
一、创建增强结构
要先把需要增强的字段统一放在一个结构中,这样增强写一个就好了。
二、实施增强
对增强点【BADI_ACC_DOCUMENT】进行增强,代码如下。
代码里的【ITEMNO_ACC】是行号的名称,根据自己定义的进行调整
FIELD-SYMBOLS :<fs_posnr> TYPE any,
<fs_value1> TYPE any,
<fs_value2> TYPE any.
FIELD-SYMBOLS: <fs_struc> TYPE any,
<fs_field> TYPE any.
DATA :ls_exte TYPE bapiparex,
ls_accit TYPE accit,
l_string TYPE string.
DATA: lv_ext_value(960) TYPE c,
lr_ref TYPE REF TO data.
SORT c_extension2 BY structure.
LOOP AT c_extension2 INTO DATA(ls_extension).
AT NEW structure.
CREATE DATA lr_ref TYPE (ls_extension-structure).
ASSIGN lr_ref->* TO <fs_struc>.
ENDAT.
CONCATENATE ls_extension-valuepart1 ls_extension-valuepart2
ls_extension-valuepart3 ls_extension-valuepart4
INTO lv_ext_value .
MOVE lv_ext_value TO <fs_struc>.
"抬头数据修改
MOVE-CORRESPONDING <fs_struc> TO c_acchd.
"行项目数据修改
ASSIGN COMPONENT 'ITEMNO_ACC' OF STRUCTURE <fs_struc> TO <fs_field>.
READ TABLE c_accit WITH KEY posnr = <fs_field>
INTO ls_accit.
IF sy-subrc IS INITIAL.
MOVE-CORRESPONDING <fs_struc> TO ls_accit.
MODIFY c_accit FROM ls_accit INDEX sy-tabix.
ENDIF.
ENDLOOP.
三、BAPI调用
在调用函数的时候进行增强就好了。
作者:小飞猪猪猪猪猪猪猪–CSDN