天天看點

外向交貨單增強BADI:LE_SHP_DELIV…

根據銷售訂單建立外向交貨單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