OO ALV - using itab to build catalog

Has anyone got an example of code which allows an OO ALV grid to be displayed based on the field catalog derived from an internal table, where the itab is also the source of the data to be displayed ?. I'm have a lot fun trying to get this to work. It's a piece of cake using data dictionary, but generating a catalog from an internal table causing much grief.
Any help would much appreciated.
Gary King

Please find a sample here,
Note: You need to declare the with LIKE,
Display structure
DATA: BEGIN OF i_object_tab OCCURS 0,
        sele    TYPE c,
        aufnr   LIKE afru-aufnr,
        rueck   LIKE afru-rueck,
        rmzhl   LIKE afru-rmzhl,
        arbpl   LIKE crhd-arbpl,
        grund   LIKE afru-grund,
        ltxa1   LIKE afru-ltxa1,
        isdd    LIKE afru-isdd, "Work Start Date
        isdz    LIKE afru-isdz, "Work Start Time
        iedd    LIKE afru-iedd, "Work End Date
        iedz    LIKE afru-iedz, "Work End Time
        nisdd   LIKE afru-isdd, "New Work Start Date
        nisdz   LIKE afru-isdz, "New Work Start Time
        niedd   LIKE afru-iedd, "New Work End Date
        niedz   LIKE afru-iedz, "New Work End Time
        celltab TYPE lvc_t_styl,
      END OF i_object_tab.
DATA:       ls_fieldcat TYPE slis_t_fieldcat_alv.
*&      Form  build_field_catalog
      text
-->  p1        text
<--  p2        text
FORM build_field_catalog .
  DATA: ls_fldcat TYPE lvc_s_fcat.
  CLEAR ls_fieldcat. REFRESH ls_fieldcat.
  CLEAR lt_fcat. REFRESH lt_fcat.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name         = sy-cprog
      i_inclname             = sy-cprog
      i_internal_tabname     = 'I_OBJECT_TAB'
    CHANGING
      ct_fieldcat            = ls_fieldcat[]
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.
  LOOP AT ls_fieldcat.
    CLEAR ls_fldcat.
    ls_fldcat-fieldname = ls_fieldcat-fieldname.     "Fieldname
    ls_fldcat-ref_table = ls_fieldcat-tabname.       "DDIC ref struct
    ls_fldcat-inttype   = ls_fieldcat-inttype.       "Data type
    ls_fldcat-outputlen = ls_fieldcat-outputlen.     "Column width
    ls_fldcat-coltext   = ls_fieldcat-seltext_m.     "Column Header
    ls_fldcat-seltext   = ls_fieldcat-seltext_m.     "Column Desc
    ls_fldcat-ref_field = ls_fieldcat-ref_fieldname. "Reference field
    ls_fldcat-ref_table = ls_fieldcat-ref_tabname.   "Reference table
    CASE ls_fldcat-fieldname.
      WHEN 'SELE'.
        ls_fldcat-col_pos   = '1'.
        ls_fldcat-checkbox  = 'X'.
        ls_fldcat-coltext   = text-002.
        ls_fldcat-seltext   = text-002.
        ls_fldcat-edit      = 'X'.
      WHEN 'AUFNR'.
        ls_fldcat-col_pos   = '2'.
        ls_fldcat-coltext   = text-003.
        ls_fldcat-seltext   = text-003.
        ls_fldcat-fix_column = 'X'.
        ls_fldcat-emphasize = 'C400'.
      WHEN 'RUECK'.
        ls_fldcat-col_pos   = '3'.
        ls_fldcat-coltext   = text-004.
        ls_fldcat-seltext   = text-004.
        ls_fldcat-emphasize = 'C400'.
      WHEN 'RMZHL'.
        ls_fldcat-col_pos   = '4'.
        ls_fldcat-coltext   = text-005.
        ls_fldcat-seltext   = text-005.
        ls_fldcat-emphasize = 'C400'.
      WHEN 'ARBPL'.
        ls_fldcat-col_pos   = '5'.
        ls_fldcat-coltext   = text-006.
        ls_fldcat-seltext   = text-006.
        ls_fldcat-emphasize = 'C600'.
      WHEN 'GRUND'.
        ls_fldcat-col_pos   = '6'.
        ls_fldcat-coltext   = text-007.
        ls_fldcat-seltext   = text-007.
        ls_fldcat-emphasize = 'C600'.
      WHEN 'LTXA1'.
        ls_fldcat-col_pos   = '7'.
        ls_fldcat-coltext   = text-008.
        ls_fldcat-seltext   = text-008.
        ls_fldcat-emphasize = 'C600'.
      WHEN 'ISDD'.
        ls_fldcat-col_pos   = '8'.
        ls_fldcat-coltext   = text-009.
        ls_fldcat-seltext   = text-009.
        ls_fldcat-emphasize = 'C500'.
      WHEN 'ISDZ'.
        ls_fldcat-col_pos   = '9'.
        ls_fldcat-coltext   = text-010.
        ls_fldcat-seltext   = text-010.
        ls_fldcat-emphasize = 'C500'.
      WHEN 'IEDD'.
        ls_fldcat-col_pos   = '10'.
        ls_fldcat-coltext   = text-011.
        ls_fldcat-seltext   = text-011.
        ls_fldcat-emphasize = 'C500'.
      WHEN 'IEDZ'.
        ls_fldcat-col_pos   = '11'.
        ls_fldcat-coltext   = text-012.
        ls_fldcat-seltext   = text-012.
        ls_fldcat-emphasize = 'C500'.
      WHEN 'NISDD'.
        ls_fldcat-col_pos   = '12'.
        ls_fldcat-coltext   = text-013.
        ls_fldcat-seltext   = text-013.
        ls_fldcat-edit      = 'X'.
      WHEN 'NISDZ'.
        ls_fldcat-col_pos   = '13'.
        ls_fldcat-coltext   = text-014.
        ls_fldcat-seltext   = text-014.
        ls_fldcat-edit      = 'X'.
      WHEN 'NIEDD'.
        ls_fldcat-col_pos   = '14'.
        ls_fldcat-coltext   = text-015.
        ls_fldcat-seltext   = text-015.
        ls_fldcat-edit      = 'X'.
      WHEN 'NIEDZ'.
        ls_fldcat-col_pos   = '15'.
        ls_fldcat-coltext   = text-016.
        ls_fldcat-seltext   = text-016.
        ls_fldcat-edit      = 'X'.
    ENDCASE.
    APPEND ls_fldcat TO lt_fcat.
    CLEAR ls_fldcat.
  ENDLOOP.
ENDFORM.                    " build_field_catalog
Regards
Kathirvel

Similar Messages

  • List display for ALV using class and methods

    Hi friends
    I want the list display for the ALV using Class and methods
    which class and methods i can use.
    Here we can't use the REUSE_ALV_LIST_DISPLAY and also GRID
    I was done GRID display using class and methods but i want only list display for using class.
    plz Give me sample code of list display not for grid.
    Thanks
    Nani.

    hi
    please check with this code...
    declare grid and container.
    DATA : o_alvgrid TYPE REF TO cl_gui_alv_grid,
    o_dockingcontainer TYPE REF TO cl_gui_docking_container,
    i_fieldcat TYPE lvc_t_fcat,"fieldcatalogue
    w_layout TYPE lvc_s_layo."layout
    If any events like double click,etc., are needed we have to add additional functionality.
    call the screen in program.
    Then , create the container as follows
    IF cl_gui_alv_grid=>offline( ) IS INITIAL.
    CREATE OBJECT o_dockingcontainer
    EXPORTING
    ratio = '95'
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    create_error = 3
    lifetime_error = 4
    lifetime_dynpro_dynpro_link = 5
    others = 6.
    ENDIF.
    CREATE OBJECT o_alvgrid
    EXPORTING
    i_parent = o_dockingcontainer.
    Build the fieldcatalog
    create a output structure in SEll for the ALV output
    CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
    i_structure_name = <alv output>
    CHANGING
    ct_fieldcat = i_fieldcat[]
    EXCEPTIONS
    inconsistent_interface = 1
    program_error = 2
    OTHERS = 3.
    IF sy-subrc <> 0.
    MESSAGE i030."Error in building the field catalogue
    LEAVE LIST-PROCESSING.
    ENDIF.
    *If you need to modify the field catalog,modify it using field sysmbols
    *setting the layout
    w_layout-grid_title = title.
    w_layout-zebra = 'X'.
    then displaying the output
    CALL METHOD o_alvgrid->set_table_for_first_display
    EXPORTING
    i_save = 'A'
    is_layout = w_layout
    CHANGING
    it_outtab = i_output[]
    it_fieldcatalog = i_fieldcat[]
    EXCEPTIONS
    invalid_parameter_combination = 1
    program_error = 2
    too_many_lines = 3
    OTHERS = 4.
    IF sy-subrc <> 0.
    MESSAGE i032 ."Error in Displaying
    LEAVE LIST-PROCESSING.
    ENDIF.
    *After that in PAI of the screen, you need to free the *object while going back from the screen(according to *your requirement)
    MODULE user_command_9001 INPUT.
    CASE sy-ucomm.
    WHEN 'EXIT' OR 'CANC'.
    PERFORM f9600_free_objects:
    USING o_alvgrid 'ALV' text-e02,
    USING o_dockingcontainer 'DOCKING'
    text-e01.
    LEAVE PROGRAM.
    ENDCASE.
    ENDMODULE. " USER_COMMAND_9001 INPUT
    *in the program, write the follwoing code
    FORM f9600_free_objects USING pobject
    value(ptype)
    value(ptext).
    DATA: l_objectalv TYPE REF TO cl_gui_alv_grid.
    CASE ptype.
    WHEN 'ALV'.
    l_objectalv = pobject.
    IF NOT ( l_objectalv IS INITIAL ).
    CALL METHOD l_objectalv->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, l_objectalv.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN 'DOCKING'.
    DATA: lobjectdock TYPE REF TO cl_gui_docking_container.
    lobjectdock = pobject.
    IF NOT ( lobjectdock IS INITIAL ).
    CALL METHOD lobjectdock->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, lobjectdock.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN 'CONTAINER'.
    DATA: lobjectcontainer TYPE REF TO cl_gui_container.
    lobjectcontainer = pobject.
    IF NOT ( lobjectcontainer IS INITIAL ).
    CALL METHOD lobjectcontainer->free
    EXCEPTIONS
    cntl_error = 1
    cntl_system_error = 2
    OTHERS = 3.
    CLEAR: pobject, lobjectcontainer.
    PERFORM f9700_error_handle USING ptext.
    ENDIF.
    WHEN OTHERS.
    sy-subrc = 1.
    PERFORM f9700_error_handle USING
    text-e04.
    ENDCASE.
    ENDFORM. " f9600_free_objects
    FORM f9700_error_handle USING value(ptext).
    IF sy-subrc NE 0.
    CALL FUNCTION 'POPUP_TO_INFORM'
    EXPORTING
    titel = text-e03
    txt2 = sy-subrc
    txt1 = ptext.
    ENDIF.
    endform.
    also check with this
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/BCSRVALV/BCSRVALV.pdf
    Hope this helps
    if it helped, you can acknowledge the same by rewarding
    regards
    dinesh

  • Alv using OO

    Hi,
    I'm trying out ALV using OO approach. Im building a very basic alv, However the alv is not displaying anything. Can any one tell me where is the bug ?
    Here is my code
    REPORT  ztest.
    TYPES:BEGIN OF REC,
            A(30),
          END OF REC.
    *--- ALV Grid instance reference
    DATA gr_alvgrid TYPE REF TO cl_gui_alv_grid .
    *--- Name of the custom control added on the screen
    DATA gc_custom_control_name TYPE scrfname." VALUE u2018cc_alvu2019 .
    *--- Custom container instance reference
    DATA gr_ccontainer TYPE REF TO cl_gui_custom_container .
    *--- Field catalog table
    DATA gt_fieldcat TYPE lvc_t_fcat .
    *--- Layout structure
    DATA gs_layout TYPE lvc_s_layo .
    DATA: int_tab TYPE STANDARD TABLE OF rec WITH HEADER LINE.
    BREAK-POINT.
    PERFORM populate_data.
    IF gr_ccontainer IS INITIAL.
      CREATE OBJECT gr_ccontainer
        EXPORTING
          container_name              = 'CC_ALV'
        EXCEPTIONS
          cntl_error                  = 1
          cntl_system_error           = 2
          create_error                = 3
          lifetime_error              = 4
          lifetime_dynpro_dynpro_link = 5
          OTHERS                      = 6.
      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.
      CALL METHOD gr_alvgrid->set_table_for_first_display
       EXPORTING
        I_STRUCTURE_NAME = 'REC'
         is_layout = gs_layout
          CHANGING
          it_outtab = int_tab[]
          it_fieldcatalog = gt_fieldcat[]
        EXCEPTIONS
          invalid_parameter_combination = 1
          program_error = 2
          too_many_lines = 3
          OTHERS = 4 .
          SY-SUBRC = SY-SUBRC.
    ELSE.
      CALL METHOD gr_alvgrid->refresh_table_display
      EXCEPTIONS
      finished = 1
      OTHERS = 2 .
          SY-SUBRC = SY-SUBRC.
    ENDIF.
    *&      Form  populate_data
          text
    FORM populate_data.
      DATA ls_fcat TYPE lvc_s_fcat .
      INT_TAB-A = 'HI'.
      APPEND INT_TAB.
      INT_TAB-A = 'HELLO'.
      APPEND INT_TAB.
      ls_fcat-tabname = 'INT_TAB'.
      ls_fcat-fieldname = 'A' .
      LS_FCAT-COL_POS = 1.
      ls_fcat-inttype = 'C' .
      ls_fcat-outputlen = '30' .
      ls_fcat-coltext = 'test' .
      ls_fcat-seltext = 'TEST' .
      APPEND ls_fcat TO gt_fieldcat .
      clear ls_fcat.
    ENDFORM.                    "populate_data

    Hi,
    You are not calling the screen in your program where you have placed your custom container. Hence it is displaying nothing.
    Also the place where you are instanciating the objects is not correct.
    Jus check the program BCALV_GRID_02 for correctly creating a list using OO approach.
    Cheers,
    Hakim

  • UNLOCKING single row in ALV using Funtions

    hai,
    Actually i am displaying a table in ALV USING FUNCTIONS and i am locking key values.
    Now my reqment is , if i press (NEW, COPY )button then i have to add one new row and that row should be Unlocked to insert values.
    Is it possible USING FUNCTIONS(I have a solution using CLASSES)

    Hi ramesh,
    it is possible with the LVC FM.i gave the sample yesterday did you check that..
    if not check it to day..
    REPORT ZTESTALV.
    TYPE-POOLS: SLIS.
    *- Fieldcatalog
    DATA: IT_FIELDCAT  TYPE LVC_T_FCAT,
          IT_FIELDCAT1  TYPE SLIS_T_FIELDCAT_ALV..
    *- For Events
    DATA:IT_EVENTS TYPE SLIS_T_EVENT.
    DATA:  X_FIELDCAT  TYPE LVC_S_FCAT,
            X_FIELDCAT1  TYPE SLIS_FIELDCAT_ALV.
    DATA:X_LAYOUT TYPE LVC_S_LAYO.
    "{ FOR DISABLE
    DATA: LS_EDIT TYPE LVC_S_STYL,
          LT_EDIT TYPE LVC_T_STYL.
    "} FOR DISABLE
    DATA: BEGIN OF IT_VBAP OCCURS 0,
          VBELN LIKE VBAP-VBELN,
          POSNR LIKE VBAP-POSNR,
          HANDLE_STYLE TYPE LVC_T_STYL, "FOR DISABLE
         END OF IT_VBAP.
    DATA: LS_OUTTAB LIKE LINE OF IT_VBAP.
    SELECT VBELN
           POSNR
           UP TO 10 ROWS
          INTO CORRESPONDING FIELDS OF TABLE IT_VBAP
          FROM VBAP.
    DATA:L_POS TYPE I VALUE 1.
    CLEAR: L_POS.
    L_POS = L_POS + 1.
    X_FIELDCAT-SELTEXT = 'VBELN'.
    X_FIELDCAT-FIELDNAME = 'VBELN'.
    X_FIELDCAT-TABNAME = 'ITAB'.
    X_FIELDCAT-COL_POS    = L_POS.
    X_FIELDCAT-EDIT = 'X'.
    X_FIELDCAT-OUTPUTLEN = '10'.
    x_fieldcat-ref_field = 'VBELN'.
    x_fieldcat-ref_table = 'VBAK'.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    L_POS = L_POS + 1.
    X_FIELDCAT-SELTEXT = 'POSNR'.
    X_FIELDCAT-FIELDNAME = 'POSNR'.
    X_FIELDCAT-TABNAME = 'ITAB'.
    X_FIELDCAT-COL_POS    = L_POS.
    X_FIELDCAT-EDIT = 'X'.
    X_FIELDCAT-OUTPUTLEN = '5'.
    APPEND X_FIELDCAT TO IT_FIELDCAT.
    CLEAR X_FIELDCAT.
    L_POS = L_POS + 1.
    "{FOR DISABLE HERE 6ROW IS DISABLED
    SY-TABIX = 6.
    LS_EDIT-FIELDNAME = 'VBELN'.
    LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    LS_EDIT-STYLE2 = SPACE.
    LS_EDIT-STYLE3 = SPACE.
    LS_EDIT-STYLE4 = SPACE.
    LS_EDIT-MAXLEN = 10.
    INSERT LS_EDIT INTO TABLE LT_EDIT.
    LS_EDIT-FIELDNAME = 'POSNR'.
    LS_EDIT-STYLE = CL_GUI_ALV_GRID=>MC_STYLE_DISABLED.
    LS_EDIT-STYLE2 = SPACE.
    LS_EDIT-STYLE3 = SPACE.
    LS_EDIT-STYLE4 = SPACE.
    LS_EDIT-MAXLEN = 6.
    INSERT LS_EDIT INTO TABLE LT_EDIT.
    INSERT LINES OF LT_EDIT INTO TABLE LS_OUTTAB-HANDLE_STYLE.
    MODIFY IT_VBAP INDEX SY-TABIX FROM LS_OUTTAB  TRANSPORTING
                                      HANDLE_STYLE .
    X_LAYOUT-STYLEFNAME = 'HANDLE_STYLE'.
    "} UP TO HERE
    CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
      EXPORTING
        I_CALLBACK_PROGRAM = SY-REPID
        IS_LAYOUT_LVC      = X_LAYOUT
        IT_FIELDCAT_LVC    = IT_FIELDCAT
      TABLES
        T_OUTTAB           = IT_VBAP[]
      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.
    Regards
    vijay

  • How to get Subtotal text in ALV using OOPS

    hi,
    Can any one pls help me out getting  <b>subtotals text</b> in ALV using OOPS concepts....Pls provide me if any of u have  sample code for that......
    my code:
    data:gr_grid_d0100 type ref to cl_gui_alv_grid.
    data : gr_events_d0100   type ref to lcl_events_d0100.
    classes**********
    class lcl_events_d0100 definition.
      public section.
        methods:
    subtotal_text for event subtotal_text
                        of cl_gui_alv_grid
                        importing es_subtottxt_info
                        ep_subtot_line
                        e_event_data.
    endclass.
    class lcl_events_d0100 implementation.
    method subtotal_text.
        perform d0100_event_subtotal_text using       es_subtottxt_info
    ep_subtot_line
    e_event_data.
      endmethod.                    "subtotal_text
    endclass.
    data : gr_event_handler type ref to lcl_events_d0100.
    SET HANDLER gr_event_handler->subtotal_text FOR wcl_alv_grid_request
    FORM d0100_event_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_text TYPE string.
      l_text = es_subtottxt_info.
      FIELD-SYMBOLS: <fs> TYPE ANY.
      ASSIGN e_event_data->m_data->* TO <fs>.
                            <fs> = text-007.

    hi vijay
    check this code
    if you want to use field symbols.
    data: total type ref to data,
    subtotal1 type ref to data.
    field-symbols <total> like gt_sflight.
    field-symbols <subtotal1> like gt_sflight.
    call method grid1->get_subtotals
    importing
    ep_collect00 = total
    ep_collect01 = subtotal1.
    assign total->* to <total>.
    assign subtotal1->* to <subtotal1>.
    or u can use
    U have to do the subtotal column wise.In the field catalog specify the following in addition to the corresponding field name(i.e. Column)
    DATA ls_fcat TYPE lvc_s_fcat.
    ls_fcat-do_sum = 'X'.
    Hope this helps u out.
    Thanks & Regards,
    naveen

  • Events in ALV Using OO ...

    I wrote an ALV using OO . My problem is that i can't control the events for Hotspot , Double Click etc .
    Look my code please to find the problem.
    *& Report  YDP_ALV_USING_OO
    REPORT  YDP_ALV_USING_OO.
    INCLUDE <CL_ALV_CONTROL>.
          CLASS lcl_event_handler DEFINITION
    CLASS LCL_EVENT_HANDLER DEFINITION .
      PUBLIC SECTION .
        METHODS:
    *DOUBLE-CLICK CONTROL
        HANDLE_DOUBLE_CLICK
        FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW E_COLUMN ES_ROW_NO,
    *Hotspot click control
        HANDLE_HOTSPOT_CLICK
        FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID
        IMPORTING E_ROW_ID
                  E_COLUMN_ID
                  ES_ROW_NO ,
    *To implement user commands
        HANDLE_USER_COMMAND
        FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
        IMPORTING E_UCOMM .
    ENDCLASS.                    "lcl_event_handler DEFINITION
          CLASS lcl_event_handler IMPLEMENTATION
    CLASS LCL_EVENT_HANDLER IMPLEMENTATION .
    *Handle Double Click
      METHOD HANDLE_DOUBLE_CLICK .
        PERFORM HANDLE_DOUBLE_CLICK USING E_ROW
                                          E_COLUMN
                                          ES_ROW_NO.
      ENDMETHOD .                    "handle_double_click
    *Handle Hotspot Click
      METHOD HANDLE_HOTSPOT_CLICK .
        PERFORM HANDLE_HOTSPOT_CLICK USING E_ROW_ID
                                           E_COLUMN_ID
                                           ES_ROW_NO .
      ENDMETHOD .                    "handle_hotspot_click
    *--Handle User Command
      METHOD HANDLE_USER_COMMAND .
        PERFORM HANDLE_USER_COMMAND USING E_UCOMM .
      ENDMETHOD.                    "handle_user_command
    ENDCLASS .                    "lcl_event_handler IMPLEMENTATION
    *&      Form  handle_hotspot_click
          text
         -->I_ROW_ID     text
         -->I_COLUMN_ID  text
         -->IS_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.
      READ TABLE ITAB INDEX IS_ROW_NO-ROW_ID .
      IF SY-SUBRC = 0 AND I_COLUMN_ID-FIELDNAME = 'REWARD' .
        BREAK DFREARAS.
      ENDIF .
    ENDFORM .                    "handle_hotspot_click
    *&      Form  handle_double_click
          text
         -->I_ROW      text
         -->I_COLUMN   text
         -->IS_ROW_NO  text
    FORM HANDLE_DOUBLE_CLICK USING I_ROW TYPE LVC_S_ROW
    I_COLUMN TYPE LVC_S_COL
    IS_ROW_NO TYPE LVC_S_ROID.
       BREAK DFREARAS.
      READ TABLE ITAB INDEX IS_ROW_NO-ROW_ID .
      IF SY-SUBRC = 0 AND I_COLUMN-FIELDNAME = 'COMPL_NO' .
        BREAK DFREARAS.
      ENDIF .
    ENDFORM .                    "handle_double_click
    Please help ...

    THANKS EVERYONE ....
    I FOUND IT ...

  • Reg..ALV using classes

    i have displayed a ALV report with a push button 'HST'.
    When i select a particular line(vbeln) and click on pushbutton 'HST' it has to display me a interactive report based on the condition vbeln and posnr.
    can anyone help me with the detail code using classes..
    answers will be rewarded....
    regards,
    kumar

    Hi,
    Class ALV Specification
    Classes used:
    CL_GUI_ALV_GRID
    Example of ALV using Classes
    DATA: lcl_alv TYPE REF TO cl_gui_alv_grid,
          t_flights TYPE STANDARD TABLE OF FLIGHTS.
    SELECT * FROM flights INTO TABLE t_flights.
    CREATE OBJECT lcl_alv
        EXPORTING I_PARENT = cl_gui_container=>screen0.
    CALL METHOD lcl_alv->set_table_for_first_display
        EXPORTING
           I_STRUCTURE_NAME = 'FLIGHTS'
        CHANGING
           IT_OUTTAB = t_flights.
    CALL SCREEN 100.
    Example Details
    This is a simple example of the class ALV, we do not need to create, in this case, a field catalog because we are using the whole table of FLIGHTS and we will show all the fields that this table contains, we do this at the I_STRUCTURE_NAME = 'FLIGHTS' statement.
    The CL_GUI_ALV_GRID constructor needs the I_PARENT parameter to define where it will be show, in the example we set the entire screen to place the ALV.
    reward if helpful

  • HI   ALV USING OOPS CONCEPT

    hi
    i would like to have coding for total and subtotal in alv using oops concept and (not using function module).
    also i would like to have coding for cell color and heading and footer.
    thanx in adv
    rocky

    Hi Rocky,
    please check this link
    http://www.****************/Tutorials/ALV/Total/text.htm
    While modifying field catalog , try the following.
    Field-symbols: <lfs_fieldcat> TYPE lvc_s_fcat.
    LOOP AT i_fieldcat ASSIGNING <lfs_fieldcat>.
    CASE <lfs_fieldcat>-fieldname.
    WHEN 'LOSGR'.
    <lfs_fieldcat>-coltext = text-007.
    <lfs_fieldcat>-do_sum = c_x.
    ENDCASE.
    ENDLOOP.
    Or if you want to use field symbols.
    data: total type ref to data,
    subtotal1 type ref to data.
    field-symbols <total> like gt_sflight.
    field-symbols <subtotal1> like gt_sflight.
    call method grid1->get_subtotals
    importing
    ep_collect00 = total
    ep_collect01 = subtotal1.
    assign total->* to <total>.
    assign subtotal1->* to <subtotal1>.
    Best regards,
    raam

  • Displaying subtotal text in alv using the fm reuse_alv_grid_display

    Hi,
    Can someone help me with this, I am having some problem in displaying the subtotal text in subtotal field in alv. I tried populating the layout of the alv with the text that will be displayed on the output but nothing happens. Is is possible to display the subtotal text in alv using the fm reuse_alv_grid_display? If so, what are the things that I must consider to display the subtotal text in alv output.
    Please help me with this. I promise to give you points if you resolve this problem.
    Thanks,
    Gie

    Hi ,
         Make it use in your code and let me know if u have any concerns...
        Use "Subtotal_text" in events table.
    here GTOTAL is field in itab on which we sortindf data, and use your own field on which field u want to sort...
    refresh gt_event.
    clear gw_event.
    call function 'REUSE_ALV_EVENTS_GET'
       EXPORTING
         i_list_type = 0
       IMPORTING
         et_events   = gt_event.
    Subtotal
    read table gt_event with key name = slis_ev_subtotal_text into gw_event.
    if sy-subrc = 0.
       move 'SUBTOTAL_TEXT' to gw_event-form.
       append gw_event to gt_event.
    endif.
         form subtotal_text using uw_subtot_line type ty_main
                    uv_subtottxt type slis_subtot_text.  "#EC CALLED
    if uv_subtottxt-criteria = 'GTOTAL'.
       uv_subtottxt-display_text_for_subtotal = 'TOTAL'.
    endif.
         *FORM build_sort .
    refresh gt_sort.
    gw_sort-spos      = 1.
    gw_sort-fieldname = 'GTOTAL'.
    gw_sort-tabname   = 'GT_MAIN'.
    gw_sort-up        = 'X'.
    gw_sort-subtot    = 'X'.
    APPEND gw_sort TO gt_sort.
    CLEAR gw_sort.
    Reward points once its useful..

  • ALV using ABAP Classes and Objects

    Hi All,
    I am trying to print the values in my internal table using ALV, using ABAP classes and objects. Here the title for columns are picked based on the title specified in the data element. I want to set the title of my columns by my own. how to achieve this ?. Please provide me a sample code if possible.
    thanks & regards,
    Navneeth.K

    Hello Navneeth
    The following sample report shows how to build and modify a fieldcatalog (routine <b>BUILD_FIELDCATALOG_KNB1</b>).
    *& Report  ZUS_SDN_ALVGRID_EVENTS
    REPORT  zus_sdn_alvgrid_events.
    DATA:
      gd_okcode        TYPE ui_func,
      gt_fcat          TYPE lvc_t_fcat,
      go_docking       TYPE REF TO cl_gui_docking_container,
      go_grid1         TYPE REF TO cl_gui_alv_grid.
    DATA:
      gt_knb1          TYPE STANDARD TABLE OF knb1.
    PARAMETERS:
      p_bukrs      TYPE bukrs  DEFAULT '2000'  OBLIGATORY.
    *       CLASS lcl_eventhandler DEFINITION
    CLASS lcl_eventhandler DEFINITION.
      PUBLIC SECTION.
        CLASS-METHODS:
          handle_hotspot_click FOR EVENT hotspot_click OF cl_gui_alv_grid
            IMPORTING
              e_row_id
              e_column_id
              es_row_no
              sender.
    ENDCLASS.                    "lcl_eventhandler DEFINITION
    *       CLASS lcl_eventhandler IMPLEMENTATION
    CLASS lcl_eventhandler IMPLEMENTATION.
      METHOD handle_hotspot_click.
    *   define local data
        DATA:
          ls_knb1     TYPE knb1,
          ls_col_id   TYPE lvc_s_col.
        READ TABLE gt_knb1 INTO ls_knb1 INDEX e_row_id-index.
        CHECK ( ls_knb1-kunnr IS NOT INITIAL ).
        CASE e_column_id-fieldname.
          WHEN 'KUNNR'.
            SET PARAMETER ID 'KUN' FIELD ls_knb1-kunnr.
            SET PARAMETER ID 'BUK' FIELD ls_knb1-bukrs.
            CALL TRANSACTION 'XD03' AND SKIP FIRST SCREEN.
          WHEN 'ERNAM'.
    *        SET PARAMETER ID 'USR' FIELD ls_knb1-ernam.
    *        NOTE: no parameter id available, yet simply show the priciple
            CALL TRANSACTION 'SU01' AND SKIP FIRST SCREEN.
          WHEN OTHERS.
    *       do nothing
        ENDCASE.
    *   Set active cell to field BUKRS otherwise the focus is still on
    *   field KUNNR which will always raise event HOTSPOT_CLICK
        ls_col_id-fieldname = 'BUKRS'.
        CALL METHOD go_grid1->set_current_cell_via_id
          EXPORTING
            is_row_id    = e_row_id
            is_column_id = ls_col_id.
      ENDMETHOD.                    "handle_hotspot_click
    ENDCLASS.                    "lcl_eventhandler IMPLEMENTATION
    START-OF-SELECTION.
      SELECT        * FROM  knb1 INTO TABLE gt_knb1
             WHERE  bukrs  = p_bukrs.
    * Create docking container
      CREATE OBJECT go_docking
        EXPORTING
          parent                      = cl_gui_container=>screen0
          ratio                       = 90
        EXCEPTIONS
          OTHERS                      = 6.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Create ALV grid
      CREATE OBJECT go_grid1
        EXPORTING
          i_parent          = go_docking
        EXCEPTIONS
          OTHERS            = 5.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Set event handler
      SET HANDLER:
        lcl_eventhandler=>handle_hotspot_click FOR go_grid1.
    * Build fieldcatalog and set hotspot for field KUNNR
      PERFORM build_fieldcatalog_knb1.
    * Display data
      CALL METHOD go_grid1->set_table_for_first_display
        CHANGING
          it_outtab       = gt_knb1
          it_fieldcatalog = gt_fcat
        EXCEPTIONS
          OTHERS          = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * Link the docking container to the target dynpro
      CALL METHOD go_docking->link
        EXPORTING
          repid                       = syst-repid
          dynnr                       = '0100'
    *      CONTAINER                   =
        EXCEPTIONS
          OTHERS                      = 4.
      IF sy-subrc <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    * ok-code field = GD_OKCODE
      CALL SCREEN '0100'.
    END-OF-SELECTION.
    *&      Module  STATUS_0100  OUTPUT
    *       text
    MODULE status_0100 OUTPUT.
      SET PF-STATUS 'STATUS_0100'.
    *  SET TITLEBAR 'xxx'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
    *       text
    MODULE user_command_0100 INPUT.
      CASE gd_okcode.
        WHEN 'BACK' OR
             'END'  OR
             'CANC'.
          SET SCREEN 0. LEAVE SCREEN.
        WHEN OTHERS.
      ENDCASE.
      CLEAR: gd_okcode.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  BUILD_FIELDCATALOG_KNB1
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM build_fieldcatalog_knb1 .
    * define local data
      DATA:
        ls_fcat        TYPE lvc_s_fcat.
      CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
        EXPORTING
    *     I_BUFFER_ACTIVE              =
          i_structure_name             = 'KNB1'
    *     I_CLIENT_NEVER_DISPLAY       = 'X'
    *     I_BYPASSING_BUFFER           =
    *     I_INTERNAL_TABNAME           =
        CHANGING
          ct_fieldcat                  = gt_fcat
        EXCEPTIONS
          inconsistent_interface       = 1
          program_error                = 2
          OTHERS                       = 3.
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
      LOOP AT gt_fcat INTO ls_fcat
              WHERE ( fieldname = 'KUNNR'  OR
                      fieldname = 'ERNAM' ).
        ls_fcat-hotspot = abap_true.
        ls_fcat-scrtext_s  = '<short text>'.  " short text of column
        ls_fcat-scrtext_m = '<medium text>'.  " medium text of column
        ls_fcat-scrtext_l   = '<long text>'.  " longtext text of column
        ls_fcat-tooltip      = '...'.  " ALV control: Tool tip for column header
        ls_fcat-coltext    = '...'.   " ALV control: Column heading
        MODIFY gt_fcat FROM ls_fcat.
      ENDLOOP.
    ENDFORM.                    " BUILD_FIELDCATALOG_KNB1
    Regards
      Uwe

  • Problem activating the back and exit button with the ALV using OO

    I have wrote my first alv using Methods.My problem is that i can't activete the BACK and  EXIT button in the standart toolbar .
    Look my code please .....
    Without PF-STATUS can i do it ?
    *& Report  YDP_DOUBLE_ALV
    REPORT  YDP_DOUBLE_ALV.
    TABLES : YQM_CERT , MARA , YOUTPUT_APPL.
    DATA : ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
           CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
           FIELD_CAT TYPE LVC_T_FCAT,
           LAYOUT TYPE LVC_S_LAYO.
    DATA : ALV_GRID2 TYPE REF TO CL_GUI_ALV_GRID,
           CUSTOM_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    *       FIELD_CAT TYPE LVC_T_FCAT,
    *       LAYOUT TYPE LVC_S_LAYO.
    DATA: DYNNR TYPE SY-DYNNR,
          REPID TYPE SY-REPID.
    DATA: OK_CODE TYPE SY-UCOMM.
    DATA : BEGIN OF ITAB OCCURS 0.
            INCLUDE STRUCTURE YQM_CERT.
    DATA   END OF ITAB.
    DATA : BEGIN OF ITAB1 OCCURS 0.
            INCLUDE STRUCTURE YOUTPUT_APPL.
    DATA   END OF ITAB1.
    *  MODULE DISPLAY_ALV OUTPUT
    MODULE DISPLAY_ALV OUTPUT.
      SET PF-STATUS 'ZST9'.
      PERFORM DISPLAY_ALV.
    ENDMODULE.                    "DISPLAY_ALV OUTPUT
                       "DISPLAY_ALV OUTPUT
    *& Module USER_COMMAND_0100 INPUT
    * text
    MODULE USER_COMMAND_0100 INPUT.
      CASE OK_CODE.
        WHEN 'BACK'.
          LEAVE TO SCREEN 0.
        WHEN 'EXIT'.
          LEAVE PROGRAM.
      ENDCASE.
    ENDMODULE. " USER_COMMAND_0100 INPUT
    START-OF-SELECTION.
      LAYOUT-ZEBRA = 'X'.
      LAYOUT-GRID_TITLE = 'YQM_CERT'.
      LAYOUT-CWIDTH_OPT = 'X'.
      LAYOUT-SMALLTITLE = 'X'.
      SELECT  * FROM  YQM_CERT INTO ITAB.
        APPEND ITAB.
      ENDSELECT.
      SELECT  * FROM  YOUTPUT_APPL INTO ITAB1.
        APPEND ITAB1.
      ENDSELECT.
      CALL SCREEN 100.
    END-OF-SELECTION.
    *&      Form  DISPLAY_ALV
    *       text
    FORM DISPLAY_ALV.
      IF ALV_GRID IS INITIAL.
        CREATE OBJECT CUSTOM_CONTAINER
          EXPORTING
    *      PARENT                      =
            CONTAINER_NAME              = 'CC_ALV'
    *       style                        =
    *      LIFETIME                    = lifetime_default
          REPID                       = REPID
          DYNNR                       = DYNNR
    *      NO_AUTODEF_PROGID_DYNNR     =
    *    EXCEPTIONS
    *      CNTL_ERROR                  = 1
    *      CNTL_SYSTEM_ERROR           = 2
    *      CREATE_ERROR                = 3
    *      LIFETIME_ERROR              = 4
    *      LIFETIME_DYNPRO_DYNPRO_LINK = 5
    *      others                      = 6
        IF SY-SUBRC <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        CREATE OBJECT ALV_GRID
          EXPORTING
    *    I_SHELLSTYLE      = 0
    *    I_LIFETIME        =
            I_PARENT          = CUSTOM_CONTAINER
    *    I_APPL_EVENTS     = space
    *    I_PARENTDBG       =
    *    I_APPLOGPARENT    =
    *    I_GRAPHICSPARENT  =
    *    I_NAME            =
    *    I_FCAT_COMPLETE   = SPACE
    *  EXCEPTIONS
    *    ERROR_CNTL_CREATE = 1
    *    ERROR_CNTL_INIT   = 2
    *    ERROR_CNTL_LINK   = 3
    *    ERROR_DP_CREATE   = 4
    *    others            = 5
        IF SY-SUBRC <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
        CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
          EXPORTING
    *      I_BUFFER_ACTIVE               =
    *      I_BYPASSING_BUFFER            =
    *      I_CONSISTENCY_CHECK           =
             I_STRUCTURE_NAME              = 'YQM_CERT'
    *      IS_VARIANT                    =
    *      I_SAVE                        =
    *      I_DEFAULT                     = 'X'
           IS_LAYOUT                     = LAYOUT
    *      IS_PRINT                      =
    *      IT_SPECIAL_GROUPS             =
    *      IT_TOOLBAR_EXCLUDING          =
    *      IT_HYPERLINK                  =
    *      IT_ALV_GRAPHICS               =
    *      IT_EXCEPT_QINFO               =
    *      IR_SALV_ADAPTER               =
          CHANGING
            IT_OUTTAB                     = ITAB[]
    *      IT_FIELDCATALOG               =
    *      IT_SORT                       =
    *      IT_FILTER                     =
    *    EXCEPTIONS
    *      INVALID_PARAMETER_COMBINATION = 1
    *      PROGRAM_ERROR                 = 2
    *      TOO_MANY_LINES                = 3
    *      others                        = 4
        IF SY-SUBRC <> 0.
    *   MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *              WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ELSE.
        CALL METHOD ALV_GRID->REFRESH_TABLE_DISPLAY
    *       EXPORTING
    *         IS_STABLE      =
    *         I_SOFT_REFRESH =
    *       EXCEPTIONS
    *         FINISHED       = 1
    *         others         = 2
        IF SY-SUBRC <> 0.
    *      MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *                 WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      ENDIF.
    ENDFORM.                    "DISPLAY_ALV

    Hi
    U need  to active them in your status ZST9.
    Max

  • How can we restrict Column length in ALV using POWL.

    Hello,
    I have a new assignment o ABAP Web Dynpro, data displaying ALV by using POWL is a part of that assignment. Everything went fine and at last moment I was stuck with a small issue. In my application I am displaying first ALV by using POWL concept and on the basis of selected row I am displaying second level LAV by using normal ALV procedure (SALV_WD_TABLE). Here the issue is as soon as second ALV is displaying columns in first level ALV are getting expanded. How can I restrict Column length in first level ALV using POWL. I browsed a lot for getting the solution for this, Can any one help me out from this issue.
    Regards,
    Kumar

    Done, in field catalog method...

  • Download Option Not Working in ALV Using Classes

    Hi,
    Can anyone let me know what im missing since i get only my header downloaded when i download my output to EXCEL.
    Im using ALV using CLASSES.
    Thanks,
    Anita

    REPORT ZTMM_STOCK  MESSAGE-ID zmsg
                    LINE-SIZE 270
                    LINE-COUNT 58
                    NO STANDARD PAGE HEADING.
    tables: YGFMLINV,  "Material Ledger - Inventory Data Extract
            lfa1,      "Vendor Master (General Section)
            setheader, "Set Header and Directory(checking profit center grp)
            mseg,
            t001w,
            mslbh,
            mslb,
            t001.
    Internal Tables Declaration
    data: begin of i_ygfmlinv occurs 0,
           BDATJ like ygfmlinv-bdatj,     "Posting date YYYY
           POPER like ygfmlinv-poper,     "Posting period
           BUKRS like ygfmlinv-bukrs,     "Company Code
           PRCTR like ygfmlinv-prctr,     "Profit center
           WERKS like ygfmlinv-werks,     "Plant
           BKLAS like ygfmlinv-bklas,     "Valuation class
           MATNR like ygfmlinv-matnr,     "Material number
           BWTAR  like ygfmlinv-bwtar,    "Valuation type
           STOCK_IND like ygfmlinv-stock_ind, "Stock indicators
           MEINS like ygfmlinv-meins,    "Base unit of measure
           MLAST like ygfmlinv-mlast,  "Material Price Dtermination: Control
           LBKUM like ygfmlinv-lbkum,      "Total valuated stock
           vprsv like ygfmlinv-vprsv,     "Price control indicator
           lc_mvp_prc like ygfmlinv-lc_mvp_prc, "LC:Moving Avg/Periodic Prc
           LC_CURTP like ygfmlinv-LC_CURTP, "Currency Type
           LC_CURRENCY like ygfmlinv-lc_currency, "Currency Key
           gc_curtp like ygfmlinv-gc_curtp, "Grp.Curr Type
           gc_currency like ygfmlinv-gc_currency, " Grp.Curr
           LC_TOT_AMT like ygfmlinv-lc_tot_amt, "LC: Total Amount
           KONTS   LIKE T030-KONTS,       "G/L Account No
           XBILK   LIKE SKA1-XBILK,
           lc_cogs like ygfmlinv-lc_var_amt,
           lifnr like mslbh-lifnr,
           lc_trfix_amt like ygfmlinv-lc_trfix_amt,
           lc_lofix_amt like ygfmlinv-lc_lofix_amt,
           lc_var_amt like ygfmlinv-lc_var_amt,
           lc_utp_amt like ygfmlinv-lc_utp_amt,
          end of i_ygfmlinv.
    data: begin of i_mslbh occurs 0,
          MATNR like mslbh-matnr, "Material number
          SOBKZ like mslbh-sobkz, "Special stock indicator
          LIFNR like mslbh-lifnr, "Account number of vendor or creditor
          WERKS like mslbh-werks, "Plant
          CHARG like mslbh-charg, "Batch number
          LFGJA like mslbh-lfgja, "Fiscal year of current period
          LFMON like mslbh-lfmon, "Current period (posting period)
          LBLAB like mslbh-lblab, "Current period (posting period)
          LBINS like mslbh-lbins, "Stock in quality inspection
         end of i_mslbh.
    data: begin of i_MSLB occurs 0,
           MATNR like mslb-matnr,
           WERKS like mslb-werks,
           SOBKZ like mslb-sobkz,
           LIFNR like mslb-lifnr,
           LFGJA like mslb-lfgja,
           LFMON like mslb-lfmon,
           LBLAB like mslb-lblab,
           LBINS like mslb-lbins,
           LBEIN like mslb-lbein,
          end of i_mslb.
    *data: begin of i_t030 occurs 0,
         KTOPL like t030-ktopl,
         BKLAS like t030-bklas,
         KONTS like t030-konts,
         end of i_t030.
    *data: begin of i_ska1 occurs 0,
         SAKNR like ska1-saknr,
         XBILK like ska1-xbilk,
         end of i_ska1.
    DATA : BEGIN OF i_non_subc OCCURS 0,
          MATNR         LIKE YGFMLINV-MATNR,        "Material
          WERKS         LIKE YGFMLINV-WERKS,    "Plant,
          bukrs         like ygfmlinv-bukrs,    "Company Code
          BKLAS         LIKE YGFMLINV-BKLAS,    "Val Class
          PRCTR         LIKE YGFMLINV-PRCTR,   "Profit Center
          BWTAR         LIKE YGFMLINV-BWTAR,    "Val Type
          LBKUM         LIKE YGFMLINV-LBKUM,        "QTY
          PEINH         LIKE YGFMLINV-PEINH,        "Price Unit
          MEINS         LIKE YGFMLINV-MEINS,        "Unit of Measure
          lc_currency   like ygfmlinv-lc_currency,
          lc_curtp      like ygfmlinv-lc_curtp,
          gc_currency   like ygfmlinv-gc_currency,
          gc_curtp   like ygfmlinv-gc_currency,
          LC_VAR_AMT    LIKE YGFMLINV-LC_VAR_AMT,   "LC :Variable Amt
          LC_TRFIX_AMT  LIKE YGFMLINV-LC_TRFIX_AMT, "LC :Trnsfer Fixed Amt
          LC_LOFIX_AMT  LIKE YGFMLINV-LC_LOFIX_AMT, "LC:Local Fixed Amt.
          LC_COGS       LIKE YGFMLINV-LC_VAR_AMT,  "Total LC fixed COGS
                                                   "added as per CC01507
          LC_UTP_AMT    LIKE YGFMLINV-LC_UTP_AMT,   "LC:UTP Amount.
          LC_TR_VAL     LIKE YGFMLINV-LC_LOFIX_AMT,"TotalLC Transfer value
          XBILK         LIKE SKA1-XBILK,            "Balance Indicator
          gc_var_amt    like ygfmlinv-gc_var_amt,
          gc_trfix_amt like ygfmlinv-gc_trfix_amt,
          gc_lofix_amt like ygfmlinv-gc_lofix_amt,
          gc_cogs      like ygfmlinv-gc_var_amt,
          gc_utp_amt   like ygfmlinv-gc_utp_amt,
          gc_tr_val    like ygfmlinv-gc_lofix_amt,
    END OF i_non_subc.
    Final Output Table
    types: begin of t_output,
          matnr like ygfmlinv-matnr,
          lifnr like mslbh-lifnr,
          werks like ygfmlinv-werks,
          spstk like mslbh-lblab,
          totstk like ygfmlinv-lbkum,
          lc_currency like ygfmlinv-LC_CURRENCY,
          lc_curtp like ygfmlinv-lc_curtp,
          gc_curtp like ygfmlinv-gc_curtp,
          gc_currency like ygfmlinv-gc_currency,
          name1 like lfa1-name1,
          vprsv like ygfmlinv-vprsv,
          bukrs like ygfmlinv-bukrs,
          mlast like ygfmlinv-mlast,
          meins like ygfmlinv-meins,
          bklas like ygfmlinv-bklas,
          maktx like makt-maktx,
          stdprice(18),
          totval like ygfmlinv-lc_tot_amt,
          sobkz like mslbh-sobkz,
          end of t_output.
    Work Area for Final Output Table
    data: wa_output type t_output.
    ALV Display
    Name of Custom Container added on the screen
    data: G_CONTAINER TYPE SCRFNAME VALUE 'ZGRID_CTRL',
    ALV GRID Instance Reference
          G_GRID1 TYPE REF TO CL_GUI_ALV_GRID, "Grid
    Instance Reference to Custom Container
          G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
    PBO Status
    data: ok_code like sy-ucomm,
    Field Catalog Table
          gT_FIELDCAT      TYPE LVC_T_FCAT,
    Layout Structure
          gs_layout type lvc_s_layo,
    Sorting anf Subtotal
          gt_sort TYPE lvc_s_sort occurs 0,
    gt_output  type standard table  of t_output.
    data: g_curr(2).
          CLASS lcl_event_receiver DEFINITION
    class lcl_event_receiver definition.
      public section.
    Add SUB TOTAL TEXT to the ALV DISPLAY
        methods handle_subtotal_text
            for event subtotal_text of cl_gui_alv_grid
            importing es_subtottxt_info ep_subtot_line e_event_data.
    endclass.
    Declaration for EVENT Receiver
    data: event_receiver type ref to lcl_event_receiver,
         l_subtxt(60) value 'Subtotal Text'.
    field-symbols: <fs> type t_output,
                   <fs1>.
          CLASS LCL_EVENT_RECEIVER IMPLEMENTATION
    CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
      METHOD HANDLE_SUBTOTAL_TEXT.
    FIELD for which the SUBTOTAL is Calculated
        if es_subtottxt_info-criteria = 'MATNR'.
          ASSIGN EP_SUBTOT_LINE->* TO <FS1>.
          ASSIGN  E_EVENT_DATA->M_DATA->* TO <FS>.
          CONCATENATE es_subtottxt_info-keyword ':MATERIAL'
        <fs>-matnr INTO <fs1>.
        ENDIF.
      ENDMETHOD.                 "HANDLE_SUBTOTAL_TEXT
    ENDCLASS.                    "LCL_EVENT_RECEIVER IMPLEMENTATION
    Constants
    constants: c_eb(2) value 'EB',
               c_m value 'M',
               C_KTOPL(4) VALUE 'TCOA',
               C_KTOSL(3) VALUE 'BSX',
               C_KONTS(4) VALUE '002%'.
    Selection Screen
    selection-screen:begin of block b1 with frame title text-001.
    select-options: s_lifnr for lfa1-lifnr ,       "Vendor
            s_werks for YGFMLINV-werks obligatory, "Plant
            s_prctr for YGFMLINV-prctr, "Pr.Ctr
            s_matnr for ygfmlinv-matnr, "Mat.No
            s_bwtar for mseg-bwtar no-display.
    parameters: p_bukrs like YGFMLINV-bukrs obligatory, "C.Code
          p_pctrgp like  SETHEADER-SETNAME, "Pf.ct.Grp
          p_poper like YGFMLINV-poper obligatory, " Period
          p_bdatj like YGFMLINV-bdatj obligatory, " Year
          r_ccode  radiobutton group rad1 default 'X',
          r_grpcur radiobutton group rad1.
    selection-screen: end of block b1.
    Ranges Declaration
    RANGES : R_PROFIT_CTR FOR CEPC-PRCTR.
           INITIALIZATON
    *initialization.
      Validations for Selection Screen
    Validation for Vendor
    at selection-screen on s_lifnr.
      select single lifnr
               from lfa1
               into lfa1-lifnr
               where lifnr in s_lifnr.
      if sy-subrc ne 0.
        message e039.
      endif.
    Validation for Plant
    at selection-screen on s_werks.
      select single werks
             from t001w
             into t001w-werks
             where werks in s_werks.
      if sy-subrc ne 0.
        message e040.
      endif.
    Validation for Profit Center
    at selection-screen on s_prctr.
      select single prctr
              from ygfmlinv
              into ygfmlinv-prctr
             where prctr in s_prctr.
      if sy-subrc ne 0.
        message e041.
      endif.
    Validation for Company Code
    at selection-screen on p_bukrs.
      select single bukrs
             from t001
             into t001-bukrs
             where bukrs eq p_bukrs.
      if sy-subrc ne 0.
        message e042.
      endif.
    Validation for Profit Center Group
    at selection-screen on p_pctrgp.
      if not p_pctrgp is initial.
        select single setname
              from setheader
              into setheader-setname
              where setname eq p_pctrgp.
        if sy-subrc ne 0.
          message e043.
        endif.
      endif.
    Validation for Fiscal Period
    *at selection-screen on p_poper.
    select single poper
            from YGFMLINV
            into YGFMLINV-poper
            where poper eq p_poper.
    if sy-subrc ne 0.
       message e045.
    endif.
    Validation for Fiscal Year
    *at selection-screen on p_bdatj.
    select single bdatj
            from YGFMLINV
            into YGFMLINV-bdatj
            where bdatj eq p_bdatj.
    if sy-subrc ne 0.
       message e046.
    endif.
    start-of-selection.
      if p_pctrgp ne ' '.
        perform f_profit_center_select.
      endif.
      perform f_data_selection. "using p_profit_center..
    end-of-selection.
      call screen 100.
    *&      Form  f_data_selection
          text
    -->  p1        text
    <--  p2        text
    FORM f_data_selection.
      data: l_flg,
            l_lblab like mslbh-lblab,
            l_name1 like lfa1-name1,
            l_rate like mslbh-lblab,
            l_maktx like makt-maktx,
            l_diff_stk like mslbh-lblab,
            l_totval like ygfmlinv-lc_tot_amt.
    From profit center group get Profit Center
      LOOP AT R_PROFIT_CTR.
        IF R_PROFIT_CTR-LOW EQ R_PROFIT_CTR-HIGH.
          R_PROFIT_CTR-OPTION = 'EQ'.
          R_PROFIT_CTR-HIGH = SPACE.
          MODIFY R_PROFIT_CTR.
        ENDIF.
      ENDLOOP.
      if r_ccode eq 'X'.
        g_curr = '10'.
      else.
        g_curr = '30'.
      endif.
      if g_curr eq '10'.
    Fetch TOTAL STOCK ,VALUE from ML - Inv. Data Extract Table
        select BDATJ POPER BUKRS PRCTR WERKS BKLAS MATNR
                 BWTAR  STOCK_IND MEINS MLAST LBKUM
                 vprsv lc_mvp_prc LC_CURTP
                 LC_CURRENCY LC_TOT_AMT
                 lc_var_amt LC_UTP_AMT
                 lc_trfix_amt lc_lofix_amt
                 gc_curtp gc_currency
                 from YGFMLINV
                 into corresponding fields of table i_YGFMLINV
                 where bdatj eq p_bdatj and
                       poper eq p_poper and
                       bukrs eq p_bukrs and
                       werks in s_werks and
                       matnr in s_matnr and
                     STOCK_IND eq c_m and
                       trans_type eq c_eb and
                       lc_curtp eq g_curr.
      else.
    Fetch TOTAL STOCK ,VALUE from ML - Inv. Data Extract Table
        select BDATJ POPER BUKRS PRCTR WERKS BKLAS MATNR
                 BWTAR  STOCK_IND MEINS MLAST LBKUM
                 vprsv lc_mvp_prc LC_CURTP
                 LC_CURRENCY LC_TOT_AMT
                 lc_var_amt LC_UTP_AMT
                 lc_trfix_amt lc_lofix_amt
                 gc_curtp gc_currency
                 from YGFMLINV
                 into corresponding fields of table i_YGFMLINV
                 where bdatj eq p_bdatj and
                       poper eq p_poper and
                       bukrs eq p_bukrs and
                       werks in s_werks and
                       matnr in s_matnr and
                     STOCK_IND eq c_m and
                       trans_type eq c_eb and
                       gc_curtp eq g_curr.
      endif.
    Delete Entries not in Profit Center range
      LOOP AT I_YGFMLINV.
        IF  NOT I_YGFMLINV-PRCTR IN R_PROFIT_CTR.
          DELETE I_YGFMLINV.
        ENDIF.
      ENDLOOP.
      if not i_ygfmlinv[] is initial.
        data l_date like mkpf-budat.
        move : p_bdatj to l_date(4),
               p_poper to l_date+4(2),
               '31' to l_date+6(2).
    Get the TOTAL STOCK for Vendor and Material
        SELECT     MATNR
                   WERKS
                   CHARG
                   SOBKZ
                   LIFNR
                   LFGJA
                   LFMON
                   LBLAB
                   LBINS
                   FROM MSLBH INTO corresponding fields of TABLE I_MSLBH
                   for all entries in i_ygfmlinv
                   WHERE MATNR eq i_ygfmlinv-matnr and
                        WERKS EQ i_ygfmlinv-WERKS AND
                       SOBKZ in p_stkind AND
                        LIFNR in s_LIFNR AND
                        LFGJA GE P_BDATJ and
                        lfmon eq p_poper.
        if sy-subrc eq 0.
          DELETE I_MSLBH WHERE LFGJA EQ P_BDATJ AND
                               LFMON LT P_POPER.
        endif.
      endif.
      sort i_mslbh by matnr lifnr werks lfgja lfmon.
      sort i_ygfmlinv by matnr  werks bdatj poper.
      loop at i_mslbh.
        l_lblab = l_lblab + i_mslbh-lblab.
        at end of lifnr.
          l_flg = 'X'.
        endat.
        read table i_ygfmlinv with key matnr = i_mslbh-matnr
                                       werks = i_mslbh-werks
                                       bdatj = i_mslbh-lfgja
                                       poper = i_mslbh-lfmon
                                       binary search.
        if sy-subrc eq 0.
          select single name1 from lfa1 into l_name1
                   where lifnr eq i_mslbh-lifnr.
          if sy-subrc eq 0.
            select single maktx
                      from makt
                      into l_maktx
                      where matnr eq i_mslbh-matnr and
                            spras eq sy-langu.
            if l_flg eq 'X'.
    Subtract Total stk from Special Stock Vendor to get the difference
              l_diff_stk =   i_ygfmlinv-lbkum - l_lblab.
              move : i_mslbh-matnr to wa_output-matnr,
                     i_mslbh-lifnr to wa_output-lifnr,
                     i_mslbh-werks to wa_output-werks,
                     l_lblab to wa_output-totstk,
                     l_name1 to wa_output-name1,
                     i_ygfmlinv-vprsv to wa_output-vprsv,
                     i_ygfmlinv-meins to wa_output-meins,
                     i_ygfmlinv-lc_mvp_prc to wa_output-stdprice,
                     i_ygfmlinv-mlast to wa_output-mlast,
                     i_ygfmlinv-bukrs to wa_output-bukrs,
                     i_ygfmlinv-bklas to wa_output-bklas,
                     i_mslbh-sobkz to wa_output-sobkz.
              if g_curr eq '10'.
                move: i_ygfmlinv-lc_curtp to wa_output-lc_curtp,
                      i_ygfmlinv-lc_currency to wa_output-lc_currency.
              else.
                move: i_ygfmlinv-gc_curtp to wa_output-gc_curtp,
                      i_ygfmlinv-gc_currency to wa_output-gc_currency.
              endif.
              if wa_output-totstk ne 0.
                l_rate = i_ygfmlinv-LC_TOT_AMT  / i_ygfmlinv-lbkum.
                wa_output-totval =  l_rate * l_lblab.
              endif.
              append wa_output to gt_output.
              move wa_output-totval to l_totval.
              clear: l_rate,wa_output.
              if l_diff_stk ne 0.
                wa_output-totval = i_ygfmlinv-LC_TOT_AMT  -  l_totval.
                move: i_mslbh-matnr to wa_output-matnr,
    *Included - Remove
                      i_mslbh-matnr to wa_output-matnr,
                      i_mslbh-werks to wa_output-werks,
                      l_diff_stk to wa_output-totstk,
                      i_ygfmlinv-vprsv to wa_output-vprsv,
                      i_ygfmlinv-meins to wa_output-meins,
                      i_ygfmlinv-lc_mvp_prc to wa_output-stdprice,
                      i_ygfmlinv-mlast to wa_output-mlast,
                      i_ygfmlinv-bukrs to wa_output-bukrs,
                      i_ygfmlinv-bklas to wa_output-bklas.
                if g_curr eq '10'.
                  move: i_ygfmlinv-lc_curtp to wa_output-lc_curtp,
                        i_ygfmlinv-lc_currency to wa_output-lc_currency.
                else.
                  move: i_ygfmlinv-gc_curtp to wa_output-gc_curtp,
                        i_ygfmlinv-gc_currency to wa_output-gc_currency.
                endif.
                append wa_output to gt_output.
                clear: i_ygfmlinv,l_flg,l_lblab,l_name1,wa_output,
                       i_mslbh.
              endif.
            endif.
          endif.
        endif.
      endloop.
      sort: i_ygfmlinv by matnr werks,
                i_mslbh by matnr werks.
      LOOP AT I_YGFMLINV.
        read table i_mslbh with key matnr = i_ygfmlinv-matnr
                                        binary search.
        if sy-subrc eq 0.
          delete i_ygfmlinv.
          clear i_ygfmlinv.
        else.
          MOVE-CORRESPONDING I_YGFMLINV TO i_non_subc.
          APPEND i_non_subc.
          CLEAR I_YGFMLINV.
        endif.
      ENDLOOP.
      sort i_non_subc by matnr werks.
      data: l_lc_cogs(16) type p decimals 2,
            l_lc_tr_val(16) type p decimals 2,
            l_gc_cogs(16) type p decimals 2,
            l_gc_tr_val(16) type p decimals 2.
      LOOP AT i_non_subc.
        if g_curr eq '10'.
          l_LC_COGS   = i_non_subc-LC_TRFIX_AMT +
                        i_non_subc-LC_LOFIX_AMT.
          l_LC_TR_VAL = i_non_subc-LC_VAR_AMT + l_LC_COGS +
                        i_non_subc-LC_UTP_AMT.
        else.
          l_gc_cogs  = i_non_subc-gc_trfix_amt + i_non_subc-gc_lofix_amt.
          l_gc_tr_val = i_non_subc-gc_var_amt + i_non_subc-gc_cogs +
                        i_non_subc-gc_utp_amt.
        endif.
        at end of matnr.
          l_flg = 'X'.
        endat.
        if l_flg eq 'X'.
          move: i_non_subc-matnr to wa_output-matnr,
                i_non_subc-werks to wa_output-werks,
                i_non_subc-lbkum to wa_output-totstk,
                i_non_subc-meins to wa_output-meins,
                i_non_subc-bukrs to wa_output-bukrs,
                i_non_subc-bklas to wa_output-bklas,
                i_non_subc-lc_curtp to wa_output-lc_curtp,
                i_non_subc-lc_currency to wa_output-lc_currency,
                i_non_subc-gc_curtp to wa_output-gc_curtp,
                i_non_subc-gc_currency to wa_output-gc_currency.
          if g_curr eq '10'.
            move l_lc_tr_val to wa_output-totval.
          else.
            move  l_gc_tr_val to wa_output-totval.
          endif.
             i_non_subc-mlast to wa_output-mlast.
          select single maktx
                    from makt
                    into l_maktx
                    where matnr eq i_non_subc-matnr and
                          spras eq sy-langu.
          if sy-subrc eq 0.
            move l_maktx to wa_output-maktx.
            append wa_output to gt_output .
            clear: wa_output,l_flg,l_lc_tr_val,l_lc_cogs,
                   l_gc_cogs,l_gc_tr_val.
          endif.
        endif.
      ENDLOOP.
    ENDFORM.                    " f_data_selection
    *&      Module  STATUS_0100  OUTPUT
          text
    MODULE STATUS_0100 OUTPUT.
      SET PF-STATUS 'ZPF_STATUS'.
      SET TITLEBAR 'ZTITLE'.
    ENDMODULE.                 " STATUS_0100  OUTPUT
    *&      Module  alv_display  OUTPUT
          text
    MODULE alv_display OUTPUT.
      data: total type ref to data,
            subtotal1 type ref to data.
    field-symbols <total> like gt_output .
    field-symbols <subtotal1> like gt_output.
      if g_grid1 is initial.
        perform f_create_objects.
        perform f_build_field_catalog changing gt_fieldcat.
        perform f_prepare_layout changing gs_layout.
        perform f_sort_sub_total changing  gt_sort.
        CALL METHOD G_GRID1->GET_SORT_CRITERIA
          IMPORTING
            ET_SORT = gt_sort[]  .
       CALL METHOD g_grid1->GET_SUBTOTALS
         IMPORTING
           EP_COLLECT00   = total
           EP_COLLECT01   = subtotal1 .
               EP_COLLECT02   =
               EP_COLLECT03   =
               EP_COLLECT04   =
               EP_COLLECT05   =
               EP_COLLECT06   =
               EP_COLLECT07   =
               EP_COLLECT08   =
               EP_COLLECT09   =
               ET_GROUPLEVELS =             .
       assign total->* to <total>.
       assign subtotal1->* to <subtotal1>.
    *ALV Display - Specify Sorting,Filtering Criteria
        if gt_output[] is initial.
          message i015.
        endif.
        CALL METHOD G_GRID1->SET_TABLE_FOR_FIRST_DISPLAY
          EXPORTING
       I_BYPASSING_BUFFER            =
       I_BUFFER_ACTIVE               =
       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               =
          CHANGING
            IT_OUTTAB                  = gt_output[]
            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 G_GRID1->REFRESH_TABLE_DISPLAY
    EXPORTING
       IS_STABLE      =
       I_SOFT_REFRESH =
          EXCEPTIONS
            FINISHED       = 1
            others         = 2        .
        IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
               WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
      endif.
    ENDMODULE.                 " alv_display  OUTPUT
    *&      Module  USER_COMMAND_0100  INPUT
          text
    MODULE USER_COMMAND_0100 INPUT.
      case ok_code.
        when 'BACK'.
          set screen '0'.
          leave screen.
        when 'EXIT' or 'CANCEL'.
          PERFORM EXIT_PROGRAM.
      endcase.
      clear ok_code.
    ENDMODULE.                 " USER_COMMAND_0100  INPUT
    *&      Form  f_create_objects
          text
    -->  p1        text
    <--  p2        text
    FORM f_create_objects.
    Creating Custom Container Objects and GRID
      IF G_grid1 IS INITIAL.
    *Creating Custom Container Instance
    Pass the name of the control that you have created on the screen
        CREATE OBJECT G_CUSTOM_CONTAINER
               EXPORTING CONTAINER_NAME = 'ZGRID_CTRL'.
    *Creating ALV Grid Instance
        CREATE OBJECT G_GRID1 EXPORTING I_PARENT = G_CUSTOM_CONTAINER.
      endif.
    ENDFORM.                    " f_create_objects
    *&      Form  f_build_field_catalog
          text
    -->  p1        text
    <--  p2        text
    FORM f_build_field_catalog changing pt_fieldcat type lvc_t_fcat.
      data ls_fcat type lvc_s_fcat.
    Val Type
      ls_fcat-fieldname = 'BUKRS'.
      ls_fcat-inttype    = 'C'.
      ls_fcat-outputlen = '4'.
      ls_fcat-coltext   = 'Val.Type'.
      ls_fcat-seltext   = 'Val.Type'.
      ls_fcat-col_pos   = '1'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    Val.Class
      ls_fcat-fieldname = 'BKLAS'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-outputlen = '4'.
      ls_fcat-coltext   = 'Val.Class'.
      ls_fcat-seltext   = 'Val.Class'.
      ls_fcat-col_pos   = '2'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Plant
      ls_fcat-fieldname = 'WERKS'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-outputlen = '4'.
      ls_fcat-coltext   = 'Plant'.
      ls_fcat-seltext   = 'Plant'.
      ls_fcat-col_pos   = '3'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Material
      ls_fcat-fieldname = 'MATNR'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-outputlen = '18'.
      ls_fcat-coltext   = 'Material'.
      ls_fcat-seltext   = 'Material'.
      ls_fcat-col_pos   = '4'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Description
      ls_fcat-fieldname = 'MAKTX'.
      ls_fcat-TABNAME = 'MAKT'.
      ls_fcat-outputlen = '40'.
      ls_fcat-coltext   = 'Description'.
      ls_fcat-seltext   = 'Description'.
      ls_fcat-col_pos   = '5'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Price Control
      ls_fcat-fieldname = 'VPRSV'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-outputlen = '1'.
      ls_fcat-coltext   = 'Price Control'.
      ls_fcat-seltext   = 'Price Control'.
      ls_fcat-col_pos   = '6'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Price Determination
      ls_fcat-fieldname = 'MLAST'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-outputlen = '1'.
      ls_fcat-coltext   = 'Price Determination'.
      ls_fcat-seltext   = 'Price Determination'.
      ls_fcat-col_pos   = '7'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    Total Stock
      ls_fcat-fieldname = 'TOTSTK'.
      ls_fcat-REF_TABLE = 'YGFMLINV'.
      ls_fcat-REF_FIELD = 'LBKUM'.
      ls_fcat-QFIELDNAME = 'MEINS'.
      ls_fcat-IFIELDNAME = 'YGFMLINV'.
      ls_fcat-coltext   = 'Total Stock'.
      ls_fcat-seltext   = 'Total Stock'.
      ls_fcat-col_pos   = '8'.
      ls_fcat-do_sum = 'X'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    Std. Price
      ls_fcat-fieldname = 'STDPRICE'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-REF_TABLE = 'YGFMLINV'.
      ls_fcat-ref_field = 'LC_MVP_PRC'.
      ls_fcat-coltext = 'Std.Price'.
      ls_fcat-col_pos   = '9'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
      if g_curr eq '10'.
    Currency Type
        ls_fcat-fieldname = 'LC_CURTP'.
        ls_fcat-TABNAME = 'YGFMLINV'.
        ls_fcat-coltext = 'Currency Type'.
        ls_fcat-seltext = 'Currency Type'.
        ls_fcat-col_pos = '10'.
        append ls_fcat to pt_fieldcat.
        clear ls_fcat.
      else.
    Currency Type
        ls_fcat-fieldname = 'GC_CURTP'.
        ls_fcat-TABNAME = 'YGFMLINV'.
        ls_fcat-coltext = 'Currency Type'.
        ls_fcat-seltext = 'Currency Type'.
        ls_fcat-col_pos = '10'.
        append ls_fcat to pt_fieldcat.
        clear ls_fcat.
      endif.
    *Per Unit Price
      ls_fcat-fieldname = 'STDPRICE'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-ref_table = 'YGFMLINV'.
      ls_fcat-ref_field = 'LC_MVP_PRC'.
    ls_fcat-currency  = 'LC_CURRENCY'.
      ls_fcat-coltext = 'Per.Unit.Price'.
      ls_fcat-seltext = 'Per.Unit.Price'.
      ls_fcat-col_pos   = '11'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    Quantity Measurement
      ls_fcat-fieldname = 'MEINS'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-coltext = 'Base Unit'.
      ls_fcat-seltext = 'Base Unit'.
      ls_fcat-col_pos = '12'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Total Value
      ls_fcat-fieldname = 'TOTVAL'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-currency  = 'GC_CURRENCY'.
      ls_fcat-coltext   = 'Total Value'.
      ls_fcat-seltext   = 'Total Value'.
      ls_fcat-col_pos   = '13'.
      ls_fcat-do_sum = 'X'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Value/period
      ls_fcat-fieldname = 'TOTVAL'.
      ls_fcat-TABNAME = 'YGFMLINV'.
      ls_fcat-currency  = 'GC_CURRENCY'.
      ls_fcat-coltext   = 'Value/Period'.
      ls_fcat-seltext   = 'Value/Period'.
      ls_fcat-col_pos   = '14'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Vendor
      ls_fcat-fieldname = 'LIFNR'.
      ls_fcat-TABNAME = 'LFA1'.
      ls_fcat-coltext   = 'Vendor'.
      ls_fcat-seltext   = 'Vendor'.
      ls_fcat-col_pos   = '15'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Vendor Description
      ls_fcat-fieldname = 'NAME1'.
      ls_fcat-TABNAME = 'LFA1'.
      ls_fcat-coltext = 'Vend.Desc'.
      ls_fcat-seltext = 'Vend.Desc'.
      ls_fcat-col_pos   = '16'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    *Special Stock Indicator
      ls_fcat-fieldname = 'SOBKZ'.
      ls_fcat-TABNAME = 'MSLBH'.
      ls_fcat-coltext = 'Spl.Stock Ind'.
      ls_fcat-seltext = 'Spl.Stock Ind'.
      ls_fcat-col_pos   = '17'.
      append ls_fcat to pt_fieldcat.
      clear ls_fcat.
    ENDFORM.                    " f_build_field_catalog
    *&      Form  f_prepare_layout
          text
         <--P_GS_LAYOUT  text
    FORM f_prepare_layout CHANGING P_GS_LAYOUT type lvc_s_layo.
      p_gs_layout-zebra = 'X'.
      p_gs_layout-grid_title = 'Material List: Prices and Inventory Values'.
      p_gs_layout-smalltitle ='X'.
    p_gs_layout-no_totline = 'X'.
      p_gs_layout-no_totarr = 'X'.
    p_gs_layout-no_totexp = 'X'.
    p_gs_layout-totals_bef = 'X'.
    ENDFORM.                    " f_prepare_layout
    *&      Form  f_profit_center_select
    Validate the Profit Center Groups with Profit Center
    -->  p1        text
    <--  p2        text
    FORM f_profit_center_select.
      DATA:V_RETCODE LIKE BAPIRET2,
           V_GROUPNAME LIKE  BAPICO_GROUP-GROUPNAME ,
           p_kokrs like CEPC-KOKRS  value 'DU01',
           I_HIERARCHYNODES LIKE BAPISET_HIER OCCURS 0 WITH HEADER LINE,
           I_PRCTR LIKE BAPI1116_VALUES OCCURS 0 WITH HEADER LINE.
      V_GROUPNAME = P_PCTRGP.
      CALL FUNCTION 'BAPI_PROFITCENTERGRP_GETDETAIL'
           EXPORTING
                CONTROLLINGAREA = P_KOKRS
                GROUPNAME       = V_GROUPNAME
           IMPORTING
                RETURN          = V_RETCODE
           TABLES
                HIERARCHYNODES  = I_HIERARCHYNODES
                HIERARCHYVALUES = I_PRCTR.
      LOOP AT I_PRCTR.
        R_PROFIT_CTR-LOW = I_PRCTR-VALFROM.
        R_PROFIT_CTR-HIGH = I_PRCTR-VALTO.
        R_PROFIT_CTR-SIGN = 'I'.
        R_PROFIT_CTR-OPTION = 'BT'.
        APPEND R_PROFIT_CTR.
      ENDLOOP.
    ENDFORM.                    " f_profit_center_select
    *&      Form  f_sort_sub_total
          text
         <--P_GT_SORT  text
    FORM f_sort_sub_total CHANGING P_GT_SORT.
      DATA: ls_sort TYPE lvc_s_sort occurs 0 with header line.
    ls_sort-spos = '1' .
      ls_sort-fieldname = 'MATNR'.
      ls_sort-up = 'X'.
      ls_sort-subtot = 'X'.
      ls_sort-expa ='X'.
      ls_sort-group = 'UL'.
      append ls_sort TO gt_sort.
    ENDFORM.                    " f_sort_sub_total
    *&      Form  EXIT_PROGRAM
          text
    -->  p1        text
    <--  p2        text
    FORM EXIT_PROGRAM.
      data: g_repid like sy-repid.
      g_repid = sy-repid.
      CALL METHOD G_CUSTOM_CONTAINER->FREE.
      CALL METHOD CL_GUI_CFW=>FLUSH.
      IF SY-SUBRC NE 0.
    add your handling, for example
        CALL FUNCTION 'POPUP_TO_INFORM'
             EXPORTING
                  TITEL = G_REPID
                  TXT2  = SY-SUBRC
                  TXT1  = 'Error in Flush'(009).
      ENDIF.
      LEAVE PROGRAM.
    ENDFORM.                    " EXIT_PROGRAM

  • Editable alv using checkboxes.

    Hi All,
    I am working on editable alv using checkboxes.I have few requirements.
    1) i have all checkboxes in my row.If i select the Row fieldname all of my checkboxes hsould be checked.
    2) in my internsl table i have field called comments.If comment field has space i need to disable the checkbox.If comment is filled then i need to enable the chekkbox.
    Field catalog need to be changed based on my internal table.
    Can anybody please let me know how can i solve the above issues.
    Thanks
    Swapna.

    1. There is no event for this (row of column), so this will not be possible.
    2. Check report BCALV_EDIT_05.

  • What is the field to be used in the field catalog

    hi
    what is the field to be used in the field catalog of an ALV report to hide the relevant column inthe list

    hi,
    if you want to hide a particular column dont specify it in output list. it wont be displayed then.
    or if you want to display that column when particular radio button is selected then use:
    if radi1 = 'x'.
    Order Number
      wa_fldcat-fieldname     = 'AUFNR'.
      wa_fldcat-col_pos       =  l_pos.
      wa_fldcat-scrtext_s = 'Order'.
      wa_fldcat-scrtext_m = 'Order'.
      wa_fldcat-scrtext_l = 'Order'.
      APPEND wa_fldcat TO it_fldcat.
      CLEAR wa_fldcat.
      l_pos = l_pos + 1.
    endif.

Maybe you are looking for

  • Problem with table

    Hi, Oracle Version : 10.2.0.3 (64-bit) Operating system : Linux (64-bit) Here we are having one schema in that schema we are unable to do rename,truncate,drop on that table and also select count(*) from table is also taking hours of time. Can any one

  • New problem connecting Canon 20D camera to OS 10.4.3

    I've searched these forums and others but can find nothing about this. Hopefully someone here can help. I've been connecting my 20D to my 15" PowerBook 2005 (first running OS 10.3.9 and now running OS 10.4.3) since I got the camera two months ago. I

  • Create a new company DB in Hong Kong Localization

    Hallo, I have to create a new company DB with Hong Kong Localization, but I can't find it in the list. You can see that in the attached file. Should I choose P.R.China Localization and than Hong Kong as Country or may be a bug? Thank you for your coo

  • TAB Key

    hello... can I control the behave of the 'TAB' key? So I can decice which next control will get focus? Thanks.

  • Some bookmarks won't do Inherit Zoom even after I edit them to Inherit Zoom

    I have a PDF with many bookmarks, most of which are OK. But two of them won't use Inherit Zoom (even after I edit them and set it to Inherit Zoom). I have two others that work OK when I click on bookmark, but when I link to them (TOC, for example), t