2006 Mar 25 5:53 PM
Hi people:
I have tree selects and when I insert the data in my internal table t_regup the program insert the last line of payr in all line in the internal table and the selection is from one to many in payr. This is my code:
thanks for the help.
SELECT empfb xblnr bldat dmbtr sknto qbshh zlsch laufd
laufi zbukr vblnr lifnr sknto belnr kunnr blart
bukrs shkzg
FROM regup INTO CORRESPONDING FIELDS OF TABLE t_regup
WHERE laufd EQ p_laufd
AND laufi EQ p_laufi
AND bukrs EQ p_absbu
AND xvorl <> 'X'.
LOOP AT t_regup INTO wa_regup.
SELECT SINGLE znme1 zbnkn laufd laufi hbkid waers
zaldt hktid
lifnr zland rzawe uzawe absbu
FROM reguh INTO CORRESPONDING FIELDS OF wa_regup
WHERE laufd = wa_regup-laufd
AND laufi = wa_regup-laufi
AND absbu = p_absbu
AND vblnr = wa_regup-vblnr.
IF wa_regup-rzawe = '1'.
SELECT laufd laufi zbukr hbkid waers zaldt hktid
VBLNR chect zland rzawe uzawe voidr
FROM payr INTO CORRESPONDING FIELDS OF wa_regup
WHERE laufd EQ wa_regup-laufd
AND laufi EQ wa_regup-laufi
AND zbukr EQ wa_regup-zbukr.
ENDSELECT.
MODIFY t_regup FROM wa_regup.
endloop.
2006 Mar 25 6:33 PM
Rob,
Is a good idea, but you can show me a little example of how can I modify the wa_regup from others works areas.
I need to create a loop to for this modify part or in the same select of Payr I can do that?
Much Thanks!!
Hi people:
I have tree selects and when I insert the data in my internal table t_regup the program insert the last line of payr in all line in the internal table and the selection is from one to many in payr. This is my code:
thanks for the help.
SELECT empfb xblnr bldat dmbtr sknto qbshh zlsch laufd
laufi zbukr vblnr lifnr sknto belnr kunnr blart
bukrs shkzg
FROM regup INTO CORRESPONDING FIELDS OF TABLE t_regup
WHERE laufd EQ p_laufd
AND laufi EQ p_laufi
AND bukrs EQ p_absbu
AND xvorl <> 'X'.
LOOP AT t_regup INTO wa_regup.
SELECT SINGLE znme1 zbnkn laufd laufi hbkid waers
zaldt hktid
lifnr zland rzawe uzawe absbu
FROM reguh INTO CORRESPONDING FIELDS OF wa_regup
WHERE laufd = wa_regup-laufd
AND laufi = wa_regup-laufi
AND absbu = p_absbu
AND vblnr = wa_regup-vblnr.
IF wa_regup-rzawe = '1'.
SELECT laufd laufi zbukr hbkid waers zaldt hktid
VBLNR chect zland rzawe uzawe voidr
FROM payr INTO CORRESPONDING FIELDS OF wa_regup
WHERE laufd EQ wa_regup-laufd
AND laufi EQ wa_regup-laufi
AND zbukr EQ wa_regup-zbukr.
ENDSELECT.
MODIFY t_regup FROM wa_regup.
endloop.
2006 Mar 25 6:03 PM
Try:
LOOP AT t_regup INTO wa_regup.
SELECT SINGLE znme1 zbnkn laufd laufi hbkid waers
zaldt hktid
lifnr zland rzawe uzawe absbu
FROM reguh INTO CORRESPONDING FIELDS OF wa_regup
WHERE laufd = wa_regup-laufd
AND laufi = wa_regup-laufi
AND absbu = p_absbu
AND vblnr = wa_regup-vblnr.
IF wa_regup-rzawe = '1'.
SELECT laufd laufi zbukr hbkid waers zaldt hktid
VBLNR chect zland rzawe uzawe voidr
FROM payr INTO CORRESPONDING FIELDS OF wa_regup
WHERE laufd EQ wa_regup-laufd
AND laufi EQ wa_regup-laufi
AND zbukr EQ wa_regup-zbukr.
<b> MODIFY t_regup FROM wa_regup.</b>
ENDSELECT.
ENDLOOP.
2006 Mar 25 6:12 PM
Rob,
I try that but when I debug the program the modify insert the data that I take out of payr in the first line only and if I have a field like CHECT of payr when modify the table the CHECT is modified only in the first line and the anotherone stay clear.
2006 Mar 25 6:23 PM
Looping at the itab into wa_regup and then selecting into it will destroy the original contents of wa_regup.
I think that you should create a couple of other work areas like wa_regup and do the other selects into them instead of wa_regup. Then modify wa_regup from the other work areas. You may need further logic because you may want to some appending instead of modifying.
Rob
2006 Mar 25 6:33 PM
Rob,
Is a good idea, but you can show me a little example of how can I modify the wa_regup from others works areas.
I need to create a loop to for this modify part or in the same select of Payr I can do that?
Much Thanks!!
2006 Mar 26 5:30 AM
I was a bit surprised. The other selects didn't seem to write over the existing data. Try:
SELECT empfb xblnr bldat dmbtr sknto qbshh zlsch laufd
laufi zbukr vblnr lifnr sknto belnr kunnr blart
bukrs shkzg
FROM regup
INTO CORRESPONDING FIELDS OF TABLE t_regup
WHERE laufd EQ p_laufd
AND laufi EQ p_laufi
AND bukrs EQ p_absbu
AND xvorl <> 'X'.
LOOP AT t_regup INTO wa_regup.
SELECT SINGLE znme1 zbnkn laufd laufi hbkid waers zaldt hktid
lifnr zland rzawe uzawe absbu
FROM reguh
INTO CORRESPONDING FIELDS OF wa_regup
WHERE laufd = wa_regup-laufd
AND laufi = wa_regup-laufi
AND absbu = p_absbu
AND vblnr = wa_regup-vblnr.
IF wa_regup-rzawe = 'C'.
count = 1.
SELECT laufd laufi zbukr hbkid waers zaldt hktid
vblnr chect zland rzawe uzawe voidr
FROM payr
INTO CORRESPONDING FIELDS OF wa_regup
WHERE laufd EQ wa_regup-laufd
AND laufi EQ wa_regup-laufi
AND zbukr EQ wa_regup-zbukr.
if count = 1.
MODIFY t_regup FROM wa_regup.
else.
APPEND wa_regup TO t_regup.
endif.
count = count + 1.
ENDSELECT.
ENDIF.
ENDLOOP.
Rob
2006 Mar 26 7:54 PM
Actually, since you are looping at t_regup and then need to append it, you should declare a separate table (t_regup2) and when appending, append that one instead of t_regup. After the loop is complete:
APPEND LINES OF t_regup2 TO t_regup.Rob
2006 Mar 26 7:02 AM
HI Carlos,
I faced a similar problem..
change the code part of modify ..
use the INDEX addition ..
it worked for me.. give it a try..
ENDSELECT.
<b>MODIFY t_regup FROM wa_regup INDEX sy-tabix.</b> endloop.regards
satesh
| User | Count |
|---|---|
| 3 | |
| 2 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |