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: 

about selection screen

Former Member
0 Kudos

1. I am having two selection frames in the selection screen, in the firest selection screen i am having Date,Purchase order, Vendor, City fields and in the second frame i having 3 radio buttons with Date, P.order, Vendor, if i select one radio buttion in the second frame i need to remain highlight the fields related to that radiobutton rest of them should be hide. How can u write logic for this?

2. Is it possible to create inner join between two cluster tables and

is it possible to create inner join between two pooled tables?

1 ACCEPTED SOLUTION

varma_narayana
Active Contributor
0 Kudos

Hi...

You can test the code below.

&----


*& Report ZZSEL_DYNAMIC *

*& *

&----


*& *

*& *

&----


REPORT zzsel_dynamic .

TABLES : sscrfields.

DATA :v_ucomm TYPE sscrfields-ucomm.

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

PARAMETERS : p_bedat TYPE ekko-bedat,

p_ebeln TYPE ekko-ebeln,

p_lifnr TYPE ekko-lifnr.

SELECTION-SCREEN: END OF BLOCK b1 .

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

PARAMETERS : rb_bedat RADIOBUTTON GROUP a USER-COMMAND rb, "Function code

rb_ebeln RADIOBUTTON GROUP a ,

rb_lifnr RADIOBUTTON GROUP a .

SELECTION-SCREEN : END OF BLOCK b2 .

AT SELECTION-SCREEN .

v_ucomm = sscrfields-ucomm.

AT SELECTION-SCREEN OUTPUT.

CASE v_ucomm.

WHEN 'RB'.

CASE 'X'.

WHEN rb_bedat.

LOOP AT SCREEN.

CASE screen-name.

WHEN 'P_BEDAT'.

screen-input = 1.

WHEN 'P_EBELN' OR 'P_LIFNR'.

screen-input = 0.

ENDCASE.

MODIFY SCREEN.

ENDLOOP.

WHEN rb_ebeln.

LOOP AT SCREEN.

CASE screen-name.

WHEN 'P_EBELN'.

screen-input = 1.

WHEN 'P_BEDAT' OR 'P_LIFNR'.

screen-input = 0.

ENDCASE.

MODIFY SCREEN.

ENDLOOP.

WHEN rb_lifnr.

LOOP AT SCREEN.

CASE screen-name.

WHEN 'P_LIFNR'.

screen-input = 1.

WHEN 'P_BEDAT' OR 'P_EBELN'.

screen-input = 0.

ENDCASE.

MODIFY SCREEN.

ENDLOOP.

ENDCASE.

ENDCASE.

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

Note: SSCRFIELDS-UCOMM stores the Fct code in selection screen.

<b>Reward if it is helpful</b>

6 REPLIES 6

Former Member
0 Kudos

hi

copy paste the following code and make changes accordingly in the fields



TABLES: eban,
        SSCRFIELDS.

SELECTION-SCREEN BEGIN OF SCREEN 100 TITLE title.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-t01.
PARAMETER:rad1 RADIOBUTTON GROUP rad USER-COMMAND frad1 DEFAULT 'X',
          rad2 RADIOBUTTON GROUP rad .
SELECTION-SCREEN END OF BLOCK b1.

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

PARAMETER: mtr AS CHECKBOX MODIF ID g3 USER-COMMAND chk1,
           p_matnr TYPE eban-matnr MODIF ID g1,
           sloc AS CHECKBOX MODIF ID g3 USER-COMMAND chk2,
           str_loc TYPE eban-lgort MODIF ID g4.

SELECTION-SCREEN END OF BLOCK b2.

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-t03.
SELECT-OPTIONS: matnr1 FOR eban-matnr MODIF ID g2.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN PUSHBUTTON /20(10) name USER-COMMAND UCOM.


SELECTION-SCREEN END OF SCREEN 100.



name = 'FETCH'.
title = 'Test Report'.
CALL SELECTION-SCREEN '100'.


TYPE-POOLS slis.

* declaration of internal tables and work areas to be used


DATA: BEGIN OF it_pr OCCURS 0,
      banfn TYPE eban-banfn,
      bnfpo TYPE eban-bnfpo,
      loekz TYPE eban-loekz,
      statu TYPE eban-statu,
      ekgrp TYPE eban-ekgrp,
      matnr TYPE eban-matnr,
      werks TYPE eban-werks,
      lgort TYPE eban-lgort,
      preis TYPE eban-preis,
      peinh TYPE eban-peinh,
      END OF it_pr.

DATA: BEGIN OF it_mat OCCURS 0,
      matnr TYPE eban-matnr,
      END OF it_mat.

*DATA:BEGIN OF ITAB1 OCCURS 0,

  DATA: l_answer.



DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
      wa_fieldcat LIKE LINE OF it_fieldcat,
      it_event TYPE slis_t_event,
      wa_event TYPE slis_alv_event.

* declaration of variables to be used

DATA: r_ucomm TYPE sy-ucomm,
      mat_no TYPE eban-matnr,
      len TYPE i VALUE 1,
      count TYPE i VALUE IS INITIAL,
      iflag TYPE i VALUE IS INITIAL,
      iflag1 TYPE i VALUE 0.


DATA :pr_id TYPE sy-repid,
rt_extab TYPE slis_t_extab.

 INITIALIZATION.

  pr_id = sy-repid.

hope it solves ur probs

regards

ravish

<b>plz dont forget to reward points if helpful</b>

varma_narayana
Active Contributor
0 Kudos

Hi...

You can test the code below.

&----


*& Report ZZSEL_DYNAMIC *

*& *

&----


*& *

*& *

&----


REPORT zzsel_dynamic .

TABLES : sscrfields.

DATA :v_ucomm TYPE sscrfields-ucomm.

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

PARAMETERS : p_bedat TYPE ekko-bedat,

p_ebeln TYPE ekko-ebeln,

p_lifnr TYPE ekko-lifnr.

SELECTION-SCREEN: END OF BLOCK b1 .

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

PARAMETERS : rb_bedat RADIOBUTTON GROUP a USER-COMMAND rb, "Function code

rb_ebeln RADIOBUTTON GROUP a ,

rb_lifnr RADIOBUTTON GROUP a .

SELECTION-SCREEN : END OF BLOCK b2 .

AT SELECTION-SCREEN .

v_ucomm = sscrfields-ucomm.

AT SELECTION-SCREEN OUTPUT.

CASE v_ucomm.

WHEN 'RB'.

CASE 'X'.

WHEN rb_bedat.

LOOP AT SCREEN.

CASE screen-name.

WHEN 'P_BEDAT'.

screen-input = 1.

WHEN 'P_EBELN' OR 'P_LIFNR'.

screen-input = 0.

ENDCASE.

MODIFY SCREEN.

ENDLOOP.

WHEN rb_ebeln.

LOOP AT SCREEN.

CASE screen-name.

WHEN 'P_EBELN'.

screen-input = 1.

WHEN 'P_BEDAT' OR 'P_LIFNR'.

screen-input = 0.

ENDCASE.

MODIFY SCREEN.

ENDLOOP.

WHEN rb_lifnr.

LOOP AT SCREEN.

CASE screen-name.

WHEN 'P_LIFNR'.

screen-input = 1.

WHEN 'P_BEDAT' OR 'P_EBELN'.

screen-input = 0.

ENDCASE.

MODIFY SCREEN.

ENDLOOP.

ENDCASE.

ENDCASE.

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

Note: SSCRFIELDS-UCOMM stores the Fct code in selection screen.

<b>Reward if it is helpful</b>

Former Member
0 Kudos

Hi,

Try this code.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text1.

PARAMETER: p_matnr TYPE eban-matnr MODIF ID g1,

str_loc TYPE eban-lgort MODIF ID g2,

p_name TYPE trdir-name MODIF ID g3.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text2.

PARAMETER:rad1 RADIOBUTTON GROUP rad USER-COMMAND rad DEFAULT 'X',

rad2 RADIOBUTTON GROUP rad,

rad3 RADIOBUTTON GROUP rad.

SELECTION-SCREEN END OF BLOCK b2.

INITIALIZATION.

text1 = 'Input parameters'.

text2 = 'Radiobuttons'.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF rad1 = 'X'.

IF screen-group1 = 'G1'.

screen-input = '1'.

ELSEIF screen-group1 = 'G2' OR screen-group1 = 'G3'.

screen-input = 0.

ENDIF.

MODIFY SCREEN.

ENDIF.

IF rad2 = 'X'.

IF screen-group1 = 'G2'.

screen-input = '1'.

ELSEIF screen-group1 = 'G1' OR screen-group1 = 'G3'.

screen-input = 0.

ENDIF.

MODIFY SCREEN.

ENDIF.

IF rad3 = 'X'.

IF screen-group1 = 'G3'.

screen-input = '1'.

ELSEIF screen-group1 = 'G2' OR screen-group1 = 'G1'.

screen-input = 0.

ENDIF.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

Thanks & Regards

Santhosh

0 Kudos

Hi Murli Santhosh ,

I would like to make corection in the above solution. The correction are in bold.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text1.

PARAMETER: p_matnr TYPE eban-matnr MODIF ID g1,

str_loc TYPE eban-lgort MODIF ID g2,

p_name TYPE trdir-name MODIF ID g3.

SELECTION-SCREEN END OF BLOCK b1.

SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text2.

PARAMETER:rad1 RADIOBUTTON GROUP rad USER-COMMAND rad DEFAULT 'X',

rad2 RADIOBUTTON GROUP rad,

rad3 RADIOBUTTON GROUP rad.

SELECTION-SCREEN END OF BLOCK b2.

INITIALIZATION.

text1 = 'Input parameters'.

text2 = 'Radiobuttons'.

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF rad1 = 'X'.

IF screen-group1 = 'G1'.

<b>screen-active = 'X'.</b>

ELSEIF screen-group1 = 'G2' OR screen-group1 = 'G3'.

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

ENDIF.

MODIFY SCREEN.

ENDIF.

IF rad2 = 'X'.

IF screen-group1 = 'G2'.

<b>screen-active = 'X'.</b>

ELSEIF screen-group1 = 'G1' OR screen-group1 = 'G3'.

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

ENDIF.

MODIFY SCREEN.

ENDIF.

IF rad3 = 'X'.

IF screen-group1 = 'G3'.

<b>screen-active = 'X'.</b>

ELSEIF screen-group1 = 'G2' OR screen-group1 = 'G1'.

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

ENDIF.

MODIFY SCREEN.

ENDIF.

ENDLOOP.

Regards

Sourabh Verma

Former Member
0 Kudos

Hi,

Check Out the below code...

U have to Use USER COMMAND & MODIF ID.




REPORT  ZMMS_RADIO                              .



SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-033.
PARAMETERS :
rb_app    RADIOBUTTON GROUP fil DEFAULT 'X' USER-COMMAND u1,
rb_pre     RADIOBUTTON GROUP fil.
SELECTION-SCREEN END OF BLOCK b1 .

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

PARAMETERS : p_upload  LIKE rlgrap-filename OBLIGATORY DEFAULT
                                'C:'  MODIF ID f1,

             p_file1 LIKE filename-pathintern OBLIGATORY
                   DEFAULT 'Z_CELESTICA_UPLOAD' MODIF ID f2,
             p_fl1_nm LIKE rlgrap-filename OBLIGATORY
                   DEFAULT 'UPLOAD.TXT' MODIF ID f2.
*             p_appl LIKE rlgrap-filename NO-DISPLAY.


SELECTION-SCREEN END OF BLOCK b2 .

SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-035.


PARAMETERS:

    p_dwload LIKE rlgrap-filename OBLIGATORY DEFAULT 'C:' MODIF ID f1,
    p_err1 LIKE filename-pathintern OBLIGATORY
           DEFAULT 'Z_CELESTICA_UPLOAD' MODIF ID f2,
    p_er_nm LIKE rlgrap-filename OBLIGATORY
           DEFAULT 'ERR.TXT' MODIF ID f2.
*    p_appldw LIKE rlgrap-filename NO-DISPLAY.

SELECTION-SCREEN END OF BLOCK b3 .



AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
    IF RB_APP = 'X' AND screen-group1 = 'F1'.
      screen-output = 0.
      screen-active = 0.
      screen-input = 0.
    ELSEIF RB_PRE = 'X' AND screen-group1 = 'F2'.
      screen-output = 0.
      screen-active = 0.
      screen-input = 0.
    ENDIF.


*    IF RB_TEST = 'X' AND SCREEN-GROUP1 = 'XYZ'.
*
*      SCREEN-INPUT  = 0.
*    ENDIF.
    MODIFY SCREEN.
  ENDLOOP.

*F4 Functionality for Upload File to enable user to choose file
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_UPLOAD.

 CALL FUNCTION 'F4_FILENAME'
  EXPORTING
    PROGRAM_NAME        = SYST-CPROG
    DYNPRO_NUMBER       = SYST-DYNNR
*    FIELD_NAME          = ' '
*  IMPORTING
*    FILE_NAME           =
           .

*F4 Functionality for Download File to enable user to choose file

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DWLOAD.

CALL FUNCTION 'F4_FILENAME'
 EXPORTING
   PROGRAM_NAME        = SYST-CPROG
   DYNPRO_NUMBER       = SYST-DYNNR
*   FIELD_NAME          = ' '
* IMPORTING
*   FILE_NAME           =
          .

Reward Points if it is Useful.

Thanks,

Manjunath MS

Former Member
0 Kudos

hi, this will help you.

***SELECTION SCREEN FOR RADIO BUTTON AND SELECT OPTIONS *********

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

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

PARAMETERS: r1 RADIOBUTTON GROUP rad1 DEFAULT 'X' USER-COMMAND ucomm.

PARAMETERS:r2 RADIOBUTTON GROUP rad1.

PARAMETERS:r3 RADIOBUTTON GROUP rad1.

SELECTION-SCREEN END OF BLOCK sel2.

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

SELECT-OPTIONS so_sorg FOR vbak-vkorg MODIF ID ss.

SELECT-OPTIONS:so_sno FOR vbak-vbeln MODIF ID ss.

SELECTION-SCREEN END OF BLOCK sel3.

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

SELECT-OPTIONS so_porg FOR ekko-ekorg MODIF ID s1.

SELECT-OPTIONS:so_pno FOR ekko-ebeln MODIF ID s1.

SELECTION-SCREEN END OF BLOCK sel4.

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

SELECT-OPTIONS so_vno FOR lfa1-lifnr MODIF ID s2.

SELECTION-SCREEN END OF BLOCK sel5.

SELECTION-SCREEN END OF BLOCK sel1.

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

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

  • AT S E L E C T I O N S C R E E N

*

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

***TO DISPLAY SELECT-OPTIONS OF SELECTED RADIOBUTTON*****************

AT SELECTION-SCREEN OUTPUT.

LOOP AT SCREEN.

IF ( r3 = c_sel OR r2 = c_sel ) AND screen-group1 = 'SS'.

screen-input = c_zero.

ENDIF.

IF ( r1 = c_sel OR r3 = c_sel ) AND screen-group1 = 'S1'.

screen-input = c_zero.

ENDIF.

IF ( r1 = c_sel OR r2 = c_sel ) AND screen-group1 = 'S2'.

screen-input = c_zero.

ENDIF.

MODIFY SCREEN.

ENDLOOP.