Dynamic interaction on selection screen

Hi experts,
I just have a easy question regarding selection screen in a ordinary ABAP report.
The code is below:
*-- Blcok 2
selection-screen begin of block block_2 with frame title text-s03.
select-options:
  s_wc_id for /cockpit/cwc_id-wc_id matchcode object zmm25sh000008.
selection-screen begin of line.
parameters p_duewc type c as checkbox.
selection-screen comment 5(50) status_1 for field p_duewc.
selection-screen end of line.
parameters p_ndays(2) type n.
selection-screen end of block block_2.
When the user marks the checkbox p_duewc the parameter p_ndays should be ready for data entering.
If the checkbox is not marked (default) p_ndays shall be not ready for data entering.
I guess I can control it via the statement at-selection screen but can you give more details.
How can I code such a request?
Thanks in advance.
Regards
Cornelius

Hello,
U can use this code.
SELECTION-SCREEN BEGIN OF BLOCK BL1 WITH FRAME TITLE TEXT-001.
PARAMETER:      P_LAND LIKE KNA1-LAND1 ,
                P_REGIO LIKE KNA1-REGIO  ,
                P_PSTLZ LIKE KNA1-PSTLZ ,
                P_ORT01 LIKE KNA1-ORT01 .
SELECTION-SCREEN END OF BLOCK BL1.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF BLOCK BL2 WITH FRAME TITLE TEXT-001.
PARAMETERS:    P_KDGR AS CHECKBOX MODIF ID SC1 USER-COMMAND SELTYPE,
               P_BCS  AS CHECKBOX MODIF ID SC2,
               P_BDS  AS CHECKBOX MODIF ID SC2,
               P_BDC  AS CHECKBOX MODIF ID SC2,
               P_ALL  AS CHECKBOX MODIF ID SC3 USER-COMMAND SELTYPE.
SELECTION-SCREEN END OF BLOCK BL2.
AT SELECTION-SCREEN OUTPUT.
    IF P_KDGR = 'X'.
      LOOP AT SCREEN.
        IF SCREEN-GROUP1  = 'SC1'.
          SCREEN-INPUT   = '1'.
          SCREEN-OUTPUT  = '1'.
          MODIFY SCREEN.
        ENDIF.
        IF SCREEN-GROUP1  = 'SC2'.
          SCREEN-INPUT   = '0'.
          SCREEN-OUTPUT  = '1'.
          MODIFY SCREEN.
        ENDIF.
        IF SCREEN-GROUP1 = 'SC3'.
          SCREEN-INPUT   = '0'.
          SCREEN-OUTPUT  = '1'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    ELSEIF P_ALL = 'X'.
      LOOP AT SCREEN.
        IF SCREEN-GROUP1  = 'SC1'.
          SCREEN-INPUT   = '0'.
          SCREEN-OUTPUT  = '1'.
          MODIFY SCREEN.
        ENDIF.
        IF SCREEN-GROUP1  = 'SC2'.
          SCREEN-INPUT   = '0'.
          SCREEN-OUTPUT  = '1'.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    ENDIF.
Reward points if is useful.
Regards,
Vasanth

Similar Messages

  • How to use table field values as dynamic parameters on selection screen

    Hi,
    I need help on dynamic selection parameters.
    I need to display no. of parameters from the fields of a database table.
    Basically i want to pass field values of a table to selection screen and we can use those values as parameter on selection screen.
    If there are 10 entries in a table field( say field is field_name and entries are bukrs,kunnr etc.)
    I need to display as many parameters on screen as many values are there in field_name( In this case it is 10)
    SELECTION-SCREEN: BEGIN OF BLOCK b2 WITH FRAME TITLE text-t02.
    PARAMETERS:
                           p_bukrs(5) ,
                           p_kunnr(5) ,
    SELECTION-SCREEN END OF BLOCK b2.
    Thanx

    Hi,
    You can create it using Dynamic Program.Check this link below.
    [Creating Dynamic Programs|http://help.sap.com/saphelp_46c/helpdata/en/9f/db996135c111d1829f0000e829fbfe/content.htm]
    Hope this might help you.
    Thanks,
    Prashanth

  • Dynamic creation of selection screen by using POWL-Personal Object Work Lis

    Hi Expert,
    I am using POWL to display Report.For that there is one selection screen and once the user press enter a report will display.
    In this case i am desiging the selection screen but not able to Hide/Display fields on the basis of user action on the selection screen input/Drop down selection.
    Can u plz tell me how i can handle redesigning of selestion screeen depending on user interaction.
    Thanks
    Mahesh

    Hi,
    I want to hide selection screen field depending on the user action on the drop down.
    Also there is a check box in the selection screen,if the user check that check box then 2 fields in ALV will not display otherwise it will display.
    Thanks

  • Mapping function module paramters dynamically with a selection screen

    Hi Experts,
    I got a situation,
    i am maintaining data of a function module paramters in a dictionary table.
    in the screen pbo i will fetch the the fm data from that table into the internal table(ITAB).
    in my report screen i am having the selection screen and the selection screen parameters are also mentioned in the FM Dictionary Table, we are having the those details in our internal table (ITAB).
    now the issue is how to call the FM by using the ITAB values.
    example: ITAB
    fmname          parametr          type        str_name           ss_field
    get_notif        im_notif            import     qmnum                 s_notif
    here s_notif[ ] is having the values in it which is nothing but selection screen parameter.
    and we are having S_NOTIF as a string values in the ITAB.
    now how can i link this S_notif(type string) to s_notif(value of notification) ?
    what i have done is ,
              loop at itab into wa_itab where type = 'import'.
                  case wa_itab-parameter.
                      when 'IM_NOTIF'.                                             " for example im dealing with only one parameter this can have  many
                              get reference of S_NOTIF[ ] to v_notif.
                       endcase.
              endloop.
    now i dont wanmt hard code the parameter name ,
    is there any way to do it dynamically... ?
    experts please help me on this ?
    thanks

    Hi ,
    This sample will help you.
    DATA: lv_fname TYPE string,
            lt_ptab TYPE abap_func_parmbind_tab,
            ls_ptab TYPE abap_func_parmbind,
            lt_etab TYPE abap_func_excpbind_tab,
            ls_etab TYPE abap_func_excpbind.
    *** Table
      ls_ptab-name = 'IT_TABLE'.
      ls_ptab-kind = abap_func_tables.
      GET REFERENCE OF <itab> INTO ls_ptab-value.
      INSERT ls_ptab INTO TABLE lt_ptab.
    *** Exceptions
      ls_etab-name = 'DATA_NOT_FOUND'.
      ls_etab-value = 1.
      INSERT ls_etab INTO TABLE lt_etab.
      lv_fname = 'GET_MY_DATA'." Function Name
      CALL FUNCTION lv_fname
        PARAMETER-TABLE
          lt_ptab
        EXCEPTION-TABLE
          lt_etab.
      IF sy-subrc NE 0.
      ENDIF.

  • Dynamic text in selection screen

    Hi all,
    I have one requirement in selection screen. I have a parameter and one pushbutton in selection screen .
    To the right side of the parameter, i need to display the text based on some manipulation in a internal in the program.
    If I click on the pushbutton in selection screen , manipulations will be done in the program in a internal table. if the result is ok i need to display the text in the right side of the parameter otherwise no need to display.
    How can I achieve this.
    Urgent
    Thanks
    Saravana

    Hi
    Write the code in the
    AT selection-screen ON PARAMETER of the Button.
    So when pressed on button, that code will do some process and the result will be displayed.
    check it, whether it displays the text or not on selection screen.
    see the doc
    AT SELECTION-SCREEN - selscreen_event
    Syntax
      | { ON {para|selcrit} }
      | { ON END OF selcrit }
      | { ON BLOCK block }
      | { ON RADIOBUTTON GROUP radi }
      | { }
      | { ON {HELP-REQUEST|VALUE-REQUEST}
      |   FOR {para|selcrit-low|selcrit-high} }
      | { ON EXIT-COMMAND }.
    Alternatives:
    1. ... OUTPUT
    2. ... ON {para|selcrit}
    3. ... ON END OF selcrit
    4. ... ON BLOCK block
    5. ... ON RADIOBUTTON GROUP radi
    6. ... { }
    7. ... ON {HELP-REQUEST|VALUE-REQUEST} FOR
          {para|selcrit-low|selcrit-high} }
    8. ... ON EXIT-COMMAND
    Effect
    These additions allow individual evaluation of specific elements of the selection screens of the program. The information as to which selection has triggered the event is contained in the system field sy-dynnr.
    Alternative 1
    ... OUTPUT
    Effect
    This event is triggered at the screen event PBO of a selection screen. In the event block, the selection screen can be prepared through assignments to the data objects of parameters and selection criteria and through dynamic screen modifications.
    Note
    The assignments to input fields in the event block AT SELECTION-SCREEN OUTPUT always affect the selection screen and overwrite the user inputs from previous displays of the same selection screen. Assignments in the event blocks LOAD-OF-PROGRAM oder INITIALIZATION, on the other hand, only have an effect at first program start.
    Alternative 2
    ... ON {para|selcrit}
    Effect
    This event is triggered at the screen event PAI of a selection screen if the content of the input field of a parameter para or a line of a selection criterion selcrit was passed to the ABAP program. In the event block, the user input can be checked. Sending a warning or an error message in the event block makes the fields para and selcrit ready for input again.
    No parameter that is defined as a radio button can be specified. For this purpose, the addition ON RADIOBUTTON GROUP is provided.
    Note
    If a user action takes place in the dialog box for the multiple selection of a selection criterion selcrit, the entries of the selection table are passed to the program, line by line. For each line, the event AT SELECTION-SCREEN ON selcrit is triggered.
    Alternative 3
    ... ON END OF selcrit
    Effect
    This event is triggered after the selection table selcrit has been fully passed to the program after a user action in the dialog box for the multiple selection has taken place. In the event block, the entire selection table can be checked.
    Alternative 4
    ... ON BLOCK block
    Effect
    This event is triggered at the screen event PAI of a selection screen if all the input fields of a block block of the selection screen were passed to the ABAP program. In the event block, the user inputs can be checked. Sending a warning or an error message in the event block makes all the fields of the block block ready for input again.
    Alternative 5
    ... ON RADIOBUTTON GROUP radi
    Effect
    This event is triggered at the screen event PAI of a selection screen if all the fields of a radio button group radi of the selection screen were passed to the ABAP program. In the event block, the user input can be checked. Sending a warning or error message in the event block makes all the radion buttons of the block radi ready for input again.
    Note
    The individual fields of a radio button group are not passed individually and do not trigger the event AT SELECTION-SCREEN ON par.
    Alternative 6
    Effect
    The event AT SELECTION-SCREEN itself is triggered as the last event of selection screen processing if all the input values were passed to the program. In this event block, all the user inputs can be checked. Sending a warning or an error message in the event block makes all the screen fields ready for input once again.
    Alternative 7
    ... ON { HELP-REQUEST | VALUE-REQUEST } FOR
        {para|selcrit-low|selcrit-high} }
    Effect
    The two events ON HELP-REQUEST and ON VALUE-REQUEST are triggered at the screen events POH and POV of a selection screen if - for the input field of a parameter para or one of the input fields of a selection criterion selcrit - the field help F1 or the input help F4 was called. Other selection events are not triggered.
    In the event blocks, a self-defined field or input field can be programmed, which overrides any helps possibly defined in the ABAP Dictionary.
    Notes
    These event blocks can only be implemented for fields of the selection screen that are defined in the same ABAP program and not in a possibly linked logical database.
    With the events for the field and input help, no data is transported between the selection screen and the ABAP program. As with general screens, suitable function modules must be used for these. The parameters and selection criteria changed for the input help are transported to the selection screen.
    Alternative 8
    ... ON EXIT-COMMAND
    Effect
    This event is triggered if the user has called one of the functions Back, Exit or Cancel. In the event block, possible clean-up actions can be executed.
    Example
    In these executable programs, a standard selection screen and a further selection screen are defined. In the event blocks AT SELECTION-SCREEN, the inputs in the selection screens can be specially handled using the name p_carrid and the screen number in sy-dynnr.
    REPORT demo_at_selection_screen.
    Global data
    DATA: sflight_tab TYPE TABLE OF sflight,
          sflight_wa  LIKE LINE  OF sflight_tab.
    Selection screens
    PARAMETERS p_carrid TYPE spfli-carrid.
    SELECTION-SCREEN BEGIN OF SCREEN 500.
      SELECT-OPTIONS s_conn FOR sflight_wa-connid.
      DATA s_conn_wa LIKE LINE OF s_conn.
    SELECTION-SCREEN END OF SCREEN 500.
    Handling selection screen events
    AT SELECTION-SCREEN ON p_carrid.
      IF p_carrid IS INITIAL.
        MESSAGE 'Please enter a value' TYPE 'E'.
      ENDIF.
      AUTHORITY-CHECK OBJECT 'S_CARRID'
                          ID 'CARRID' FIELD p_carrid
                          ID 'ACTVT'  FIELD '03'.
      IF sy-subrc = 4.
        MESSAGE 'No authorization for carrier' TYPE 'E'.
      ELSEIF sy-subrc <> 0.
        MESSAGE 'Error in authority check' TYPE 'A'.
      ELSE.
        IF sy-ucomm = 'ONLI'.
          CALL SELECTION-SCREEN '0500'.
        ENDIF.
      ENDIF.
    AT SELECTION-SCREEN.
      IF sy-dynnr = '0500'.
        IF s_conn IS INITIAL.
          MESSAGE 'Please enter values' TYPE 'W'.
        ELSE.
          SELECT *
                 FROM sflight
                 INTO TABLE sflight_tab
                 WHERE carrid = p_carrid AND
                       connid IN s_conn.
          IF sy-subrc <> 0.
            MESSAGE 'No flights found' TYPE 'E'.
          ENDIF.
        ENDIF.
      ENDIF.
    Main program
    START-OF-SELECTION.
    Reward points if useful
    Regards
    Anji
    Message was edited by:
            Anji Reddy Vangala

  • Dynamic program on selection screen

    hi friends i want to add one insert button on selection screen and when someone click that insert button a new parameter field should gets add on the screen.

    Hi,
    Chk this code.But here i took radio buttons instead of pushbuttons.Hope it will help you out.
    *& Report ZHAR_DYN_SELSCR.
    *& This program demonstrates how easy it is to set selection screen
    *& element properties dynamically
    *& The program uses 3 radio buttons to set the display and input
    *& properties of selection screen fields dynamically
    *& URL: http://allaboutsap.blogspot.com
    REPORT ZHAR_DYN_SELSCR.
    DATABASE TABLES
    tables : mara.
    SELECTION SCREEN
    selection-screen begin of block b1 with frame.
    *--- Radio buttons to set properties
    PARAMETERS:
    rad1 RADIOBUTTON GROUP rad default 'X' USER-COMMAND radio,
    rad2 RADIOBUTTON GROUP rad,
    rad3 RADIOBUTTON GROUP rad.
    *--- Selection Screen fields
    SELECT-OPTIONS:
    s_matnr FOR mara-matnr MODIF ID MI1,
    s_mtart FOR mara-mtart MODIF ID MI1,
    s_mbrsh FOR mara-mbrsh MODIF ID MI2,
    s_matkl FOR mara-matkl MODIF ID MI2.
    selection-screen end of block b1.
    AT SELECTION SCREEN
    at selection-screen output.
    loop at screen.
    *--- If Radio Button 1 is checked
    IF rad1 = 'X'.
    IF screen-group1 = 'MI2'.
    *--- Fields with MODIF ID MI2 disappear from the screen
    screen-input = 0.
    screen-invisible = 1.
    ENDIF.
    *--- If Radio Button 2 is checked
    ELSEIF rad2 = 'X'.
    IF screen-group1 = 'MI1'.
    *--- Fields with MODIF ID MI1 are input-disabled
    screen-input = 0.
    ENDIF.
    *--- If Radio Button 3 is checked
    ELSEIF rad3 = 'X'.
    IF screen-group1 = 'MI1' or screen-group1 = 'MI2'.
    *--- All fields will appear input-enabled
    screen-input = 1.
    ENDIF.
    ENDIF.
    *--- MODIFY SCREEN mandatory addition to apply changes to the screen
    Modify screen.
    endloop.
    Reward if helpful.
    Regards,
    Harini.S

  • Dynamic variables: SELECTION-SCREEN PUSHBUTTON

    hi, how I can create 100 buttons on a cycle so dynamic?
    example:
    SELECTION-SCREEN BEGIN OF LINE.
       SELECTION-SCREEN PUSHBUTTON (4)  TEXT-001    USER-COMMAND but1.
       SELECTION-SCREEN PUSHBUTTON (4)  TEXT-002    USER-COMMAND but2.
       SELECTION-SCREEN PUSHBUTTON (4)  TEXT-003    USER-COMMAND but3.
       SELECTION-SCREEN PUSHBUTTON (4)  TEXT-004    USER-COMMAND but4.
    SELECTION-SCREEN END OF LINE.
    .....must be dynamic and they can be 100 and just 10
    thanks in advance.
    goudden.

    It gives you an error cause the macro is wrong. Try like this:
    define create_line.
    SELECTION-SCREEN BEGIN OF LINE.
       SELECTION-SCREEN PUSHBUTTON (4)  TEXT-&1    USER-COMMAND b&1.
       SELECTION-SCREEN PUSHBUTTON (4)  TEXT-&2    USER-COMMAND b&2.
       SELECTION-SCREEN PUSHBUTTON (4)  TEXT-&3    USER-COMMAND b&3.
       SELECTION-SCREEN PUSHBUTTON (4)  TEXT-&4    USER-COMMAND b&4.
    SELECTION-SCREEN END OF LINE.
    end-of-definition.
    selection-screen begin of block b01.
         create_line: 001 002 003 004, 005 006 007 008.
    selection-screen end of block b01.

  • Dynamic check box creation in selection screen

    Hello,
    I am trying to put up some check boxes dynamically in a selection screen. The number: of check boxes required and the 'checkbox label text' is to be retrieved from a database table. I have retrieved all these values in AT SELECTION-SCREEN OUTPUT event. But, I dont know how to create check box parameters using these dynamic values.  Please help..

    hi Giffin,
    Create a program with name 'Z_13317_DYN_CHKBOX' and paste the following code in it. Also make ensure that an include with name 'Z_13317_DYN_INCL' is not existing earlier because this program will be overwritten each and everytime.
    Z_13317_DYN_CHKBOX will take an integer as an input. After giving input, click on the button on selection screen.
    Suppose, if you have given 3 as input and if you have clicked the button, then 3 checkboxes will be generated on your selection screen.
    REPORT  Z_13317_DYN_CHKBOX.
    types :begin of t_itab1,
            line(72),
           end of t_itab1.
    data: incl type table of t_itab1 with header line.
    parameters: p_tab type i,
                p_frst type c no-display.
    selection-screen begin of line.
    selection-screen: pushbutton 2(20) but1 user-command cli1.
    selection-screen end of line.
    include z_13317_dyn_incl if found.
    initialization.
    at selection-screen output.
      if p_frst = ' '.
        p_frst = 'X'.
        perform crt_dyn_incl.
      endif.
    at selection-screen.
      case sy-ucomm.
        when 'CLI1'.
        perform crt_dyn_incl.
      endcase.
    *&      Form  crt_dyn_incl
    *       text
    form crt_dyn_incl .
      perform populate_incl.
      perform del_incl.
      insert report 'Z_13317_DYN_INCL' from incl.
      commit work.
      submit z_13317_dyn_chkbox via selection-screen with p_frst = p_frst.
    endform.                    " crt_dyn_incl
    *&      Form  del_incl
    *       text
    form del_incl .
      call function 'RS_DELETE_PROGRAM'
        exporting
         program                          = 'Z_13317_DYN_INCL'
         suppress_checks                  = 'X'
         suppress_popup                   = 'X'
         with_cua                         = ' '
         with_documentation               = ' '
         with_dynpro                      = 'X'
         with_includes                    = ' '
         with_textpool                    = ' '
         with_variants                    = ' '
      if sy-subrc <> 0.
      endif.
    endform.                    " del_incl
    *&      Form  populate_incl
    *       text
    form populate_incl .
      data: v_cnt type n.
      do p_tab times.
        v_cnt = v_cnt + 1.
        incl-line = 'parameters: '.
        concatenate incl-line 'p_chk' v_cnt into incl-line.
        concatenate incl-line 'as checkbox.' into incl-line separated by space.
        append incl.
        clear incl.
      enddo.
    endform.                    " populate_incl
    Regards,
    Sailaja.

  • Dynamic Parameters in the Selection screen

    Hi,
    I want to have a pair of Parameters (Source & Target Field) in the Selection Screen. Is it possible to create more pairs of Parameters by click of a Button or something else?
    Sinan

    hi,
    Dynamic generation of selection-screen is bit confusing.
    I have a sample program which takes an integer as an input. After giving input, click on the button on selection screen. You can make a similar logic in your case also.
    Create a program with name 'Z_13317_DYN_CHKBOX' and paste the following code in it. Also make ensure that an include with name 'Z_13317_DYN_INCL' is not existing earlier because this program will be overwritten each and everytime.
    Suppose, if you have given 3 as input and if you have clicked the button, then 3 checkboxes will be generated on your selection screen.
    REPORT  Z_13317_DYN_CHKBOX.
    types :begin of t_itab1,
            line(72),
           end of t_itab1.
    data: incl type table of t_itab1 with header line.
    parameters: p_tab type i,
                p_frst type c no-display.
    selection-screen begin of line.
    selection-screen: pushbutton 2(20) but1 user-command cli1.
    selection-screen end of line.
    include z_13317_dyn_incl if found.
    initialization.
    at selection-screen output.
      if p_frst = ' '.
        p_frst = 'X'.
        perform crt_dyn_incl.
      endif.
    at selection-screen.
      case sy-ucomm.
        when 'CLI1'.
        perform crt_dyn_incl.
      endcase.
    *&      Form  crt_dyn_incl
    *       text
    form crt_dyn_incl .
      perform populate_incl.
      perform del_incl.
      insert report 'Z_13317_DYN_INCL' from incl.
      commit work.
      submit z_13317_dyn_chkbox via selection-screen with p_frst = p_frst.
    endform.                    " crt_dyn_incl
    *&      Form  del_incl
    *       text
    form del_incl .
      call function 'RS_DELETE_PROGRAM'
        exporting
         program                          = 'Z_13317_DYN_INCL'
         suppress_checks                  = 'X'
         suppress_popup                   = 'X'
         with_cua                         = ' '
         with_documentation               = ' '
         with_dynpro                      = 'X'
         with_includes                    = ' '
         with_textpool                    = ' '
         with_variants                    = ' '
      if sy-subrc <> 0.
      endif.
    endform.                    " del_incl
    *&      Form  populate_incl
    *       text
    form populate_incl .
      data: v_cnt type n.
      do p_tab times.
        v_cnt = v_cnt + 1.
        incl-line = 'parameters: '.
        concatenate incl-line 'p_chk' v_cnt into incl-line.
        concatenate incl-line 'as checkbox.' into incl-line separated by space.
        append incl.
        clear incl.
      enddo.
    endform.                    " populate_incl
    Regards
    Sailaja.

  • Problems creating dynamic selection screen

    Hi all,
    i'm trying to dynamically generate a selection screen and show it as subscreen using the two function modules FREE_SELECTIONS_INIT and FREE_SELECTIONS_DIALOG. I call the function modules in the PBO of the therefor defined subscreen. The FREE_SELECTIONS_DIALOG fm has the two import parameter "as_subscreen" and "as_window". If i use the "as_window" parameter the selection screen comes up as popup. If i use the "as_subscreen" parameter, i can't see anything in my defined subscreen.
    Any suggestions ?
    Thanks in Advance
    Dirk

    Hi,
    The above requirement is not possible without using logical database.
    The reason is that the compiler identifies the below syntax only inside a LDB program .
    SELECTION-SCREEN DYNAMIC SELECTIONS
                     FOR {NODE|TABLE} node [ID id].
    The above syntax creates a subscreen container on the standard selection screen of the program during generation
    and we are able to view the dynamic selections icon on the selection screen.
    Hence it is not possible to use the FM 'FREE_SELECTIONS_DIALOG' as a subscreen without using a
    logical database of the relevant table.
    However if you dont want to create a new LDB for each table, there is a trick which needs to be performed
    once in your SAP system and all custom programs can use this FM to create a dynamic selection screen
    as a subscreen of the standard selection screen.
    The prerequisite steps are as follows:
    1: Create a dummy  / test database table in SE11 with a single field i.e. for example mandt , matnr
    2: Create a new logical database program for this table in SE36. Save and activate.
    This will create dynamic selections for the fields of the table created in step 1.
    Steps to be followed in the required custom ABAP program to create the dynamic selection screen as a subscreen.
    A: Include the LDB program created in step 2, in the attributes of the custom ABAP program.
    Now when you execute the program, you can see the dynamic selection icon for the dummy table created in step 1.
    B: In your custom program we need to suppress the icon for 'Dynamic Selections' from the standard selection screen.
       We need to perform this action, because the 'Dynamic Selections' icon always triggers a call to the
       dynamic selection screen of the included LDB progam. ( In our case a dummy table created in step 1 ).
       Whereas we want to trigger a call of the dynamic selection screen of our desired table.
       Logic is as follows:
       In 'AT SELECTION-SCREEN OUTPUT' event call the FM RS_SET_SELSCREEN_STATUS to exclude the fcode 'DYNS'.
    C: Add a pushbutton / checkbox on your selection screen to trigger a call to the FM 'FREE_SELECTIONS_INIT' &
       'FREE_SELECTIONS_DIALOG' in the 'AT SELECTION-SCREEN' event.
    D: When the user clicks the pushbutton / checkbox for dynamic selections call the above 2 FM for the desired table
        with the AS_SUBSCREEN flag of FREE_SELECTIONS_DIALOG = 'X'
    Result: Your dynamic selections screen will be created as a subscreen of the standard selection screen and not as a pop-up.
    Advantage: With the creation of the single custom table & LDB, you are now able to create dynamic selections as subscreen
    in any program in the system. All we need to do is follow the steps A, B & C in each program.
    Note: Your other restrictions with dynamic selection screen ie. submit in background , save as variant still remain and
    you need to handle them accordingly.
    let me know if you need sample code.
    Regards,
    Bhawit Kumar

  • Dynamically calling selection screens with obligatory

    TABLES :
    ******selection-screen: begin of block bal with frame title txt3.
    ******parameters: RB1  radiobutton group rd1 user-command abc default 'X'.
    ******parameters: RB2  radiobutton group rd1.
    ******selection-screen: end of block bal.
    ******selection-screen: begin of block B1 with frame title txt1.
    ******SELECT-OPTIONS  : s_cust  FOR KNA1-kunnr OBLIGATORY  MODIF ID r1.
    ******SELECT-OPTIONS  : s_plant  FOR plko-werks OBLIGATORY MODIF ID r1 .
    ******selection-screen: end of block val.
    ******selection-screen: begin of block upd with frame title txt2.
    ******SELECT-OPTIONS:  s_vend  FOR lfa1-lifnr OBLIGATORY modif id r2.
    ******SELECT-OPTIONS: s_plan  FOR plko-werks OBLIGATORY modif id r2.
    ******selection-screen: end of block upd.
    Here i need to call these two selection screens dynamically depends on radio buttion selection.
    But
    Problem is a arising when when both are obligatory in selection screen ( with out obligatory , it is working fine)
    I need to call screens dynamically, ecen though we have obligatory
    Let me know procedure , the possibility of same funcationality in tabstips & selection screen.
    Madhu

    Hi Madhu,
    You have to write code in AT SELECTION-SCREEN OUTPUT event.
    First of all remove obligatory from select-options declaration. Do it dynamically in AT SELECTION-SCREEN OUTPUT event.
    You enable or disable the block depending upon the rediobutton selected. Then in the venet AT SELECTION-SCREEN ON field, you can check whethere user has entered data into that field or not depending upon the radiobutton selected.
    TABLES : kna1,
             plko,
             lfa1.
    SELECTION-SCREEN: BEGIN OF BLOCK bal WITH FRAME TITLE txt3.
    PARAMETERS: rb1 RADIOBUTTON GROUP rd1 USER-COMMAND abc DEFAULT 'X'.
    PARAMETERS: rb2 RADIOBUTTON GROUP rd1.
    SELECTION-SCREEN: END OF BLOCK bal.
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE txt1.
    SELECT-OPTIONS : s_cust FOR kna1-kunnr  MODIF ID r1.
    SELECT-OPTIONS : s_plant FOR plko-werks MODIF ID r1 .
    SELECTION-SCREEN: END OF BLOCK b1.
    SELECTION-SCREEN: BEGIN OF BLOCK upd WITH FRAME TITLE txt2.
    SELECT-OPTIONS: s_vend FOR lfa1-lifnr MODIF ID r2.
    SELECT-OPTIONS: s_plan FOR plko-werks MODIF ID r2.
    SELECTION-SCREEN: END OF BLOCK upd.
    AT SELECTION-SCREEN OUTPUT.
      LOOP AT SCREEN.
        IF rb1 EQ 'X'.
          IF ( screen-name EQ 'S_CUST-LOW'
            OR screen-name EQ 'S_CUST-HIGH'
            OR screen-name EQ 'S_PLANT-LOW'
            OR screen-name EQ 'S_PLANT-HIGH') .
            screen-active = '1' .
          ENDIF.
          IF ( screen-name EQ 'S_VEND-LOW'
            OR screen-name EQ 'S_VEND-HIGH'
            OR screen-name EQ 'S_PLAN-LOW'
            OR screen-name EQ 'S_PLAN-HIGH') .
            screen-active = '0' .
          ENDIF.
        ELSEIF rb2 EQ 'X'.
          IF ( screen-name EQ 'S_VEND-LOW'
            OR screen-name EQ 'S_VEND-HIGH'
            OR screen-name EQ 'S_PLAN-LOW'
            OR screen-name EQ 'S_PLAN-HIGH') .
            screen-active = '1' .
          ENDIF.
          IF ( screen-name EQ 'S_CUST-LOW'
            OR screen-name EQ 'S_CUST-HIGH'
            OR screen-name EQ 'S_PLANT-LOW'
            OR screen-name EQ 'S_PLANT-HIGH') .
            screen-active = '0' .
          ENDIF.
        ENDIF.
        MODIFY SCREEN.
      ENDLOOP.
    Regards,
    Anil Salekar

  • Issue with tabbed block in selection screen

    Hi All,
    I have created a report program with the following code.
    SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
    PARAMETERS: p1 TYPE c LENGTH 10.
    SELECTION-SCREEN END OF SCREEN 100.
    SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
    PARAMETERS: q1 TYPE c LENGTH 10.
    SELECTION-SCREEN END OF SCREEN 200.
    SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 10 LINES,
                      TAB (20) button1 USER-COMMAND push1,
                      TAB (20) button2 USER-COMMAND push2,
                      END OF BLOCK mytab.
    INITIALIZATION.
      button1 = 'Selection Screen 1'.
      button2 = 'Selection Screen 2'.
      mytab-prog = sy-repid.
      mytab-dynnr = 0100.
      mytab-activetab = 'PUSH1'.
    AT SELECTION-SCREEN.
      CASE sy-dynnr.
        WHEN 1000.
          CASE sy-ucomm.
            WHEN 'PUSH1'.
              mytab-dynnr = 100.
            WHEN 'PUSH2'.
              mytab-dynnr = 200.
          ENDCASE.
      ENDCASE.
    Execute the program and click on the second tab-page. Now, click on the 'Execute' button or press F8 (there is no specific functionality coded here).
    The issue now is that the first tab-page is displayed, instead of the second tab remaining displayed. I require the navigation to remain within the second tab-page after the EXECUTE button is clicked.
    Could someone help me out with this issue?
    Regards,
    Dinup
    Edited by: Dinup Sudhakaran on Feb 18, 2008 1:40 PM

    Hi,
    Go through below document with example code.
    It will help you.
    Tabstrip Controls on Selection Screens
    As with screens, you can now use tabstrip controls on selection screens. To do this, you must define a tabstrip area and the associated tab pages, and assign a subscreen to the tab pages. You do not have to (indeed, cannot) declare the tabstrip control or program the screen flow logic in your ABAP program, since both are automatically generated.
    To define a tabstrip area with tab pages, use the following statements in your selection screen definition:
    SELECTION-SCREEN: BEGIN OF TABBED BLOCK <tab_area> FOR <n> LINES,
                      TAB (<len>) <tab1> USER-COMMAND <ucom1>
                                  [DEFAULT [PROGRAM <prog>] SCREEN <scrn>],
                      TAB (<len>) <tab2> USER-COMMAND <ucom2>
                                  [DEFAULT [PROGRAM <prog>] SCREEN <scrn>],
                      END OF BLOCK <tab_area>.
    This defines a tabstrip control <tab_area> with size <n>. The tab pages <tab1>, <tab2>… are assigned to the tab area. <len> defines the width of the tab title. You must assign a function code <ucom> area to each tab title. You can find out the function code from the field SY-UCOMM in the AT SELECTION-SCREEN event.
    For each tab title, the system automatically creates a character field in the ABAP program with the same name. Before the selection screen is displayed, you can assign a text to the field. This then appears as the title of the corresponding tab page on the selection screen.
    You must assign a subscreen to each tab title. This will be displayed in the tab area when the user chooses that title. You can assign one of the following as a subscreen:
    A subscreen screen defined using the Screen Painter.
    A selection screen subscreen, defined in an ABAP program.
    You can make the assignment either statically in the program or dynamically at runtime. If, at runtime, one of the tab titles has no subscreen assigned, a runtime error occurs.
    Static assignment
    Use the DEFAULT addition when you define the tab title. You can specify an ABAP program and one of its subscreens. If you do not specify a program, the system looks for the subscreen in the current program. When the user chooses the tab title, it is activated, and the subscreen is assigned to the tabstrip area. The static assignment is valid for the entire duration of the program, but can be overwritten dynamically before the selection screen is displayed.
    Dynamic assignment
    For each tab area, the system automatically creates a structure in the ABAP program with the same name. This structure has three components – PROG, DYNNR, and ACTIVETAB. When you assign the subscreens statically, the structure contains the name of the ABAP program containing the subscreen, the number of the subscreen, and the name of the tab title currently active on the selection screen (and to which these values are assigned). The default active tab page is the first page. You can assign values to the fields of the structure before the selection screen is displayed, and so set a subscreen dynamically.
    If you assign a normal subscreen screen to a tab title, the dialog modules containing its flow logic must be defined in the current ABAP program. If the subscreen is a selection screen, user actions will trigger the AT SELECTION-SCREEN event and its variants (see Selection Screen Processing). This includes when the user chooses a tab title. If one selection screen is included on another, AT SELECTION-SCREEN will be triggered at least twice – firstly for the "included" selection screen, then for the selection screen on which it appears.
    REPORT demo_sel_screen_with_tabstrip.
    DATA flag(1) TYPE c.
    SUBSCREEN 1
    SELECTION-SCREEN BEGIN OF SCREEN 100 AS SUBSCREEN.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
    PARAMETERS: p1(10) TYPE c,
                p2(10) TYPE c,
                p3(10) TYPE c.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN END OF SCREEN 100.
    SUBSCREEN 2
    SELECTION-SCREEN BEGIN OF SCREEN 200 AS SUBSCREEN.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME.
    PARAMETERS: q1(10) TYPE c OBLIGATORY,
                q2(10) TYPE c OBLIGATORY,
                q3(10) TYPE c OBLIGATORY.
    SELECTION-SCREEN END OF BLOCK b2.
    SELECTION-SCREEN END OF SCREEN 200.
    STANDARD SELECTION SCREEN
    SELECTION-SCREEN: BEGIN OF TABBED BLOCK mytab FOR 10 LINES,
                      TAB (20) button1 USER-COMMAND push1,
                      TAB (20) button2 USER-COMMAND push2,
                      TAB (20) button3 USER-COMMAND push3
                                       DEFAULT SCREEN 300,
                      END OF BLOCK mytab.
    INITIALIZATION.
      button1 = text-010.
      button2 = text-020.
      button3 = text-030.
      mytab-prog = sy-repid.
      mytab-dynnr = 100.
      mytab-activetab = 'BUTTON1'.
    AT SELECTION-SCREEN.
      CASE sy-dynnr.
        WHEN 1000.
          CASE sy-ucomm.
            WHEN 'PUSH1'.
              mytab-dynnr = 100.
              mytab-activetab = 'BUTTON1'.
            WHEN 'PUSH2'.
              mytab-dynnr = 200.
              mytab-activetab = 'BUTTON2'.
          ENDCASE.
        WHEN 100.
          MESSAGE s888(sabapdocu) WITH text-040 sy-dynnr.
        WHEN 200.
          MESSAGE s888(sabapdocu) WITH text-040 sy-dynnr.
      ENDCASE.
    MODULE init_0100 OUTPUT.
      LOOP AT SCREEN.
        IF screen-group1 = 'MOD'.
          CASE flag.
            WHEN 'X'.
              screen-input = '1'.
            WHEN ' '.
              screen-input = '0'.
          ENDCASE.
          MODIFY SCREEN.
        ENDIF.
      ENDLOOP.
    ENDMODULE.
    MODULE user_command_0100 INPUT.
      MESSAGE s888(sabapdocu) WITH text-050 sy-dynnr.
      CASE sy-ucomm.
        WHEN 'TOGGLE'.
          IF flag = ' '.
            flag = 'X'.
          ELSEIF flag = 'X'.
            flag = ' '.
          ENDIF.
      ENDCASE.
    ENDMODULE.
    START-OF-SELECTION.
      WRITE: / 'P1:', p1,'Q1:', q1,
             / 'P2:', p2,'Q2:', q2,
             / 'P3:', p3,'Q3:', q3.
    This program defines two selection screens – 100 and 200, as subscreens, and places a tabstrip control area with three tab pages on the standard selection screen. A subscreen screen 300 (from the same program) is assigned statically to the third tab page.
    The layout of screen 300 is:
    The input/output fields P1 to Q3 are defined by using the parameters from the ABAP program The pushbutton has the function code TOGGLE.
    The screen flow logic for screen 300 is as follows:
    PROCESS BEFORE OUTPUT.
      MODULE init_0100.
    PROCESS AFTER INPUT.
      MODULE user_command_0100.
    Both dialog modules are defined in the ABAP program.
    When you run the program, the standard selection screen appears. In the INITIALIZATION event, the texts are defined on the tab titles, the subscreen selection screen 100 is assigned to the tab area, and the first tab title is activated.
    User actions on the selection screen are processed in the AT SELECTION-SCREEN event block. In particular, it is here that the subscreens are assigned and tab titles activated when the user chooses one of the first two tab titles. This is not necessary for the third tab title, since the dynamic assignment (screen 300) is always placed in the structure MYTAB when the user chooses it.
    Before the subscreen screen is displayed, the PBO module INIT_100 is executed. User actions on the subscreen screen trigger the PAI module. This includes when the user chooses a tab title. After that, the AT SELECTION-SCREEN event is triggered.
    Messages in the status line show where an action has been processed.

  • Select table fields on selection screen

    I have a requirement, where I need to select the table fields dynamically from the selection screen and further I should give option to user to save selected fields as variant and display the final report with the selected fields as catalog.
    For EX: In the selection screen user have two options, one is to check the select fields option where all fields from KNA1 will display from that user will select few and he can save as variant. After execution the report output should display?
    Could you please guide me how to go ahead?
    Thanks,
    A Raghu.

    Hi Raghu,
    For your requirements, you have to define the all the select-options inyour code but at first display onlya few selected ones. Then you can give a button to the user to select the fields and depending on the selection you can hide/unhide the select-options.
    For e.g. you define the select-options on your screeen for all the fields of KNA1. But at first go, display only the customer. Now give a button to the user on the toolbar. When user clicks on the button, give a popup to the user displaying all the fields except customer and allow him to select them. Based on the selection of the user, you can hide/unhide the select-options for the remaining fields.
    Also, in this case your select query will be dynamic. The field list and the where clause have to be maintained in a string and then passed to the select statement.
    Try the functions: FREE_SELECTION_INIT, FREE_SELECTION_DIALOG and MASS_SEL_FIELDS_ENTERPRISE.
    Hope this helps,
    Regards,
    Himanshu

  • Function Keys on Selection-Screen

    Hi,
    I used function keys in one of my report program.
    Now, if some check box is checked in the customization that function should be displayed, otherwise shouldnot be displayed.
    I made use of "loop at screen" to make that application button invisible but i don't know the name of the button. I have given the name as same given while creating the button using "SSCRFIELDS".
    Is there anyy other way to disable the button??
    Regards,
    Yadesh

    Hi,
    Your requirement can be solved with two approaches:
    1) simpler one is to use different GUI statuses depending on checkbox state
    AT SELECTION-SCREEN OUTPUT.
    refresh it_exclude.
    if checkbox = 'X'.
      append 'BUTTON_FCODE'.
    endif.
    "you in turn swith on/off your desired button
    CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
        EXPORTING
          p_status  = 'GUI_STATUS'
          p_program = sy-repid
        TABLES
          p_exclude = it_exclude.
    2) as SELECTION-SCREEN FUNCTION KEY n statement cannot be processed within PAI/PBO block you cannot set it dynamically like
    AT SELECTION-SCREEN.
    IF check = 'X' .
    SELECTION-SCREEN FUNCTION KEY n.
    ELSE.
    "no selection button here
    ENDIF.
    Moreover you cannot change standard application toolbar of selection screen within Loop at screen statement (this will only affect selection screen parameters not toolbar).
    The only way here is dynamically generate report's code. When checkbox is check what you do is
    data: it_code type table of char72 with header line.
    READ REPORT sy-repid INTO it_code.
    Then looping through the code table you either remove entry having SELECTION-SCREEN FUNCTION KEY n. or add it to the table.
    Finally you switch reports code with
    INSERT REPORT sy-repid FROM it_code.
    And execute new one with
    SUBMIT (sy-repid).
    This will ensure that new SELECTION-SCREEN parameters (or function keys in your case can be switched and report will be executed with new screen look).
    Nevetherless be carefull! You need to ensure that submit will not create and endless loop. ABAP Memory will help you here (exchange flags within program indicating whether program is executed for the first time or another one).
    Hope this will give you some idea how to solve it.
    Regards
    Marcin

  • Dinamic variant for selection screen

    Hi,
    I got a requirement where i need  a Dynamic variant for selection screen .There is a date field in the selection screen i want to create  a variant such that when i choose it,it should give the current day date in selection screen.can anyone help me.
    Regards,
    Ravi

    Hi,
    Using Customer Exit code you can give it.
    Create a Customer Exit Variable and write simple code in CMOD. See the usefull Exit code for reports in the following url.
    https://wiki.sdn.sap.com/wiki/display/profile/Surendra+Reddy
    WHEN 'ZV_DAT'.
        IF i_step = 1 .
          CLEAR l_s_range.
          l_s_range-low = sy-datum.
          l_s_range-opt = 'EQ'.
          l_s_range-sign = 'I'.
          APPEND l_s_range TO e_t_range.
        ENDIF.
    Thanks
    Reddy

Maybe you are looking for