BAPI中的扩展字段及增强

许多BAPI都会有一个excension的结构,这些结构都对应的是一些增强字段。

BAPI_ACC_DOCUMENT_POST 的扩展字段

银行现金流科目要添加原因代码

    

实施方法里面的写法可以参考 示例实施类。

步骤1、创建增强结构

步骤2、创建新的BADI 实现 SE18

步骤3、SE19编辑实施方法

  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.
  DATA: WA_ZEXTEN TYPE ZEXTEN.
  FIELD-SYMBOLS: <ACCIT> TYPE ACCIT.
  FIELD-SYMBOLS: <L_STRUC> TYPE ANY,
                 <L_FIELD> TYPE ANY.
  FIELD-SYMBOLS : <FS_ACCIT>  TYPE ACCIT.
  SORT C_EXTENSION2 BY STRUCTURE.
  LOOP AT C_EXTENSION2 INTO WA_EXTENSION
    WHERE STRUCTURE = 'ZEXTEN'. "对应于SE11创建的结构
    WA_ZEXTEN = WA_EXTENSION-VALUEPART1.
    READ TABLE C_ACCIT ASSIGNING <ACCIT>
                WITH KEY POSNR = WA_ZEXTEN-ITEMNO_ACC.
    IF SY-SUBRC = 0.
      <ACCIT>-RSTGR = WA_ZEXTEN-RSTGR.
      <ACCIT>-BSCHL = WA_ZEXTEN-BSCHL.
      <ACCIT>-UMSKZ = WA_ZEXTEN-UMSKZ.
      <ACCIT>-ANBWA = WA_ZEXTEN-ANBWA.
      <ACCIT>-XNEGP = WA_ZEXTEN-XNEGP.
    ENDIF.
  ENDLOOP.

  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>.
    "判断是否是EPIC过账传输的增强结构
    IF WA_EXTENSION-STRUCTURE = 'ZTMS_EPIC_EXTENSION'.
      ASSIGN COMPONENT 'POSNR' OF STRUCTURE <L_STRUC> TO <L_FIELD>.
      "得到凭证行
      READ TABLE C_ACCIT ASSIGNING <FS_ACCIT> WITH KEY POSNR = <L_FIELD>.
      IF SY-SUBRC = 0.
        "凭证状态
        <FS_ACCIT>-BSTAT = 'S'.

        "特别总帐科目的分配号=流动项目
        ASSIGN COMPONENT 'ZFITM' OF STRUCTURE <L_STRUC> TO <L_FIELD>.
        <FS_ACCIT>-HZUON = <L_FIELD>.

        "目标特别总帐标志
        ASSIGN COMPONENT 'ZUMSK' OF STRUCTURE <L_STRUC> TO <L_FIELD>.
        <FS_ACCIT>-ZUMSK = <L_FIELD>.

        "过账事务代码
        ASSIGN COMPONENT 'TCODE' OF STRUCTURE <L_STRUC> TO <L_FIELD>.
        <FS_ACCIT>-XREF2 = <L_FIELD>.
      ENDIF.
      "业务事务
      C_ACCHD-GLVOR = 'RFST'.
      "过账事务代码
      ASSIGN COMPONENT 'TCODE' OF STRUCTURE <L_STRUC> TO <L_FIELD>.
      C_ACCHD-TCODE = <L_FIELD>.
    ENDIF.
  ENDLOOP.
  endmethod.

这里可以写成动态的,也可以写上上面那种写死的。

4、过滤器

BAPI_SALESORDER_CREATEFROMDAT2 增强字段

1、需要通过append或者include的形式对标准结构进行增强

如果增强字段在销售订单抬头(vbak)上,则要将增强字段一并append到如下四个表/结构中:

  1.  VBAKKOZ
  2.  VBAKKOZX
  3.  BAPE_VBAK
  4.  BAPE_VBAKX

在行项目(vbap)上:

  1. VBAPKOZ
  2. VBAPKOZX
  3. BAPE_VBAP
  4. BAPE_VBAPX

在运货计划行(VBEP)上:

  1. VBEPKOZ
  2. BEPKOZX
  3. BAPE_VBEP
  4. BAPE_VBEPX

要注意的是vbapkozx中增强字段类型要使用char1或char01 ,不要使用BAPIUPDATE,订单修改的bapi中写死了只识别char1和char01 

 DATA: lwa_bape_vbap   TYPE bape_vbap.  "BAPI Interface for Customer Enhancements to Table VBAP
 DATA: lwa_bape_vbapx  TYPE bape_vbapx. "BAPI Checkbox for Customer Enhancments to Table VBAP
 DATA: lwa_extensionin TYPE bapiparex.  "Customer Enhancement for VBAK, VBAP, VBEP

      "Fill item level self-defined fields
*     extension BAPE_VBAP
      CLEAR: lwa_bape_vbap,
             lwa_bape_vbapx.
*     订单号可以不填,只填行项目号就可以,然后给自定义字段赋值
      lwa_bape_vbap-posnr   =  lwa_order_items_in-itm_number.
      lwa_bape_vbap-yymv_mvgr1 = lwa_items-yymv_mvgr1.
      lwa_bape_vbap-yymv_mvgr2 = lwa_items-yymv_mvgr2.
      lwa_bape_vbap-yymv_mvgr3 = lwa_items-yymv_mvgr3.
      lwa_bape_vbap-yymv_mvgr4 = lwa_items-yymv_mvgr4.
      lwa_bape_vbap-yymv_mvgr5 = lwa_items-yymv_mvgr5.
      lwa_bape_vbapx-yymv_mvgr1 = 'X'.
      lwa_bape_vbapx-yymv_mvgr2 = 'X'.
      lwa_bape_vbapx-yymv_mvgr3 = 'X'.
      lwa_bape_vbapx-yymv_mvgr4 = 'X'.
      lwa_bape_vbapx-yymv_mvgr5 = 'X'.
      lwa_bape_vbapx-posnr  =  lwa_order_items_in-itm_number.
      MOVE 'BAPE_VBAP' TO lwa_extensionin-structure.
      CALL METHOD cl_abap_container_utilities=>fill_container_c
        EXPORTING
          im_value     = lwa_bape_vbap
        IMPORTING
          ex_container = lwa_extensionin-valuepart1.
      APPEND lwa_extensionin TO  m_it_extensionin.
      CLEAR lwa_extensionin.

      MOVE 'BAPE_VBAPX' TO lwa_extensionin-structure.
      MOVE lwa_bape_vbapx TO lwa_extensionin-valuepart1.
      APPEND lwa_extensionin TO m_it_extensionin.

BAPI_PO_CREATE1 增强字段

采购订单增强屏幕扩展是通过include结构增强的,所以不需要像SO那样对其他额外的结构增强。

    CLEAR :ls_header_ext ,ls_header_extx.
    ls_header_ext-contract_id = ls_ekko-contract_id.
    ls_header_extx-contract_id = 'X'.
    ls_header_ext-contract_name = lv_name.
    ls_header_extx-contract_name = 'X'.
    CLEAR: lt_extensionin.
    lt_extensionin-structure = 'BAPI_TE_MEPOHEADER'.
    lt_extensionin-valuepart1 = ls_header_ext.
    APPEND lt_extensionin.
    CLEAR: lt_extensionin.
    lt_extensionin-structure = 'BAPI_TE_MEPOHEADERX'.
    lt_extensionin-valuepart1 = ls_header_extx.
    APPEND lt_extensionin.

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值