Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

alv class

Former Member
0 Likes
1,332

CALL METHOD go_grid->set_table_for_first_display

EXPORTING i_structure_name = 'SFLIGHT'

CHANGING it_outtab = gi_sfligt

iam new to alv class, plss help

i want to know how will i get the class method go_grid?

do i have to click on pattern?

can anyone tell me the steps...to call the

class method set_table_for_first_display?

its urgent do reply

9 REPLIES 9
Read only

Former Member
0 Likes
1,229

OOPs Programming involves:

1. Instantiation of an Object,

2. Use this instance to call the attributes, methods and Events of the Object Class.

1. Instantiate an Object

CREATE OBJECT <Instance Name> Where Instance Name is a reference to the Class type, i.e. <Instance Name> TYPE REF TO <Class Name>

2. While calling a method we need to specify

1. The Class in which the method is defined.

2. The method which is going to be implemented and

3. The Name of the Instance of the Object

CALL Method <Instance Name> -> <Method Name>

To Call an Event we need to specify

1. The Class in which the method is defined.

2. The Name of the Event in the class.

RAISE EVENT <Event Name>

The above steps for creating an Object, Methods and Events are followed wherever necessary.

<b>Sample Program:</b>

The Following sample program reflects how OO reporting is done in ABAP.

  • Methods and Attributes of a Class are accessed through Object references. Here g_dock, g_split, etc are Object references.

DATA : g_dock TYPE REF TO cl_gui_docking_container,

g_split TYPE REF TO cl_gui_easy_splitter_container,

g_cont1 TYPE REF TO cl_gui_container,

g_cont2 TYPE REF TO cl_gui_container,

g_grid1 TYPE REF TO cl_gui_alv_grid,

g_grid2 TYPE REF TO cl_gui_alv_grid.

  • i_mara is an internal table of structure MARA

SELECT * FROM mara INTO TABLE i_mara.

  • i_kna1 is an internal table of structure KNA1

SELECT * FROM kna1 INTO TABLE i_kna1.

  • To create an Object of type Docking Container

CREATE OBJECT g_dock

EXPORTING

side = cl_gui_docking_container=>dock_at_top

extension = 200 .

  • To Create an Object of Type Split Container. Here we can see that the Docking *Container Created above has been used as a parent .

CREATE OBJECT g_split

EXPORTING

parent = g_dock

orientation = 1 .

  • Easy Split container splits one Control into 2 manageable controls, each of them is used * to handle one GUI Container each

g_cont1 = g_split->top_left_container.

g_cont2 = g_split->bottom_right_container.

  • To Create an Object of type Grid . Here we can see that the Left Split Container * Created above has been used as a parent .

CREATE OBJECT g_grid1

EXPORTING

i_parent = g_cont1 .

  • To Create an Object of type Grid . Here we can see that the Right Split Container * Created above has been used as a parent .

CREATE OBJECT g_grid2

EXPORTING

i_parent = g_cont2 .

  • The method of Grid Control Object is used to display the Data.

CALL METHOD g_grid1->set_table_for_first_display

EXPORTING

i_structure_name = 'MARA'

CHANGING

it_outtab = i_mara[] .

  • The method of Grid Control Object is used to display the Data.

CALL METHOD g_grid2->set_table_for_first_display

EXPORTING

i_structure_name = 'KNA1'

CHANGING

it_outtab = i_kna1[] .

reward if you find this helpful.

Read only

Former Member
0 Likes
1,229

Hi

Yes. you can use pattern.

Follow the steps below

Click on pattern

Select option ABAP OBJECT PATTERNS.

Select the option CALL METHOD.

OR

If you want to browse thru the class, use trx SE24.

Regards,

Shashank

Read only

Former Member
0 Likes
1,229

Hi Abhay,

To call a method , you can use Patterns button or Ctrl+F6.

In that , select ABAP object patterns radiobutton.

You will be provided with many options

1) call method

2) create object

etc.

Since your requirement is how to call method go_grid->set_table_for_first_display, it is like this

a) Select the first radiobutton

b) give the instance name as go_grid.

c) give the class name as CL_GUI_ALV_GRID

d) give the required method name.

Problem solved.

You can also create objects of the class by using the second radio button and proceed like this:

<b>Close the thread once it is solved</b>.

Regards,

SP.

Read only

Former Member
0 Likes
1,229

try going to the sample programs for ALV

Package SLIS

or Search in SE38 using balv or Salv

Read only

Former Member
0 Likes
1,229

Hai Chauhan

Check the following Code

REPORT ZALV_SALES_HEADER_DETAIL MESSAGE-ID Z50650(MSG) .

********************************************************************

  • TABLES

********************************************************************

TABLES: VBAK . "SALES DOCUMENT HEADER

*********************************************************************

  • DATA OBJECTS DECLARATION

*********************************************************************

DATA: IT_VBAK TYPE STANDARD TABLE OF ZVBAK_STRUC,

IT_VBAP TYPE STANDARD TABLE OF ZVBAP_STRUC,

GS_LAYOUT TYPE LVC_S_LAYO,

GS1_LAYOUT TYPE LVC_S_LAYO,

GRID TYPE REF TO CL_GUI_ALV_GRID,

CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

VBAK_CONTAINER TYPE REF TO CL_GUI_CONTAINER,

VBAP_CONTAINER TYPE REF TO CL_GUI_CONTAINER,

WA_VBAK LIKE LINE OF IT_VBAK,

WA_VBAP LIKE LINE OF IT_VBAP,

SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,

TOP_OF_PAGE_CONTAINER TYPE REF TO CL_GUI_CONTAINER,

GRID_VBAP TYPE REF TO CL_GUI_ALV_GRID,

TOP_PAGE TYPE REF TO CL_DD_DOCUMENT,

FLAG(1).

.

*"EVENT RECIEVER CLASS DEFINITION

CLASS LCL_EVENT_RECIEVER DEFINITION DEFERRED.

DATA: OBJ_EVENT TYPE REF TO LCL_EVENT_RECIEVER.

*********************************************************************

  • SELECTION-SCREEN

*********************************************************************

SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS: S_VBELN FOR VBAK-VBELN.

PARAMETERS: P_VBTYP LIKE VBAK-VBTYP DEFAULT 'C'.

SELECTION-SCREEN: END OF BLOCK B1.

  • CLASS DEFINITION AND DECLARATIONS

***********************************************************************

CLASS LCL_EVENT_RECIEVER DEFINITION.

PUBLIC SECTION.

EVENTS:DOUBLE_CLICK,

TOP_OF_PAGE.

METHODS:HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID

IMPORTING E_ROW .

METHODS: HANDLE_TOP_OF_PAGE FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID.

ENDCLASS. "LCL_EVENT_RECIEVER DEFINITION

----


  • CLASS LCL_EVENT_RECIEVER IMPLEMENTATION

----


*

----


CLASS LCL_EVENT_RECIEVER IMPLEMENTATION.

METHOD: HANDLE_DOUBLE_CLICK.

READ TABLE IT_VBAK INDEX E_ROW-INDEX INTO WA_VBAK.

PERFORM FETCH_ITEM_DETAILS USING WA_VBAK.

PERFORM ALV_GRID.

ENDMETHOD. "HANDLE_DOUBLE_CLICK

METHOD: HANDLE_TOP_OF_PAGE.

CALL METHOD TOP_PAGE->ADD_TEXT

EXPORTING

TEXT = 'SALES HEADER & ITEM DETAILS'.

CALL METHOD TOP_PAGE->DISPLAY_DOCUMENT

EXPORTING

PARENT = TOP_OF_PAGE_CONTAINER.

ENDMETHOD. "HANDLER_TOP_OF_PAGE

ENDCLASS. "LCL_EVENT_RECIEVER IMPLEMENTATION

***********************************************************************

  • AT SELECTION-SCREEN

***********************************************************************

AT SELECTION-SCREEN.

IF S_VBELN IS NOT INITIAL.

SELECT COUNT(*)

FROM VBAK

WHERE VBELN IN S_VBELN.

IF SY-DBCNT = 0.

MESSAGE E000 WITH 'NO TABLE ENTRIES FOUND FOR LOW KEY SPECIFIED'.

ENDIF.

ENDIF.

***********************************************************************

  • START-OF-SELECTION.

***********************************************************************

START-OF-SELECTION.

PERFORM FETCH_SALES_HEADER_RECORD.

PERFORM CREATE_CALL. "CREATION OF OBJECTS & CALLING METHODS

************************************************************************

  • END-OF-SELECTION.

************************************************************************

END-OF-SELECTION.

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'ZSTATUS'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Form FETCH_SALES_HEADER_RECORD

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_SALES_HEADER_RECORD .

SELECT

VBELN

AUDAT

VBTYP

AUART

AUGRU

NETWR

WAERK

FROM VBAK

INTO CORRESPONDING FIELDS OF TABLE IT_VBAK

WHERE VBELN IN S_VBELN

AND VBTYP = P_VBTYP.

ENDFORM. " FETCH_SALES_HEADER_RECORD

&----


*& Form CREATE_CALL

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM CREATE_CALL .

IF CUSTOM_CONTAINER IS INITIAL.

CREATE OBJECT CUSTOM_CONTAINER

EXPORTING

  • PARENT =

CONTAINER_NAME = 'CUSTOM_CONTAINER'

  • STYLE =

  • LIFETIME = lifetime_default

  • REPID =

  • DYNNR =

  • NO_AUTODEF_PROGID_DYNNR =

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

CREATE_ERROR = 3

LIFETIME_ERROR = 4

LIFETIME_DYNPRO_DYNPRO_LINK = 5

OTHERS = 6

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

CREATE OBJECT SPLITTER

EXPORTING

TOP = 5

PARENT = CUSTOM_CONTAINER

ROWS = 3

COLUMNS = 1

EXCEPTIONS

CNTL_ERROR = 1

CNTL_SYSTEM_ERROR = 2

OTHERS = 3

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

CALL METHOD SPLITTER->GET_CONTAINER

EXPORTING

ROW = 1

COLUMN = 1

RECEIVING

CONTAINER = TOP_OF_PAGE_CONTAINER.

CALL METHOD SPLITTER->GET_CONTAINER

EXPORTING

ROW = 2

COLUMN = 1

RECEIVING

CONTAINER = VBAK_CONTAINER.

CALL METHOD SPLITTER->GET_CONTAINER

EXPORTING

ROW = 3

COLUMN = 1

RECEIVING

CONTAINER = VBAP_CONTAINER.

CREATE OBJECT GRID

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

I_PARENT = VBAK_CONTAINER

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_NAME =

EXCEPTIONS

ERROR_CNTL_CREATE = 1

ERROR_CNTL_INIT = 2

ERROR_CNTL_LINK = 3

ERROR_DP_CREATE = 4

OTHERS = 5

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

GS_LAYOUT-GRID_TITLE = 'SALES HEADER DETAILS.'(100).

CALL METHOD GRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

I_STRUCTURE_NAME = 'ZVBAK_STRUC'

  • 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 = IT_VBAK

  • 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.

ENDIF.

CREATE OBJECT OBJ_EVENT .

SET HANDLER OBJ_EVENT->HANDLE_DOUBLE_CLICK FOR GRID.

SET HANDLER OBJ_EVENT->HANDLE_TOP_OF_PAGE FOR GRID.

CREATE OBJECT TOP_PAGE

EXPORTING

STYLE = 'ALV_GRID'

.

CALL METHOD TOP_PAGE->INITIALIZE_DOCUMENT.

CALL METHOD GRID->LIST_PROCESSING_EVENTS

EXPORTING

I_EVENT_NAME = 'TOP_OF_PAGE'

I_DYNDOC_ID = TOP_PAGE.

CALL SCREEN 100.

ENDFORM. " CREATE_CALL

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE USER_COMMAND_0100 INPUT.

CASE SY-UCOMM.

WHEN 'EXIT'.

LEAVE PROGRAM.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form FETCH_ITEM_DETAILS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FETCH_ITEM_DETAILS USING WA_VBAK TYPE ZVBAK_STRUC .

SELECT

VBELN

POSNR

MATNR

MATWA

PMATN

CHARG

FROM VBAP

INTO TABLE IT_VBAP

WHERE VBELN = WA_VBAK-VBELN.

IF SY-SUBRC <> 0.

MESSAGE E000 WITH 'NO RECORDS FOUND FOR SPECIFIED KEY'.

ENDIF.

ENDFORM. " FETCH_ITEM_DETAILS

&----


*& Module STATUS_0200 OUTPUT

&----


  • text

----


MODULE STATUS_0200 OUTPUT.

SET PF-STATUS 'ZSTATUS'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0200 OUTPUT

&----


*& Module USER_COMMAND_0200 INPUT

&----


  • text

----


MODULE USER_COMMAND_0200 INPUT.

CASE SY-UCOMM.

WHEN 'EXIT'.

LEAVE PROGRAM.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0200 INPUT

&----


*& Form alv_grid

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM ALV_GRID .

IF FLAG = ''.

FLAG = 'X'.

CREATE OBJECT GRID_VBAP

EXPORTING

  • I_SHELLSTYLE = 0

  • I_LIFETIME =

I_PARENT = VBAP_CONTAINER

  • I_APPL_EVENTS = space

  • I_PARENTDBG =

  • I_APPLOGPARENT =

  • I_GRAPHICSPARENT =

  • I_NAME =

  • EXCEPTIONS

  • ERROR_CNTL_CREATE = 1

  • ERROR_CNTL_INIT = 2

  • ERROR_CNTL_LINK = 3

  • ERROR_DP_CREATE = 4

  • others = 5

.

IF SY-SUBRC <> 0.

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

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

ENDIF.

ENDIF.

GS1_LAYOUT-GRID_TITLE = 'SALES ITEM DETAILS.'(100).

CALL METHOD GRID_VBAP->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

  • I_BUFFER_ACTIVE =

  • I_BYPASSING_BUFFER =

  • I_CONSISTENCY_CHECK =

I_STRUCTURE_NAME = 'ZVBAP_STRUC'

  • IS_VARIANT =

  • I_SAVE =

  • I_DEFAULT = 'X'

IS_LAYOUT = GS1_LAYOUT

  • IS_PRINT =

  • IT_SPECIAL_GROUPS =

  • IT_TOOLBAR_EXCLUDING =

  • IT_HYPERLINK =

  • IT_ALV_GRAPHICS =

  • IT_EXCEPT_QINFO =

CHANGING

IT_OUTTAB = IT_VBAP

  • 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.

ENDFORM. " alv_grid

Thanks & regards

Sreenivasulu P

Read only

Former Member
0 Likes
1,229

Hi,

Check the sample code.

REPORT  ZTEST1234_ALV_TOP    MESSAGE-ID ZZ                           .
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),
     check,
     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 = G_CONTAINER1.
  "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 = 'Check'.
  X_FIELDCAT-FIELDNAME = 'CHECK'.
  X_FIELDCAT-TABNAME = 'IT_FINAL'.
  X_FIELDCAT-COL_POS    = L_POS.
  X_FIELDCAT-CHECKbox   = 'X'.
    X_FIELDCAT-EDIT = 'X'.
  X_FIELDCAT-OUTPUTLEN = '1'.

  APPEND X_FIELDCAT TO IT_FIELDCAT.
  CLEAR X_FIELDCAT.
  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

*&---------------------------------------------------------------------*
*&      Form  SET_DRDN_TABLE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM SET_DRDN_TABLE.

  DATA:LT_DRAL TYPE LVC_T_DRAL,
        LS_DRAL TYPE LVC_S_DRAL.
  LOOP AT ITAB .
* First listbox (handle '1').
    IF SY-INDEX = 1.
      LS_DRAL-HANDLE = '1'.
      LS_DRAL-VALUE =  ' '.
      LS_DRAL-INT_VALUE =  ' '.
    ELSE.
      LS_DRAL-HANDLE = '1'.
      LS_DRAL-VALUE =  ITAB-POSNR.
      LS_DRAL-INT_VALUE =  ITAB-POSNR.
    ENDIF.
    APPEND LS_DRAL TO LT_DRAL.
  ENDLOOP.
**Setting the Drop down table for Reason Code
  CALL METHOD G_GRID->SET_DROP_DOWN_TABLE
    EXPORTING
      IT_DROP_DOWN_ALIAS = LT_DRAL.
ENDFORM.                               " set_drdn_table
*&---------------------------------------------------------------------*
*&      Form  EVENT_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->DG_DYNDOC_ID  text
*----------------------------------------------------------------------*
FORM EVENT_TOP_OF_PAGE USING   DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT.
  "this is more clear.....check it
  "first add text, then pass it to comentry write fm
  DATA : DL_TEXT(255) TYPE C.  "Text
* Populating header to top-of-page
  CALL METHOD DG_DYNDOC_ID->ADD_TEXT
    EXPORTING
      TEXT      = 'Test Report'
      SAP_STYLE = CL_DD_AREA=>HEADING.
* Add new-line
  CALL METHOD DG_DYNDOC_ID->NEW_LINE.

  CLEAR : DL_TEXT.
* Move program ID
  CONCATENATE 'Program Name :' SY-REPID
         INTO DL_TEXT SEPARATED BY SPACE.
* Add Program Name to Document
  PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
  CALL METHOD DG_DYNDOC_ID->NEW_LINE.

  CLEAR : DL_TEXT.

* Move User ID
  CONCATENATE 'User ID :' SY-UNAME INTO DL_TEXT SEPARATED BY SPACE
.
* Add User ID to Document
  PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
  CALL METHOD DG_DYNDOC_ID->NEW_LINE.

  CLEAR : DL_TEXT.
* Move count (no of records).
  move v_lines to v_line.
  CONCATENATE 'No of records :' v_line INTO DL_TEXT SEPARATED BY SPACE.
* Add Client to Document
  PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
  CALL METHOD DG_DYNDOC_ID->NEW_LINE.

  CLEAR : DL_TEXT.
* Move date
  WRITE SY-DATUM TO DL_TEXT.
  CONCATENATE 'Date :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE.
* Add Date to Document
  PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
  CALL METHOD DG_DYNDOC_ID->NEW_LINE.

  CLEAR : DL_TEXT.
* Move time
  WRITE SY-UZEIT TO DL_TEXT.
  CONCATENATE 'Time :' DL_TEXT INTO DL_TEXT SEPARATED BY SPACE.
* Add Time to Document
  PERFORM ADD_TEXT USING DL_TEXT.
* Add new-line
  CALL METHOD DG_DYNDOC_ID->NEW_LINE.
* Populating data to html control
  PERFORM HTML.

ENDFORM.                    " EVENT_TOP_OF_PAGE
*&---------------------------------------------------------------------*
*&      Form  ADD_TEXT
*&---------------------------------------------------------------------*
*       To add Text
*----------------------------------------------------------------------*
FORM ADD_TEXT USING P_TEXT TYPE SDYDO_TEXT_ELEMENT.
* Adding text
  CALL METHOD DG_DYNDOC_ID->ADD_TEXT
    EXPORTING
      TEXT         = P_TEXT
      SAP_EMPHASIS = CL_DD_AREA=>HEADING.
ENDFORM.                    " ADD_TEXT
*&---------------------------------------------------------------------*
*&      Form  HTML
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM HTML.
  DATA : DL_LENGTH  TYPE I,                           " Length
         DL_BACKGROUND_ID TYPE SDYDO_KEY VALUE SPACE. " Background_id
* Creating html control
  IF DG_HTML_CNTRL IS INITIAL.
    CREATE OBJECT DG_HTML_CNTRL
         EXPORTING
              PARENT    = DG_PARENT_HTML.
  ENDIF.
* Reuse_alv_grid_commentary_set
  CALL FUNCTION 'REUSE_ALV_GRID_COMMENTARY_SET'
    EXPORTING
      DOCUMENT = DG_DYNDOC_ID
      BOTTOM   = SPACE
    IMPORTING
      LENGTH   = DL_LENGTH.
* Get TOP->HTML_TABLE ready
  CALL METHOD DG_DYNDOC_ID->MERGE_DOCUMENT.
* Set wallpaper
  CALL METHOD DG_DYNDOC_ID->SET_DOCUMENT_BACKGROUND
    EXPORTING
      PICTURE_ID = DL_BACKGROUND_ID.
* Connect TOP document to HTML-Control
  DG_DYNDOC_ID->HTML_CONTROL = DG_HTML_CNTRL.
* Display TOP document
  CALL METHOD DG_DYNDOC_ID->DISPLAY_DOCUMENT
    EXPORTING
      REUSE_CONTROL      = 'X'
      PARENT             = DG_PARENT_HTML
    EXCEPTIONS
      HTML_DISPLAY_ERROR = 1.
  IF SY-SUBRC NE 0.
    MESSAGE I999 WITH 'Error in displaying top-of-page'(036).
  ENDIF.

ENDFORM.                    " HTML

Regards

vijay

Read only

0 Likes
1,229

hiAbhay,

yes you need to click pattern then

select the Select <b>AABAP Object Paterns</b> then press enter.

Then select the <b>Call Method</b>.

Instance: <b>go_grid</b>

Class: <b>cl_gui_alv_grid</b>

mehod :<b>set_table_for_first_display</b>

and then press enter.

Read only

Former Member
0 Likes
1,229

Hi Abhay,

To get the class method.

go to pattern-> choose AABAP object patterns hit enter

choose class method section give the

instance as go_grid

class as cl_gui_alv_grid

method as set_table_for_first_display

hit enter.

here is a example code for using OO ALV



data : g_alv           type ref to cl_gui_alv_grid,
        gref_docking_container TYPE REF TO cl_gui_custom_container,
        gs_layout TYPE lvc_s_layo.

data :event_receiver TYPE REF TO lcl_application,
      gt_fieldcat type lvc_t_fcat,
      gs_fieldcat type lvc_s_fcat.


DATA:gt_outtab type table of <TABLE>.

data : gs_outtab like line of gt_outtab.

call screen 100.
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.


in the PBO of screen 100
  create object gref_docking_container
       exporting
         container_name = 'CCAREA_ALV'.

  create object g_alv
     exporting i_parent = GREF_DOCKING_CONTAINER.



  select * from <TABLE> into table GT_OUTTAB.

  gs_fieldcat-fieldname = 'F1'.
  gs_fieldcat-ref_table = '<TABLE>'.
  gs_fieldcat-edit       = 'X'.
  gs_fieldcat-key = 'X'.
  append gs_fieldcat to gt_fieldcat.

  gs_fieldcat-fieldname = 'F2'.
  gs_fieldcat-ref_table = '<TABLE>'.
  gs_fieldcat-edit       = 'X'.
  gs_fieldcat-key = 'X'.
  append gs_fieldcat to gt_fieldcat.

  gs_fieldcat-fieldname = 'F3'.
  gs_fieldcat-ref_table = '<TABLE>'.
  gs_fieldcat-edit       = 'X'.
  gs_fieldcat-key = 'X'.
  append gs_fieldcat to gt_fieldcat.

  gs_layout-grid_title = 'TEST'.



    call method g_ALV->set_table_for_first_display
         exporting                     " i_buffer_active = 'X'
*                   i_save = 'A'
*                   is_variant = gs_variant
                   is_layout  = gs_layout
         changing  it_fieldcatalog = gt_fieldcat
*                   it_sort = gt_sort
                   it_outtab        = gt_outtab[].
ENDMODULE.

Hope this helps.

Regards,

Kinshuk

Read only

Former Member
0 Likes
1,229

Hi Abay,

click 'Pattern' button in se38 editor ,then select 'Abap objects pattern' radio btn,press 'enter' in the next screen, enter class as 'CL_GUI_ALV_GRID', method as 'SET_TABLE_FOR_FIRST_DISPLAY' ,then code for fm will pated in ur editor, then Replace key word 'ME' with ur 'go_grid ' .

Regards,

Kiran B