‎2007 Jun 14 6:54 AM
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
‎2007 Jun 14 6:59 AM
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.
‎2007 Jun 14 6:55 AM
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
‎2007 Jun 14 6:57 AM
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
‎2007 Jun 14 6:56 AM
Plz send your code for at selection screen output.
regards,
Ruchiak
‎2007 Jun 14 6:56 AM
Hi,
Did you have a START-OF-SELECTION event in your program..to separate the AT SELECTION-SCREEN OUTPUT event ...
Thanks
Naren
‎2007 Jun 14 6:59 AM
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.
‎2007 Jun 14 7:01 AM
hi, i am sending code, please explain why this problem is coming.
‎2007 Jun 14 7:02 AM
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.
‎2007 Jun 14 7:12 AM
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.
‎2007 Jun 14 7:03 AM
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
‎2007 Jun 14 7:22 AM
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.
‎2007 Jun 14 7:26 AM
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
‎2007 Jun 14 7:35 AM
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
‎2007 Jun 14 7:24 AM
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
‎2007 Jun 14 7:40 AM
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.