2007 Mar 23 6:10 AM
hi friends,
i have a small issue in my report.
this is my code.
loop at t_data.
if sy-subrc eq 0.
t_final-field1 = t_data-field1.
....
....
select single...into l_field8..
if sy-subrc eq 0.
t_final-field8 = l_field8
else.
continue.
...
...
append t_final.
endloop.
in the above code, for l_field8, if sy-subrc ne 0.
i should not append that line.
right now i'm using 'continue' - but it is not working.
could you plz look into this and help me out.
Thanks,
Praveen
2007 Mar 23 6:29 AM
Hi..
it should work.. ur code is correct..
i hope u have not used any performs in between the loop...( i mean Continue in perform )
check whether ur sy-subrc is becoming equal to zero ...
paste ur actual code, here..
reward if it helps u...,
sai ramesh
hi friends,
i have a small issue in my report.
this is my code.
loop at t_data.
if sy-subrc eq 0.
t_final-field1 = t_data-field1.
....
....
select single...into l_field8..
if sy-subrc eq 0.
t_final-field8 = l_field8
else.
continue.
...
...
append t_final.
endloop.
in the above code, for l_field8, if sy-subrc ne 0.
i should not append that line.
right now i'm using 'continue' - but it is not working.
could you plz look into this and help me out.
Thanks,
Praveen
2007 Mar 23 6:12 AM
hi
with in a loop of an internal table
sy-subrc will not be set...
2007 Mar 23 6:14 AM
Hi,
try like this.
loop at t_data.
if sy-subrc eq 0.
t_final-field1 = t_data-field1.
....
....
select single...into l_field8..
if sy-subrc eq 0.
t_final-field8 = l_field8.
...
...
append t_final.
else.
continue.
endloop.
regards,
bharat.
2007 Mar 23 6:26 AM
Hi Bharat,
i have tried this - its not working
Cpuld you plz suggest me som other solution
Thanks,
Praveen
2007 Mar 23 6:15 AM
Hi,
when you check with if sy-Subrc = 0., then if the record is there then only value comes into that field t_final-field8 from l_field8.
so what's the need to check for Sy-Subrc <> 0.
not required.
If no record found then only space will come into that record.
You want that complete record should not be appended into internal table?
regards,
Anji
2007 Mar 23 6:20 AM
yes -u r right
i dont want to append that record at all
how can i achieve this please suggest
Thanks
2007 Mar 23 6:29 AM
Hi..
it should work.. ur code is correct..
i hope u have not used any performs in between the loop...( i mean Continue in perform )
check whether ur sy-subrc is becoming equal to zero ...
paste ur actual code, here..
reward if it helps u...,
sai ramesh
2007 Mar 23 6:33 AM
this is my code :
LOOP AT T_PBIM.
IF SY-SUBRC EQ 0.
T_FOR_DISP-MATNR = T_PBIM-MATNR.
T_FOR_DISP-WERKS = T_PBIM-WERKS.
T_FOR_DISP-BEDAE = T_PBIM-BEDAE.
SELECT
SINGLE VKORG
INTO G_VKORG
FROM TVKO
WHERE BUKRS = T001K-BUKRS.
SELECT SINGLE VMSTA
INTO G_VMSTA
FROM MVKE
WHERE MATNR = T_PBIM-MATNR AND
VKORG = G_VKORG.
SELECT SINGLE VTWEG
INTO G_VTWEG
FROM MVKE
WHERE MATNR = T_PBIM-MATNR AND
VKORG = G_VKORG.
IF SY-SUBRC = 0.
T_FOR_DISP-VMSTA = G_VMSTA.
T_FOR_DISP-VTWEG = G_VTWEG.
ENDIF.
APPEND T_FOR_DISP.
ENDLOOP.
ELSE.
CONTINUE.
CLEAR : T_FOR_DISP.
ENDIF.
ENDLOOP.
plz look into this and suggest me.
Thanks
Praveen
2007 Mar 23 6:55 AM
Hi...
The <b>continue</b> functionality depends on this sy-subrc value..
SELECT SINGLE VMSTA
INTO G_VMSTA
FROM MVKE
WHERE MATNR = T_PBIM-MATNR AND
VKORG = G_VKORG.
IF SY-SUBRC EQ 0.
when this VMSTA is not retrieved then only the record will not get appended.... the probelm is with ur coding...
the CONTINUE depends on the sy-subrc returned by the select single VMSTA...
Here if this sy-subrc eq 0. then the reocrd will be appended...
i think somewhere u have forgot one endif ...
i hope u understood the mistake..
tell me what is ur exact requirement..
on which condition u need to continue.. is that for all selects or onli for certain selects....!
regards,
sai ramesh
2007 Mar 23 7:30 AM
Hi Sai,
Thanks for that.
my exact requirement is that.
if i dont have value in g_vmsta, i need to come out and should not append that record at all.
So, as said by you right now i have done that and its working fine..
Thanks a lot,
Praveen
2007 Mar 23 6:35 AM
Hi,
can u just give me your code little clear.
regards,
bharat.
2007 Mar 23 6:46 AM
FORM SUB_GET_DETAILS.
G_LANGU = SY-LANGU.
SELECT MATNR
WERKS
BEDAE
VERSB
PBDNR
LOEVR
FROM PBIM
INTO TABLE T_PBIM
WHERE MATNR IN S_MATNR AND
WERKS IN S_WERKS AND
VERSB IN S_VERSB AND
PBDNR IN S_PBDNR AND
LOEVR EQ SPACE .
CLEAR T_PBIM.
SELECT MATNR
MAKTX
MSTAV
FROM MARAV
INTO TABLE T_MARAV
FOR ALL ENTRIES IN T_PBIM
WHERE MATNR EQ T_PBIM-MATNR AND
MSTAV IN S_MSTAV AND
SPRAS EQ G_LANGU.
CLEAR T_MARAV.
LOOP AT T_PBIM.
CLEAR : G_VKORG,
G_VMSTA,
G_VTWEG.
IF SY-SUBRC EQ 0.
T_FOR_DISP-MATNR = T_PBIM-MATNR.
T_FOR_DISP-WERKS = T_PBIM-WERKS.
T_FOR_DISP-BEDAE = T_PBIM-BEDAE.
T_FOR_DISP-VERSB = T_PBIM-VERSB.
T_FOR_DISP-PBDNR = T_PBIM-PBDNR.
T_FOR_DISP-LOEVR = T_PBIM-LOEVR.
ENDIF.
READ TABLE T_MARAV
WITH KEY MATNR = T_PBIM-MATNR.
IF SY-SUBRC EQ 0.
T_FOR_DISP-MAKTX = T_MARAV-MAKTX.
T_FOR_DISP-MSTAV = T_MARAV-MSTAV.
ENDIF.
CLEAR G_VKORG.
SELECT
SINGLE *
FROM T001K
WHERE
BWKEY = T_PBIM-WERKS.
IF SY-SUBRC = 0.
SELECT
SINGLE VKORG
INTO G_VKORG
FROM TVKO
WHERE BUKRS = T001K-BUKRS.
IF SY-SUBRC = 0.
T_FOR_DISP-VKORG = G_VKORG.
ENDIF.
CLEAR G_VKORG.
ENDIF.
SELECT SINGLE VMSTA
INTO G_VMSTA
FROM MVKE
WHERE MATNR = T_PBIM-MATNR AND
VKORG = G_VKORG.
IF SY-SUBRC EQ 0.
SELECT SINGLE VTWEG
INTO G_VTWEG
FROM MVKE
WHERE MATNR = T_PBIM-MATNR AND
VKORG = G_VKORG.
IF SY-SUBRC NE 0.
IF SY-SUBRC = 0.
T_FOR_DISP-VMSTA = G_VMSTA.
T_FOR_DISP-VTWEG = G_VTWEG.
ENDIF.
start 16.03
T_FOR_DISP-DATVE = SY-DATUM - 14.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = T_FOR_DISP-DATVE
IMPORTING
OUTPUT = T_FOR_DISP-DATVE.
T_FOR_DISP-DATBE = SY-DATUM + 550.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = T_FOR_DISP-DATBE
IMPORTING
OUTPUT = T_FOR_DISP-DATBE.
T_FOR_DISP-ENTLU = 'W'.
end 16.03
APPEND T_FOR_DISP.
ENDLOOP.
ELSE.
CONTINUE.
CLEAR : T_FOR_DISP,
T_PBIM ,
T_MARAV .
ENDIF.
ENDLOOP.
DELETE T_FOR_DISP WHERE NOT VMSTA IN S_VMSTA.
SORT T_FOR_DISP BY MATNR.
DELETE ADJACENT DUPLICATES FROM T_FOR_DISP COMPARING ALL FIELDS.
CLEAR T_FOR_DISP.
ENDFORM. " SUB_GET_DETAILS
this is my code.
Plz look into this and suggest me..
Thanks for your time.
Praveen
2007 Mar 23 8:25 AM
HI ..
You do this way also :
select single...into l_field8..
if l_field8 not initial .
t_final-field8 = l_field8
else.
continue.
endif .
...
append t_final.
endloop.
Thanks .
2007 Mar 23 8:26 AM
hi
with in a loop of an internal table
sy-subrc will not be set...
2007 Mar 23 8:28 AM
Do remember to close the thread ..
reward helpful answers,
sai ramesh
2007 Mar 23 8:51 AM
Hi praveen,
Please try with this code
FORM SUB_GET_DETAILS.
G_LANGU = SY-LANGU.
SELECT MATNR
WERKS
BEDAE
VERSB
PBDNR
LOEVR
FROM PBIM
INTO TABLE T_PBIM
WHERE MATNR IN S_MATNR AND
WERKS IN S_WERKS AND
VERSB IN S_VERSB AND
PBDNR IN S_PBDNR AND
LOEVR EQ SPACE .
CLEAR T_PBIM.
IF NOT T_PBIM[] IS INITIAL.
SELECT MATNR
MAKTX
MSTAV
FROM MARAV
INTO TABLE T_MARAV
FOR ALL ENTRIES IN T_PBIM
WHERE MATNR EQ T_PBIM-MATNR AND
MSTAV IN S_MSTAV AND
SPRAS EQ G_LANGU.
CLEAR T_MARAV.
CLEAR : G_VKORG,
G_VMSTA,
G_VTWEG.
IF SY-SUBRC = 0.
LOOP AT T_PBIM.
T_FOR_DISP-MATNR = T_PBIM-MATNR.
T_FOR_DISP-WERKS = T_PBIM-WERKS.
T_FOR_DISP-BEDAE = T_PBIM-BEDAE.
T_FOR_DISP-VERSB = T_PBIM-VERSB.
T_FOR_DISP-PBDNR = T_PBIM-PBDNR.
T_FOR_DISP-LOEVR = T_PBIM-LOEVR.
READ TABLE T_MARAV WITH KEY MATNR = T_PBIM-MATNR.
IF SY-SUBRC EQ 0.
T_FOR_DISP-MAKTX = T_MARAV-MAKTX.
T_FOR_DISP-MSTAV = T_MARAV-MSTAV.
ENDIF.
SELECT SINGLE *
FROM T001K
WHERE BWKEY = T_PBIM-WERKS.
CLEAR G_VKORG.
IF SY-SUBRC = 0.
SELECT SINGLE VKORG
INTO G_VKORG
FROM TVKO
WHERE BUKRS = T001K-BUKRS.
IF SY-SUBRC = 0.
T_FOR_DISP-VKORG = G_VKORG.
ENDIF.
ENDIF.
SELECT SINGLE VMSTA
INTO G_VMSTA
FROM MVKE
WHERE MATNR = T_PBIM-MATNR AND
VKORG = G_VKORG.
IF SY-SUBRC EQ 0.
SELECT SINGLE VTWEG
INTO G_VTWEG
FROM MVKE
WHERE MATNR = T_PBIM-MATNR AND
VKORG = G_VKORG.
IF SY-SUBRC = 0.
T_FOR_DISP-VMSTA = G_VMSTA.
T_FOR_DISP-VTWEG = G_VTWEG.
ENDIF.
start 16.03
T_FOR_DISP-DATVE = SY-DATUM - 14.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = T_FOR_DISP-DATVE
IMPORTING
OUTPUT = T_FOR_DISP-DATVE.
T_FOR_DISP-DATBE = SY-DATUM + 550.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = T_FOR_DISP-DATBE
IMPORTING
OUTPUT = T_FOR_DISP-DATBE.
T_FOR_DISP-ENTLU = 'W'.
end 16.03
APPEND T_FOR_DISP.
ENDLOOP.
ELSE.
CONTINUE.
CLEAR : T_FOR_DISP,
T_PBIM ,
T_MARAV .
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
DELETE T_FOR_DISP WHERE NOT VMSTA IN S_VMSTA.
SORT T_FOR_DISP BY MATNR.
DELETE ADJACENT DUPLICATES FROM T_FOR_DISP COMPARING ALL FIELDS.
CLEAR T_FOR_DISP.
ENDFORM. " SUB_GET_DETAILS
i think ur problem will be solved
2007 Mar 25 7:42 AM
Hi,
You need to you EXIT. This will make sure the control goes out of the loop and the row is not appended.
Regards,
Vivek
Reward points pls
| User | Count |
|---|---|
| 6 | |
| 2 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |