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

Modifying Selection Screen.

Former Member
0 Likes
943

Hi

Requirement is that,

Depending upon Radio Button selection at selection screen , I will have to hide or make visible some of the input fields at selection screen.

How it could be done ?

Code is like below,

DATA : FLAG.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE

TEXT-001.

PARAMETERS: <b>R_MATGRP</b> RADIOBUTTON GROUP G1

DEFAULT 'X' USER-COMMAND RAD1,

<b>R_PRDGRP</b> RADIOBUTTON GROUP G1,

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE

TEXT-002.

SELECT-OPTIONS: <b>S_MATGRP</b> FOR MARA-MATKL,

<b>S_PRDGRP</b> FOR PGMI-PRGRP,

SELECTION-SCREEN END OF BLOCK B2.

AT SELECTION-SCREEN ON RADIOBUTTON GROUP G1.

IF <b>R_MATGRP</b> EQ 'X'.

FLAG = <b>'1'</b>.

ELSEIF <b>R_PRDGRP</b> EQ 'X'.

FLAG = <b>'2'</b>.

ENDIF.

AT SELECTION-SCREEN OUTPUT.

          • For Material Type

CASE FLAG.

WHEN <b>'1'</b>.

LOOP AT SCREEN.

CASE SCREEN-NAME.

WHEN <b>'S_MATGRP'</b>.

SCREEN-INVISIBLE = '1'.

MODIFY SCREEN.

WHEN <b>'S_PRDGRP'</b>.

SCREEN-INVISIBLE = '0'.

MODIFY SCREEN.

ENDLOOP.

        • For product type

WHEN <b>'2'</b>.

LOOP AT SCREEN.

CASE SCREEN-NAME.

WHEN <b>'S_MATGRP'</b>.

SCREEN-INVISIBLE = '0'.

MODIFY SCREEN.

WHEN <b>'S_PRDGRP'</b>.

SCREEN-INVISIBLE = '1'.

MODIFY SCREEN.

ENDLOOP.

ENDCASE.

Please suggest what changes could be made ?

Thanks And Regards,

Amit

1 ACCEPTED SOLUTION
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
890

This works, I tried to not change to much of your code.




report zrich_0001 .

tables: mara.

data : flag.

selection-screen begin of block b1 with frame title
text-001.
parameters: r_matgrp radiobutton group g1
default 'X' user-command rad1,
r_prdgrp radiobutton group g1.
selection-screen end of block b1.

selection-screen begin of block b2 with frame title
text-002.
select-options: s_matgrp for mara-matkl modif id mat,
                s_prdgrp for pgmi-prgrp modif id prd. 
selection-screen end of block b2.

at selection-screen output.

  if r_matgrp eq 'X'.
    flag = '1'.
  elseif r_prdgrp eq 'X'.
    flag = '2'.
  endif.



***** For Material Type
  case flag.
    when '1'.
      loop at screen.
        case screen-group1.
          when 'MAT'.
            screen-invisible = '0'.
            screen-active = '1'.
            modify screen.
          when 'PRD'.
            screen-invisible = '1'.
            screen-active = '0'.
            modify screen.

        endcase.
      endloop.

**** For product type
    when '2'.
      loop at screen.
        case screen-group1.
          when 'MAT'.
            screen-invisible = '1'.
            screen-active = '0'.
            modify screen.
          when 'PRD'.
            screen-invisible = '0'.
            screen-active = '1'.
            modify screen.
        endcase.
      endloop.

  endcase.

Regards,

Rich Heilman

7 REPLIES 7
Read only

vinod_gunaware2
Active Contributor
0 Likes
890

REPORT zrsdvsr1

LINE-SIZE 220

LINE-COUNT 65(5).

TYPE-POOLS : slis.

**********************************************************************

      • TABLES

**********************************************************************

TABLES: vbak.

**********************************************************************

      • DATA DECLARATIONS

**********************************************************************

  • Ranges

RANGES: r_posnr FOR vbap-posnr.

DATA: BEGIN OF t_veramt OCCURS 0,

vbeln TYPE vbap-vbeln,

posnr TYPE vbap-posnr,

matnr TYPE vbap-matnr,

netwr TYPE vbap-netwr,

mwsbp TYPE vbap-mwsbp,

END OF t_veramt.

DATA: BEGIN OF t_disamt OCCURS 0,

vbeln TYPE vbap-vbeln,

posnr TYPE vbap-posnr,

matnr TYPE vbap-matnr,

netwr TYPE vbap-netwr,

mwsbp TYPE vbap-mwsbp,

netwr_v TYPE vbap-netwr,

mwsbp_v TYPE vbap-mwsbp,

disc_val TYPE vbap-mwsbp,

END OF t_disamt.

&----


*& ALV FIELDS

&----


DATA : alv_fcat TYPE slis_t_fieldcat_alv WITH HEADER LINE,

alv_layout TYPE slis_layout_alv.

**********************************************************************

      • SELECTION SCREEN

**********************************************************************

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

PARAMETERS: p_ver RADIOBUTTON GROUP g1 USER-COMMAND rad DEFAULT 'X',

p_sab RADIOBUTTON GROUP g1 .

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.

SELECT-OPTIONS: s_vbeln FOR vbak-vbeln NO INTERVALS MODIF ID gr1.

PARAMETERS: p_dwfile TYPE rlgrap-filename

DEFAULT 'C:\test1.txt' MODIF ID gr2, "#EC NOTEXT

p_upfile TYPE rlgrap-filename

DEFAULT 'C:\test.txt' MODIF ID gr3. "#EC NOTEXT

SELECTION-SCREEN END OF BLOCK b2.

************************************************************************

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_upfile.

**************F4 Help For Input File Name****************************

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

field_name = 'C:\'

IMPORTING

file_name = p_upfile.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dwfile.

**************F4 Help For Input File Name****************************

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

field_name = 'C:\'

IMPORTING

file_name = p_dwfile.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF p_sab = 'X'.

IF screen-group1 = 'GR1' OR screen-group1 = 'GR2'.

<b>screen-active = '0'.

screen-invisible = '1'.</b>

ELSE.

screen-active = '1'.

screen-invisible = '0'.

ENDIF.

MODIFY SCREEN.

ELSE.

IF screen-group1 = 'GR3'.

screen-active = '0'.

screen-invisible = '1'.

ELSE.

screen-active = '1'.

screen-invisible = '0'.

ENDIF.

<b>MODIFY SCREEN.</b>

ENDIF.

ENDLOOP.

**********************************************************************

      • START-OF-SELECTION

**********************************************************************

START-OF-SELECTION.

  • Check Radio Button

IF p_ver = 'X'.

PERFORM get_details_open_so_vertex.

ELSE.

PERFORM get_details_open_so.

ENDIF.

  • Display the output.

PERFORM diplay_report .

regards

vinod

Read only

Former Member
0 Likes
890
AT SELECTION-SCREEN OUTPUT.

***** For Material Type
CASE FLAG.
WHEN '1'.
LOOP AT SCREEN.
CASE SCREEN-NAME.
<b>WHEN 'S_MATGRP-LOW'.
SCREEN-INVISIBLE = '1'.
MODIFY SCREEN.
WHEN 'S_MATGRP-HIGH'.
SCREEN-INVISIBLE = '1'.
MODIFY SCREEN.

WHEN 'S_PRDGRP-LOW'.
SCREEN-INVISIBLE = '0'.
MODIFY SCREEN.
WHEN 'S_PRDGRP-HIGH'.
SCREEN-INVISIBLE = '0'.
MODIFY SCREEN.
ENDLOOP.
**** For product type
WHEN '2'.
LOOP AT SCREEN.
CASE SCREEN-NAME.
WHEN 'S_MATGRP-LOW'.
SCREEN-INVISIBLE = '0'.
MODIFY SCREEN.
WHEN 'S_MATGRP-HIGH'.
SCREEN-INVISIBLE = '0'.
MODIFY SCREEN.

WHEN 'S_PRDGRP-LOW'.
SCREEN-INVISIBLE = '1'.
MODIFY SCREEN.
WHEN 'S_PRDGRP-HIGH'.
SCREEN-INVISIBLE = '1'.
MODIFY SCREEN.
ENDLOOP.</b>
ENDCASE.

need to add

-LOW and -HIGH

Regards

vijay

Read only

Former Member
0 Likes
890

Hi,

<b>I have change ur code Just Copy Paste it ;it will work</b>

DATA : FLAG.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE 
TEXT-001.
PARAMETERS: R_MATGRP RADIOBUTTON GROUP G1
DEFAULT 'X' USER-COMMAND RAD1,
R_PRDGRP RADIOBUTTON GROUP G1,
SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE 
TEXT-002.
SELECT-OPTIONS: S_MATGRP FOR MARA-MATKL <b>MODIF ID ABC</b>,
                S_PRDGRP FOR PGMI-PRGRP <b>MODIF ID XYZ</b>,
SELECTION-SCREEN END OF BLOCK B2.

AT SELECTION-SCREEN OUTPUT.

  LOOP AT SCREEN.
    IF R_MATGRP EQ 'X'.

      IF screen-group1  = 'ABC'.
        screen-input  = '0'.
        MODIFY SCREEN.
      ENDIF.

    ELSEIF R_PRDGRP EQ 'X'.

      IF screen-group1  = 'XYZ'.
        screen-input  = '0'.
        MODIFY SCREEN.
      ENDIF.
    ENDIF.

  ENDLOOP.

Just Copy paste this code ur Problem will be solved.

<b>Reward Some Points</b>

Message was edited by: Manoj Gupta

Read only

former_member480923
Active Contributor
0 Likes
890

Hi

Try the following code

report  ztest_selection_screen                  .

tables: vbak, sscrfields.

selection-screen: begin of block b1 with frame title text-001.

selection-screen: begin of line.
parameters: p_sale radiobutton group rd1 user-command sal.
select-options: s_vbeln for vbak-vbeln modif id sal.
selection-screen: end of line.

selection-screen: begin of line.
parameters: p_org radiobutton group rd1. "USER-COMMAND org.
select-options: s_vkorg for vbak-vkorg modif id org.
selection-screen: end of line.
parameters: p_vbklt like vbak-vbklt.
selection-screen: end of block b1.


at selection-screen output.

  loop at screen.
    case screen-group1.
      when 'SAL'.
        if p_org = 'X'.
          screen-active = 0.
        endif.
      when 'ORG'.
        if p_sale = 'X'.
          screen-active = 0.
        endif.
    endcase.
    modify screen.
  endloop.

Hope this helps

Anirban

Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
891

This works, I tried to not change to much of your code.




report zrich_0001 .

tables: mara.

data : flag.

selection-screen begin of block b1 with frame title
text-001.
parameters: r_matgrp radiobutton group g1
default 'X' user-command rad1,
r_prdgrp radiobutton group g1.
selection-screen end of block b1.

selection-screen begin of block b2 with frame title
text-002.
select-options: s_matgrp for mara-matkl modif id mat,
                s_prdgrp for pgmi-prgrp modif id prd. 
selection-screen end of block b2.

at selection-screen output.

  if r_matgrp eq 'X'.
    flag = '1'.
  elseif r_prdgrp eq 'X'.
    flag = '2'.
  endif.



***** For Material Type
  case flag.
    when '1'.
      loop at screen.
        case screen-group1.
          when 'MAT'.
            screen-invisible = '0'.
            screen-active = '1'.
            modify screen.
          when 'PRD'.
            screen-invisible = '1'.
            screen-active = '0'.
            modify screen.

        endcase.
      endloop.

**** For product type
    when '2'.
      loop at screen.
        case screen-group1.
          when 'MAT'.
            screen-invisible = '1'.
            screen-active = '0'.
            modify screen.
          when 'PRD'.
            screen-invisible = '0'.
            screen-active = '1'.
            modify screen.
        endcase.
      endloop.

  endcase.

Regards,

Rich Heilman

Read only

Former Member
0 Likes
890

Hi Amit,

1. I have slightly modified your code.

2. Now it works fantastic

(just copy paste)

3.

report abc.

DATA : FLAG VALUE '1'.

tables : mara .

tables : pgmi.

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE

TEXT-001.

PARAMETERS: R_MATGRP RADIOBUTTON GROUP G1

DEFAULT 'X' USER-COMMAND RAD1,

R_PRDGRP RADIOBUTTON GROUP G1.

SELECTION-SCREEN : eND OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE

TEXT-002.

SELECT-OPTIONS: S_MATGRP FOR MARA-MATKL MODIF ID A,

S_PRDGRP FOR PGMI-PRGRP MODIF ID B.

SELECTION-SCREEN END OF BLOCK B2.

AT SELECTION-SCREEN ON RADIOBUTTON GROUP G1.

IF R_MATGRP EQ 'X'.

FLAG = '1'.

ELSEIF R_PRDGRP EQ 'X'.

FLAG = '2'.

ENDIF.

AT SELECTION-SCREEN OUTPUT.

          • For Material Type

CASE FLAG.

WHEN '1'.

LOOP AT SCREEN.

IF SCREEN-GROUP1 = 'B'.

SCREEN-INVISIBLE = 1.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDCASE.

CASE FLAG.

WHEN '2'.

LOOP AT SCREEN.

IF SCREEN-GROUP1 = 'A'.

SCREEN-INVISIBLE = 1.

SCREEN-INPUT = 0.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

ENDCASE.

regards,

amit m.

Read only

Former Member
0 Likes
890

Hi Amit,

Just copy paste code which i have given . it will solve ur problem.

If used <b>MODIF ID</b> ; it removes the overhead of activating the field.

activation and deactivation of field are handled internally.

When u use MODIF ID ; other overheads like declaring flag ; logic for activation are eleminated.

if the result is reverse just change the modif id assignment.

<b>Please Award Some Points & close thread.

any problem ; most welcome.

Regards

manoj.baijnath@wipro.com</b>