2015 Dec 26 3:21 AM
Hi guys i've problem when using loop at screen.
The cannot change when click the radio button. But screen can change when i double click.
it's my code
SELECTION-SCREEN BEGIN OF BLOCK div WITH FRAME TITLE text-000 NO INTERVALS.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) FOR FIELD faufnr MODIF ID sve.
SELECT-OPTIONS: faufnr FOR afpo-aufnr MODIF ID sve.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) FOR FIELD fqty MODIF ID sve.
SELECT-OPTIONS: fqty FOR afpo-aufnr MODIF ID sve.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) FOR FIELD faufnr1 MODIF ID del.
SELECT-OPTIONS: faufnr1 FOR afpo-aufnr MODIF ID del.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
parameters: save radiobutton group grp1 default 'X'.
selection-screen comment (5) for field save.
selection-screen position 10.
selection-screen position 15.
parameters: print radiobutton group grp1.
selection-screen comment (5) for field print.
selection-screen position 25.
parameters: delete radiobutton group grp1.
selection-screen comment (5) for field delete.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK div.
AT SELECTION-SCREEN OUTPUT.
loop at screen.
if SCREEN-GROUP1 = 'SVE'. "Name field
if save eq 'X' or print eq 'X'.
screen-active = 1.
else.
screen-active = 0.
endif.
modify screen.
elseif SCREEN-GROUP1 = 'DEL'.
if delete eq 'X'.
screen-active = 1.
else.
screen-active = 0.
endif.
modify screen.
endif.
endloop.
START-OF-SELECTION.
2015 Dec 26 4:12 AM
Hi ,
You need to use " USER-COMMAND ". along with the radio button in order to trigger the selection screen event.
e.g.parameters: save radiobutton group grp1 default 'X' USER-COMMAND ABC.
Regards,
Vishal
2015 Dec 26 5:57 AM
hi,
use USER-COMMAND with radio buttons and do remember the sequence in which events trigger and write your code according to that and don't use MODIFY SCREEN twice in the same loop..
thanks!!
2015 Dec 26 8:39 PM
Chintu Sharma wrote:
don't use MODIFY SCREEN twice in the same loop.
No - I think that is handled correctly here.
Rob
2015 Dec 27 6:22 AM
Hi Afif,
Yes, you need to add USER-COMMAND and handle that at the AT SELECTION-SCREEN event:
(I need to change your example to SFLIGHT table due my testing environment).
TABLES: sflight.
TABLES: sscrfields.
SELECTION-SCREEN BEGIN OF BLOCK div WITH FRAME TITLE text-000 NO INTERVALS.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) FOR FIELD faufnr MODIF ID sve.
SELECT-OPTIONS: faufnr FOR sflight-carrid MODIF ID sve.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) FOR FIELD fqty MODIF ID sve.
SELECT-OPTIONS: fqty FOR sflight-connid MODIF ID sve.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT (15) FOR FIELD faufnr1 MODIF ID del.
SELECT-OPTIONS: faufnr1 FOR sflight-fldate MODIF ID del.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS: save RADIOBUTTON GROUP grp1 DEFAULT 'X' USER-COMMAND radiocom.
SELECTION-SCREEN COMMENT (5) FOR FIELD save.
SELECTION-SCREEN POSITION 10.
SELECTION-SCREEN POSITION 15.
PARAMETERS: print RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT (5) FOR FIELD print.
SELECTION-SCREEN POSITION 25.
PARAMETERS: delete RADIOBUTTON GROUP grp1.
SELECTION-SCREEN COMMENT (5) FOR FIELD delete.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK div.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-group1 = 'SVE'. "Name field
IF save EQ 'X' OR print EQ 'X'.
screen-active = 1.
ELSE.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ELSEIF screen-group1 = 'DEL'.
IF delete EQ 'X'.
screen-active = 1.
ELSE.
screen-active = 0.
ENDIF.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
AT SELECTION-SCREEN.
IF sscrfields-ucomm = 'RADIOCOM'.
BREAK-POINT.
ENDIF.
START-OF-SELECTION.
WRITE: / 'test'.
Take care!
Flavio