Alv type lvc_t_fcat

Hello,
In AOO, ¿how can I insert a button to save data on alv to pdf document? I use a catalog with type lvc_t_fcat.
thanks in advance

Hi,
You can see something in these threads, or try to search about "lvc_t_fcat button".
ALV buttons
Buttons in ALV
Need pushbutton in ALV
Regards

Similar Messages

  • ALV Classic - How to extract the selection long text of TYPE LVC_T_FCAT?

    DATA: e_dyntab_tb  TYPE lvc_t_fcat,
              e_dyntab_wa TYPE lvc_s_fcat,
              t_line_reftab   TYPE REF   TO data.
    *Populate ALV fiels of TYPE LVC_T_FCAT
    MOVE: c_matnr      TO e_dyntab_wa-fieldname.
    MOVE: c_material   TO e_dyntab_wa-scrtext_l.
    APPEND e_dyntab_wa TO e_dyntab_tb.
    LOOP AT t_hwk_date ASSIGNING <fs_hwk_date>. "t_hwk_date is DYNAMIC
        CONCATENATE c_hwk <fs_hwk_date>-index           INTO  e_dyntab_wa-fieldname.
        CONCATENATE c_hwk <fs_hwk_date>-calender_wk INTO  e_dyntab_wa-scrtext_l.
        APPEND e_dyntab_wa TO e_dyntab_tb.
    ENDLOOP.
    *Create dynamic itab from dynamic ALV output
    CALL METHOD cl_alv_table_create=>create_dynamic_table
        EXPORTING
          it_fieldcatalog = e_dyntab_tb          "Pass alv_fcat here
        IMPORTING
          ep_table        = i_reftab.
    * Create Dynamic Work Area and assign to FS
    ASSIGN i_reftab->* TO <fs_final_itab>.      "Assigning the Final Table,
    CREATE DATA t_line_reftab LIKE LINE OF <fs_final_itab>.
      ASSIGN t_line_reftab->* TO <fs_line_reftab>.  "Create a Work Area
    QUESTION:
    e_dyntab_wa-fieldname   = this is the fieldname / column heading for the dynamic internal table
    e_dyntab_tb-scrtext_l     = this "should" be the 1st row(Column Heading Title) for the dynamic itab
                                        = this data will be used for MS Excel Functionality as always as the first row as
                                           column heading in the MS Excel
    Legend:
    How can I extract the entries of e_dyntab_tb-scrtext_l to an internal table containing the same structure of <fs_line_reftab>?

    Maybe I missed something, but you already have the long text for the columns in your FCAT structure.  The problem you will have is that you will NOT be able to place those fields in the table that you have created because the headings will always be text and the columns may or may not be text (i.e. placing a heading into a numeric).  You will be required to use a different structure.
    Since you are writing a custom export, you will need to do one of the following:
    Option A:
    1.  Retrieve the layout from the ALV as it will not necessarily be the same as when the original was created.  The user may have moved a column or hidden one.
    2.  Create a structure for the export file that has only text fields.  It should contain all of the columns from the FCAT.  This can be done by creating another dynamic table and using the original FCAT and current layout.
    3.  Insert the headings as the first row of the export file.
    4.  Loop thru the internal table, compare it with the layout, and only insert the requested records into the export file.
    5.  Export the file.
    or Option B:
    1.  Make sure the internal table has only text fields and insert the headings as the first record.
    2.  Insert all other records with fields converted to alphanumeric.
    3.  Use the standard export function.
    Hope this helps,
    Brian

  • Difference between type lvc_t_fcat and slis_t_fieldcat_alv

    Can you tell me the difference between type lvc_t_fcat and slis_t_fieldcat_alv?
    Both are used for field catalogue so which one is better to use?

    Hi,
    the field catalog using lvc_t_fcat  has some better and enhanced features over the old slis_t_fieldcat_alv.
    Ideally when displayed a normal ALV using these fieldcatalogs does not have any difference...
    You can more enhanced features of ALV using lvc_t_fcat but these cannot be done using slis_t_fieldcat_alv
    For using lvc_t_fcat, you require a screen and a container area...
    Based on the requirement, use the  fieldcatalogs.
    Also slis_t_fieldcat_alv does not have any classes or methods but the other has so..(objecct oriented)
    Regards
    Sk

  • Build fieldcatalog from a catalog type lvc_t_fcat

    Hi experts,
    i'm getting a short dump when i want to create a field catalog using function module REUSE_ALV_FIELDCATALOG_MERGE.
    Short dump says:
    Runtime Error          CALL_FUNCTION_CONFLICT_TAB_TYP
    Exception              CX_SY_DYN_CALL_ILLEGAL_TYPE  
    and i think it came from type of fieldcatalog.
    Internal table:
    BEGIN OF it_za91 OCCURS 0,
            kschl LIKE konp-kschl,
            kunnr LIKE kna1-kunnr,
            mfrnr LIKE mara-mfrnr,
            kbetr LIKE konp-kbetr,
            konwa LIKE konp-konwa,
            datab LIKE a908-datab,
            datbi LIKE a908-datbi,
            field_style TYPE lvc_t_styl,
          END OF it_za91.
    Fieldcatalog
    DATA: fieldcatalog TYPE lvc_t_fcat
    What should i do?
    Thank you.

    Thank you my friends.
    I'm getting this strange behavior when i call FM LVC_FIELDCATALOG_MERGE. If i declare a local structure when i call FM LVC_FIELDCATALOG_MERGE fieldcatalog would be empty. If I'm creating a structure from SE11 , it's OK.
    So, everytime when i want to create am LVC fieldcatalog i must create a structure from SE11 ???
    DATA: BEGIN OF st_za91,
            kschl LIKE konp-kschl,
            kunnr LIKE kna1-kunnr,
            mfrnr LIKE mara-mfrnr,
            name1 LIKE lfa1-name1,
            brsch LIKE lfa1-brsch,
            kbetr LIKE konp-kbetr,
            konwa LIKE konp-konwa,
            datab LIKE a908-datab,
            datbi LIKE a908-datbi,
            END OF st_za91.
    DATA: it_za91 LIKE STANDARD TABLE OF st_za91 WITH HEADER LINE,
               fieldcatalog TYPE lvc_t_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
       EXPORTING
    *   I_BUFFER_ACTIVE              =
       i_structure_name             = 'ST_ZA91'
         i_client_never_display       = 'X'
    *   I_BYPASSING_BUFFER           =
    *      i_internal_tabname           = 'IT_ZA91'
       CHANGING
         ct_fieldcat                  = fieldcatalog
    *  EXCEPTIONS
    *    inconsistent_interface       = 1
    *    program_error                = 2
    *    OTHERS                       = 3
    In this way fieldcatalog would be empty.
    There is a way to create a fieldcatalog using LVC_FIELDCATALOG_MERGE but without creating a structure via SE11?

  • About SE16N ALV type?

    In the SE16N, Is it using custom_control to create ALV as same as this code?
    If it is this type, how to display full screen ALV?
    DATA: GT_OUTPUT TYPE TABLE OF VBAK,
          GRID1  TYPE REF TO CL_GUI_ALV_GRID,
          CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER
    SET SCREEN 100.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE STATUS_0100 OUTPUT.
    IF custom_container IS INITIAL.
        SELECT *
        INTO TABLE gt_output
        UP TO 100 ROWS
        FROM VBAK.
        CREATE OBJECT custom_container
          EXPORTING
            container_name              = 'CONTAINER'
          EXCEPTIONS
            cntl_error                  = 1
            cntl_system_error           = 2
            create_error                = 3
            lifetime_error              = 4
            lifetime_dynpro_dynpro_link = 5.
        CREATE OBJECT grid1
          EXPORTING
            i_parent = custom_container.
    CALL METHOD GRID1->SET_TABLE_FOR_FIRST_DISPLAY
      EXPORTING
         I_STRUCTURE_NAME              = 'VBAK'
      CHANGING
        IT_OUTTAB                     = gt_output
        IT_FIELDCATALOG               = GT_FIELDCAT
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT

    use docking container where you can set the screen ratio.
    Search in SCN for more details.

  • ALV Type Selection Screen

    Hi,
      I am having a selection screen with few parameters and also having a push button. When the user clicks on the push button, a new selection screen should open(like varaint screen) with check boxes. The user should have possibility of saving the screen.
    The initial screen had been done. I want help when the user click on the push button.
    Any idea of how this can be done. Any inputs will be appreciated.
    Regards,
    Ramesh.

    Hi,
    Declare the 2nd screen using ....
    SELECTION-SCREEN: BEGIN OF SCREEN 2000.
    declare the checkboxes ....
    SELECTION-SCREEN: END OF SCREEN 2000.
    At the time of variant saving both the screen values will be saved.
    Regards,
    Amitava

  • Field Editing in ALV Report

    hello everyone,
    I have created an alv report using MARA table. but i am unable to edit any field and save the changes back to the table in the database.
    I

    Hi Ravi,
    Check out the below demo program for editable ALV .
    REPORT  ZDEMO_ALVGRID_EDIT                 .
    TABLES:     ekko.
    TYPE-POOLS: slis.                                 "ALV Declarations
    *Data Declaration
    TYPES: BEGIN OF t_ekko,
      ebeln TYPE ekpo-ebeln,
      ebelp TYPE ekpo-ebelp,
      statu TYPE ekpo-statu,
      aedat TYPE ekpo-aedat,
      matnr TYPE ekpo-matnr,
      menge TYPE ekpo-menge,
      meins TYPE ekpo-meins,
      netpr TYPE ekpo-netpr,
      peinh TYPE ekpo-peinh,
      field_style  TYPE lvc_t_styl, "FOR DISABLE
    END OF t_ekko.
    DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
          wa_ekko TYPE t_ekko.
    *ALV data declarations
    DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE.
    DATA: it_fieldcat TYPE lvc_t_fcat,     "slis_t_fieldcat_alv WITH HEADER LINE,
          wa_fieldcat TYPE lvc_s_fcat,
          gd_tab_group TYPE slis_t_sp_group_alv,
          gd_layout    TYPE lvc_s_layo,     "slis_layout_alv,
          gd_repid     LIKE sy-repid.
    *Start-of-selection.
    START-OF-SELECTION.
      PERFORM data_retrieval.
      PERFORM set_specific_field_attributes.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM display_alv_report.
    *&      Form  BUILD_FIELDCATALOG
    *       Build Fieldcatalog for ALV Report
    FORM build_fieldcatalog.
      wa_fieldcat-fieldname   = 'EBELN'.
      wa_fieldcat-scrtext_m   = 'Purchase Order'.
      wa_fieldcat-col_pos     = 0.
      wa_fieldcat-outputlen   = 10.
      wa_fieldcat-emphasize   = 'X'.
      wa_fieldcat-key         = 'X'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'EBELP'.
      wa_fieldcat-scrtext_m   = 'PO Item'.
      wa_fieldcat-col_pos     = 1.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'STATU'.
      wa_fieldcat-scrtext_m   = 'Status'.
      wa_fieldcat-col_pos     = 2.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'AEDAT'.
      wa_fieldcat-scrtext_m   = 'Item change date'.
      wa_fieldcat-col_pos     = 3.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MATNR'.
      wa_fieldcat-scrtext_m   = 'Material Number'.
      wa_fieldcat-col_pos     = 4.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MENGE'.
      wa_fieldcat-scrtext_m   = 'PO quantity'.
      wa_fieldcat-col_pos     = 5.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'MEINS'.
      wa_fieldcat-scrtext_m   = 'Order Unit'.
      wa_fieldcat-col_pos     = 6.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'NETPR'.
      wa_fieldcat-scrtext_m   = 'Net Price'.
      wa_fieldcat-edit        = 'X'. "sets whole column to be editable
      wa_fieldcat-col_pos     = 7.
      wa_fieldcat-outputlen   = 15.
      wa_fieldcat-datatype     = 'CURR'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
      wa_fieldcat-fieldname   = 'PEINH'.
      wa_fieldcat-scrtext_m   = 'Price Unit'.
      wa_fieldcat-col_pos     = 8.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR  wa_fieldcat.
    ENDFORM.                    " BUILD_FIELDCATALOG
    *&      Form  BUILD_LAYOUT
    *       Build layout for ALV grid report
    FORM build_layout.
    * Set layout field for field attributes(i.e. input/output)
      gd_layout-stylefname = 'FIELD_STYLE'.
      gd_layout-zebra             = 'X'.
    ENDFORM.                    " BUILD_LAYOUT
    *&      Form  DISPLAY_ALV_REPORT
    *       Display report using ALV grid
    FORM display_alv_report.
      gd_repid = sy-repid.
    *  call function 'REUSE_ALV_GRID_DISPLAY'
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
           EXPORTING
                i_callback_program      = gd_repid
    *            i_callback_user_command = 'USER_COMMAND'
                is_layout_lvc               = gd_layout
                it_fieldcat_lvc             = it_fieldcat
                i_save                  = 'X'
           TABLES
                t_outtab                = it_ekko
           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_ALV_REPORT
    *&      Form  DATA_RETRIEVAL
    *       Retrieve data form EKPO table and populate itab it_ekko
    FORM data_retrieval.
      SELECT ebeln ebelp statu aedat matnr menge meins netpr peinh
       UP TO 10 ROWS
        FROM ekpo
        INTO  CORRESPONDING FIELDS OF TABLE it_ekko.
    ENDFORM.                    " DATA_RETRIEVAL
    *&      Form  set_specific_field_attributes
    *       populate FIELD_STYLE table with specific field attributes
    form set_specific_field_attributes .
      DATA ls_stylerow TYPE lvc_s_styl .
      DATA lt_styletab TYPE lvc_t_styl .
    * Populate style variable (FIELD_STYLE) with style properties
    * The NETPR field/column has been set to editable in the fieldcatalog...
    * The following code sets it to be disabled(display only) if 'NETPR'
    * is gt than 10.
      LOOP AT it_ekko INTO wa_ekko.
        IF wa_ekko-netpr GT 10.
          ls_stylerow-fieldname = 'NETPR' .
          ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
                                                 "set field to disabled
          APPEND ls_stylerow  TO wa_ekko-field_style.
          MODIFY it_ekko FROM wa_ekko.
        ENDIF.
      ENDLOOP.
    endform.                    " set_specific_field_attributes

  • First try with ALV Grid and Abap Objects

    Hi,
    this is my first try to write a simple report which just reads a textfile and display it in an ALV Grid. As a basis, I used some examples from SDN, but it did not work as expected
    I would like just to use a docking container. I do not need a separate area for the ALV Grid. The report gives no syntax errors, but it just display the report title, nothing else. SAP R/3 Release is 4.7. Below is the source code of the report. Any idea what is missing?
    *& Report  Z_PLAN_TEXT_UPLOAD                                          *
    REPORT z_plan_text_upload.
    INCLUDE <icon>.
    * Data Declaration
    DATA:
      gf_dynnr TYPE sy-dynnr,
      gf_repid TYPE sy-repid.
    DATA:
      go_docking_container TYPE REF TO cl_gui_docking_container,
      go_alv_grid TYPE REF TO cl_gui_alv_grid.
    DATA:
      gt_fieldcat TYPE lvc_t_fcat,
      gs_fieldcat LIKE LINE OF gt_fieldcat.
    TYPES:
      BEGIN OF gy_text_input,
        firma(20)           TYPE c,
        kostenstelle(20)    TYPE c,
        datenart1(10)       TYPE c,
        planjahr(10)        TYPE c,
    *    planperiode         TYPE co_perio,
        planperiode(5)      TYPE c,
        datenart2(10)       TYPE c,
        planungposition(10) TYPE c,
    *    kostenart           TYPE koart,
        kostenart(10)       TYPE c,
    *    planbetrag          TYPE bapicurr_d,
        planbetrag(20)      TYPE c,
      END OF gy_text_input.
    DATA:
      gt_text_input TYPE TABLE OF gy_text_input,
      gs_text_input LIKE LINE OF gt_text_input.
    * Local Class Definition
    * Local Class Implementation
    * Selection-Screen
    SELECTION-SCREEN BEGIN OF BLOCK b1
      WITH FRAME TITLE text-001.
    SKIP.
    PARAMETERS:
      gp_file TYPE localfile,
      gp_head TYPE checkbox DEFAULT 'X'.
    SKIP.
    PARAMETERS:
      gp_gjahr LIKE coep-gjahr,
      gp_versn LIKE coep-versn.
    SELECTION-SCREEN END OF BLOCK b1.
    * Initialization
    INITIALIZATION.
      DATA:
        lf_sapworkdir TYPE string.
      CALL METHOD cl_gui_frontend_services=>get_sapgui_workdir
        CHANGING
          sapworkdir            = lf_sapworkdir
        EXCEPTIONS
          get_sapworkdir_failed = 1
          cntl_error            = 2
          error_no_gui          = 3
          not_supported_by_gui  = 4
          OTHERS                = 5.
      IF sy-subrc <> 0 OR lf_sapworkdir = ''.
        CALL METHOD cl_gui_frontend_services=>directory_get_current
          CHANGING
            current_directory            = lf_sapworkdir
          EXCEPTIONS
            directory_get_current_failed = 1
            cntl_error                   = 2
            error_no_gui                 = 3
            not_supported_by_gui         = 4
            OTHERS                       = 5.
        CALL METHOD cl_gui_cfw=>flush.
      ENDIF."sy-subrc <> 0 OR sapworkdir = ''
      gp_file = lf_sapworkdir.
      gf_dynnr = sy-dynnr.
      gf_repid = sy-repid.
    * At Selection-Screen
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR gp_file.
      DATA:
        lt_filetable TYPE filetable,
        ls_filetable LIKE LINE OF lt_filetable,
        lt_rc TYPE i.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
    *  EXPORTING
    *    WINDOW_TITLE            =
    *    DEFAULT_EXTENSION       =
    *    DEFAULT_FILENAME        =
    *    FILE_FILTER             =
    *    INITIAL_DIRECTORY       =
    *    MULTISELECTION          =
    *    WITH_ENCODING           =
        CHANGING
          file_table              = lt_filetable
          rc                      = lt_rc
    *    USER_ACTION             =
    *    FILE_ENCODING           =
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          not_supported_by_gui    = 4
          OTHERS                  = 5.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      READ TABLE lt_filetable INDEX 1
        INTO
          ls_filetable.
      gp_file = ls_filetable-filename.
      CALL METHOD cl_gui_cfw=>flush.
    * Start-Of-Selection
    START-OF-SELECTION.
      DATA:
        lf_filename LIKE filename-fileintern.
      lf_filename = gp_file.
      CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
        EXPORTING
          i_filename                 = lf_filename
          i_servertyp                = 'PRS '
          i_fileformat               = 'TXT'
    *     I_FIELD_SEPERATOR          =
          i_line_header              = gp_head
    *   IMPORTING
    *     E_BIN_FILELENGTH           =
       TABLES
         i_tab_receiver             = gt_text_input
       EXCEPTIONS
         file_not_found             = 1
         close_failed               = 2
         authorization_failed       = 3
         open_failed                = 4
         conversion_failed          = 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.
    *------ Build the Field Catalog ---------------------------------------*
      PERFORM build_fieldcatalog
        CHANGING gt_fieldcat.
    *------ Create the docking container ----------------------------------*
      IF go_docking_container IS INITIAL.
        CREATE OBJECT go_docking_container
          EXPORTING
    *      PARENT                      =
            repid                       = gf_repid
            dynnr                       = gf_dynnr
    *     SIDE                        = go_docking_container->DOCK_AT_bottom
    *      EXTENSION                   = 200
    *      STYLE                       =
    *      LIFETIME                    = lifetime_default
    *      CAPTION                     =
    *      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                      = 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.
      ENDIF."go_docking_container IS INITIAL
    *------ Create the ALV Grid -------------------------------------------*
      IF go_alv_grid IS INITIAL.
        CREATE OBJECT go_alv_grid
          EXPORTING
    *      I_SHELLSTYLE      = 0
    *      I_LIFETIME        =
            i_parent          = go_docking_container
    *      I_APPL_EVENTS     = space
    *      I_PARENTDBG       =
    *      I_APPLOGPARENT    =
    *      I_GRAPHICSPARENT  =
    *      I_NAME            =
          EXCEPTIONS
            error_cntl_create = 1
            error_cntl_init   = 2
            error_cntl_link   = 3
            error_dp_create   = 4
            OTHERS            = 5.
        IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF."go_alv_grid is initial
    *------ Call ALV Grid -------------------------------------------------*
      CALL METHOD go_alv_grid->set_table_for_first_display
    *     EXPORTING
    *      I_BUFFER_ACTIVE               =
    *      I_BYPASSING_BUFFER            =
    *      I_CONSISTENCY_CHECK           =
    *      I_STRUCTURE_NAME              =
    *      IS_VARIANT                    =
    *      I_SAVE                        =
    *      I_DEFAULT                     = 'X'
    *      IS_LAYOUT                     =
    *      IS_PRINT                      =
    *      IT_SPECIAL_GROUPS             =
    *      IT_TOOLBAR_EXCLUDING          =
    *      IT_HYPERLINK                  =
    *      IT_ALV_GRAPHICS               =
    *      IT_EXCEPT_QINFO               =
        CHANGING
          it_outtab                     = gt_text_input
          it_fieldcatalog               = gt_fieldcat
    *      IT_SORT                       =
    *      IT_FILTER                     =
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *&      Form  build_fieldcatalog
    *       text
    *      <--P_GT_FIELDCAT  text
    FORM build_fieldcatalog
      CHANGING
        pt_fieldcat TYPE lvc_t_fcat.
      DATA ls_fcat TYPE lvc_s_fcat.
      ls_fcat-fieldname = 'FIRMA' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '20' .
      ls_fcat-coltext = 'Firma' .
      ls_fcat-seltext = 'Firma' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'KOSTENSTELLE' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '20' .
      ls_fcat-coltext = 'Kostenstelle' .
      ls_fcat-seltext = 'Kostenstelle' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'DATENART1' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Datenart1' .
      ls_fcat-seltext = 'Datenart1' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'PLANJAHR' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Planjahr' .
      ls_fcat-seltext = 'Planjahr' .
      APPEND ls_fcat TO pt_fieldcat .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'PLANPERIODE' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '5' .
      ls_fcat-coltext = 'Planperiode' .
      ls_fcat-seltext = 'Planperiode' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'DATENART2' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Datenart2' .
      ls_fcat-seltext = 'Datenart2' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'PLANUNGSPOSITION' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Planungsposition' .
      ls_fcat-seltext = 'Planungsposition' .
      APPEND ls_fcat TO pt_fieldcat .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'KOSTENART' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Kostenart' .
      ls_fcat-seltext = 'Kostenart' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'PLANBETRAG' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '20' .
      ls_fcat-coltext = 'Planbetrag' .
      ls_fcat-seltext = 'Planbetrag' .
      APPEND ls_fcat TO pt_fieldcat .
    ENDFORM.                    "build_fieldcatalog

    I have added some more functionality to my report. The good thing is, the report works as it should.
    BUT, I'm not really sure, whether this is a good (correct) design. The report works the following way:
    1. Read planning data form text file into internal table
    2. Display the internal table
    3. Convert the data and display the converted result
    4. Post the converted data to the system
    5. Display log with messages
    The main thing is, I would like to know, do i really need two dynros, to display the two different internal tables or is it possible just to use one ALV-Grid? I was not able to find another solution. Any comment or help to the report is appreciated.
    *& Report  Z_PLAN_TEXT_UPLOAD_TEST                                     *
    REPORT z_plan_text_upload_test.
    INCLUDE <icon>.
    * Data Declaration
    DATA:
      gf_okcode TYPE ui_func,
      gf_balloghndl TYPE balloghndl.
    DATA:
      go_docking_container TYPE REF TO cl_gui_docking_container,
      go_alv_grid_0100 TYPE REF TO cl_gui_alv_grid,
      go_alv_grid_0200 TYPE REF TO cl_gui_alv_grid.
    DATA:
      gt_fieldcat TYPE lvc_t_fcat,
      gs_fieldcat LIKE LINE OF gt_fieldcat.
    TYPES:
      BEGIN OF gy_text_input,
        firma(20)            TYPE c,
        kostenstelle(20)     TYPE c,
        datenart1(10)        TYPE c,
        planjahr(10)         TYPE c,
    *    planperiode         TYPE co_perio,
        planperiode(5)       TYPE c,
        datenart2(10)        TYPE c,
        planungsposition(10) TYPE c,
    *    kostenart           TYPE koart,
        kostenart(10)        TYPE c,
    *    planbetrag          TYPE bapicurr_d,
        planbetrag(20)       TYPE c,
      END OF gy_text_input.
    DATA:
      gt_text_input TYPE TABLE OF gy_text_input,
      gs_text_input LIKE LINE OF gt_text_input.
    * Bapi Strukturen
    DATA:
      gs_headerinfo TYPE bapiplnhdr,
      gt_indexstructure TYPE TABLE OF bapiacpstru,
      gs_indexstructure LIKE LINE OF gt_indexstructure,
      gt_coobject TYPE TABLE OF bapipcpobj,
      gs_coobject LIKE LINE OF gt_coobject,
      gt_pervalue TYPE TABLE OF bapipcpval,
      gs_pervalue LIKE LINE OF gt_pervalue,
      gt_return TYPE TABLE OF bapiret2,
      gs_return LIKE LINE OF gt_return,
      gt_control TYPE TABLE OF bapipcpctrl,
      gt_totvalue TYPE TABLE OF bapipcptot.
    TYPES:
      BEGIN OF gy_bapi_input,
        version      TYPE versn,
    *    perio       TYPE co_perio,
        fisc_year    TYPE gjahr,
        coobject(10) TYPE c,
        cost_elem    TYPE kstar,
        wkgbtr01     TYPE wkgxxx,
        wkgbtr02     TYPE wkgxxx,
        wkgbtr03     TYPE wkgxxx,
        wkgbtr04     TYPE wkgxxx,
        wkgbtr05     TYPE wkgxxx,
        wkgbtr06     TYPE wkgxxx,
        wkgbtr07     TYPE wkgxxx,
        wkgbtr08     TYPE wkgxxx,
        wkgbtr09     TYPE wkgxxx,
        wkgbtr10     TYPE wkgxxx,
        wkgbtr11     TYPE wkgxxx,
        wkgbtr12     TYPE wkgxxx,
      END OF gy_bapi_input.
    DATA:
      gt_bapi_input TYPE TABLE OF gy_bapi_input,
      gs_bapi_input LIKE LINE OF gt_bapi_input.
    * Anwendungs-Log
    DATA: gs_balsmsg TYPE bal_s_msg.
    * Selection-Screen
    SELECTION-SCREEN BEGIN OF BLOCK b1
      WITH FRAME TITLE text-001.
    PARAMETERS:
      gp_file TYPE localfile,
      gp_head TYPE checkbox DEFAULT 'X'.
    SELECTION-SCREEN SKIP.
    PARAMETERS:
      gp_kokrs  LIKE coep-kokrs,
      gp_gjahr LIKE coep-gjahr,
      gp_versn LIKE coep-versn,
      gp_test AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK b1.
    * Local Class Definition
    CLASS lcl_event_handler DEFINITION.
      PUBLIC SECTION.
        METHODS:
        handle_toolbar_0100 FOR EVENT toolbar OF cl_gui_alv_grid
          IMPORTING
            e_object
            e_interactive,
        handle_user_command_0100 FOR EVENT user_command OF cl_gui_alv_grid
          IMPORTING
            e_ucomm,
        handle_toolbar_0200 FOR EVENT toolbar OF cl_gui_alv_grid
          IMPORTING
            e_object
            e_interactive,
        handle_user_command_0200 FOR EVENT user_command OF cl_gui_alv_grid
          IMPORTING
            e_ucomm.
      PRIVATE SECTION.
    ENDCLASS.                    "lcl_event_handler DEFINITION
    * Local Class Implementation
    CLASS lcl_event_handler IMPLEMENTATION.
      METHOD handle_toolbar_0100.
        PERFORM handle_toolbar_0100
          USING
            e_object.
    *        e_interactive.
      ENDMETHOD.                    "handle_toolbar_0100
      METHOD handle_user_command_0100.
        PERFORM handle_user_command_0100
          USING
            e_ucomm.
      ENDMETHOD.                    "handle_user_command_0100
      METHOD handle_toolbar_0200.
        PERFORM handle_toolbar_0200
          USING
            e_object.
    *        e_interactive.
      ENDMETHOD.                    "handle_toolbar_0100
      METHOD handle_user_command_0200.
        PERFORM handle_user_command_0200
          USING
            e_ucomm.
      ENDMETHOD.                    "handle_user_command_0100
    ENDCLASS.                    "lcl_event_handler IMPLEMENTATION
    * Initialization
    INITIALIZATION.
      DATA:
        lf_sapworkdir TYPE string.
      CALL METHOD cl_gui_frontend_services=>get_sapgui_workdir
        CHANGING
          sapworkdir            = lf_sapworkdir
        EXCEPTIONS
          get_sapworkdir_failed = 1
          cntl_error            = 2
          error_no_gui          = 3
          not_supported_by_gui  = 4
          OTHERS                = 5.
      IF sy-subrc <> 0 OR lf_sapworkdir = ''.
        CALL METHOD cl_gui_frontend_services=>directory_get_current
          CHANGING
            current_directory            = lf_sapworkdir
          EXCEPTIONS
            directory_get_current_failed = 1
            cntl_error                   = 2
            error_no_gui                 = 3
            not_supported_by_gui         = 4
            OTHERS                       = 5.
        CALL METHOD cl_gui_cfw=>flush.
      ENDIF."sy-subrc <> 0 OR sapworkdir = ''
      gp_file = lf_sapworkdir.
    * At Selection-Screen
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR gp_file.
      DATA:
        lt_filetable TYPE filetable,
        ls_filetable LIKE LINE OF lt_filetable,
        lt_rc TYPE i.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
    *  EXPORTING
    *    WINDOW_TITLE            =
    *    DEFAULT_EXTENSION       =
    *    DEFAULT_FILENAME        =
    *    FILE_FILTER             =
    *    INITIAL_DIRECTORY       =
    *    MULTISELECTION          =
    *    WITH_ENCODING           =
        CHANGING
          file_table              = lt_filetable
          rc                      = lt_rc
    *    USER_ACTION             =
    *    FILE_ENCODING           =
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          not_supported_by_gui    = 4
          OTHERS                  = 5.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                   WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
      READ TABLE lt_filetable INDEX 1
        INTO
          ls_filetable.
      gp_file = ls_filetable-filename.
      CALL METHOD cl_gui_cfw=>flush.
    * Start-Of-Selection
    START-OF-SELECTION.
      DATA:
        lf_filename LIKE filename-fileintern.
      PERFORM create_log.
      gs_return-type = 'I'.
      IF gp_test = 'X'.
        gs_return-message = text-010.
      ELSE.
        gs_return-message = text-020.
      ENDIF.
      PERFORM add_log_message_free_text
        USING
           gs_return-type
           gs_return-message.
      lf_filename = gp_file.
      CALL FUNCTION 'FILE_READ_AND_CONVERT_SAP_DATA'
        EXPORTING
          i_filename                 = lf_filename
          i_servertyp                = 'PRS '
          i_fileformat               = 'TXT'
    *     I_FIELD_SEPERATOR          =
          i_line_header              = gp_head
    *   IMPORTING
    *     E_BIN_FILELENGTH           =
       TABLES
         i_tab_receiver             = gt_text_input
       EXCEPTIONS
         file_not_found             = 1
         close_failed               = 2
         authorization_failed       = 3
         open_failed                = 4
         conversion_failed          = 5
         OTHERS                     = 6.
      IF sy-subrc <> 0.
        gs_balsmsg-msgty = sy-msgty.
        gs_balsmsg-msgid = sy-msgid.
        gs_balsmsg-msgno = sy-msgno.
        gs_balsmsg-msgv1 = sy-msgv1.
        gs_balsmsg-msgv2 = sy-msgv2.
        gs_balsmsg-msgv3 = sy-msgv3.
        gs_balsmsg-msgv4 = sy-msgv4.
        PERFORM add_log_message
          USING
            gs_balsmsg.
      ENDIF.
      CALL SCREEN '0100'.
    *&      Module  status_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *------ Create the docking container ----------------------------------*
      IF go_docking_container IS INITIAL.
        CREATE OBJECT go_docking_container
          EXPORTING
            parent                      = cl_gui_container=>screen0
    *        repid                       = gf_repid
    *        dynnr                       = gf_dynnr
    *     SIDE                        = go_docking_container->DOCK_AT_bottom
    *       EXTENSION                   = 200
    *      STYLE                       =
    *      LIFETIME                    = lifetime_default
    *      CAPTION                     =
    *      METRIC                      = 0
            ratio                       = 95
    *      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                      = 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.
    *------ Expand  docking container to full screen    -------------------*
        CALL METHOD go_docking_container->set_extension
          EXPORTING
            extension  = 99999  "full-screen size !!!
          EXCEPTIONS
            cntl_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.
      ENDIF."go_docking_container IS INITIAL
    *------ Link docking container to screen ------------------------------*
      CALL METHOD go_docking_container->link
        EXPORTING
          repid                       = sy-repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          cntl_error                  = 1
          cntl_system_error           = 2
          lifetime_dynpro_dynpro_link = 3
          OTHERS                      = 4
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *------ Build the Field Catalog ---------------------------------------*
      PERFORM build_fieldcatalog_input
        CHANGING gt_fieldcat.
    *------ Create the ALV Grid -------------------------------------------*
      IF go_alv_grid_0100 IS INITIAL.
        CREATE OBJECT go_alv_grid_0100
          EXPORTING
    *      I_SHELLSTYLE      = 0
    *      I_LIFETIME        =
            i_parent          = go_docking_container
    *      I_APPL_EVENTS     = space
    *      I_PARENTDBG       =
    *      I_APPLOGPARENT    =
    *      I_GRAPHICSPARENT  =
    *      I_NAME            =
          EXCEPTIONS
            error_cntl_create = 1
            error_cntl_init   = 2
            error_cntl_link   = 3
            error_dp_create   = 4
            OTHERS            = 5.
        IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF."go_alv_grid_0100 is initial
    *------ Create instance for event handler -----------------------------*
      DATA: go_event_handler_0100 TYPE REF TO lcl_event_handler.
      CREATE OBJECT go_event_handler_0100.
    *------ Register event handler ----------------------------------------*
      SET HANDLER go_event_handler_0100->handle_toolbar_0100
        FOR go_alv_grid_0100.
      SET HANDLER go_event_handler_0100->handle_user_command_0100
        FOR go_alv_grid_0100.
    *------ Call ALV Grid -------------------------------------------------*
      CALL METHOD go_alv_grid_0100->set_table_for_first_display
    *     EXPORTING
    *      I_BUFFER_ACTIVE               =
    *      I_BYPASSING_BUFFER            =
    *      I_CONSISTENCY_CHECK           =
    *      I_STRUCTURE_NAME              =
    *      IS_VARIANT                    =
    *      I_SAVE                        =
    *      I_DEFAULT                     = 'X'
    *      IS_LAYOUT                     =
    *      IS_PRINT                      =
    *      IT_SPECIAL_GROUPS             =
    *      IT_TOOLBAR_EXCLUDING          =
    *      IT_HYPERLINK                  =
    *      IT_ALV_GRAPHICS               =
    *      IT_EXCEPT_QINFO               =
        CHANGING
          it_outtab                     = gt_text_input
          it_fieldcatalog               = gt_fieldcat
    *      IT_SORT                       =
    *      IT_FILTER                     =
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *---- Call method 'set_toolbar_interactive' to raise event TOOLBAR.
      CALL METHOD go_alv_grid_0100->set_toolbar_interactive.
    ENDMODULE.                 " status_0100  OUTPUT
    *&      Module  status_0200  OUTPUT
    *       text
    MODULE status_0200 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *------ Create the docking container ----------------------------------*
      IF go_docking_container IS INITIAL.
        CREATE OBJECT go_docking_container
          EXPORTING
            parent                      = cl_gui_container=>screen0
    *        repid                       = gf_repid
    *        dynnr                       = gf_dynnr
    *     SIDE                        = go_docking_container->DOCK_AT_bottom
    *       EXTENSION                   = 200
    *      STYLE                       =
    *      LIFETIME                    = lifetime_default
    *      CAPTION                     =
    *      METRIC                      = 0
            ratio                       = 95
    *      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                      = 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.
    *------ Expand  docking container to full screen    -------------------*
        CALL METHOD go_docking_container->set_extension
          EXPORTING
            extension  = 99999
          EXCEPTIONS
            cntl_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.
      ENDIF."go_docking_container IS INITIAL
    *------ Link docking container to screen ------------------------------*
      CALL METHOD go_docking_container->link
        EXPORTING
          repid                       = sy-repid
          dynnr                       = '0200'
    *      CONTAINER                   =
        EXCEPTIONS
          cntl_error                  = 1
          cntl_system_error           = 2
          lifetime_dynpro_dynpro_link = 3
          OTHERS                      = 4
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *------ Build the Field Catalog---------------------------------------*
      PERFORM build_fieldcatalog_bapi_input
        CHANGING
          gt_fieldcat.
    *------ Create the ALV Grid -------------------------------------------*
      IF go_alv_grid_0200 IS INITIAL.
        CREATE OBJECT go_alv_grid_0200
          EXPORTING
    *      I_SHELLSTYLE      = 0
    *      I_LIFETIME        =
           i_parent          = go_docking_container
    *      I_APPL_EVENTS     = space
    *      I_PARENTDBG       =
    *      I_APPLOGPARENT    =
    *      I_GRAPHICSPARENT  =
    *      I_NAME            =
          EXCEPTIONS
            error_cntl_create = 1
            error_cntl_init   = 2
            error_cntl_link   = 3
            error_dp_create   = 4
            OTHERS            = 5.
        IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF."go_alv_grid_0200 is initial
    *------ Create instance for event handler -----------------------------*
      DATA: go_event_handler_0200 TYPE REF TO lcl_event_handler.
      CREATE OBJECT go_event_handler_0200.
    *------ Register event handler ----------------------------------------*
      SET HANDLER go_event_handler_0200->handle_toolbar_0200
        FOR go_alv_grid_0200.
      SET HANDLER go_event_handler_0200->handle_user_command_0200
        FOR go_alv_grid_0200.
    *------ Call ALV Grid -------------------------------------------------*
      CALL METHOD go_alv_grid_0200->set_table_for_first_display
    *     EXPORTING
    *      I_BUFFER_ACTIVE               =
    *      I_BYPASSING_BUFFER            =
    *      I_CONSISTENCY_CHECK           =
    *      I_STRUCTURE_NAME              =
    *      IS_VARIANT                    =
    *      I_SAVE                        =
    *      I_DEFAULT                     = 'X'
    *      IS_LAYOUT                     =
    *      IS_PRINT                      =
    *      IT_SPECIAL_GROUPS             =
    *      IT_TOOLBAR_EXCLUDING          =
    *      IT_HYPERLINK                  =
    *      IT_ALV_GRAPHICS               =
    *      IT_EXCEPT_QINFO               =
        CHANGING
          it_outtab                     = gt_bapi_input
          it_fieldcatalog               = gt_fieldcat
    *      IT_SORT                       =
    *      IT_FILTER                     =
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          OTHERS                        = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *---- Call method 'set_toolbar_interactive' to raise event TOOLBAR.
      CALL METHOD go_alv_grid_0200->set_toolbar_interactive.
      CALL METHOD go_alv_grid_0200->refresh_table_display
    *  EXPORTING
    *    IS_STABLE      =
    *    I_SOFT_REFRESH =
        EXCEPTIONS
          finished       = 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.
      CALL METHOD cl_gui_control=>set_focus
        EXPORTING
          control = go_alv_grid_0200.
    ENDMODULE.                 " status_0200  OUTPUT
    *&      Module  user_command_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE gf_okcode.
        WHEN 'BACK' OR 'END' OR 'CANC'.
          PERFORM exit_program.
        WHEN OTHERS.
      ENDCASE.
      CLEAR gf_okcode.
    ENDMODULE.                 " user_command_0100  INPUT
    *&      Module  user_command_0200  INPUT
    *       text
    MODULE user_command_0200 INPUT.
      CASE gf_okcode.
        WHEN 'BACK' OR 'END' OR 'CANC'.
          PERFORM exit_program.
        WHEN OTHERS.
      ENDCASE.
      CLEAR gf_okcode.
    ENDMODULE.                 " user_command_0200  INPUT
    *&      Form  build_fieldcatalog
    *       text
    *      <--P_GT_FIELDCAT  text
    FORM build_fieldcatalog_input
      CHANGING
        pt_fieldcat TYPE lvc_t_fcat.
      DATA ls_fcat TYPE lvc_s_fcat.
      CLEAR pt_fieldcat.
      ls_fcat-fieldname = 'FIRMA' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '20' .
      ls_fcat-coltext = 'Firma' .
      ls_fcat-seltext = 'Firma' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'KOSTENSTELLE' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '20' .
      ls_fcat-coltext = 'CO-Objekt' .
      ls_fcat-seltext = 'CO-Objekt' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'DATENART1' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Datenart1' .
      ls_fcat-seltext = 'Datenart1' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'PLANJAHR' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Planjahr' .
      ls_fcat-seltext = 'Planjahr' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'PLANPERIODE' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '5' .
      ls_fcat-coltext = 'Planperiode' .
      ls_fcat-seltext = 'Planperiode' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'DATENART2' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Datenart2' .
      ls_fcat-seltext = 'Datenart2' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'PLANUNGSPOSITION' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Planungsposition' .
      ls_fcat-seltext = 'Planungsposition' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'KOSTENART' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '10' .
      ls_fcat-coltext = 'Kostenart' .
      ls_fcat-seltext = 'Kostenart' .
      APPEND ls_fcat TO pt_fieldcat .
      ls_fcat-fieldname = 'PLANBETRAG' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '20' .
      ls_fcat-coltext = 'Planbetrag' .
      ls_fcat-seltext = 'Planbetrag' .
      APPEND ls_fcat TO pt_fieldcat .
    ENDFORM.                    "build_fieldcatalog
    *&      Form  handle_toolbar_0100
    *       text
    *      -->P_E_OBJECT  text
    *      -->P_E_INTERACTIVE  text
    FORM handle_toolbar_0100
      USING
        po_object TYPE REF TO cl_alv_event_toolbar_set.
      DATA: ls_toolbar TYPE stb_button.
      CLEAR ls_toolbar.
      ls_toolbar-butn_type  = 0.
      ls_toolbar-function   = 'KONV'.
      ls_toolbar-quickinfo  = 'Konvertieren'.
      ls_toolbar-text       = 'Konvertieren'.
      ls_toolbar-disabled   = ' '.
      APPEND ls_toolbar TO po_object->mt_toolbar.
    ENDFORM.                    " handle_toolbar_0100
    *&      Form  handle_user_command_0100
    *       text
    *      -->P_E_UCOMM  text
    FORM handle_user_command_0100
      USING
        pf_ucomm TYPE syucomm.
      CASE pf_ucomm.
        WHEN 'KONV'.
          PERFORM convert_data.
      ENDCASE.
    ENDFORM.                    " handle_user_command_0100
    *&      Form  exit_program
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM exit_program.
      CALL METHOD go_alv_grid_0100->free.
      IF NOT go_alv_grid_0200 IS INITIAL.
        CALL METHOD go_alv_grid_0200->free.
      ENDIF.
      CALL METHOD go_docking_container->free.
      CALL METHOD cl_gui_cfw=>flush.
      IF sy-subrc NE 0.
    * add your handling, for example
        CALL FUNCTION 'POPUP_TO_INFORM'
          EXPORTING
            titel = sy-repid
            txt2  = sy-subrc
            txt1  = 'Error in Flush'(500).
      ENDIF.
      LEAVE PROGRAM.
    ENDFORM.                    " exit_program
    *&      Form  handle_toolbar_0200
    *       text
    *      -->P_E_OBJECT  text
    *      -->P_E_INTERACTIVE  text
    FORM handle_toolbar_0200
      USING
        po_object TYPE REF TO cl_alv_event_toolbar_set.
      DATA: ls_toolbar TYPE stb_button.
      CLEAR ls_toolbar.
      ls_toolbar-butn_type  = 0.
      ls_toolbar-function   = 'POST'.
      ls_toolbar-quickinfo  = 'Buchen'.
      ls_toolbar-text       = 'Buchen'.
      ls_toolbar-disabled   = ' '.
      APPEND ls_toolbar TO po_object->mt_toolbar.
    ENDFORM.                    " handle_toolbar_0200
    *&      Form  handle_user_command_0200
    *       text
    *      -->P_E_UCOMM  text
    FORM handle_user_command_0200
      USING
        pf_ucomm TYPE syucomm.
      CASE pf_ucomm.
        WHEN 'POST'.
          PERFORM post.
      ENDCASE.
    ENDFORM.                    " handle_user_command_0200
    *&      Form  convert_data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM convert_data.
      DATA: lf_perio(3) TYPE n.
      LOOP AT gt_text_input INTO gs_text_input.
        TRANSLATE gs_text_input-planbetrag USING '. '.
        TRANSLATE gs_text_input-planbetrag USING ',.'.
        CONDENSE gs_text_input-planbetrag.
        gs_bapi_input-version   = gp_versn.
        gs_bapi_input-fisc_year = gp_gjahr.
        gs_bapi_input-coobject  = gs_text_input-kostenstelle.
        gs_bapi_input-cost_elem = gs_text_input-kostenart.
        lf_perio = gs_text_input-planperiode.
        CASE lf_perio.
          WHEN '001'.
            gs_bapi_input-wkgbtr01 = gs_text_input-planbetrag.
          WHEN '002'.
            gs_bapi_input-wkgbtr02 = gs_text_input-planbetrag.
          WHEN '003'.
            gs_bapi_input-wkgbtr03 = gs_text_input-planbetrag.
          WHEN '004'.
            gs_bapi_input-wkgbtr04 = gs_text_input-planbetrag.
          WHEN '005'.
            gs_bapi_input-wkgbtr05 = gs_text_input-planbetrag.
          WHEN '006'.
            gs_bapi_input-wkgbtr06 = gs_text_input-planbetrag.
          WHEN '007'.
            gs_bapi_input-wkgbtr07 = gs_text_input-planbetrag.
          WHEN '008'.
            gs_bapi_input-wkgbtr08 = gs_text_input-planbetrag.
          WHEN '009'.
            gs_bapi_input-wkgbtr09 = gs_text_input-planbetrag.
          WHEN '010'.
            gs_bapi_input-wkgbtr10 = gs_text_input-planbetrag.
          WHEN '011'.
            gs_bapi_input-wkgbtr11 = gs_text_input-planbetrag.
          WHEN '012'.
            gs_bapi_input-wkgbtr12 = gs_text_input-planbetrag.
        ENDCASE.
        COLLECT gs_bapi_input INTO gt_bapi_input.
        CLEAR gs_bapi_input.
      ENDLOOP. "at gt_text_input
      CALL SCREEN 0200.
    ENDFORM.                    " convert_data
    *&      Form  build_fieldcatalog_bapi_input
    *       text
    *      <--P_GT_FIELDCAT  text
    FORM build_fieldcatalog_bapi_input
      CHANGING
        pt_fieldcat TYPE lvc_t_fcat.
      DATA ls_fcat TYPE lvc_s_fcat.
      CLEAR pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'VERSION' .
      ls_fcat-ref_table = 'BAPIPLNHDR' .
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'FISC_YEAR' .
      ls_fcat-ref_table = 'BAPIPLNHDR' .
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'COOBJECT' .
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '20' .
      ls_fcat-coltext = 'CO-Objekt' .
      ls_fcat-seltext = 'CO-Objekt' .
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'COST_ELEM' .
      ls_fcat-ref_table = 'BAPIPCPVAL' .
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR01'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR02'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR03'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR04'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR05'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR06'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR07'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR08'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR09'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR10'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR11'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'WKGBTR12'.
      ls_fcat-ref_table = 'COEP' .
      ls_fcat-ref_field = 'WKGBTR'.
      APPEND ls_fcat TO pt_fieldcat .
    ENDFORM.                    " build_fieldcatalog_bapi_input
    *&      Form  post
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM post.
      DATA:
        lf_index(6) TYPE n,
        lf_kostl    LIKE csks-kostl,
        lf_aufnr    LIKE aufk-aufnr,
        lf_kstar    LIKE cska-kstar.
      DATA:
        lt_csks TYPE TABLE OF csks.
      break c5085345.
    * Header
      gs_headerinfo-co_area       = gp_kokrs.
      gs_headerinfo-fisc_year     = gp_gjahr.
      gs_headerinfo-period_from   = '001'.
      gs_headerinfo-period_to     = '012'.
      gs_headerinfo-version       = gp_versn.
      gs_headerinfo-plan_currtype = 'C'.
      LOOP AT gt_bapi_input INTO gs_bapi_input.
    *   Fill index structure
        CLEAR gs_indexstructure.
        lf_index = sy-tabix.
        gs_indexstructure-object_index = lf_index.
        gs_indexstructure-value_index  = lf_index.
        gs_indexstructure-attrib_index = '000000'.
        INSERT gs_indexstructure INTO TABLE gt_indexstructure.
    *   Fill coobject
        CLEAR gs_coobject.
        gs_coobject-object_index = lf_index.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  = gs_bapi_input-coobject
          IMPORTING
            output = lf_kostl.
        SELECT * FROM csks INTO TABLE lt_csks
          WHERE
            kokrs = gp_kokrs AND
            kostl = lf_kostl.
        IF sy-subrc = 0.
          gs_coobject-costcenter = lf_kostl.
        ELSE.
          CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
            EXPORTING
              input  = gs_bapi_input-coobject
            IMPORTING
              output = lf_aufnr.
          CALL FUNCTION 'K_ORDER_READ'
            EXPORTING
              aufnr     = lf_aufnr
            EXCEPTIONS
              not_found = 1.
          IF NOT sy-subrc = 0.
            gs_return-type = 'E'.
            gs_return-message+0(10)  = 'CO-Objekt '.
            gs_return-message+10(10) = gs_bapi_input-coobject.
            gs_return-message+20(20)  = ' existiert nicht.'.
            CONDENSE gs_return-message.
            PERFORM add_log_message_free_text
              USING
                gs_return-type
                gs_return-message.
            EXIT.
          ENDIF. "IF NOT sy-subrc = 0
          gs_coobject-orderid = lf_aufnr.
        ENDIF. "sy-subrc = 0
        INSERT gs_coobject INTO TABLE gt_coobject.
    *   Period value
        gs_pervalue-value_index = lf_index.
        CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
          EXPORTING
            input  = gs_bapi_input-cost_elem
          IMPORTING
            output = lf_kstar.
        gs_pervalue-cost_elem = lf_kstar.
        gs_pervalue-fix_val_per01 = gs_bapi_input-wkgbtr01.
        gs_pervalue-fix_val_per02 = gs_bapi_input-wkgbtr02.
        gs_pervalue-fix_val_per03 = gs_bapi_input-wkgbtr03.
        gs_pervalue-fix_val_per04 = gs_bapi_input-wkgbtr04.
        gs_pervalue-fix_val_per05 = gs_bapi_input-wkgbtr05.
        gs_pervalue-fix_val_per06 = gs_bapi_input-wkgbtr06.
        gs_pervalue-fix_val_per07 = gs_bapi_input-wkgbtr07.
        gs_pervalue-fix_val_per08 = gs_bapi_input-wkgbtr08.
        gs_pervalue-fix_val_per09 = gs_bapi_input-wkgbtr09.
        gs_pervalue-fix_val_per10 = gs_bapi_input-wkgbtr10.
        gs_pervalue-fix_val_per11 = gs_bapi_input-wkgbtr11.
        gs_pervalue-fix_val_per12 = gs_bapi_input-wkgbtr12.
        INSERT gs_pervalue INTO TABLE gt_pervalue.
      ENDLOOP. "at gt_bapi_input
    * Buchungsbaustein
      CALL FUNCTION 'BAPI_PRIM_COST_CHECK_AND_POST'
        EXPORTING
          header_info         = gs_headerinfo
          testrun             = gp_test
    *   DELTA               = ' '
        TABLES
          idx_structure       = gt_indexstructure
          object              = gt_coobject
          per_value           = gt_pervalue
          tot_value           = gt_totvalue
          contrl              = gt_control
          return              = gt_return.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
    *   EXPORTING
    *     WAIT          =
    *   IMPORTING
    *     RETURN        =
      LOOP AT gt_return INTO gs_return.
        gs_balsmsg-msgty = gs_return-type.
        gs_balsmsg-msgid = gs_return-id.
        gs_balsmsg-msgno = gs_return-number.
        gs_balsmsg-msgv1 = gs_return-message_v1.
        gs_balsmsg-msgv2 = gs_return-message_v2.
        gs_balsmsg-msgv3 = gs_return-message_v3.
        gs_balsmsg-msgv4 = gs_return-message_v4.
        PERFORM add_log_message
          USING
            gs_balsmsg.
      ENDLOOP. "AT gt_return
      PERFORM show_log.
    ENDFORM.                    " post
    *&      Form  create_log
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM create_log .
      DATA: ls_balslog TYPE bal_s_log.
    * Einige Verwaltungsdaten
      ls_balslog-extnumber = 'ZPLAN010'.
      ls_balslog-aluser    = sy-uname.
      ls_balslog-alprog    = sy-repid.
    * Create
      CALL FUNCTION 'BAL_LOG_CREATE'
        EXPORTING
          i_s_log                 = ls_balslog
    *    IMPORTING
    *      e_log_handle            = gf_balloghndl
        EXCEPTIONS
          log_header_inconsistent = 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.                    " create_log
    *&      Form  add_log_message
    *       text
    *      -->P_GS_BALSMSG  text
    FORM add_log_message
      USING
        ps_balsmsg TYPE bal_s_msg.
      break c5085345.
      CALL FUNCTION 'BAL_LOG_MSG_ADD'
        EXPORTING
    *       I_LOG_HANDLE              =
          i_s_msg                   = ps_balsmsg
    *     IMPORTING
    *       E_S_MSG_HANDLE            =
    *       E_MSG_WAS_LOGGED          =
    *       E_MSG_WAS_DISPLAYED       =
       EXCEPTIONS
         log_not_found             = 1
         msg_inconsistent          = 2
         log_is_full               = 3
         OTHERS                    = 4.
      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.                    " add_log_messa
    *&      Form  add_log_message_free_text
    *       text
    *      -->P_GS_RETURN_TYPE  text
    *      -->P_GS_RETURN_MESSAGE  text
    FORM add_log_message_free_text
      USING
        ps_type
        ps_message.
      CALL FUNCTION 'BAL_LOG_MSG_ADD_FREE_TEXT'
        EXPORTING
    *       I_LOG_HANDLE              =
          i_msgty                   = ps_type
    *       I_PROBCLASS               = '4'
          i_text                    = ps_message
    *       I_S_CONTEXT               =
    *       I_S_PARAMS                =
    *     IMPORTING
    *       E_S_MSG_HANDLE            =
    *       E_MSG_WAS_LOGGED          =
    *       E_MSG_WAS_DISPLAYED       =
       EXCEPTIONS
         log_not_found             = 1
         msg_inconsistent          = 2
         log_is_full               = 3
         OTHERS                    = 4.
      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.                    " add_log_message_free_text
    *&      Form  show_log
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM show_log .
      DATA:
        l_s_display_profile TYPE bal_s_prof.
    * get display profile
      CALL FUNCTION 'BAL_DSP_PROFILE_NO_TREE_GET'
        IMPORTING
          e_s_display_profile = l_s_display_profile
        EXCEPTIONS
          OTHERS              = 1.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    * use grid for display if wanted
      l_s_display_profile-use_grid = 'X'.
    * set report to allow saving of variants
      l_s_display_profile-disvariant-report = sy-repid.
    * when you use also other ALV lists in your report,
    * please specify a handle to distinguish between the display
    * variants of these different lists, e.g:
      l_s_display_profile-disvariant-handle = 'LOG'.
    * call display function module
    * We do not specify any filter (like I_S_LOG_FILTER, ...,
    * I_T_MSG_HANDLE) since we want to display all logs available
      CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
        EXPORTING
          i_s_display_profile = l_s_display_profile
        EXCEPTIONS
          OTHERS              = 1.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                 WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.

  • Changing color of a field after changing the data using OOPS ALV.

    Hi Experts,
    I have displayed three fields (price, no. of products and total amount) in my ALV grid using OOPS.
    Then am changing the data in either price or no. of products fields. When I click ENTER key the value in total amount changes correspondingly. Am able to achieve till this point.
    Now I have to change the color of the three fields( price, products and total amount) of the affected row alone and not the entire set of rows in the output grid.
    Please provide suggestions.
    Thanks in advance.

    Hi,
    You have to use Layout and Output data in your OO ALV. The below code is using FM you can replicate it in OO ALV
    types: begin of t_data,
             flg(3) type c,
             sty    type lvc_t_styl,
             col    type lvc_t_scol,
           end of t_data,
           t_tdata type table of t_data.
    constants: c_red type i value '255',
              c_g   type i value '1'.
    DATA: i_fcat type LVC_T_FCAT,
          s_fcat type lvc_s_fcat,
          s_lay  type lvc_s_layo,
          s_sty  type lvc_s_styl,
          s_col  type lvc_s_scol,
          i_data type t_tdata,
          s_data type t_data.
    s_lay-stylefname = 'STY'.
    s_lay-CTAB_FNAME = 'COL'.
    s_fcat-FIELDNAME = 'FLG'.
    APPEND s_fcat to i_fcat.
    CLEAR: s_data.
    s_data-flg = 'Yes'.
    s_sty-FIELDNAME = 'FLG'.
    s_sty-style = CL_GUI_ALV_GRID=>MC_STYLE_HOTSPOT.
    insert s_sty into TABLE s_data-sty.
    s_col-fname = 'FLG'.
    s_col-color-col = 6.
    s_col-color-inv = 1.
    insert s_col into table s_data-col.
    APPEND s_data to i_data.
    CLEAR: s_data.
    s_data-flg = 'No'.
    s_sty-FIELDNAME = 'FLG'.
    s_sty-style = CL_GUI_ALV_GRID=>MC_STYLE_HOTSPOT_NO.
    insert s_sty into TABLE s_data-sty.
    APPEND s_data to i_data.
    CLEAR: s_data.
    s_data-flg = 'No'.
    s_sty-FIELDNAME = 'FLG'.
    s_sty-style = CL_GUI_ALV_GRID=>MC_STYLE_HOTSPOT_NO.
    s_col-fname = 'FLG'.
    s_col-color-col = 6.
    insert s_col into table s_data-col.
    insert s_sty into TABLE s_data-sty.
    APPEND s_data to i_data.
    CLEAR: s_data.
    s_data-flg = 'Yes'.
    s_sty-FIELDNAME = 'FLG'.
    s_sty-style = CL_GUI_ALV_GRID=>MC_STYLE_HOTSPOT.
    insert s_sty into TABLE s_data-sty.
    APPEND s_data to i_data.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
       IS_LAYOUT_LVC                     = s_lay
       IT_FIELDCAT_LVC                   = i_fcat
      TABLES
        T_OUTTAB                          = i_data
    EXCEPTIONS
       PROGRAM_ERROR                     = 1
       OTHERS                            = 2
    IF SY-SUBRC <> 0.
    ENDIF.
    Thanks,
    Kiruba

  • Unable to print TOP_OF_PAGE in ALV Using OOPS??plz help me in my code

    *&--data declaration
    TYPE-POOLS : slis.
    TYPES : BEGIN OF type_vbak,
            vbeln LIKE vbak-vbeln,   "SD Order
            ernam LIKE vbak-ernam,   "Name of the person who created
            audat LIKE vbak-audat,   "Document Date
            vbtyp LIKE vbak-vbtyp,   "SD Document Category
            auart LIKE vbak-auart,   "Type of Order
            netwr LIKE vbak-netwr,
            "Net value in sales current doc currency
            waerk LIKE vbak-waerk,   "SD Document Currency
            vkorg LIKE vbak-vkorg,   "Sales Organization
            vtweg LIKE vbak-vtweg,   "Distribution Chanel
            spart LIKE vbak-spart,   "Division
            END OF type_vbak.
    TYPES : BEGIN OF type_vbap,
            vbeln LIKE vbap-vbeln,   "SD Order
            posnr LIKE vbap-posnr,   "Sales Document Item
            matnr LIKE vbap-matnr,   "Component
            charg LIKE vbap-charg,   "Batch Number
            matkl LIKE vbap-matkl,   "Material Group
            arktx LIKE vbap-arktx,   "Short Text for Sales Order Item
            kwmeng LIKE vbap-kwmeng,
            "cumulative order quantity in sales unit
            vrkme LIKE vbap-vrkme,   "Sales Unit
            netpr LIKE vbap-netpr,   "Net Price
            END OF type_vbap.
    TYPES : type_t_vbak TYPE type_vbak,
            type_t_vbap TYPE type_vbap.
    DATA : it_vbak TYPE STANDARD TABLE OF type_t_vbak,
           it_vbap TYPE STANDARD TABLE OF type_t_vbap.
    DATA : wa_vbak TYPE type_t_vbak,
           wa_vbap TYPE type_t_vbap.
    DATA : d_vbeln LIKE vbak-vbeln,
           d_audat LIKE vbak-audat,
           lv_vbeln TYPE vbak-vbeln.
    *&---Internal table for event catalog
    DATA :it_event TYPE slis_t_event,
    Internal table for Header printing
          i_header TYPE slis_t_listheader,
    *&---Work area for event catalog
          wa_event TYPE slis_alv_event,
    *&---Work area for report layout
          wa_layout TYPE slis_layout_alv,
    Workarea for Header printing
          wa_header TYPE slis_listheader.
    *&---cc1 is refering to the global class 'cl_gui_custom_container'
    DATA : cc1 TYPE REF TO cl_gui_custom_container.
    *&----alv1 is refering to the global class 'cl_gui_alv_grid'
    DATA : alv1 TYPE REF TO cl_gui_alv_grid.
    *&----work area for field catalog
    DATA : wa_fieldcatalog1 TYPE lvc_s_fcat.
    *&----internal table for field catalog
    DATA : it_fieldcatalog1 TYPE lvc_t_fcat.
    *&----data declaration for ok_code
    DATA: ok_code_0101 LIKE sy-ucomm.
    *&---cc2 is refering to the global class 'cl_gui_custom_container'
    DATA : cc2 TYPE REF TO cl_gui_custom_container.
    *&----alv2 is refering to the global class 'cl_gui_alv_grid'
    DATA : alv2 TYPE REF TO cl_gui_alv_grid.
    *&----work area for field catalog
    DATA : wa_fieldcatalog2 TYPE lvc_s_fcat.
    *&----internal table for field catalog
    DATA : it_fieldcatalog2 TYPE lvc_t_fcat.
    *&----data declaration for ok_code
    DATA: ok_code_0102 LIKE sy-ucomm.
    *&--defining the selection screen
    SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_vbeln FOR d_vbeln OBLIGATORY,   "SD Order
                     s_audat FOR d_audat.              "Document Date
    SELECTION-SCREEN END OF BLOCK bl1.
    AT SELECTION-SCREEN ON s_vbeln.
      IF s_vbeln[] IS INITIAL.
        SET CURSOR FIELD 'S_VBELN-LOW'.
        MESSAGE e001 WITH text-001.
      ELSE.
        SELECT SINGLE vbeln INTO wa_vbak-vbeln
                            FROM vbak
                            WHERE vbeln IN s_vbeln.
        IF sy-subrc <> 0.
          SET CURSOR FIELD 'S_VBELN-LOW'.
          MESSAGE e002 WITH text-002.
        ENDIF.
      ENDIF.
      DATA :  wa_row_id TYPE lvc_s_row.
          CLASS lcl_event_reciver DEFINITION
    CLASS lcl_event_reciver DEFINITION.
      PUBLIC SECTION.
       &--defining the method for each event
        METHODS : handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
                                      IMPORTING e_row_id e_column_id es_row_no,
                  handle_top_of_page FOR EVENT TOP_OF_PAGE OF cl_gui_alv_grid
                                      IMPORTING e_dyndoc_id.
      PROTECTED SECTION.
      PRIVATE SECTION.
    ENDCLASS.                    "lcl_event_reciver DEFINITION
          CLASS lcl_event_reciver IMPLEMENTATION
    CLASS lcl_event_reciver IMPLEMENTATION.
    *&--implement the event handler methods for hot spot click.
      METHOD handle_hotspot_click.
        CLEAR lv_vbeln.
        READ TABLE it_vbak INTO wa_vbak INDEX e_row_id.
        lv_vbeln = wa_vbak-vbeln.
    **&--for freeing the instance which was created alv2.
    perform free_previous_object.
    *CALL METHOD alv2->free
    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.
    *ENDIF.
    *&--fetching the data
    *perform fetch_data_alv2 usinr lv_vbeln.
        SELECT  vbeln    "SD Order
                posnr    "Sales Document Item
                matnr    "Component
                charg    "Batch Number
                matkl    "Material Group
                arktx    "Short Text for Sales Order Item
                kwmeng   "cumulative order quantity in sales unit
                vrkme    "Sales Unit
                netpr    "Net Price
                   INTO TABLE it_vbap
                   FROM vbap
                   WHERE vbeln = lv_vbeln.
        IF sy-subrc <> 0.
          MESSAGE e004 WITH text-004.
        ENDIF.
    *&---populating the second alv
    *perform populate_fieldcatalog2.
    *&-POPULATING THE FIELD VBELN
        wa_fieldcatalog2-col_pos = 1.  "position of the column
        wa_fieldcatalog2-fieldname = 'VBELN'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
    *wa_fieldcatalog2-hotspot = 'X'.
        wa_fieldcatalog2-outputlen = 10.  "output length of the field.
        wa_fieldcatalog2-seltext = 'SD ORDER NUMBER'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD POSNR
        wa_fieldcatalog2-col_pos = 2.  "position of the column
        wa_fieldcatalog2-fieldname = 'POSNR'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
        wa_fieldcatalog2-outputlen = 2.  "output length of the field.
        wa_fieldcatalog2-seltext = 'SD ITEM'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD MATNR
        wa_fieldcatalog2-col_pos = 3.  "position of the column
        wa_fieldcatalog2-fieldname = 'MATNR'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
        wa_fieldcatalog2-outputlen = 2.  "output length of the field.
        wa_fieldcatalog2-seltext = 'COMPONENT'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD CHARG
        wa_fieldcatalog2-col_pos = 4.  "position of the column
        wa_fieldcatalog2-fieldname = 'CHARG'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
        wa_fieldcatalog2-outputlen = 2.  "output length of the field.
        wa_fieldcatalog2-seltext = 'BATCH NUMBER'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD MATKL
        wa_fieldcatalog2-col_pos = 5.  "position of the column
        wa_fieldcatalog2-fieldname = 'MATKL'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
        wa_fieldcatalog2-outputlen = 2.  "output length of the field.
        wa_fieldcatalog2-seltext = 'MATERIAL GROUP'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD ARKTX
        wa_fieldcatalog2-col_pos = 6.  "position of the column
        wa_fieldcatalog2-fieldname = 'ARKTX'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
        wa_fieldcatalog2-outputlen = 2.  "output length of the field.
        wa_fieldcatalog2-seltext = 'SHORT TEXT'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD KWMENG
        wa_fieldcatalog2-col_pos = 7.  "position of the column
        wa_fieldcatalog2-fieldname = 'KEMENG'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
        wa_fieldcatalog2-outputlen = 2.  "output length of the field.
        wa_fieldcatalog2-seltext = 'SALES QUANTITY'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD VRKME
        wa_fieldcatalog2-col_pos = 8.  "position of the column
        wa_fieldcatalog2-fieldname = 'VRKME'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
        wa_fieldcatalog2-outputlen = 2.  "output length of the field.
        wa_fieldcatalog2-seltext = 'SALES UNIT'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD NETPR
        wa_fieldcatalog2-col_pos = 9.  "position of the column
        wa_fieldcatalog2-fieldname = 'NETPR'. "field name
        wa_fieldcatalog2-tabname = 'IT_VBAP'.    "INTERNAL table name
        wa_fieldcatalog2-ref_table = 'VBAP'.     "FOR REFERENCE
        wa_fieldcatalog2-outputlen = 2.  "output length of the field.
        wa_fieldcatalog2-seltext = 'NET PRICE'.
        "long key word
        APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
        CLEAR wa_fieldcatalog2.
    *&--display the alv2
    *perform display_alv2.
        CREATE OBJECT cc2
            EXPORTING
       PARENT                      =
              container_name              = 'CUSTOMCONTROL2'
       STYLE                       =
       LIFETIME                    = lifetime_default
       REPID                       =
       DYNNR                       =
       NO_AUTODEF_PROGID_DYNNR     =
    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.
        CREATE OBJECT alv2
          EXPORTING
       I_SHELLSTYLE      = 0
       I_LIFETIME        =
            i_parent          = cc2
       I_APPL_EVENTS     = space
       I_PARENTDBG       =
       I_APPLOGPARENT    =
       I_GRAPHICSPARENT  =
       I_NAME            =
       I_FCAT_COMPLETE   = SPACE
    EXCEPTIONS
       ERROR_CNTL_CREATE = 1
       ERROR_CNTL_INIT   = 2
       ERROR_CNTL_LINK   = 3
       ERROR_DP_CREATE   = 4
       others            = 5
        IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        CALL METHOD alv2->set_table_for_first_display
    EXPORTING
       I_BUFFER_ACTIVE               =
       I_BYPASSING_BUFFER            =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              =
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = 'X'
       IS_LAYOUT                     =
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
       IT_TOOLBAR_EXCLUDING          =
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
       IT_EXCEPT_QINFO               =
       IR_SALV_ADAPTER               =
          CHANGING
            it_outtab                     = it_vbap
            it_fieldcatalog               = it_fieldcatalog2
       IT_SORT                       =
       IT_FILTER                     =
    EXCEPTIONS
       INVALID_PARAMETER_COMBINATION = 1
       PROGRAM_ERROR                 = 2
       TOO_MANY_LINES                = 3
       others                        = 4
        IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDMETHOD.                    "handle_hotspot_click
    *&--implement the event handler methods for top of page
    method handle_top_of_page.
    CALL METHOD e_dyndoc_id->display_document
    EXPORTING parent = cc1.
    *write:/5 'Desc :' , 'Sales Document Header & Items'.
    *write:/5 'Date :' , sy-datum.
    *write:/5 'Page no :' , sy-pagno.
    endmethod.
    ENDCLASS.                    "lcl_event_reciver IMPLEMENTATION
    *&--data for event handler in hot spot click
    DATA: event_handler TYPE REF TO lcl_event_reciver,
    *&--data for event handler in top of page
          o_dd_doc TYPE REF TO cl_dd_document.
    *&--main logic
    START-OF-SELECTION.
    *&--vbak.
      SELECT  vbeln    "SD Order
              ernam    "Name of the person who created
              audat    "Document Date
              vbtyp    "SD Document Category
              auart    "Type of Order
              netwr    "Net value in sales current doc currency
              waerk    "SD Document Currency
              vkorg    "Sales Organization
              vtweg    "Distribution Chanel
              spart    "Division
                 INTO TABLE it_vbak
                 FROM vbak
                 WHERE vbeln IN s_vbeln AND
                       audat IN s_audat.
      IF sy-subrc <> 0.
        MESSAGE e003 WITH text-003.
      ENDIF.
      CLEAR wa_fieldcatalog1 .
      REFRESH  it_fieldcatalog1 .
    *&-POPULATING THE FIELD VBELN
      wa_fieldcatalog1-col_pos = 1.  "position of the column
      wa_fieldcatalog1-fieldname = 'VBELN'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-hotspot = 'X'.
      wa_fieldcatalog1-outputlen = 10.  "output length of the field.
      wa_fieldcatalog1-seltext = 'SD ORDER NUMBER'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD ERNAM
      wa_fieldcatalog1-col_pos = 2.  "position of the column
      wa_fieldcatalog1-fieldname = 'ERNAM'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 12.  "output length of the field.
      wa_fieldcatalog1-seltext = 'NAME OF THE PERSON WHO CREATED'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD AUDAT
      wa_fieldcatalog1-col_pos = 3.  "position of the column
      wa_fieldcatalog1-fieldname = 'AUDAT'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 8.  "output length of the field.
      wa_fieldcatalog1-seltext = 'DOCUMENT DATE'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD VBTYP
      wa_fieldcatalog1-col_pos = 4.  "position of the column
      wa_fieldcatalog1-fieldname = 'VBTYP'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 1.  "output length of the field.
      wa_fieldcatalog1-seltext = 'DOCUMENT CATEGORY'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD AUART
      wa_fieldcatalog1-col_pos = 5.  "position of the column
      wa_fieldcatalog1-fieldname = 'AUART'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 4.  "output length of the field.
      wa_fieldcatalog1-seltext = 'TYPE OF THE ORDER'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD NETWR
      wa_fieldcatalog1-col_pos = 6.  "position of the column
      wa_fieldcatalog1-fieldname = 'NETWR'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 15.  "output length of the field.
      wa_fieldcatalog1-seltext = 'NET VALUE'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD WAERK
      wa_fieldcatalog1-col_pos = 7.  "position of the column
      wa_fieldcatalog1-fieldname = 'WAERK'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 5.  "output length of the field.
      wa_fieldcatalog1-seltext = 'DOCUMENT CURRENCY'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD VKORG
      wa_fieldcatalog1-col_pos = 8.  "position of the column
      wa_fieldcatalog1-fieldname = 'VKORG'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 4.  "output length of the field.
      wa_fieldcatalog1-seltext = 'SALES ORG'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD VTWEG
      wa_fieldcatalog1-col_pos = 9.  "position of the column
      wa_fieldcatalog1-fieldname = 'VTWEG'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 2.  "output length of the field.
      wa_fieldcatalog1-seltext = 'DISTRIBUTION CHANEL'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD SPART
      wa_fieldcatalog1-col_pos = 10.  "position of the column
      wa_fieldcatalog1-fieldname = 'SPART'. "field name
      wa_fieldcatalog1-tabname = 'IT_VBAK'.    "INTERNAL table name
      wa_fieldcatalog1-ref_table = 'VBAK'.     "FOR REFERENCE
      wa_fieldcatalog1-outputlen = 2.  "output length of the field.
      wa_fieldcatalog1-seltext = 'DIVISION'.
      "long key word
      APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
      CLEAR wa_fieldcatalog1.
      CREATE OBJECT cc1
          EXPORTING
       PARENT                      =
            container_name              = 'CUSTOMCONTROL1'
       STYLE                       =
       LIFETIME                    = lifetime_default
       REPID                       =
       DYNNR                       =
       NO_AUTODEF_PROGID_DYNNR     =
    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.
      CREATE OBJECT alv1
        EXPORTING
       I_SHELLSTYLE      = 0
       I_LIFETIME        =
          i_parent          = cc1
       I_APPL_EVENTS     = space
       I_PARENTDBG       =
       I_APPLOGPARENT    =
       I_GRAPHICSPARENT  =
       I_NAME            =
       I_FCAT_COMPLETE   = SPACE
    EXCEPTIONS
       ERROR_CNTL_CREATE = 1
       ERROR_CNTL_INIT   = 2
       ERROR_CNTL_LINK   = 3
       ERROR_DP_CREATE   = 4
       others            = 5
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      CREATE OBJECT event_handler.
    *&---set handler for hot spot click
      SET HANDLER: event_handler->handle_hotspot_click FOR alv1,
    *&---set handler for top of page
                  event_handler->handle_top_of_page for alv1.
      CALL METHOD alv1->set_table_for_first_display
    EXPORTING
       I_BUFFER_ACTIVE               =
       I_BYPASSING_BUFFER            =
       I_CONSISTENCY_CHECK           =
       I_STRUCTURE_NAME              =
       IS_VARIANT                    =
       I_SAVE                        =
       I_DEFAULT                     = 'X'
       IS_LAYOUT                     =
       IS_PRINT                      =
       IT_SPECIAL_GROUPS             =
       IT_TOOLBAR_EXCLUDING          =
       IT_HYPERLINK                  =
       IT_ALV_GRAPHICS               =
       IT_EXCEPT_QINFO               =
       IR_SALV_ADAPTER               =
        CHANGING
          it_outtab                     = it_vbak
          it_fieldcatalog               = it_fieldcatalog1
       IT_SORT                       =
       IT_FILTER                     =
    EXCEPTIONS
       INVALID_PARAMETER_COMBINATION = 1
       PROGRAM_ERROR                 = 2
       TOO_MANY_LINES                = 3
       others                        = 4
      IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    *&--for hot spot click
      CALL METHOD cl_gui_control=>set_focus
        EXPORTING
          control = alv1.
    *&--for top of page
    CALL METHOD alv1->list_processing_events
      EXPORTING
        i_event_name      = 'TOP_OF_PAGE'
        I_DYNDOC_ID       = o_dd_doc
       IS_SUBTOTTXT_INFO =
       IP_SUBTOT_LINE    =
       I_TABLE_INDEX     =
    CHANGING
       C_SUBTOTTXT       =
      CALL SCREEN 0101.
    *&      Module  STATUS_0101  OUTPUT
          text
    MODULE status_0101 OUTPUT.
      SET PF-STATUS 'Z9D_MENU1_ALV'.
    SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0101  OUTPUT
    *&      Module  USER_COMMAND_0101  INPUT
          text
    MODULE user_command_0101 INPUT.
      CASE ok_code_0101.
        WHEN 'BCK1'.
          LEAVE PROGRAM.
      ENDCASE.

    *&--data declaration
    TYPE-POOLS : slis.
    TYPES : BEGIN OF type_vbak,
    vbeln LIKE vbak-vbeln, "SD Order
    ernam LIKE vbak-ernam, "Name of the person who created
    audat LIKE vbak-audat, "Document Date
    vbtyp LIKE vbak-vbtyp, "SD Document Category
    auart LIKE vbak-auart, "Type of Order
    netwr LIKE vbak-netwr,
    "Net value in sales current doc currency
    waerk LIKE vbak-waerk, "SD Document Currency
    vkorg LIKE vbak-vkorg, "Sales Organization
    vtweg LIKE vbak-vtweg, "Distribution Chanel
    spart LIKE vbak-spart, "Division
    END OF type_vbak.
    TYPES : BEGIN OF type_vbap,
    vbeln LIKE vbap-vbeln, "SD Order
    posnr LIKE vbap-posnr, "Sales Document Item
    matnr LIKE vbap-matnr, "Component
    charg LIKE vbap-charg, "Batch Number
    matkl LIKE vbap-matkl, "Material Group
    arktx LIKE vbap-arktx, "Short Text for Sales Order Item
    kwmeng LIKE vbap-kwmeng,
    "cumulative order quantity in sales unit
    vrkme LIKE vbap-vrkme, "Sales Unit
    netpr LIKE vbap-netpr, "Net Price
    END OF type_vbap.
    TYPES : type_t_vbak TYPE type_vbak,
    type_t_vbap TYPE type_vbap.
    DATA : it_vbak TYPE STANDARD TABLE OF type_t_vbak,
    it_vbap TYPE STANDARD TABLE OF type_t_vbap.
    DATA : wa_vbak TYPE type_t_vbak,
    wa_vbap TYPE type_t_vbap.
    DATA : d_vbeln LIKE vbak-vbeln,
    d_audat LIKE vbak-audat,
    lv_vbeln TYPE vbak-vbeln.
    *&---Internal table for event catalog
    DATA :it_event TYPE slis_t_event,
    Internal table for Header printing
    i_header TYPE slis_t_listheader,
    *&---Work area for event catalog
    wa_event TYPE slis_alv_event,
    *&---Work area for report layout
    wa_layout TYPE slis_layout_alv,
    Workarea for Header printing
    wa_header TYPE slis_listheader.
    *&---cc1 is refering to the global class 'cl_gui_custom_container'
    DATA : cc1 TYPE REF TO cl_gui_custom_container.
    *&----alv1 is refering to the global class 'cl_gui_alv_grid'
    DATA : alv1 TYPE REF TO cl_gui_alv_grid.
    *&----work area for field catalog
    DATA : wa_fieldcatalog1 TYPE lvc_s_fcat.
    *&----internal table for field catalog
    DATA : it_fieldcatalog1 TYPE lvc_t_fcat.
    *&----data declaration for ok_code
    DATA: ok_code_0101 LIKE sy-ucomm.
    *&---cc2 is refering to the global class 'cl_gui_custom_container'
    DATA : cc2 TYPE REF TO cl_gui_custom_container.
    *&----alv2 is refering to the global class 'cl_gui_alv_grid'
    DATA : alv2 TYPE REF TO cl_gui_alv_grid.
    *&----work area for field catalog
    DATA : wa_fieldcatalog2 TYPE lvc_s_fcat.
    *&----internal table for field catalog
    DATA : it_fieldcatalog2 TYPE lvc_t_fcat.
    *&----data declaration for ok_code
    DATA: ok_code_0102 LIKE sy-ucomm.
    *&--defining the selection screen
    SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS : s_vbeln FOR d_vbeln OBLIGATORY, "SD Order
    s_audat FOR d_audat. "Document Date
    SELECTION-SCREEN END OF BLOCK bl1.
    AT SELECTION-SCREEN ON s_vbeln.
    IF s_vbeln[] IS INITIAL.
    SET CURSOR FIELD 'S_VBELN-LOW'.
    MESSAGE e001 WITH text-001.
    ELSE.
    SELECT SINGLE vbeln INTO wa_vbak-vbeln
    FROM vbak
    WHERE vbeln IN s_vbeln.
    IF sy-subrc <> 0.
    SET CURSOR FIELD 'S_VBELN-LOW'.
    MESSAGE e002 WITH text-002.
    ENDIF.
    ENDIF.
    DATA : wa_row_id TYPE lvc_s_row,
    <b>ls_print type lvc_s_prnt.</b>
    CLASS lcl_event_reciver DEFINITION
    CLASS lcl_event_reciver DEFINITION.
    PUBLIC SECTION.
    &--defining the method for each event
    METHODS : handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
    IMPORTING e_row_id e_column_id es_row_no,
    handle_top_of_page FOR EVENT TOP_OF_PAGE OF cl_gui_alv_grid
    IMPORTING e_dyndoc_id.
    PROTECTED SECTION.
    PRIVATE SECTION.
    ENDCLASS. "lcl_event_reciver DEFINITION
    CLASS lcl_event_reciver IMPLEMENTATION
    CLASS lcl_event_reciver IMPLEMENTATION.
    *&--implement the event handler methods for hot spot click.
    METHOD handle_hotspot_click.
    CLEAR lv_vbeln.
    READ TABLE it_vbak INTO wa_vbak INDEX e_row_id.
    lv_vbeln = wa_vbak-vbeln.
    **&--for freeing the instance which was created alv2.
    perform free_previous_object.
    *CALL METHOD alv2->free
    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.
    *ENDIF.
    *&--fetching the data
    *perform fetch_data_alv2 usinr lv_vbeln.
    SELECT vbeln "SD Order
    posnr "Sales Document Item
    matnr "Component
    charg "Batch Number
    matkl "Material Group
    arktx "Short Text for Sales Order Item
    kwmeng "cumulative order quantity in sales unit
    vrkme "Sales Unit
    netpr "Net Price
    INTO TABLE it_vbap
    FROM vbap
    WHERE vbeln = lv_vbeln.
    IF sy-subrc <> 0.
    MESSAGE e004 WITH text-004.
    ENDIF.
    *&---populating the second alv
    *perform populate_fieldcatalog2.
    *&-POPULATING THE FIELD VBELN
    wa_fieldcatalog2-col_pos = 1. "position of the column
    wa_fieldcatalog2-fieldname = 'VBELN'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    *wa_fieldcatalog2-hotspot = 'X'.
    wa_fieldcatalog2-outputlen = 10. "output length of the field.
    wa_fieldcatalog2-seltext = 'SD ORDER NUMBER'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD POSNR
    wa_fieldcatalog2-col_pos = 2. "position of the column
    wa_fieldcatalog2-fieldname = 'POSNR'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    wa_fieldcatalog2-outputlen = 2. "output length of the field.
    wa_fieldcatalog2-seltext = 'SD ITEM'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD MATNR
    wa_fieldcatalog2-col_pos = 3. "position of the column
    wa_fieldcatalog2-fieldname = 'MATNR'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    wa_fieldcatalog2-outputlen = 2. "output length of the field.
    wa_fieldcatalog2-seltext = 'COMPONENT'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD CHARG
    wa_fieldcatalog2-col_pos = 4. "position of the column
    wa_fieldcatalog2-fieldname = 'CHARG'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    wa_fieldcatalog2-outputlen = 2. "output length of the field.
    wa_fieldcatalog2-seltext = 'BATCH NUMBER'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD MATKL
    wa_fieldcatalog2-col_pos = 5. "position of the column
    wa_fieldcatalog2-fieldname = 'MATKL'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    wa_fieldcatalog2-outputlen = 2. "output length of the field.
    wa_fieldcatalog2-seltext = 'MATERIAL GROUP'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD ARKTX
    wa_fieldcatalog2-col_pos = 6. "position of the column
    wa_fieldcatalog2-fieldname = 'ARKTX'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    wa_fieldcatalog2-outputlen = 2. "output length of the field.
    wa_fieldcatalog2-seltext = 'SHORT TEXT'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD KWMENG
    wa_fieldcatalog2-col_pos = 7. "position of the column
    wa_fieldcatalog2-fieldname = 'KEMENG'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    wa_fieldcatalog2-outputlen = 2. "output length of the field.
    wa_fieldcatalog2-seltext = 'SALES QUANTITY'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD VRKME
    wa_fieldcatalog2-col_pos = 8. "position of the column
    wa_fieldcatalog2-fieldname = 'VRKME'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    wa_fieldcatalog2-outputlen = 2. "output length of the field.
    wa_fieldcatalog2-seltext = 'SALES UNIT'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&-POPULATING THE FIELD NETPR
    wa_fieldcatalog2-col_pos = 9. "position of the column
    wa_fieldcatalog2-fieldname = 'NETPR'. "field name
    wa_fieldcatalog2-tabname = 'IT_VBAP'. "INTERNAL table name
    wa_fieldcatalog2-ref_table = 'VBAP'. "FOR REFERENCE
    wa_fieldcatalog2-outputlen = 2. "output length of the field.
    wa_fieldcatalog2-seltext = 'NET PRICE'.
    "long key word
    APPEND wa_fieldcatalog2 TO it_fieldcatalog2.
    CLEAR wa_fieldcatalog2.
    *&--display the alv2
    *perform display_alv2.
    CREATE OBJECT cc2
    EXPORTING
    PARENT =
    container_name = 'CUSTOMCONTROL2'
    STYLE =
    LIFETIME = lifetime_default
    REPID =
    DYNNR =
    NO_AUTODEF_PROGID_DYNNR =
    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.
    CREATE OBJECT alv2
    EXPORTING
    I_SHELLSTYLE = 0
    I_LIFETIME =
    i_parent = cc2
    I_APPL_EVENTS = space
    I_PARENTDBG =
    I_APPLOGPARENT =
    I_GRAPHICSPARENT =
    I_NAME =
    I_FCAT_COMPLETE = SPACE
    EXCEPTIONS
    ERROR_CNTL_CREATE = 1
    ERROR_CNTL_INIT = 2
    ERROR_CNTL_LINK = 3
    ERROR_DP_CREATE = 4
    others = 5
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CALL METHOD alv2->set_table_for_first_display
    EXPORTING
    I_BUFFER_ACTIVE =
    I_BYPASSING_BUFFER =
    I_CONSISTENCY_CHECK =
    I_STRUCTURE_NAME =
    IS_VARIANT =
    I_SAVE =
    I_DEFAULT = 'X'
    IS_LAYOUT =
    IS_PRINT =
    IT_SPECIAL_GROUPS =
    IT_TOOLBAR_EXCLUDING =
    IT_HYPERLINK =
    IT_ALV_GRAPHICS =
    IT_EXCEPT_QINFO =
    IR_SALV_ADAPTER =
    CHANGING
    it_outtab = it_vbap
    it_fieldcatalog = it_fieldcatalog2
    IT_SORT =
    IT_FILTER =
    EXCEPTIONS
    INVALID_PARAMETER_COMBINATION = 1
    PROGRAM_ERROR = 2
    TOO_MANY_LINES = 3
    others = 4
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    ENDMETHOD. "handle_hotspot_click
    *&--implement the event handler methods for top of page
    method handle_top_of_page.
    CALL METHOD e_dyndoc_id->display_document
    EXPORTING parent = cc1.
    *write:/5 'Desc :' , 'Sales Document Header & Items'.
    *write:/5 'Date :' , sy-datum.
    *write:/5 'Page no :' , sy-pagno.
    endmethod.
    ENDCLASS. "lcl_event_reciver IMPLEMENTATION
    *&--data for event handler in hot spot click
    DATA: event_handler TYPE REF TO lcl_event_reciver,
    *&--data for event handler in top of page
    o_dd_doc TYPE REF TO cl_dd_document.
    *&--main logic
    START-OF-SELECTION.
    *&--vbak.
    SELECT vbeln "SD Order
    ernam "Name of the person who created
    audat "Document Date
    vbtyp "SD Document Category
    auart "Type of Order
    netwr "Net value in sales current doc currency
    waerk "SD Document Currency
    vkorg "Sales Organization
    vtweg "Distribution Chanel
    spart "Division
    INTO TABLE it_vbak
    FROM vbak
    WHERE vbeln IN s_vbeln AND
    audat IN s_audat.
    IF sy-subrc <> 0.
    MESSAGE e003 WITH text-003.
    ENDIF.
    CLEAR wa_fieldcatalog1 .
    REFRESH it_fieldcatalog1 .
    *&-POPULATING THE FIELD VBELN
    wa_fieldcatalog1-col_pos = 1. "position of the column
    wa_fieldcatalog1-fieldname = 'VBELN'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-hotspot = 'X'.
    wa_fieldcatalog1-outputlen = 10. "output length of the field.
    wa_fieldcatalog1-seltext = 'SD ORDER NUMBER'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD ERNAM
    wa_fieldcatalog1-col_pos = 2. "position of the column
    wa_fieldcatalog1-fieldname = 'ERNAM'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 12. "output length of the field.
    wa_fieldcatalog1-seltext = 'NAME OF THE PERSON WHO CREATED'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD AUDAT
    wa_fieldcatalog1-col_pos = 3. "position of the column
    wa_fieldcatalog1-fieldname = 'AUDAT'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 8. "output length of the field.
    wa_fieldcatalog1-seltext = 'DOCUMENT DATE'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD VBTYP
    wa_fieldcatalog1-col_pos = 4. "position of the column
    wa_fieldcatalog1-fieldname = 'VBTYP'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 1. "output length of the field.
    wa_fieldcatalog1-seltext = 'DOCUMENT CATEGORY'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD AUART
    wa_fieldcatalog1-col_pos = 5. "position of the column
    wa_fieldcatalog1-fieldname = 'AUART'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 4. "output length of the field.
    wa_fieldcatalog1-seltext = 'TYPE OF THE ORDER'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD NETWR
    wa_fieldcatalog1-col_pos = 6. "position of the column
    wa_fieldcatalog1-fieldname = 'NETWR'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 15. "output length of the field.
    wa_fieldcatalog1-seltext = 'NET VALUE'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD WAERK
    wa_fieldcatalog1-col_pos = 7. "position of the column
    wa_fieldcatalog1-fieldname = 'WAERK'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 5. "output length of the field.
    wa_fieldcatalog1-seltext = 'DOCUMENT CURRENCY'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD VKORG
    wa_fieldcatalog1-col_pos = 8. "position of the column
    wa_fieldcatalog1-fieldname = 'VKORG'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 4. "output length of the field.
    wa_fieldcatalog1-seltext = 'SALES ORG'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD VTWEG
    wa_fieldcatalog1-col_pos = 9. "position of the column
    wa_fieldcatalog1-fieldname = 'VTWEG'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 2. "output length of the field.
    wa_fieldcatalog1-seltext = 'DISTRIBUTION CHANEL'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    *&-POPULATING THE FIELD SPART
    wa_fieldcatalog1-col_pos = 10. "position of the column
    wa_fieldcatalog1-fieldname = 'SPART'. "field name
    wa_fieldcatalog1-tabname = 'IT_VBAK'. "INTERNAL table name
    wa_fieldcatalog1-ref_table = 'VBAK'. "FOR REFERENCE
    wa_fieldcatalog1-outputlen = 2. "output length of the field.
    wa_fieldcatalog1-seltext = 'DIVISION'.
    "long key word
    APPEND wa_fieldcatalog1 TO it_fieldcatalog1.
    CLEAR wa_fieldcatalog1.
    CREATE OBJECT cc1
    EXPORTING
    PARENT =
    container_name = 'CUSTOMCONTROL1'
    STYLE =
    LIFETIME = lifetime_default
    REPID =
    DYNNR =
    NO_AUTODEF_PROGID_DYNNR =
    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.
    CREATE OBJECT alv1
    EXPORTING
    I_SHELLSTYLE = 0
    I_LIFETIME =
    i_parent = cc1
    I_APPL_EVENTS = space
    I_PARENTDBG =
    I_APPLOGPARENT =
    I_GRAPHICSPARENT =
    I_NAME =
    I_FCAT_COMPLETE = SPACE
    EXCEPTIONS
    ERROR_CNTL_CREATE = 1
    ERROR_CNTL_INIT = 2
    ERROR_CNTL_LINK = 3
    ERROR_DP_CREATE = 4
    others = 5
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    CREATE OBJECT event_handler.
    *&---set handler for hot spot click
    SET HANDLER: event_handler->handle_hotspot_click FOR alv1,
    *&---set handler for top of page
    event_handler->handle_top_of_page for alv1.
    <b>LS_PRINT-RESERVELNS = '3'.</b>
    CALL METHOD alv1->set_table_for_first_display
    <b> EXPORTING</b>
    I_BUFFER_ACTIVE =
    I_BYPASSING_BUFFER =
    I_CONSISTENCY_CHECK =
    I_STRUCTURE_NAME =
    IS_VARIANT =
    I_SAVE =
    I_DEFAULT = 'X'
    IS_LAYOUT =
    <b>IS_PRINT = ls_print</b>
    IT_SPECIAL_GROUPS =
    IT_TOOLBAR_EXCLUDING =
    IT_HYPERLINK =
    IT_ALV_GRAPHICS =
    IT_EXCEPT_QINFO =
    IR_SALV_ADAPTER =
    CHANGING
    it_outtab = it_vbak
    it_fieldcatalog = it_fieldcatalog1
    IT_SORT =
    IT_FILTER =
    EXCEPTIONS
    INVALID_PARAMETER_COMBINATION = 1
    PROGRAM_ERROR = 2
    TOO_MANY_LINES = 3
    others = 4
    IF sy-subrc <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
    ENDIF.
    *&--for hot spot click
    CALL METHOD cl_gui_control=>set_focus
    EXPORTING
    control = alv1.
    *&--for top of page
    CALL METHOD alv1->list_processing_events
    EXPORTING
    i_event_name = 'TOP_OF_PAGE'
    I_DYNDOC_ID = o_dd_doc
    IS_SUBTOTTXT_INFO =
    IP_SUBTOT_LINE =
    I_TABLE_INDEX =
    CHANGING
    C_SUBTOTTXT =
    CALL SCREEN 0101.
    *& Module STATUS_0101 OUTPUT
    text
    MODULE status_0101 OUTPUT.
    SET PF-STATUS 'Z9D_MENU1_ALV'.
    SET TITLEBAR 'xxx'.
    ENDMODULE. " STATUS_0101 OUTPUT
    *& Module USER_COMMAND_0101 INPUT
    text
    MODULE user_command_0101 INPUT.
    CASE ok_code_0101.
    WHEN 'BCK1'.
    LEAVE PROGRAM.
    ENDCASE.
    i have made the changes and bolded the changes in ur program. pls check .
    note: u can see the top of page only in print preview.

  • Field catalog for internal table in ALV

    In my program the internal table consists many fields from various tables and structure doesn't belong to a single data table.
    In order to get output in ALV grid following FM has been used
    REUSE_ALV_GRID_DISPLAY
    for field catalog the fields are defined specifically.
      l_fieldcat-fieldname  = 'VBELN'.
      l_fieldcat-outputlen  = 10.
      l_fieldcat-seltext_l  = 'Billing doc'.
      l_fieldcat-no_zero = 'X'.
      l_fieldcat-hotspot = 'X'.
      append l_fieldcat to p_fieldtab.
    ..............and so on for all the fields.
    Just wanted to know is there any other method to display all the fields of this internal table automatically so each field is not specified specifically.
    anya

    Hi
    Try this instead:
    *& Form  create_fieldcatalog
    * Create a field catalogue from any internal table
    *      -->PT_TABLE     Internal table
    *      -->PT_FIELDCAT  Field Catalogue
    FORM  create_fieldcatalog
           USING     pt_table     TYPE ANY TABLE
           CHANGING  pt_fieldcat  TYPE lvc_t_fcat.
      DATA:
        lr_tabdescr TYPE REF TO cl_abap_structdescr
      , lr_data     TYPE REF TO data
      , lt_dfies    TYPE ddfields
      , ls_dfies    TYPE dfies
      , ls_fieldcat TYPE lvc_s_fcat
      CLEAR pt_fieldcat.
      CREATE DATA lr_data LIKE LINE OF pt_table.
      lr_tabdescr ?= cl_abap_structdescr=>describe_by_data_ref( lr_data ).
      lt_dfies = cl_salv_data_descr=>read_structdescr( lr_tabdescr ).
      LOOP AT lt_dfies
      INTO    ls_dfies.
        CLEAR ls_fieldcat.
        MOVE-CORRESPONDING ls_dfies TO ls_fieldcat.
        APPEND ls_fieldcat TO pt_fieldcat.
      ENDLOOP.
    ENDFORM.                    "create_fieldcatalog

  • Problem in ALV Tree

    Hello Friends,
    I am using ALV Tree to display a report.
    In this report for a particular input.2 nodes are cerated.
    On clicking on the 2nd node the details for the same are shown .
    However on clicking the 1st node , the system automatically logs off closing all the SAP sessions and even the SAP Logon pad.
    Suppose i am on executing the program on development server,even the sessions of test server are closed.
    Can anyone please help me in this.....
    its a bit urgent.
    i am attaching my code for reference.
    REPORT  ZPRPROUTOPERATIONS1                     .
    tables : mapl,t001w,zroutpromast.
    TYPE-POOLS: slis,kkblo.
    include <icon>.
    data : it_zrouteledtl like zrouteledtl occurs 0 with header line.
    data : it_zeledtl type zeledtl occurs 0 with header line.
    data : conv_sec(5) type c value '0.036'.
    types : begin of it_output2,
           Srno like zrouteledtl-srno,
           srno1 type p decimals 8,
           subgid like zrouteledtl-subgid,
           subopn like zrouteledtl-subopn,
           movetype type zeledtl-movetype,
           DESC type zeledtl-description,
           Add_desc like zrouteledtl-DESCRIPTION,
           Freq type p decimals 2,
           div_freq type p decimals 2,
           men type p decimals 2,
           offline(3),
           CT type p decimals 2,
           CW type p decimals 2,
           Ideal_ct type p decimals 2,
           ideal_cw type p decimals 2,
           A_trg type p decimals 2,
           b_Trg type p decimals 2,
           g_Trg type p decimals 2,
           p_Trg type p decimals 2,
           m_Trg type p decimals 2,
           t_Trg type p decimals 2,
           i_Trg type p decimals 2,
           Autocycle type p decimals 2,
           online_time type p decimals 2,
           offline_time type p decimals 2,
           online_p_time type p decimals 2,
           offline_p_time type p decimals 2,
           end of it_output2.
    *types : begin of it_output3,
          Srno like zrouteledtl-srno,
          mop_gid like zroutdetails-MOP_GID,
          MOp_opn like zroutdetails-MOP_OPN,
          sub_gid like zpromast-subgid,
          subopn like zpromast-subopn,
          DESC like zpromast-description,
          Add_desc like zroutdetails-ADD_INFO,
          Freq type p decimals 2,
          batch type p decimals 2,
          mix type p decimals 2,
          offline(3),
          CT type p decimals 2,
          CW type p decimals 2,
          Ideal_ct type p decimals 2,
          ideal_cw type p decimals 2,
          A_trg type p decimals 2,
          b_Trg type p decimals 2,
          g_Trg type p decimals 2,
          p_Trg type p decimals 2,
          m_Trg type p decimals 2,
          t_Trg type p decimals 2,
          i_Trg type p decimals 2,
          Autocycle type p decimals 2,
          online_time type p decimals 2,
          offline_time type p decimals 2,
          online_p_time type p decimals 2,
          offline_p_time type p decimals 2,
          end of it_output3.
    data : it_output type it_output2 occurs 0 with header line,
           it_output1 type it_output2 occurs 0 with header line,
           it_emptytab type standard table of it_output2 INITIAL SIZE 0.
    data : a_trg type f,b_trg type f,g_trg type f,p_trg type f,m_trg type f,t_trg type f,i_trg type f,
           autocycle type f,online_p_time type f,offline_p_time type f.
    data : ch1 type c,ch2.
    DATA: ok_code like sy-ucomm,           "OK-Code
          save_ok like sy-ucomm.
    data : ct_fieldcat type KKBLO_T_FIELDCAT.
    *ALV data declarations
    DATA: fieldcatalog  TYPE lvc_t_fcat WITH HEADER LINE.
    DATA: gd_fieldcat   TYPE lvc_t_fcat,
          gd_tab_group  TYPE slis_t_sp_group_alv,
          gd_layout     TYPE slis_layout_alv.
    *ALVtree data declarations
    CLASS cl_gui_column_tree DEFINITION LOAD.
    CLASS cl_gui_cfw DEFINITION LOAD.
    DATA: gd_tree             TYPE REF TO cl_gui_alv_tree,
          gd_hierarchy_header TYPE treev_hhdr,
          gd_report_title     TYPE slis_t_listheader,
          gd_logo             TYPE sdydo_value,
          gd_variant          TYPE disvariant.
    *Create container for alv-tree
    DATA: gd_tree_container_name(30) TYPE c,
          gd_custom_container        TYPE REF TO cl_gui_custom_container.
    *data mr_toolbar type ref to cl_gui_toolbar.  "Add to top include
    selection-screen begin of block start with frame title text-001.
    select-options: p_gid for zroutpromast-mop_gid obligatory no-extension no intervals,
                    p_opn for zroutpromast-mop_opn obligatory no-extension no intervals,
                    p_werks for t001w-werks obligatory no-extension no intervals.
    selection-screen end of block start.
    *selection-screen begin of block detail with frame title text-002.
    *parameter : radio1 radiobutton group dept default 'X',
               radio2 radiobutton group dept.
    *selection-screen end of block detail.
    include ZTEST_TOOLBAR_EVENT_RECEIVER.
    start-of-selection.
    ALVtree setup data
      PERFORM data_retrieval.
      PERFORM build_fieldcatalog.
      PERFORM build_layout.
      PERFORM build_hierarchy_header CHANGING gd_hierarchy_header.
      PERFORM build_report_title USING gd_report_title gd_logo.
      PERFORM build_variant.
    Display ALVtree report
      call screen 100.
    *&      Form  data_retrieval
          text
    -->  p1        text
    <--  p2        text
    FORM data_retrieval .
      select * from zrouteledtl into table it_zrouteledtl where mop_gid in p_gid and
                                                                  mop_opn in p_opn
                                                                  and werks in p_werks.
      if sy-subrc ne 0.
      message i001(0) with 'No Records Found'.
      leave program.
      endif.
      select * from zeledtl into table it_zeledtl for all entries in it_zrouteledtl
                                                          where subgid = it_zrouteledtl-subgid
                                                          and subopn = it_zrouteledtl-subopn
                                                          and werks = it_zrouteledtl-werks.
      loop at it_zeledtl.
        it_output1-srno = it_zeledtl-srno.
        it_output1-srno1 = it_zeledtl-srno.
        it_output1-subgid = it_zeledtl-subgid.
        it_output1-subopn = it_zeledtl-subopn.
        it_output1-movetype = it_zeledtl-movetype.
        it_output1-desc = it_zeledtl-DESCRIPTION.
        it_output1-freq = it_zeledtl-frequency.
        it_output1-div_freq = it_zeledtl-div_freq.
        it_output1-men = it_zeledtl-men.
        it_output1-offline = it_zeledtl-offline1.
        it_output1-ct = it_zeledtl-cy_time * conv_sec.
        it_output1-cw = it_zeledtl-wc_time * conv_sec.
        it_output1-ideal_ct = it_zeledtl-cy_trg_time * conv_sec.
        it_output1-ideal_cw = it_zeledtl-wc_trg_time * conv_sec.
        if it_zeledtl-men = 0.
        it_output-autocycle = it_zeledtl-cy_time * conv_sec.
        endif.
        if it_zeledtl-men ne 0 and it_zeledtl-offline1 eq 'NO'
              and ( it_zeledtl-movetype eq 'A' or it_zeledtl-movetype eq 'C' ).
        case it_zeledtl-movetype.
              when 'A'.
                if it_zeledtl-SIM_AUTO = 'TRUE'.
                  ch2 = 0.
                else.
                  ch2 = 1.
                endif.
                it_output-online_p_time = ( it_zeledtl-autocycle * ch2 * conv_sec ) * it_zeledtl-frequency / it_zeledtl-div_freq.
              when 'C'.
                if it_zeledtl-sim5 = 'TRUE'.
                  ch1 = 0.
                else.
                  ch1 = 1.
                endif.
                it_output-online_p_time =  ( it_zeledtl-index5 * it_zeledtl-par_freq5 * ch1
    it_zeledtl-frequency * 10 ) / it_zeledtl-div_freq  .
            endcase.
          elseif it_zeledtl-men ne 0 and it_zeledtl-offline1 eq 'YES'
                  and ( it_zeledtl-movetype eq 'A' or it_zeledtl-movetype eq 'C' ).
            case it_zeledtl-movetype.
              when 'A'.
                if it_zeledtl-SIM_AUTO = 'TRUE'.
                  ch2 = 0.
                else.
                  ch2 = 1.
                endif.
                it_output1-offline_p_time = ( it_zeledtl-autocycle * ch2 * conv_sec ) * it_zeledtl-frequency / it_zeledtl-div_freq.
              when 'C'.
                if it_zeledtl-sim5 = 'TRUE'.
                  ch1 = 0.
                else.
                  ch1 = 1.
                endif.
                it_output-offline_p_time =  ( it_zeledtl-index5 * it_zeledtl-par_freq5 * ch1
    it_zeledtl-frequency * 10 ) / it_zeledtl-div_freq  .
            endcase.
          endif.
          it_output1-a_trg = it_zeledtl-TARGET_A * conv_sec.
          it_output1-b_trg = it_zeledtl-target_B * conv_sec.
          it_output1-g_trg = it_zeledtl-TARGET_G * conv_sec.
          it_output1-p_trg = it_zeledtl-TARGET_P * conv_sec.
          it_output1-M_trg = it_zeledtl-TARGET_M * conv_sec.
          it_output1-t_trg = it_zeledtl-TARGET_T * conv_sec.
          it_output1-i_trg = it_zeledtl-TARGET_I * conv_sec.
        append it_output1.
      endloop.
      sort it_output1 ascending by subgid subopn srno1.
      clear ch1.
      loop at it_zrouteledtl.
        move-corresponding it_zrouteledtl to it_output.
        select single description from zpromast into it_output-desc
                                      where subgid = it_zrouteledtl-subgid and
                                      subopn = it_zrouteledtl-subopn and
                                      werks in p_werks.
        it_output-add_desc = it_zrouteledtl-description.
        it_output-freq = it_zrouteledtl-frequency.
        it_output-div_freq = it_zrouteledtl-div_freq.
        it_output-men = it_zrouteledtl-men.
        it_output-ct = it_zrouteledtl-cy_time * conv_sec.
        it_output-cw = it_zrouteledtl-wc_time * conv_sec.
        it_output-ideal_ct = it_zrouteledtl-cy_trg_time * conv_sec.
        it_output-ideal_cw = it_zrouteledtl-wc_trg_time * conv_sec.
        if it_zrouteledtl-offline1 = '1'.
          it_output-offline = 'No'.
        else.
          it_output-offline = 'Yes'.
        endif.
        append it_output.
      endloop.
      loop at it_output.
        if it_output-offline = 'Yes'.
        ch1 = 0.
        else.
        ch1 = 1.
        endif.
        loop at it_output1 where subgid = it_output-subgid and
                                 subopn = it_output-subopn.
          a_trg = A_trg + it_output1-A_trg.
          b_Trg = b_Trg + it_output1-b_Trg.
          g_Trg = g_Trg + it_output1-g_Trg.
          p_Trg = p_Trg + it_output1-p_Trg.
          m_Trg = m_Trg + it_output1-m_Trg.
          t_Trg = t_Trg + it_output1-t_Trg.
          i_Trg = i_Trg + it_output1-i_Trg.
          autocycle = autocycle + it_output1-Autocycle.
          online_p_time = online_p_time + it_output1-online_p_time.
          offline_p_time = offline_p_time + it_output1-offline_p_time.
        endloop.
          it_output-autocycle = ( autocycle * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-a_trg = ( a_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-b_trg = ( b_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-g_trg = ( g_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-p_trg = ( p_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-m_trg = ( m_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-t_trg = ( t_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-i_trg = ( i_trg * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-online_time = ( it_output-ct - it_output-autocycle ) * ch1.
          it_output-offline_time = ( it_output-ct - it_output-cw ) + it_output-autocycle.
          it_output-online_p_time = ( online_p_time * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          it_output-offline_p_time = ( offline_p_time * ch1 * it_output-freq ) / it_output-div_freq / it_output-men.
          clear : a_trg,b_trg,g_trg,p_trg,m_trg,t_trg,i_trg,online_p_time,offline_p_time,ch1,ch2,it_zeledtl,
                  autocycle,online_p_time,offline_p_time,zroutpromast.
        modify it_output.
      endloop.
    ENDFORM.                    " data_retrieval
    *&      Form  build_fieldcatalog
          text
    -->  p1        text
    <--  p2        text
    FORM build_fieldcatalog .
    Please not there are a number of differences between the structure of
    ALVtree fieldcatalogs and ALVgrid fieldcatalogs.
    For example the field seltext_m is replace by scrtext_m in ALVtree.
      DATA: COL_POS TYPE I VALUE 0.
      fieldcatalog-fieldname   = 'SRNO'.
      fieldcatalog-SCRTEXT_L   = 'Sr No.'.
      fieldcatalog-SCRTEXT_m   = 'Sr No.'.
      fieldcatalog-SCRTEXT_s   = 'Sr No.'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'SUBGID'.           "Field name in itab
      fieldcatalog-SCRTEXT_L   = 'Sub Opn GID'.  "Column text
      fieldcatalog-SCRTEXT_m   = 'Sub Opn GID'.  "Column text
      fieldcatalog-SCRTEXT_s   = 'Sub Opn GID'.  "Column text
      fieldcatalog-col_pos     = COL_POS.     "Column position
      fieldcatalog-outputlen   = 15.                "Column width
      fieldcatalog-emphasize   = 'X'.               "Emphasize  (X or SPACE)
      fieldcatalog-key         = 'X'.               "Key Field? (X or SPACE)
    fieldcatalog-do_sum      = 'X'.              "Sum Column?
    fieldcatalog-no_zero     = 'X'.              "Don't display if zero
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'SUBOPN'.
      fieldcatalog-SCRTEXT_L   = 'Sub Opn'.
      fieldcatalog-SCRTEXT_m   = 'Sub Opn'.
      fieldcatalog-SCRTEXT_s   = 'Sub Opn'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-emphasize   = 'X'.               "Emphasize  (X or SPACE)
      fieldcatalog-key         = 'X'.               "Key Field? (X or SPACE)
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'MOVETYPE'.
      fieldcatalog-SCRTEXT_L   = 'Movetype'.
      fieldcatalog-SCRTEXT_m   = 'Movetype'.
      fieldcatalog-SCRTEXT_s   = 'Movetype'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'DESC'.
      fieldcatalog-SCRTEXT_L   = 'Description'.
      fieldcatalog-SCRTEXT_m   = 'Description'.
      fieldcatalog-SCRTEXT_s   = 'Description'.
      fieldcatalog-outputlen   = 600.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'ADD_DESC'.
      fieldcatalog-SCRTEXT_L   = 'Add. Description'.
      fieldcatalog-SCRTEXT_m   = 'Add. Description'.
      fieldcatalog-SCRTEXT_s   = 'Add. Description'.
      fieldcatalog-outputlen   = 100.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'FREQ'.
      fieldcatalog-SCRTEXT_L   = 'Frequency'.
      fieldcatalog-SCRTEXT_m   = 'Frequency'.
      fieldcatalog-SCRTEXT_s   = 'Frequency'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'DIV_FREQ'.
      fieldcatalog-SCRTEXT_L   = 'Div Freq'.
      fieldcatalog-SCRTEXT_m   = 'Div Freq'.
      fieldcatalog-SCRTEXT_s   = 'Div Freq'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'MEN'.
      fieldcatalog-SCRTEXT_L   = 'Men'.
      fieldcatalog-SCRTEXT_m   = 'Men'.
      fieldcatalog-SCRTEXT_s   = 'Men'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat..
      CLEAR  fieldcatalog.
    COL_POS = COL_POS + 1.
    fieldcatalog-fieldname   = 'BATCH'.
    fieldcatalog-SCRTEXT_L   = 'Batch/Div Freq'.
    fieldcatalog-SCRTEXT_m   = 'Batch/Div Freq'.
    fieldcatalog-SCRTEXT_s   = 'Batch/Div Freq'.
    fieldcatalog-outputlen   = 15.
    fieldcatalog-col_pos     = COL_POS.
    APPEND fieldcatalog TO gd_fieldcat.
    CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'OFFLINE'.
      fieldcatalog-SCRTEXT_L   = 'Offline'.
      fieldcatalog-SCRTEXT_m   = 'Offline'.
      fieldcatalog-SCRTEXT_s   = 'Offline'.
      fieldcatalog-outputlen   = 6.
      fieldcatalog-col_pos     = COL_POS.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'CT'.
      fieldcatalog-SCRTEXT_L   = 'Cycle Time'.
      fieldcatalog-SCRTEXT_m   = 'Cycle Time'.
      fieldcatalog-SCRTEXT_s   = 'Cycle Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'CW'.
      fieldcatalog-SCRTEXT_L   = 'Work Content'.
      fieldcatalog-SCRTEXT_m   = 'Work Content'.
      fieldcatalog-SCRTEXT_s   = 'Work Content'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'IDEAL_CT'.
      fieldcatalog-SCRTEXT_L   = 'Ideal CT'.
      fieldcatalog-SCRTEXT_m   = 'Ideal CT'.
      fieldcatalog-SCRTEXT_s   = 'Ideal CT'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'IDEAL_CW'.
      fieldcatalog-SCRTEXT_L   = 'Ideal CW'.
      fieldcatalog-SCRTEXT_m   = 'Ideal CW'.
      fieldcatalog-SCRTEXT_s   = 'Ideal CW'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'A_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target A'.
      fieldcatalog-SCRTEXT_m   = 'Target A'.
      fieldcatalog-SCRTEXT_s   = 'Target A'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'B_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target B'.
      fieldcatalog-SCRTEXT_m   = 'Target B'.
      fieldcatalog-SCRTEXT_s   = 'Target B'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'G_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target G'.
      fieldcatalog-SCRTEXT_m   = 'Target G'.
      fieldcatalog-SCRTEXT_s   = 'Target G'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'P_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target P'.
      fieldcatalog-SCRTEXT_m   = 'Target P'.
      fieldcatalog-SCRTEXT_s   = 'Target P'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'M_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target M'.
      fieldcatalog-SCRTEXT_m   = 'Target M'.
      fieldcatalog-SCRTEXT_s   = 'Target M'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'T_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target T'.
      fieldcatalog-SCRTEXT_m   = 'Target T'.
      fieldcatalog-SCRTEXT_s   = 'Target T'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'I_TRG'.
      fieldcatalog-SCRTEXT_L   = 'Target I'.
      fieldcatalog-SCRTEXT_m   = 'Target I'.
      fieldcatalog-SCRTEXT_s   = 'Target I'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'AUTOCYCLE'.
      fieldcatalog-SCRTEXT_L   = 'AutoCycle'.
      fieldcatalog-SCRTEXT_m   = 'AutoCycle'.
      fieldcatalog-SCRTEXT_s   = 'AutoCycle'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'ONLINE_TIME'.
      fieldcatalog-SCRTEXT_L   = 'Online Time'.
      fieldcatalog-SCRTEXT_m   = 'Online Time'.
      fieldcatalog-SCRTEXT_s   = 'Online Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'OFFLINE_TIME'.
      fieldcatalog-SCRTEXT_L   = 'Offline Time'.
      fieldcatalog-SCRTEXT_m   = 'Offline Time'.
      fieldcatalog-SCRTEXT_s   = 'Offline Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'ONLINE_P_TIME'.
      fieldcatalog-SCRTEXT_L   = 'Online Process Time'.
      fieldcatalog-SCRTEXT_m   = 'Online Process Time'.
      fieldcatalog-SCRTEXT_s   = 'Online Process Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
      COL_POS = COL_POS + 1.
      fieldcatalog-fieldname   = 'OFFLINE_P_TIME'.
      fieldcatalog-SCRTEXT_L   = 'Offline Process Time'.
      fieldcatalog-SCRTEXT_m   = 'Offline Process Time'.
      fieldcatalog-SCRTEXT_s   = 'Offline Process Time'.
      fieldcatalog-outputlen   = 15.
      fieldcatalog-col_pos     = COL_POS.
      fieldcatalog-do_sum      = 'X'.
      APPEND fieldcatalog TO gd_fieldcat.
      CLEAR  fieldcatalog.
    ENDFORM.                    " build_fieldcatalog
    *&      Form  build_layout
          text
    -->  p1        text
    <--  p2        text
    FORM build_layout .
      gd_layout-no_input          = 'X'.
      gd_layout-colwidth_optimize = 'X'.
      gd_layout-totals_text       = 'Totals'(201).
      gd_layout-totals_only        = 'X'.
    gd_layout-f2code            = 'DISP'.  "Sets fcode for when double
                                            "click(press f2)
      gd_layout-zebra             = 'X'.
    gd_layout-group_change_edit = 'X'.
    gd_layout-header_text       = 'helllllo'.
    ENDFORM.                    " build_layout
    *&      Form  build_hierarchy_header
          text
         <--P_GD_HIERARCHY_HEADER  text
    FORM build_hierarchy_header CHANGING
                                        p_hierarchy_header TYPE treev_hhdr.
      p_hierarchy_header-heading = 'Drill Down For Detail'(022).
      p_hierarchy_header-tooltip = 'This is the Hierarchy Header !'(014).
      p_hierarchy_header-width = 30.
      p_hierarchy_header-width_pix = ''.
    ENDFORM.                    " build_hierarchy_header
    *&      Form  build_report_title
          text
         -->P_GD_REPORT_TITLE  text
         -->P_GD_LOGO  text
    FORM build_report_title  using
                     pt_report_title  TYPE slis_t_listheader
                     pa_logo TYPE sdydo_value.
      DATA: ls_line TYPE slis_listheader,
            ld_date(10) TYPE c,
            string1 type string,string2 type string.
    List Heading Line(TYPE H)
    concatenate 'Material: ' p_matnr-low into string1 separated by space.
      CLEAR ls_line.
      ls_line-typ  = 'H'.
      ls_line-key  = 'MOST Operation'.
      concatenate p_gid-low p_opn-low into string2 separated by space.
      ls_line-info = string2.
      APPEND ls_line TO pt_report_title.
      ls_line-typ  = 'S'.
      ls_line-key  = 'Text'.
      select single DESCRIPTION from zroutpromast into string1 where mop_gid = p_gid-low
                                                               and mop_opn = p_opn-low
                                                               and werks = p_werks-low.
      ls_line-info = string1.
      APPEND ls_line TO pt_report_title.
    ls_line-typ  = 'S'.
    ls_line-key  = 'Routing Counter:'.
    ls_line-info = counter.
    APPEND ls_line TO pt_report_title.
    Status Line(TYPE S)
      ld_date(2) = sy-datum+6(2).
      ld_date+2(1) = '/'.
      ld_date3(2) = sy-datum4(2).
      ld_date+5(1) = '/'.
      ld_date+6(4) = sy-datum(4).
      ls_line-typ  = 'S'.
      ls_line-key  = 'Date'.
      ls_line-info = ld_date.
      APPEND ls_line TO pt_report_title.
    Action Line(TYPE A)
    CLEAR ls_line.
    ls_line-typ  = 'A'.
    CONCATENATE 'Report: ' sy-repid INTO ls_line-info  SEPARATED BY space.
    APPEND ls_line TO pt_report_title.
    ENDFORM.                    " build_report_title
    *&      Form  build_variant
          text
    -->  p1        text
    <--  p2        text
    FORM build_variant .
      gd_variant-report = sy-repid.
    ENDFORM.                    " build_variant
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'STATUS1'.
      SET TITLEBAR 'ZTITLE'.
      IF gd_tree IS INITIAL.
    Create ALVtree (must be performed within screen PBO module)
        PERFORM create_alvtree_container.
        PERFORM create_object_in_container.
        PERFORM create_empty_alvtree_control.
        perform change_toolbar.
        PERFORM create_alvtree_hierarchy.
      ENDIF.
      CALL METHOD cl_gui_cfw=>flush.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      case sy-ucomm.
        when 'EXIT' or 'BACK' or 'CANC'.
          call method gd_tree->free.
          leave program.
        when others.
          call method cl_gui_cfw=>dispatch.
      endcase.
      clear ok_code.
      call method cl_gui_cfw=>flush.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  create_alvtree_container
          text
    -->  p1        text
    <--  p2        text
    FORM create_alvtree_container .
      gd_tree_container_name = 'SCREEN_CONTAINER'.
      create object gd_custom_container
          exporting
                container_name = gd_tree_container_name
          exceptions
                cntl_error                  = 1
                cntl_system_error           = 2
                create_error                = 3
                lifetime_error              = 4
                lifetime_dynpro_dynpro_link = 5.
      if sy-subrc <> 0.
        message x208(00) with 'ERROR'.
      endif.
    ENDFORM.                    " create_alvtree_container
    *&      Form  create_object_in_container
          text
    -->  p1        text
    <--  p2        text
    FORM create_object_in_container .
      create object gd_tree
          exporting
              parent              = gd_custom_container
              node_selection_mode = cl_gui_column_tree=>node_sel_mode_single
              item_selection      = 'X'
              no_html_header      = ''
              no_toolbar          = ''
          exceptions
              cntl_error                   = 1
              cntl_system_error            = 2
              create_error                 = 3
              lifetime_error               = 4
              illegal_node_selection_mode  = 5
              failed                       = 6
              illegal_column_name          = 7.
      if sy-subrc <> 0.
        message x208(00) with 'ERROR'.
      endif.
    ENDFORM.                    " create_object_in_container
    *&      Form  create_empty_alvtree_control
          text
    -->  p1        text
    <--  p2        text
    FORM create_empty_alvtree_control .
      CLEAR: it_emptytab.
      REFRESH: it_emptytab.
      CALL METHOD gd_tree->set_table_for_first_display
         EXPORTING
                   is_hierarchy_header  = gd_hierarchy_header
                   it_list_commentary   = gd_report_title
                  i_logo               = gd_logo
                  i_background_id      = 'ALV_BACKGROUND'
                   i_save               = 'A'
                   is_variant            = gd_variant
         CHANGING
                   it_outtab            =  it_emptytab      "Must be empty
                   it_fieldcatalog      =  gd_fieldcat.
    ENDFORM.                    " create_empty_alvtree_control
    *&      Form  create_alvtree_hierarchy
          text
    -->  p1        text
    <--  p2        text
    FORM create_alvtree_hierarchy .
      data: ls_sflight type sflight,
              lt_sflight type sflight occurs 0.
      data: ld_mop_gid_key type lvc_nkey,
            ld_mop_opn_key type lvc_nkey.
      loop at it_output.
        perform add_ekko_node using      it_output
                                changing ld_mop_gid_key.
        loop at it_output1 where subgid eq it_output-subgid
                                 and subopn eq it_output-subopn.
          perform add_ekpo_line using      it_output1
                                           ld_mop_gid_key
                                  changing ld_mop_opn_key.
        endloop.
      endloop.
    calculate totals
      call method gd_tree->update_calculations.
    this method must be called to send the data to the frontend
      call method gd_tree->frontend_update.
    ENDFORM.                    " create_alvtree_hierarchy
    *&      Form  add_ekko_node
          text
         -->P_IT_OUTPUT  text
         -->P_2478   text
         <--P_LD_MOP_GID_KEY  text
    FORM add_ekko_node  USING  ps_output like it_output
                               VALUE(p_relate_key)
                        CHANGING p_node_key.
      data: ld_node_text type lvc_value,
             ls_sflight type sflight.
      data : text128(128).
    Set item-layout
      concatenate ps_output-subgid ps_output-subopn into text128 separated by space.
      data: lt_item_layout type lvc_t_layi,
            ls_item_layout type lvc_s_layi.
      ls_item_layout-t_image   = '@3P@'.
      ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
      ls_item_layout-style     = cl_gui_column_tree=>style_default.
      ld_node_text             = text128.
      append ls_item_layout to lt_item_layout.
    Add node
      call method gd_tree->add_node
        exporting
              i_relat_node_key = p_relate_key
              i_relationship   = cl_gui_column_tree=>relat_last_child
              i_node_text      = ld_node_text
              is_outtab_line   = ps_output
              it_item_layout   = lt_item_layout
           importing
              e_new_node_key = p_node_key.
    ENDFORM.                    " add_ekko_node
    *&      Form  add_ekpo_line
          text
         -->P_IT_OUTPUT1  text
         -->P_LD_MOP_GID_KEY  text
         <--P_LD_MOP_OPN_KEY  text
    FORM add_ekpo_line  USING    Ps_OUTPUT1 like it_output1
                                 value(p_relate_key)
                        CHANGING p_node_key.
    data: ld_node_text type lvc_value,
          ls_sflight type sflight.
    data : text128(128).
    concatenate ps_output1-srno ps_output1-movetype into text128 separated by space.
    Set item-layout
      data: lt_item_layout type lvc_t_layi,
            ls_item_layout type lvc_s_layi.
      ls_item_layout-t_image   = '@3P@'.
      ls_item_layout-fieldname = gd_tree->c_hierarchy_column_name.
      ls_item_layout-style     = cl_gui_column_tree=>style_default.
      ld_node_text             = text128.
      append ls_item_layout to lt_item_layout.
    Add node
      call method gd_tree->add_node
        exporting
              i_relat_node_key = p_relate_key
              i_relationship   = cl_gui_column_tree=>relat_last_child
              i_node_text      = ld_node_text
              is_outtab_line   = ps_output1
              it_item_layout   = lt_item_layout
           importing
              e_new_node_key = p_node_key.
    ENDFORM.                    " add_ekpo_line
    *&      Form  change_toolbar
          text
    -->  p1        text
    <--  p2        text
    FORM change_toolbar .
    get toolbar control
      call method gd_tree->get_toolbar_object
              importing
                  er_toolbar = mr_toolbar.
      check not mr_toolbar is initial.
    add seperator to toolbar
      call method mr_toolbar->add_button
              exporting
                  fcode     = ''
                  icon      = ''
                  butn_type = cntb_btype_sep
                  text      = ''
                  quickinfo = 'This is a Seperator'.         "#EC NOTEXT
    add Standard Button to toolbar (for Delete Subtree)
      call method mr_toolbar->add_button
              exporting
                  fcode     = 'EXPORT'           "Function code of button
                  icon      = '@49@'             "Icon ID (see )
                  butn_type = cntb_btype_button  "Button type
                  text      = ''                 "Button text
                  quickinfo = 'Download To Excel'.  "Quick info text
    add Dropdown Button to toolbar (for Insert Line)
    call method mr_toolbar->add_button
             exporting
                 fcode     = 'INSERT_LC'         "Function code of button
                 icon      = '@17@'              "Icon ID (see )
                 butn_type = cntb_btype_dropdown "Button type
                 text      = ''                  "Button text
                 quickinfo = 'Insert Line'.      "Quick info text
    set event-handler for toolbar-control
      data: toolbar_event_receiver type ref to lcl_toolbar_event_receiver.
      create object toolbar_event_receiver.
      set handler toolbar_event_receiver->on_function_selected
                                                          for mr_toolbar.
      set handler toolbar_event_receiver->on_toolbar_dropdown
                                                          for mr_toolbar.
    ENDFORM.                    " change_toolbar
    Edited by: Darshan Shah on Jan 2, 2008 1:31 PM

    Gui patch was not available on my pc

  • Here's how to do ALV (OO) with dynamic fcat, int table and editable data

    Hi everybody
    Here's a more useful approach to ALV grid with OO using dynamic table, data NOT from DDIC, dynamic FCAT and how to get changed lines from the grid when ENTER key is pressed.
    It's really not too dificult but I think this is more useful than the ever present SFLIGHT methods from the demos.
    This also defines a subclass of cl_gui_alv_grid so you can access the protected attributes / methods of that class.
    You don't need to add the class via SE24 -- done fron this ABAP.
    When you run it click Edit for the first time.
    After editing data press ENTER and the break point should bring you into the relevant method.
    Code developed on NW2004S trial version but also works on rel 6.40 on a "Real" system.
    The code should work without any changes on any system >=6.40.
    All you need to do is to create a blank screen 100 via SE51  with a custom container on it called CCONTAINER1.
    The rest of the code can just be uploaded into your system using the SE38 upload facility.
    When running the program click on the EDIT button to enable the edit functionality of the grid.
    Change your data and when you press ENTER you should get the break-point where you can see the original table and changed rows.
    This program is actually quite general as it covers Dynamic tables, building a dynamic fcat where your table fields are NOT in the DDIC, intercepting the ENTER key via using an event, and accessing the protected attributes of the cl_gui_alv_grid by defining a subclass of this class in the abap.
    I've seen various questions relating to all these functions but none in my view ever answers the questions in a simple manner. I hope this simple program will answer all these and show how using OO ALV is actually quite easy and people shouldn't be scared of using OO.
    Have fun and award points if useful.
    Cheers
    Jimbo.
    <b>PROGRAM zdynfieldcat.
    Simple test of dynamic ITAB with user defined (not ddic) fields
    Build dynamic fcat
    use ALV grid to display and edit.
    *When edit mode set to 1 toolbar gives possibility of adding and
    *deleting rows.
    *Define subclass of cl_gui_alv_grid so we can use protected attributes
    *and methods.
    Add event handler to intercept user entering data and pressing the
    *ENTER key.
    When enter key is pressed get actual value of NEW table (all rows)
    rather than just the changed data.
    *use new RTTI functionality to retrieve internal table structure
    *details.
    Create a blank screen 100  with a custom container called CCONTAINER1.
    James Hawthorne
    include <icon>.
    define  any old internal structure  NOT in DDIC
    types: begin of s_elements,
           anyfield1(20) type c,
           anyfield2(20) type c,
           anyfield3(20) type c,
           anyfield4(20) type c,
           anyfield5(11) type n,
           end of s_elements.
    types:  lt_rows  type lvc_t_roid.
    Note new RTTI functionality allows field detail retrieval
    at runtime for dynamic tables.
    data:   wa_element type s_elements ,
            wa_data type s_elements,
            c_index type sy-index,
            c_dec2 type s_elements-anyfield5,
            wa_it_fldcat type lvc_s_fcat,
            it_fldcat type lvc_t_fcat,
            lr_rtti_struc TYPE REF TO cl_abap_structdescr,    "RTTI
            lt_comp TYPE cl_abap_structdescr=>component_table,"RTTI
            ls_comp LIKE LINE OF lt_comp,                     "RTTI
            zog  like line of lr_rtti_struc->components,      "RTTI
            struct_grid_lset type lvc_s_layo,
            l_valid  type c,
            new_table type ref to data.
    field-symbols: <dyn_table> type standard table,
                   <actual_tab> type standard table,
                   <fs1> type ANY,
                   <FS2> TYPE TABLE.
    data: grid_container1 type ref to cl_gui_custom_container.
    class lcl_grid_event_receiver definition deferred.
    data: g_event_receiver type ref to lcl_grid_event_receiver.
    data: ls_modcell type LVC_S_MODI,
          stab type ref to data,
          sdog type  s_elements.      .
    class lcl_grid_event_receiver definition.
      public section.
        methods:
        handle_data_changed
             for event data_changed of cl_gui_alv_grid
                 importing er_data_changed,
           toolbar for event toolbar of cl_gui_alv_grid
                     importing e_object
                               e_interactive,
          user_command for event user_command of cl_gui_alv_grid
                     importing e_ucomm.
    endclass.
    *implementation of Grid event-handler class
    class lcl_grid_event_receiver implementation.
    method handle_data_changed.
    code whatever required after data entry.
    various possibilites here as you can get back Cell(s) changed
    columns or the entire updated table.
    Data validation is also possible here.
    perform check_data using er_data_changed.
    endmethod.
    Method for handling all creation/modification calls to the toolbar
      method toolbar.
        data : ls_toolbar type stb_button.
    Define Custom Button in the toolbar
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'EDIT' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Edit' to ls_toolbar-text.
        move icon_change_text to ls_toolbar-icon.
        move 'Click2Edit' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'UPDA' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Update' to ls_toolbar-text.
        move icon_system_save to ls_toolbar-icon.
        move 'Click2Update' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
        clear ls_toolbar.
        move 0 to ls_toolbar-butn_type.
        move 'EXIT' to ls_toolbar-function.
        move space to ls_toolbar-disabled.
        move 'Exit' to ls_toolbar-text.
        move icon_system_end to ls_toolbar-icon.
        move 'Click2Exit' to ls_toolbar-quickinfo.
        append ls_toolbar to e_object->mt_toolbar.
      endmethod.
      method user_command.
        case e_ucomm .
          when 'EDIT'.          "From Tool bar
            perform set_input.
             perform init_grid.
          when 'UPDA'.          "From Tool bar
            perform refresh_disp.
            perform update_table.
          when 'EXIT'.          "From Tool bar
            leave program.
        endcase.
      endmethod.
    endclass.
    class zcltest definition inheriting from  cl_gui_alv_grid.
    define this as a subclass so we can access the protected attributes
    of the superclass cl_gui_alv_grid
    public section.
    methods: constructor, disp_tab.
    endclass.
    need this now to instantiate object
    as we are using subclass rather than the main cl_gui_alv_grid.
    class zcltest implementation.
    METHOD constructor.
    CALL METHOD super->constructor
            exporting i_appl_events = 'X'
               i_parent = grid_container1.
    endmethod.
    method disp_tab.
    FIELD-SYMBOLS: <outtab> TYPE STANDARD TABLE.
    break-point 1.
    mt_outtab is the data table held as a protected attribute
    in class cl_gui_alv_grid.
    ASSIGN me->mt_outtab->* TO <outtab>.  "Original data
    do whatever you want with <outtab>
    contains data BEFORE changes each time.
    Note that NEW (Changed) table has been obtained already by
    call to form check_data USING P_ER_DATA_CHANGED
             TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
    Entered data is in table defined by <fs2>
    In this method you can compare original and changed data.
    Easier than messing around with individual cells.
    do what you want with data in <fs2>  validate / update / merge etc
    endmethod.
    endclass.
    data :
        ok_code like sy-ucomm,
        save_ok like sy-ucomm,
        i4 type int4,
    Container Object [grid_container]
    now created via method constructor
    in the subclass zcltest.
    Control Object [grid]
    grid1 type ref to zcltest,
    Event-Handler Object [grid_handler]
    grid_handler type ref to lcl_grid_event_receiver.
    start-of-selection.
    call screen 100.
    module status_0100 output.
    now display it as grid
    if grid_container1 is initial.
        create object grid_container1
            exporting
              container_name = 'CCONTAINER1'.
        create object grid1.
         break-point 1.
        create object grid_handler.
        set handler:
           grid_handler->user_command for grid1,
           grid_handler->toolbar for grid1,
           grid_handler->handle_data_changed for grid1.
    perform create_dynamic_fcat.
    perform create_dynamic_itab.
    perform populate_dynamic_itab.
    perform init_grid.
    perform register_enter_event.
    set off ready for input initially
    i4 = 0.
      call method grid1->set_ready_for_input
             exporting
               i_ready_for_input = i4.
    endif.
    endmodule.
    module user_command_0100 input.
    *PAI not needed in OO ALV anymore as User Commands are handled as events
    *in method user_command.
    *we can also get control if the Data entered and the ENTER is pressed by
    *raising an event.
    Control then returns to method handle_data_changed.
    endmodule.
    form create_dynamic_fcat.
    get structure of our user table for building field catalog
    Use the RTTI functionality
    lr_rtti_struc ?= cl_abap_structdescr=>describe_by_data( wa_data ).
    Build field catalog just use basic data here
    colour specific columns as well
    loop at lr_rtti_struc->components into zog.
    c_index = c_index + 1.
    clear wa_it_fldcat.
      wa_it_fldcat-fieldname = zog-name .
      wa_it_fldcat-datatype =  zog-type_kind.
      wa_it_fldcat-inttype =   zog-type_kind.
      wa_it_fldcat-intlen =    zog-length.
      wa_it_fldcat-decimals =  zog-decimals.
      wa_it_fldcat-lowercase = 'X'.
      if c_index eq 2.
      wa_it_fldcat-emphasize = 'C411'.
         endif.
        if c_index eq 3.
      wa_it_fldcat-emphasize = 'C511'.
       endif.
      append wa_it_fldcat to it_fldcat .
    endloop.
    endform.
    form create_dynamic_itab.
    Create dynamic internal table and assign to field sysmbol.
    Use dynamic field catalog just built.
    call method cl_alv_table_create=>create_dynamic_table
                 exporting
                    it_fieldcatalog = it_fldcat
                 importing
                    ep_table        = new_table.
    assign new_table->* to <dyn_table>.
    endform.
    form populate_dynamic_itab.
    load up a line of the dynamic table
    c_dec2 = c_dec2 + 11.
    wa_element-anyfield1 = 'Tabbies'.
    wa_element-anyfield2 = 'ger.shepards'.
    wa_element-anyfield3  = 'White mice'.
    wa_element-anyfield4 =  'Any old text'.
    wa_element-anyfield5 =  c_dec2.
    append  wa_element to <dyn_table>.
    endform.
    form check_data USING P_ER_DATA_CHANGED
               TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.
    Get altered data back
      ASSIGN   p_er_data_changed->mp_mod_rows TO <FS1>.
    stab =       p_er_data_changed->mp_mod_rows.
    ASSIGN STAB->* TO <FS2>.
    LOOP AT <FS2> INTO sdog.
    ALV grid display with altered data is now in <fs2>.
    do any extra processing you want here
    endloop.
    now display new table
    call method grid1->disp_tab.
    endform.
    form exit_program.
      call method grid_container1->free.
      call method cl_gui_cfw=>flush.
      leave program.
    endform.
    form refresh_disp.
      call method grid1->refresh_table_display.
    endform.
    form update_table.
    The dynamic table here is the changed table read from the grid
    after user has changed it
    Data can be saved to DB or whatever.
    loop at <dyn_table> into wa_element.
    do what you want with the data here
    endloop.
    switch off edit mode again for next function
    i4 = 0.
      call method grid1->set_ready_for_input
          exporting
              i_ready_for_input = i4.
    endform.
    form set_input.
    i4 = 1.
      call method grid1->set_ready_for_input
         exporting
           i_ready_for_input = i4.
    endform.
    form switch_input.
    if i4 = 1.
    i4 = 0.
    else.
    i4 = 1.
    endif.
      call method grid1->set_ready_for_input
         exporting
           i_ready_for_input = i4.
    endform.
    form init_grid.
    Enabling the grid to edit mode,
         struct_grid_lset-edit = 'X'. "To enable editing in ALV
         struct_grid_lset-grid_title  = 'Jimbos Test'.
         call method grid1->set_table_for_first_display
           exporting
             is_layout           = struct_grid_lset
           changing
             it_outtab             =  <dyn_table>
             it_fieldcatalog       =  it_fldcat.
    endform.
    form register_enter_event.
    call method grid1->register_edit_event
                   exporting
                      i_event_id = cl_gui_alv_grid=>mc_evt_enter.
    Instantiate the event or it won't work.
    create object g_event_receiver.
    set handler g_event_receiver->handle_data_changed for grid1.
    endform.</b>

    Hi there
    IE7 doesn't give me the add new page option and I get 404 error when trying to access the "How to contribute" section.
    I'll load up Firefox later (this browser usually works when IE7 doesn't always work properly).
    I'll copy the stuff to the wiki when I've got the browser sorted out.
    Cheers
    jimbp

  • Functionality of Checkbox in ALV Grid Report

    Hi Experts,
    I created a ALV grid report with the checkbox as my first coloum and other fields as shown below. Initially, my ALV report displays as below. It is working fine till here.
    checkbox       customer     material      quantity       UOM         Sales Order    Delivery
                           C1                  M1           1                  KG
                           C1                   M2           2                  KG
                            C2                   M1          1                   KG
                            C2                  M2           2                   KG
                           C3                   M1          1                   KG
                           C3                   M2          2                   KG
                           C3                   M3           3                 KG
                            C4                  M1           1                  KG
                           C5                   M5           1                  KG
    I have created a push button on application toolbar for creating sales order and delivery using bapi's. When I click on my pushbutton, as of now it creates the SO and delivery for the first customer C1 and updates my Internal table with the sales order number and delivery number. If I need to create sales order for the second customer I need to run my ALV report again and so on for 3rd, 4th and 5th customers. It is also working fine till here.
    checkbox       customer     material      quantity       UOM     Sales Order     Delivery
                           C1                  M1           1                  KG          SO1               DEL1
                           C1                   M2           2                  KG         SO1               DEL1
                            C2                   M1          1                   KG
                            C2                  M2           2                   KG
                           C3                   M1          1                   KG
                           C3                   M2          2                   KG
                           C3                   M3           3                 KG
                            C4                  M1           1                  KG
                           C5                   M5           1                  KG
    Need help on this:
    When I select the check boxes as shown below and when I click the push button to create SO and Delivery then my program should create sales order and delivery for all the checked ones as shown below. What is the condition do I need to put here for selecting the checkbox.
    checkbox       customer     material      quantity       UOM     Sales Order     Delivery
    X                      C1                  M1           1                  KG         SO1               DEL1
    X                     C1                   M2           2                  KG         SO1               DEL1
                            C2                   M1          1                   KG
                            C2                  M2           2                   KG
    X                     C3                   M1          1                   KG        SO3             DEL3
    X                     C3                   M2          2                   KG        SO3             DEL3
    X                     C3                   M3           3                 KG          SO3            DEL3
                            C4                  M1           1                  KG
    X                     C5                   M5           1                  KG          SO5            DEL5
    I would really appreciate if somebody could help me / guide me on this. I will also post my code if someone needs to understand what I am doing exactly.
    Thanks.

    You need to use OO ABAP
    Use Class the class  1)  CL_GUI_ALV_GRID, 2) CL_GUI_CUSTOM_CONTAINER
    Create Sceen and container on same screen.
    Check following COde it used for printing purpose.
    Using AFTER_USER_COMMAND  Event you will find Check box selected entries.
    Capture those in another internal Table and use it for SO Creation
    DATA:  O_GRID TYPE REF TO CL_GUI_ALV_GRID,
           O_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
           T_FCAT TYPE LVC_T_FCAT,
           CONTAINER(15) TYPE C VALUE 'ET_CONTAINER'.
          CLASS EVENT_CLASS DEFINITION
    CLASS EVENT_CLASS DEFINITION.
      PUBLIC SECTION.
        METHODS: BEFORE_COMMAND FOR EVENT AFTER_USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING E_UCOMM,
                 DOUBLE_CLICK_N  FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING E_ROW E_COLUMN,
                 TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING E_OBJECT.
    ENDCLASS.                    "EVENT_CLASS DEFINITION
          CLASS EVENT_CLASS IMPLEMENTATION
    CLASS EVENT_CLASS IMPLEMENTATION.
      METHOD BEFORE_COMMAND.
        IF E_UCOMM = 'PRINT'.
          CLEAR : W_FLAG.
          T_FINAL2 = T_FINAL.
          SORT T_FINAL2 BY COL_CHK .
          DELETE   T_FINAL2 WHERE COL_CHK = ' '.
          IF NOT T_FINAL2 IS INITIAL.
            LOOP AT T_FINAL2 INTO WA_FINAL.
              IF W_FLAG IS INITIAL.
      Does some of modification/s in control parameters
                W_CONTROL_PARAM-NO_OPEN   = 'X'.
                W_CONTROL_PARAM-NO_CLOSE  = 'X'.
                W_CONTROL_PARAM-PREVIEW   = 'X'.
                W_CONTROL_PARAM-NO_DIALOG = SPACE.
                W_OUTPUT_OPTIONS-TDNEWID = 'X'.
                W_OUTPUT_OPTIONS-TDIMMED = SPACE.
      Opens the smartform print-job
                CALL FUNCTION 'SSF_OPEN'
                  EXPORTING
                    OUTPUT_OPTIONS     = W_OUTPUT_OPTIONS
                    CONTROL_PARAMETERS = W_CONTROL_PARAM
                  EXCEPTIONS
                    FORMATTING_ERROR   = 1
                    INTERNAL_ERROR     = 2
                    SEND_ERROR         = 3
                    USER_CANCELED      = 4
                    OTHERS             = 5.
                IF SY-SUBRC EQ 0.
                  W_FLAG = 'X'.
                ELSE.
                 LEAVE LIST-PROCESSING.
                ENDIF.
              ENDIF.
              IF W_FLAG = 'X'.
                CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME'
                  EXPORTING
                    FORMNAME           = 'ZFORM_BIW_PRINT'
                  IMPORTING
                    FM_NAME            = LF_FM_NAME
                  EXCEPTIONS
                    NO_FORM            = 1
                    NO_FUNCTION_MODULE = 2
                    OTHERS             = 3.
                IF SY-SUBRC <> 0.
                ENDIF.
                IF SY-SUBRC = 0.
                  CALL FUNCTION LF_FM_NAME
                    EXPORTING
                      CONTROL_PARAMETERS = W_CONTROL_PARAM
                     V_VBELN            = WA_FINAL-VBELN
                      WA_FINAL           = WA_FINAL.
                   TABLES
                     T_FINAL            = T_FINAL.
                ELSE.
                  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
                          WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
                ENDIF.
              ENDIF.
            ENDLOOP.
           * Close the smartform print job
            IF W_FLAG EQ 'X'.
              CALL FUNCTION 'SSF_CLOSE'
                EXCEPTIONS
                  FORMATTING_ERROR = 1
                  INTERNAL_ERROR   = 2
                  SEND_ERROR       = 3
                  OTHERS           = 4.
            ENDIF.
          ENDIF.
        ENDIF.
      ENDMETHOD.                    "BEFORE_COMMAND

  • Doubt in calltransaction in ALV

    Hi, i have doubt in calltransction in alv..In my report am using ALV grid display to display purchase order number , material docu number ..If i click on purchasing docu number it has to call transaction ME23N for the purchase order number that i have clicked and if i click material document number it has to  call trainsaction MIGO for the corresponding material document number..Here i have done some coding plz correct me if iam wrong..
    *& Report  YCALLTRANSACTIONALV                                         *
    REPORT  YCALLTRANSACTIONALV                     .
    TYPE-POOLS: icon.
    TYPE-POOLS: slis.
    TABLES: vbak,vbap,vbep, makt,lips.
    DATA: BEGIN OF gt_vbak OCCURS 0,
    vbeln LIKE vbak-vbeln,
    audat LIKE vbak-audat,
    vdatu LIKE vbak-vdatu,
    kunnr LIKE vbak-kunnr,
    posnr LIKE vbap-posnr,
    matnr LIKE vbap-matnr,
    kwmeng LIKE vbap-kwmeng,
    END OF gt_vbak.
    DATA: BEGIN OF gt_vbep OCCURS 0,
    vbeln LIKE vbep-vbeln,
    wadat LIKE vbep-wadat,
    END OF gt_vbep.
    DATA: BEGIN OF gt_lips OCCURS 0,
    vbeln LIKE lips-vbeln,
    posnr LIKE lips-posnr,
    lfimg LIKE lips-lfimg,
    vgbel LIKE lips-vgbel,
    vgpos LIKE lips-vgpos,
    END OF gt_lips.
    DATA: BEGIN OF gt_makt OCCURS 0,
    matnr LIKE makt-matnr,
    maktx LIKE makt-maktx,
    END OF gt_makt.
    DATA: gv_tab TYPE slis_tabname VALUE 'GT_REPORT'.
    DATA: BEGIN OF gt_report OCCURS 0,
    vbeln LIKE vbak-vbeln,
    posnr LIKE vbep-posnr,
    matnr LIKE vbap-matnr,
    maktx LIKE makt-maktx,
    kwmeng LIKE vbap-kwmeng,
    vdatu LIKE vbak-vdatu,
    lfimg LIKE lips-lfimg,
    wadat LIKE vbep-wadat,
    vgbel LIKE lips-vgbel,
    icon TYPE icon-id,
    tabcolor TYPE lvc_t_scol,
    END OF gt_report.
    DATA: gt_fieldcat TYPE slis_t_fieldcat_ alv,
             gs_fieldcat TYPE slis_fieldcat_ alv,
                gs_layout TYPE slis_layout_ alv,
                gt_events TYPE slis_t_event,
                  gs_events TYPE slis_alv_event,
    repid LIKE sy-repid.
    DATA: gt_lines TYPE TABLE OF tline WITH HEADER LINE,
    gv_name LIKE thead-tdname,
    gv_fld(40),gv_ fval(50).
    DATA: BEGIN OF gt_outlines OCCURS 0,
    text TYPE tdline,
    END OF gt_outlines.
    SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-006.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: p_cust RADIOBUTTON GROUP rad1 USER-COMMAND ch DEFAULT 'X'.
    SELECTION-SCREEN COMMENT 5(20) text-001.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: p_date RADIOBUTTON GROUP rad1 .
    SELECTION-SCREEN COMMENT 5(10) text-002 .
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-005.
    SELECT-OPTIONS: s_sale FOR vbak-vbeln MODIF ID cus,
    s_cust FOR vbak-kunnr MODIF ID cus.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-005.
    SELECT-OPTIONS: s_sale1 FOR vbak-vbeln MODIF ID dat,
    s_dat FOR vbak-audat MODIF ID dat.
    SELECTION-SCREEN END OF BLOCK b2.
    SELECTION-SCREEN END OF BLOCK b3.
    SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-007.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: p_clas RADIOBUTTON GROUP rad2 ."USER-COMMAND ch DEFAULT'X'.
    SELECTION-SCREEN COMMENT 5(20) text-003.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN BEGIN OF LINE.
    PARAMETERS: p_alv RADIOBUTTON GROUP rad2 ."USER-COMMAND ch DEFAULT'X'.
    SELECTION-SCREEN COMMENT 5(20) text-004.
    SELECTION-SCREEN END OF LINE.
    SELECTION-SCREEN END OF BLOCK b4.
    AT SELECTION-SCREEN.
    CHECK sy-ucomm = 'CH'.
    AT SELECTION-SCREEN OUTPUT.
    IF p_cust = 'X'.
    LOOP AT SCREEN.
    IF screen-group1 = 'DAT'.
    screen-active = 0.
    ELSE.
    screen-active = 1.
    ENDIF.
    MODIFY SCREEN.
    ENDLOOP.
    ELSE.
    LOOP AT SCREEN.
    IF screen-group1 = 'CUS'.
    screen-active = 0.
    ELSE.
    screen-active = 1.
    ENDIF.
    MODIFY SCREEN.
    ENDLOOP.
    ENDIF.
    START-OF-SELECTION.
    IF p_cust = 'X' .
    CLEAR gt_vbak.
    REFRESH gt_vbak.
    SELECT avbeln aaudat avdatu akunnr bposnr bmatnr b~kwmeng
    INTO TABLE gt_vbak
    FROM vbak AS a INNER JOIN vbap AS b
    ON avbeln = bvbeln
    WHERE a~vbeln IN s_sale
    AND a~kunnr IN s_cust.
    ELSEIF p_date = 'X'.
    CLEAR gt_vbak.
    REFRESH gt_vbak.
    SELECT avbeln aaudat avdatu akunnr bposnr bmatnr b~kwmeng
    INTO TABLE gt_vbak
    FROM vbak AS a INNER JOIN vbap AS b
    ON avbeln = bvbeln
    WHERE a~vbeln IN s_sale1
    AND a~audat IN s_dat.
    ENDIF.
    PERFORM sel_data.
    IF p_alv = 'X'.
    PERFORM disp_data1.
    ELSE.
    PERFORM disp_data.
    ENDIF.
    AT LINE-SELECTION.
    GET CURSOR FIELD gv_fld .
    CASE gv_fld.
    WHEN 'ICON_DISPLAY_ TEXT'.
    PERFORM concate_text.
    CLEAR gv_name.
    CONCATENATE gt_report-vbeln gt_report-posnr INTO gv_name.
    PERFORM read_text.
    PERFORM write_text.
    PERFORM disp_text.
    WHEN 'GT_REPORT-VBELN' .
    SET PARAMETER ID 'AUN' FIELD gt_report-vbeln.
    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    ENDCASE.
    *& Form sel_data
    FORM sel_data .
    CLEAR gt_vbep.
    REFRESH gt_vbep.
    IF NOT gt_vbak[] IS INITIAL.
    SELECT vbeln wadat FROM vbep INTO TABLE gt_vbep
    FOR ALL ENTRIES IN gt_vbak
    WHERE vbeln = gt_vbak-vbeln.
    CLEAR gt_lips.
    REFRESH gt_lips.
    SELECT vbeln posnr lfimg vgbel vgpos FROM lips INTO TABLE gt_lips
    FOR ALL ENTRIES IN gt_vbak
    WHERE vgbel = gt_vbak-vbeln
    AND vgpos = gt_vbak-posnr.
    CLEAR gt_makt.
    REFRESH gt_makt.
    SELECT matnr maktx FROM makt INTO TABLE gt_makt
    FOR ALL ENTRIES IN gt_vbak
    WHERE matnr = gt_vbak-matnr.
    ENDIF.
    REFRESH gt_report.
    CLEAR gt_report.
    LOOP AT gt_vbak.
    gt_report-vbeln = gt_vbak-vbeln.
    gt_report-vdatu = gt_vbak-vdatu.
    gt_report-posnr = gt_vbak-posnr.
    gt_report-matnr = gt_vbak-matnr.
    gt_report-kwmeng = gt_vbak-kwmeng.
    CLEAR gt_vbep.
    READ TABLE gt_vbep WITH KEY vbeln = gt_vbak-vbeln.
    gt_report-wadat = gt_vbep-wadat.
    CLEAR gt_lips.
    READ TABLE gt_lips WITH KEY vgbel = gt_vbak-vbeln
    vgpos = gt_vbak-posnr.
    gt_report-lfimg = gt_lips-lfimg.
    gt_report-vgbel = gt_lips-vbeln.
    CLEAR gt_makt.
    READ TABLE gt_makt WITH KEY matnr = gt_vbak-matnr.
    gt_report-maktx = gt_makt-maktx.
    CLEAR gt_report-icon.
    PERFORM concate_text.
    CLEAR gv_name.
    CONCATENATE gt_report-vbeln gt_report-posnr INTO gv_name.
    PERFORM read_text.
    IF gt_lines[] IS NOT INITIAL.
    gt_report-icon = '@0P@'.
    ENDIF.
    APPEND gt_report.
    ENDLOOP.
    ENDFORM. " sel_data
    *& Form disp_data
    FORM disp_data .
    WRITE:/(8) 'orderno.',
    (8) 'lineno.',
    (11) 'mat.',
    (27) 'matdes.',
    (10) 'ord.qty',
    (12) 'req.del.',
    (10) 'del.qty',
    (10) 'gidate',
    (10) 'delno.'.
    ULINE.
    LOOP AT gt_report.
    WRITE:/(8) gt_report-vbeln COLOR 6 HOTSPOT,
    (8) gt_report-posnr ,
    (8) gt_report-matnr,
    (25) gt_report-maktx,
    (11) gt_report-kwmeng,
    (15) gt_report-vdatu,
    (7) gt_report-lfimg,
    (10) gt_report-wadat,
    (10) gt_report-vgbel.
    PERFORM concate_text.
    CLEAR gv_name.
    CONCATENATE gt_report-vbeln gt_report-posnr INTO gv_name.
    PERFORM read_text.
    IF gt_lines[] IS NOT INITIAL.
    WRITE:120 icon_display_ text AS ICON HOTSPOT.
    HIDE: gt_report-vbeln, gt_report- posnr.
    ENDIF.
    ENDLOOP.
    ENDFORM. " disp_data
    *& Form disp_data1
    FORM disp_data1 .
    DATA :
    ls_tabcolor TYPE lvc_s_scol.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'VBELN'.
    gs_fieldcat- hotspot = 'X'.
    gs_fieldcat- seltext_l = 'ORDERNO'.
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'POSNR'.
    gs_fieldcat- seltext_l = 'LINENO'.
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'MATNR'.
    gs_fieldcat- seltext_l = 'MATNO'.
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'MAKTX'.
    gs_fieldcat- seltext_l = 'MATDESCR'.
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'KWMENG'.
    gs_fieldcat- seltext_l = 'ORDERQTY'.
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'VDATU'.
    gs_fieldcat- seltext_l = 'REQ.DEL.DAT' .
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'LFIMG'.
    gs_fieldcat- seltext_l = 'QTY.DEL'.
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'WADAT'.
    gs_fieldcat- seltext_l = 'ISS.DATE'.
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'VGBEL'.
    gs_fieldcat- seltext_l = 'DOUC.NO'.
    APPEND gs_fieldcat TO gt_fieldcat.
    CLEAR gs_fieldcat.
    gs_fieldcat- tabname = gv_tab.
    gs_fieldcat- fieldname = 'ICON'.
    gs_fieldcat- seltext_l = 'TEXT'.
    gs_fieldcat- icon = 'X'.
    gs_fieldcat- hotspot = 'X'.
    APPEND gs_fieldcat TO gt_fieldcat.
    gs_layout-coltab_ fieldname = 'TABCOLOR'.
    gs_events-name = 'USER_COMMAND' .
    gs_events-form = 'VAL'.
    APPEND gs_events TO gt_events.
    LOOP AT gt_report.
    ls_tabcolor- fname = 'VBELN'.
    ls_tabcolor- color-col = 4.
    ls_tabcolor- color-int = 1.
    ls_tabcolor- color-inv = 0.
    INSERT ls_tabcolor INTO TABLE gt_report-tabcolor.
    MODIFY gt_report.
    ENDLOOP.
    CALL FUNCTION 'REUSE_ALV_GRID_ DISPLAY'
    EXPORTING
    i_callback_program = sy-repid
    is_layout = gs_layout
    it_fieldcat = gt_fieldcat
    it_events = gt_events
    TABLES
    t_outtab = gt_report.
    ENDFORM. " disp_data1
    *& Form READ_TEXT .
    FORM read_text .
    CLEAR gt_lines.
    REFRESH gt_lines.
    CALL FUNCTION 'READ_TEXT'
    EXPORTING
    id = '0002'
    language = sy-langu
    name = gv_name
    object = 'VBBP'
    TABLES
    lines = gt_lines
    EXCEPTIONS
    id = 1
    language = 2
    name = 3
    not_found = 4
    object = 5
    reference_check = 6
    wrong_access_ to_archive = 7
    OTHERS = 8.
    IF sy-subrc <> 0.
    ENDIF.
    ENDFORM. " READ_TEXT
    *& Form WRITE_TEXT.
    FORM write_text.
    REFRESH gt_outlines.
    CLEAR gt_outlines.
    CLEAR gt_lines.
    LOOP AT gt_lines .
    MOVE gt_lines-tdline TO gt_outlines- text .
    APPEND gt_outlines.
    ENDLOOP.
    CLEAR gt_outlines.
    ENDFORM. "WRITE_TEXT
    *& Form VAL .
    FORM val USING
    user_command LIKE sy-ucomm
    sel TYPE slis_selfield.
    IF sel-fieldname = 'VBELN'.
    SET PARAMETER ID 'AUN' FIELD gt_report-vbeln.
    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
    ENDIF.
    IF sel-fieldname = 'ICON'.
    CLEAR gt_report.
    READ TABLE gt_report INDEX sel-tabindex.
    perform concate_text.
    CLEAR gv_name.
    CONCATENATE gt_report-vbeln gt_report-posnr INTO gv_name.
    PERFORM read_text.
    PERFORM write_text.
    PERFORM disp_text1.
    ENDIF.
    ENDFORM. "val
    *& Form disp_text
    FORM disp_text .
    CALL FUNCTION 'POPUP_WITH_ TABLE_DISPLAY_ OK'
    EXPORTING
    endpos_col = 50
    endpos_row = 30
    startpos_col = 20
    startpos_row = 20
    titletext = 'TEXT'
    TABLES
    valuetab = gt_outlines.
    ENDFORM. " disp_text
    *& Form disp_text1
    FORM disp_text1 .
    DATA: lt_fieldcat TYPE slis_t_fieldcat_ alv,
    ls_fieldcat TYPE slis_fieldcat_ alv.
    ls_fieldcat- fieldname = 'TEXT'.
    ls_fieldcat- outputlen = 40.
    ls_fieldcat- tabname = gt_outlines.
    APPEND ls_fieldcat TO lt_fieldcat.
    CALL FUNCTION 'REUSE_ALV_POPUP_ TO_SELECT'
    EXPORTING
    i_title = 'TEXT'
    i_tabname = 'TLINE'
    it_fieldcat = lt_fieldcat
    i_callback_program = sy-repid
    TABLES
    t_outtab = gt_outlines.
    ENDFORM. " disp_text1
    *& Form concate_text
    FORM concate_text .
    CLEAR gv_name.
    CONCATENATE gt_report-vbeln gt_report-posnr INTO gv_name.
    PERFORM read_text.
    ENDFORM. " concate_text
    Thanks

    Hello skk
    Here is a sample report performing the required task using OO-means. I think you will agree that the OO-based approach is much simpler and easier to understand than the FM-based approach.
    The screen '0100' has the following flow logic without any dynpro elements:
    PROCESS BEFORE OUTPUT.
      MODULE STATUS_0100.
    PROCESS AFTER INPUT.
      MODULE USER_COMMAND_0100.
    *& Report  ZUS_SDN_ALVGRID_EVENTS
    REPORT  zus_sdn_alvgrid_events.
    DATA:
      gd_okcode        TYPE ui_func,
      gt_fcat          TYPE lvc_t_fcat,
      go_docking       TYPE REF TO cl_gui_docking_container,
      go_grid1         TYPE REF TO cl_gui_alv_grid.
    DATA:
      gt_knb1          TYPE STANDARD TABLE OF knb1.
    PARAMETERS:
      p_bukrs      TYPE bukrs  DEFAULT '1000'  OBLIGATORY.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
            IMPORTING
              e_row_id
              e_column_id
              es_row_no
              sender.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_hotspot_click.
    *   define local data
        DATA:
          ls_knb1     TYPE knb1,
          ls_col_id   TYPE lvc_s_col.
        READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row_id-index.
        CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
        CASE e_column_id-fieldname.
          WHEN 'KUNNR'.
            SET PARAMETER ID 'KUN' FIELD ls_knb1-kunnr.
            SET PARAMETER ID 'BUK' FIELD ls_knb1-bukrs.
            CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
          WHEN 'ERNAM'.
    *        SET PARAMETER ID 'USR' FIELD ls_knb1-ernam.
    *        NOTE: no parameter id available, yet simply show the priciple
            CALL TRANSACTION 'SU01' AND SKIP FIRST SCREEN.
          WHEN OTHERS.
    *       do nothing
        ENDCASE.
    *   Set active cell to field BUKRS otherwise the focus is still on
    *   field KUNNR which will always raise event HOTSPOT_CLICK
        ls_col_id-fieldname = 'BUKRS'.
        CALL METHOD go_grid1->set_current_cell_via_id
          EXPORTING
            is_row_id    = e_row_id
            is_column_id = ls_col_id.
      ENDMETHOD.                    "handle_hotspot_click
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
      SELECT        * FROM  knb1 INTO TABLE gt_knb1
             WHERE  bukrs  = p_bukrs.
    * Create docking container
      CREATE OBJECT go_docking
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          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.
    * Create ALV grid
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent          = go_docking
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Set event handler
      SET HANDLER:
        lcl_eventhandler=>handle_hotspot_click FOR go_grid1.
    * Build fieldcatalog and set hotspot for field KUNNR
      PERFORM build_fieldcatalog_knb1.
    * Display data
      CALL METHOD go_grid1->set_table_for_first_display
        CHANGING
          it_outtab       = gt_knb1
          it_fieldcatalog = gt_fcat
        EXCEPTIONS
          OTHERS          = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Link the docking container to the target dynpro
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * ok-code field = GD_OKCODE
      CALL SCREEN '0100'.
    END-OF-SELECTION.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE gd_okcode.
        WHEN 'BACK' OR
             'END'  OR
             'CANC'.
          SET SCREEN 0. LEAVE SCREEN.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  BUILD_FIELDCATALOG_KNB1
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_fieldcatalog_knb1 .
    * define local data
      DATA:
        ls_fcat        TYPE lvc_s_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
    *     I_BUFFER_ACTIVE              =
          i_structure_name             = 'KNB1'
    *     I_CLIENT_NEVER_DISPLAY       = 'X'
    *     I_BYPASSING_BUFFER           =
    *     I_INTERNAL_TABNAME           =
        CHANGING
          ct_fieldcat                  = gt_fcat
        EXCEPTIONS
          inconsistent_interface       = 1
          program_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.
      ENDIF.
      LOOP AT gt_fcat INTO ls_fcat
              WHERE ( fieldname = 'KUNNR'  OR
                      fieldname = 'ERNAM' ).
        ls_fcat-hotspot = abap_true.
        MODIFY gt_fcat FROM ls_fcat.
      ENDLOOP.
    ENDFORM.                    " BUILD_FIELDCATALOG_KNB1
    Regards
      Uwe

Maybe you are looking for

  • ZIP attachments in PDF file

    How can ZIP files be opened from a PDF file using Preview. First, how can you see attachments within Preview, and then, how can it be opened.

  • Macbook Lid closed External Display

    1) I have the Core 2 Duo Macbook with an external samsung display, bluetooth mouse/keyboard. When I close the lid on the macbook, I get the max resolution which is cool. How ever, I cannot remove the powercord. As soon as I remove the power cord, the

  • Where can I get an iMac G3 Restore Disk?

    I have an iMac G3 with Mac OS 9.1. Where can I get restore disks for it?

  • To convert special characters to English characters.

    Is there any functional module to convert special characters(Latin) to English characters?

  • Wrong payment term during invoice creation

    Hi All, when i created sales order with one line item then it is creating two entries in VBKD table with POSNR = '0000' with payment term ZTERM = 'ZI15'  and POSNR = '1000'  with payment term ZTERM = 'Z223',  but problem is that when going to create