交货单BAPI_OUTB_DELIVERY_CHANGE附加增强字段

Posted 想发财的小夏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了交货单BAPI_OUTB_DELIVERY_CHANGE附加增强字段相关的知识,希望对你有一定的参考价值。

需求:通过BAPI_OUTB_DELIVERY_CHANGE,更新交货单增强字段。
我们发现bapi中含有参数EXTENSION2
通过在函数中寻找,找到对应位置SMOD_V50B0001,se19创建实施

将对应参数传入标准程序内存中

对应代码如下:

  FIELD-SYMBOLS: <fs_value> TYPE any.


  "修改交货单抬头字段
  LOOP AT extension2 INTO DATA(ls_ext2) WHERE param = 'LIKP'.

    ASSIGN COMPONENT ls_ext2-field OF STRUCTURE cs_vbkok TO <fs_value>.
    IF <fs_value> IS ASSIGNED.
      <fs_value> = ls_ext2-value.
    ENDIF.

    UNASSIGN <fs_value>.
  ENDLOOP.

  "修改交货单行项目字段
  LOOP AT ct_vbpok ASSIGNING FIELD-SYMBOL(<fs_vbpok>).

    LOOP AT extension2 INTO ls_ext2 WHERE param = 'LIPS'
                                      AND row = sy-tabix.
      ASSIGN COMPONENT ls_ext2-field OF STRUCTURE <fs_vbpok> TO <fs_value>.
      IF <fs_value> IS ASSIGNED.
        <fs_value> = ls_ext2-value.
      ENDIF.

      UNASSIGN <fs_value>.
    ENDLOOP.
  ENDLOOP.

创建增强实施LE_SHP_DELIVERY_UPDATE,将内存中的字段赋值到表中

分为head和item

    DATA: lt_table TYPE TABLE OF dfies.

    CASE  sy-tcode.
      WHEN 'ZSDB003' OR 'SE38'.

        CALL FUNCTION 'DDIF_NAMETAB_GET'
          EXPORTING
            tabname   = 'ZSSD022'
          TABLES
            dfies_tab = lt_table
          EXCEPTIONS
            not_found = 1
            OTHERS    = 2.
        IF sy-subrc EQ 0.
          LOOP AT lt_table INTO DATA(ls_table).
            ASSIGN COMPONENT ls_table-fieldname OF STRUCTURE is_vbpok TO FIELD-SYMBOL(<fs_vbpok>).
            ASSIGN COMPONENT ls_table-fieldname OF STRUCTURE cs_lips TO FIELD-SYMBOL(<fs_lips>).
            IF <fs_lips> IS ASSIGNED.
              <fs_lips> = <fs_vbpok>.
            ENDIF.
            UNASSIGN:<fs_lips>,<fs_vbpok>.
          ENDLOOP.
        ENDIF.

      WHEN OTHERS.
    ENDCASE.

即可。

以上是关于交货单BAPI_OUTB_DELIVERY_CHANGE附加增强字段的主要内容,如果未能解决你的问题,请参考以下文章

SAP 公司间STO场景中外向交货单过账后自动触发内向交货单功能的实现

SAP内向交货单的业务场景

交货单开票

ABAP 交货单屏幕增强

ABAP 交货单屏幕增强

ABAP 交货单屏幕增强