外向交货单增强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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部