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

Problem in report.

Former Member
0 Likes
1,215

hi,

i used at selection screen output event in my report. in this report , i have given loop at screen statement. when i am executing this report, the program control not come out of this loop and now executing proceding write statements. how to solve this problem.

reward points if answered.

thanks and regards

sravan

1 ACCEPTED SOLUTION
Read only

former_member784222
Active Participant
0 Likes
1,194

Hi,

You need to have the START-OF-SELECTION event that distinguishes AT SELECTION-SCREEN OUTPUT and actual write statements:

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

ENDLOOP.

START-OF-SELECTION.

actual execution.

Thanks and regards,

S. Chandra Mouli.

14 REPLIES 14
Read only

Former Member
0 Likes
1,194

hi,

i used at selection screen output event in my report. in this report , i have given loop at screen statement. when i am executing this report, the program control not come out of this loop and not executing proceding write statements. how to solve this problem.

reward points if answered.

thanks and regards

sravan

Read only

0 Likes
1,194

Hi,

You can come out of the loop at any time using EXIT, please make sure that you have acievied what you want to in the LOOP and then use EXIT, but this loop should end at some point of time.

Any way use EXIT.

Regards,

Sesh

Read only

Former Member
0 Likes
1,194

Plz send your code for at selection screen output.

regards,

Ruchiak

Read only

Former Member
0 Likes
1,194

Hi,

Did you have a START-OF-SELECTION event in your program..to separate the AT SELECTION-SCREEN OUTPUT event ...

Thanks

Naren

Read only

former_member784222
Active Participant
0 Likes
1,195

Hi,

You need to have the START-OF-SELECTION event that distinguishes AT SELECTION-SCREEN OUTPUT and actual write statements:

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

ENDLOOP.

START-OF-SELECTION.

actual execution.

Thanks and regards,

S. Chandra Mouli.

Read only

Former Member
0 Likes
1,194

hi, i am sending code, please explain why this problem is coming.

Read only

Former Member
0 Likes
1,194

here is the code

REPORT ZEX1 no standard page heading line-count 50(3) line-size 100.

tables : mara,marc,VBAK,VBAP.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.

parameters: T1 RADIOBUTTON GROUP G1 USER-COMMAND R DEFAULT 'X',

T2 RADIOBUTTON GROUP G1 .

SELECTION-SCREEN END OF BLOCK B1.

selection-screen begin of block b2 with frame title tEXT-001.

select-options : matnr1 for mara-matnr MODIF ID M1 OBLIGATORY .

select-options : werks1 for marc-werks MODIF ID M1 .

selection-screen end of block b2.

selection-screen begin of block b3 with frame title tEXT-002.

select-options : VBELN1 for VBAK-VBELN MODIF ID M2 OBLIGATORY.

select-options : POSNR1 for VBAP-POSNR MODIF ID M2 .

selection-screen end of block b3.

types : begin of MAT1 ,

MATNR LIKE MARA-MATNR,

MATKL LIKE MARA-MATKL,

MBRSH LIKE MARA-MBRSH,

ERNAM LIKE MARA-ERNAM,

MTART LIKE MARA-MTART,

WERKS LIKE MARC-WERKS,

EKGRP LIKE MARC-EKGRP,

PERKZ LIKE MARC-PERKZ,

END OF MAT1.

TYPES : BEGIN OF SALE1,

VBELN LIKE VBAK-VBELN,

ERNAM LIKE VBAK-ERNAM,

ERDAT LIKE VBAK-ERDAT,

NETWR LIKE VBAK-NETWR,

POSNR LIKE VBAP-POSNR,

MATNR LIKE VBAP-MATNR,

MATKL LIKE VBAP-MATKL,

PRODH LIKE VBAP-PRODH,

END OF SALE1.

TYPES : BEGIN OF MAT_SEL ,

MATNR LIKE MARA-MATNR,

WERKS LIKE MARC-WERKS,

END OF MAT_SEL.

TYPES : BEGIN OF SALE_SEL,

VBELN LIKE VBAK-VBELN,

POSNR LIKE VBAP-POSNR,

END OF SALE_SEL.

DATA : ITAB1 TYPE MAT_SEL OCCURS 0 WITH HEADER LINE,

ITAB2 TYPE SALE_SEL OCCURS 0 WITH HEADER LINE,

MAT TYPE TABLE OF MAT1,

SALE TYPE TABLE OF SALE1,

MAT_LINE TYPE MAT1,

SALE_LINE TYPE SALE1.

FORM INITIALIZATION1.

SELECT MIN( MATNR ) MAX( MATNR ) FROM MARA INTO (MATNR1-LOW,MATNR1-HIGH).

MATNR1-SIGN = 'I'.

MATNR1-OPTION = 'BT'.

APPEND MATNR1.

ENDFORM.

FORM INITIALIZATION2.

SELECT MIN( VBELN ) MAX( VBELN ) FROM VBAK INTO (VBELN1-LOW,VBELN1-HIGH).

VBELN1-SIGN = 'I'.

VBELN1-OPTION = 'BT'.

APPEND VBELN1.

ENDFORM.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF T1 = 'X' AND SCREEN-GROUP1 = 'M2'.

PERFORM INITIALIZATION1.

SCREEN-INPUT = 0.

SCREEN-INVISIBLE = 1.

MODIFY SCREEN.

ELSEIF T2 = 'X' AND SCREEN-GROUP1 = 'M1'.

PERFORM INITIALIZATION2.

SCREEN-INPUT = 0.

SCREEN-INVISIBLE = 1.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

START-OF-SELECTION.

IF T1 = 'X'.

SELECT AMATNR BWERKS FROM MARA AS A INNER JOIN MARC AS B ON AMATNR = BMATNR INTO TABLE ITAB1 WHERE AMATNR IN MATNR1 AND BWERKS IN WERKS1.

ELSEIF T2 = 'X'.

SELECT AVBELN BPOSNR FROM VBAK AS A INNER JOIN VBAP AS B ON AVBELN = BVBELN INTO TABLE ITAB2 WHERE AVBELN IN VBELN1 AND BPOSNR IN POSNR1.

ENDIF.

TOP-OF-PAGE .

FORMAT COLOR 5.

WRITE : / 'LIST INDEX NUMBER IS ', SY-LSIND,'PAGE NUMBER IS',SY-PAGNO,'TODAY DATE',SY-DATUM.

IF NOT ITAB1 IS INITIAL.

LOOP AT ITAB1.

WRITE : / ITAB1-MATNR,ITAB1-WERKS.

ENDLOOP.

ELSE.

LOOP AT ITAB2.

WRITE : / ITAB2-VBELN,ITAB2-POSNR.

ENDLOOP.

ENDIF.

Read only

0 Likes
1,194

Hi,

Why to you want to put INITIALIZATION1 / INITIALIZATION2 in the AT SELECTION-SCREEN OUTPUT ?. You could have put that in

START-OF-SELECTION.

if t1 = 'X'.

perform initialization1.

else.

perform initialization2.

endif.

or if you need to set the initial values you could have done them in

INITIALIZATION.

perform initialization1.

perform initialization2.

Please consider to revise your logic.

regards,

S. Chandra Mouli.

Read only

Former Member
0 Likes
1,194

hi,

it is not good to terminate your loop using EXIT if you are not sure about its effect..it will be useless codes...LOOP AT SCREEN must end ..it's better if you can show us your code...otherwise better to remove it...just my suggestion

Read only

Former Member
0 Likes
1,194

hai mouli, when i given only initialization, the selection criteria for selection screen block b2 is working only in first step. not executing in futher steps, so i put like that.

Read only

0 Likes
1,194

Hi,

<b>Corrected your code.</b>

&----


*& Report ZEX1

*&

&----


*&

*&

&----


REPORT ZEX1 NO STANDARD PAGE HEADING LINE-COUNT 50(3) LINE-SIZE 100.

TABLES : mara,marc,vbak,vbap.

DATA: flag1 VALUE 'X' ,flag2.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-000.

PARAMETERS: t1 RADIOBUTTON GROUP g1 USER-COMMAND r DEFAULT 'X',

t2 RADIOBUTTON GROUP g1.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-001.

SELECT-OPTIONS : matnr1 FOR mara-matnr MODIF ID m1 OBLIGATORY .

SELECT-OPTIONS : werks1 FOR marc-werks MODIF ID m1 .

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-002.

SELECT-OPTIONS : vbeln1 FOR vbak-vbeln MODIF ID m2 OBLIGATORY.

SELECT-OPTIONS : posnr1 FOR vbap-posnr MODIF ID m2 .

SELECTION-SCREEN END OF BLOCK b3.

TYPES : BEGIN OF mat1 ,

matnr LIKE mara-matnr,

matkl LIKE mara-matkl,

mbrsh LIKE mara-mbrsh,

ernam LIKE mara-ernam,

mtart LIKE mara-mtart,

werks LIKE marc-werks,

ekgrp LIKE marc-ekgrp,

perkz LIKE marc-perkz,

END OF mat1.

TYPES : BEGIN OF sale1,

vbeln LIKE vbak-vbeln,

ernam LIKE vbak-ernam,

erdat LIKE vbak-erdat,

netwr LIKE vbak-netwr,

posnr LIKE vbap-posnr,

matnr LIKE vbap-matnr,

matkl LIKE vbap-matkl,

prodh LIKE vbap-prodh,

END OF sale1.

TYPES : BEGIN OF mat_sel ,

matnr LIKE mara-matnr,

werks LIKE marc-werks,

END OF mat_sel.

TYPES : BEGIN OF sale_sel,

vbeln LIKE vbak-vbeln,

posnr LIKE vbap-posnr,

END OF sale_sel.

DATA : itab1 TYPE mat_sel OCCURS 0 WITH HEADER LINE,

itab2 TYPE sale_sel OCCURS 0 WITH HEADER LINE,

mat TYPE TABLE OF mat1,

sale TYPE TABLE OF sale1,

mat_line TYPE mat1,

sale_line TYPE sale1.

&----


*& Form INITIALIZATION1

&----


  • text

----


FORM initialization1.

SELECT MIN( matnr ) MAX( matnr ) FROM mara INTO (matnr1-low,matnr1-high).

matnr1-sign = 'I'.

matnr1-option = 'BT'.

APPEND matnr1.

ENDFORM. "INITIALIZATION1

&----


*& Form INITIALIZATION2

&----


  • text

----


FORM initialization2.

SELECT MIN( vbeln ) MAX( vbeln ) FROM vbak INTO (vbeln1-low,vbeln1-high).

vbeln1-sign = 'I'.

vbeln1-option = 'BT'.

APPEND vbeln1.

ENDFORM. "INITIALIZATION2

AT SELECTION-SCREEN OUTPUT.

IF flag1 = 'X'.

LOOP AT SCREEN.

CHECK screen-group1 = 'M2'.

PERFORM initialization1.

screen-input = 0.

screen-invisible = 1.

MODIFY SCREEN.

ENDLOOP.

ELSEIF flag2 = 'X'.

LOOP AT SCREEN.

CHECK screen-group1 = 'M1'.

PERFORM initialization2.

screen-input = 0.

screen-invisible = 1.

MODIFY SCREEN.

ENDLOOP.

ENDIF.

AT SELECTION-SCREEN.

IF sy-ucomm = 'R'.

IF t1 = 'X'.

flag1 = 'X'.

clear flag2.

ELSEIF t2 = 'X'.

flag2 = 'X'.

clear flag1.

ENDIF.

ENDIF.

START-OF-SELECTION.

IF t1 = 'X'.

SELECT amatnr bwerks FROM mara AS a INNER JOIN marc AS b ON amatnr = bmatnr INTO TABLE itab1 WHERE amatnr IN matnr1 AND bwerks IN werks1.

LOOP AT itab1.

WRITE: itab1-matnr.

ENDLOOP.

ELSEIF t2 = 'X'.

SELECT avbeln bposnr FROM vbak AS a INNER JOIN vbap AS b ON avbeln = bvbeln INTO TABLE itab2 WHERE avbeln IN vbeln1 AND bposnr IN posnr1.

LOOP AT itab2.

WRITE: itab2-vbeln.

ENDLOOP.

ENDIF.

IF NOT itab1 IS INITIAL.

LOOP AT itab1.

WRITE : / itab1-matnr,itab1-werks.

ENDLOOP.

ELSE.

LOOP AT itab2.

WRITE : / itab2-vbeln,itab2-posnr.

ENDLOOP.

ENDIF.

TOP-OF-PAGE .

FORMAT COLOR 5.

WRITE : / 'LIST INDEX NUMBER IS ', sy-lsind,'PAGE NUMBER IS',sy-pagno,'TODAY DATE',sy-datum.

Regards,

Sesh

.

Message was edited by:

Seshatalpasai Madala

Read only

0 Likes
1,194

Hi,

Please follow the following code, this will help you:


AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF t1 = 'X'.
      IF screen-group1 = 'M1'.
        screen-input = 0.
        screen-invisible = 1.
        MODIFY SCREEN.
      ELSE.
        screen-input = 1.
        screen-invisible = 0.
        MODIFY SCREEN.
      ENDIF.
    ELSEIF t2 = 'X'.
      IF screen-group1 = 'M2'.
        screen-input = 0.
        screen-invisible = 1.
        MODIFY SCREEN.
      ELSE.
        screen-input = 1.
        screen-invisible = 0.
        MODIFY SCREEN.
      ENDIF.


    ENDIF.
  ENDLOOP.

INITIALIZATION.
  PERFORM initialization1.
  PERFORM initialization2.

Also another correction.

Your write statements are in top-of-page.

This will never get executed. So you will have to put loop at part in start of selection.


START-OF-SELECTION.
  your select.
    IF NOT itab1 IS INITIAL.
    LOOP AT itab1.
      WRITE : / itab1-matnr,itab1-werks.
    ENDLOOP.
    ENDIF.
    IF NOT ITAB2 IS INITIAL.
    LOOP AT itab2.
      WRITE : / itab2-vbeln,itab2-posnr.
    ENDLOOP.
  ENDIF.

TOP-OF-PAGE.
  WRITE HEADING.

regards,

S. Chandra Mouli.

Message was edited by:

Chandramouli Subburathinam

Message was edited by:

Chandramouli Subburathinam

Read only

Former Member
0 Likes
1,194

PLease Cut and paste the below code i had correctED query of yours

REPORT ZEX1 no standard page heading line-count 50(3) line-size 100.
tables : mara,marc,VBAK,VBAP.

types : begin of MAT1 ,
MATNR LIKE MARA-MATNR,
MATKL LIKE MARA-MATKL,
MBRSH LIKE MARA-MBRSH,
ERNAM LIKE MARA-ERNAM,
MTART LIKE MARA-MTART,
WERKS LIKE MARC-WERKS,
EKGRP LIKE MARC-EKGRP,
PERKZ LIKE MARC-PERKZ,
END OF MAT1.

TYPES : BEGIN OF SALE1,
VBELN LIKE VBAK-VBELN,
ERNAM LIKE VBAK-ERNAM,
ERDAT LIKE VBAK-ERDAT,
NETWR LIKE VBAK-NETWR,
POSNR LIKE VBAP-POSNR,
MATNR LIKE VBAP-MATNR,
MATKL LIKE VBAP-MATKL,
PRODH LIKE VBAP-PRODH,
END OF SALE1.

TYPES : BEGIN OF MAT_SEL ,
MATNR LIKE MARA-MATNR,
WERKS LIKE MARC-WERKS,
END OF MAT_SEL.
TYPES : BEGIN OF SALE_SEL,
VBELN LIKE VBAK-VBELN,
POSNR LIKE VBAP-POSNR,
END OF SALE_SEL.

DATA : ITAB1 TYPE MAT_SEL OCCURS 0 WITH HEADER LINE,
ITAB2 TYPE SALE_SEL OCCURS 0 WITH HEADER LINE,
MAT TYPE TABLE OF MAT1,
SALE TYPE TABLE OF SALE1,
MAT_LINE TYPE MAT1,
SALE_LINE TYPE SALE1.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
parameters: T1 RADIOBUTTON GROUP G1 USER-COMMAND R DEFAULT 'X',
T2 RADIOBUTTON GROUP G1 .
SELECTION-SCREEN END OF BLOCK B1.


selection-screen begin of block b2 with frame title tEXT-001.
select-options : matnr1 for mara-matnr MODIF ID M1 OBLIGATORY .
select-options : werks1 for marc-werks MODIF ID M1 .
selection-screen end of block b2.

selection-screen begin of block b3 with frame title tEXT-002.
select-options : VBELN1 for VBAK-VBELN MODIF ID M2 OBLIGATORY.
select-options : POSNR1 for VBAP-POSNR MODIF ID M2 .
selection-screen end of block b3.

INITIALIZATION. .
PERFORM INITIALIZATION1.
PERFORM INITIALIZATION2.

AT SELECTION-SCREEN .
LOOP AT SCREEN.
IF T1 = 'X' AND SCREEN-GROUP1 = 'M2'.
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ELSEIF T2 = 'X' AND SCREEN-GROUP1 = 'M1'.
SCREEN-INPUT = 0.
SCREEN-INVISIBLE = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.

FORM INITIALIZATION1.
SELECT MIN( MATNR ) MAX( MATNR ) FROM MARA INTO (MATNR1-LOW,MATNR1-HIGH).
MATNR1-SIGN = 'I'.
MATNR1-OPTION = 'BT'.
APPEND MATNR1.
ENDFORM.
FORM INITIALIZATION2.
SELECT MIN( VBELN ) MAX( VBELN ) FROM VBAK INTO (VBELN1-LOW,VBELN1-HIGH).
VBELN1-SIGN = 'I'.
VBELN1-OPTION = 'BT'.
APPEND VBELN1.
ENDFORM.


START-OF-SELECTION.
IF T1 = 'X'.
SELECT A~MATNR B~WERKS FROM MARA AS A INNER JOIN MARC AS B ON A~MATNR = B~MATNR INTO TABLE ITAB1 WHERE A~MATNR IN MATNR1 AND B~WERKS IN WERKS1.
ELSEIF T2 = 'X'.
SELECT A~VBELN B~POSNR FROM VBAK AS A INNER JOIN VBAP AS B ON A~VBELN = B~VBELN INTO TABLE ITAB2 WHERE A~VBELN IN VBELN1 AND B~POSNR IN POSNR1.
ENDIF.

TOP-OF-PAGE .
FORMAT COLOR 5.
WRITE : / 'LIST INDEX NUMBER IS ', SY-LSIND,'PAGE NUMBER IS',SY-PAGNO,'TODAY DATE',SY-DATUM.

IF NOT ITAB1 IS INITIAL.
LOOP AT ITAB1.
WRITE : / ITAB1-MATNR,ITAB1-WERKS.
ENDLOOP.
ELSE.
LOOP AT ITAB2.
WRITE : / ITAB2-VBELN,ITAB2-POSNR.
ENDLOOP.
ENDIF.

Reward points if it is usefull ...

gIRISH

Read only

Former Member
0 Likes
1,194

hi,

try this one

report zex1 no standard page heading line-count 50(3) line-size 100.

tables : mara,marc,vbak,vbap.

selection-screen begin of block b1 with frame title text-000.

parameters: t1 radiobutton group g1 user-command r default 'X',

t2 radiobutton group g1 .

selection-screen end of block b1.

selection-screen begin of block b2 with frame title text-001.

select-options : matnr1 for mara-matnr modif id m1 obligatory .

select-options : werks1 for marc-werks modif id m1 .

selection-screen end of block b2.

selection-screen begin of block b3 with frame title text-002.

select-options : vbeln1 for vbak-vbeln modif id m2 obligatory.

select-options : posnr1 for vbap-posnr modif id m2 .

selection-screen end of block b3.

types : begin of mat1 ,

matnr like mara-matnr,

matkl like mara-matkl,

mbrsh like mara-mbrsh,

ernam like mara-ernam,

mtart like mara-mtart,

werks like marc-werks,

ekgrp like marc-ekgrp,

perkz like marc-perkz,

end of mat1.

types : begin of sale1,

vbeln like vbak-vbeln,

ernam like vbak-ernam,

erdat like vbak-erdat,

netwr like vbak-netwr,

posnr like vbap-posnr,

matnr like vbap-matnr,

matkl like vbap-matkl,

prodh like vbap-prodh,

end of sale1.

types : begin of mat_sel ,

matnr like mara-matnr,

werks like marc-werks,

end of mat_sel.

types : begin of sale_sel,

vbeln like vbak-vbeln,

posnr like vbap-posnr,

end of sale_sel.

data : itab1 type mat_sel occurs 0 with header line,

itab2 type sale_sel occurs 0 with header line,

mat type table of mat1,

sale type table of sale1,

mat_line type mat1,

sale_line type sale1.

----


  • FORM INITIALIZATION1 *

----


  • ........ *

----


form initialization1.

select min( matnr ) max( matnr ) from mara into (matnr1-low,matnr1-high)

.

matnr1-sign = 'I'.

matnr1-option = 'BT'.

append matnr1.

endform.

----


  • FORM INITIALIZATION2 *

----


  • ........ *

----


form initialization2.

select min( vbeln ) max( vbeln ) from vbak into (vbeln1-low,vbeln1-high)

.

vbeln1-sign = 'I'.

vbeln1-option = 'BT'.

append vbeln1.

endform.

at selection-screen output.

loop at screen.

if t1 = 'X' and screen-group1 = 'M2'.

perform initialization1.

screen-input = 0.

screen-invisible = 1.

modify screen.

elseif t2 = 'X' and screen-group1 = 'M1'.

perform initialization2.

screen-input = 0.

screen-invisible = 1.

modify screen.

endif.

endloop.

start-of-selection.

if t1 = 'X'.

select amatnr bwerks from mara as a inner join marc as b on a~matnr =

bmatnr into table itab1 where amatnr in matnr1 and b~werks in werks1.

if sy-subrc = 0.

perform f_write.

endif.

elseif t2 = 'X'.

select avbeln bposnr from vbak as a inner join vbap as b on a~vbeln =

bvbeln into table itab2 where avbeln in vbeln1 and b~posnr in posnr1.

if sy-subrc = 0.

perform f_write.

endif.

endif.

----


  • FORM f_write *

----


  • ........ *

----


form f_write.

format color 5.

write : / 'LIST INDEX NUMBER IS ', sy-lsind,'PAGE NUMBER IS',sy-pagno,

'TODAY DATE',sy-datum.

  • read itab1.

if not itab1[] is initial .

loop at itab1.

write : / itab1-matnr,itab1-werks.

endloop.

else.

loop at itab2.

write : / itab2-vbeln,itab2-posnr.

endloop.

endif.

endform.