需求:通过BAPI_OUTB_DELIVERY_CHANGE,更新交货单增强字段。
我们发现bapi中含有参数EXTENSION2
通过在函数中寻找,找到对应位置SMOD_V50B0001,se19创建实施
![在这里插入图片描述](https://img-blog.csdnimg.cn/baa1f10f3648466188d6308e936e84b6.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMTA2Mg==,size_16,color_FFFFFF,t_70)
将对应参数传入标准程序内存中
![在这里插入图片描述](https://img-blog.csdnimg.cn/6582a468a8f04a2288f14d5bd976e713.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMTA2Mg==,size_16,color_FFFFFF,t_70)
对应代码如下:
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,将内存中的字段赋值到表中
![在这里插入图片描述](https://img-blog.csdnimg.cn/5bed84098dfd476794ec5e5976b1bbcd.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMTA2Mg==,size_16,color_FFFFFF,t_70)
分为head和item
![在这里插入图片描述](https://img-blog.csdnimg.cn/8db35fd0f1474b0e8095f8f17502208f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dlaXhpbl80NDkxMTA2Mg==,size_16,color_FFFFFF,t_70)
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.
即可。