"参考销售订单创建外向交货单
CALL
FUNCTION
'BAPI_OUTB_DELIVERY_CREATE_SLS'
EXPORTING
SHIP_POINT
= IV_SHIP_POINT
DUE_DATE
= IV_DUE_DATE
DEBUG_FLG
= IV_DEBUG_FLG
NO_DEQUEUE
= IV_NO_DEQUEUE
IMPORTING
DELIVERY
= EV_DELIVERY
NUM_DELIVERIES
= EV_NUM_DELIVERIES
TABLES
SALES_ORDER_ITEMS
= IT_SALES_ORDER_ITEMS
SERIAL_NUMBERS
= IT_SERIAL_NUMBERS
EXTENSION_IN
= IT_EXTENSION_IN
DELIVERIES
= IT_DELIVERIES
CREATED_ITEMS
= IT_CREATED_ITEMS
EXTENSION_OUT
= IT_EXTENSION_OUT
RETURN
= ET_RETURN
.
暴露出来的字段太少了
有时候业务会提出很多字段
likp的字段
这个时候就需要在增强里做了
bapi:LE_SHP_DELIVERY_PROC
主要用的方法:
FILL_DELIVERY_HEADER
FILL_DELIVERY_ITEM
CHANGE_DELIVERY_HEADER
CHANGE_DELIVERY_ITEM
我debug的时候, 发现chenge_是都会走的,具体你可以打断点debug试试
另外,打断点,尤其是增强里,强烈建议 用 if 1 = 2 这种,然后打断点
别用break point等硬断点
如果忘记删了,容易有麻烦。
另外,像我这种,掉bapi的时候,需要用增强,那么
各个值的传递,不建议使用ABAP内存或者sap内存
建议使用全局变量,然后封装成FM
全局变量就放着 这个这个fm所在的函数组中就行,只要没重新起进程,这个全局变量跟内存一样能传递
但是只能是call fm,不能submit,submit后就重起进程了。
大致如下:
"将增强字段值 set到全局 变量
CALL
FUNCTION
'ZFM_SET_DELIVERY_CREATE_EXTENS'
EXPORTING
IS_HEAD_BAPI
= IS_HEADER
TABLES
IT_ITEM_BAPI
= IT_ITEM
.
"参考销售订单创建外向交货单
CALL
FUNCTION
然后在增强里:
ZIF_EX_BD_LE_DN_PROC~CHANGE_DELIVERY_ITEM.
"创建外向交货单 增强,修改行项目值
CALL FUNCTION 'ZFM_DELIVERY_CRET_CHANGE_LIPS'
CHANGING
CS_LIPS = CS_LIPS.
ENDMETHOD.
修改的时候,注意的是,如果全局变量 gs_likp 里,赋值了,就替换系统里的原值,
如果没赋值,就用原来的值,
这里就用 下面的方法
http://blog.sina.com.cn/s/blog_c0978c9b0102uzm4.html
标签:SHP,FUNCTION,LE,ITEMS,DELIVERIES,DELIVERY,ITEM,交货单 From: https://blog.51cto.com/u_15680210/5751425