首页 > 其他分享 >外向交货单增强BADI:LE_SHP_DELIVERY_PR

外向交货单增强BADI:LE_SHP_DELIVERY_PR

时间:2022-10-12 13:35:33浏览次数:71  
标签:SHP PR text DELIVERY ITEM LIPS 交货单 FUNCTION




  "参考销售订单创建外向交货单
   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 ​





注:



CS_LIPS-LGMNG  



   比如我这里的需求:



   IF LW_ITEM -LFIMG  IS  NOT  INITIAL  AND LW_ITEM -LGMNG  IS  INITIAL .
    CS_LIPS -LGMNG  = LW_ITEM -LFIMG  .
   ENDIF .





欢迎关注订阅号:SAP学习记录 (SAPlearning )

PO <wbr><wbr>text <wbr><wbr>copy <wbr><wbr>rules <wbr><wbr>:copy <wbr><wbr>PR <wbr><wbr>item <wbr><wbr>text <wbr><wbr>to <wbr><wbr>PO



标签:SHP,PR,text,DELIVERY,ITEM,LIPS,交货单,FUNCTION
From: https://blog.51cto.com/u_15680210/5749657

相关文章