Skip to Content

Problem with mandatory fields

Hello,

i have 3 radio buttons, and 2 select-options. In first term, the 2 select-options are mandatory, but i need that when the radio buttons change, the first select-option set up to not mandatory.

I have some code but when i change the radio button, SAP gives me an error and tell me to fill all mandatory fields.

Any suggestion?

Thank you!!!

Add a comment
10|10000 characters needed characters exceeded

Assigned Tags

Related questions

6 Answers

  • Best Answer
    author's profile photo Former Member
    Former Member
    Posted on Aug 11, 2008 at 09:38 AM

    Hi,

    I suggest you not to mark the fields as mandatory. Each time you change the radio button a error message is issued since Mandatory field check is performed automatically by the system. Instead you can check the fields in AT SELECTION-SCREEN event and issue an error message if they are initial (only when the user clicks on execute button, by checking sy-ucomm).

    I had a similar requirement, Please check the following code snippets.

    * Selection screen elements.............................................
    SELECTION-SCREEN BEGIN OF BLOCK rbg WITH FRAME TITLE tit.
    
    PARAMETERS:
      r_vendor RADIOBUTTON GROUP rad USER-COMMAND vendor,
      r_ship   RADIOBUTTON GROUP rad DEFAULT 'X'.
    
    SELECTION-SCREEN END OF BLOCK rbg.
    
    SELECTION-SCREEN BEGIN OF BLOCK blk WITH FRAME TITLE tit1.
    
    SELECT-OPTIONS:
      s_matnr FOR lips-matnr NO INTERVALS,
      s_vsbed FOR likp-vsbed MODIF ID so1 NO INTERVALS,
      s_wadat FOR likp-wadat_ist NO-EXTENSION.
    
    SELECTION-SCREEN END OF BLOCK blk.
    

    The following are the selection screen Events.

    *----------------------------------------------------------------------*
    *                  AT SELECTION-SCREEN OUTPUT EVENT                    *
    *----------------------------------------------------------------------*
    
    AT SELECTION-SCREEN OUTPUT.
    
    * To set the selection screen attributes.
      PERFORM set_screen_attributes.
    
    *----------------------------------------------------------------------*
    *                      AT SELECTION-SCREEN EVENT                       *
    *----------------------------------------------------------------------*
    
    AT SELECTION-SCREEN.
    
      MOVE sy-ucomm TO sscrfields-ucomm.
      CHECK sscrfields-ucomm EQ 'ONLI'.
    
    * To validate the selection screen fields.
      PERFORM validate_sel_screen_fields.
    

    In the following code, I am writing the logic for hiding or displaying select-options based on the radio-button selected.

    *----------------------------------------------------------------------*
    *  FORM SET_SCREEN_ATTRIBUTES                                          *
    *----------------------------------------------------------------------*
    *  Subroutine for setting the selection screen display attributes      *
    *----------------------------------------------------------------------*
    *  There are no interface parameters to be passed to this subroutine.  *
    *----------------------------------------------------------------------*
    FORM set_screen_attributes .
    
      IF r_vendor EQ c_flag_x.
        w_check_group = c_flag_x.
      ENDIF.                               " IF R_VENDOR EQ C_FLAG_X
    
      IF w_check_group EQ c_flag_x.
        CLEAR w_check_group.
        LOOP AT SCREEN.
          IF screen-group1 = 'SO1'.
            screen-active = '0'.
            screen-invisible = '1'.
            MODIFY SCREEN.
          ENDIF.                           " IF SCREEN-GROUP1 = 'SO1'
        ENDLOOP.                           " LOOP AT SCREEN
      ELSE.
        LOOP AT SCREEN.
          IF screen-group1 = 'SO1'.
            screen-active = '1'.
            screen-invisible = '0'.
            MODIFY SCREEN.
          ENDIF.                           " IF SCREEN-GROUP1 = 'SO1'
        ENDLOOP.                           " LOOP AT SCREEN
      ENDIF.                               " IF W_CHECK_GROUP EQ C_FLAG_X
    
    ENDFORM.                               " SET_SCREEN_ATTRIBUTES
    

    Instead of marking select-options as mandatory (which are infact mandatory), i am issuing an error message if they are left blank and executed.

    *----------------------------------------------------------------------*
    *  FORM VALIDATE_SEL_SCREEN_FIELDS                                     *
    *----------------------------------------------------------------------*
    *  Subroutine for validating selection screen fields                   *
    *----------------------------------------------------------------------*
    *  There are no interface parameters to be passed to this subroutine.  *
    *----------------------------------------------------------------------*
    FORM validate_sel_screen_fields .
    
      IF s_wadat IS INITIAL.
        MESSAGE e888(sabapdocu)
           WITH text-dat.
      ELSEIF s_matnr IS INITIAL.
        MESSAGE e888(sabapdocu)
           WITH text-mti.
      ENDIF.                               " IF S_WADAT IS INITIAL
    
    ENDFORM.                               " VALIDATE_SEL_SCREEN_FIELDS
    

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Aug 11, 2008 at 08:06 AM

    Hi...

    Whenever you dont want to fill the Select Option on Radio Button Change...Screen-Input for that field.

    Thanks

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Aug 11, 2008 at 09:26 AM

    Hi ,

    Initailly donot include the obligatory keyword . Instead you can use this code.

    at selection-screen output.

    <Your Condition>

    Loop at screen .

    if screen-name = 'S_MAR' " name of the selection-option.

    screen-required = '1'.

    modify screen.

    endif.

    endloop.

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Aug 11, 2008 at 09:38 AM

    Hi Try like this..

    
    if radio_b1 eq 'X'.
      if p_filed1 is initial.
        message e(xxx).
      endif.
     if p_filed2 is initial.
       message e(xxx).
     endif.
    else if radio_b2 eq 'X'.
    " check what ever fields u want to keep as mandatory.
    endif.
    
    continue with u r logic...
    
    

    Regards,

    Sunil Kumar M........

    Add a comment
    10|10000 characters needed characters exceeded

  • author's profile photo Former Member
    Former Member
    Posted on Aug 11, 2008 at 09:40 AM

    Hi,

    try this code.

    At selection-screen output.
    if w_flag eq 'x'.
    loop at screen.
    if screen-name eq 'xyz'.
     screen-input = 0.
    modify screen.
    endloop.
    endif.
    clear w_flag.
    
    at selection-screen.
    if rad_1 ne 'x'.
    w_flag = 'x'.
    endif.
      if w_flag ne 'x'.
     if s_xyz is initial.
      ur eror message.
    endif.
    endif.
    

    .

    hope it will help you.

    regards

    Manjari.

    Add a comment
    10|10000 characters needed characters exceeded

  • Posted on Aug 11, 2008 at 09:55 AM

    Instead of that you can do this..

    Based on the radio button check the values and Raise the error message.

    REPORT  ztest_radio.
    
    TABLES: sflight.
    
    SELECT-OPTIONS: carrid FOR sflight-carrid,
                                 fldate FOR sflight-fldate.
    PARAMETERS: rcar RADIOBUTTON GROUP g1 DEFAULT 'X' USER-COMMAND aaa,
                rdat RADIOBUTTON GROUP g1.
    
    AT SELECTION-SCREEN.
      IF sy-ucomm = 'ONLI'.
        IF rcar = 'X' AND
         carrid-low IS INITIAL.
          MESSAGE 'enter carrid ' TYPE 'E'.
        ENDIF.
        IF rdat = 'X' AND
         fldate-low IS INITIAL.
          MESSAGE 'enter Fldate' TYPE 'E'.
        ENDIF.
      ENDIF.

    Regards

    Vijay Babu Dudla

    Add a comment
    10|10000 characters needed characters exceeded

Before answering

You should only submit an answer when you are proposing a solution to the poster's problem. If you want the poster to clarify the question or provide more information, please leave a comment instead, requesting additional details. When answering, please include specifics, such as step-by-step instructions, context for the solution, and links to useful resources. Also, please make sure that you answer complies with our Rules of Engagement.
You must be Logged in to submit an answer.

Up to 10 attachments (including images) can be used with a maximum of 1.0 MB each and 10.5 MB total.