Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Radiobutton group with parameters

Former Member
0 Kudos

Hi,

I've a set of Radiobutton groups in my selection screen.

On clicking one particular radio button group, two parameter fields will be displayed for that radio button.

Out of the two parameters , user has to enter atleast one to execute the program.

If the user didnt enter anything and hit execute then an error message should be displayed to "Enter atleast one"

if the user enters anyone of the field, then validation should happen for that field alone to check whether he entered right data or not?

In which event I can right this, I have tried in at-selection screen and at selection screen on paramter and at selection screen on radhio button group g1.But not able to resolve.

Experts, any thoughts?

Thanks in adv.

<removed_by_moderator>

Regards.

Ponraj.s.

Edited by: Julius Bussche on Sep 10, 2009 8:47 AM

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Hi,

FOR VALIDATION use at selection-screen on field event... try as follows

at selection-screen on p_field1.

select field

from dbtab

into w_field

where field = p_field1.

if sy-subrc ne 0.

message 'INVALID INPUT' type 'E'.

endif.

chk the following code........


parameters:
p_r1 radiobutton group RAD user-command FCODE,
p_r2 radiobutton group RAD,
p_carrid type spfli-carrid obligatory modif id MOD,
p_connid type spfli-connid modif id MOD,
p_fld3 type i  obligatory modif id MO1,
p_fld4 type i modif id MO1.
data:
w_carrid type spfli-carrid,
w_connid type spfli-connid.

at selection-screen output.

if p_r2 = 'X'.

loop at screen.
  IF screen-group1 = 'MOD'.
   screen-active = 0.
   modify screen.

  ENDIF.
endloop.

else.
loop at screen.
  if screen-group1 = 'MO1'.
   screen-active = 0.
   modify screen.
   ENDIF.

endloop.

endif.

AT SELECTION-SCREEN ON P_CARRID.
  IF P_CARRID IS  not INITIAL.
  select single carrid
  from scarr
  into w_carrid
  where carrid eq p_carrid.
  if sy-subrc ne 0.
    message 'Invalid input' type 'E'.
    endif.
  ENDIF.

Regards,

Mdi.Deeba

Edited by: Mdi.Deeba on Sep 10, 2009 1:12 PM

12 REPLIES 12

Former Member
0 Kudos

Hi,

FOR VALIDATION use at selection-screen on field event... try as follows

at selection-screen on p_field1.

select field

from dbtab

into w_field

where field = p_field1.

if sy-subrc ne 0.

message 'INVALID INPUT' type 'E'.

endif.

chk the following code........


parameters:
p_r1 radiobutton group RAD user-command FCODE,
p_r2 radiobutton group RAD,
p_carrid type spfli-carrid obligatory modif id MOD,
p_connid type spfli-connid modif id MOD,
p_fld3 type i  obligatory modif id MO1,
p_fld4 type i modif id MO1.
data:
w_carrid type spfli-carrid,
w_connid type spfli-connid.

at selection-screen output.

if p_r2 = 'X'.

loop at screen.
  IF screen-group1 = 'MOD'.
   screen-active = 0.
   modify screen.

  ENDIF.
endloop.

else.
loop at screen.
  if screen-group1 = 'MO1'.
   screen-active = 0.
   modify screen.
   ENDIF.

endloop.

endif.

AT SELECTION-SCREEN ON P_CARRID.
  IF P_CARRID IS  not INITIAL.
  select single carrid
  from scarr
  into w_carrid
  where carrid eq p_carrid.
  if sy-subrc ne 0.
    message 'Invalid input' type 'E'.
    endif.
  ENDIF.

Regards,

Mdi.Deeba

Edited by: Mdi.Deeba on Sep 10, 2009 1:12 PM

Former Member
0 Kudos

Please SEARCH in SCN before posting

0 Kudos

Hi Vikranth,

I have alread searched in SDN and didnt find anything related to my requirement.

How do you know that I dint search before?

Others,

I can't give both parameter field as obligatory while declaring itself, bcoz it will prompt user to enter both fields.

After entering we can do the validation for parameters,using At selection screen on P1 and At selection screen on P2.

But how do I give error message to user if he didnt enter anything and hit execute?

Vijay , your code doesnt suit my requirement.

Thanks,

Ponraj.s.

0 Kudos

Hi,

Try using code below:

SELECTION-SCREEN BEGIN OF BLOCK blck WITH FRAME TITLE text-001.

PARAMETERS: p_dialog TYPE c RADIOBUTTON GROUP grp1 DEFAULT 'X'
                            USER-COMMAND      com MODIF ID mod,
            p_backgr TYPE c RADIOBUTTON GROUP grp1,
            p_belnr  TYPE rbkp-belnr,
            p_gjahr  TYPE rbkp-gjahr,
            p_cpudt  TYPE rbkp-cpudt.


SELECT-OPTIONS: so_bukrs FOR rbkp-bukrs.
SELECTION-SCREEN END   OF BLOCK blck.


AT SELECTION-SCREEN OUTPUT.

*---Change Screen layout depending upon whether it is Online Execution
*---of Program or it is Background Execution.

  IF NOT p_dialog IS INITIAL.

    LOOP AT SCREEN.
      CASE screen-name.
        WHEN 'SO_BUKRS-LOW'.
          screen-active = c_0.
          MODIFY SCREEN.
        WHEN 'SO_BUKRS-HIGH'.
          screen-active = c_0.
          MODIFY SCREEN.
        WHEN 'P_BELNR'.
          screen-active = c_1.
          MODIFY SCREEN.
        WHEN 'P_GJAHR'.
          screen-active = c_1.
          MODIFY SCREEN.
        WHEN 'P_CPUDT'.
          screen-active = c_0.
          MODIFY SCREEN.
      ENDCASE.
    ENDLOOP.

  ELSE.

    LOOP AT SCREEN.
      CASE screen-name.
        WHEN 'SO_BUKRS-LOW'.
          screen-active = c_1.
          MODIFY SCREEN.
        WHEN 'SO_BUKRS-HIGH'.
          screen-active = c_1.
          MODIFY SCREEN.
        WHEN 'P_BELNR'.
          screen-active = c_0.
          MODIFY SCREEN.
        WHEN 'P_GJAHR'.
          screen-active = c_0.
          MODIFY SCREEN.
        WHEN 'P_CPUDT'.
          screen-active = c_1.
          MODIFY SCREEN.
      ENDCASE.
    ENDLOOP.

  ENDIF."IF NOT p_dialog IS INITIAL.

 IF NOT p_dialog IS INITIAL AND

  ( p_belnr IS INITIAL AND p_gjahr IS INITIAL ).

    MESSAGE 'Enter at least one parameter'  TYPE 'S' DISPLAY LIKE 'E'.
    SET SCREEN 0.
ENDIF.

KR Jaideep,

0 Kudos

The above code is giving error message on clicking F8 fisrt time itself(at the time of selection screen diplays from the code on clicking F8)

0 Kudos

Hi,

My mistake try the code below. I forgot to add start-of-selection event.

TABLES: rbkp.

SELECTION-SCREEN BEGIN OF BLOCK blck WITH FRAME TITLE text-001.

PARAMETERS: p_dialog TYPE c RADIOBUTTON GROUP grp1 DEFAULT 'X'
                            USER-COMMAND      com MODIF ID mod,
            p_backgr TYPE c RADIOBUTTON GROUP grp1,
            p_belnr  TYPE rbkp-belnr,
            p_gjahr  TYPE rbkp-gjahr,
            p_cpudt  TYPE rbkp-cpudt.


SELECT-OPTIONS: so_bukrs FOR rbkp-bukrs.
SELECTION-SCREEN END   OF BLOCK blck.


AT SELECTION-SCREEN OUTPUT.

*---Change Screen layout depending upon whether it is Online Execution
*---of Program or it is Background Execution.

  CONSTANTS: c_0 TYPE c VALUE '0',
            c_1 TYPE c VALUE '1'.

  IF NOT p_dialog IS INITIAL.

    LOOP AT SCREEN.
      CASE screen-name.
        WHEN 'SO_BUKRS-LOW'.
          screen-active = c_0.
          MODIFY SCREEN.
        WHEN 'SO_BUKRS-HIGH'.
          screen-active = c_0.
          MODIFY SCREEN.
        WHEN 'P_BELNR'.
          screen-active = c_1.
          MODIFY SCREEN.
        WHEN 'P_GJAHR'.
          screen-active = c_1.
          MODIFY SCREEN.
        WHEN 'P_CPUDT'.
          screen-active = c_0.
          MODIFY SCREEN.
      ENDCASE.
    ENDLOOP.

  ELSE.

    LOOP AT SCREEN.
      CASE screen-name.
        WHEN 'SO_BUKRS-LOW'.
          screen-active = c_1.
          MODIFY SCREEN.
        WHEN 'SO_BUKRS-HIGH'.
          screen-active = c_1.
          MODIFY SCREEN.
        WHEN 'P_BELNR'.
          screen-active = c_0.
          MODIFY SCREEN.
        WHEN 'P_GJAHR'.
          screen-active = c_0.
          MODIFY SCREEN.
        WHEN 'P_CPUDT'.
          screen-active = c_1.
          MODIFY SCREEN.
      ENDCASE.
    ENDLOOP.

  ENDIF."IF NOT p_dialog IS INITIAL.

START-OF-SELECTION.

  IF NOT p_dialog IS INITIAL AND

   ( p_belnr IS INITIAL AND p_gjahr IS INITIAL ).

    MESSAGE 'Enter at least one parameter'  TYPE 'S' DISPLAY LIKE 'E'.
    SET SCREEN 0.
  ENDIF.

KR Jaideep,

0 Kudos

As Jaideep said it can be resolved by adding validations in Start-Of-Selection event.But in my project there shouldn't be any validation in SOS.

So I fixed this giving default value in one of the paramter. so first time it wont throw error, if user makes it blank and hit execute it will throw an error message.

Thanks for all your inputs.

jayanthi_jayaraman
Active Contributor
0 Kudos

Hi,

You can do it on at selection-screen on parameter.

Before you do, check the parameter is not initial.

if not p_parameter is initial.

....validations here.

endif.

Former Member
0 Kudos

Hi,

You can mention obligatory in the parameters field.

For example

parameters: a type i obligatory

b type i obligatory

here a and b are your parameter fields.

Regards

Harini.S

Former Member
0 Kudos

Hi,

Try this code,

TABLES : KNA1.

TYPES : BEGIN OF TY_KNA1,

KUNNR TYPE KNA1-KUNNR,

NAME1 TYPE KNA1-NAME1,

END OF TY_KNA1.

DATA : T_KNA1 TYPE TY_KNA1 OCCURS 1,

W_KNA1 TYPE TY_KNA1.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-T01.

PARAMETERS: P_KUNNR TYPE KNA1-KUNNR OBLIGATORY,

P_VBELN TYPE VBAK-VBELN,

R1 RADIOBUTTON GROUP RAD USER-COMMAND FLAG,

R2 RADIOBUTTON GROUP RAD.

SELECTION-SCREEN END OF BLOCK B1.

SELECT KUNNR NAME1 FROM KNA1 INTO TABLE T_KNA1 WHERE KUNNR = P_KUNNR.

IF SY-SUBRC NE 0.

MESSAGE 'invalid input type' TYPE 'E'.

ELSE.

LOOP AT T_KNA1 INTO W_KNA1.

WRITE:/ W_KNA1-KUNNR,

W_KNA1-NAME1.

ENDLOOP.

ENDIF.

Regards,

Vijay

Former Member
0 Kudos

Pls Go through the example for Field Validation on selection screen .

DATA:date TYPE i .

SELECT-OPTIONS :

s_date FOR vbak-erdat OBLIGATORY DEFAULT sy-datum MODIF ID det .

AT SELECTION-SCREEN ON s_date.

IF rd = 'X' .

date = s_date-high - s_date-low .

ELSEIF rs = 'X' .

date = su_date-high - su_date-low .

ELSEIF rp = 'X' .

date = sp_date-high - sp_date-low .

ENDIF .

IF date GT 92 .

MESSAGE 'Enter The Date Range Within Three Months ' TYPE 'E' .

ENDIF .

Edited by: Sachhidananda Tripathy on Sep 10, 2009 8:49 AM

Former Member
0 Kudos

Resolved