BADI:BADI_ACC_DOCUMENT 用于财务凭证创建时添加BAPI上没有的字段信息。

1.创建BADI实施,并拷贝SAP示例提供的代码 。METHOD 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.

 

2.设置过滤器

3.创建增强结构并添加所需字段ZFISACC_EXTE 其中POSNR是必须字段。

4.调用BAPI_ACC_DOCUMENT_POST填充增强字段信息。

*扩展字段填写
  CLEAR  LT_EXTENSION2.
*字段长度超过240个字节,
  LT_EXTENSION2-STRUCTURE  = 'ZFISACC_EXTE'.
  CLEAR:LS_ZFISACC_EXTE.
  LS_ZFISACC_EXTE-POSNR = LV_POSNR.
  LS_ZFISACC_EXTE-BSCHL =  '40'.
*  LS_ZFISACC_EXTE-RSTGR = '110'."原因代码
  LT_EXTENSION2+30(960) = LS_ZFISACC_EXTE.
  APPEND LT_EXTENSION2.

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐