2009 Apr 13 6:42 AM
hi Gurus...
i have a small issue in my report where
my select is working good and satisfying the screen condition and according fetches values
but inside the loop , i have used a read stmt to check sy-subrc NE 0 and gets appended to my itable ,
but thing is that , when i have a conditio which doesnt satisfy the sel. screen
the field that is inside the read stmt ...tat column value alone returns in the ALV , i have used the clear but than its showin in the o/p.
wat ever field i use inside the read get shown in the o/p thou the cond is not satisfied, where to clear
PLZ HELP
i have given my code..........................
LOOP AT it_pos INTO wa_pos .
READ TABLE it_kna1 INTO wa_kna1 WITH KEY kunnr = wa_pos-konto .
IF sy-subrc = 0.
wa_final-name1 = wa_kna1-name1.
wa_final-budat = wa_pos-budat.
READ TABLE it_t005u INTO wa_t005u WITH KEY bland = wa_kna1-regio.
IF sy-subrc = 0.
wa_final-bezei = wa_t005u-bezei.
ENDIF.
ENDIF.
*read table it_vbrp into wa_vbrp with key vbeln = wa_vbeln.*
*if sy-subrc ne 0.*
*wa_final-xblnr = wa_pos-xblnr.
*
*append wa_final to it_final.
*
*endif.
*
LOOP AT it_vbrp INTO wa_vbrp WHERE vbeln = wa_vbeln .
READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln.
IF sy-subrc = 0.
wa_final-knumv = wa_vbrk-knumv.
ENDIF.
wa_final-arktx = wa_vbrp-arktx.
wa_final-fkimg = wa_vbrp-fkimg.
wa_final-sgtxt = wa_pos-sgtxt.
LOOP AT it_konv INTO wa_konv WHERE knumv = wa_vbrk-knumv AND kposn = wa_vbrp-posnr.
wa_pos-dmshb = ( wa_konv-kwert ) - ( ( wa_konv-kwert * ra_data ) / 100 ).
wa_final-dmbtr = wa_pos-dmshb.
APPEND wa_final TO it_final.
ENDLOOP.
ENDLOOP.
CLEAR: wa_kna1, wa_t005u,wa_vbrk, wa_vbrp, wa_konv, wa_final, wa_pos.
ENDLOOP.Edited by: Matt on Apr 13, 2009 8:02 AM Please wrap code in tags. See how much easier it is to read!
Edited by: Matt on Apr 13, 2009 8:03 AM - corrected indenting
hi Gurus...
i have a small issue in my report where
my select is working good and satisfying the screen condition and according fetches values
but inside the loop , i have used a read stmt to check sy-subrc NE 0 and gets appended to my itable ,
but thing is that , when i have a conditio which doesnt satisfy the sel. screen
the field that is inside the read stmt ...tat column value alone returns in the ALV , i have used the clear but than its showin in the o/p.
wat ever field i use inside the read get shown in the o/p thou the cond is not satisfied, where to clear
PLZ HELP
i have given my code..........................
LOOP AT it_pos INTO wa_pos .
READ TABLE it_kna1 INTO wa_kna1 WITH KEY kunnr = wa_pos-konto .
IF sy-subrc = 0.
wa_final-name1 = wa_kna1-name1.
wa_final-budat = wa_pos-budat.
READ TABLE it_t005u INTO wa_t005u WITH KEY bland = wa_kna1-regio.
IF sy-subrc = 0.
wa_final-bezei = wa_t005u-bezei.
ENDIF.
ENDIF.
*read table it_vbrp into wa_vbrp with key vbeln = wa_vbeln.*
*if sy-subrc ne 0.*
*wa_final-xblnr = wa_pos-xblnr.
*
*append wa_final to it_final.
*
*endif.
*
LOOP AT it_vbrp INTO wa_vbrp WHERE vbeln = wa_vbeln .
READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln.
IF sy-subrc = 0.
wa_final-knumv = wa_vbrk-knumv.
ENDIF.
wa_final-arktx = wa_vbrp-arktx.
wa_final-fkimg = wa_vbrp-fkimg.
wa_final-sgtxt = wa_pos-sgtxt.
LOOP AT it_konv INTO wa_konv WHERE knumv = wa_vbrk-knumv AND kposn = wa_vbrp-posnr.
wa_pos-dmshb = ( wa_konv-kwert ) - ( ( wa_konv-kwert * ra_data ) / 100 ).
wa_final-dmbtr = wa_pos-dmshb.
APPEND wa_final TO it_final.
ENDLOOP.
ENDLOOP.
CLEAR: wa_kna1, wa_t005u,wa_vbrk, wa_vbrp, wa_konv, wa_final, wa_pos.
ENDLOOP.Edited by: Matt on Apr 13, 2009 8:02 AM Please wrap code in tags. See how much easier it is to read!
Edited by: Matt on Apr 13, 2009 8:03 AM - corrected indenting
2009 Apr 13 6:53 AM
Dear ,
Always clear the work area just before the endif of ur sy-subrc check . if you dont need that value for further processing .
read table it_vbrp into wa_vbrp with key vbeln = wa_vbeln.
If sy-subrc NE 0.
wa_final-xblnr = wa_pos-xblnr.
append wa_final to it_final.
clear wa_final , wa_pos
Endif.
Thanks
-Ankit
2009 Apr 13 7:01 AM
thank you ankit ...but still the same problem ....and not getting cleared
2009 Apr 13 7:06 AM
Go through your program in debug and see what happens to the variables.
matt
2009 Apr 13 7:07 AM
Hi,
A Basic thumb rule is we need to use clear statement after every append statement
Eg:
Append wa to itab.
clear wa.
and it is advisable to clear before read statement
clear wa.
Read itab into wa index sy-tabix.
{
Your condition can be used after read statement
}
Thanks
Santhiya B
2009 Apr 13 7:10 AM
Hi,
Is the internal table get appended with no value in it or with the previous value..
2009 Apr 13 6:59 AM
Hi,
LOOP AT it_pos INTO wa_pos .
clear wa_kna1.
READ TABLE it_kna1 INTO wa_kna1 WITH KEY kunnr = wa_pos-konto .
IF sy-subrc = 0.
wa_final-name1 = wa_kna1-name1.
wa_final-budat = wa_pos-budat.
clear wa_t005u.
read table it_t005u into wa_t005u with key bland = wa_kna1-regio.
If sy-subrc = 0.
wa_final-bezei = wa_t005u-bezei.
Endif.
Endif.
clear wa_vbrp.
read table it_vbrp into wa_vbrp with key vbeln = wa_vbeln.
If sy-subrc NE 0.
wa_final-xblnr = wa_pos-xblnr.
append wa_final to it_final.
Endif.
Loop at it_vbrp into wa_vbrp where vbeln = wa_vbeln .
clear: wa_final-knumv, wa_final-arktx, wa_Final-fkimg , wa_final-sgtxt, wa_final-dmbtr.
read table it_vbrk into wa_vbrk with key vbeln = wa_vbrp-vbeln.
If sy-subrc = 0.
wa_final-knumv = wa_vbrk-knumv.
Endif.
wa_final-arktx = wa_vbrp-arktx.
wa_Final-fkimg = wa_vbrp-fkimg.
wa_final-sgtxt = wa_pos-sgtxt.
Loop at it_konv into wa_konv where knumv = wa_vbrk-knumv and kposn = wa_vbrp-posnr.
wa_pos-dmshb = ( wa_konv-kwert ) - ( ( wa_konv-kwert * ra_data ) / 100 ).
wa_final-dmbtr = wa_pos-dmshb.
Append wa_final to it_final.
clear wa_konv.
Endloop.
clear wa_vbrp.
Endloop.
clear: wa_kna1, wa_t005u,wa_vbrk, wa_vbrp, wa_konv, wa_final, wa_pos.
ENDLOOP.
2009 Apr 13 7:11 AM
DEV IAM HAVING STILL THE SAME ISSUE THOU TRIED WITH YOUR CHANGED
2009 Apr 13 7:15 AM
c the problem is that i suppose you have not CLEARED the fields .
debug the code and check the work area after each read statement i think you will get the solution of your question .
2009 Apr 13 7:21 AM
While debugging i noticed that
since the sy-subrc NE 0 is been checked and since that condition is getting satisfied and has values in it , the field inside the read stmt returns value in the final output....but the previous values are getting cleared
2009 Apr 13 7:22 AM
Hi,
I guess the problem could be here...
LOOP AT it_konv INTO wa_konv WHERE knumv = wa_vbrk-knumv AND kposn = wa_vbrp-posnr.
wa_pos-dmshb = ( wa_konv-kwert ) - ( ( wa_konv-kwert * ra_data ) / 100 ).
wa_final-dmbtr = wa_pos-dmshb.
APPEND wa_final TO it_final.
ENDLOOP.I think it might have to be like - calculate with in loop and store in a variable..
MOVE and append after the LOOP.
Edited by: Guru Ram on Apr 13, 2009 8:35 AM
2009 Apr 13 7:08 AM
LOOP AT it_pos INTO wa_pos . -
>>> main loop
READ TABLE it_kna1 INTO wa_kna1 WITH KEY kunnr = wa_pos-konto . -->> 1st read
IF sy-subrc = 0.
wa_final-name1 = wa_kna1-name1.
wa_final-budat = wa_pos-budat.
read table it_t005u into wa_t005u with key bland = wa_kna1-regio.
If sy-subrc = 0.
wa_final-bezei = wa_t005u-bezei.
Endif.
Endif.
read table it_vbrp into wa_vbrp with key vbeln = wa_vbeln. --->> 2nd read
If sy-subrc NE 0.
wa_final-xblnr = wa_pos-xblnr.
append wa_final to it_final.
Endif.
Loop at it_vbrp into wa_vbrp where vbeln = wa_vbeln . -->> 2nd loop
read table it_vbrk into wa_vbrk with key vbeln = wa_vbrp-vbeln.
If sy-subrc = 0.
wa_final-knumv = wa_vbrk-knumv.
Endif.
wa_final-arktx = wa_vbrp-arktx.
wa_Final-fkimg = wa_vbrp-fkimg.
wa_final-sgtxt = wa_pos-sgtxt.
Loop at it_konv into wa_konv where knumv = wa_vbrk-knumv and kposn = wa_vbrp-posnr.
wa_pos-dmshb = ( wa_konv-kwert ) - ( ( wa_konv-kwert * ra_data ) / 100 ).
wa_final-dmbtr = wa_pos-dmshb.
Append wa_final to it_final.
Endloop.
Endloop.
clear: wa_kna1, wa_t005u,wa_vbrk, wa_vbrp, wa_konv, wa_final, wa_pos.
ENDLOOP.
-
main loop satisfied ....
1st read not satisfied..
2nd read satisfied the if condition.
2nd loop not satisfied.
then the result is as u said...only one colum will get appended and will be shown in the O/P.
2009 Apr 13 7:22 AM
Hi,
Actually your code s not pretty clear,but as you said
but thing is that , when i have a conditio which doesnt satisfy the sel. screen
the field that is inside the read stmt ...tat column value alone returns in the ALV , i have used the clear but than its showin in the o/p.is happening becuase you are first moving value into Work Area-->Appending it and then at the end clearing it,for eg. in ur code
READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln.
IF sy-subrc = 0.
wa_final-knumv = wa_vbrk-knumv.
ENDIF.
but if ur conditions are not satisfied then you shud clear this field befor appending..
READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln.
IF sy-subrc = 0.
wa_final-knumv = wa_vbrk-knumv.
*ELSE.*
*CLEAR wa_final-knumv .*
ENDIF.
....so just use the approach if conditions successful--->populate WA_FINAL-fld
else CLEAR WA_FINAL-fld>Append->Clear WA_FINAL
Regards,
Neha
Edited by: Neha Shukla on Apr 13, 2009 11:53 AM
2009 Apr 13 7:34 AM
What u have to do is, jus write as below...
if sy-subrc NE 0.
if wa_final is not initial. -
>>> New condition
wa_final-xblnr = wa_pos-xblnr.
append wa_final to i_final
endif.
endif.
This will solve ur problem
Regards,
Veeranji Reddy P.
2009 Apr 13 7:47 AM
try the below code
add the bold letters clear statement,now i will work
{
LOOP AT it_pos INTO wa_pos .
clear wa_final. "it needs to be cleared here because in different places u r trying to append and this is the starting place,so it ideal to clear here.
clear wa_kna1.
READ TABLE it_kna1 INTO wa_kna1 WITH KEY kunnr = wa_pos-konto .
IF sy-subrc = 0.
wa_final-name1 = wa_kna1-name1.
wa_final-budat = wa_pos-budat.
clear wa_t005u
READ TABLE it_t005u INTO wa_t005u WITH KEY bland = wa_kna1-regio.
IF sy-subrc = 0.
wa_final-bezei = wa_t005u-bezei.
ENDIF.
ENDIF.
read table it_vbrp into wa_vbrp with key vbeln = wa_vbeln.
if sy-subrc ne 0.
*wa_final-xblnr = wa_pos-xblnr.
*
*append wa_final to it_final.
*
*endif.
*
LOOP AT it_vbrp INTO wa_vbrp WHERE vbeln = wa_vbeln .
clear wa_vbrk.
READ TABLE it_vbrk INTO wa_vbrk WITH KEY vbeln = wa_vbrp-vbeln.
IF sy-subrc = 0.
wa_final-knumv = wa_vbrk-knumv.
ENDIF.
wa_final-arktx = wa_vbrp-arktx.
wa_final-fkimg = wa_vbrp-fkimg.
wa_final-sgtxt = wa_pos-sgtxt.
LOOP AT it_konv INTO wa_konv WHERE knumv = wa_vbrk-knumv AND kposn = wa_vbrp-posnr.
wa_pos-dmshb = ( wa_konv-kwert ) - ( ( wa_konv-kwert * ra_data ) / 100 ).
wa_final-dmbtr = wa_pos-dmshb.
APPEND wa_final TO it_final.
clear wa_final.
ENDLOOP.
ENDLOOP.
CLEAR: wa_kna1, wa_t005u,wa_vbrk, wa_vbrp, wa_konv, wa_final, wa_pos.
ENDLOOP.
}
2009 Apr 13 7:52 AM
thankx all ....i solved the problem by myself.................
the issue was that ...before getting inside the loop i jus checked the condition as
if it_kna1[] not initial...
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |