‎2006 Jan 27 9:14 AM
Hi all,
I have a requirement to create two reports.For these reports logic, processing everything is same except selection screen parameters(different).
So what i want to do is in selection screen appln tool bar create two buttons one for each report say report1 and report2.
if i press report1 then i should get 1st report selection screen parameters.and if i press report2 i should get 2nd report selection parameters and process according to the selection.
iam thinking of using SSCRFIELDS.
Please kindly help me with the logic how to go abt it.
Thanks and regards
Chandu.
‎2006 Jan 27 9:37 AM
hI
THERE IS A MINOR CHANGE
&----
*& Report ZTSAMP
*&
&----
*&
*&
&----
REPORT ZTSAMP.
TABLES sscrfields.
DATA flag.
PARAMETERS test.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p1(10) TYPE c MODIF ID BL1,
p2(10) TYPE c MODIF ID BL1 ,
p3(10) TYPE c MODIF ID BL1.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p4(10) TYPE c MODIF ID bl2,
p5(10) TYPE c MODIF ID bl2,
p6(10) TYPE c MODIF ID bl2.
SELECTION-SCREEN END OF BLOCK b2.
INITIALIZATION.
sscrfields-functxt_01 = 'REPORT1'.
sscrfields-functxt_02 = 'REPORT2'.
LOOP AT SCREEN.
SCREEN-ACTIVE = '0'.
MODIFY SCREEN.
ENDLOOP.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'FC01'.
flag = '1'.
ELSEIF sscrfields-ucomm = 'FC02'.
flag = '2'.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
IF FLAG = '1'.
LOOP AT SCREEN.
IF screen-group1 = 'BL1'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF FLAG = '2'.
LOOP AT SCREEN.
IF screen-group1 = 'BL2'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
START-OF-SELECTION.
Message was edited by: Harikishore Sreenivasulu
‎2006 Jan 27 9:17 AM
Have a selection screen with checkbox or radio button which toggles between the two report.
Eg:
PARAMETERS show_all AS CHECKBOX USER-COMMAND flag.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p1(10) TYPE c,
p2(10) TYPE c,
p3(10) TYPE c.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p4(10) TYPE c MODIF ID bl2,
p5(10) TYPE c MODIF ID bl2,
p6(10) TYPE c MODIF ID bl4.
SELECTION-SCREEN END OF BLOCK b2.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF show_all <> 'X' AND
screen-group1 = 'BL2'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
LOOP AT SCREEN.
IF screen-group1 = 'BL2'.
screen-intensified = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
‎2006 Jan 27 9:18 AM
use the following coomand..
SELECTION-SCREEN PUSHBUTTON [/][pos](len) button_text
USER-COMMAND fcode [MODIF ID modid] .
Loop At screen .
check for modif id and modify the screen.
‎2006 Jan 27 9:20 AM
hI
TABLES sscrfields.
DATA flag.
PARAMETERS test.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
INITIALIZATION.
sscrfields-functxt_01 = 'REPORT1'.
sscrfields-functxt_02 = 'REPORT2'.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'FC01'.
flag = '1'.
ELSEIF sscrfields-ucomm = 'FC02'.
flag = '2'.
ENDIF.
START-OF-SELECTION.
IF flag = '1'.
<CODE>
ELSEIF flag = '2'.
<CODE>
ENDIF.
‎2006 Jan 27 9:26 AM
Hi Harikishore,
Thanks for ur reply.
As i said my requirement is when i press appln tool bar buttons i should get the selection screen parameters not the start-of-selection event so that user can enter values and process according to the selection.
i hope it clarifies.
Message was edited by: Sai Chand Pullepu
‎2006 Jan 27 9:26 AM
Hi Sai,
You can also use tab page in selection screen instead of push buttons , to give a more user friendly look.
Tab page logic works the same way as push button only that the presentation is different.
Though coding a tabpage in selection screen is a bit complicated but u can find the ready made code in SAP help guide.
regards,
Sumeet Mishra
‎2006 Jan 27 9:28 AM
Hi
Then you can include the parameters in the
At selection-screen output
&----
*& Report ZTSAMP
*&
&----
*&
*&
&----
REPORT ZTSAMP.
*SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME TITLE text-p02.
*PARAMETERS: p_logsys LIKE tbdls-logsys OBLIGATORY,
*p_lang TYPE laiso,
*p_mode AS CHECKBOX DEFAULT 'X' USER-COMMAND flag.
*SELECTION-SCREEN END OF BLOCK block2.
*
*SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME TITLE text-p01.
*PARAMETERS:
*p_prtid TYPE vbap-vbeln MODIF ID bl1,
*p_bckid TYPE vbap-posnr MODIF ID bl1.
*SELECTION-SCREEN END OF BLOCK block1.
*
*at selection-screen.
*
*LOOP AT SCREEN.
*IF p_mode eq 'X' AND screen-group1 = 'BL1'.
*screen-active = '0'.
*ENDIF.
*MODIFY SCREEN.
*ENDLOOP.
*
*LOOP AT SCREEN.
*IF screen-group1 = 'BL1'.
*screen-intensified = '1'.
*MODIFY SCREEN.
*ENDIF.
*ENDLOOP.
*
*
**start-of-selection.
*data: yea(4) type n.
*
*CALL FUNCTION 'GET_CURRENT_YEAR'
EXPORTING
BUKRS = ' '
DATE = sy-datum
IMPORTING
CURRM =
CURRY = yea
PREVM =
PREVY =
.
*write:/ yea.
TABLES sscrfields.
DATA flag.
PARAMETERS test.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p1(10) TYPE c MODIF ID BL1,
p2(10) TYPE c MODIF ID BL1 ,
p3(10) TYPE c MODIF ID BL1.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p4(10) TYPE c MODIF ID bl2,
p5(10) TYPE c MODIF ID bl2,
p6(10) TYPE c MODIF ID bl2.
SELECTION-SCREEN END OF BLOCK b2.
INITIALIZATION.
sscrfields-functxt_01 = 'REPORT1'.
sscrfields-functxt_02 = 'REPORT2'.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'FC01'.
flag = '1'.
ELSEIF sscrfields-ucomm = 'FC02'.
flag = '2'.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
IF FLAG = '1'.
LOOP AT SCREEN.
IF screen-group1 = 'BL1'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF FLAG = '2'.
LOOP AT SCREEN.
IF screen-group1 = 'BL2'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
START-OF-SELECTION.
IF flag = '1'.
*<CODE>
ELSEIF flag = '2'.
<CODE>
*
Message was edited by: Harikishore Sreenivasulu
‎2006 Jan 27 9:30 AM
hi,
You can use AT SELECTION SCREEN OUTPUT event to decide which frame u want to display.
regards,
Sumeet Mishra
‎2006 Jan 27 9:37 AM
hI
THERE IS A MINOR CHANGE
&----
*& Report ZTSAMP
*&
&----
*&
*&
&----
REPORT ZTSAMP.
TABLES sscrfields.
DATA flag.
PARAMETERS test.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p1(10) TYPE c MODIF ID BL1,
p2(10) TYPE c MODIF ID BL1 ,
p3(10) TYPE c MODIF ID BL1.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
PARAMETERS: p4(10) TYPE c MODIF ID bl2,
p5(10) TYPE c MODIF ID bl2,
p6(10) TYPE c MODIF ID bl2.
SELECTION-SCREEN END OF BLOCK b2.
INITIALIZATION.
sscrfields-functxt_01 = 'REPORT1'.
sscrfields-functxt_02 = 'REPORT2'.
LOOP AT SCREEN.
SCREEN-ACTIVE = '0'.
MODIFY SCREEN.
ENDLOOP.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'FC01'.
flag = '1'.
ELSEIF sscrfields-ucomm = 'FC02'.
flag = '2'.
ENDIF.
AT SELECTION-SCREEN OUTPUT.
IF FLAG = '1'.
LOOP AT SCREEN.
IF screen-group1 = 'BL1'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF FLAG = '2'.
LOOP AT SCREEN.
IF screen-group1 = 'BL2'.
screen-active = '0'.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
START-OF-SELECTION.
Message was edited by: Harikishore Sreenivasulu
‎2006 Jan 27 10:00 AM
hi all,
Thanks alot for ur replies Iam doing now i will let u know abt it and i will assign points soon.
‎2006 Jan 27 9:57 AM
hi sai
is it working??
!!!!!!!!!!reward if helpful!!!!!!!!!!!!
‎2006 Jan 27 11:59 AM
i create a list with 2 push buttons .the push buttons are created having function code 'REPORT1' and 'REPORT2' by creating the pf-status using se41.below is the code.
REPORT ZTEM1.
set pf-status 'PF_SCREEN1000'.
write:'select one of the above '.
selection-screen:begin of screen 100.
parameters:name(20).
selection-screen end of screen 100.
selection-screen:begin of screen 200.
parameters:age(20).
selection-screen end of screen 200.
at user-command.
if sy-ucomm = 'REPORT1'.
call selection-screen 100.
endif.
if sy-ucomm = 'REPORT2'.
call selection-screen 200.
endif.
if sy-ucomm = 'BACK'.
leave to screen 0.
endif.