根據銷售訂單建立外向交貨單BAPI
"參考銷售訂單建立外向交貨單
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 .
暴露出來的字段太少了 有時候業務會提出很多字段
比如很多lips 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 'BAPI_OUTB_DELIVERY_CREATE_SLS'
然後在增強裡: METHOD 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