SAP IDOC DELVRY03 增强相关

26 篇文章 7 订阅

一.如何增强自定义结构

   1.WE31 创建你想要增加的字段

 

 最后别忘了set  release

 

 2.WE30-->创建自己的extension

  右键合适的位置去append

 

 最后别忘了 set release

 3.WE82-->新建一条自己的记录(注意是新建不是修改)

 

 4.WE20-->分配自己的增强

 

 

二.交货单IDOC出栈的时候按照自定义逻辑修改IDOC

 增强点:EXIT_SAPLV56K_002

DATA: lv_werks TYPE werks_d.
DATA: lv_matnr TYPE matnr.
DATA: lv_sernr TYPE gernr.
DATA: lv_sernp TYPE serail.
DATA: lv_invnr TYPE invnr.
DATA: ls_edidd   LIKE idoc_data.

IF segment_name = 'E1EDL24'.
  LOOP AT idoc_data WHERE  segnam = 'E1EDL24'.
    CLEAR:lv_matnr,lv_werks,lv_sernp.
    lv_matnr = idoc_data-sdata+6(18).
    lv_werks = idoc_data-sdata+136(4).
    IF lv_matnr IS NOT INITIAL AND lv_werks IS NOT INITIAL .
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = lv_matnr
        IMPORTING
          output = lv_matnr.

      SELECT SINGLE sernp
      INTO lv_sernp
      FROM marc
      WHERE matnr = lv_matnr
      AND   werks = lv_werks.
      IF sy-subrc = 0.
        idoc_data-sdata+457(4) = lv_sernp.
      ENDIF.

    ENDIF.
    MODIFY idoc_data.
  ENDLOOP.

ENDIF.

IF segment_name = 'E1EDL11'.
  LOOP AT idoc_data WHERE  segnam = 'E1EDL24' OR segnam = 'E1EDL11'.
    IF idoc_data-segnam = 'E1EDL24'.
      lv_matnr = idoc_data-sdata+6(18).

      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = lv_matnr
        IMPORTING
          output = lv_matnr.

    ENDIF.

    IF idoc_data-segnam = 'E1EDL11'.
      CLEAR:lv_sernr.
      lv_sernr = idoc_data-sdata+0(18).

      SELECT SINGLE invnr FROM equi
      INTO lv_invnr
      WHERE sernr =  lv_sernr
      AND   matnr =  lv_matnr.
      IF SY-SUBRC = 0.
      IDOC_DATA-SDATA+18(25) = lv_invnr.
      ENDIF.
    ENDIF.

    MODIFY idoc_data.
  ENDLOOP.

三.交货单IDOC出栈的时候,将自定义的结构增加进去

 增强点:EXIT_SAPLV56K_002

DATA: ls_edidd   LIKE idoc_data.
DATA: ls_append  TYPE zssd_likp_append2.
DATA: ls_likp    TYPE likp.
READ TABLE IDOC_DATA WITH KEY segnam = 'E1EDL20'.
IF sy-subrc EQ 0.
  READ TABLE IDOC_DATA WITH KEY segnam = 'ZE1EDT13'.
  IF sy-subrc NE 0.
    CLEAR:ls_edidd.
    ls_edidd-segnam = 'ZE1EDT13'.
    READ TABLE  DATA-TAB_LIKP INTO LS_LIKP INDEX 1.
    IF SY-SUBRC = 0.
    MOVE-CORRESPONDING LS_LIKP TO LS_APPEND.
    ls_edidd-sdata = LS_APPEND.
    ENDIF.

    APPEND ls_edidd TO IDOC_DATA.
  ENDIF.
ENDIF.


 四.交货单入栈的时候,修改LIKP,LIPS 及序列号主数据

 增强点:EXIT_SAPLV55K_012

           

DATA: ls_likp_append  TYPE zssd_likp_append.
DATA: ls_delivery_com TYPE komdlgn.
DATA: ls_idoc_data    TYPE edidd.
IF idoc_data IS NOT INITIAL  AND delivery_com  IS NOT INITIAL .
  LOOP AT delivery_com INTO ls_delivery_com.
    READ TABLE idoc_data INTO ls_idoc_data
    WITH KEY segnam = 'ZE1EDT13'.
    IF sy-subrc = 0.
      ls_likp_append = ls_idoc_data-sdata.
      MOVE-CORRESPONDING ls_likp_append TO ls_delivery_com.
    ENDIF.
    MODIFY delivery_com FROM ls_delivery_com.
  ENDLOOP.
ENDIF.

TYPES: BEGIN OF ty_serial,
         sernr TYPE gernr,
         serge TYPE serge,
         typbz TYPE typbz,
       END OF ty_serial.

DATA: lt_serial TYPE STANDARD TABLE OF ty_serial.
DATA: ls_serial TYPE ty_serial.

LOOP AT idoc_data INTO ls_idoc_data WHERE segnam = 'E1EDL11' OR segnam = 'ZE1EDL11'.
  IF ls_idoc_data-segnam = 'E1EDL11'.
    ls_serial-sernr = ls_idoc_data-sdata.
  ENDIF.

  IF ls_idoc_data-segnam = 'ZE1EDL11'.
    ls_serial-serge = ls_idoc_data-sdata+0(30).
    ls_serial-typbz = ls_idoc_data-sdata+30(25).
    APPEND ls_serial TO lt_serial.
    CLEAR:ls_serial.
  ENDIF.
ENDLOOP.


IF lt_serial IS NOT INITIAL .
  EXPORT lt_serial TO MEMORY ID 'ZSERIAL'.
ENDIF.

增强点:EXIT_SAPLIE01_005

TYPES: BEGIN OF ty_serial,
         sernr TYPE gernr,
         serge TYPE serge,
         typbz TYPE typbz,
       END OF ty_serial.

DATA: lt_serial TYPE STANDARD TABLE OF ty_serial.
DATA: ls_serial TYPE ty_serial.

IF S5_IEQUI IS NOT INITIAL.

IMPORT lt_serial FROM MEMORY ID 'ZSERIAL'.

 READ TABLE lt_serial INTO LS_SERIAL
 WITH KEY   SERNR = S5_IEQUI-SERNR.
 IF SY-SUBRC = 0.
 S5_ISTRU_EQ-SERGE = LS_SERIAL-SERGE.
 S5_ISTRU_EQ-typbz = LS_SERIAL-typbz.
 S5_ISTRU_EQ_U-SERGE = 'X'.
 S5_ISTRU_EQ_U-typbz = 'X'.
 ENDIF.

ENDIF.

  这里序列号的值虽然传入,但是序列号默认不激活设备视图。需要进行如下设置

 五.交货单IDOC 修改自定义字段

  增强点:EXIT_SAPLV55K_002

DATA: LS_APPEND TYPE ZSSD_LIKP_APPEND5.
DATA: LS_EDIDD  TYPE EDIDD.
READ TABLE IDOC_DATA INTO LS_EDIDD WITH KEY SEGNAM = 'ZE1EDT13'.
IF SY-SUBRC = 0.
  LS_APPEND = LS_EDIDD-SDATA.
  IF LS_APPEND IS NOT INITIAL .
    DELIVERY_HEAD-ZZ_ETDPORT    = LS_APPEND-ZZ_ETDPORT   .
    DELIVERY_HEAD-ZZ_ATDPORT    = LS_APPEND-ZZ_ATDPORT   .
    DELIVERY_HEAD-ZZ_ETAPORT    = LS_APPEND-ZZ_ETAPORT   .
    DELIVERY_HEAD-ZZ_ATAPORT    = LS_APPEND-ZZ_ATAPORT   .
    DELIVERY_HEAD-ZZ_DISPORT    = LS_APPEND-ZZ_DISPORT   .
    DELIVERY_HEAD-ZZ_EMPRET     = LS_APPEND-ZZ_EMPRET    .
  ENDIF.
ENDIF.

 我这里是增强的LIKP.所以对应的要在VBKOK中增加自定义结构

 

 增强:LE_SHP_DELIVERY_UPDATE

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值