一.如何增强自定义结构
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