Skip to Content
avatar image
Former Member

ALV Grid Display using OOPS

hi

i am new to the subject regarding oops.

can you guide me to proceed in displaying alv grid using oops.

thanks in advance

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

3 Answers

  • Best Answer
    avatar image
    Former Member
    Apr 11, 2008 at 09:22 AM

    Hi,

    Refer to the link below:

    http://sapdev.co.uk/reporting/alv/alvscr.htm

    Hope this helps.

    Reward if helpful.

    Regards,

    Sipra

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Apr 11, 2008 at 09:23 AM
  • avatar image
    Former Member
    Apr 11, 2008 at 09:25 AM

    Hi,

    Process to create ALV with OOPs:

    Step 1:

    Create a container. There are 2 type of containers: docking and custom.

    Go to SE38.Create a program. Use Pattern button to create object for docking container. Click ABAP Object Pattern radio button. Click Create object radio button. Give Instance as o_docking and class as cl_gui_docking_contianer.

    Step 2:

    Create a grid inside the container.

    Use Pattern button to create the same. Make the parent of grid as container.

    Click ABAP Object Pattern radio button. Click Create object radio button. Give Instance as o_grid and class as cl_gui_alv_grid. Create object o_grid.

    Step 3:

    Call the function lvc_fieldcatalog_merge to get the field catalog.

    Pass the structure name.

    Step 4:

    Call the method of grid set_table_for_first_display to display the output.

    Click ABAP Object Pattern radio button. Click Call Method radio button. Give Instance as o_grid and Class/Interface as cl_gui_alv_grid and Method as set_table_for_first_display.

    w_variant-report = sy-repid.

    Call method o_grid->set_table_for_first_display

    Step 5:

    Fill the internal table itab with values by using logic.

    select * from mara into table itab up to 100 rows.

    call screen 9000.

    Create a screen by double clicking 9000 in the above line. Fill the description for the screen. In the flow logic, uncomment the PBO and PAI module and create those in main program (for simplicity).

    Step 6:

    Create GUI status. Create GUI Title if required. That can be done by using display object List (CtrlShiftF5).Then in left side, right click the program and create GUI Status and Title.

    Step 7:

    Free the memory occupied once the BACK, EXIT or CANCEL button is clicked. Use Pattern button to call the method FREE of cl_gui_alv_grid and cl_gui_docking_container.

    Click ABAP Object Pattern radio button. Click Call Method radio button. Give Instance as o_grid and Class/Interface as cl_gui_alv_grid and Method as Free.

    Similarly Click Call Method radio button. Give Instance as o_docking and Class/Interface as cl_gui_docking_container and Method as Free.

    Please check this demo program: BCALV_TREE_DEMO.

    Also see this example:

    Check the below code....

    &----


    *& Report ZZZ_TEST_501

    *&

    &----


    *&

    *&

    &----


    REPORT zzz_test_501.

    TYPES:BEGIN OF ty_vbak,

    vbeln LIKE vbak-vbeln,

    auart LIKE vbak-auart,

    kunnr LIKE vbak-kunnr,

    vkorg LIKE vbak-vkorg,

    vtweg LIKE vbak-vtweg,

    spart LIKE vbak-spart,

    END OF ty_vbak,

    BEGIN OF ty_vbap,

    posnr LIKE vbap-posnr,

    matnr LIKE vbap-matnr,

    werks LIKE vbap-werks,

    lgort LIKE vbap-lgort,

    ntgew LIKE vbap-ntgew,

    END OF ty_vbap.

    DATA:i_vbak TYPE STANDARD TABLE OF ty_vbak,

    i_vbap TYPE STANDARD TABLE OF ty_vbap,

    w_vbak TYPE ty_vbak,

    w_vbap TYPE ty_vbap.

    SELECT-OPTIONS:s_vbeln FOR w_vbak-vbeln.

    PARAMETERS:s_date LIKE sy-datum.

    *Declarations for ALV

    CLASS lcl_event_receiver DEFINITION DEFERRED.

    DATA:grid1 TYPE REF TO cl_gui_alv_grid,

    container TYPE REF TO cl_gui_docking_container,

    i_fieldcat TYPE lvc_t_fcat,

    w_fieldcat TYPE lvc_s_fcat,

    disvar TYPE disvariant,

    gs_toolbar TYPE stb_button,

    eventreceiver TYPE REF TO lcl_event_receiver,

    w_layout TYPE lvc_s_layo.

    invariant TYPE disvariant,

    i_event TYPE slis_t_event,

    w_event TYPE slis_alv_event,

    i_header TYPE slis_t_listheader,

    w_header TYPE slis_listheader.

    -


    CLASS lcl_event_receiver DEFINITION

    -


    *

    -


    CLASS lcl_event_receiver DEFINITION.

    PUBLIC SECTION.

    CLASS-METHODS:

    handle_toolbar

    FOR EVENT toolbar OF cl_gui_alv_grid

    IMPORTING e_object e_interactive,

    handle_user_command

    FOR EVENT user_command OF cl_gui_alv_grid

    IMPORTING e_ucomm,

    handle_double_click

    FOR EVENT double_click OF cl_gui_alv_grid

    IMPORTING e_row

    e_column

    es_row_no.

    ENDCLASS. "lcl_event_receiver DEFINITION

    -


    CLASS lcl_event_receiver IMPLEMENTATION

    -


    *

    -


    CLASS lcl_event_receiver IMPLEMENTATION.

    -


    METHOD HANDLE_USER_COMMAND

    -


    METHOD handle_user_command.

    DATA:lt_rows TYPE lvc_t_row,

    w_row TYPE lvc_s_row.

    CASE e_ucomm.

    WHEN 'CLICK'.

    CLEAR lt_rows.

    get selected row

    CALL METHOD grid1->get_selected_rows

    IMPORTING

    et_index_rows = lt_rows.

    READ TABLE lt_rows INTO w_row INDEX 1.

    READ TABLE i_vbak INTO w_vbak INDEX w_row-index.

    SET PARAMETER ID 'AUN' FIELD w_vbak-vbeln.

    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

    CLEAR w_cust_detadd3.

    PERFORM f1900_get_selectedrows TABLES lt_rows.

    PERFORM f2000_modify_message.

    ls_stable-row = 'X'.

    ls_stable-col = 'X'.

    *

    CALL METHOD o_alvgrid->refresh_table_display

    EXPORTING

    is_stable = ls_stable.

    *

    CALL METHOD cl_gui_cfw=>flush.

    CALL METHOD o_alvgrid->get_selected_rows

    IMPORTING et_index_rows = lt_rows.

    *

    CLEAR w_cust_detadd3.

    PERFORM f1900_get_selectedrows TABLES lt_rows.

    PERFORM f2000_modify_message.

    ls_stable-row = 'X'.

    ls_stable-col = 'X'.

    *

    CALL METHOD o_alvgrid->refresh_table_display

    EXPORTING

    is_stable = ls_stable.

    *

    CALL METHOD cl_gui_cfw=>flush.

    ENDCASE.

    ENDMETHOD. "HANDLE_USER_COMMAND

    -


    METHOD HANDLE_TOOLBAR

    -


    METHOD handle_toolbar.

    append a separator to normal toolbar

    CLEAR gs_toolbar.

    MOVE 3 TO gs_toolbar-butn_type.

    APPEND gs_toolbar TO e_object->mt_toolbar.

    CLEAR gs_toolbar.

    MOVE 'CLICK' TO gs_toolbar-function.

    MOVE 'CLICK' TO gs_toolbar-text.

    --> This function code is evaluated in 'handle_menu_button'

    MOVE 0 TO gs_toolbar-butn_type.

    MOVE space TO gs_toolbar-disabled.

    APPEND gs_toolbar TO e_object->mt_toolbar.

    LOOP AT e_object->mt_toolbar INTO gs_toolbar.

    IF gs_toolbar-function = '&MB_SUM'.

    gs_toolbar-disabled = space.

    MODIFY e_object->mt_toolbar FROM gs_toolbar INDEX sy-tabix.

    ENDIF.

    ENDLOOP.

    ENDMETHOD. "HANDLE_TOOLBAR

    -


    METHOD DOUBLE_CLICK

    -


    METHOD handle_double_click.

    READ TABLE i_vbak INTO w_vbak INDEX e_row-index.

    SET PARAMETER ID 'AUN' FIELD w_vbak-vbeln.

    CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.

    ENDMETHOD. "HANDLE_DOUBLE_CLICK

    ENDCLASS. "lcl_event_receiver IMPLEMENTATION

    START-OF-SELECTION.

    SELECT vbeln

    auart

    kunnr

    vkorg

    vtweg

    spart FROM vbak

    INTO TABLE i_vbak

    WHERE vbeln IN s_vbeln.

    IF sy-subrc = 0.

    ENDIF.

    END-OF-SELECTION.

    IF NOT i_vbak IS INITIAL.

    CALL SCREEN 9001.

    ENDIF.

    &----


    *& Module STATUS_9001 OUTPUT

    &----


    text

    -


    MODULE status_9001 OUTPUT.

    IF NOT container IS INITIAL.

    SET PF-STATUS 'GRID'.

    if cl_gui_alv_grid=>offline() is initial.

    CREATE OBJECT container

    EXPORTING

    ratio = 95

    name = 'ALV'.

    CREATE OBJECT grid1

    EXPORTING

    i_parent = container

    EXCEPTIONS

    error_cntl_create = 1

    error_cntl_init = 2

    error_cntl_link = 3

    error_dp_create = 4

    OTHERS = 5

    .

    IF sy-subrc 0.

    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    ENDIF.

    ENDIF.

    SET HANDLER eventreceiver->handle_user_command

    eventreceiver->handle_toolbar

    eventreceiver->handle_double_click FOR grid1.

    w_fieldcat-col_pos = 1.

    w_fieldcat-fieldname = 'VBELN'.

    w_fieldcat-tabname = 'I_VBAK'.

    w_fieldcat-reptext = 'Sales Document #'.

    APPEND w_fieldcat TO i_fieldcat.

    CLEAR w_fieldcat.

    w_fieldcat-col_pos = 2.

    w_fieldcat-fieldname = 'AUART'.

    w_fieldcat-tabname = 'I_VBAK'.

    w_fieldcat-reptext = 'Order Type'.

    APPEND w_fieldcat TO i_fieldcat.

    CLEAR w_fieldcat.

    w_fieldcat-col_pos = 3.

    w_fieldcat-fieldname = 'KUNNR'.

    w_fieldcat-tabname = 'I_VBAK'.

    w_fieldcat-reptext = 'Customer #'.

    APPEND w_fieldcat TO i_fieldcat.

    CLEAR w_fieldcat.

    w_fieldcat-col_pos = 4.

    w_fieldcat-fieldname = 'VKORG'.

    w_fieldcat-tabname = 'I_VBAK'.

    w_fieldcat-reptext = 'Sales Org'.

    APPEND w_fieldcat TO i_fieldcat.

    CLEAR w_fieldcat.

    w_fieldcat-col_pos = 5.

    w_fieldcat-fieldname = 'VTWEG'.

    w_fieldcat-tabname = 'I_VBAK'.

    w_fieldcat-reptext = 'Distribution Channel'.

    APPEND w_fieldcat TO i_fieldcat.

    CLEAR w_fieldcat.

    w_fieldcat-col_pos = 6.

    w_fieldcat-fieldname = 'SPART'.

    w_fieldcat-tabname = 'I_VBAK'.

    w_fieldcat-reptext = 'Division'.

    APPEND w_fieldcat TO i_fieldcat.

    CLEAR w_fieldcat.

    CALL METHOD grid1->set_table_for_first_display

    EXPORTING

    I_BUFFER_ACTIVE =

    I_BYPASSING_BUFFER =

    I_CONSISTENCY_CHECK =

    I_STRUCTURE_NAME =

    IS_VARIANT =

    I_SAVE =

    I_DEFAULT = 'X'

    IS_LAYOUT =

    IS_PRINT =

    IT_SPECIAL_GROUPS =

    IT_TOOLBAR_EXCLUDING =

    IT_HYPERLINK =

    IT_ALV_GRAPHICS =

    IT_EXCEPT_QINFO =

    IR_SALV_ADAPTER =

    CHANGING

    it_outtab = i_vbak

    it_fieldcatalog = i_fieldcat

    IT_SORT =

    IT_FILTER =

    EXCEPTIONS

    invalid_parameter_combination = 1

    program_error = 2

    too_many_lines = 3

    OTHERS = 4

    .

    IF sy-subrc 0.

    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

    ENDIF.

    *endif.

    ENDMODULE. " STATUS_9001 OUTPUT

    &----


    *& Module USER_COMMAND_9001 INPUT

    &----


    text

    -


    MODULE user_command_9001 INPUT.

    CASE sy-ucomm.

    WHEN 'EXIT' OR 'CANC'.

    SET SCREEN '0'.

    WHEN 'BACK'.

    SET SCREEN '0'.

    WHEN 'DISP'.

    <Enter code for handling the display option>

    WHEN OTHERS.

    ENDCASE.

    ENDMODULE. " USER_COMMAND_9001 INPUT

    Reward Points if found helpfull..

    Cheers,

    Chandra Sekhar.

    Add comment
    10|10000 characters needed characters exceeded