Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

report

Former Member
0 Likes
1,348

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

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
1,314

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

16 REPLIES 16
Read only

Former Member
0 Likes
1,314

hi

with in a loop of an internal table

sy-subrc will not be set...

Read only

Former Member
0 Likes
1,314

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.

Read only

0 Likes
1,314

Hi Bharat,

i have tried this - its not working

Cpuld you plz suggest me som other solution

Thanks,

Praveen

Read only

Former Member
0 Likes
1,314

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

Read only

0 Likes
1,314

yes -u r right

i dont want to append that record at all

how can i achieve this please suggest

Thanks

Read only

Former Member
0 Likes
1,315

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

Read only

0 Likes
1,314

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

Read only

0 Likes
1,314

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

Read only

0 Likes
1,314

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

Read only

Former Member
0 Likes
1,314

Hi,

can u just give me your code little clear.

regards,

bharat.

Read only

0 Likes
1,314

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

Read only

Former Member
0 Likes
1,314

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 .

Read only

Former Member
0 Likes
1,314

hi

with in a loop of an internal table

sy-subrc will not be set...

Read only

Former Member
0 Likes
1,314

Do remember to close the thread ..

reward helpful answers,

sai ramesh

Read only

Former Member
0 Likes
1,314

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

Read only

Former Member
0 Likes
1,314

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