2008 Nov 21 10:22 AM
Hi All ,
Can any one tell me how can i make a block in the selection screen invisible . rt now i am using the below code for selection screen ,
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_SALE RADIOBUTTON GROUP GRP DEFAULT 'X',
P_BILL RADIOBUTTON GROUP GRP .
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME TITLE TEXT-002.
PARAMETERS MODIF ID SAL.
SELECT-OPTIONS: S_vkorg for TVKO-VKORG obligatory MODIF ID SAL,
S_VTWEG for TVTW-VTWEG obligatory MODIF ID SAL,
S_SPART for TSPA-SPART obligatory MODIF ID SAL.
SELECTION-SCREEN END OF BLOCK BLK2.
SELECTION-SCREEN BEGIN OF BLOCK BLK3 WITH FRAME TITLE TEXT-003.
SELECT-OPTIONS: S_vkorg1 for TVKO-VKORG obligatory MODIF ID BIL,
S_VTWEG1 for TVTW-VTWEG obligatory MODIF ID BIL,
S_SPART1 for TSPA-SPART obligatory MODIF ID BIL,
S_FKDAT for VBRK-FKDAT obligatory MODIF ID BIL.
SELECTION-SCREEN END OF BLOCK BLK3.
my requirement is , when i select the RB P_SALE the BLK3 have to be invisible and when i select the RB P_BILL BLK2 have to be invisible .
Thanks & Regards ,
Sabu.
2008 Nov 21 10:47 AM
Hi,
Try like this.....
TABLES : tvko , tvtw , tspa , vbrk.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS: p_sale RADIOBUTTON GROUP grp DEFAULT 'X' USER-COMMAND flag1, " dont forget to add user-command
p_bill RADIOBUTTON GROUP grp .
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
* PARAMETERS MODIF ID SAL.
SELECT-OPTIONS: s_vkorg FOR tvko-vkorg MODIF ID sal,
s_vtweg FOR tvtw-vtweg ID sal,
s_spart FOR tspa-spart MODIF ID sal.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_vkorg1 FOR tvko-vkorg MODIF ID bil,
s_vtweg1 FOR tvtw-vtweg MODIF ID bil,
s_spart1 FOR tspa-spart MODIF ID bil,
s_fkdat FOR vbrk-fkdat MODIF ID bil.
SELECTION-SCREEN END OF BLOCK blk3.
AT SELECTION-SCREEN OUTPUT.
IF p_sale = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'BIL'.
screen-active = '0'.
ELSE.
screen-active = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF p_bill = 'X'.
BREAK-POINT.
LOOP AT SCREEN.
IF screen-group1 = 'SAL'.
screen-active = '0'.
ELSE.
screen-active = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
Regards
Debarshi
2008 Nov 21 10:26 AM
HI ...
you need write this code in
AT Selection-screen output.
loop at screen.
you need to check the condition on which you want disable the block and fill the values in screen structure.
Modufy screen.
endloop.
2008 Nov 21 10:27 AM
at selection-screen output.
loop at screen.
if screen-name = 'blockname'.
screen-active = 0.
modify screen.
endif.
endloop.
2008 Nov 21 10:34 AM
Hi,
you have to do little modification to your selection scree.
yse the following logic which i have used.
*selection-screen begin of block blk11 with frame title text-002.
*parameters : so_plant radiobutton group a USER-COMMAND fcod MODIF ID m1 DEFAULT 'X'.
*parameters : so_ven radiobutton group a MODIF ID m1 .
*parameters : so_cust radiobutton group a MODIF ID m1.
*selection-screen end of block blk11.
*at selection-screen OUTPUT .
PERFORM chng_screen.
*
*
*AT SELECTION-SCREEN.
LOOP AT SCREEN.
IF screen-group1 = 'M2'.
IF screen-input NE '1'.
*
v_flag = 'X'.
ELSE.
clear v_flag.
ENDIF.
ENDIF.
endloop.
*
*form chng_screen.
*LOOP AT SCREEN.
if so_plant = 'X'.
IF screen-group1 = 'M3'.
screen-input = space.
screen-active = 0.
modify screen.
ELSEIF screen-group1 = 'M2'.
screen-input = 1.
screen-active = 1.
modify screen.
ELSEIF screen-group1 = 'M4'.
screen-input = 1.
screen-active = 0.
modify screen.
ENDIF.
ELSEIF SO_VEN = 'X'.
IF screen-group1 = 'M2'.
screen-input = space.
screen-active = 0.
modify screen.
elseif screen-group1 = 'M3'.
screen-input = 1.
screen-active = 1.
modify screen.
ELSEIF screen-group1 = 'M4'.
screen-input = 1.
screen-active = 0.
modify screen.
ENDIF.
ELSEIF SO_CUST = 'X'.
IF screen-group1 = 'M2'.
screen-input = space.
screen-active = 0.
modify screen.
ELSEIF screen-group1 = 'M3'.
screen-input = 1.
screen-active = 0.
modify screen.
ELSEIF screen-group1 = 'M4'.
screen-input = 1.
screen-active = 1.
modify screen.
ENDIF.
*
ENDIF.
*ENDLOOP.
*
*endform.
2008 Nov 21 10:47 AM
Hi,
Try like this.....
TABLES : tvko , tvtw , tspa , vbrk.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS: p_sale RADIOBUTTON GROUP grp DEFAULT 'X' USER-COMMAND flag1, " dont forget to add user-command
p_bill RADIOBUTTON GROUP grp .
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
* PARAMETERS MODIF ID SAL.
SELECT-OPTIONS: s_vkorg FOR tvko-vkorg MODIF ID sal,
s_vtweg FOR tvtw-vtweg ID sal,
s_spart FOR tspa-spart MODIF ID sal.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_vkorg1 FOR tvko-vkorg MODIF ID bil,
s_vtweg1 FOR tvtw-vtweg MODIF ID bil,
s_spart1 FOR tspa-spart MODIF ID bil,
s_fkdat FOR vbrk-fkdat MODIF ID bil.
SELECTION-SCREEN END OF BLOCK blk3.
AT SELECTION-SCREEN OUTPUT.
IF p_sale = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'BIL'.
screen-active = '0'.
ELSE.
screen-active = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF p_bill = 'X'.
BREAK-POINT.
LOOP AT SCREEN.
IF screen-group1 = 'SAL'.
screen-active = '0'.
ELSE.
screen-active = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
Regards
Debarshi
2008 Nov 21 11:47 AM
2008 Nov 21 10:52 AM
hi Sabu
Check this code , hope it helps you.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS: p_sale RADIOBUTTON GROUP grp USER-COMMAND ud DEFAULT 'X',
p_bill RADIOBUTTON GROUP grp .
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
* parameters modif id sal.
SELECT-OPTIONS: s_vkorg FOR tvko-vkorg MODIF ID sal,
s_vtweg FOR tvtw-vtweg MODIF ID sal,
s_spart FOR tspa-spart MODIF ID sal.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_vkorg1 FOR tvko-vkorg MODIF ID bil,
s_vtweg1 FOR tvtw-vtweg MODIF ID bil,
s_spart1 FOR tspa-spart MODIF ID bil,
s_fkdat FOR vbrk-fkdat MODIF ID bil.
SELECTION-SCREEN END OF BLOCK blk3.
AT SELECTION-SCREEN OUTPUT.
IF p_sale = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'BIL'.
screen-active = 0.
MODIFY SCREEN.
ELSE.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSEIF p_bill = 'X'.
LOOP AT SCREEN.
IF screen-group1 = 'SAL'.
screen-active = 0.
MODIFY SCREEN.
ELSE.
screen-active = 1.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
Thank & Regards
2008 Nov 21 10:55 AM
As you have put select options as mandatory, you need to enter the values for those fields and then change the radiobutton from p_sale to p_bill. Else the hidden fields cannot be recovered.
definition of USE-COMMAND is mandatory at the radiobutton, else the selection-screen output event won't be triggered when the radiobutton is changed from P_SALE to P_BILL.
Code:-
TABLES: tvko,
tvtw,
tspa,
vbrk.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS: p_sale RADIOBUTTON GROUP grp Default 'X' USER-COMMAND abc ,
p_bill RADIOBUTTON GROUP grp.
SELECTION-SCREEN END OF BLOCK blk1.
SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-002.
*PARAMETERS MODIF ID SAL.
SELECT-OPTIONS: s_vkorg FOR tvko-vkorg OBLIGATORY MODIF ID sal,
s_vtweg FOR tvtw-vtweg OBLIGATORY MODIF ID sal,
s_spart FOR tspa-spart OBLIGATORY MODIF ID sal.
SELECTION-SCREEN END OF BLOCK blk2.
SELECTION-SCREEN BEGIN OF BLOCK blk3 WITH FRAME TITLE text-003.
SELECT-OPTIONS: s_vkorg1 FOR tvko-vkorg OBLIGATORY MODIF ID bil,
s_vtweg1 FOR tvtw-vtweg OBLIGATORY MODIF ID bil,
s_spart1 FOR tspa-spart OBLIGATORY MODIF ID bil,
s_fkdat FOR vbrk-fkdat OBLIGATORY MODIF ID bil.
SELECTION-SCREEN END OF BLOCK blk3.
INITIALIZATION.
AT SELECTION-SCREEN OUTPUT.
IF NOT p_sale IS INITIAL.
PERFORM hide_block3.
ENDIF.
&----
*& Form HIDE_BLOCK3
&----
text
----
--> p1 text
<-- p2 text
----
form HIDE_BLOCK3 .
LOOP AT SCREEN.
IF screen-group1 CS 'BIL'.
screen-active = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
endform.