Quantcast
Channel: SCN : Document List - ABAP Development
Viewing all articles
Browse latest Browse all 935

A Dirty Little Trick to use Check-boxes to Simulate Radio-buttons

$
0
0

The Problem:

 

How many times has this happened to you: you’re sitting at your desk, quietly banging away at the keyboard, pumping out simple, elegant ABAP code, when you user sends you an e-mail saying “and oh, by the way, those two radio-buttons on the new screen – both should be de-selected.” The request, although unusual, is reasonable. Users must be forced to make decision about which option to choose. There should be no default button selected.

 

Never? Well, OK, it doesn’t happen very often, but I got a request like this a while ago, and it turned out not to be so simple.

 

INITIALizing both of them to blank didn’t work. The first radio-button was still selected.

 

I tried using three radio-buttons, selecting and hiding the first one. Still no luck – the first one was still selected.

 

Finally, I searched SCN, and found a few discussions about this, suggesting the same things that I had tried but found that didn’t work.

 

What to do?

 

The Solution:

 

This is the code that I came up with:

 

REPORT ztest.

DATAold_no,
      old_yes
.

SELECTION-SCREEN BEGIN OF LINE.

SELECTION-SCREEN POSITION 1.
SELECTION-SCREEN COMMENT 1(21) text-001.           “ Pick one

SELECTION-SCREEN POSITION 23.
PARAMETERS: p_no AS CHECKBOX USER-COMMAND ucom1.
SELECTION-SCREEN COMMENT 25(2) text-002.           “ Yes

SELECTION-SCREEN POSITION 30.
PARAMETERS  p_yes AS CHECKBOX USER-COMMAND ucom2.
SELECTION-SCREEN COMMENT 32(3) text-003.           “ No

SELECTION-SCREEN END   OF LINE.

AT SELECTION-SCREEN.

     
IF sy-ucomm = 'UCOM1'.
          
IF p_no IS INITIAL.
               
IF old_no IS INITIAL.
                     p_yes  
= 'X'.
                     old_yes
= 'X'.
                     old_no 
= ' '.
               
ELSE.
                     p_no 
= 'X'.
                     p_yes
= ' '.
               
ENDIF.
          
ELSE.
                p_yes  
= ' '.
                old_yes
= ' '.
                old_no 
= 'X'.
          
ENDIF.
     
ELSEIF sy-ucomm = 'UCOM2'.
          
IF p_yes IS INITIAL.
               
IF old_yes IS INITIAL.
                     p_no   
= 'X'.
                     old_no 
= 'X'.
                     old_yes
= ' '.
               
ELSE.
                     p_yes
= 'X'.
                     p_no 
= ' '.
               
ENDIF.
          
ELSE.
               p_no   
= ' '.
               old_no 
= ' '.
               old_yes
= 'X'.
          
ENDIF.
     
ENDIF
.

 

A couple of caveats:

 

The code was developed for a module pool screen; this is a report.

 

This code can be modified to handle multiple check-boxes.


Viewing all articles
Browse latest Browse all 935

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>