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

Problems with ALV-GRID - OO

Former Member
0 Likes
1,581

Hi,

I'm using OO for ALV-GRID. I have problems by using TOP_OF_PAGE.

I try it like this:

CLASS LCL_EVENT_HANDLER DEFINITION .

PUBLIC SECTION .

METHODS:

*

HANDLE_TOP_OF_PAGE

FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID,

*

HANDLE_PRINT_TOP_OF_PAGE

FOR EVENT PRINT_TOP_OF_PAGE OF CL_GUI_ALV_GRID.

*

*

ENDCLASS. "LCL_EVENT_HANDLER DEFINITION

...

CLASS LCL_EVENT_HANDLER IMPLEMENTATION .

*

*--Handle Print Top of page

METHOD HANDLE_PRINT_TOP_OF_PAGE.

IF SY-PAGNO = 1.

PERFORM PRINT_TOP_OF_PAGE.

ENDIF.

ENDMETHOD. "handle_print_top_of_page

*--Handle Top of page

METHOD HANDLE_TOP_OF_PAGE.

PERFORM TOP_OF_PAGE.

ENDMETHOD. "handle_top_of_page

*

ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION

...

CALL METHOD GR_ALVGRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

IT_TOOLBAR_EXCLUDING = GT_EXCLUDE

IS_LAYOUT = GS_LAYOUT

CHANGING

IT_FIELDCATALOG = GT_FIELDCAT

IT_OUTTAB = ITAB.

*

CREATE OBJECT GR_EVENT_HANDLER.

SET HANDLER GR_EVENT_HANDLER->HANDLE_PRINT_TOP_OF_PAGE FOR GR_ALVGRID.

SET HANDLER GR_EVENT_HANDLER->HANDLE_TOP_OF_PAGE FOR GR_ALVGRID.

...

FORM PRINT_TOP_OF_PAGE.

*

WRITE: / 'Print-Header'.

*

ENDFORM. "print_top_of_page

FORM TOP_OF_PAGE.

*

WRITE: / 'Screnn-Header'.

*

ENDFORM. "top_of_page

Has anyone an idea what i shell do??

Thanks

regards, Dieter

1 ACCEPTED SOLUTION
Read only

athavanraja
Active Contributor
0 Likes
1,547

check this weblog.

/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid

Regards

Raja

check this weblog.

/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid

Regards

Raja

11 REPLIES 11
Read only

amit_khare
Active Contributor
0 Likes
1,547

As far as I know you cannot use write statement with ALV to display data.

check out the method for top of page.

Regards,

Amit

Check this example for all events

<b>BCALV_TEST_FULLSCREEN_EVENTS</b>

Message was edited by:

Amit Khare

Read only

Former Member
0 Likes
1,547
chk this


*&---------------------------------------------------------------------*
*& Report  Y_TOP_PAGE                                                  *
*&                                                                     *
*&---------------------------------------------------------------------*
*&                                                                     *
*&                                                                     *
*&---------------------------------------------------------------------*

REPORT  y_top_page                              .

TABLES : mara.
TYPE-POOLS: slis.

DATA : w_repid LIKE sy-repid.
  w_repid = sy-repid.

DATA : BEGIN OF it_mara OCCURS 0,
       matnr LIKE mara-matnr,
       END OF it_mara.

*layout
DATA: wa_layout           TYPE SLIS_LAYOUT_ALV.
*field catalog
DATA: it_fieldcat_wrt_off TYPE slis_t_fieldcat_alv,
      wa_fieldcat_wrt_off TYPE slis_fieldcat_alv.

START-OF-SELECTION.

  SELECT matnr FROM mara INTO CORRESPONDING FIELDS OF TABLE it_mara.

END-OF-SELECTION.


  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
   EXPORTING
     i_program_name               = w_repid
   I_INTERNAL_TABNAME           = 'IT_MARA'
*     i_structure_name             = 'IT_MARA'
*   I_CLIENT_NEVER_DISPLAY       = 'X'
   I_INCLNAME                   = w_repid
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
    CHANGING
      ct_fieldcat                  = it_fieldcat_wrt_off[]
   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.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program     = w_repid
      i_callback_top_of_page = 'TOP-OF-PAGE'
      is_layout              = wa_layout
      it_fieldcat            = it_fieldcat_wrt_off
    TABLES
      t_outtab               = it_mara
    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.



*-------------------------------------------------------------------*
* Form  TOP-OF-PAGE                                                 *
*-------------------------------------------------------------------*
* ALV Report Header                                                 *
*-------------------------------------------------------------------*
FORM top-of-page.
*ALV Header declarations
  DATA: t_header TYPE slis_t_listheader,
        wa_header TYPE slis_listheader,
        t_line LIKE wa_header-info,
        ld_lines TYPE i,
        ld_linesc(10) TYPE c.

* Title
  wa_header-typ  = 'H'.
  wa_header-info = 'CHANDU REPORT'.
  APPEND wa_header TO t_header.
  CLEAR wa_header.

* Date
  wa_header-typ  = 'S'.
  wa_header-key = 'Date: '.
  CONCATENATE  sy-datum+6(2) '.'
               sy-datum+4(2) '.'
               sy-datum(4) INTO wa_header-info.   "todays date
  APPEND wa_header TO t_header.
  CLEAR: wa_header.

* Total No. of Records Selected
*  describe table it_ekko lines ld_lines.
*  ld_linesc = ld_lines.
*  concatenate 'Total No. of Records Selected: ' ld_linesc
*                    into t_line separated by space.
*  wa_header-typ  = 'A'.
*  wa_header-info = t_line.
*  append wa_header to t_header.
*  clear: wa_header, t_line.

  CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
    EXPORTING
      it_list_commentary = t_header.
*            i_logo             = 'Z_LOGO'.
ENDFORM.                    "top-of-page
Read only

athavanraja
Active Contributor
0 Likes
1,548

check this weblog.

/people/vijaybabu.dudla/blog/2006/07/21/topofpage-in-alv-using-clguialvgrid

Regards

Raja

Read only

Former Member
0 Likes
1,547

hi

good

go to SE38

give BCALV* and put f4

you ll find lots of ALV-GRID-OO examples, test them and use them accordingly.

thanks

mrutyun^

Read only

Former Member
0 Likes
1,547

Hi Dieter,

Check the above mentioned Blog.

if you have any doubts get back .

Regards

Vijay

Read only

0 Likes
1,547

Hi Vijay,

i have problems by using your example which is mentioned by Rava.

When i print out the ALV-List it works OK in my Report but not in Dialog.

Isn't possible to use it in Dialog like i do in my example?

(Write: / ... )

Regards, Dieter

Read only

0 Likes
1,547

Hi Vijay,

i have tried this code (same as you but with MARA).

I created PF-Staus STATUS und screen 100 with container CONTROL

but i don't get any result (IT_MARA has 20 entries).

Which mistake have i done?

REPORT ZGRO_TEST1 MESSAGE-ID ZZ .

DATA: IT_MARA TYPE TABLE OF MARA.

DATA: OK_CODE LIKE SY-UCOMM,

SAVE_OK LIKE SY-UCOMM.

DATA: G_CONTAINER TYPE SCRFNAME VALUE 'CONTROL',

O_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT,

O_SPLITTER TYPE REF TO CL_GUI_SPLITTER_CONTAINER,

O_PARENT_GRID TYPE REF TO CL_GUI_CONTAINER,

O_PARENT_TOP TYPE REF TO CL_GUI_CONTAINER,

O_HTML_CNTRL TYPE REF TO CL_GUI_HTML_VIEWER.

CLASS LCL_EVENT_HANDLER DEFINITION .

PUBLIC SECTION .

METHODS:

*Event Handler for Top of page

TOP_OF_PAGE FOR EVENT TOP_OF_PAGE

OF CL_GUI_ALV_GRID

IMPORTING E_DYNDOC_ID.

ENDCLASS. "lcl_event_handler DEFINITION

CLASS LCL_EVENT_HANDLER IMPLEMENTATION.

METHOD TOP_OF_PAGE.

  • Top-of-page event

PERFORM EVENT_TOP_OF_PAGE USING O_DYNDOC_ID.

ENDMETHOD. "top_of_page

ENDCLASS. "LCL_EVENT_HANDLER IMPLEMENTATION

DATA: G_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER,

G_HANDLER TYPE REF TO LCL_EVENT_HANDLER. "handler

START-OF-SELECTION.

SELECT *

FROM MARA

UP TO 20 ROWS

INTO TABLE IT_MARA.

END-OF-SELECTION.

IF NOT IT_MARA[] IS INITIAL.

CALL SCREEN 100.

ELSE.

MESSAGE I002 WITH 'NO DATA FOR THE SELECTION'(004).

ENDIF.

MODULE STATUS_0100 OUTPUT.

SET PF-STATUS 'STATUS'.

SET TITLEBAR 'TITLE'.

IF G_CUSTOM_CONTAINER IS INITIAL.

PERFORM CREATE_AND_INIT_ALV.

ENDIF.

ENDMODULE. " STATUS_0100 OUTPUT

MODULE USER_COMMAND_0100 INPUT.

CASE SY-UCOMM.

WHEN 'BACK'.

LEAVE TO SCREEN 0.

ENDCASE.

ENDMODULE. " USER_COMMAND_0100 INPUT

FORM CREATE_AND_INIT_ALV .

DATA: G_GRID TYPE REF TO CL_GUI_ALV_GRID.

CREATE OBJECT G_CUSTOM_CONTAINER

EXPORTING CONTAINER_NAME = G_CONTAINER.

  • Create TOP-Document

CREATE OBJECT O_DYNDOC_ID

EXPORTING STYLE = 'ALV_GRID'.

  • Create Splitter for custom_container

CREATE OBJECT O_SPLITTER

EXPORTING PARENT = G_CUSTOM_CONTAINER

ROWS = 2

COLUMNS = 1.

CALL METHOD O_SPLITTER->GET_CONTAINER

EXPORTING

ROW = 1

COLUMN = 1

RECEIVING

CONTAINER = O_PARENT_TOP.

CALL METHOD O_SPLITTER->GET_CONTAINER

EXPORTING

ROW = 2

COLUMN = 1

RECEIVING

CONTAINER = O_PARENT_GRID.

  • Set height for g_parent_html

CALL METHOD O_SPLITTER->SET_ROW_HEIGHT

EXPORTING

ID = 1

HEIGHT = 5.

CREATE OBJECT G_GRID

EXPORTING I_PARENT = O_PARENT_GRID.

CREATE OBJECT G_HANDLER.

SET HANDLER G_HANDLER->TOP_OF_PAGE FOR G_GRID.

*Calling the Method for ALV output

CALL METHOD G_GRID->SET_TABLE_FOR_FIRST_DISPLAY

EXPORTING

I_STRUCTURE_NAME = 'MARA'

CHANGING

IT_OUTTAB = IT_MARA[].

CALL METHOD O_DYNDOC_ID->INITIALIZE_DOCUMENT

EXPORTING

BACKGROUND_COLOR = CL_DD_AREA=>COL_TEXTAREA.

  • Processing events

CALL METHOD G_GRID->LIST_PROCESSING_EVENTS

EXPORTING

I_EVENT_NAME = 'TOP_OF_PAGE'

I_DYNDOC_ID = O_DYNDOC_ID.

ENDFORM. "CREATE_AND_INIT_ALV

FORM EVENT_TOP_OF_PAGE USING DG_DYNDOC_ID TYPE REF TO CL_DD_DOCUMENT.

DATA : DL_TEXT(255) TYPE C. "Text

CALL METHOD DG_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = 'Flight Details'

SAP_STYLE = CL_DD_AREA=>HEADING

SAP_FONTSIZE = CL_DD_AREA=>LARGE

SAP_COLOR = CL_DD_AREA=>LIST_HEADING_INT.

CALL METHOD DG_DYNDOC_ID->ADD_GAP

EXPORTING

WIDTH = 200.

CALL METHOD O_DYNDOC_ID->ADD_PICTURE

EXPORTING

PICTURE_ID = 'ENJOYSAP_LOGO'.

  • Add new-line

CALL METHOD DG_DYNDOC_ID->NEW_LINE.

CALL METHOD DG_DYNDOC_ID->NEW_LINE.

CLEAR : DL_TEXT.

  • program ID

DL_TEXT = 'Program Name :'.

CALL METHOD DG_DYNDOC_ID->ADD_GAP.

CALL METHOD O_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = DL_TEXT

SAP_EMPHASIS = CL_DD_AREA=>HEADING

SAP_COLOR = CL_DD_AREA=>LIST_HEADING_INT.

CLEAR DL_TEXT.

DL_TEXT = SY-REPID.

CALL METHOD O_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = DL_TEXT

SAP_EMPHASIS = CL_DD_AREA=>HEADING

SAP_COLOR = CL_DD_AREA=>LIST_NEGATIVE_INV.

  • Add new-line

CALL METHOD DG_DYNDOC_ID->NEW_LINE.

CLEAR : DL_TEXT.

CLEAR : DL_TEXT.

  • program ID

DL_TEXT = 'User Name :'.

CALL METHOD DG_DYNDOC_ID->ADD_GAP.

CALL METHOD O_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = DL_TEXT

SAP_EMPHASIS = CL_DD_AREA=>HEADING

SAP_COLOR = CL_DD_AREA=>LIST_HEADING_INT.

CLEAR DL_TEXT.

DL_TEXT = SY-UNAME.

CALL METHOD O_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = DL_TEXT

SAP_EMPHASIS = CL_DD_AREA=>HEADING

SAP_COLOR = CL_DD_AREA=>LIST_NEGATIVE_INV.

  • Add new-line

CALL METHOD DG_DYNDOC_ID->NEW_LINE.

CLEAR : DL_TEXT.

  • Run Date

DL_TEXT = 'Run Date :'.

CALL METHOD DG_DYNDOC_ID->ADD_GAP.

CALL METHOD O_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = DL_TEXT

SAP_EMPHASIS = CL_DD_AREA=>HEADING

SAP_COLOR = CL_DD_AREA=>LIST_HEADING_INT.

CLEAR DL_TEXT.

  • Move date

WRITE SY-DATUM TO DL_TEXT.

CALL METHOD O_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = DL_TEXT

SAP_EMPHASIS = CL_DD_AREA=>HEADING

SAP_COLOR = CL_DD_AREA=>LIST_NEGATIVE_INV.

  • Add new-line

CALL METHOD DG_DYNDOC_ID->NEW_LINE.

CLEAR : DL_TEXT.

*Time

DL_TEXT = 'Time :'.

CALL METHOD DG_DYNDOC_ID->ADD_GAP.

CALL METHOD O_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = DL_TEXT

SAP_EMPHASIS = CL_DD_AREA=>HEADING

SAP_COLOR = CL_DD_AREA=>LIST_HEADING_INT.

CLEAR DL_TEXT.

  • Move time

WRITE SY-UZEIT TO DL_TEXT.

CALL METHOD O_DYNDOC_ID->ADD_TEXT

EXPORTING

TEXT = DL_TEXT

SAP_EMPHASIS = CL_DD_AREA=>HEADING

SAP_COLOR = CL_DD_AREA=>LIST_NEGATIVE_INV.

  • Add new-line

CALL METHOD DG_DYNDOC_ID->NEW_LINE.

PERFORM DISPLAY.

ENDFORM. " EVENT_TOP_OF_PAGE

FORM DISPLAY.

  • Creating html control

IF O_HTML_CNTRL IS INITIAL.

CREATE OBJECT O_HTML_CNTRL

EXPORTING

PARENT = O_PARENT_TOP.

ENDIF.

CALL METHOD O_DYNDOC_ID->MERGE_DOCUMENT.

O_DYNDOC_ID->HTML_CONTROL = O_HTML_CNTRL.

  • Display document

CALL METHOD O_DYNDOC_ID->DISPLAY_DOCUMENT

EXPORTING

REUSE_CONTROL = 'X'

PARENT = O_PARENT_TOP

EXCEPTIONS

HTML_DISPLAY_ERROR = 1.

IF SY-SUBRC NE 0.

MESSAGE I999 WITH 'Error in displaying top-of-page'(036).

ENDIF.

ENDFORM. " display

Regards, Dieter

Read only

0 Likes
1,547

Hi Dieter,

I tried your code, it is working fine for me, and if you are not getting the display then the problem is here ...

<b>DATA: G_CONTAINER TYPE SCRFNAME VALUE 'CONTROL',</b>

in the screen 100, you created the custom control, there you gave some diff name , in the above line you used as CONTROL, that might be the reason.

so give the same name in the two places.

and check.

Regards

Vijay

Read only

0 Likes
1,547

Hi,

thanks for help. Now it works like i want.

Vijay my mistake was not the control-name but module-names.

*

PROCESS BEFORE OUTPUT.

MODULE STATUS_0100.

*

PROCESS AFTER INPUT.

MODULE USER_COMMAND_0100.

*

Thanks again.

Regards, Dieter

Read only

0 Likes
1,547

You didn't show us the Flow Logic.

Anyway you solved the problem.

Best of luck.

Regards

Vijay

Read only

gary_king2
Participant
0 Likes
1,547

Demo program BCALV_GRID_01 demonstrates this top-of-page functionality, I believe. The same program also demonstrates the print_top_of_list as well.

Gary King (Dr Sidewalk)