Resize docking container at runtime

Hi container addicts,
My report has a selection screen. Below I create a docking container (with SALV grid) docked at bottom with calculated extension that the select-options are still visible.
The customer wants a toggle button to extend the control to the full screen area and make it small again to have the selections visible.
Will I have to destroy the container and then recreate container and grid with different size or can I re-size the container at run time dynamically?
Thanks for useful hints.
Regards,
Clemens

Thank you Rich,
this works fine. Obviously the extension is measured in something like points or pixels.
I tied a dynamic solution regarding the actual screen size with constants for the selection screen area (mc_rows_selection_area. = 4) and estimated pixels per row mc_graph_units_per_row = 12.
It works approximately, but not too exact. Are you aware of any methods to determine the full screen size (without standard tool bar) in the kind of units we need for SET_EXTENSION method?
* provide dynamic screen space
  IF sy-srows <= mc_rows_selection_area.
    lv_srows = mc_rows_selection_area.
  ELSE.
    lv_srows = sy-srows - mc_rows_selection_area.
  ENDIF.
* extension in pixels(?) as n pixels per row
  lv_extension = mc_graph_units_per_row * lv_srows.
  set_docking_extension( lv_extension ).
Thanks a lot.
Regards,
Clemens

Similar Messages

  • Resize a container size at runtime in WD ABAP

    Hi all,
    I have some queries in WD ABAP.
    1) If I want to resize(stretch) a container at runtime is there any GUI element or something else to do so.
    2) Also when I hit enter at runtime how to handle this even.
    Please suggest.
    Thanks
    Sanket sethi

    Hi Sanket
    If I want to resize(stretch) a container at runtime is there any GUI element or something else to do so
    There is no such UI element which can stretch the container. But you can set the width and height property of the container with two string type attribute and in some event handler, just set the value in these attribute according to the size you want.
    Every Input field has ONENTER event, just write the code in that method.
    I hope it helps.
    Regards
    Arjun
    Edited by: Arjun on Jan 22, 2009 11:57 AM

  • Disable Resize on docking container!

    How can I easyly disable resize on docking container...
    Plz : NOT with EVENT Handler

    Hi
    I had same problem , but i din't find any solution,
    later i had changed the display with custom container , but for background processing i am using the docking container.
    Laxman

  • Restrict resizing while using Docking Container

    All,
    How can we restrict the resizing the docking container with class GL_CUI_DOCKING_CONTAINER. Currently it is displaying in full screen. but donot want user to resize the SCREEN.
    create object g_docking_container
        exporting
          repid     = g_repid
          dynnr     = '300'
          extension = 99999
          side      = cl_gui_docking_container=>dock_at_right.

    Hi,
    Don't know how to do this for docking container but you can use splitter container instead and remove the option for resizing it.
    r_split_container->set_row_sash( id    = 1
                                               type  = me->r_split_container->type_movable
                                               value = me->r_split_container->false ).
    Regards
    Marcin

  • How to disable the sizing option in docking container

    Hi experts,
    I have created a grid in a docking container ( cl_gui_docking_container ) which will appear on the selection screen, docking at the bottom. The requirement is to disable the resizing functionality of the grid when I use the sizing arrow with the mouse on dragging. Ideally I am able to expand the grid vertically covering the selection parameters. This option has to be disabled. Please suggest any options for the same.

    CREATE OBJECT r_dock_container
        EXPORTING
       side                        = cl_gui_docking_container=>dock_at_right
          extension                   = 780
          caption                     = 'Materials'
        EXCEPTIONS
          cntl_error                  = 1
          cntl_system_error           = 2
          create_error                = 3
          lifetime_error              = 4
          lifetime_dynpro_dynpro_link = 5
          OTHERS                      = 6.
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF
    I think extension my help..  

  • Problem with ALV in Docking container

    Dear All,
    I have created an <b>editable ALV</b> in a <b>docking container</b>. In this ALV there are some custom buttons in the toolbar. In case a custom activity, in the toolbar, is executed some checks are performed which when fail an error message issued.
    The problem: After the error msg is received if the user corrects the error and re-executes the toolbar custom activity the execution of the program is being terminated and it takes me out of the transaction which should not be the case. I tried to debug/place a hard break-point at the piece of code which should be executed but no success..
    Note: In case i use a custom control then everything is working fine. The reason i want to use a docking container over a custom container, is that if the ALV is placed in a docking container it occupies the complete screen area irrespective of the resolution of the screen.
    Can anyone help as to why this problem is happening and how it can be resolved.
    Thanks in advance for your help.
    regards
    Nitesh

    Well, if you want to try to use a custom container, the trick is to make the screen really big, and then make the container just as big, then double click on the control in screen painter, and set the vertical and horizontal resizing.   Doing this will make the ALV adjust depending on screen resolution. 
    Regards,
    RIch Heilman

  • SIZE_CONTROL Event for docking container

    Hi, Everybody
    I'm trying to handle size_control event for a docking container. But the event is not trigged. See the code excerpt below:
    * Create left docking container
      CREATE OBJECT ao_docking_container_left
        EXPORTING
          side = cl_gui_docking_container=>dock_at_left
          extension = 300
          dynnr = cl_co=>ac_main_screen
          repid = cl_co=>ac_main_prog.
    * Register the event
    ls_event-eventid = 12.
      ls_event-appl_event = 'X'.
      APPEND ls_event TO lt_events.
      CALL METHOD ao_docking_container_left->set_registered_events
        EXPORTING
          events                    = lt_events
        EXCEPTIONS
          cntl_error                = 1
          cntl_system_error         = 2
          illegal_event_combination = 3
          OTHERS                    = 4
    * Set handler
    SET HANDLER handle_doclist_resize FOR ao_docking_container_left.
    I have set the handle_doclist_resize method as a handler for the SIZE_CONTROL event of the CL_GUI_DOCKING_CONTAINER class (by Class Builder).

    I have transfered my code just into the one programm. But it still doesn't work I guess the SIZE_CONTROL event is not implemented in CL_GUI_DOCKING_CONTAINER.
    *& Report  ZMMM_DOCK                                                   *
    report  zmmm_dock                               .
    data:   ao_docking_container_left type ref to cl_gui_docking_container,
            lt_events type cntl_simple_events,
            ls_event type cntl_simple_event.
    *&       Class CL_EVENT_HANDLER
    *        Text
    class cl_event_handler definition.
      public section.
        class-methods:
        handle_doclist_resize for event size_control
        of cl_gui_docking_container.
    endclass.               "CL_EVENT_HANDLER
    * Create left docking container
    create object ao_docking_container_left
      exporting
        side = cl_gui_docking_container=>dock_at_left
        extension = 600
        dynnr = '0100'
        repid = sy-repid.
    ls_event-eventid = 12.
    ls_event-appl_event = 'X'.
    append ls_event to lt_events.
    call method ao_docking_container_left->set_registered_events
      exporting
        events                    = lt_events
      exceptions
        cntl_error                = 1
        cntl_system_error         = 2
        illegal_event_combination = 3
        others                    = 4.
    set handler cl_event_handler=>handle_doclist_resize
      for ao_docking_container_left.
    call screen 100.
    *&       Class (Implementation)  cl_event_handler
    *        Text
    class cl_event_handler implementation.
      method handle_doclist_resize.
    *Handles tree resizing
        data: lv_result type sysubrc,
              lv_width type i.
        call method ao_docking_container_left->get_width
          importing
            width      = lv_width
          exceptions
            cntl_error = 1
            others     = 2.
        leave program.
      endmethod.                    "handle_doclist_resize
    endclass.               "cl_event_handler
    include zmmm_dock_status_0100o01.
    include zmmm_dock_user_command_0100i01.

  • Docking container in a screen with others elements.

    Hy yall,
    i'm trying to add a docking container at the bottom of a screen where i have already others elements like subscreen etc...
    The add is ok but the dockingcontainer is pushing on the right all the elements in the dynpro.
    How can i control where the docking starts ( his distance from the top) in other to keep it under the others elements?
    P.s: it's a docking_left.

    Hello Andre
    If you have already elements on the screen I would recommend to use a resizable CUSTOM_CONTROL element on the screen to which you link your docking container.
    Furthermore, if the docking container should dock from the bottom why don't you use DOCKING_BOTTOM and make the width of the docking container huge (to fill the entire screen to the right side)?
    Regards
      Uwe

  • ALV resizing Custome container

    Hi All,
    How can i resize Custom controler area based on the number of records i fetch..
    Regards
    Anuj

    We cannot resize the custom container area dynamically using ABAP code.Try using docking container instead.

  • Docking container in splitter container?

    Hi forum,
    i would like to generate a view (dynpro) with is seperated in 3 vertical (resizable) areas. I have solved this with the splitter container.
    Now i would like to fill the 3 areas with dynamic content, i. e. different table views. These different contents should be nested in containers, so i can push my predefined containers into the splitter areas. (just the contents the user would like to see...)
    In my opinion, the docking container is the right choise, because i have not to carry about positioning the container at all.
    Now theres a problem in adapting the docking container to the splitter container and i am not sure if it is possible at all?!?
    I try to create the docking object with the splitter object as parent, but the debugger calls a run time error?!?
    CREATE OBJECT docking_container
      EXPORTING
        parent                      = splitter_container
    *    repid                       =
    *    dynnr                       =
    *    side                        = docking_container->dock_at_left
    *    extension                   = 50
    *    style                       =
    *    lifetime                    = lifetime_default
        caption                     = 'MyDock'
    *    metric                      = 0
    *    ratio                       =
    *    no_autodef_progid_dynnr     =
    *    name                        =
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        others.
    Can anyone help? Different solutions are also welcome...
    Thanks in advance,
    Dennis

    Jose, thank you.
    Here is my complete code and I cannot find any differences to your example...
    DATA: custom_container TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
            splitter_container TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
            splitter_cont1 type ref to cl_gui_container,
            dock_container TYPE REF TO CL_GUI_DOCKING_CONTAINER.
    * custom container
    * the name 'CUSTOM_CONTROL_BASE' references to the
    * custom control on the main dynpro 100!!!
      CREATE OBJECT custom_container
        EXPORTING
          container_name              = 'CUSTOM_CONTROL_BASE'
        EXCEPTIONS
          cntl_error                  = 1
          cntl_system_error           = 2
          create_error                = 3
          lifetime_error              = 4
          lifetime_dynpro_dynpro_link = 5
          others                      = 6
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        exit.
      ENDIF.
    * set splitscreen container
      CREATE OBJECT splitter_container
        EXPORTING
          parent            = custom_container
          rows              = 1
          columns           = 3
        EXCEPTIONS
          cntl_error        = 1
          cntl_system_error = 2
          others            = 3.
      IF sy-subrc <> 0.
    *    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        exit.
      ENDIF.
      CALL METHOD splitter_container->GET_CONTAINER
        EXPORTING
          ROW       = 1
          COLUMN    = 1
        RECEIVING
          CONTAINER = splitter_cont1.
    CREATE OBJECT dock_container
      EXPORTING
        parent                      = splitter_cont1
      EXCEPTIONS
        cntl_error                  = 1
        cntl_system_error           = 2
        create_error                = 3
        lifetime_error              = 4
        lifetime_dynpro_dynpro_link = 5
        others                      = 6
    IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    In debug - mode I can see, that 'splitter_cont' is initalized... The code only breakes when a parent is set to dock_container.
    The error comes from CL_GUI_CONTAINER->GET_FRAME_CONTAINER where the compiler runs into 'RAISE CNTL_ERROR'...
    METHOD GET_FRAME_CONTAINER.
        DATA: PARENTID TYPE I.
    *    CALL 'DY_GET_MODAL_LEVEL' ID 'MOD_LEV' FIELD PARENTID.
    *    CALL 'DY_GET_MODAL_LEVEL' ID 'MOD_LEV_UI' FIELD PARENTID.
    *    CALL 'DY_GET_MODAL_LEVEL' ID 'ACT_UI_MOD_LEV' FIELD PARENTID.
        IF CONTAINER IS INITIAL.
            CALL 'DY_GET_MODAL_LEVEL' ID 'ACT_UI_MOD_LEV' FIELD PARENTID.
        ELSEIF CONTAINER->H_CONTROL-SHELLID = -1.
            CALL 'DY_GET_MODAL_LEVEL' ID 'ACT_UI_MOD_LEV' FIELD PARENTID.
        ELSE.
            PARENTID = CONTAINER->H_CONTROL-SHELLID.
        ENDIF.
        IF PARENTID BETWEEN 10 AND 19.    " this are the dynpro areas
            PARENTID = PARENTID - 10.     " now its the corresponding frame
        ENDIF.
        data: new_dummy_parent_container type ref to CL_GUI_CONTAINER.
        IF PARENTID BETWEEN 0 AND 9.
        "    CREATE OBJECT DUMMY_PARENT_CONTAINER
        "        EXPORTING CLSID = SPACE.
        "    DUMMY_PARENT_CONTAINER->H_CONTROL-SHELLID = PARENTID.
        "    FRAME_CONTAINER = DUMMY_PARENT_CONTAINER.
            CREATE OBJECT NEW_DUMMY_PARENT_CONTAINER
                EXPORTING CLSID = SPACE.
            NEW_DUMMY_PARENT_CONTAINER->H_CONTROL-SHELLID = PARENTID.
            FRAME_CONTAINER = NEW_DUMMY_PARENT_CONTAINER.
        ELSEIF PARENTID = 99.
            FRAME_CONTAINER = CONTAINER.
        ELSE.
            IF CONTAINER_MUST_BE_TOPLEVEL = 0.
                FRAME_CONTAINER = CONTAINER.
            ELSE.
                RAISE CNTL_ERROR.
            ENDIF.
        ENDIF.
    ENDMETHOD.
    I have found further solutions like yours on the web, so it seems to be right. I cannot understand why the compiler runs into error?!?
    Thanks a lot!

  • Assign subscreen to docking container

    Hi All,
    I have requirement to make the subscreen of mainscreen draggable/reziable. Very much similar to se80.
    I have two subscreens in main screen. Now I need to give this reziable functionality to one of the subscreen .
    This can be achieved through docking container. But currently I am not using any containers.
    If suppose I have to use docking container then how will i assign this subscreen of main screen to docking container.
    Please suggest.
    Thanks.

    Thanks Naimesh.
    I have tabstrip and subscreen inside it. For each tabstrip click we display different table controls which are again designed in different screens as subscreen. Now how will I make this subscreen in Main screen resizable.

  • How can I pass a docking container to a program in a non-simple context?

    Dear colleagues,
    I want to pass a docking container like the one in SE80 to another program.
    The following code works fine:
    REPORT z_moving_dock.
    DATA: cl_docker type REF TO cl_gui_docking_container.
    PARAMETERS: test.
    INITIALIZATION.
      CREATE OBJECT cl_docker EXPORTING no_autodef_progid_dynnr = 'X'.
    END-OF-SELECTION.
      WRITE:/ test.
    But I cannot extend this to my current program. There I sourced out anything related to the GUI into a function group to obey the MVC paradigma. (That's maybe the error in reasoning, but I'm following the book Design Patterns in Object-Oriented ABAP from SAP Press and -- of course -- good and healthy programming style.)
    So it's a function group which knows the dynpros and controls, the main program knows only the data.
    Now I have a docking container like the one in SE80. We have many working older programs and I want to switch to them carrying the docking container with me. I have searched the Demos in SAP, the Online Help, the SAP Library, Books, the Web, this Forum, but none of them goes beyond the simpler examples that always work.
    I tried the LINK method on the docking container. I tried it before calling the new program (btw. by SUBMIT). I tried it afterwards from the called program (via a function module from the aforementioned group -- but the group is tied to the old program context and therefore I am in a new "instance" of it). I tried different values for REPID and DYNNR in LINK. I debugged SE80 -- too complicated!
    If it works well I get the container back when I return to the calling program. If it works badly the container is completely lost.
    Perhaps I should export something to memory?
    But I strongly would prefer not to alter the called programs: In the future I might also want to call a SAP standard program.
    I also didn't find some documentation explaining what is going on in the background so I could figure out in which direction to "think".
    I also tested the following code on SAP R/3 4.7 and SAP ERP 2005 with the same results.
    In the meantime I also created a minimal example. First the triggering report:
    REPORT z_moving_docking_container.
    DATA: g_example TYPE REF TO zcl_moving_docking_container.
    CREATE OBJECT g_example.
    This obviously calls the main class ZCL_MOVING_DOCKING_CONTAINER which has only this constructor:
    METHOD constructor.
      CALL FUNCTION 'Z_SHOW_DYNPRO'.
    ENDMETHOD.
    Normally this class should handle the business logic. Here it only calls this function module. In the appropriate function group, say Z_MOVING_DOCKING_CONTAINER, I have these declarations in the TOP-Include:
    FUNCTION-POOL z_moving_docking_container.
    DATA:
      gv_okcode TYPE ui_func,
      go_docker TYPE REF TO cl_gui_docking_container.
    The function group also contains a dynpro 9000 with this flow logic:
    PROCESS BEFORE OUTPUT.
      MODULE status_9000.
    PROCESS AFTER INPUT.
      MODULE user_command_9000.
    The modules are straightforward:
    MODULE status_9000 OUTPUT.
      SET PF-STATUS '9000'.
      IF go_docker IS INITIAL.
        CREATE OBJECT go_docker
               EXPORTING no_autodef_progid_dynnr = 'X'.
      ENDIF.
    ENDMODULE.
    with at least the function code ONLI defined in PF-status 9000 and
    MODULE user_command_9000 INPUT.
      IF gv_okcode = 'ONLI'.
        SUBMIT z_sample_report AND RETURN.
      ELSE.
        LEAVE PROGRAM.
      ENDIF.
    ENDMODULE.
    The report Z_SAMPLE_REPORT can be any report you like.
    At last the function module contains the following code:
    FUNCTION z_show_dynpro.
    *"*"Lokale Schnittstelle:
      CALL SCREEN 9000.
    ENDFUNCTION.
    As I see this, this is a straightforward application of the working example at the top and the principles of MVC and encapsulation of the dynpro logic (to "avoid" global variables as best as possible).
    Clearly in some sense this is an academic question, but I have built a fairly big application like that up to now ...
    </edit>
    Thanks for reading and contemplating,
    Thomas
    Edited by: Thomas Geiß on Feb 4, 2009 11:03 AM
    Edited by: Thomas Geiß on Feb 4, 2009 11:59 AM
    Edited by: Thomas Geiß on Feb 4, 2009 12:01 PM

    You'll either have to pass the data in as parameters in the applet tags or create a JavaScript tag and have the JavaScript pass it in. If the array is very large then you open a connection between the Applet and a servlet and pass the data that way.

  • How to set background color in a docking container?

    Hi guys!
    Is it possible to set a background color for a docking container?
    I don't find any appropriate method to do that.
    Is there actually a way?

    Hi,
    Please refer the below program as a reference for Color using Docking Container Concept.
    REPORT zcuitest_alv_07.
    * Use of colours in ALV grid (cell, line and column)            *
    * Table
    TABLES : mara.
    * Type
    TYPES : BEGIN OF ty_mara,
              matnr         LIKE mara-matnr,
              matkl         LIKE mara-matkl,
              counter(4)    TYPE n,
              free_text(15) TYPE c,
              color_line(4) TYPE c,           " Line color
              color_cell    TYPE lvc_t_scol,  " Cell color
    END OF ty_mara.
    * Structures
    DATA  : wa_mara     TYPE ty_mara,
            wa_fieldcat TYPE lvc_s_fcat,
            is_layout   TYPE lvc_s_layo,
            wa_color    TYPE lvc_s_scol.
    * Internal table
    DATA : it_mara     TYPE STANDARD TABLE OF ty_mara,
           it_fieldcat TYPE STANDARD TABLE OF lvc_s_fcat,
           it_color    TYPE TABLE          OF lvc_s_scol.
    * Variables
    DATA : okcode LIKE sy-ucomm,
           w_alv_grid          TYPE REF TO cl_gui_alv_grid,
           w_docking_container TYPE REF TO cl_gui_docking_container.
    PARAMETERS : p_column AS CHECKBOX,
                 p_line   AS CHECKBOX,
                 p_cell   AS CHECKBOX.
    START-OF-SELECTION.
      PERFORM get_data.
    END-OF-SELECTION.
      PERFORM fill_catalog.
      PERFORM fill_layout.
      CALL SCREEN 2000.
    *&      Module  status_2000  OUTPUT
    *       text
    MODULE status_2000 OUTPUT.
      SET PF-STATUS '2000'.
    ENDMODULE.                 " status_2000  OUTPUT
    *&      Module  user_command_2000  INPUT
    *       text
    MODULE user_command_2000 INPUT.
      DATA : w_okcode LIKE sy-ucomm.
      MOVE okcode TO w_okcode.
      CLEAR okcode.
      CASE w_okcode.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " user_command_2000  INPUT
    *&      Module  alv_grid  OUTPUT
    *       text
    MODULE alv_grid OUTPUT.
      IF w_docking_container IS INITIAL.
        PERFORM create_objects.
        PERFORM display_alv_grid.
      ENDIF.
    ENDMODULE.                 " alv_grid  OUTPUT
    *&      Form  create_objects
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM create_objects.
    * Ratio must be included in [5..95]
      CREATE OBJECT w_docking_container
        EXPORTING
          ratio                       = 95
        EXCEPTIONS
          cntl_error                  = 1
          cntl_system_error           = 2
          create_error                = 3
          lifetime_error              = 4
          lifetime_dynpro_dynpro_link = 5
          others                      = 6.
      CREATE OBJECT w_alv_grid
        EXPORTING
          i_parent          = w_docking_container.
    ENDFORM.                    " create_objects
    *&      Form  display_alv_grid
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM display_alv_grid.
      CALL METHOD w_alv_grid->set_table_for_first_display
        EXPORTING
          is_layout                     = is_layout
        CHANGING
          it_outtab                     = it_mara
          it_fieldcatalog               = it_fieldcat
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4.
    ENDFORM.                    " display_alv_grid
    *&      Form  get_data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM get_data.
      SELECT * FROM mara UP TO 5 ROWS.
        CLEAR : wa_mara-color_line, wa_mara-color_cell.
        MOVE-CORRESPONDING mara TO wa_mara.
        ADD 1                   TO wa_mara-counter.
        MOVE 'Blabla'           TO wa_mara-free_text.
        IF wa_mara-counter = '0002'
        AND p_line = 'X'.
    * Color line
          MOVE 'C410' TO wa_mara-color_line.
        ELSEIF wa_mara-counter = '0004'
        AND p_cell = 'X'.
    * Color cell
          MOVE 'FREE_TEXT' TO wa_color-fname.
          MOVE '5'         TO wa_color-color-col.
          MOVE '1'         TO wa_color-color-int.
          MOVE '1'         TO wa_color-color-inv.
          APPEND wa_color TO it_color.
          wa_mara-color_cell[] = it_color[].
        ENDIF.
        APPEND wa_mara TO it_mara.
      ENDSELECT.
    ENDFORM.                    " get_data
    *&      Form  fill_catalog
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM fill_catalog.
    * Colour code :                                                 *
    * Colour is a 4-char field where :                              *
    *              - 1st char = C (color property)                  *
    *              - 2nd char = color code (from 0 to 7)            *
    *                                  0 = background color         *
    *                                  1 = blue                     *
    *                                  2 = gray                     *
    *                                  3 = yellow                   *
    *                                  4 = blue/gray                *
    *                                  5 = green                    *
    *                                  6 = red                      *
    *                                  7 = orange                   *
    *              - 3rd char = intensified (0=off, 1=on)           *
    *              - 4th char = inverse display (0=off, 1=on)       *
    * Colour overwriting priority :                                 *
    *   1. Line                                                     *
    *   2. Cell                                                     *
    *   3. Column                                                   *
      DATA : w_position TYPE i VALUE '1'.
      CLEAR wa_fieldcat.
      MOVE w_position TO wa_fieldcat-col_pos.
      MOVE 'MATNR'    TO wa_fieldcat-fieldname.
      MOVE 'MARA'     TO wa_fieldcat-ref_table.
      MOVE 'MATNR'    TO wa_fieldcat-ref_field.
      APPEND wa_fieldcat TO it_fieldcat.
      ADD 1 TO w_position.
      CLEAR wa_fieldcat.
      MOVE w_position TO wa_fieldcat-col_pos.
      MOVE 'MATKL'    TO wa_fieldcat-fieldname.
      MOVE 'MARA'     TO wa_fieldcat-ref_table.
      MOVE 'MATKL'    TO wa_fieldcat-ref_field.
    * Color column
      IF p_column = 'X'.
        MOVE 'C610'     TO wa_fieldcat-emphasize.
      ENDIF.
      APPEND wa_fieldcat TO it_fieldcat.
      ADD 1 TO w_position.
      CLEAR wa_fieldcat.
      MOVE w_position TO wa_fieldcat-col_pos.
      MOVE 'COUNTER'  TO wa_fieldcat-fieldname.
      MOVE 'N'        TO wa_fieldcat-inttype.
      MOVE '4'        TO wa_fieldcat-intlen.
      MOVE 'Counter'  TO wa_fieldcat-coltext.
      APPEND wa_fieldcat TO it_fieldcat.
      ADD 1 TO w_position.
      CLEAR wa_fieldcat.
      MOVE w_position  TO wa_fieldcat-col_pos.
      MOVE 'FREE_TEXT' TO wa_fieldcat-fieldname.
      MOVE 'C'         TO wa_fieldcat-inttype.
      MOVE '20'        TO wa_fieldcat-intlen.
      MOVE 'Text'      TO wa_fieldcat-coltext.
      APPEND wa_fieldcat TO it_fieldcat.
    ENDFORM.                    " fill_catalog
    *&      Form  fill_layout
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM fill_layout.
    * Field that identify color line in internal table
      MOVE 'COLOR_LINE' TO is_layout-info_fname.
    * Field that identify cell color in inetrnal table
      MOVE 'COLOR_CELL' TO is_layout-ctab_fname.
    ENDFORM.                    " fill_layout

  • Refresh cl_salv_table= factory attached to a Docking Container

    Hi Gurus!!
    I have a issue with a cl_salv_table=>factory attached to a Docking Container.
    Here is my code set up, which might be wrong actually:
    I've created a simple report, with a TOP and some include for PBO, PAI and routines. In the Report, I call a Screen, here 2000.
    The TOP contains
    DATA: docking_container     TYPE REF TO cl_gui_docking_container,
          gc_table_alv          TYPE REF TO cl_salv_table.
    The Screen Flow is basic:
    PROCESS BEFORE OUTPUT.
      MODULE status_2000.
    PROCESS AFTER INPUT.
      MODULE user_command_2000.
    With status_2000:
    MODULE status_2000 OUTPUT.
      SET PF-STATUS 'STATUS'.
    *  SET TITLEBAR 'xxx'.
    * Initialization of docking container
      IF docking_container IS INITIAL.
        CREATE OBJECT docking_container
          EXPORTING
            side   = cl_gui_docking_container=>dock_at_bottom
          EXCEPTIONS
            OTHERS = 1.
        IF sy-subrc <> 0. MESSAGE a500. ENDIF.
        CALL METHOD docking_container->set_height
          EXPORTING
            height = 170.
      ENDIF.
    ENDMODULE.                 " STATUS_2000  OUTPUT
    Then the Screen PAI looks dumb, but in this example, I have drastically made the code simpler

    I think you are not releasing proxy object with method FREE of docking container.
    Check the below code. It first displays SFLIGHT table, then after another dialog step is concluded, it shows SPFLI table.
    DATA: r_dock_container TYPE REF TO cl_gui_docking_container,
          r_salv_table     TYPE REF TO cl_salv_table.
    DATA: it_sflight TYPE sflight OCCURS 0,
          it_spfli   TYPE spfli   OCCURS 0.
    DATA: count TYPE i.
    START-OF-SELECTION.
      SELECT * FROM sflight INTO TABLE it_sflight UP TO 10 ROWS.
      SELECT * FROM spfli INTO TABLE it_spfli UP TO 10 ROWS.
      CALL SCREEN 0200.
    MODULE pbo OUTPUT.
      SET PF-STATUS space.
      IF count IS INITIAL.
        CREATE OBJECT r_dock_container
          EXPORTING
            side   = cl_gui_docking_container=>dock_at_bottom
          EXCEPTIONS
            OTHERS = 1.
        CALL METHOD r_dock_container->set_height
          EXPORTING
            height = 170.
        CALL METHOD cl_salv_table=>factory
          EXPORTING
            r_container  = r_dock_container
          IMPORTING
            r_salv_table = r_salv_table
          CHANGING
            t_table      = it_sflight.
    *  ALV Display
        r_salv_table->display( ).
      ELSE.
        r_dock_container->free( ).   "this is crucial to release proxy object of docking container
        CLEAR r_dock_container.   "and clear a reference variable (with these two statements your control will disapear from screen)
        "now you can create a new one and bound a new ALV to it
        CREATE OBJECT r_dock_container
           EXPORTING
             side   = cl_gui_docking_container=>dock_at_bottom
           EXCEPTIONS
             OTHERS = 1.
        CALL METHOD r_dock_container->set_height
          EXPORTING
            height = 170.
        CALL METHOD cl_salv_table=>factory
          EXPORTING
            r_container  = r_dock_container
          IMPORTING
            r_salv_table = r_salv_table
          CHANGING
            t_table      = it_spfli.
    *  ALV Display
        r_salv_table->display( ).
      ENDIF.
      ADD 1 TO count .
    ENDMODULE.                  
    Of course you have to adjust it with your tables and data, but this works fine
    Regards
    Marcin
    Edited by: Marcin Pciak on Jun 16, 2009 12:57 PM

  • Background Execution Problem-Docking Container with 2 ALV Grids in one scre

    Hi Friends,
    I have created 2 ALV Grids in one screen - one below another using DOCKING CONTAINER.
    The objects are 'g_dock_cont' and 'g_dock_cont1'.
    I am getting the foreground output as expected with 2 ALV Grids.
    While executing in background (F9), I am getting only output of first ALV grid. Second ALV is not getting displayed in BACKGROUND(F9) mode.
    How to solve this.
    FORM create_objects.
    * Materials with data
      IF   g_dock_cont IS INITIAL.
       IF sy-batch NE 'X'.
    *CREATE THE OBJECT FOR DOCKING CONTAINER
        CREATE OBJECT g_dock_cont
          EXPORTING
            side                  = cl_gui_docking_container=>dock_at_top
            extension             = 300.
        ENDIF.
    *CREATE THE OBJECT FOR ALV GRID
        CREATE OBJECT g_alvgrid
               EXPORTING i_parent = g_dock_cont.
        wa_layout-grid_title =
              'Materials with Data'.
      ENDIF.
    IF NOT I_DETAIL[] IS INITIAL.
    CALL METHOD g_alvgrid->set_table_for_first_display
      EXPORTING
        IS_VARIANT                    = WA_VARIANT_STX
        IS_LAYOUT                     = wa_layout
      CHANGING
        it_outtab                     = I_DETAIL
        IT_FIELDCATALOG               = LIT_FIELDCATALOG[]
      EXCEPTIONS
        INVALID_PARAMETER_COMBINATION = 1
        PROGRAM_ERROR                 = 2
        TOO_MANY_LINES                = 3
        others                        = 4
    IF sy-subrc <> 0.
    ENDIF.
    ENDIF.
    *MATERIALS WITHOUT DATA
      IF   g_dock_cont1 IS INITIAL.
       IF sy-batch NE 'X'.
    *CREATE THE OBJECT FOR DOCKING CONTAINER
        CREATE OBJECT g_dock_cont1
          EXPORTING
            side                  = cl_gui_docking_container=>dock_at_bottom
            extension             = 300.
       ENDIF.
    *CREATE THE OBJECT FOR ALV GRID
        CREATE OBJECT g_alvgrid1
               EXPORTING i_parent = g_dock_cont1.
        wa_layout1-grid_title =
              'Materials without Data'.
      ENDIF.
    IF NOT I_MARA[] IS INITIAL.
    CALL METHOD g_alvgrid1->set_table_for_first_display
      EXPORTING
        IS_LAYOUT                     = wa_layout1
      CHANGING
        it_outtab                     = I_MARA
        IT_FIELDCATALOG               = i_fieldcat[]
      EXCEPTIONS
        INVALID_PARAMETER_COMBINATION = 1
        PROGRAM_ERROR                 = 2
        TOO_MANY_LINES                = 3
        others                        = 4
    IF sy-subrc <> 0.
    ENDIF.
    ENDIF.
    ENDFORM.                    " create_objects
    Regards,
    Viji.

    Hi,
    What i was saying is that you need to code again for background mode of execution.
    AT END OF SELECTION.
    IF SY-BATCH EQ 'X'.
      PERFORM DISPLAY1.
      PERFORM DISPLAY2.
    In DISPLAY1 use REUSE_ALV_LIST_DISPLAY to display data from outtab1.
    In DISPLAY2 use REUSE_ALV_LIST_DISPLAY to display data from outtab2.
    For example : execute this report in background mode.this will not execute in online mode.
    After execution you will get two spools one for KNA1 and one for LFA1 data. Spool can be controlled via IS_PRINT structure.
    report  zrbackground.
    data gt_lfa1 type standard table of lfa1.
    data gt_kna1 type standard table of kna1.
    start-of-selection.
      select * from lfa1 into table gt_lfa1 up to 10 rows.
      select * from kna1 into table gt_kna1 up to 20 rows.
    end-of-selection.
      if sy-batch eq 'X'.
        perform display_lfa1.
        perform display_kna1.
      endif.
    *&      Form  DISPLAY_LFA1
          text
    -->  p1        text
    <--  p2        text
    form display_lfa1 .
      call function 'REUSE_ALV_LIST_DISPLAY'
        exporting
          i_callback_program = sy-repid
          i_structure_name   = 'LFA1'
        tables
          t_outtab           = gt_lfa1
        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.                    " DISPLAY_LFA1
    *&      Form  DISPLAY_KNA1
          text
    -->  p1        text
    <--  p2        text
    form display_kna1 .
      call function 'REUSE_ALV_LIST_DISPLAY'
        exporting
          i_callback_program = sy-repid
          i_structure_name   = 'KNA1'
        tables
          t_outtab           = gt_kna1
        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.                    " DISPLAY_KNA1
    Please let me know if its not clear or you need more info.
    Thanks,
    Abhishek
    Edited by: abhishek sinha on May 8, 2009 7:42 PM
    Edited by: abhishek sinha on May 8, 2009 8:45 PM

Maybe you are looking for

  • Acrobat 10 has stopped saving ANY PDFs, old or new, scanned or downloaded

    Help! Recently my Acrobat 10 has stopped saving ANY PDFs, old or new, scanned or downloaded.  When I try to save a PDF a popup occurs telling me "The document could not be saved. There was a problem reading this document (8)."  What can be done to fi

  • ADSL / router slowed Network copying ? help ?

    I have 5 computers on a small network: 3 Macs (OS 9.2.2) and 2 Windows PCs and a networked printer connected using a 8 port switching Hub. The PCs are accessed using Dave's Network 6 on Mac (3) . Each computer and the printer has its own TCP/IP addre

  • Regular tv shows and HD both load and I only want one!

    Seems like sometimes when I download a tv show I will get the regular version and the HD version. I only want the regular version since it's cheaper so I delete the HD version but they are still in my Available Downloads list and every time I try to

  • Formula in WebI report

    Hello Experts, I have report in in the following format Number          Code             Amount parent1           xyz              100 baby1             abc              50 baby2             abc              50                            Group1 baby3

  • Conversion of data

    Hi Being there in Oracle or D2K I want to convert whole my data of one table to MS-Access database. Thanks