Application Development and Automation 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: 
Read only

about selection screen

Former Member
0 Likes
752

hi all, could u pls help me on my thread. i have two fields in myselection screen.

like company code this is a select-options field,and one is parameter field is country.

if the user select company code i need to disable the parameter field.

else vice versa.

means not to allow the user to give both values.

if possible send me the code.

thank u in advance .

1 ACCEPTED SOLUTION
Read only

sreeramkumar_madisetty
Active Contributor
0 Likes
727

Hi devender

Have a look on this logic.It will help you out.

If you want to do it using Selection screen then it is possible.

for that you have to use AT SELECTION-SCREEN output. event..

See the below code and use it according to your requirement.

======================================

tables: pa0000, pa0001.

parameters: p_rad1 radiobutton group rad1 default 'X' user-command rusr,

p_rad2 radiobutton group rad1.

selection-screen: begin of block blk1 with frame.

select-options: s_pernr for pa0000-pernr modif id ABC.

selection-screen: end of block blk1.

selection-screen: begin of block blk2 with frame.

select-options: s_stat2 for pa0000-stat2 modif id DEF.

select-options: s_werks for pa0001-werks modif id DEF.

selection-screen: end of block blk2.

AT SELECTION-SCREEN output.

LOOP AT SCREEN.

IF SCREEN-GROUP1 = 'ABC'.

IF p_rad1 = 'X'.

SCREEN-ACTIVE = 1.

ELSE.

SCREEN-ACTIVE = 0.

ENDIF.

MODIFY SCREEN.

ENDIF.

IF SCREEN-GROUP1 = 'DEF'.

IF p_rad2 = 'X'.

SCREEN-ACTIVE = 1.

ELSE.

SCREEN-ACTIVE = 0.

ENDIF.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

=====================================

Hope it will solve your problem.

Regards,

Sree

6 REPLIES 6
Read only

sreeramkumar_madisetty
Active Contributor
0 Likes
728

Hi devender

Have a look on this logic.It will help you out.

If you want to do it using Selection screen then it is possible.

for that you have to use AT SELECTION-SCREEN output. event..

See the below code and use it according to your requirement.

======================================

tables: pa0000, pa0001.

parameters: p_rad1 radiobutton group rad1 default 'X' user-command rusr,

p_rad2 radiobutton group rad1.

selection-screen: begin of block blk1 with frame.

select-options: s_pernr for pa0000-pernr modif id ABC.

selection-screen: end of block blk1.

selection-screen: begin of block blk2 with frame.

select-options: s_stat2 for pa0000-stat2 modif id DEF.

select-options: s_werks for pa0001-werks modif id DEF.

selection-screen: end of block blk2.

AT SELECTION-SCREEN output.

LOOP AT SCREEN.

IF SCREEN-GROUP1 = 'ABC'.

IF p_rad1 = 'X'.

SCREEN-ACTIVE = 1.

ELSE.

SCREEN-ACTIVE = 0.

ENDIF.

MODIFY SCREEN.

ENDIF.

IF SCREEN-GROUP1 = 'DEF'.

IF p_rad2 = 'X'.

SCREEN-ACTIVE = 1.

ELSE.

SCREEN-ACTIVE = 0.

ENDIF.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

=====================================

Hope it will solve your problem.

Regards,

Sree

Read only

dhruv_shah3
Active Contributor
0 Likes
727

Hi Devender,

Pls look at the following code, it has the same functionality.


*&---------------------------------------------------------------------*
*& Report  ZPA_SD_ADANI_LOADING_SHEET
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZPA_SD_ADANI_LOADING_SHEET MESSAGE-ID ZPA_MESG.

TABLES:LIKP,VBUK,TVSWZ,T001W.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS      VSTEL TYPE LIKP-VSTEL ."OBLIGATORY.
SELECT-OPTIONS: ERDAT FOR LIKP-ERDAT," OBLIGATORY,
                VBELN FOR VBUK-VBELN MODIF ID VAL.
PARAMETERS:     CLUDEL RADIOBUTTON GROUP GR USER-COMMAND RAD DEFAULT 'X',
                UNCLUDEL RADIOBUTTON GROUP GR .
SELECTION-SCREEN END OF BLOCK B1.

TYPE-POOLS: SLIS.
INCLUDE <ICON>.
DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
DATA: GT_HEADER TYPE SLIS_T_LISTHEADER.
DATA: GS_LAYOUT TYPE SLIS_LAYOUT_ALV.
DATA: GT_EVENTS TYPE SLIS_T_EVENT.
DATA: FLSORT TYPE SLIS_T_SORTINFO_ALV.

CONSTANTS:
FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE',
FORMNAME_END_OF_PAGE TYPE SLIS_FORMNAME VALUE 'END_OF_PAGE'.


TYPES : BEGIN OF TY_LIKP,
         VBELN TYPE VBELN_VL, "Delivery
         ERDAT TYPE ERDAT,    "Date on Which Record Was Created
         VSTEL TYPE VSTEL,    "Shipping Point/Receiving Point
         LFART TYPE LFART,    "Delivery Type
        END OF TY_LIKP,

        BEGIN OF TY_LIPS,
         VBELN TYPE VBELN_VL,  "Delivery
         POSNR TYPE POSNR_VL,  "Delivery Item
         MATNR TYPE MATNR,     "Material Number
         LGORT TYPE LGORT_D,   "Storage Location
         CHARG TYPE CHARG_D,   "Batch Number
         LFIMG TYPE LFIMG,     "Actual quantity delivered (in sales units)
         ARKTX TYPE ARKTX,     "Short text for sales order item
        END OF TY_LIPS,

        BEGIN OF TY_FINAL,
         VBELN TYPE VBELN_VL,  "Delivery
         LGORT TYPE LGORT_D,   "Storage Location
         POSNR TYPE POSNR_VL,  "Delivery Item
         MATNR TYPE MATNR,     "Material Number
         ARKTX TYPE ARKTX,     "Short text for sales order item
         CHARG TYPE CHARG_D,   "Batch Number
         LFIMG TYPE LFIMG,     "Actual quantity delivered (in sales units)
        END OF TY_FINAL.

DATA: IT_LIKP TYPE STANDARD TABLE OF TY_LIKP WITH DEFAULT KEY,
      WA_LIKP TYPE TY_LIKP,

      IT_LIPS TYPE STANDARD TABLE OF TY_LIPS WITH DEFAULT KEY,
      WA_LIPS TYPE TY_LIPS,

      IT_FINAL TYPE STANDARD TABLE OF TY_FINAL WITH DEFAULT KEY,
      WA_FINAL TYPE TY_FINAL.



AT SELECTION-SCREEN OUTPUT.
  LOOP AT SCREEN.
    IF CLUDEL = 'X'.
      IF SCREEN-GROUP1 = 'VAL'.
*        SCREEN-REQUIRED = 1.
        SCREEN-INTENSIFIED = 1.
      ENDIF.
    ELSEIF UNCLUDEL = 'X'.
      IF SCREEN-GROUP1 = 'VAL'.
*        SCREEN-REQUIRED = 0.
        SCREEN-INTENSIFIED = 0.
        SCREEN-ACTIVE = 0.
        REFRESH VBELN.
      ENDIF.
    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.

*  at SELECTION-SCREEN .
******************************************************************************************************************
START-OF-SELECTION.
******************************************************************************************************************

    if VSTEL is INITIAL.
      MESSAGE 'pls fil date ' TYPE 'S'.
      LEAVE LIST-PROCESSING.
      call TRANSACTION 'zparesh'.
endif.



  IF CLUDEL = 'X'.

    SELECT SINGLE * FROM TVSWZ
    INTO TVSWZ
    WHERE VSTEL = VSTEL.

    IF SY-SUBRC <> 0 .
      MESSAGE 'NO RECORD FUND' TYPE 'S'.
    ENDIF.

    SELECT SINGLE * FROM T001W
    INTO T001W
    WHERE WERKS = TVSWZ-WERKS.

    IF SY-SUBRC <> 0 .
      MESSAGE 'NO RECORD FUND' TYPE 'S'.
    ENDIF.

    SELECT VBELN ERDAT VSTEL LFART FROM LIKP
    INTO TABLE IT_LIKP
    WHERE
    VBELN = VBELN AND
    VSTEL = VSTEL AND
    ERDAT IN ERDAT AND
    LFART = 'NL'.

    IF SY-SUBRC <> 0 .
      MESSAGE 'NO RECORD FUND' TYPE 'S'.
    ENDIF.


    SELECT VBELN POSNR MATNR LGORT CHARG LFIMG ARKTX FROM LIPS
    INTO TABLE IT_LIPS
    FOR ALL ENTRIES IN IT_LIKP
    WHERE
    VBELN = IT_LIKP-VBELN.

    IF SY-SUBRC <> 0 .
      MESSAGE 'NO RECORD FUND' TYPE 'S'.
    ENDIF.


  ENDIF.




  IF UNCLUDEL = 'X'.

    SELECT SINGLE * FROM TVSWZ
    INTO TVSWZ
    WHERE VSTEL = VSTEL.

    IF SY-SUBRC <> 0 .
      MESSAGE 'NO RECORD FUND' TYPE 'S'.
    ENDIF.

    SELECT SINGLE * FROM T001W
    INTO T001W
    WHERE WERKS = TVSWZ-WERKS.

    IF SY-SUBRC <> 0 .
      MESSAGE 'NO RECORD FUND' TYPE 'S'.
    ENDIF.

    SELECT VBELN ERDAT VSTEL LFART FROM LIKP
    INTO TABLE IT_LIKP
    WHERE
    VSTEL = VSTEL AND
    ERDAT IN ERDAT AND
    LFART = 'NL'.

    IF SY-SUBRC <> 0 .
      MESSAGE 'NO RECORD FUND' TYPE 'S'.
    ENDIF.


    SELECT VBELN POSNR MATNR LGORT CHARG LFIMG ARKTX FROM LIPS
    INTO TABLE IT_LIPS
    FOR ALL ENTRIES IN IT_LIKP
    WHERE
    VBELN = IT_LIKP-VBELN.

    IF SY-SUBRC <> 0 .
      MESSAGE 'NO RECORD FUND' TYPE 'S'.
    ENDIF.



  ENDIF.

  LOOP AT IT_LIPS INTO WA_LIPS.
    READ TABLE IT_LIKP INTO WA_LIKP WITH KEY VBELN = WA_LIPS-VBELN.
    IF SY-SUBRC = 0.
      WA_FINAL-VBELN = WA_LIKP-VBELN.
      WA_FINAL-LGORT = WA_LIPS-LGORT.
      WA_FINAL-POSNR = WA_LIPS-POSNR.
      WA_FINAL-MATNR = WA_LIPS-MATNR.
      WA_FINAL-ARKTX = WA_LIPS-ARKTX.
      WA_FINAL-CHARG = WA_LIPS-CHARG.
      WA_FINAL-LFIMG = WA_LIPS-LFIMG.
      APPEND WA_FINAL TO IT_FINAL.
      CLEAR WA_FINAL.
    ENDIF.
  ENDLOOP.



  PERFORM BUILD_LAYOUT USING GS_LAYOUT.
  PERFORM BUILD_HEADER USING GT_HEADER[].
  PERFORM BUILD_COMMENTRY.
  PERFORM BUILD_EVENTTAB USING GT_EVENTS[].
  PERFORM FIELDCAT_INIT USING GT_FIELDCAT[].
  PERFORM FLDSORT USING FLSORT.
  PERFORM DATA_DISPLAY.
******************************************************************************************************************
FORM BUILD_LAYOUT  USING RS_LAYOUT TYPE SLIS_LAYOUT_ALV.
  RS_LAYOUT-NO_INPUT = 'X'.
  RS_LAYOUT-ZEBRA = 'X'.
  RS_LAYOUT-COLWIDTH_OPTIMIZE = ' '.
  RS_LAYOUT-NO_COLHEAD = ' '.
  RS_LAYOUT-NO_VLINE = ' '.
  RS_LAYOUT-INFO_FIELDNAME = 'WS_COLOR'.
ENDFORM.                    "BUILD_LAYOUT
*&---------------------------------------------------------------------*
*&      Form  BUILD_HEADER
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_HEADER  text
*----------------------------------------------------------------------*
FORM BUILD_HEADER USING RT_HEADER TYPE SLIS_T_LISTHEADER.

  DATA: TP TYPE SLIS_LISTHEADER.
  DATA: TEXT(20) TYPE C,
        DT(10) .

  TP-TYP = 'H'.
  TP-INFO = 'Loading Sheet'.
  APPEND TP TO RT_HEADER.
  CLEAR TP.

  WRITE SY-DATUM TO DT DD/MM/YYYY.
  CONCATENATE 'DATE :' DT INTO TEXT.

  TP-TYP = 'H'.
  TP-INFO = TEXT.
  APPEND TP TO RT_HEADER.
  CLEAR TP.
  CLEAR TEXT.

*  CONCATENATE 'WERKS:' T001W-WERKS INTO TEXT.

  TP-TYP = 'S'.
  TP-INFO = T001W-WERKS.
  APPEND TP TO RT_HEADER.
  CLEAR TP.
  CLEAR TEXT.

*  CONCATENATE 'NAME:' T001W-NAME1 INTO TEXT.

  TP-TYP = 'S'.
  TP-INFO = T001W-NAME1.
  APPEND TP TO RT_HEADER.
  CLEAR TP.
*  CLEAR TEXT.

*  CONCATENATE 'WERKS:' T001W-NAME2 INTO TEXT.

  TP-TYP = 'S'.
  TP-INFO = T001W-NAME2 .
  APPEND TP TO RT_HEADER.
  CLEAR TP.
*  CLEAR TEXT.

  TP-TYP = 'S'.
  TP-INFO = T001W-STRAS .
  APPEND TP TO RT_HEADER.
  CLEAR TP.

  TP-TYP = 'S'.
  TP-INFO = T001W-ORT01 .
  APPEND TP TO RT_HEADER.
  CLEAR TP.

ENDFORM.                    "BUILD_HEADER
*&---------------------------------------------------------------------*
*&      Form  BUILD_COMMENTRY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM BUILD_COMMENTRY.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      IT_LIST_COMMENTARY = GT_HEADER[]
      I_LOGO             = 'ERP'.

ENDFORM.                    "BUILD_COMMENTRY
*&---------------------------------------------------------------------*
*&      Form  BUILD_EVENTTAB
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->LT_EVENTS  text
*----------------------------------------------------------------------*
FORM BUILD_EVENTTAB USING LT_EVENTS TYPE SLIS_T_EVENT.
  DATA: LS_EVENT TYPE SLIS_ALV_EVENT.

  CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
    EXPORTING
      I_LIST_TYPE = 0
    IMPORTING
      ET_EVENTS   = LT_EVENTS.

  READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_TOP_OF_PAGE INTO LS_EVENT.
  IF SY-SUBRC = 0.
    LS_EVENT-FORM = FORMNAME_TOP_OF_PAGE.
    APPEND LS_EVENT TO LT_EVENTS.
  ENDIF.

  READ TABLE LT_EVENTS WITH KEY NAME =  SLIS_EV_END_OF_PAGE INTO LS_EVENT.
  IF SY-SUBRC = 0.
    LS_EVENT-FORM = FORMNAME_END_OF_PAGE.
    APPEND LS_EVENT TO LT_EVENTS.
  ENDIF.
ENDFORM.                    "BUILD_EVENTTAB
*&---------------------------------------------------------------------*
*&      Form  FIELDCAT_INIT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->RT_FIELDCAT  text
*----------------------------------------------------------------------*
FORM FIELDCAT_INIT USING RT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

  DATA: LS_FIELDCAT TYPE SLIS_FIELDCAT_ALV.

  LS_FIELDCAT-FIELDNAME       =  'VBELN'.
  LS_FIELDCAT-SELTEXT_L       =  'Delivery NO'.
  LS_FIELDCAT-KEY        =  'X'.
  LS_FIELDCAT-JUST = 'L'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'LGORT'.
  LS_FIELDCAT-SELTEXT_L      =  'Storage Location'.
  LS_FIELDCAT-KEY        =  'X'.
  LS_FIELDCAT-JUST = 'L'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'POSNR'.
  LS_FIELDCAT-SELTEXT_L      =  'Delivery Item'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'MATNR'.
  LS_FIELDCAT-SELTEXT_L      =  'Material Number'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'ARKTX'.
  LS_FIELDCAT-SELTEXT_L      =  'Material Description'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'CHARG'.
  LS_FIELDCAT-SELTEXT_L      =  'Batch No'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.
  CLEAR LS_FIELDCAT.

  LS_FIELDCAT-FIELDNAME       =  'LFIMG'.
  LS_FIELDCAT-SELTEXT_L      =  'QTY'.
  LS_FIELDCAT-DO_SUM         =  'X'.
  APPEND LS_FIELDCAT TO RT_FIELDCAT.

ENDFORM.                    "FIELDCAT_INIT

*&---------------------------------------------------------------------*
*&      Form  fldsort
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->FLSORT1    text
*----------------------------------------------------------------------*
FORM FLDSORT USING FLSORT1 TYPE SLIS_T_SORTINFO_ALV.
  DATA: LS_FLDSORT TYPE SLIS_SORTINFO_ALV.

  CLEAR LS_FLDSORT.

  LS_FLDSORT-FIELDNAME = 'VBELN'.
  LS_FLDSORT-UP = 'X'.
  LS_FLDSORT-SUBTOT = 'X'.
  APPEND LS_FLDSORT TO FLSORT1.

*  ls_fldsort-fieldname = 'EBELP'.
*  ls_fldsort-up = 'X'.
*  ls_fldsort-subtot = 'X'.
*  APPEND ls_fldsort TO flsort1.

ENDFORM.                    "FIELDCAT_INIT

*&---------------------------------------------------------------------*
*&      Form  DATA_DISPLAY
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM DATA_DISPLAY.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_CALLBACK_PROGRAM     = SY-REPID
      I_CALLBACK_TOP_OF_PAGE = 'BUILD_COMMENTRY'
      IS_LAYOUT              = GS_LAYOUT
      IT_FIELDCAT            = GT_FIELDCAT[]
      I_SAVE                 = 'X'
      IT_SORT                = FLSORT[]
    TABLES
      T_OUTTAB               = IT_FINAL
    EXCEPTIONS
      PROGRAM_ERROR          = 1
      OTHERS                 = 2.

  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
ENDFORM.                    "DATA_DISPLAY

Reward Points if its helpful to You.......

Regards,

DS

Read only

Former Member
0 Likes
727

Devender,

To disable the parameter field you need to loop at screen table and give the "SCREEN-INPUT = 0". Which will make the field disable for the input.

Check the scenario i have pasted here. Here i am taking two radio buttons. If the first button is selected then then the related fields of the other radio button should be disabled.

PARAMETERS:

P_VAR1 TYPE C,

R1 RADIOBUTTON GROUP G1 USER_COMMAND U1,

R2 RADIOBUTTON GROUP G1 DEFAULT 'X',

P_VAR2 TYPE I MODIFID SC1,

P_VAR3 TYPE I MODIFID SC2.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF R1 ='X'.

IF SCREEN-GROUP = 'SC1'.

SCREEN-ACTIVE = 1.

MODIFY SCREEN.

ELSEIF SCREEN-GROUP = 'SC2'.

SCREEN-ACTIVE = 1.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ELSEIF R2 ='X'.

IF SCREEN-GROUP = 'SC1'.

SCREEN-ACTIVE = 1.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ELSEIF SCREEN-GROUP = 'SC2'.

SCREEN-ACTIVE = 1.

MODIFY SCREEN.

ENDIF.

ENDIF.

ENDLOOP.

Reward points if useful.

Read only

Former Member
0 Likes
727

Hi

I think you can reference following code.

SELECT-OPTIONS: s_bukrs for company code.

PARAMETERS : p_country like country.

AT SELECTION-SCREEN OUTPUT.

if s_bukrs-low is not initial and s_bukrs is not initial.

clear p_country.

screen-input = 0.

modify screen.

Read only

Former Member
0 Likes
727

Hi Devender...

A very simple way to do it........

PARAMETERS : pre_lay RADIOBUTTON GROUP rg USER-COMMAND r DEFAULT 'X'.

PARAMETERS : apln_lay RADIOBUTTON GROUP rg .

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.

PARAMETERS : pre_layr(10) TYPE c MODIF ID abc.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.

PARAMETERS : appl_lay(40) TYPE c MODIF ID def.

SELECTION-SCREEN END OF BLOCK b2.

AT SELECTION-SCREEN OUTPUT.

IF pre_lay = 'X'.

LOOP AT SCREEN.

IF screen-group1 = 'DEF'.

screen-active = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

IF apln_lay = 'X'.

LOOP AT SCREEN.

IF screen-group1 = 'ABC' .

screen-active = '0'.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDIF.

<b>Kindly Reward if useful

Rohit G</b>

Read only

Former Member
0 Likes
727

hi devendrer,

follow this logic:

AT SELECTION-SCREEN output.

LOOP AT SCREEN.

IF select_option = 'X'.

SCREEN-ACTIVE = 1.

ELSE.

SCREEN-ACTIVE = 0.

ENDIF.

MODIFY SCREEN.

if parameter = 'X'.

SCREEN-ACTIVE = 1.

ELSE.

SCREEN-ACTIVE = 0.

ENDIF.

MODIFY SCREEN.

endloop.