Skip to Content
0
Former Member
Oct 10, 2005 at 10:45 PM

ENHANCEMENT( IDOC_INPUT_ORDERS)

1038 Views

WHEN CREATING AN INBOUND IDOC I NEED TO POPULATE VALUES TO SOME OF THE SEGMENTS WHICH IS ALREADY CREATED.

FOR EX.

E1EDKA1 CONTAINS THE PARTNER FN. AG AND WE.

SO I NEED TO MODIFY THE VALUES OF SOLD-TO PARTY AND SHIP-TO PARTY OF FIELD (E1EDKA1-PARTN ).THEREFORE I NEED TO PASS MY VALUES TO THESE SEGMENTS .HOW CAN I DO IT.

THE OPTIONS WHICH I HAVE TRIED IS :

1) CREATED A USER-EXIT IN CMOD.

2) ENHANCEMENT ASSINGMENT : VEDA0001

3) I HAVE WRITTEN MY CODING IN ALL THOSE 12 EXITS BUT IN THE INTERNAL TABLE ALL THE VALUES GET MODIFIED BUT WHEN IDOC IS CREATED NO VALUES R FOUND FOR THIS PARTNER FN.

HELPFULL ANSWERS WILL BE REWARDED WITH POINTS......

PROGRAM:

TABLES: edidd, " Data record(IDoc).

edidc,

e1edka1, " Document Header Partnerinformation.

e1edk14,

zhvt_sapedipart. " SAP EDI Partner

**----


**

  • TABLES DECLARATION

**

**----


DATA: v_zcustgsid1(13),

v_zcustgsid2(13),

v_zcustloc(13),

v_zsoldto(10),

v_zshipto(10),

v_zsalorg(4),

v_zdistchan(2),

v_zdivision(2),

v_tabix TYPE i,

v_flag,

v_segnum TYPE i.

v_zcustgsid1 = didoc_cntrl-rcvlad.

v_zcustgsid2 = didoc_cntrl-sndlad.

READ TABLE didoc_data INTO edidd WITH KEY

segnam = 'E1EDKA1' sdata+0(2) = 'WE'.

e1edka1 = edidd-sdata.

v_zcustloc = e1edka1-ilnnr.

SELECT zsoldto

zshipto

zsalorg

zdistchan

zdivision

FROM zhvt_sapedipart UP TO 1 ROWS

INTO (v_zsoldto,v_zshipto,v_zsalorg,v_zdistchan,

v_zdivision)

WHERE zcustgsid1 = v_zcustgsid1

AND zcustgsid2 = v_zcustgsid2

AND zcustloc = v_zcustloc

AND z856ind = 'X'.

ENDSELECT.

IF sy-subrc EQ 0.

LOOP AT didoc_data INTO edidd WHERE segnam = 'E1EDKA1'

AND ( sdata+0(2) = 'AG'

OR sdata+0(2) = 'WE' ).

v_tabix = sy-tabix.

*assigning the segment 'e1edka1' to the workarea.

e1edka1 = edidd-sdata.

IF e1edka1-parvw = 'AG'.

e1edka1-partn = v_zsoldto.

ELSE.

e1edka1-partn = v_zshipto.

ENDIF.

*moving the values to the structure.

MOVE e1edka1 TO edidd-sdata.

*

**modify the internal table to populate the value.

MODIFY didoc_data FROM edidd INDEX v_tabix

TRANSPORTING sdata.

*clearing the structures.

CLEAR : e1edka1,

edidd.

ENDLOOP.

ELSE.

EXIT.

ENDIF.