‎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
‎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