on 08-03-2007 1:20 PM
how to fill the data in zsegment of idoc through user exit
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
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
try in ABAP forum.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
84 | |
10 | |
10 | |
10 | |
7 | |
6 | |
6 | |
5 | |
4 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.