cancel
Showing results for 
Search instead for 
Did you mean: 

idoc codes

Former Member
0 Kudos

how to fill the data in zsegment of idoc through user exit

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

Kunal,

You need to loop into the Idoc data. Check for z-segment. Move data to your zsegement and then append data. Sample code is as follows...Let me know if you need more details...Or send me your email id..will mail you sample code....

*----- Loop über IDOC-Segmente -


*

LOOP AT t_idoc_data .

**----- Moves abhängig vom Segmenttyp -


*

CASE t_idoc_data-segnam.

*----- ... IDoc: Document header taxes -


*

WHEN gc_segnam_e1edk04.

APPEND t_idoc_data TO gt_tmp.

*----- ... IDoc: Document Item General Data -


*

WHEN gc_segnam_e1edp01.

CLEAR : gv_e1edp01,

gv_e1edp02,

gv_e1edp04.

MOVE t_idoc_data-sdata TO gv_e1edp01.

APPEND t_idoc_data TO gt_tmp.

*----- ... IDoc: Document Item Reference Data -


*

WHEN gc_segnam_e1edp02.

MOVE t_idoc_data-sdata TO gv_e1edp02.

APPEND t_idoc_data TO gt_tmp.

*----- ... IDoc: Document Item Taxes -


*

WHEN gc_segnam_e1edp04.

MOVE t_idoc_data-sdata TO gv_e1edp04.

    • Find out new tax code from ekpo table at line item level

    • & Update line item tax code with new tax code.

MOVE gv_e1edp04-mwskz TO gv_mwskz.

SELECT SINGLE mwskz

FROM ekpo

INTO gv_e1edp04-mwskz

WHERE ebeln EQ gv_e1edp02-belnr

AND ebelp EQ gv_e1edp02-zeile.

MOVE : gv_e1edp04 TO t_idoc_data-sdata.

APPEND t_idoc_data TO gt_tmp.

      • Calculate new tax amount for line item

gv_mwsbt = gv_e1edp01-vprei * ( gv_e1edp04-msatz / 100 ).

      • Update header tax code with new tax code.

      • Check for header tax code & update it with line item tax code

LOOP AT t_idoc_data WHERE segnam EQ gc_segnam_e1edk04.

MOVE t_idoc_data-sdata TO gv_e1edk04.

IF gv_e1edk04-mwskz EQ gv_mwskz.

gv_e1edk04-mwskz = gv_e1edp04-mwskz.

READ TABLE gt_tmp INTO gw_temp WITH

KEY segnam = gc_segnam_e1edk04

sdata+0(3) = gv_mwskz.

      • Begin of change E20K901453

      • Record found with tax code, update record with new

      • tax code / tax amount

IF sy-subrc EQ 0.

MOVE: gv_mwsbt TO gv_e1edk04-mwsbt,

gv_e1edk04 TO gw_temp-sdata.

MODIFY gt_tmp FROM gw_temp INDEX sy-tabix

TRANSPORTING sdata

.

ELSE.

gv_e1edk04-msatz = gv_e1edp04-msatz.

CLEAR : gw_temp1.

READ TABLE gt_tmp INTO gw_temp1 WITH

KEY segnam = gc_segnam_e1edk04

sdata+0(3) = gv_e1edk04-mwskz.

      • if tax code record already exist in header then update with tax sum

IF sy-subrc EQ 0.

CLEAR : gv_e1edk04.

MOVE : gw_temp1-sdata TO gv_e1edk04.

gv_e1edk04-mwsbt = gv_e1edk04-mwsbt + gv_mwsbt.

MOVE gv_e1edk04 TO gw_temp-sdata.

      • Update sum of tax amount

MODIFY gt_tmp FROM gw_temp INDEX sy-tabix

TRANSPORTING sdata.

ELSE.

      • Else append new header tax segment with tax amount.

gv_e1edk04-mwsbt = gv_mwsbt.

MOVE gv_e1edk04 TO gw_temp-sdata.

APPEND gw_temp TO gt_tmp.

ENDIF. "IF sy-subrc EQ 0.

      • End of change E20K901453

ENDIF. "IF sy-subrc EQ 0.

ENDIF. "IF gv_e1edk04-mwskz EQ gv_mwskz

ENDLOOP. "LOOP AT t_idoc_data WHERE segnam EQ

      • If any other segment add as it is ..

WHEN OTHERS.

APPEND t_idoc_data TO gt_tmp.

ENDCASE. "CASE t_idoc_data-segnam.

ENDLOOP. "LOOP AT i_idoc_data.

      • Delete old data..

REFRESH : t_idoc_data.

      • Replace old data with new data with new tax codes

t_idoc_data[] = gt_tmp[].

//Nilesh

Former Member
0 Kudos

try in ABAP forum.