Handle variants in ALV.

Hi,
         I am creating an interactive ALV lists.The basic list has default variant.
when I dbl click contract in basic ALV the second ALV display the details.
Both ALVs r created using REUSE_ALV_GRID_DISPLAY.
in first FM I gave like
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_interface_check       = ' '
            i_buffer_active         = ' '
            i_callback_program      = g_repid
            i_callback_user_command = 'DO_MESSAGE'  "form
            i_grid_title            = l_header
            is_layout               = layt
            it_fieldcat             = tcat
            i_save                  = 'X'
       TABLES
            t_outtab                = itab
       EXCEPTIONS
            program_error           = 1
            OTHERS                  = 2.
  CHECK NOT sy-subrc IS INITIAL.
Then the second ALV FM
    fieldcat:
      1 'VBELN'    'CHAR'  10 'CONTRACT'(089)       ''    '' '',
      2 'BELNR'    'CHAR'  10 'DOCUMENT NUMBER'(090) 'X'   '' '',
      3 'BLDAT'    'DATS'  10 'DOC.DATE'(091)       ' '   '' '',
      8 'L_WTGBTR' 'CURR'   15 'AMOUNT'(092)         ' '   'R' 'X',
      5 'KEY'      'NUMC'  15 'KEY'(093)            ' '   '' '',
      6 'LTEXT'    'CHAR'  28 'DESCRIPTION'(094)    ' '   '' '',
      7 'CTGY'     'CHAR'   4 'CTGY'(095)           ' '   '' ''.
  ENDIF.
  gw_sort-fieldname = 'VBELN'.
  gw_sort-up        = 'X'.
  gw_sort-spos      = 1.
  gw_sort-subtot    = 'X'.
  APPEND gw_sort TO gt_sort.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
       EXPORTING
            i_buffer_active         = ' '
            i_callback_program      = pgm
            i_callback_user_command = 'DISP_ITEM'
            is_layout               = gt_layout
            it_fieldcat             = gt_fieldcat
            it_sort                 = gt_sort
       TABLES
            t_outtab                = gt_covp
       EXCEPTIONS
            program_error           = 1
            OTHERS                  = 2.
when I pass I_SAVE = 'A' or 'U' or 'X' then the result will be displayed with
single field.the other fields r hidden.That single field is displayed with length of 111ch.but its actual size is 10.
without this its working fine.but I can't enable variants save button in second ALV.
how to enable it.
Regards,
bala

The problem is with the IS_VARIANT parameter. You must be passing the same values / no values to both the list.
You should be using this parameter and differentiate between these list by passing different values to the HANDLE field for the different lists. Then you will have separate variants for each of the list.
The value could be anything, as simple as FIRST and SECOND.
Regards,
Ravi
Note - Please mark all the helpful answers

Similar Messages

  • DB Table for Layout Variant in ALV report

    Please help me by providing the table name which will get an entry when we save Layout Variant in ALV(OO ALV grid) output.

    Hi,
    I have seen the table LTDX which is giving me the Variant names for a particular program. Hope this will help you.
    Database table is LTDX
    Database view is V_LTDX.
    Regards,
    Venaktesh

  • Variant in ALV selection screen

    Hi friends,
         How to protect a variant in ALV selection screen from changing or deleting by other users.
    Thanks,
    Rajesh

    Rajesh,
    You still need someone to be able to change the variant, right? That is what exactly PROTECT VARIANT does.
    If you select the field Protect variant, the variant can only be changed by the person who created it or last changed it.                         
    Regards,
    Ravi
    Note :Please mark the helpful answers  and close the thread if the quesiton is answered

  • Variant in ALV Reports

    hello all
    can anybody tell how to use variant in ALV Reports

    Look at the following example.
    report z_rock_ALV_example.
        * D-A-T-A D-E-C-L-A-R-A-T-I-O-N-S *
    tables: sflight.
              o
                    +
                          # TYPE-POOLS Definition
    **Includes the types and constants of a type group. Since the types and
    *constants specified in a type group have global validity, you cannot
    *use the statement within a FORM or FUNCTION.
    type-pools: slis.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
              o
                    +
                          # ALV variables
                    +
                                      o Field Catalog structure
    data: ls_fieldcat type slis_fieldcat_alv, "Field Catalog list
              o
                    +
                                * Field Catalog table
    gt_fieldcat type slis_t_fieldcat_alv, "Field Catalog
              o
                    +
                                * Layout ( How you would like to see the output )
    gs_layout type slis_layout_alv, "List Layout
              o
                    +
                          # Report name
    g_repid like sy-repid,
    g_save(1) type c,
    g_exit(1) type c,
    g_variant like disvariant,
    gx_variant like disvariant.
              o
                    +
                          # Flight Info Internal table
    data: lt_sflight like sflight occurs 0 with header line.
        * C-O-N-S-T-A-N-T-S *
        * S-E-L-E-C-T-I-O-N S-C-R-E-E-N *
    selection-screen begin of block a with frame title text-100.
    select-options: s_carrid for sflight-carrid,
    s_connid for sflight-connid,
    s_fldate for sflight-fldate default sy-datum.
    selection-screen end of block a .
        * I-N-I-T-I-A-L-I-Z-A-T-I-O-N *
    initialization.
    g_repid = sy-repid.
              o
                    +
                          # Fill ALV field catalog
    perform initialize_fieldcat using gt_fieldcat[].
              o
                    +
                                * Build Events
        * perform build_eventtab using gt_events[].
              o
                    +
                          # Read the default variant
    perform initialize_variant.
        * A-T S-E-L-E-C-T-I-O-N S-C-R-E-E-N *
    at selection-screen on value-request for p_vari.
              o
                    +
                          # Display all existing variants
    call function 'REUSE_ALV_VARIANT_F4'
    exporting
    is_variant = g_variant
    i_save = g_save
    importing
    e_exit = g_exit
    es_variant = gx_variant
    exceptions
    not_found = 2.
    if sy-subrc = 2.
    message id sy-msgid type 'S' number sy-msgno
    with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    else.
    if g_exit = space.
    p_vari = gx_variant-variant.
    endif.
    endif.
        * S-T-A-R-T O-F S-E-L-E-C-T-I-O-N *
    start-of-selection.
              o
                    +
                          # Read Flight information.
    perform read_flight_info.
              o
                    +
                          # Fill ALV field catalog and display report.
    if not lt_sflight[] is initial.
    perform dislay_alv_report.
    endif.
    ======================================================================
        * FORMS / SUB ROUTINES *
    *======================================================================
    *& Form initialize_fieldcat
        * text
        * -->P_GT_FIELDCAT[] text
    form initialize_fieldcat using l_fieldcat type slis_t_fieldcat_alv.
    clear ls_fieldcat.
        * Air line
    ls_fieldcat-fieldname = 'CARRID'.
    ls_fieldcat-key = 'X'.
    ls_fieldcat-col_pos = 1.
    ls_fieldcat-seltext_s = 'Airline'.
    ls_fieldcat-seltext_l = 'Airline'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Flight Number
    ls_fieldcat-fieldname = 'CONNID'.
    ls_fieldcat-key = 'X'.
    ls_fieldcat-col_pos = 2.
    ls_fieldcat-seltext_s = 'Flight Number'.
    ls_fieldcat-seltext_l = 'Flight Number'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Flight date
    ls_fieldcat-fieldname = 'FLDATE'.
    ls_fieldcat-key = 'X'.
    ls_fieldcat-col_pos = 3.
    ls_fieldcat-seltext_s = 'Flight date'.
    ls_fieldcat-seltext_l = 'Flight date'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Airfare
    ls_fieldcat-fieldname = 'PRICE'.
    ls_fieldcat-col_pos = 4.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-seltext_s = 'Airfare'.
    ls_fieldcat-seltext_l = 'Airfare'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Local Currency
    ls_fieldcat-fieldname = 'CURRENCY'.
    ls_fieldcat-col_pos = 5.
    ls_fieldcat-seltext_s = 'Local Currency'.
    ls_fieldcat-seltext_l = 'Local Currency'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Plane Type
    ls_fieldcat-fieldname = 'PLANETYPE'.
    ls_fieldcat-col_pos = 6.
    ls_fieldcat-seltext_s = 'Plane type'.
    ls_fieldcat-seltext_l = 'Plane type'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Maximum capacity
    ls_fieldcat-fieldname = 'SEATSMAX'.
    ls_fieldcat-col_pos = 7.
    ls_fieldcat-seltext_s = 'Max. seats'.
    ls_fieldcat-seltext_l = 'Max. seats'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Occupied seats
    ls_fieldcat-fieldname = 'SEATSOCC'.
    ls_fieldcat-col_pos = 8.
    ls_fieldcat-seltext_s = 'Seats occupied'.
    ls_fieldcat-seltext_l = 'Seats occupied'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Total
    ls_fieldcat-fieldname = 'PAYMENTSUM'.
    ls_fieldcat-col_pos = 9.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-seltext_s = 'Total amount'.
    ls_fieldcat-seltext_l = 'Total amount'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Total
    ls_fieldcat-fieldname = 'PAYMENTSUM'.
    ls_fieldcat-col_pos = 9.
    ls_fieldcat-do_sum = 'X'.
    ls_fieldcat-seltext_s = 'Total amount'.
    ls_fieldcat-seltext_l = 'Total amount'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Max. Capacity, Buss. Class
    ls_fieldcat-fieldname = 'SEATSMAX_B'.
    ls_fieldcat-col_pos = 10.
    ls_fieldcat-seltext_s = 'Max.Buss.class cap.'.
    ls_fieldcat-seltext_l = 'Max.Buss.class cap.'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Max. occupancy, Buss. Class
    ls_fieldcat-fieldname = 'SEATSOCC_B'.
    ls_fieldcat-col_pos = 11.
    ls_fieldcat-seltext_s = 'Max.Bus.CL.occupied'.
    ls_fieldcat-seltext_l = 'Max.Bus.CL.occupied'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Max. Capacity, First. Class
    ls_fieldcat-fieldname = 'SEATSMAX_F'.
    ls_fieldcat-col_pos = 12.
    ls_fieldcat-seltext_s = 'Max.Buss.class cap.'.
    ls_fieldcat-seltext_l = 'Max.Buss.class cap.'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
        * Max. occupancy, First. Class
    ls_fieldcat-fieldname = 'SEATSOCC_F'.
    ls_fieldcat-col_pos = 13.
    ls_fieldcat-seltext_s = 'Max.Bus.CL.occupied'.
    ls_fieldcat-seltext_l = 'Max.Bus.CL.occupied'.
    append ls_fieldcat to l_fieldcat.
    clear ls_fieldcat.
    ENDFORM. " initialize_fieldcat
    *& Form read_flight_info
        * text
        * --> p1 text
        * <-- p2 text
    FORM read_flight_info .
    refresh lt_sflight.
    clear lt_sflight.
              o
                    +
                          # Read data from SFLIGHT table
    select *
    from SFLIGHT
    into table lt_sflight
    where carrid in s_carrid
    and connid in s_connid
    and fldate in s_fldate.
    if sy-subrc <> 0.
    message e208(00) with text-101.
    endif.
    ENDFORM. " read_flight_info
    *& Form dislay_alv_report
        * text
        * --> p1 text
        * <-- p2 text
    FORM dislay_alv_report .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
        * I_INTERFACE_CHECK = ' '
        * I_BYPASSING_BUFFER =
        * I_BUFFER_ACTIVE = ' '
    I_CALLBACK_PROGRAM = g_repid
        * I_CALLBACK_PF_STATUS_SET = ' '
        * I_CALLBACK_USER_COMMAND = ' '
    I_STRUCTURE_NAME = 'sflight'
        * IS_LAYOUT =
    IT_FIELDCAT = gt_fieldcat
        * IT_EXCLUDING =
        * IT_SPECIAL_GROUPS =
        * IT_SORT =
        * IT_FILTER =
        * IS_SEL_HIDE =
    I_DEFAULT = 'X'
    I_SAVE = 'A'
    IS_VARIANT = GX_VARIANT
        * IT_EVENTS =
        * IT_EVENT_EXIT =
        * IS_PRINT =
        * IS_REPREP_ID =
        * I_SCREEN_START_COLUMN = 0
        * I_SCREEN_START_LINE = 0
        * I_SCREEN_END_COLUMN = 0
        * I_SCREEN_END_LINE = 0
        * IMPORTING
        * E_EXIT_CAUSED_BY_CALLER =
        * ES_EXIT_CAUSED_BY_USER =
    TABLES
    T_OUTTAB = lt_sflight
    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. " dislay_alv_report
    *& Form initialize_variant
        * text
        * --> p1 text
        * <-- p2 text
    FORM initialize_variant .
    g_save = 'A'.
    clear g_variant.
    g_variant-report = g_repid.
    gx_variant = g_variant.
    call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
    exporting
    i_save = g_save
    changing
    cs_variant = gx_variant
    exceptions
    not_found = 2.
    if sy-subrc = 0.
    p_vari = gx_variant-variant.
    endif.
    ENDFORM. " initialize_variant
    Regards,
    Rock.

  • What is the button to change the variant in alv?

    Hi guys,
              can u tell me  is there any button to change the variant in alv?. what is tanscation varient in report , hw it will used.

    Hi
    The ALV Grid Control is a tool with which you can output non-hierarchical lists in a
    standardized format. The list data is displayed as a table on the screen.
    The ALV Grid Control offers a range of interactive standard list functions that users need
    frequently (find, sort, filter, calculate totals and subtotals, print, print preview, send list,
    export list (in different formats), and so on. These functions are implemented in the
    proxy object class. You as the programmer have the possibility to turn off functions not
    needed. In most cases the implementations of the standard functions provided by the
    control are sufficient. However, if required, you can adjust these implementations to
    meet application-specific needs.
    You can add self-defined functions to the toolbar, if necessary.
    The ALV Grid Control allows users to adjust the layout of lists to meet their individual
    requirements (for example, they can swap columns, hide columns, set filters for the
    data to be displayed, calculate totals, and so on). The settings (list customizing) made
    by a specific user are called a display variant. Display variants can be saved on a userspecific
    or on a global basis. If such display variants exist for a list, they can be offered
    to the user for selection. If a display variant is set as the default variant, the associated
    list is always displayed based on the settings of this variant.
    <b>2. REUSE_ALV_LIST_DISPLAY
    REUSE_ALV_GRID_DISPLAY
    REUSE_ALV_FIELDCATALOG_MERGE
    REUSE_ALV_COMMENTARY_WRITE</b>
    3. Use of Field Catalog is to determines the technical properties & add formating information of the column.
    6. all the definition of internal table, structure, constants are declared in a type-pool called SLIS.
    7.fieldcat-fieldname
    fieldcat-ref_fieldname
    fieldcat-tabname
    fieldcat-seltext_m
    5. Form user_command using r_ucomm like sy-ucomm rs_selfield type slis_selfield.
    Sap provides a set of ALV (ABAP LIST VIEWER) function modules which can be put into use to embellish the output of a report. This set of ALV functions is used to enhance the readability and functionality of any report output. Cases arise in sap when the output of a report contains columns extending more than 255 characters in length.
    In such cases, this set of ALV functions can help choose selected columns and arrange the different columns from a report output and also save different variants for report display. This is a very efficient tool for dynamically sorting and arranging the columns from a report output.
    The report output can contain up to 90 columns in the display with the wide array of display options.
    The commonly used ALV functions used for this purpose are;
    <b>1. REUSE_ALV_VARIANT_DEFAULT_GET
    2. REUSE_ALV_VARIANT_F4
    3. REUSE_ALV_VARIANT_EXISTENCE
    4. REUSE_ALV_EVENTS_GET
    5. REUSE_ALV_COMMENTARY_WRITE
    6. REUSE_ALV_FIELDCATALOG_MERGE
    7. REUSE_ALV_LIST_DISPLAY
    8. REUSE_ALV_GRID_DISPLAY
    9. REUSE_ALV_POPUP_TO_SELECT</b>
    Purpose of the above Functions are differ not all the functions are required in all the ALV Report.
    But either no.7 or No.8 is there in the Program.
    How you call this function in your report?
    After completion of all the data fetching from the database and append this data into an Internal Table. say I_ITAB.
    Then use follwing function module.
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
    I_CALLBACK_PROGRAM = 'Prog.name'
    I_STRUCTURE_NAME = 'I_ITAB'
    I_DEFAULT = 'X'
    I_SAVE = 'A'
    TABLES
    T_OUTTAB = I_ITAB.
    IF SY-SUBRC <> 0.
    WRITE: 'SY-SUBRC: ', SY-SUBRC .
    ENDIF.
    ENDFORM. " GET_FINAL_DATA
    The object F_IT_ALV has a field, the activity ACTVT, which can
    contain four permitted values: 01, 02, 03 and 70. Each of the
    activities 01, 02 and 70 controls the availability of particular
    functions (in the menu and the toolbar) of the ALV line item list:
    a) 01: "Settings -> Display variant -> Save..."
    b) 02: "Settings -> Display variant -> Current..." and
    "Settings -> Display variant -> Current header rows "
    c) 70: "Settings -> Display variant -> Administration..."
    Activity 03 corresponds to the minimum authorization, which is the
    most restricted one: The user can only select layouts which have
    been configured already. In particular, all of the other functions
    named above are inactive with activity 03.
    Now if you want to permit a user to change the column selection and
    the headers as well as to save the layout thus created, for example,
    but if you do not want to permit the user to administrate the
    layouts, you grant him or her the authorization for activities 01
    and 02.
    Check this link it will be mosty usefull for u
    http://www.sap-img.com/fu017.htm
    Reward all helpfull answers
    Regards
    Pavan

  • Hw to use a variant in alv report

    Hi,
    How to create, use and give f4 functionality to a variant in alv report.
    Give an example.
    Regards,
    Madhu

    <b>In this  report  i had used the  FM ->  REUSE_ALV_VARIANT_F4  for F4 help and the Varient on it  .</b>
    REPORT Z_INVENTORY.
    * List of the materials inventory.                                    *
    TYPE-POOLS: SLIS.
    TABLES:MARC, MARD, VBAP, LIPS, EKPO, VBFA, EKBE, MARM, VBBE, MARA, MBEW.
    SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: S_WERKS FOR MARC-WERKS, " Plant
                    S_MATNR FOR MARC-MATNR, " Material
                    S_MTART FOR MARA-MTART. " Material Type
    SELECTION-SCREEN END OF BLOCK SEL.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT. " ALV Variant
    CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
    DATA: BEGIN OF INV OCCURS 100,
            WERKS LIKE MARD-WERKS, " Plant
            MATNR LIKE MARD-MATNR, " Material
            MTART LIKE MARA-MTART, " Material Type
            STPRS LIKE MBEW-STPRS, " Standard Price
            AVAIL LIKE MARD-LABST, " Available
            LABST LIKE MARD-LABST, " Unrestricted use
            INSME LIKE MARD-INSME, " Quality Inspection
            RETME LIKE MARD-RETME, " Returns
            TRANS LIKE MARC-UMLMC, " Stock in transit (calculated)
            UMLMC LIKE MARC-UMLMC, " Stock Transfer (plant)
            UMLME LIKE MARD-UMLME, " Transfer (SLoc)
            WESBS LIKE EKBE-WESBS, " GR Blocked Stock
            TRAME LIKE MARC-TRAME, " Stock in transit
            SPEME LIKE MARD-SPEME, " Blocked
            KWMENG LIKE VBAP-KWMENG, " Sales orders
            LFIMG LIKE LIPS-LFIMG, " Scheduled for Delivery
            MENGE LIKE EKPO-MENGE, " Open Purch. Orders
            VALUE LIKE MBEW-SALK3, " Stock Value (Calculated)
            MEINS LIKE MARA-MEINS, " Unit of measure
          END OF INV.
    DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
          HEADING  TYPE SLIS_T_LISTHEADER,
          LAYOUT   TYPE SLIS_LAYOUT_ALV,
          EVENTS   TYPE SLIS_T_EVENT,
          REPNAME  LIKE SY-REPID,
          F2CODE   LIKE SY-UCOMM VALUE  '&ETA',
          G_SAVE(1) TYPE C,
          G_EXIT(1) TYPE C,
          G_VARIANT LIKE DISVARIANT,
          GX_VARIANT LIKE DISVARIANT.
    INITIALIZATION.
      REPNAME = SY-REPID.
      PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
      PERFORM BUILD_EVENTTAB USING EVENTS[].
      PERFORM BUILD_COMMENT USING HEADING[].
      PERFORM INITIALIZE_VARIANT.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
      PERFORM F4_FOR_VARIANT.
    AT SELECTION-SCREEN.
      PERFORM PAI_OF_SELECTION_SCREEN.
    START-OF-SELECTION.
      PERFORM GET_MARD.
      PERFORM GET_UNIT_OF_MEASURE.
      PERFORM GET_MARC.
      PERFORM GET_EKPO.
      PERFORM GET_LIPS.
      PERFORM GET_VBAP.
      PERFORM GET_OPEN.
      PERFORM GET_PRICE.
    END-OF-SELECTION.
      PERFORM BUILD_LAYOUT USING LAYOUT.
      PERFORM WRITE_OUTPUT.
    *&      Form  INITIALIZE_FIELDCAT
    *       text
    *      -->P_FIELDTAB[]  text                                           *
    FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
      DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    * fixed columns (obligatory)
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME    = 'INV'.
      L_FIELDCAT-FIX_COLUMN = 'X'.
      L_FIELDCAT-NO_OUT     = 'O'.
      L_FIELDCAT-FIELDNAME  = 'WERKS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME  = 'MATNR'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    * totalized columns
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME   = 'INV'.
      L_FIELDCAT-SP_GROUP  = 'A'.
      L_FIELDCAT-DO_SUM    = 'X'.
      L_FIELDCAT-FIELDNAME = 'LABST'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'INSME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'RETME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'UMLME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'WESBS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'SPEME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    * columns with different description
      L_FIELDCAT-FIELDNAME = 'KWMENG'.
      L_FIELDCAT-SELTEXT_M = 'Sales Orders'.
      L_FIELDCAT-SELTEXT_S = 'Sales Or'.
      L_FIELDCAT-SELTEXT_L = 'Sales Orders Qty'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'LFIMG'.
      L_FIELDCAT-SELTEXT_M = 'Sched. Delivery'.
      L_FIELDCAT-SELTEXT_S = 'Schd. Del'.
      L_FIELDCAT-SELTEXT_L = 'Scheduled for Delivery'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'TRANS'.
      L_FIELDCAT-SELTEXT_M = 'Stk. in transit'.
      L_FIELDCAT-SELTEXT_S = 'Stk. trns'.
      L_FIELDCAT-SELTEXT_L = 'Stock in transit (sum)'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'AVAIL'.
      L_FIELDCAT-SELTEXT_M = 'Available'.
      L_FIELDCAT-SELTEXT_S = 'Avail.'.
      L_FIELDCAT-SELTEXT_L = 'Stock Available'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'MENGE'.
      L_FIELDCAT-SELTEXT_M = 'Open Orders'.
      L_FIELDCAT-SELTEXT_S = 'Open Ord'.
      L_FIELDCAT-SELTEXT_L = 'Open Purchase Orders'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    * columns not displayed
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME   = 'INV'.
      L_FIELDCAT-SP_GROUP  = 'A'.
      L_FIELDCAT-NO_OUT    = 'X'.
      L_FIELDCAT-FIELDNAME = 'MEINS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'UMLMC'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'TRAME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'STPRS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'VALUE'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    ENDFORM.                               " INITIALIZE_FIELDCAT
    *&      Form  BUILD_EVENTTAB
    *       text
    *      -->P_EVENTS[]  text                                             *
    FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE = 0
           IMPORTING
                ET_EVENTS   = P_EVENTS.
      READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO P_EVENTS.
      ENDIF.
    ENDFORM.                               " BUILD_EVENTTAB
    *&      Form  BUILD_COMMENT
    *       text
    *      -->P_HEADING[]  text                                            *
    FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
      DATA: HLINE TYPE SLIS_LISTHEADER,
            TEXT(60) TYPE C,
            SEP(20) TYPE C.
      CLEAR: HLINE, TEXT.
      HLINE-TYP  = 'H'.
      WRITE: TEXT-101 TO TEXT+23.
      HLINE-INFO = TEXT.
      APPEND HLINE TO P_HEADING.
      CLEAR TEXT.
      WRITE: 'User: ' TO TEXT,
             SY-UNAME TO TEXT+6,
             'Date: ' TO TEXT+25,
             SY-DATUM TO TEXT+31,
             'Page: ' TO TEXT+50,
             SY-PAGNO TO TEXT+56.
      HLINE-INFO = TEXT.
      APPEND HLINE TO P_HEADING.
    ENDFORM.                    " BUILD_COMMENT
    *       FORM TOP_OF_PAGE                                              *
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                IT_LIST_COMMENTARY = HEADING.
    ENDFORM.
    *&      Form  INITIALIZE_VARIANT
    *       text
    FORM INITIALIZE_VARIANT.
      G_SAVE = 'A'.
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = REPNAME.
      GX_VARIANT = G_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                I_SAVE     = G_SAVE
           CHANGING
                CS_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 0.
        P_VARI = GX_VARIANT-VARIANT.
      ENDIF.
    ENDFORM.                               " INITIALIZE_VARIANT
    *&      Form  F4_FOR_VARIANT
    *       text
    FORM F4_FOR_VARIANT.
    <b>  CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                IS_VARIANT = G_VARIANT
                I_SAVE     = G_SAVE
           IMPORTING
                E_EXIT     = G_EXIT
                ES_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 2.
        MESSAGE ID SY-MSGID TYPE 'S'      NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        IF G_EXIT = SPACE.
          P_VARI = GX_VARIANT-VARIANT.
        ENDIF.
      ENDIF.</b>
    ENDFORM.                               " F4_FOR_VARIANT
    *&      Form  PAI_OF_SELECTION_SCREEN
    *       text
    FORM PAI_OF_SELECTION_SCREEN.
      IF NOT P_VARI IS INITIAL.
        MOVE G_VARIANT TO GX_VARIANT.
        MOVE P_VARI TO GX_VARIANT-VARIANT.
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
             EXPORTING
                  I_SAVE     = G_SAVE
             CHANGING
                  CS_VARIANT = GX_VARIANT.
        G_VARIANT = GX_VARIANT.
      ELSE.
        PERFORM INITIALIZE_VARIANT.
      ENDIF.
    ENDFORM.                               " PAI_OF_SELECTION_SCREEN
    *&      Form  GET_MARD
    *       text
    FORM GET_MARD.
      SELECT MATNR WERKS LABST INSME RETME UMLME SPEME
             FROM MARD
             INTO CORRESPONDING FIELDS OF INV
             WHERE MATNR IN S_MATNR
             AND   WERKS IN S_WERKS.
        COLLECT INV.
      ENDSELECT.
      PERFORM FILTER_BY_MATERIAL_TYPE.
    ENDFORM.                               " GET_MARD
    *&      Form  FILTER_BY_MATERIAL_TYPE
    *       text
    FORM FILTER_BY_MATERIAL_TYPE.
      LOOP AT INV.
        CLEAR INV-MTART.
        SELECT SINGLE MTART
               INTO INV-MTART
               FROM MARA
               WHERE MATNR EQ INV-MATNR
               AND   MTART IN S_MTART.
        IF SY-SUBRC EQ 0.
          MODIFY INV.
        ELSE.
          DELETE INV.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " FILTER_BY_MATERIAL_TYPE
    *&      Form  GET_MARC
    *       text
    FORM GET_MARC.
      LOOP AT INV.
        SELECT SINGLE UMLMC TRAME
               FROM MARC
               INTO CORRESPONDING FIELDS OF INV
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS.
        IF SY-SUBRC EQ 0.
          INV-TRANS = INV-UMLMC + INV-TRAME.
          MODIFY INV.
        ENDIF.
      ENDLOOP.
    ENDFORM.                               " GET_MARC
    *&      Form  GET_EKPO
    *       text
    FORM GET_EKPO.
      DATA: WESBS LIKE INV-WESBS,
            SHKZG LIKE EKBE-SHKZG,
            MEINS LIKE EKPO-MEINS,
            LMEIN LIKE EKPO-LMEIN.
      LOOP AT INV.
        CLEAR: WESBS, SHKZG, MEINS, LMEIN.
        SELECT Y~WESBS Y~SHKZG X~MEINS X~LMEIN
               INTO (WESBS, SHKZG, MEINS, LMEIN)
               FROM EKPO AS X JOIN EKBE AS Y
               ON   X~EBELN = Y~EBELN
               AND  X~EBELP = Y~EBELP
               WHERE X~MATNR EQ INV-MATNR
               AND   X~WERKS EQ INV-WERKS
               AND   X~LOEKZ NE 'L'.
          IF SHKZG EQ 'H'.
            MULTIPLY WESBS BY -1.
          ENDIF.
          IF MEINS NE LMEIN.
            PERFORM CONVERT_UNIT_OF_MEASURE CHANGING INV-MATNR MEINS WESBS.
          ENDIF.
          ADD WESBS TO INV-WESBS.
        ENDSELECT.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_EKPO
    *&      Form  GET_LIPS
    *       text
    FORM GET_LIPS.
      DATA: LFIMG LIKE INV-LFIMG.
      LOOP AT INV.
        CLEAR: LFIMG, INV-LFIMG.
        SELECT OMENG
               INTO LFIMG
               FROM VBBE
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS
               AND   VBTYP EQ 'J'.
          ADD LFIMG TO INV-LFIMG.
        ENDSELECT.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_LIPS
    *&      Form  GET_VBAP
    *       text
    FORM GET_VBAP.
      DATA: KWMENG LIKE INV-KWMENG.
      LOOP AT INV.
        CLEAR: KWMENG, INV-KWMENG.
        SELECT OMENG
               INTO KWMENG
               FROM VBBE
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS
               AND   VBTYP EQ 'C'.
          ADD KWMENG TO INV-KWMENG.
        ENDSELECT.
        INV-AVAIL = INV-LABST - INV-INSME - INV-KWMENG - INV-LFIMG.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_VBAP
    *&      Form  GET_UNIT_OF_MEASURE
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM GET_UNIT_OF_MEASURE.
      LOOP AT INV.
        SELECT SINGLE MEINS
               FROM MARA
               INTO INV-MEINS
               WHERE MATNR EQ INV-MATNR.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_UNIT_OF_MEASURE
    *&      Form  GET_OPEN
    *       text
    FORM GET_OPEN.
      DATA: BEGIN OF XTAB OCCURS 10,       " Open orders table
               WERKS LIKE EKPO-WERKS,
               LGORT LIKE EKPO-LGORT,
               MATNR LIKE EKPO-MATNR,
               MENGE LIKE EKPO-MENGE,
               MENGK LIKE EKPO-MENGE,
             END OF XTAB.
      RANGES: L_WERKS FOR MARD-WERKS.
      LOOP AT INV.
        REFRESH XTAB.
        CLEAR: XTAB, L_WERKS.
        MOVE INV-WERKS TO L_WERKS-LOW.
        CALL FUNCTION 'MB_ADD_PURCHASE_ORDER_QUANTITY'
             EXPORTING
                  X_MATNR = INV-MATNR
                  X_MEINS = INV-MEINS
                  X_ELIKZ = SPACE
                  X_LOEKZ = SPACE
             TABLES
                  XTAB    = XTAB
                  XWERKS  = L_WERKS.
        MOVE XTAB-MENGE TO INV-MENGE.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_OPEN
    *&      Form  GET_PRICE
    *       text
    FORM GET_PRICE.
      LOOP AT INV.
        SELECT SINGLE STPRS
               FROM MBEW
               INTO INV-STPRS
               WHERE MATNR EQ INV-MATNR
               AND   BWKEY EQ INV-WERKS
               AND   BWTAR EQ SPACE.
          IF SY-SUBRC EQ 0.
            INV-VALUE = INV-STPRS *
                      ( INV-LABST + INV-INSME + INV-TRANS + INV-SPEME ).
            MODIFY INV.
          ENDIF.
      ENDLOOP.
    ENDFORM.                    " GET_PRICE
    *       FORM CONVERT_UNIT_OF_MEASURE                                  *
    *       text                                                          *
    *  -->  P_MATNR                                                       *
    *  -->  P_VRKME                                                       *
    *  -->  P_QUANT                                                       *
    FORM CONVERT_UNIT_OF_MEASURE USING P_MATNR P_VRKME P_QUANT.
      DATA: UMREZ LIKE MARM-UMREZ,
            UMREN LIKE MARM-UMREN.
      SELECT SINGLE UMREZ UMREN
             INTO (UMREZ, UMREN)
             FROM MARM
             WHERE MATNR EQ P_MATNR
             AND   MEINH EQ P_VRKME.
      IF SY-SUBRC EQ 0.
        COMPUTE P_QUANT = ( P_QUANT * UMREZ ) / UMREN.
      ENDIF.
    ENDFORM.
    *&      Form  BUILD_LAYOUT
    *       text
    *      -->P_LAYOUT  text                                               *
    FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
      P_LAYOUT-F2CODE       = F2CODE.
      P_LAYOUT-ZEBRA        = 'X'.
      P_LAYOUT-DETAIL_POPUP = 'X'.
    ENDFORM.                               " BUILD_LAYOUT
    *&      Form  WRITE_OUTPUT
    *       text
    FORM WRITE_OUTPUT.
      SORT INV BY WERKS MATNR.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                I_PROGRAM_NAME     = REPNAME
                I_INTERNAL_TABNAME = 'INV'
                I_INCLNAME         = REPNAME
           CHANGING
                CT_FIELDCAT        = FIELDTAB.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM = REPNAME
                I_STRUCTURE_NAME   = 'INV'
                IS_LAYOUT          = LAYOUT
                IT_FIELDCAT        = FIELDTAB
                I_DEFAULT          = 'A'
                I_SAVE             = G_SAVE
                IS_VARIANT         = G_VARIANT
                IT_EVENTS          = EVENTS[]
           TABLES
                T_OUTTAB           = INV.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.
      ENDIF.
    ENDFORM.                               " WRITE_OUTPUT
    reward  points if it is usefull.....
    Girish

  • Variant in alv

    hi can anyone explain what is this 3 function module
    REUSE_ALV_VARIANT_EXISTENCE
    REUSE_ALV_VARIANT_DEFAULT_GET
    REUSE_ALV_VARIANT_F4
    i have a parameter variant on the selection screen so that user will be able to launch report with a default layout variant
    please give me an example where only this is implemented with list alv

    Hi
    See the doc of each fun module
    REUSE_ALV_VARIANT_DEFAULT_GET
    Read default display variant (description only, w/o field catalog)
    Functionality
    Provides the default variant for the list specified in the structure parameter CS_VARIANT of a program.
    Parameters
    I_SAVE
    CS_VARIANT
    Exceptions
    WRONG_INPUT
    NOT_FOUND
    PROGRAM_ERROR
    REUSE_ALV_VARIANT_EXISTENCE
    Checks whether a display variant exists
    Functionality
    This function module checks the existence in the database of a display variant passed in the interface.
    Parameters
    I_SAVE
    CS_VARIANT
    Exceptions
    WRONG_INPUT
    NOT_FOUND
    PROGRAM_ERROR
    REUSE_ALV_VARIANT_F4
    Display variant selection dialog box
    Functionality
    Possible entries help, if the variant is defined explicitly as an input field on a screen. The selection must be specified by at least partially filling the parameter structure IS_VARIANT.
    Parameters
    IS_VARIANT
    I_TABNAME_HEADER
    I_TABNAME_ITEM
    IT_DEFAULT_FIELDCAT
    I_SAVE
    I_DISPLAY_VIA_GRID
    E_EXIT
    ES_VARIANT
    Exceptions
    NOT_FOUND
    PROGRAM_ERROR
    CS_VARIANT is the structure which have the following fields data
    ABAP Program Name
    Mgt. ID for repeated calls from the same program
    Logical group name
    User name for user-specific storage
    Layout
    Description for layout
    Dependent variant entry vector
    check this with example also...
    *& Report  ZBC_ALV_EXAMPLE                                             *
    This program explains how we can use simple ALV functions to make    *
    reporting easy and looks pretty
    Programmer        : Venkat Reddy           ETA                       *
    Date              : 10/02/04                                         *
    Maintenance Log                                                      *
    Changed By      Date         Transport#   Description                *
    Venkat Reddy    10/02/04     EGD913575    Changed program to avoid   *
    REPORT  ZBC_ALV_EXAMPLE.
                    D-A-T-A  D-E-C-L-A-R-A-T-I-O-N-S                     *
    tables:  sflight.
    **-- TYPE-POOLS Definition
    **Includes the types and constants of a type group. Since the types and
    *constants specified in a type group have global validity, you cannot
    *use the statement within a FORM or FUNCTION.
    type-pools: slis.
    PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
    **-- ALV variables
    *****- Field Catalog structure
    data: ls_fieldcat     type slis_fieldcat_alv,    "Field Catalog list
    **--- Field Catalog table
          gt_fieldcat     type slis_t_fieldcat_alv,  "Field Catalog
    **--- Layout ( How you would like to see the output )
          gs_layout       type slis_layout_alv,       "List Layout
    **--  Report name
          g_repid         like sy-repid,
           g_save(1)           type c,
          g_exit(1)           type c,
          g_variant           like disvariant,
          gx_variant          like disvariant.
    **-- Flight Info Internal table
    data: lt_sflight like sflight occurs 0 with header line.
                    C-O-N-S-T-A-N-T-S                                    *
                    S-E-L-E-C-T-I-O-N  S-C-R-E-E-N                       *
    selection-screen begin of block a with frame title text-100.
    select-options: s_carrid  for  sflight-carrid,
                    s_connid  for  sflight-connid,
                    s_fldate  for  sflight-fldate default sy-datum.
    selection-screen end of block a .
                    I-N-I-T-I-A-L-I-Z-A-T-I-O-N                          *
    initialization.
      g_repid = sy-repid.
    **-- Fill ALV field catalog
      perform initialize_fieldcat using gt_fieldcat[].
    ***-- Build Events
    perform build_eventtab using gt_events[].
    **-- Read the default variant
      perform initialize_variant.
                    A-T  S-E-L-E-C-T-I-O-N  S-C-R-E-E-N                  *
    at selection-screen on value-request for p_vari.
    **-- Display all existing variants
      call function 'REUSE_ALV_VARIANT_F4'
           exporting
                is_variant = g_variant
                i_save     = g_save
           importing
                e_exit     = g_exit
                es_variant = gx_variant
           exceptions
                not_found  = 2.
      if sy-subrc = 2.
        message id sy-msgid type 'S'      number sy-msgno
                with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      else.
        if g_exit = space.
          p_vari = gx_variant-variant.
        endif.
      endif.
                    S-T-A-R-T  O-F  S-E-L-E-C-T-I-O-N                    *
    start-of-selection.
    **-- Read Flight information.
    perform read_flight_info.
    **-- Fill ALV field catalog and display report.
      if not lt_sflight[] is initial.
        perform dislay_alv_report.
      endif.
    ======================================================================
                    FORMS / SUB ROUTINES                                 *
    *======================================================================
    *&      Form  initialize_fieldcat
          text
         -->P_GT_FIELDCAT[]  text
    form initialize_fieldcat using l_fieldcat type slis_t_fieldcat_alv.
      clear ls_fieldcat.
    Air line
      ls_fieldcat-fieldname   = 'CARRID'.
      ls_fieldcat-key         = 'X'.
      ls_fieldcat-col_pos     = 1.
      ls_fieldcat-seltext_s   = 'Airline'.
      ls_fieldcat-seltext_l   = 'Airline'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Flight Number
      ls_fieldcat-fieldname   = 'CONNID'.
      ls_fieldcat-key         = 'X'.
      ls_fieldcat-col_pos     = 2.
      ls_fieldcat-seltext_s   = 'Flight Number'.
      ls_fieldcat-seltext_l   = 'Flight Number'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Flight date
      ls_fieldcat-fieldname   = 'FLDATE'.
      ls_fieldcat-key         = 'X'.
      ls_fieldcat-col_pos     = 3.
      ls_fieldcat-seltext_s   = 'Flight date'.
      ls_fieldcat-seltext_l   = 'Flight date'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Airfare
      ls_fieldcat-fieldname   = 'PRICE'.
      ls_fieldcat-col_pos     = 4.
      ls_fieldcat-do_sum      = 'X'.
      ls_fieldcat-seltext_s   = 'Airfare'.
      ls_fieldcat-seltext_l   = 'Airfare'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Local Currency
      ls_fieldcat-fieldname   = 'CURRENCY'.
      ls_fieldcat-col_pos     = 5.
      ls_fieldcat-seltext_s   = 'Local Currency'.
      ls_fieldcat-seltext_l   = 'Local Currency'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Plane Type
      ls_fieldcat-fieldname   = 'PLANETYPE'.
      ls_fieldcat-col_pos     = 6.
      ls_fieldcat-seltext_s   = 'Plane type'.
      ls_fieldcat-seltext_l   = 'Plane type'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Maximum capacity
      ls_fieldcat-fieldname   = 'SEATSMAX'.
      ls_fieldcat-col_pos     = 7.
      ls_fieldcat-seltext_s   = 'Max. seats'.
      ls_fieldcat-seltext_l   = 'Max. seats'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Occupied seats
      ls_fieldcat-fieldname   = 'SEATSOCC'.
      ls_fieldcat-col_pos     = 8.
      ls_fieldcat-seltext_s   = 'Seats occupied'.
      ls_fieldcat-seltext_l   = 'Seats occupied'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Total
      ls_fieldcat-fieldname   = 'PAYMENTSUM'.
      ls_fieldcat-col_pos     = 9.
      ls_fieldcat-do_sum     = 'X'.
      ls_fieldcat-seltext_s   = 'Total amount'.
      ls_fieldcat-seltext_l   = 'Total amount'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Total
      ls_fieldcat-fieldname   = 'PAYMENTSUM'.
      ls_fieldcat-col_pos     = 9.
      ls_fieldcat-do_sum     = 'X'.
      ls_fieldcat-seltext_s   = 'Total amount'.
      ls_fieldcat-seltext_l   = 'Total amount'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Max. Capacity, Buss. Class
      ls_fieldcat-fieldname   = 'SEATSMAX_B'.
      ls_fieldcat-col_pos     = 10.
      ls_fieldcat-seltext_s   = 'Max.Buss.class cap.'.
      ls_fieldcat-seltext_l   = 'Max.Buss.class cap.'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Max. occupancy, Buss. Class
      ls_fieldcat-fieldname   = 'SEATSOCC_B'.
      ls_fieldcat-col_pos     = 11.
      ls_fieldcat-seltext_s   = 'Max.Bus.CL.occupied'.
      ls_fieldcat-seltext_l   = 'Max.Bus.CL.occupied'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Max. Capacity, First. Class
      ls_fieldcat-fieldname   = 'SEATSMAX_F'.
      ls_fieldcat-col_pos     = 12.
      ls_fieldcat-seltext_s   = 'Max.Buss.class cap.'.
      ls_fieldcat-seltext_l   = 'Max.Buss.class cap.'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    Max. occupancy, First. Class
      ls_fieldcat-fieldname   = 'SEATSOCC_F'.
      ls_fieldcat-col_pos     = 13.
      ls_fieldcat-seltext_s   = 'Max.Bus.CL.occupied'.
      ls_fieldcat-seltext_l   = 'Max.Bus.CL.occupied'.
      append ls_fieldcat to l_fieldcat.
      clear ls_fieldcat.
    ENDFORM.                    " initialize_fieldcat
    *&      Form  read_flight_info
          text
    -->  p1        text
    <--  p2        text
    FORM read_flight_info .
    refresh lt_sflight.
    clear   lt_sflight.
    **-- Read data from SFLIGHT table
      select *
        from SFLIGHT
        into table lt_sflight
        where carrid in s_carrid
         and  connid in s_connid
         and  fldate in s_fldate.
    if sy-subrc <> 0.
       message e208(00) with text-101.
    endif.
    ENDFORM.                    " read_flight_info
    *&      Form  dislay_alv_report
          text
    -->  p1        text
    <--  p2        text
    FORM dislay_alv_report .
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      I_INTERFACE_CHECK              = ' '
      I_BYPASSING_BUFFER             =
      I_BUFFER_ACTIVE                = ' '
       I_CALLBACK_PROGRAM              =  g_repid
      I_CALLBACK_PF_STATUS_SET       = ' '
      I_CALLBACK_USER_COMMAND        = ' '
       I_STRUCTURE_NAME                =  'sflight'
      IS_LAYOUT                      =
       IT_FIELDCAT                     =  gt_fieldcat
      IT_EXCLUDING                   =
      IT_SPECIAL_GROUPS              =
      IT_SORT                        =
      IT_FILTER                      =
      IS_SEL_HIDE                    =
       I_DEFAULT                      = 'X'
       I_SAVE                         = 'A'
      IS_VARIANT                     = GX_VARIANT
      IT_EVENTS                      =
      IT_EVENT_EXIT                  =
      IS_PRINT                       =
      IS_REPREP_ID                   =
      I_SCREEN_START_COLUMN          = 0
      I_SCREEN_START_LINE            = 0
      I_SCREEN_END_COLUMN            = 0
      I_SCREEN_END_LINE              = 0
    IMPORTING
      E_EXIT_CAUSED_BY_CALLER        =
      ES_EXIT_CAUSED_BY_USER         =
      TABLES
        T_OUTTAB                       = lt_sflight
    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.                    " dislay_alv_report
    *&      Form  initialize_variant
          text
    -->  p1        text
    <--  p2        text
    FORM initialize_variant .
    g_save = 'A'.
      clear g_variant.
      g_variant-report = g_repid.
      gx_variant = g_variant.
      call function 'REUSE_ALV_VARIANT_DEFAULT_GET'
           exporting
                i_save     = g_save
           changing
                cs_variant = gx_variant
           exceptions
                not_found  = 2.
      if sy-subrc = 0.
        p_vari = gx_variant-variant.
      endif.
    ENDFORM.                    " initialize_variant
    regards,
    venkat.

  • How to handling ecxeptions on alv and how to write subrotiens on scripts

    Hi abapers..
    tell me how to handle ecxeptions on ALV, and how many exceptions are there ,which exception i have to use.
    AND is it possible to write subrotiens on script, if it is possible tell to me how to write

    There are already enough Exceptions provided for ALV .
    yes you can write sub-routines in scripts , search SDN and you will get answer for the same

  • Variants for alv

    please let me know about variants in alv??
    with details.
    why we use variants at alvs??
    please let me know

    We can change the display of the list by using the display variants.  Basically the display variants decide the appearance of the list. We can save display variants of the list by going Settings &#61614; Display variant &#61614; Save of the ALV display.
    We can ask the ALV to use a particular display variant for display.  We have to pass the variant name to the display FM through the parameter IS_VARIANT (explained earlier).  We can also provide a selection to the user in the selection screen to select a particular display variant.  The FM used to obtain the F4 help for the selection of the layout or the variant is explained next.
    F4 HELP FOR DISPLAY VARIANTS (REUSE_ALV_VARIANT_F4)
    The function module REUSE_ALV_VARIANT_F4 gives a popup to the user to select the display variant from a list of variants, which have been already saved.
    Some of the important parameters of the above function modules are:
    1.      IS_VARIANT (Like DISVARIANT) (Export Parameter)
    Pass the program name in the field REPORT of this structure.
    2.      I_SAVE (Export Parameter)
    Set this parameter as ‘A’ if you want to give the user an option to save an output layout user specifically or as a standard variant.
    Set this parameter as ‘U’ if you want to give the user an option to save an output layout only user specifically
    Set this parameter as ‘X’ for standard save only
    Leave it blank to provide no save option.
    3.      ES_VARIANT (Like DISVARIANT) (Import Parameter)
    Pass the same variable as was passed for the first parameter.  When we select a particular layout to be used, The FM  returns the name of the variant in the field VARIANT of this structure.
    Regards,
    Vidya

  • Variants IN ALV

    hi
    What are variants in ALV and how do we use them...
    I need urgent help in this regard
    thanks in advance
    rahul kavuri

    hi rahul,
    check this sample code.
    TYPE-POOLS: SLIS.
    TABLES:MARC, MARD, VBAP, LIPS, EKPO, VBFA, EKBE, MARM, VBBE, MARA, MBEW.
    SELECTION-SCREEN BEGIN OF BLOCK SEL WITH FRAME TITLE TEXT-001.
    SELECT-OPTIONS: S_WERKS FOR MARC-WERKS, " Plant
                    S_MATNR FOR MARC-MATNR, " Material
                    S_MTART FOR MARA-MTART. " Material Type
    SELECTION-SCREEN END OF BLOCK SEL.
    PARAMETERS: P_VARI LIKE DISvariant-VARIANT. " ALV Variant
    CONSTANTS: FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.
    DATA: BEGIN OF INV OCCURS 100,
            WERKS LIKE MARD-WERKS, " Plant
            MATNR LIKE MARD-MATNR, " Material
            MTART LIKE MARA-MTART, " Material Type
            STPRS LIKE MBEW-STPRS, " Standard Price
            AVAIL LIKE MARD-LABST, " Available
            LABST LIKE MARD-LABST, " Unrestricted use
            INSME LIKE MARD-INSME, " Quality Inspection
            RETME LIKE MARD-RETME, " Returns
            TRANS LIKE MARC-UMLMC, " Stock in transit (calculated)
            UMLMC LIKE MARC-UMLMC, " Stock Transfer (plant)
            UMLME LIKE MARD-UMLME, " Transfer (SLoc)
            WESBS LIKE EKBE-WESBS, " GR Blocked Stock
            TRAME LIKE MARC-TRAME, " Stock in transit
            SPEME LIKE MARD-SPEME, " Blocked
            KWMENG LIKE VBAP-KWMENG, " Sales orders
            LFIMG LIKE LIPS-LFIMG, " Scheduled for Delivery
            MENGE LIKE EKPO-MENGE, " Open Purch. Orders
            VALUE LIKE MBEW-SALK3, " Stock Value (Calculated)
            MEINS LIKE MARA-MEINS, " Unit of measure
          END OF INV.
    DATA: FIELDTAB TYPE SLIS_T_FIELDCAT_ALV,
          HEADING  TYPE SLIS_T_LISTHEADER,
          LAYOUT   TYPE SLIS_LAYOUT_ALV,
          EVENTS   TYPE SLIS_T_EVENT,
          REPNAME  LIKE SY-REPID,
          F2CODE   LIKE SY-UCOMM VALUE  '&ETA',
          G_SAVE(1) TYPE C,
          G_EXIT(1) TYPE C,
          G_VARIANT LIKE DISVARIANT,
          GX_VARIANT LIKE DISVARIANT.
    break-point.
    INITIALIZATION.
      REPNAME = SY-REPID.
      PERFORM INITIALIZE_FIELDCAT USING FIELDTAB[].
      PERFORM BUILD_EVENTTAB USING EVENTS[].
      PERFORM BUILD_COMMENT USING HEADING[].
      PERFORM INITIALIZE_VARIANT.
    break-point.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
      PERFORM F4_FOR_VARIANT.
    break-point.
    AT SELECTION-SCREEN.
      PERFORM PAI_OF_SELECTION_SCREEN.
    break-point.
    START-OF-SELECTION.
      PERFORM GET_MARD.
      PERFORM GET_UNIT_OF_MEASURE.
      PERFORM GET_MARC.
      PERFORM GET_EKPO.
      PERFORM GET_LIPS.
      PERFORM GET_VBAP.
      PERFORM GET_OPEN.
      PERFORM GET_PRICE.
    END-OF-SELECTION.
    break-point.
      PERFORM BUILD_LAYOUT USING LAYOUT.
      PERFORM WRITE_OUTPUT.
    *&      Form  INITIALIZE_FIELDCAT
          text
         -->P_FIELDTAB[]  text                                           *
    FORM INITIALIZE_FIELDCAT USING P_FIELDTAB TYPE SLIS_T_FIELDCAT_ALV.
      DATA: L_FIELDCAT TYPE SLIS_FIELDCAT_ALV.
    fixed columns (obligatory)
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME    = 'INV'.
      L_FIELDCAT-FIX_COLUMN = 'X'.
      L_FIELDCAT-NO_OUT     = 'O'.
      L_FIELDCAT-FIELDNAME  = 'WERKS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME  = 'MATNR'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    totalized columns
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME   = 'INV'.
      L_FIELDCAT-SP_GROUP  = 'A'.
      L_FIELDCAT-DO_SUM    = 'X'.
      L_FIELDCAT-FIELDNAME = 'LABST'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'INSME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'RETME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'UMLME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'WESBS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'SPEME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    columns with different description
      L_FIELDCAT-FIELDNAME = 'KWMENG'.
      L_FIELDCAT-SELTEXT_M = 'Sales Orders'.
      L_FIELDCAT-SELTEXT_S = 'Sales Or'.
      L_FIELDCAT-SELTEXT_L = 'Sales Orders Qty'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'LFIMG'.
      L_FIELDCAT-SELTEXT_M = 'Sched. Delivery'.
      L_FIELDCAT-SELTEXT_S = 'Schd. Del'.
      L_FIELDCAT-SELTEXT_L = 'Scheduled for Delivery'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'TRANS'.
      L_FIELDCAT-SELTEXT_M = 'Stk. in transit'.
      L_FIELDCAT-SELTEXT_S = 'Stk. trns'.
      L_FIELDCAT-SELTEXT_L = 'Stock in transit (sum)'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'AVAIL'.
      L_FIELDCAT-SELTEXT_M = 'Available'.
      L_FIELDCAT-SELTEXT_S = 'Avail.'.
      L_FIELDCAT-SELTEXT_L = 'Stock Available'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'MENGE'.
      L_FIELDCAT-SELTEXT_M = 'Open Orders'.
      L_FIELDCAT-SELTEXT_S = 'Open Ord'.
      L_FIELDCAT-SELTEXT_L = 'Open Purchase Orders'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    columns not displayed
      CLEAR L_FIELDCAT.
      L_FIELDCAT-TABNAME   = 'INV'.
      L_FIELDCAT-SP_GROUP  = 'A'.
      L_FIELDCAT-NO_OUT    = 'X'.
      L_FIELDCAT-FIELDNAME = 'MEINS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'UMLMC'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'TRAME'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'STPRS'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
      L_FIELDCAT-FIELDNAME = 'VALUE'.
      APPEND L_FIELDCAT TO P_FIELDTAB.
    ENDFORM.                               " INITIALIZE_FIELDCAT
    *&      Form  BUILD_EVENTTAB
          text
         -->P_EVENTS[]  text                                             *
    FORM BUILD_EVENTTAB USING P_EVENTS TYPE SLIS_T_EVENT.
      DATA: LS_EVENT TYPE SLIS_ALV_EVENT.
      CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
           EXPORTING
                I_LIST_TYPE = 0
           IMPORTING
                ET_EVENTS   = P_EVENTS.
      READ TABLE P_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_PAGE
                               INTO LS_EVENT.
      IF SY-SUBRC = 0.
        MOVE FORMNAME_TOP_OF_PAGE TO LS_EVENT-FORM.
        APPEND LS_EVENT TO P_EVENTS.
      ENDIF.
    ENDFORM.                               " BUILD_EVENTTAB
    *&      Form  BUILD_COMMENT
          text
         -->P_HEADING[]  text                                            *
    FORM BUILD_COMMENT USING P_HEADING TYPE SLIS_T_LISTHEADER.
      DATA: HLINE TYPE SLIS_LISTHEADER,
            TEXT(60) TYPE C,
            SEP(20) TYPE C.
      CLEAR: HLINE, TEXT.
      HLINE-TYP  = 'H'.
      WRITE: TEXT-101 TO TEXT+23.
      HLINE-INFO = TEXT.
      APPEND HLINE TO P_HEADING.
      CLEAR TEXT.
      WRITE: 'User: ' TO TEXT,
             SY-UNAME TO TEXT+6,
             'Date: ' TO TEXT+25,
             SY-DATUM TO TEXT+31,
             'Page: ' TO TEXT+50,
             SY-PAGNO TO TEXT+56.
      HLINE-INFO = TEXT.
      APPEND HLINE TO P_HEADING.
    ENDFORM.                    " BUILD_COMMENT
          FORM TOP_OF_PAGE                                              *
    FORM TOP_OF_PAGE.
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
           EXPORTING
                IT_LIST_COMMENTARY = HEADING.
    ENDFORM.
    *&      Form  INITIALIZE_VARIANT
          text
    FORM INITIALIZE_VARIANT.
      G_SAVE = 'A'.
      CLEAR G_VARIANT.
      G_VARIANT-REPORT = REPNAME.
      GX_VARIANT = G_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
           EXPORTING
                I_SAVE     = G_SAVE
           CHANGING
                CS_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 0.
        P_VARI = GX_VARIANT-VARIANT.
      ENDIF.
    ENDFORM.                               " INITIALIZE_VARIANT
    *&      Form  F4_FOR_VARIANT
          text
    FORM F4_FOR_VARIANT.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                IS_VARIANT = G_VARIANT
                I_SAVE     = G_SAVE
           IMPORTING
                E_EXIT     = G_EXIT
                ES_VARIANT = GX_VARIANT
           EXCEPTIONS
                NOT_FOUND  = 2.
      IF SY-SUBRC = 2.
        MESSAGE ID SY-MSGID TYPE 'S'      NUMBER SY-MSGNO
                WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ELSE.
        IF G_EXIT = SPACE.
          P_VARI = GX_VARIANT-VARIANT.
        ENDIF.
      ENDIF.
    ENDFORM.                               " F4_FOR_VARIANT
    *&      Form  PAI_OF_SELECTION_SCREEN
          text
    FORM PAI_OF_SELECTION_SCREEN.
      IF NOT P_VARI IS INITIAL.
        MOVE G_VARIANT TO GX_VARIANT.
        MOVE P_VARI TO GX_VARIANT-VARIANT.
        CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
             EXPORTING
                  I_SAVE     = G_SAVE
             CHANGING
                  CS_VARIANT = GX_VARIANT.
        G_VARIANT = GX_VARIANT.
      ELSE.
        PERFORM INITIALIZE_VARIANT.
      ENDIF.
    ENDFORM.                               " PAI_OF_SELECTION_SCREEN
    *&      Form  GET_MARD
          text
    FORM GET_MARD.
      SELECT MATNR WERKS LABST INSME RETME UMLME SPEME
             FROM MARD
             INTO CORRESPONDING FIELDS OF INV
             WHERE MATNR IN S_MATNR
             AND   WERKS IN S_WERKS.
        COLLECT INV.
      ENDSELECT.
      PERFORM FILTER_BY_MATERIAL_TYPE.
    ENDFORM.                               " GET_MARD
    *&      Form  FILTER_BY_MATERIAL_TYPE
          text
    FORM FILTER_BY_MATERIAL_TYPE.
      LOOP AT INV.
        CLEAR INV-MTART.
        SELECT SINGLE MTART
               INTO INV-MTART
               FROM MARA
               WHERE MATNR EQ INV-MATNR
               AND   MTART IN S_MTART.
        IF SY-SUBRC EQ 0.
          MODIFY INV.
        ELSE.
          DELETE INV.
        ENDIF.
      ENDLOOP.
    ENDFORM.                    " FILTER_BY_MATERIAL_TYPE
    *&      Form  GET_MARC
          text
    FORM GET_MARC.
      LOOP AT INV.
        SELECT SINGLE UMLMC TRAME
               FROM MARC
               INTO CORRESPONDING FIELDS OF INV
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS.
        IF SY-SUBRC EQ 0.
          INV-TRANS = INV-UMLMC + INV-TRAME.
          MODIFY INV.
        ENDIF.
      ENDLOOP.
    ENDFORM.                               " GET_MARC
    *&      Form  GET_EKPO
          text
    FORM GET_EKPO.
      DATA: WESBS LIKE INV-WESBS,
            SHKZG LIKE EKBE-SHKZG,
            MEINS LIKE EKPO-MEINS,
            LMEIN LIKE EKPO-LMEIN.
      LOOP AT INV.
        CLEAR: WESBS, SHKZG, MEINS, LMEIN.
        SELECT YWESBS YSHKZG XMEINS XLMEIN
               INTO (WESBS, SHKZG, MEINS, LMEIN)
               FROM EKPO AS X JOIN EKBE AS Y
               ON   XEBELN = YEBELN
               AND  XEBELP = YEBELP
               WHERE X~MATNR EQ INV-MATNR
               AND   X~WERKS EQ INV-WERKS
               AND   X~LOEKZ NE 'L'.
          IF SHKZG EQ 'H'.
            MULTIPLY WESBS BY -1.
          ENDIF.
          IF MEINS NE LMEIN.
            PERFORM CONVERT_UNIT_OF_MEASURE CHANGING INV-MATNR MEINS WESBS.
          ENDIF.
          ADD WESBS TO INV-WESBS.
        ENDSELECT.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_EKPO
    *&      Form  GET_LIPS
          text
    FORM GET_LIPS.
      DATA: LFIMG LIKE INV-LFIMG.
      LOOP AT INV.
        CLEAR: LFIMG, INV-LFIMG.
        SELECT OMENG
               INTO LFIMG
               FROM VBBE
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS
               AND   VBTYP EQ 'J'.
          ADD LFIMG TO INV-LFIMG.
        ENDSELECT.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_LIPS
    *&      Form  GET_VBAP
          text
    FORM GET_VBAP.
      DATA: KWMENG LIKE INV-KWMENG.
      LOOP AT INV.
        CLEAR: KWMENG, INV-KWMENG.
        SELECT OMENG
               INTO KWMENG
               FROM VBBE
               WHERE MATNR EQ INV-MATNR
               AND   WERKS EQ INV-WERKS
               AND   VBTYP EQ 'C'.
          ADD KWMENG TO INV-KWMENG.
        ENDSELECT.
        INV-AVAIL = INV-LABST - INV-INSME - INV-KWMENG - INV-LFIMG.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_VBAP
    *&      Form  GET_UNIT_OF_MEASURE
          text
    -->  p1        text
    <--  p2        text
    FORM GET_UNIT_OF_MEASURE.
      LOOP AT INV.
        SELECT SINGLE MEINS
               FROM MARA
               INTO INV-MEINS
               WHERE MATNR EQ INV-MATNR.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_UNIT_OF_MEASURE
    *&      Form  GET_OPEN
          text
    FORM GET_OPEN.
      DATA: BEGIN OF XTAB OCCURS 10,       " Open orders table
               WERKS LIKE EKPO-WERKS,
               LGORT LIKE EKPO-LGORT,
               MATNR LIKE EKPO-MATNR,
               MENGE LIKE EKPO-MENGE,
               MENGK LIKE EKPO-MENGE,
             END OF XTAB.
      RANGES: L_WERKS FOR MARD-WERKS.
      LOOP AT INV.
        REFRESH XTAB.
        CLEAR: XTAB, L_WERKS.
        MOVE INV-WERKS TO L_WERKS-LOW.
        CALL FUNCTION 'MB_ADD_PURCHASE_ORDER_QUANTITY'
             EXPORTING
                  X_MATNR = INV-MATNR
                  X_MEINS = INV-MEINS
                  X_ELIKZ = SPACE
                  X_LOEKZ = SPACE
             TABLES
                  XTAB    = XTAB
                  XWERKS  = L_WERKS.
        MOVE XTAB-MENGE TO INV-MENGE.
        MODIFY INV.
      ENDLOOP.
    ENDFORM.                               " GET_OPEN
    *&      Form  GET_PRICE
          text
    FORM GET_PRICE.
      LOOP AT INV.
        SELECT SINGLE STPRS
               FROM MBEW
               INTO INV-STPRS
               WHERE MATNR EQ INV-MATNR
               AND   BWKEY EQ INV-WERKS
               AND   BWTAR EQ SPACE.
          IF SY-SUBRC EQ 0.
            INV-VALUE = INV-STPRS *
                      ( INV-LABST + INV-INSME + INV-TRANS + INV-SPEME ).
            MODIFY INV.
          ENDIF.
      ENDLOOP.
    ENDFORM.                    " GET_PRICE
          FORM CONVERT_UNIT_OF_MEASURE                                  *
          text                                                          *
    -->  P_MATNR                                                       *
    -->  P_VRKME                                                       *
    -->  P_QUANT                                                       *
    FORM CONVERT_UNIT_OF_MEASURE USING P_MATNR P_VRKME P_QUANT.
      DATA: UMREZ LIKE MARM-UMREZ,
            UMREN LIKE MARM-UMREN.
      SELECT SINGLE UMREZ UMREN
             INTO (UMREZ, UMREN)
             FROM MARM
             WHERE MATNR EQ P_MATNR
             AND   MEINH EQ P_VRKME.
      IF SY-SUBRC EQ 0.
        COMPUTE P_QUANT = ( P_QUANT * UMREZ ) / UMREN.
      ENDIF.
    ENDFORM.
    *&      Form  BUILD_LAYOUT
          text
         -->P_LAYOUT  text                                               *
    FORM BUILD_LAYOUT USING P_LAYOUT TYPE SLIS_LAYOUT_ALV.
      P_LAYOUT-F2CODE       = F2CODE.
      P_LAYOUT-ZEBRA        = 'X'.
      P_LAYOUT-DETAIL_POPUP = 'X'.
    ENDFORM.                               " BUILD_LAYOUT
    *&      Form  WRITE_OUTPUT
          text
    FORM WRITE_OUTPUT.
      SORT INV BY WERKS MATNR.
      CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
           EXPORTING
                I_PROGRAM_NAME     = REPNAME
                I_INTERNAL_TABNAME = 'INV'
                I_INCLNAME         = REPNAME
           CHANGING
                CT_FIELDCAT        = FIELDTAB.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_FIELDCATALOG_MERGE'.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
           EXPORTING
                I_CALLBACK_PROGRAM = REPNAME
                I_STRUCTURE_NAME   = 'INV'
                IS_LAYOUT          = LAYOUT
                IT_FIELDCAT        = FIELDTAB
                I_DEFAULT          = 'A'
                I_SAVE             = G_SAVE
                IS_VARIANT         = G_VARIANT
                IT_EVENTS          = EVENTS[]
           TABLES
                T_OUTTAB           = INV.
    break-point.
      IF SY-SUBRC <> 0.
        WRITE: 'SY-SUBRC: ', SY-SUBRC, 'REUSE_ALV_LIST_DISPLAY'.
      ENDIF.
    ENDFORM.                               " WRITE_OUTPUT
    award if helpful.
    regards,
    keerthi.

  • Event handling in oops alv

    hi experts,
    event double click.
    when double click  on vbeln it should go to va03 transaction . how would i do that in oops alv.

    hai,
    you can go through code below .
    *& Report  Z_CLARIFY                                                   *
    REPORT  Z_CLARIFY                               .
    DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.
    DATA: L_VALID TYPE C,
          V_FLAG,
          V_DATA_CHANGE,
          V_ROW TYPE LVC_S_ROW,
          V_COLUMN TYPE LVC_S_COL,
          V_ROW_NUM TYPE LVC_S_ROID.
    DATA: IT_ROW_NO TYPE LVC_T_ROID,
          X_ROW_NO TYPE LVC_S_ROID.
    DATA:BEGIN OF  ITAB OCCURS 0,
         VBELN LIKE LIKP-VBELN,
         POSNR LIKE LIPS-POSNR,
         CELLCOLOR TYPE LVC_T_SCOL, "required for color
         DROP(10),
         END OF ITAB.
    *The Below Definitions Must.....
    DATA:
    Reference to document
           DG_DYNDOC_ID       TYPE REF TO CL_DD_DOCUMENT,
    Reference to split container
           DG_SPLITTER          TYPE REF TO CL_GUI_SPLITTER_CONTAINER,
    Reference to grid container
           DG_PARENT_GRID     TYPE REF TO CL_GUI_CONTAINER,
    Reference to html container
           DG_HTML_CNTRL        TYPE REF TO CL_GUI_HTML_VIEWER,
    Reference to html container
           DG_PARENT_HTML     TYPE REF TO CL_GUI_CONTAINER.
    "up to here
          CLASS lcl_event_handler DEFINITION
    CLASS LCL_EVENT_HANDLER DEFINITION .
      PUBLIC SECTION .
        METHODS:
    **Hot spot Handler
        HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
                          IMPORTING E_ROW_ID E_COLUMN_ID ES_ROW_NO,
    **Double Click Handler
        HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
                                         IMPORTING E_ROW E_COLUMN ES_ROW_NO,
        TOP_OF_PAGE FOR EVENT TOP_OF_PAGE              "event handler
                             OF CL_GUI_ALV_GRID
                             IMPORTING E_DYNDOC_ID.
           END_OF_LIST FOR EVENT end_of_list              "event handler
                            OF CL_GUI_ALV_GRID
                            IMPORTING E_DYNDOC_ID.
    ENDCLASS.                    "lcl_event_handler DEFINITION
          CLASS lcl_event_handler IMPLEMENTATION
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION.
    *Handle Hotspot Click
      METHOD HANDLE_HOTSPOT_CLICK .
        CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
        V_ROW  = E_ROW_ID.
        V_COLUMN = E_COLUMN_ID.
        V_ROW_NUM = ES_ROW_NO.
       MESSAGE I000 WITH V_ROW 'clicked'.
        CLEAR IT_ROW_NO[].
        X_ROW_NO-ROW_ID = V_ROW.
        APPEND X_ROW_NO TO IT_ROW_NO .
        CALL METHOD G_GRID->SET_SELECTED_ROWS
          EXPORTING
            IT_ROW_NO = IT_ROW_NO.
      ENDMETHOD.                    "lcl_event_handler
    *Handle Double Click
      METHOD  HANDLE_DOUBLE_CLICK.
        CLEAR: V_ROW,V_COLUMN,V_ROW_NUM.
        V_ROW  = E_ROW.
        V_COLUMN = E_COLUMN.
        V_ROW_NUM = ES_ROW_NO.
        IF E_COLUMN = 'VBELN'.
          SET PARAMETER ID 'VL' FIELD ITAB-VBELN.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN.
        ENDIF.
        IF E_COLUMN = 'POSNR'.
          SET PARAMETER ID 'VL' FIELD ITAB-VBELN.
          CALL TRANSACTION 'VL03N' AND SKIP FIRST SCREEN."
        ENDIF.
      ENDMETHOD.                    "handle_double_click
    METHOD END_OF_LIST.                   "implementation
    Top-of-page event
       PERFORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID.
    ENDMETHOD.                            "top_of_page
        METHOD TOP_OF_PAGE.                   "implementation
    Top-of-page event
        PERFORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID.
      ENDMETHOD.                            "top_of_page
    ENDCLASS.                    "LCL_EVENT_HANDLER IMPLEMENTATION
    *&             Global Definitions
    DATA:      G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
    "Container1
                G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler
    DATA: OK_CODE LIKE SY-UCOMM,
          SAVE_OK LIKE SY-UCOMM,
          G_CONTAINER1 TYPE SCRFNAME VALUE 'TEST',
          GS_LAYOUT TYPE LVC_S_LAYO.
    data: v_lines type i.
    data: v_line(3) type c.
    *- Fieldcatalog for First and second Report
    DATA: IT_FIELDCAT  TYPE  LVC_T_FCAT,
          X_FIELDCAT TYPE LVC_S_FCAT,
          LS_VARI  TYPE DISVARIANT.
                   START-OF_SELECTION
    START-OF-SELECTION.
      SELECT VBELN
             POSNR
             FROM LIPS
             UP TO 20 ROWS
             INTO CORRESPONDING FIELDS OF TABLE ITAB.
    describe table itab lines v_lines.
    END-OF-SELECTION.
      IF NOT ITAB[] IS INITIAL.
        CALL SCREEN 100.
      ELSE.
       MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).
      ENDIF.
    *&      Form  CREATE_AND_INIT_ALV
          text
    FORM CREATE_AND_INIT_ALV .
      DATA: LT_EXCLUDE TYPE UI_FUNCTIONS.
      "attention.....from here
      "split your container here...into two parts
      "create the container
      CREATE OBJECT G_CUSTOM_CONTAINER
               EXPORTING CONTAINER_NAME = 'SCR100_CUST'.
      "this is for top of page
    Create TOP-Document
      CREATE OBJECT DG_DYNDOC_ID
                       EXPORTING STYLE = 'ALV_GRID'.
    Create Splitter for custom_container
      CREATE OBJECT DG_SPLITTER
                 EXPORTING PARENT  = G_CUSTOM_CONTAINER
                           ROWS    = 2
                           COLUMNS = 1.
    Split the custom_container to two containers and move the reference
    to receiving containers g_parent_html and g_parent_grid
      "i am allocating the space for grid and top of page
      CALL METHOD DG_SPLITTER->GET_CONTAINER
        EXPORTING
          ROW       = 1
          COLUMN    = 1
        RECEIVING
          CONTAINER = DG_PARENT_HTML.
      CALL METHOD DG_SPLITTER->GET_CONTAINER
        EXPORTING
          ROW       = 2
          COLUMN    = 1
        RECEIVING
          CONTAINER = DG_PARENT_GRID.
    CALL METHOD DG_SPLITTER->GET_CONTAINER
       EXPORTING
         ROW       = 2
         COLUMN    = 1
       RECEIVING
         CONTAINER = DG_PARENT_HTML.
    CALL METHOD DG_SPLITTER->GET_CONTAINER
       EXPORTING
         ROW       = 1
         COLUMN    = 1
       RECEIVING
         CONTAINER = DG_PARENT_GRID.
      "you can set the height of it
    Set height for g_parent_html
      CALL METHOD DG_SPLITTER->SET_ROW_HEIGHT
        EXPORTING
          ID     = 1
          HEIGHT = 5.
      "from here as usual..you need to specify parent as splitter part
      "which we alloted for grid
      CREATE OBJECT G_GRID
             EXPORTING I_PARENT = DG_PARENT_GRID.
    Set a titlebar for the grid control
      CLEAR GS_LAYOUT.
      GS_LAYOUT-GRID_TITLE = TEXT-003.
      GS_LAYOUT-ZEBRA = SPACE.
      GS_LAYOUT-CWIDTH_OPT = 'X'.
      GS_LAYOUT-NO_ROWMARK = 'X'.
      GS_LAYOUT-CTAB_FNAME = 'CELLCOLOR'.
      CALL METHOD G_GRID->REGISTER_EDIT_EVENT
        EXPORTING
          I_EVENT_ID = CL_GUI_ALV_GRID=>MC_EVT_ENTER.
      CREATE OBJECT G_HANDLER.
      SET HANDLER G_HANDLER->HANDLE_DOUBLE_CLICK FOR G_GRID.
      SET HANDLER G_HANDLER->HANDLE_HOTSPOT_CLICK FOR G_GRID.
    SET HANDLER G_HANDLER->END_OF_LIST FOR G_GRID.
      SET HANDLER G_HANDLER->TOP_OF_PAGE FOR G_GRID.
      DATA: LS_CELLCOLOR TYPE LVC_S_SCOL. "required for color
      DATA: L_INDEX TYPE SY-TABIX.
      "Here i am changing the color of line 1,5,10...
      "so you can change the color of font conditionally
      LOOP AT ITAB.
        L_INDEX = SY-TABIX.
        IF L_INDEX = 1 OR L_INDEX = 5 OR L_INDEX = 10.
          LS_CELLCOLOR-FNAME = 'VBELN'.
          LS_CELLCOLOR-COLOR-COL = '6'.
          LS_CELLCOLOR-COLOR-INT = '0'.
          LS_CELLCOLOR-COLOR-INV = '1'.
          APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
          MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
          LS_CELLCOLOR-FNAME = 'POSNR'.
          LS_CELLCOLOR-COLOR-COL = '6'.
          LS_CELLCOLOR-COLOR-INT = '0'.
          LS_CELLCOLOR-COLOR-INV = '1'.
          APPEND LS_CELLCOLOR TO ITAB-CELLCOLOR.
          MODIFY ITAB INDEX L_INDEX TRANSPORTING CELLCOLOR.
        ENDIF.
      ENDLOOP.
    setting focus for created grid control
      CALL METHOD CL_GUI_CONTROL=>SET_FOCUS
        EXPORTING
          CONTROL = G_GRID.
    Build fieldcat and set editable for date and reason code
    edit enabled. Assign a handle for the dropdown listbox.
      PERFORM BUILD_FIELDCAT.
      PERFORM  SET_DRDN_TABLE.
    Optionally restrict generic functions to 'change only'.
      (The user shall not be able to add new lines).
      PERFORM EXCLUDE_TB_FUNCTIONS CHANGING LT_EXCLUDE.
    **Vaiant to save the layout
      LS_VARI-REPORT      = SY-REPID.
      LS_VARI-HANDLE      = SPACE.
      LS_VARI-LOG_GROUP   = SPACE.
      LS_VARI-USERNAME    = SPACE.
      LS_VARI-VARIANT     = SPACE.
      LS_VARI-TEXT        = SPACE.
      LS_VARI-DEPENDVARS  = SPACE.
    **Calling the Method for ALV output
      CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY
        EXPORTING
          IT_TOOLBAR_EXCLUDING = LT_EXCLUDE
          IS_VARIANT           = LS_VARI
          IS_LAYOUT            = GS_LAYOUT
          I_SAVE               = 'A'
        CHANGING
          IT_FIELDCATALOG      = IT_FIELDCAT
          IT_OUTTAB            = ITAB[].
      "do these..{
    Initializing document
      CALL METHOD DG_DYNDOC_ID->INITIALIZE_DOCUMENT.
    Processing events
      CALL METHOD G_GRID->LIST_PROCESSING_EVENTS
        EXPORTING
          I_EVENT_NAME = 'TOP_OF_PAGE'
          I_DYNDOC_ID  = DG_DYNDOC_ID.
      "end }
    Set editable cells to ready for input initially
      CALL METHOD G_GRID->SET_READY_FOR_INPUT
        EXPORTING
          I_READY_FOR_INPUT = 1.
    ENDFORM.                               "CREATE_AND_INIT_ALV
    *&      Form  EXCLUDE_TB_FUNCTIONS
          text
         -->PT_EXCLUDE text
    FORM EXCLUDE_TB_FUNCTIONS CHANGING PT_EXCLUDE TYPE UI_FUNCTIONS.
    Only allow to change data not to create new entries (exclude
    generic functions).
      DATA LS_EXCLUDE TYPE UI_FUNC.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_DELETE_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_APPEND_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_INSERT_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_MOVE_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_COPY.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_CUT.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_PASTE_NEW_ROW.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
      LS_EXCLUDE = CL_GUI_ALV_GRID=>MC_FC_LOC_UNDO.
      APPEND LS_EXCLUDE TO PT_EXCLUDE.
    ENDFORM.                               " EXCLUDE_TB_FUNCTIONS
    *&      Form  build_fieldcat
          Fieldcatalog
    FORM BUILD_FIELDCAT .
      DATA: L_POS TYPE I.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Delivery'(024).
      X_FIELDCAT-FIELDNAME = 'VBELN'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-NO_ZERO    = 'X'.
      X_FIELDCAT-OUTPUTLEN = '10'.
      X_FIELDCAT-HOTSPOT = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Item'(025).
      X_FIELDCAT-FIELDNAME = 'POSNR'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-OUTPUTLEN = '5'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
      L_POS = L_POS + 1.
      X_FIELDCAT-SCRTEXT_M = 'Drop'(025).
      X_FIELDCAT-FIELDNAME = 'DROP'.
      X_FIELDCAT-TABNAME = 'IT_FINAL'.
      X_FIELDCAT-COL_POS    = L_POS.
      X_FIELDCAT-OUTPUTLEN = '5'.
      X_FIELDCAT-EDIT = 'X'.
      X_FIELDCAT-DRDN_HNDL = '1'.
      X_FIELDCAT-DRDN_ALIAS = 'X'.
      APPEND X_FIELDCAT TO IT_FIELDCAT.
      CLEAR X_FIELDCAT.
    ENDFORM.                    " build_fieldcat
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'MAIN100'.
      SET TITLEBAR 'MAIN100'.
      IF G_CUSTOM_CONTAINER IS INITIAL.
    **Initializing the grid and calling the fm to Display the O/P
        PERFORM CREATE_AND_INIT_ALV.
      ENDIF.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      CASE SY-UCOMM.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    there are many such examples
    goto->se38->type bcalv* and press f4, u can see many examples.
    Reward points if helpful.
    Thanks and regards
    Swetha Singh.

  • LIST output and event handling in OO ALV and

    Hi,
    I am creating an ALV Report.
    How can i Display the Grid as a List. I am abke to change the view from the first grid that is created. but i need to show it as a list output from beginning.
    Also i have created a hotspot in and it works when the ALV is displayed in Grid Format but it does not work when i switch the view to list output.
    Any suggestions.
    Regards,
    Tarun Bahal

    *& Report  ZFI_TRIAL_BALANCE
    REPORT  zfi_trial_balance LINE-SIZE 275 LINE-COUNT 3(2) NO STANDARD PAGE HEADING.
    TABLES: bseg.
    TYPES: BEGIN OF ty_bkpf ,
      bukrs TYPE bkpf-bukrs,
      belnr TYPE bkpf-belnr,
      gjahr TYPE bkpf-gjahr,
      budat TYPE bkpf-budat,
      END OF ty_bkpf.
    TYPES: BEGIN OF ty_bseg ,
      bukrs TYPE bseg-bukrs,
      belnr TYPE bseg-belnr,
      gjahr TYPE bseg-gjahr,
      hkont TYPE bseg-hkont,
      END OF ty_bseg.
    TYPES: BEGIN OF ty_bank,
      hkont TYPE bseg-hkont,
      txt50 TYPE skat-txt50,
      open_dmbtr_dr TYPE p,
      open_dmbtr_cr TYPE p,
      trans_dmbtr_dr TYPE p,
      trans_dmbtr_cr TYPE p,
      close_dmbtr_dr TYPE p,
      close_dmbtr_cr TYPE p,
      END OF ty_bank.
    TYPES: BEGIN OF ty_breakup,
      bukrs TYPE bseg-bukrs,
      blart TYPE bkpf-blart,
      belnr TYPE bseg-belnr,
      budat TYPE bkpf-budat,
      umskz TYPE bseg-umskz,
      rebzg TYPE bseg-rebzg,
      lifnr TYPE  bseg-lifnr,
      kunnr TYPE bseg-kunnr,
      name1 TYPE lfa1-name1,
      dmbtr TYPE p,
      END OF ty_breakup.
    INITIALIZATION.
    *       CLASS handler DEFINITION
    CLASS handler DEFINITION.
      PUBLIC SECTION .
        METHODS:handle_hotspot_click                              "handler definition for 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 print_top_of_page OF cl_gui_alv_grid
        IMPORTING table_index,
                handle_subtotal_text
        FOR EVENT subtotal_text OF cl_gui_alv_grid
        IMPORTING es_subtottxt_info
                  ep_subtot_line
                  e_event_data.
    ENDCLASS.                    "handler DEFINITION
    *       CLASS handler IMPLEMENTATION
    CLASS handler IMPLEMENTATION.
      METHOD handle_hotspot_click.                              "handler implementation for hotspot_click
        PERFORM handle_hotspot_click USING e_row_id
                                           e_column_id
                                           es_row_no .
      ENDMETHOD.                    "handle_hotspot_click
      METHOD handle_top_of_page.
        PERFORM handle_print_top_of_page.
      ENDMETHOD.                    "handle_hotspot_click
      METHOD handle_subtotal_text.
        PERFORM handle_subtotal_text USING es_subtottxt_info
                                           ep_subtot_line
                                           e_event_data.
      ENDMETHOD.                    "Subtotal_text
    ENDCLASS.                    "handler IMPLEMENTATION
    DATA: i_set_values TYPE TABLE OF rgsb4,
          wa_set_values LIKE LINE OF i_set_values,
          l_dmbtr TYPE dmbtr,
          l_dmbtr2 TYPE dmbtr,
          l_dmbtr3 TYPE dmbtr,
          l_dmbtr4 TYPE dmbtr,
          l_dmbtr_total TYPE dmbtr,
          l_shkzg TYPE shkzg,
          i_bkpf TYPE STANDARD TABLE OF ty_bkpf,
          i_bseg TYPE STANDARD TABLE OF ty_bseg,
          i_bank TYPE STANDARD TABLE OF ty_bank,
          i_breakup TYPE STANDARD TABLE OF ty_breakup,
          wa_bkpf LIKE LINE OF i_bkpf,
          wa_bseg LIKE LINE OF i_bseg,
          wa_bank LIKE LINE OF i_bank,
          wa_breakup LIKE LINE OF i_breakup,
          ok_code TYPE sy-ucomm,
          save_ok TYPE sy-ucomm,
          l_ktopl TYPE ktopl.
    DATA: gr_alvgrid TYPE REF TO cl_gui_alv_grid,
          gr_alvgrid_0200 TYPE REF TO cl_gui_alv_grid,
          gr_ccontainer TYPE REF TO cl_gui_custom_container,
          gr_ccontainer_0200 TYPE REF TO cl_gui_custom_container,
          gt_fieldcat TYPE lvc_t_fcat,
          gs_layout TYPE lvc_s_layo,
          gt_sort TYPE lvc_t_sort,
          gt_roid TYPE lvc_t_roid,
          gt_exclude TYPE ui_functions,
          g_scrstatus TYPE i,
          gs_variant TYPE disvariant,
          o_handler TYPE REF TO handler.
    CONSTANTS: c_doctype(22) TYPE c VALUE 'ZINFITR01_TRIALBALANCE'.
    DATA gs_stbl TYPE lvc_s_stbl.
    SELECTION-SCREEN: BEGIN OF BLOCK block1 WITH FRAME TITLE text-001.
    SELECT-OPTIONS: l_date FOR sy-datum.
    PARAMETERS : l_bukrs TYPE bukrs,
                 l_segent TYPE fb_segment.
    SELECTION-SCREEN: END OF BLOCK block1.
    START-OF-SELECTION.
      gs_stbl-row = 'X'.
      gs_stbl-col = 'X'.
      CALL FUNCTION 'G_SET_GET_ALL_VALUES'
        EXPORTING
          setnr         = c_doctype
          table         = 'SKA1'
          class         = '0000'
        TABLES
          set_values    = i_set_values
        EXCEPTIONS
          set_not_found = 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.
      CLEAR i_bank.
      LOOP AT i_set_values INTO wa_set_values.
        CLEAR: l_dmbtr, l_dmbtr2, l_dmbtr3, l_dmbtr4, i_bkpf, i_bseg.
        wa_bank-hkont = wa_set_values-from.
        SELECT bukrs belnr budat gjahr FROM bkpf
          INTO CORRESPONDING FIELDS OF TABLE i_bkpf
          WHERE bukrs = l_bukrs
            AND budat < l_date-low.
        LOOP AT i_bkpf INTO wa_bkpf.
          SELECT dmbtr shkzg FROM bseg INTO (l_dmbtr, l_shkzg)
            WHERE bukrs = wa_bkpf-bukrs
              AND belnr = wa_bkpf-belnr
              AND gjahr = wa_bkpf-gjahr
              AND hkont = wa_set_values-from.
            IF l_shkzg = 'S'.
              l_dmbtr2 = l_dmbtr2 + l_dmbtr.
            ELSE.
              l_dmbtr2 = l_dmbtr2 - l_dmbtr.
            ENDIF.
            CLEAR: l_dmbtr, l_shkzg.
          ENDSELECT.
        ENDLOOP.
        IF l_dmbtr2 > 0.
          wa_bank-open_dmbtr_dr = l_dmbtr2.
        ELSE.
          wa_bank-open_dmbtr_cr = l_dmbtr2.
        ENDIF.
        CLEAR: l_dmbtr, i_bkpf, i_bseg.
        SELECT bukrs belnr budat gjahr FROM bkpf
          INTO CORRESPONDING FIELDS OF TABLE i_bkpf
          WHERE bukrs = l_bukrs
            AND budat IN l_date.
        LOOP AT i_bkpf INTO wa_bkpf.
          SELECT dmbtr shkzg FROM bseg INTO (l_dmbtr, l_shkzg)
            WHERE bukrs = wa_bkpf-bukrs
              AND belnr = wa_bkpf-belnr
              AND gjahr = wa_bkpf-gjahr
              AND hkont = wa_set_values-from.
            IF l_shkzg = 'S'.
              l_dmbtr3 = l_dmbtr3 + l_dmbtr.
            ELSE.
              l_dmbtr4 = l_dmbtr4 - l_dmbtr.
            ENDIF.
            CLEAR: l_dmbtr, l_shkzg.
          ENDSELECT.
        ENDLOOP.
    *    IF l_dmbtr3 > 0.
        wa_bank-trans_dmbtr_dr = l_dmbtr3.
    *    ELSE.
        wa_bank-trans_dmbtr_cr = l_dmbtr4.
    *    ENDIF.
        l_dmbtr = l_dmbtr2 + l_dmbtr3 + l_dmbtr4.
        IF l_dmbtr > 0.
          wa_bank-close_dmbtr_dr = l_dmbtr.
        ELSE.
          wa_bank-close_dmbtr_cr = l_dmbtr.
        ENDIF.
        CLEAR: l_dmbtr.
        SELECT SINGLE ktopl FROM t001 INTO l_ktopl WHERE bukrs = l_bukrs.
        SELECT SINGLE txt50 FROM skat INTO wa_bank-txt50
          WHERE spras = sy-langu "( SELECT spras FROM t002 WHERE laiso = sy-langu )
          AND ktopl = l_ktopl
          AND saknr = wa_set_values-from.
        APPEND wa_bank TO i_bank.
        CLEAR wa_bank.
      ENDLOOP.
      LOOP AT i_bank INTO wa_bank.
    *    IF wa_bank-open_dmbtr_cr < 0.
        wa_bank-open_dmbtr_cr = wa_bank-open_dmbtr_cr * -1.
    *    ENDIF.
    *    IF wa_bank-trans_dmbtr_cr < 0.
        wa_bank-trans_dmbtr_cr = wa_bank-trans_dmbtr_cr * -1.
    *    ENDIF.
    *    IF wa_bank-close_dmbtr_cr < 0.
        wa_bank-close_dmbtr_cr = wa_bank-close_dmbtr_cr * -1.
    *    ENDIF.
        MODIFY i_bank FROM wa_bank.
      ENDLOOP.
      SORT i_bank ASCENDING BY hkont.
    END-OF-SELECTION.
    *  SET SCREEN 100.
      CALL SCREEN 100.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS01'.
      SET TITLEBAR 'TITLE1'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  save_ok  INPUT
    *       text
    MODULE save_ok INPUT.
      save_ok = ok_code.
      CLEAR ok_code.
    ENDMODULE.                 " save_ok  INPUT
    *&      Module  create_alv  OUTPUT
    *       text
    MODULE create_alv OUTPUT.
      IF gr_alvgrid IS INITIAL.
        CREATE OBJECT gr_ccontainer
          EXPORTING
    *    PARENT                      =
            container_name              = 'CUSTOM_CONTAINER'
            repid                       = sy-repid
            dynnr                       = '0100'
          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 gr_alvgrid
          EXPORTING
            i_parent          = gr_ccontainer
          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.
        PERFORM prepare_field_catalog CHANGING gt_fieldcat .
        PERFORM prepare_layout CHANGING gs_layout .
        PERFORM prepare_sort CHANGING gt_sort.
        gs_variant-report = sy-repid.
        gs_variant-variant = 'ABC'.
        gs_variant-handle = '1'.
    *    IF sy-dynnr = '0100'.
        CALL METHOD gr_alvgrid->set_table_for_first_display
          EXPORTING
    *      I_BUFFER_ACTIVE               =
    *      I_BYPASSING_BUFFER            =
    *      I_CONSISTENCY_CHECK           =
    *      I_STRUCTURE_NAME              =
    *      is_variant                    = gs_variant
    *      i_save                        = 'A'
    *      i_default                     = 'X'
            is_layout                     = gs_layout
    *      IS_PRINT                      =
    *      IT_SPECIAL_GROUPS             =
    *      IT_TOOLBAR_EXCLUDING          =
    *      IT_HYPERLINK                  =
    *      IT_ALV_GRAPHICS               =
    *      IT_EXCEPT_QINFO               =
    *      IR_SALV_ADAPTER               =
          CHANGING
            it_outtab                     = i_bank
            it_fieldcatalog               = gt_fieldcat
    *    it_sort                       = gt_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.
      ELSE.
        CALL METHOD gr_alvgrid->refresh_table_display
          EXPORTING
            is_stable      = gs_stbl
    *        i_soft_refresh = 'X'
          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.
      ENDIF.
      CREATE OBJECT o_handler.
      SET HANDLER o_handler->handle_hotspot_click FOR gr_alvgrid.
      SET HANDLER o_handler->handle_top_of_page FOR gr_alvgrid.
      SET HANDLER o_handler->handle_subtotal_text FOR gr_alvgrid.
    *  ENDIF.
    ENDMODULE.                 " create_alv  OUTPUT
    *&      Form  prepare_field_catalog
    *       text
    *      <--P_GT_FIELDCAT  text
    FORM prepare_field_catalog  CHANGING pt_fieldcat TYPE lvc_t_fcat.
      DATA: ls_fcat TYPE lvc_s_fcat.
      CLEAR pt_fieldcat.
      CLEAR gt_fieldcat.
    *  IF sy-dynnr = '0100'.
      ls_fcat-fieldname = 'HKONT' .
      ls_fcat-ref_field = 'HKONT'.
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '15' .
      ls_fcat-ref_table = 'BSEG' .
      ls_fcat-coltext = 'G/L Account' .
      ls_fcat-seltext = 'G/L Account' .
      ls_fcat-hotspot = 'X'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'TXT50' .
      ls_fcat-ref_field = 'TXT50'.
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '20' .
      ls_fcat-ref_table = 'SKAT' .
      ls_fcat-coltext = 'Description' .
      ls_fcat-seltext = 'Description' .
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'OPEN_DMBTR_DR' .
      ls_fcat-ref_field = 'DMBTR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '20' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Opening Balance: Debit' .
      ls_fcat-seltext = 'Opening Balance: Debit'.
      ls_fcat-no_sign = 'X'.
      ls_fcat-do_sum = 'X'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'OPEN_DMBTR_CR' .
      ls_fcat-ref_field = 'DMBTR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '20' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Opening Balance: Credit' .
      ls_fcat-seltext = 'Opening Balance: Credit'.
      ls_fcat-no_sign = 'X'.
      ls_fcat-do_sum = 'X'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'TRANS_DMBTR_DR' .
      ls_fcat-ref_field = 'DMBTR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '20' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Trans Balance: Debit' .
      ls_fcat-seltext = 'Trans Balance: Debit'.
      ls_fcat-no_sign = 'X'.
      ls_fcat-do_sum = 'X'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'TRANS_DMBTR_CR' .
      ls_fcat-ref_field = 'DMBTR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '20' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Trans Balance: Credit' .
      ls_fcat-seltext = 'Trans Balance: Credit'.
      ls_fcat-no_sign = 'X'.
      ls_fcat-do_sum = 'X'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'CLOSE_DMBTR_DR' .
      ls_fcat-ref_field = 'DMBTR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '20' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Closing Balance: Debit' .
      ls_fcat-seltext = 'Closing Balance: Debit'.
      ls_fcat-no_sign = 'X'.
      ls_fcat-do_sum = 'X'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'CLOSE_DMBTR_CR' .
      ls_fcat-ref_field = 'DMBTR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '20' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Closing Balance: Credit' .
      ls_fcat-seltext = 'Closing Balance: Credit'.
      ls_fcat-no_sign = 'X'.
      ls_fcat-do_sum = 'X'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
    *  ELSE.
    *  ENDIF.
    ENDFORM.                    " prepare_field_catalog
    *&      Form  prepare_layout
    *       text
    *      <--P_GS_LAYOUT  text
    FORM prepare_layout  CHANGING ps_layout TYPE lvc_s_layo.
      DATA l_title(50) TYPE c.
      CONCATENATE 'Trial Balance: ' l_date-low+6(2) '-' l_date-low+4(2) '-'l_date-low(4) ' to ' l_date-high+6(2) '-' l_date-high+4(2) '-'l_date-high(4) INTO l_title RESPECTING BLANKS.
    *  ps_layout-zebra = 'X' .
      ps_layout-grid_title = l_title.
      ps_layout-cwidth_opt = 'X' .
      ps_layout-sel_mode = 'A'.
    *  ps_layout-no_toolbar = 'X'.
      ps_layout-no_headers = 'X'.
      ps_layout-frontend = 'L'.
    ENDFORM.                    " prepare_layout
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE save_ok.
        WHEN 'BACK'.
          SET SCREEN 0.
          LEAVE SCREEN.
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  prepare_sort
    *       text
    *      <--P_GT_SORT  text
    FORM prepare_sort  CHANGING pt_sort TYPE lvc_t_sort.
      CLEAR: pt_sort, gt_sort.
      DATA ls_sort TYPE lvc_s_sort .
      IF sy-dynnr = '0100'.
        ls_sort-spos = '1' .
        ls_sort-fieldname = 'HKONT' .
        ls_sort-up = 'X' . "A to Z
        ls_sort-down = space .
        APPEND ls_sort TO pt_sort .
      ELSE.
        ls_sort-spos = '1' .
        ls_sort-fieldname = 'BELNR' .
        ls_sort-up = 'X' . "A to Z
        ls_sort-down = space .
        APPEND ls_sort TO pt_sort .
    *    ls_sort-spos = '2' .
    *    ls_sort-fieldname = 'BELNR' .
    **    ls_sort-up = 'X' . "A to Z
    **    ls_sort-down = space .
    *    ls_sort-subtot = 'X'.
    *    APPEND ls_sort TO pt_sort .
      ENDIF.
    ENDFORM.                    " prepare_sort
    *&      Form  handle_hotspot_click
    *       text
    *      -->P_E_ROW_ID  text
    *      -->P_E_COLUMN_ID  text
    *      -->P_ES_ROW_NO  text
    FORM handle_hotspot_click  USING i_row_id TYPE lvc_s_row
                                     i_column_id TYPE lvc_s_col
                                     is_row_no TYPE lvc_s_roid.
      CLEAR: wa_bank, i_breakup.
      READ TABLE i_bank INTO wa_bank INDEX is_row_no-row_id.
    *TYPES: BEGIN OF ty_breakup,
    *  bukrs TYPE bseg-bukrs,
    *  blart TYPE bkpf-blart,
    *  belnr TYPE bseg-belnr,
    *  budat TYPE bkpf-budat,
    *  umskz TYPE bseg-umskz,
    *  rebzg TYPE bseg-rebzg,
    *  lifnr TYPE  bseg-lifnr,
    *  name1 TYPE lfa1-name1,
    *  dmbtr TYPE p,
    *  END OF ty_breakup.
      SELECT bukrs belnr budat gjahr FROM bkpf
            INTO CORRESPONDING FIELDS OF TABLE i_bkpf
            WHERE bukrs = l_bukrs
              AND budat IN l_date.
      LOOP AT i_bkpf INTO wa_bkpf.
        SELECT bukrs belnr umskz rebzg lifnr kunnr dmbtr shkzg FROM bseg
          INTO (wa_breakup-bukrs, wa_breakup-belnr, wa_breakup-umskz, wa_breakup-rebzg, wa_breakup-lifnr, wa_breakup-kunnr, wa_breakup-dmbtr, l_shkzg)
          WHERE bukrs = l_bukrs
                  AND belnr = wa_bkpf-belnr
                  AND gjahr = wa_bkpf-gjahr
                  AND hkont = wa_bank-hkont.
          SELECT SINGLE blart budat FROM bkpf INTO (wa_breakup-blart, wa_breakup-budat)
            WHERE bukrs = l_bukrs
                  AND belnr = wa_bkpf-belnr
                  AND gjahr = wa_bkpf-gjahr.
          IF wa_breakup-lifnr IS NOT INITIAL.
            SELECT SINGLE name1 FROM lfa1 INTO wa_breakup-name1
              WHERE lifnr = wa_breakup-lifnr.
          ELSE.
            SELECT SINGLE name1 FROM kna1 INTO wa_breakup-name1
            WHERE lifnr = wa_breakup-kunnr.
            wa_breakup-lifnr = wa_breakup-kunnr.
          ENDIF.
        ENDSELECT.
        IF l_shkzg = 'H'.
          wa_breakup-dmbtr = wa_breakup-dmbtr * -1.
        ENDIF.
        IF wa_breakup IS NOT INITIAL.
          APPEND wa_breakup TO i_breakup.
        ENDIF.
        CLEAR wa_breakup.
      ENDLOOP.
      SET SCREEN 200.
      LEAVE SCREEN.
    ENDFORM.                    " handle_hotspot_click
    *&      Module  STATUS_0200  OUTPUT
    *       text
    MODULE status_0200 OUTPUT.
      SET PF-STATUS 'STATUS01'.
      SET TITLEBAR 'TITLE2'.
    ENDMODULE.                 " STATUS_0200  OUTPUT
    *&      Module  USER_COMMAND_0200  INPUT
    *       text
    MODULE user_command_0200 INPUT.
      CASE save_ok.
        WHEN 'BACK'.
    *      CLEAR: gr_alvgrid, gr_ccontainer.
          SET SCREEN 100.
          LEAVE SCREEN .
      ENDCASE.
    ENDMODULE.                 " USER_COMMAND_0200  INPUT
    *&      Module  create_alv_0200  OUTPUT
    *       text
    MODULE create_alv_0200 OUTPUT.
      IF gr_alvgrid_0200 IS INITIAL.
        CREATE OBJECT gr_ccontainer_0200
              EXPORTING
    *    PARENT                      =
                container_name              = 'CUSTOM_CONTAINER'
                repid                       = sy-repid
                dynnr                       = '0200'
              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 gr_alvgrid_0200
          EXPORTING
            i_parent          = gr_ccontainer_0200
          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.
        PERFORM prepare_field_catalog_0200 CHANGING gt_fieldcat .
    *  PERFORM prepare_layout CHANGING gs_layout .
        PERFORM prepare_sort CHANGING gt_sort.
        CALL METHOD gr_alvgrid_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                     = gs_layout
    *      IS_PRINT                      =
    *      IT_SPECIAL_GROUPS             =
    *      IT_TOOLBAR_EXCLUDING          =
    *      IT_HYPERLINK                  =
    *      IT_ALV_GRAPHICS               =
    *      IT_EXCEPT_QINFO               =
    *      IR_SALV_ADAPTER               =
          CHANGING
            it_outtab                     = i_breakup
            it_fieldcatalog               = gt_fieldcat
          it_sort                       = gt_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.
      ELSE.
        CALL METHOD gr_alvgrid_0200->refresh_table_display
          EXPORTING
            is_stable      = gs_stbl
    *        i_soft_refresh = 'X'
          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.
      ENDIF.
    *  SET SCREEN 100.
    ENDMODULE.                 " create_alv_0200  OUTPUT
    *&      Form  prepare_field_catalog_0200
    *       text
    *      <--P_GT_FIELDCAT  text
    FORM prepare_field_catalog_0200  CHANGING pt_fieldcat TYPE lvc_t_fcat.
      DATA: ls_fcat TYPE lvc_s_fcat.
      CLEAR: pt_fieldcat, gs_layout.
      ls_fcat-fieldname = 'BUKRS' .
      ls_fcat-ref_field = 'BUKRS'.
      ls_fcat-inttype = 'c' .
      ls_fcat-outputlen = '5' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Co' .
      ls_fcat-seltext = 'Company Code'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'BLART' .
      ls_fcat-ref_field = 'BLART'.
      ls_fcat-inttype = 'c' .
      ls_fcat-outputlen = '5' .
      ls_fcat-ref_table = 'BKPF'.
      ls_fcat-coltext = 'Doc Typ' .
      ls_fcat-seltext = 'Document Type'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'BELNR' .
      ls_fcat-ref_field = 'BELNR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '12' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Doc Num' .
      ls_fcat-seltext = 'Document Number'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'BUDAT' .
      ls_fcat-ref_field = 'BUDAT'.
      ls_fcat-inttype = 'DATS' .
      ls_fcat-outputlen = '13' .
      ls_fcat-ref_table = 'BKPF'.
      ls_fcat-coltext = 'G/L Date' .
      ls_fcat-seltext = 'G/L Posting Date'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'UMSKZ' .
      ls_fcat-ref_field = 'UMSKZ'.
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '5' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'G/L Indicator' .
      ls_fcat-seltext = 'Special G/L Indicator'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'REBZG' .
      ls_fcat-ref_field = 'REBZG'.
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '13' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Reference' .
      ls_fcat-seltext = 'Invoice Number'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'LIFNR' .
      ls_fcat-ref_field = 'LIFNR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '13' .
      ls_fcat-ref_table = 'LFA1'.
      ls_fcat-coltext = 'Vendor/Customer' .
      ls_fcat-seltext = 'Vendor/Customer Number'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'NAME1' .
      ls_fcat-ref_field = 'NAME1'.
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '50' .
      ls_fcat-ref_table = 'LFA1'.
      ls_fcat-coltext = 'Description' .
      ls_fcat-seltext = 'Description'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
      ls_fcat-fieldname = 'DMBTR' .
      ls_fcat-ref_field = 'DMBTR'.
      ls_fcat-inttype = 'NUMC' .
      ls_fcat-outputlen = '25' .
      ls_fcat-ref_table = 'BSEG'.
      ls_fcat-coltext = 'Amount' .
      ls_fcat-seltext = 'Amount'.
      ls_fcat-no_sign = 'X'.
      ls_fcat-do_sum = 'X'.
      APPEND ls_fcat TO pt_fieldcat.
      CLEAR ls_fcat.
    ENDFORM.                    " prepare_field_catalog_0200
    *&      Form  handle_print_top_of_page
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM handle_print_top_of_page .
      WRITE: sy-uline.
      WRITE: /(255)'Tecnimont ICB' CENTERED.
      WRITE: /(255)'Trial Balance' CENTERED.
      WRITE: 'Trial Balance for ', l_bukrs, ':  From Period - ', l_date-low, 'To Period - ', l_date-high. "LEFT-JUSTIFIED .
      WRITE: /.
      WRITE: / sy-uline.
      FORMAT COLOR 1.
      WRITE: sy-vline, AT 2(59)'Account Code and Name'CENTERED, AT 60 sy-vline, AT 61(45) 'Opening Balance' CENTERED, AT 107 sy-vline, AT 108(41) 'Transactions' CENTERED , AT 150 sy-vline, AT 155(41) 'Closing Balance' CENTERED,  AT 197 sy-vline.
      FORMAT COLOR 4.
      WRITE: sy-vline,'GL Account'LEFT-JUSTIFIED, AT 16(50)'Description'CENTERED, AT 60 sy-vline, AT 61(23) 'Debits'CENTERED, AT 85(23) 'Credits.'CENTERED, AT 107 sy-vline, AT 108(23) 'Debits'CENTERED, AT 128(23)'Credits'CENTERED, AT 150 sy-vline, AT 151(23)
      'Debits'CENTERED, AT 174(23) 'Credits'CENTERED, AT 197 sy-vline.
      FORMAT COLOR OFF.
    *  WRITE: sy-uline.
    ENDFORM.                    " handle_print_top_of_page
    *&      Form  handle_subtotal_text
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM handle_subtotal_text USING es_subtottxt_info TYPE lvc_s_stxt
                                   ep_subtot_line TYPE REF TO data
                                   e_event_data TYPE REF TO
                                   cl_alv_event_data.
      DATA l_bank LIKE wa_bank.
      FIELD-SYMBOLS: <fs1> STRUCTURE wa_bank DEFAULT l_bank,
                   <fs2>.
      IF es_subtottxt_info-criteria = 'TXT50'.
        ASSIGN ep_subtot_line->* TO <fs1>.
        ASSIGN e_event_data->m_data->* TO <fs2>.
        CONCATENATE es_subtottxt_info-keyword 'Grand Summary: '
                     INTO <fs2>.
      ENDIF.
    ENDFORM.                    " handle_subtotal_text
    This  is the Code............... this code creates a Grid and not list and hotspot event wors on grid and not on list.
    Regards,
    Tarun Bahal

  • Handling Events in ALV Grid Display

    Hi,
         I need ur urgent help on how to trigger and handle the events associated with the class CL_GUI_ALV_GRID_DISPLAY .Events like
    •     ONF4
    •     ONF1
    •     DATA_CHANGED
    •     USER_COMMAND
    •     TOOLBAR
    •     HOTSPOT_CLICK
    Please help me in this matter and post some valid codes depicting these events.Ur help will be really appreciated throught points.
    Thnkx in advance.

    Hi,
    Please refer program "BCALV_TEST_GRID_EVENTS"
    Best regards,
    Prashant
    *& Report  BCALV_TEST_GRID_EVENTS                                      *
    report  bcalv_test_grid_events.
    types: g_ty_t_carrid  type standard table of alv_tab,
           g_ty_t_connid  type standard table of alv_chck,
           g_ty_t_curr    type standard table of alv_cur,
           g_ty_s_sflight type alv_t_t2,
           g_ty_s_carrid  type alv_tab,
           g_ty_s_connid  type alv_chck,
           g_ty_s_curr    type alv_cur.
    constants: con_sflight type lvc_fname value 'ALV_T_T2',
               con_scarr   type lvc_fname value 'ALV_TAB',
               con_spfli   type lvc_fname value 'ALV_CHCK'.
    * DATA                                                                 *
    class lcl_events_d0100 definition deferred.
    types: begin of g_ty_s_plane,
             carrid    type g_ty_s_sflight-carrid,
             connid    type g_ty_s_sflight-connid,
             planetype type g_ty_s_sflight-planetype,
             seatsmax  type g_ty_s_sflight-seatsmax,
           end   of g_ty_s_plane,
           g_ty_t_plane type sorted table of g_ty_s_plane
                             with unique key carrid connid,
           begin of g_ty_s_event,
             user_command                 type char1,
             before_user_command          type char1,
             after_user_command           type char1,
             double_click                 type char1,
             hotspot_click                type char1,
             button_click                 type char1,
             onf1                         type char1,
             onf4                         type char1,
             menu_button                  type char1,
             toolbar                      type char1,
             context_menu_request         type char1,
             ondrag                       type char1,
             ondrop                       type char1,
             ondropcomplete               type char1,
             ondropgetflavor              type char1,
             subtotal_text                type char1,
             data_changed                 type char1,
             data_changed_finished        type char1,
             after_refresh                type char1,
             delayed_callback             type char1,
             delayed_changed_sel_callback type char1,
             top_of_page                  type char1,
             end_of_list                  type char1,
             print_top_of_page            type char1,
             print_end_of_page            type char1,
             print_top_of_list            type char1,
             print_end_of_list            type char1,
           end   of g_ty_s_event,
           begin of g_ty_s_onf4,
             register        type char1,
             get_before      type char1,
             change_after    type char1,
             internal_format type char1,
           end   of g_ty_s_onf4,
           begin of g_ty_s_test,
             select_amount      type i,
             no_info_popup      type char1,
             info_popup_once    type char1,
             events_info_popup  type lvc_fname occurs 0,
             application_events type char1,
             event              type g_ty_s_event,
             onf4               type g_ty_s_onf4,
             button_fields      type lvc_fname occurs 0,
             hotspot_fields     type lvc_fname occurs 0,
             onf1_fields        type lvc_fname occurs 0,
             onf4_fields        type lvc_fname occurs 0,
             bypassing_buffer   type char1,
             buffer_active      type char1,
           end   of g_ty_s_test,
           begin of g_ty_s_outtab.
    include type g_ty_s_sflight.
    types:   box                  type char1,
             lights               type char1,
           end   of g_ty_s_outtab,
           g_ty_t_outtab type table of g_ty_s_outtab.
    constants: con_exit type sy-ucomm value 'EXIT',
               con_canc type sy-ucomm value 'CANC',
               con_back type sy-ucomm value 'BACK',
               con_true     type char1 value 'X'.
    data: g_okcode type sy-ucomm.
    data: gs_test type g_ty_s_test.
    data: gt_outtab type g_ty_t_outtab with header line,
          gr_container_d0100   type ref to cl_gui_custom_container,
          gr_grid_d0100        type ref to cl_gui_alv_grid,
          gr_events_d0100      type ref to lcl_events_d0100,
          gr_grid_dragdrop     type ref to cl_dragdrop.
    data: g_static_menu            type ref to cl_ctmenu,
          g_static_menu_default    type ref to cl_ctmenu.
    data: g_field type lvc_s_fcat-fieldname.
    *       CLASS lcl_dragdrop_obj_d0100 DEFINITION
    class lcl_dragdrop_obj_d0100 definition.
      public section.
        data: line  type g_ty_s_outtab,
              index type i.
    endclass.                    "lcl_dragdrop_obj_d0100 DEFINITION
    *       CLASS lcl_events_d0100 DEFINITION
    class lcl_events_d0100 definition.
      public section.
        methods:
        user_command         for event user_command
                             of cl_gui_alv_grid
                             importing e_ucomm sender,
        before_user_command  for event before_user_command
                             of cl_gui_alv_grid
                             importing e_ucomm,
        after_user_command   for event after_user_command
                             of cl_gui_alv_grid
                             importing e_ucomm
                                       e_not_processed
                                       e_saved,
        double_click         for event double_click
                             of cl_gui_alv_grid
                             importing e_row
                                       e_column
                                       es_row_no,
        hotspot_click        for event hotspot_click
                             of cl_gui_alv_grid
                             importing e_row_id
                                       e_column_id
                                       es_row_no,
        menu_button          for event menu_button
                             of cl_gui_alv_grid
                             importing e_object
                                       e_ucomm,
        toolbar              for event toolbar
                             of cl_gui_alv_grid
                             importing e_object
                                       e_interactive,
        context_menu_request for event context_menu_request
                             of cl_gui_alv_grid
                             importing e_object,
        top_of_page          for event top_of_page
                             of cl_gui_alv_grid
                             importing e_dyndoc_id,
        end_of_list          for event end_of_list
                             of cl_gui_alv_grid
                             importing e_dyndoc_id,
        print_top_of_page    for event print_top_of_page
                             of cl_gui_alv_grid,
        print_end_of_page    for event print_end_of_page
                             of cl_gui_alv_grid,
        print_top_of_list    for event print_top_of_list
                             of cl_gui_alv_grid,
        print_end_of_list    for event print_end_of_list
                             of cl_gui_alv_grid,
        after_refresh        for event after_refresh
                             of cl_gui_alv_grid,
        delayed_callback     for event delayed_callback
                             of cl_gui_alv_grid,
        delayed_changed_sel_callback
                             for event delayed_changed_sel_callback
                             of cl_gui_alv_grid,
        subtotal_text        for event subtotal_text
                             of cl_gui_alv_grid
                             importing es_subtottxt_info
                                       ep_subtot_line
                                       e_event_data,
        ondrag               for event ondrag
                             of cl_gui_alv_grid
                             importing e_row
                                       e_column
                                       es_row_no
                                       e_dragdropobj,
        ondrop               for event ondrop
                             of cl_gui_alv_grid
                             importing e_row
                                       e_column
                                       es_row_no
                                       e_dragdropobj,
        ondropcomplete       for event ondropcomplete
                             of cl_gui_alv_grid
                             importing e_row
                                       e_column
                                       es_row_no
                                       e_dragdropobj,
        ondropgetflavor      for event ondropgetflavor
                             of cl_gui_alv_grid
                             importing e_row
                                       e_column
                                       es_row_no
                                       e_dragdropobj
                                       e_flavors,
        data_changed         for event data_changed
                             of cl_gui_alv_grid
                             importing er_data_changed
                                       e_onf4
                                       e_onf4_before
                                       e_onf4_after,
        data_changed_finished
                             for event data_changed_finished
                             of cl_gui_alv_grid,
        button_click         for event button_click
                             of cl_gui_alv_grid
                             importing es_col_id
                                       es_row_no,
        onf1                 for event onf1
                             of cl_gui_alv_grid
                             importing e_fieldname
                                       es_row_no
                                       er_event_data,
        onf4                 for event onf4
                             of cl_gui_alv_grid
                             importing e_fieldname
                                       e_fieldvalue
                                       es_row_no
                                       er_event_data
                                       et_bad_cells
                                       e_display.
    endclass.                    "lcl_events_d0100 DEFINITION
    *       CLASS lcl_events_d0100 IMPLEMENTATION
    class lcl_events_d0100 implementation.
    *       METHOD user_command                                           *
      method user_command.
        perform d0100_event_ucomm using e_ucomm.
      endmethod.                    "user_command
    *       METHOD before_user_command                                    *
      method before_user_command.
        perform d0100_event_before_ucomm using e_ucomm.
      endmethod.                    "before_user_command
    *       METHOD after_user_command                                     *
      method after_user_command.
        perform d0100_event_after_ucomm using e_ucomm
                                              e_not_processed
                                              e_saved.
      endmethod.                    "after_user_command
    *       METHOD double_click                                           *
      method double_click.
        perform d0100_event_double_click using e_row
                                               e_column.
      endmethod.                    "double_click
    *       METHOD hotspot_click                                          *
      method hotspot_click.
    *    perform d0100_event_hotspot_click using e_row_id
    *                                            e_column_id.
        gr_grid_d0100->refresh_table_display( ).
      endmethod.                    "hotspot_click
    *       METHOD menu_button                                            *
      method menu_button.
        perform d0100_event_menu_button using e_object
                                              e_ucomm.
      endmethod.                    "menu_button
    *       METHOD toolbar                                                *
      method toolbar.
        perform d0100_event_toolbar using e_object
                                          e_interactive.
      endmethod.                    "toolbar
    *       METHOD context_menu_request                                   *
      method context_menu_request.
        perform d0100_event_context_menu_reqst using e_object.
      endmethod.                    "context_menu_request
    *       METHOD top_of_page                                            *
      method top_of_page.
        perform d0100_event_top_of_page using e_dyndoc_id.
      endmethod.                    "top_of_page
    *       METHOD end_of_list                                            *
      method end_of_list.
        perform d0100_event_end_of_list using e_dyndoc_id.
      endmethod.                    "end_of_list
    *       METHOD print_top_of_page                                      *
      method print_top_of_page.
        perform d0100_event_print_top_of_page.
      endmethod.                    "print_top_of_page
    *       METHOD print_end_of_page                                      *
      method print_end_of_page.
        perform d0100_event_print_end_of_page.
      endmethod.                    "print_end_of_page
    *       METHOD print_top_of_list                                      *
      method print_top_of_list.
        perform d0100_event_print_top_of_list.
      endmethod.                    "print_top_of_list
    *       METHOD print_end_of_list                                      *
      method print_end_of_list.
        perform d0100_event_print_end_of_list.
      endmethod.                    "print_end_of_list
    *       METHOD after_refresh                                          *
      method after_refresh.
        perform d0100_event_after_refresh.
      endmethod.                    "after_refresh
    *       METHOD delayed_callback                                       *
      method delayed_callback.
        perform d0100_event_delayed_callback.
      endmethod.                    "delayed_callback
    *       METHOD delayed_changed_sel_callback                           *
      method delayed_changed_sel_callback.
        perform d0100_event_changed_sel_callba.
      endmethod.                    "delayed_changed_sel_callback
    *       METHOD subtotal_text                                          *
      method subtotal_text.
        perform d0100_event_subtotal_text using es_subtottxt_info
                                                ep_subtot_line
                                                e_event_data.
      endmethod.                    "subtotal_text
    *       METHOD ondrag                                                 *
      method ondrag.
        perform d0100_event_ondrag using e_row
                                         e_column
                                         e_dragdropobj.
      endmethod.                    "ondrag
    *       METHOD ondrop                                                 *
      method ondrop.
        perform d0100_event_ondrop using e_row
                                         e_column
                                         e_dragdropobj.
      endmethod.                    "ondrop
    *       METHOD ondropcomplete                                         *
      method ondropcomplete.
        perform d0100_event_ondropcomplete using e_row
                                                 e_column
                                                 e_dragdropobj.
      endmethod.                    "ondropcomplete
    *       METHOD ondropgetflavor                                        *
      method ondropgetflavor.
        perform d0100_event_ondropgetflavor.
      endmethod.                    "ondropgetflavor
    *       METHOD data_changed                                           *
      method data_changed.
        perform d0100_event_data_changed using er_data_changed
                                               e_onf4
                                               e_onf4_before
                                               e_onf4_after.
      endmethod.                    "data_changed
    *       METHOD data_changed_finished                                  *
      method data_changed_finished.
        perform d0100_event_data_changed_finis.
      endmethod.                    "data_changed_finished
    *       METHOD button_click                                           *
      method button_click.
        perform d0100_event_button_click using es_col_id
                                               es_row_no.
      endmethod.                    "button_click
    *       METHOD onf1                                                   *
      method onf1.
        perform d0100_event_onf1 using e_fieldname
                                       es_row_no
                                       er_event_data.
      endmethod.                                                "onf1
    *       METHOD onf4                                                   *
      method onf4.
        perform d0100_event_onf4 using e_fieldname
                                       e_fieldvalue
                                       es_row_no
                                       er_event_data
                                       et_bad_cells
                                       e_display.
      endmethod.                                                "onf4
    endclass.                    "lcl_events_d0100 IMPLEMENTATION
    * SELECTION-SCREEN                                                     *
    selection-screen begin of block gen with frame.
      selection-screen begin of line.
      parameters:
        p_ext    radiobutton group db.
      selection-screen comment (29) for field p_ext.
      selection-screen comment (29) for field p_d_file.
      parameters:
        p_d_file   type char255.
      selection-screen end of line.
      selection-screen begin of line.
      parameters:
        p_db    radiobutton group db default 'X'.
      selection-screen comment (29) for field p_db.
      selection-screen comment (29) for field p_amount.
      parameters:
        p_amount type i default 30.
      selection-screen end of line.
    selection-screen end of block gen.
    selection-screen begin of block inf with frame.
    parameters:
    p_inf01 as checkbox default con_true,
    p_inf02 as checkbox.
    selection-screen end of block inf.
    selection-screen begin of block app with frame.
    parameters:
    p_appevt as checkbox.
    selection-screen end of block app.
    selection-screen begin of block evt with frame.
    parameters:
    p_evt01 as checkbox, "USER_COMMAND
    p_evt02 as checkbox, "BEFORE_USER_COMMAND
    p_evt03 as checkbox. "AFTER_USER_COMMAND
    selection-screen skip.
    parameters:
    p_evt04 as checkbox, "DOUBLE_CLICK
    p_evt05 as checkbox. "HOTSPOT_CLICK
    select-options:
    p_hotspt for g_field no intervals default 'CARRID'.
    parameters:
    p_evt06 as checkbox. "BUTTON_CLICK
    select-options:
    p_button for g_field no intervals default 'CARRID'.
    selection-screen skip.
    parameters:
    p_evt07 as checkbox.                                        "ONF1
    selection-screen begin of block of4 with frame.
    parameters:
    p_evt08 as checkbox.                                        "ONF4
    select-options:
    p_onf4 for g_field no intervals default 'CARRID'.
    selection-screen begin of line.
    selection-screen comment 5(30) text-c01 for field p_f401.
    parameters:
    p_f401 as checkbox default con_true. "REGISTER
    selection-screen end of line.
    selection-screen begin of line.
    selection-screen comment 5(30) text-c02 for field p_f402.
    parameters:
    p_f402 as checkbox. "GET_BEFORE
    selection-screen end of line.
    selection-screen begin of line.
    selection-screen comment 5(30) text-c03 for field p_f403.
    parameters:
    p_f403 as checkbox. "CHANGE_AFTER
    selection-screen end of line.
    selection-screen begin of line.
    selection-screen comment 5(30) text-c04 for field p_f404.
    parameters:
    p_f404 as checkbox. "INTERNAL_FORMAT
    selection-screen end of line.
    selection-screen end of block of4.
    selection-screen skip.
    parameters:
    p_evt09 as checkbox, "MENU_BUTTON
    p_evt10 as checkbox, "TOOLBAR
    p_evt11 as checkbox. "CONTEXT_MENU_REQUEST
    selection-screen skip.
    parameters:
    p_evt12 as checkbox, "ONDRAG
    p_evt13 as checkbox, "ONDROP
    p_evt14 as checkbox, "ONDROPCOMPLETE
    p_evt15 as checkbox. "ONDROPGETFLAVOR
    selection-screen skip.
    parameters:
    p_evt16 as checkbox. "SUBTOTAL_TEXT
    selection-screen skip.
    parameters:
    p_evt17 as checkbox, "DATA_CHANGED
    p_evt18 as checkbox, "DATA_CHANGED_FINISHED
    p_evt19 as checkbox. "AFTER_REFRESH
    selection-screen skip.
    parameters:
    p_evt20 as checkbox, "DELAYED_CALLBACK
    p_evt21 as checkbox. "DELAYED_CHANGED_SEL_CALLBACK
    selection-screen skip.
    parameters:
    p_evt22 as checkbox, "TOP_OF_PAGE
    p_evt23 as checkbox, "END_OF_LIST
    p_evt24 as checkbox, "PRINT_TOP_OF_PAGE
    p_evt25 as checkbox, "PRINT_END_OF_PAGE
    p_evt26 as checkbox, "PRINT_TOP_OF_LIST
    p_evt27 as checkbox. "PRINT_END_OF_LIST
    selection-screen end of block evt.
    * AT SELECTION-SCREEN ON VALUE-REQUEST                                 *
    at selection-screen on value-request for p_hotspt-low.
      perform d0100_f4_fcode changing p_hotspt-low.
    at selection-screen on value-request for p_button-low.
      perform d0100_f4_fcode changing p_button-low.
    at selection-screen on value-request for p_onf4-low.
      perform d0100_f4_fcode changing p_onf4-low.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_d_file.
      PERFORM f4_file.
    * START-OF-SELECTION                                                   *
    start-of-selection.
      gs_test-select_amount = p_amount.
      gs_test-no_info_popup   = p_inf01.
      gs_test-info_popup_once = p_inf02.
      gs_test-application_events = p_appevt.
      gs_test-event-user_command                 = p_evt01.
      gs_test-event-before_user_command          = p_evt02.
      gs_test-event-after_user_command           = p_evt03.
      gs_test-event-double_click                 = p_evt04.
      gs_test-event-hotspot_click                = p_evt05.
      gs_test-event-button_click                 = p_evt06.
      gs_test-event-onf1                         = p_evt07.
      gs_test-event-onf4                         = p_evt08.
      gs_test-event-menu_button                  = p_evt09.
      gs_test-event-toolbar                      = p_evt10.
      gs_test-event-context_menu_request         = p_evt11.
      gs_test-event-ondrag                       = p_evt12.
      gs_test-event-ondrop                       = p_evt13.
      gs_test-event-ondropcomplete               = p_evt14.
      gs_test-event-ondropgetflavor              = p_evt15.
      gs_test-event-subtotal_text                = p_evt16.
      gs_test-event-data_changed                 = p_evt17.
      gs_test-event-data_changed_finished        = p_evt18.
      gs_test-event-after_refresh                = p_evt19.
      gs_test-event-delayed_callback             = p_evt20.
      gs_test-event-delayed_changed_sel_callback = p_evt21.
      gs_test-event-top_of_page                  = p_evt22.
      gs_test-event-end_of_list                  = p_evt23.
      gs_test-event-print_top_of_page            = p_evt24.
      gs_test-event-print_end_of_page            = p_evt25.
      gs_test-event-print_top_of_list            = p_evt26.
      gs_test-event-print_end_of_list            = p_evt27.
      gs_test-onf4-register        = p_f401.
      gs_test-onf4-get_before      = p_f402.
      gs_test-onf4-change_after    = p_f403.
      gs_test-onf4-internal_format = p_f404.
      if p_evt05 ne space.
        loop at p_hotspt.
          if not p_hotspt-low is initial.
            append p_hotspt-low to gs_test-hotspot_fields.
          endif.
        endloop.
      endif.
      if p_evt06 ne space.
        loop at p_button.
          if not p_button-low is initial.
            append p_button-low to gs_test-button_fields.
          endif.
        endloop.
      endif.
      if p_evt08 ne space.
        loop at p_onf4.
          if not p_onf4-low is initial.
            append p_onf4-low to gs_test-onf4_fields.
          endif.
        endloop.
      endif.
      gs_test-bypassing_buffer = space.
      gs_test-buffer_active    = space.
    * END-OF-SELECTION                                                     *
    end-of-selection.
      call screen 100.
    *&      Module  d0100_set_status  OUTPUT
    *       text
    module d0100_set_status output.
      perform d0100_set_status.
    endmodule.                 " d0100_set_status  OUTPUT
    *&      Module  d0100_prepare_container  OUTPUT
    *       text
    module d0100_prepare_container output.
      perform d0100_prepare_container.
    endmodule.                 " d0100_prepare_container  OUTPUT
    *&      Module  d0100_exit  INPUT
    *       text
    module d0100_exit input.
      perform d0100_exit.
    endmodule.                 " d0100_exit  INPUT
    *&      Module  d0100_fcode  INPUT
    *       text
    module d0100_fcode input.
      perform d0100_fcode.
    endmodule.                 " d0100_fcode  INPUT
    *&      Form  d0100_set_status
    *       text
    form d0100_set_status .
      types: begin of l_ty_s_excl,
               func type syucomm,
             end   of l_ty_s_excl,
             l_ty_t_excl type standard table of l_ty_s_excl.
      data: lt_excl type l_ty_t_excl.
      set pf-status 'D0100' excluding lt_excl.
      set titlebar 'D0100'.
    endform.                    " d0100_set_status
    *&      Form  d0100_prepare_container
    *       text
    form d0100_prepare_container .
      data: lt_fcat             type lvc_t_fcat,
            ls_layo             type lvc_s_layo,
            ls_vari             type disvariant,
            ls_prnt             type lvc_s_prnt,
            l_consistency_check type char1.
      if gr_container_d0100 is initial.
        if cl_gui_alv_grid=>offline( ) is initial.
          create object gr_container_d0100
                        exporting container_name = 'D0100_CONTAINER'.
        endif.
        create object gr_grid_d0100
                      exporting i_parent      = gr_container_d0100
                                i_appl_events = gs_test-application_events.
        DATA: l_filename TYPE string,
              l_struct   TYPE string.
        CASE con_true.
          WHEN p_db.
            perform d0100_get_outtab.
          WHEN p_ext.
            l_struct = 'g_ty_t_outtab'.
            l_filename = p_d_file.
            CALL METHOD cl_salv_test_data=>select_data
              EXPORTING
                structname = l_struct
                SOURCE     = 2
                 filename   = l_filename
    *            AMOUNT     = 30
              CHANGING
                data       = gt_outtab[].
        ENDCASE.
        perform d0100_set_grid_vari     changing ls_vari.
        perform d0100_set_grid_layo     changing ls_layo.
        perform d0100_set_grid_fcat     changing lt_fcat.
        perform d0100_set_grid_onf4     changing lt_fcat.
        perform d0100_set_grid_buttons  changing lt_fcat.
        perform d0100_set_grid_hotspot  changing lt_fcat.
        perform d0100_set_grid_dragdrop changing ls_layo.
        perform d0100_set_grid_edit     changing ls_layo.
        perform d0100_set_grid_events.
        ls_prnt-grpchgedit = con_true.
        call method gr_grid_d0100->set_table_for_first_display
          exporting
            i_buffer_active     = gs_test-buffer_active
            i_bypassing_buffer  = gs_test-bypassing_buffer
            i_consistency_check = l_consistency_check
            is_variant          = ls_vari
            i_save              = 'A'
            i_default           = con_true
            is_layout           = ls_layo
            is_print            = ls_prnt
          changing
            it_outtab           = gt_outtab[]
            it_fieldcatalog     = lt_fcat.
      endif.
    endform.                    " d0100_prepare_container
    *&      Form  d0100_exit
    *       text
    form d0100_exit .
      data: l_okcode like sy-ucomm.
      l_okcode = g_okcode.
      clear g_okcode.
      case l_okcode.
        when con_exit or con_back or con_canc.
          call method gr_grid_d0100->free.
          call method gr_container_d0100->free.
          call method cl_gui_cfw=>flush.
          clear gr_container_d0100.
          clear gr_grid_d0100.
          clear gr_events_d0100.
          set screen 0.
          leave screen.
      endcase.
    endform.                    " d0100_exit
    *&      Form  d0100_fcode
    *       text
    form d0100_fcode .
      data: l_okcode like sy-ucomm.
      l_okcode = g_okcode.
      clear g_okcode.
      call method cl_gui_cfw=>dispatch.
      case l_okcode.
        when con_exit or con_back or con_canc.
          g_okcode = l_okcode.
          perform d0100_exit.
        when others.
      endcase.
    endform.                    " d0100_fcode
    *&      Form  d0100_set_grid_vari
    *       text
    form d0100_set_grid_vari changing cs_vari type disvariant.
      cs_vari-report      = sy-repid.
      cs_vari-handle      = space.
      cs_vari-log_group   = space.
      cs_vari-username    = space.
      cs_vari-variant     = space.
      cs_vari-text        = space.
      cs_vari-dependvars  = space.
    endform.                    " d0100_set_grid_vari
    *&      Form  d0100_set_grid_layo
    *       text
    form d0100_set_grid_layo  changing cs_layo type lvc_s_layo.
    *... ALV-Control: Allgemeine Anzeigeoptionen
      cs_layo-stylefname  = space.
      cs_layo-cwidth_opt  = con_true.
      cs_layo-zebra       = space.
      cs_layo-smalltitle  = space.
      cs_layo-graphics    = space.
      cs_layo-frontend    = space.
      cs_layo-template    = space.
    *... ALV-Control: Gridcustomizing
      cs_layo-no_colexpd  = space.
      cs_layo-no_hgridln  = space.
      cs_layo-no_vgridln  = space.
      cs_layo-no_rowmark  = space.
      cs_layo-no_headers  = space.
      cs_layo-no_merging  = space.
      cs_layo-grid_title  = space.
      cs_layo-no_toolbar  = space.
      cs_layo-sel_mode    = 'D'.
      cs_layo-box_fname   = space.
      cs_layo-sgl_clk_hd  = space.
    *... ALV-Control: Summenoptionen
      cs_layo-totals_bef  = space.
      cs_layo-no_totline  = space.
      cs_layo-numc_total  = space.
      cs_layo-no_utsplit  = space.
    *... ALV-Control: Exceptions
      cs_layo-excp_fname  = 'LIGHTS'.
      cs_layo-excp_rolln  = space.
      cs_layo-excp_conds  = space.
      cs_layo-excp_led    = space.
    *... ALV-Control: Steuerung Interaktion
      cs_layo-detailinit  = space.
      cs_layo-detailtitl  = space.
      cs_layo-keyhot      = space.
      cs_layo-no_keyfix   = space.
      cs_layo-no_author   = space.
      clear cs_layo-s_dragdrop.
    *... ALV-Control: Farben
      cs_layo-info_fname  = space.
      cs_layo-ctab_fname  = space.
    *... ALV-Control: Eingabefähigkeit
      cs_layo-edit        = space.
      cs_layo-edit_mode   = space.
      cs_layo-no_rowins   = space.
      cs_layo-no_rowmove  = space.
    *... ALV-Control: Web-Optionen
      cs_layo-weblook     = space.
      cs_layo-webstyle    = space.
      cs_layo-webrows     = space.
      cs_layo-webxwidth   = space.
      cs_layo-webxheight  = space.
    endform.                    " d0100_set_grid_layo
    *&      Form  d0100_set_grid_fcat
    *       text
    form d0100_set_grid_fcat changing ct_fcat type lvc_t_fcat.
      call function 'LVC_FIELDCATALOG_MERGE'
        exporting
          i_buffer_active        = gs_test-buffer_active
          i_structure_name       = con_sflight
          i_client_never_display = con_true
          i_bypassing_buffer     = gs_test-bypassing_buffer
        changing
          ct_fieldcat            = ct_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.
    endform.                    " d0100_set_grid_fcat
    *&      Form  d0100_set_grid_onf4
    *       text
    form d0100_set_grid_onf4 changing ct_fcat type lvc_t_fcat.
      field-symbols: <ls_fcat> type lvc_s_fcat.
      data: l_field type lvc_fname,
            lt_f4   type lvc_t_f4,
            ls_f4   type lvc_s_f4.
      if gs_test-event-onf4 eq con_true.
        loop at gs_test-onf4_fields into l_field.
          read table ct_fcat assigning <ls_fcat>
                     with key fieldname = l_field.
          if sy-subrc eq 0.
            <ls_fcat>-f4availabl = con_true.
          endif.
          ls_f4-fieldname  = l_field.
          ls_f4-register   = gs_test-onf4-register.
          ls_f4-getbefore  = gs_test-onf4-get_before.
          ls_f4-chngeafter = gs_test-onf4-change_after.
          ls_f4-internal   = gs_test-onf4-internal_format.
          insert ls_f4 into table lt_f4.
        endloop.
      endif.
      check not lt_f4 is initial.
      call method gr_grid_d0100->register_f4_for_fields
        exporting
          it_f4 = lt_f4.
    endform.                    " d0100_set_grid_onf4
    *&      Form  d0100_set_grid_buttons
    *       text
    form d0100_set_grid_buttons changing ct_fcat type lvc_t_fcat.
      field-symbols: <ls_fcat> type lvc_s_fcat.
      data: l_field type lvc_fname.
      loop at gs_test-button_fields into l_field.
    *... Spaltenebene
    *    In Feldkatalog wird Feld STYLE für Spalte auf
    *    cl_gui_alv_grid=>mc_style_button gesetzt
        read table ct_fcat assigning <ls_fcat>
                   with key fieldname = l_field.
        if sy-subrc eq 0.
          <ls_fcat>-style = cl_gui_alv_grid=>mc_style_button.
        endif.
      endloop.
    endform.                    " d0100_set_grid_buttons
    *&      Form  d0100_set_grid_hotspot
    *       text
    form d0100_set_grid_hotspot changing ct_fcat type lvc_t_fcat.
      field-symbols: <ls_fcat> type lvc_s_fcat.
      data: l_field type lvc_fname.
      loop at gs_test-hotspot_fields into l_field.
    *... Spaltenebene
    *    In Feldkatalog wird Feld STYLE für Spalte auf
    *    cl_gui_alv_grid=>mc_style_hotspot gesetzt
        read table ct_fcat assigning <ls_fcat>
                   with key fieldname = l_field.
        if sy-subrc eq 0.
          <ls_fcat>-style = cl_gui_alv_grid=>mc_style_hotspot.
        endif.
      endloop.
    endform.                    " d0100_set_grid_hotspot
    *&      Form  d0100_set_grid_edit
    *       text
    form d0100_set_grid_edit changing cs_layo type lvc_s_layo.
      if gs_test-event-data_changed eq con_true or
         gs_test-event-data_changed_finished eq con_true or
         gs_test-event-after_refresh eq con_true.
        cs_layo-edit = con_true.
        call method gr_grid_d0100->register_edit_event
          exporting
            i_event_id = cl_gui_alv_grid=>mc_evt_enter.
      endif.
    endform.                    " d0100_set_grid_edit
    *&      Form  d0100_set_grid_dragdrop
    *       text
    form d0100_set_grid_dragdrop changing cs_layo type lvc_s_layo.
      data: l_effect       type i,
            l_handle_grid  type i,
            ls_dragdrop    type lvc_s_dd01.
    *... setzen für Zeilen
      create object gr_grid_dragdrop.
      l_effect = cl_dragdrop=>move + cl_dragdrop=>copy.
      call method gr_grid_dragdrop->add
        exporting
          flavor     = 'Line'                                   "#EC NOTEXT
          dragsrc    = 'X'
          droptarget = 'X'
          effect     = l_effect.
      call method gr_grid_dragdrop->get_handle
        importing
          handle = l_handle_grid.
      ls_dragdrop-cntr_ddid = space.
      ls_dragdrop-grid_ddid = space.
      ls_dragdrop-col_ddid  = space.
      ls_dragdrop-row_ddid  = l_handle_grid.
      ls_dragdrop-fieldname = space.
      cs_layo-s_dragdrop = ls_dragdrop.
    endform.                    " d0100_set_grid_dragdrop
    *&      Form  d0100_set_grid_events
    *       text
    form d0100_set_grid_events .
      create object gr_events_d0100.
      if gs_test-event-user_command eq con_true.
        set handler gr_events_d0100->user_command
                    for gr_grid_d0100.
      endif.
      if gs_test-event-before_user_command eq con_true.
        set handler gr_events_d0100->before_user_command
                    for gr_grid_d0100.
      endif.
      if gs_test-event-after_user_command eq con_true.
        set handler gr_events_d0100->after_user_command
                    for gr_grid_d0100.
      endif.
      if gs_test-event-double_click eq con_true.
        set handler gr_events_d0100->double_click
                    for gr_grid_d0100.
      endif.
      if gs_test-event-hotspot_click eq con_true.
        set handler gr_events_d0100->hotspot_click
                    for gr_grid_d0100.
      endif.
      if gs_test-event-button_click eq con_true.
        set handler gr_events_d0100->button_click
                    for gr_grid_d0100.
      endif.
      if gs_test-event-onf1 eq con_true.
        set handler gr_events_d0100->onf1
                    for gr_grid_d0100.
      endif.
      if gs_test-event-onf4 eq con_true.
        set handler gr_events_d0100->onf4
                    for gr_grid_d0100.
      endif.
      if gs_test-event-menu_button eq con_true.
        set handler gr_events_d0100->menu_button
                    for gr_grid_d0100.
      endif.
      if gs_test-event-toolbar eq con_true.
        set handler gr_events_d0100->toolbar
                    for gr_grid_d0100.
      endif.
      if gs_test-event-context_menu_request eq con_true.
        set handler gr_events_d0100->context_menu_request
                    for gr_grid_d0100.
      endif.
      if gs_test-event-ondrag eq con_true.
        set handler gr_events_d0100->ondrag
                    for gr_grid_d0100.
      endif.
      if gs_test-event-ondrop eq con_true.
        set handler gr_events_d0100->ondrop
                    for gr_grid_d0100.
      endif.
      if gs_test-event-ondropcomplete eq con_true.
        set handler gr_events_d0100->ondropcomplete
                    for gr_grid_d0100.
      endif.
      if gs_test-event-ondropgetflavor eq con_true.
        set handler gr_events_d0100->ondropgetflavor
                    for gr_grid_d0100.
      endif.
      if gs_test-event-subtotal_text eq con_true.
        set handler gr_events_d0100->subtotal_text
                    for gr_grid_d0100.
      endif.
      if gs_test-event-data_changed eq con_true.
        set handler gr_events_d0100->data_changed
                    for gr_grid_d0100.
      endif.
      if gs_test-event-data_changed_finished eq con_true.
        set handler gr_events_d0100->data_changed_finished
                    for gr_grid_d0100.
      endif.
      if gs_test-event-after_refresh eq con_true.
        set handler gr_events_d0100->after_refresh
                    for gr_grid_d0100.
      endif.
      if gs_test-event-delayed_callback eq con_true.
        set handler gr_events_d0100->delayed_callback
                    for gr_grid_d0100.
        call method gr_grid_d0100->register_delayed_event
          exporting
            i_event_id = cl_gui_alv_grid=>mc_evt_delayed_move_curr_cell.
      endif.
      if gs_test-event-delayed_changed_sel_callback eq con_true.
        set handler gr_events_d0100->delayed_changed_sel_callback
                    for gr_grid_d0100.
        call method gr_grid_d0100->register_delayed_event
          exporting
            i_event_id = cl_gui_alv_grid=>mc_evt_delayed_change_select.
      endif.
      if gs_test-event-top_of_page eq con_true.
        set handler gr_events_d0100->top_of_page
                    for gr_grid_d0100.
      endif.
      if gs_test-event-end_of_list eq con_true.
        set handler gr_events_d0100->end_of_list
                    for gr_grid_d0100.
      endif.
      if gs_test-event-print_top_of_page eq con_true.
        set handler gr_events_d0100->print_top_of_page
                    for gr_grid_d0100.
      endif.
      if gs_test-event-print_end_of_page eq con_true.
        set handler gr_events_d0100->print_end_of_page
                    for gr_grid_d0100.
      endif.
      if gs_test-event-print_top_of_list eq con_true.
        set handler gr_events_d0100->print_top_of_list
                    for gr_grid_d0100.
      endif.
      if gs_test-event-print_end_of_list eq con_true.
        set handler gr_events_d0100->print_end_of_list
                    for gr_grid_d0100.
      endif.
    endform.                    " d0100_set_grid_events
    *&      Form  d0100_get_outtab
    *       text
    form d0100_get_outtab .
      field-symbols: <ls_outtab> type g_ty_s_outtab.
      data: l_excp_mod      type i,
            l_excp_div      type i,
            l_excp_amnt     type i value 4,
            l_excp          type i,
            lt_carrid       type g_ty_t_carrid,
            ls_carrid       type g_ty_s_carrid,
            l_carrid_amount type i,
            l_carrid_select type i,
            l_carrid_index1 type i,
            lt_connid       type g_ty_t_connid,
            ls_connid       type g_ty_s_connid,
            l_connid_amount type i,                             "#EC NEEDED
            l_connid_select type i,
            l_connid_index1 type i,
            l_connid_index2 type i,
            lt_plane        type g_ty_t_plane,
            ls_plane        type g_ty_s_plane.
      if gs_test-select_amount gt 0.
        select * from (con_sflight) into corresponding fields
                   of table gt_outtab up to gs_test-select_amount rows.
      endif.
      gs_test-select_amount = sy-dbcnt.
      perform d0100_get_carrid changing lt_carrid.
      perform d0100_get_connid changing lt_connid.
      perform d0100_get_plane  using lt_connid changing lt_plane.
      describe table lt_carrid lines l_carri

  • About Variants in ALV grid

    Hi all,
    I am displaying 4grids on a TAB Strip in ALV
    i have created one variant for each grid(report)
    But when i run the prog and press on F4 help for variant parameter, i am getting variants of all the grids
    Is there any way to get only those variants related to a particular grid.
    thanks in advance

    Hi,
    Specify different variant handles for each of the four grids. Some thing like the following,
    <b>ls_variant-report = <your program name>.</b>
    ****Set following handler different for each grid ****reference
    ****something like 'GRD1', 'GRD2' and so on..
    <b>ls_variant-handle = <your grid handle 4 characters>.</b>
        CALL METHOD ref_grid->set_table_for_first_display
          EXPORTING
          I_BYPASSING_BUFFER            =
          I_BUFFER_ACTIVE               =
          I_CONSISTENCY_CHECK           =
          I_STRUCTURE_NAME              =
    <b>        is_variant                    = ls_variant</b>
            i_save                        = 'A'
          I_DEFAULT                     = 'X'
            is_layout                     = ls_layout
          IS_PRINT                      =
          IT_SPECIAL_GROUPS             =
          it_toolbar_excluding          =
          IT_HYPERLINK                  =
          IT_ALV_GRAPHICS               =
          IT_EXCEPT_QINFO               =
          CHANGING
            it_outtab                     = lt_data
            it_fieldcatalog               = lt_fcat
          IT_SORT                       =
          IT_FILTER                     =
          EXCEPTIONS
            invalid_parameter_combination = 1
            program_error                 = 2
            too_many_lines                = 3
            OTHERS                        = 4.
    Hope this helps..
    Sri
    Message was edited by: Srikanth Pinnamaneni

  • Customised Variant to ALV Report

    Hi,
    I had a requirement to display customer name in the output display fo DUNNING Report (this report is ALV).
    i created a new variant and assigned it as default and created the trasnport for the same to move to TEST Server.
    The transport is shown as released, but I am to see the variant in the test server.
    Please guide me.
    Thanks,
    Vengal Rao.

    HI Thomas ,
    I  also have the same requierment , I have created the varaint but I am unable see that one in Quality .
    u have mentioned "The object type in the transport request is R3TR TDAT LT_VARIANT." what is that one .
    In the lay out I have Checked , settings -> layout is there , But Layout management is not  there ....
    Please Guide me....
    Thanks
    Prasad.

Maybe you are looking for

  • 'In Stock' quantities by warehouse in Sales Order

    Hello All Can anyone advise if there is anyway that a user can view the 'in-stock' quantity per warehouse ina sales order. Currently the 'in-stock' column is totalling all stock across all warehouses, but my customer would like to see the quantity in

  • Business Area wise finacial statements - P&L, Balance Sheet

    Hi, My client has a requirement to have business area wise Trail Balance. In OBY6, business area financial statements tick has been done. So it is asking business area in cost objects. Plants are assigned to business areas. But still, I am able to po

  • How to pass a refcursor to a java stored proc

    Hi all, Please forgive me as I am new to Java and JDeveloper.... I want to pass a refcursor to a java stored proc. Does anyone know how to accomplish this? Thanks, dayneo

  • SAP IDOC shows status 03, but no file is written

    We have SAP configured to generate delivery IDOCs when the SAP Delivery document is posted/saved. The IDOC is initially created with status 30. There is batch job RSEOUT00 every 30 mins that collects the IDOCs in status 30 and converts to status 03.

  • Canon XL1 direct to Ipod

    Is it possible to film from a Canon XL1 or GL1 directly to the ipod hard drive? The physical size & 80 gig memory of the Ipod would make it ideal on a shoot. Thank you for your time.