cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst

Die Objektorientierung mit ABAP®: Vererbung, Dynamische Programmierung, GUI Controls (u.a. ALV im OO).
7 Beiträge • Seite 1 von 1
7 Beiträge Seite 1 von 1

cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Moin moin,

ich habe hier ein cl_gui_alv_grid, bei dem ich einen Eventhandler für das Event TOP OF PAGE registriert und codiert habe. Dieser wird aber nicht ausgelöst (ich dachte, dass er auch bei Bildschirmanzeige ausgelöst wird, nämlich ehe die Ausgabe der Tabelle beginnt).

Hintergrund: Ich möchte gern einen Header über einem ALV in einem Docking-Container erzeugen (ähnlich wie das der Funktionsbaustein REUSE_ALV_COMMENTARY_WRITE macht, aber mit etwas "freierem" Layout).

Irre ich mich, was die Auslösung von TOP OF PAGE im ALV angeht?
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
Ja, du irrst.
der Top-Of-Page wird beim Druck der Liste aufgerufen.
Beim Reuse-Baustein verwechselst du es glaube ich mit

Code: Alles auswählen.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
        i_callback_html_top_of_page = 'CALLBACK_HTML_TOP'
Für den cl_gui_alv_grid musst du den Splitter/ Header selbst programmieren.

Re: cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Nein, für den Druck der Liste gibt es doch das Event PRINT_TOP_OF_PAGE.
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst

Beitrag von ewx (Top Expert / 4844 / 311 / 640 ) »
ja, du hast recht.
Evtl. kann man tatsächlich eine Verknüpfung herstellen.
Schau dir mal Methode LIST_PROCESSING_EVENTS an. Dort wird das Ereignis "umgeleitet" wenn kein dynDoc vorhanden ist:

Code: Alles auswählen.

        if not i_dyndoc_id is initial.
          raise event top_of_page
            exporting
              table_index = i_table_index
              e_dyndoc_id = i_dyndoc_id.
        else.
          raise event print_top_of_page
            exporting
              table_index = i_table_index.
        endif.
Das wird aber nur für den Reuse-Baustein vernwendet.
In Inlcude CSDSSE01ALV wird TOP_OF_PAGE verwendet. Da findet die Darstellung aber in einem eigenen Control statt:

Code: Alles auswählen.

CLASS lcl_handle_events DEFINITION .

  PUBLIC SECTION.

    METHODS: top_of_page FOR EVENT top_of_page OF cl_gui_alv_grid
                IMPORTING e_dyndoc_id table_index,
   (...)
ENDCLASS.                    "lcl_handle_events DEFINITION

CLASS lcl_handle_events IMPLEMENTATION.

  METHOD top_of_page.
    PERFORM set_dynamic_document.
  ENDMETHOD.                    "top_of_page
(...)

Code: Alles auswählen.

*&---------------------------------------------------------------------*
*&      Form  set_dynamic_document
*&---------------------------------------------------------------------*
*       set dynamic document for the top container
*----------------------------------------------------------------------*
FORM set_dynamic_document .
  IF cl_dd IS INITIAL.
    CREATE OBJECT cl_dd EXPORTING
            background_color = cl_dd_document=>col_background_level2.

    PERFORM set_top_of_page USING cl_dd.
    CALL METHOD cl_dd->merge_document.
    CALL METHOD cl_dd->display_document
      EXPORTING
        container          = 'HTML_CONTROL'
      EXCEPTIONS
        html_display_error = 1.
  ELSE.

    CALL METHOD cl_dd->initialize_document
      EXPORTING
        background_color = cl_dd_document=>col_background_level2.

    PERFORM set_top_of_page USING cl_dd.

    CALL METHOD cl_dd->merge_document.

    CALL METHOD cl_dd->display_document
      EXPORTING
        reuse_control      = 'X'
        reuse_registration = 'X'
        container          = 'HTML_CONTROL'
      EXCEPTIONS
        html_display_error = 1.
  ENDIF.

ENDFORM.                    " set_dynamic_document
Du brauchst also in jedem Fall einen eigenen Container!

Re: cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
ralf.wenzel hat geschrieben:...
ich habe hier ein cl_gui_alv_grid, bei dem ich einen Eventhandler für das Event TOP OF PAGE registriert und codiert habe. Dieser wird aber nicht ausgelöst (ich dachte, dass er auch bei Bildschirmanzeige ausgelöst wird, nämlich ehe die Ausgabe der Tabelle beginnt).
Der Event ist falsch. M.E. ist der für die Listausgabe gedacht - also bei Hintergrundverarbeitung wenn auf den "alten" Listviewer umgeschaltet wird.

Ansonsten kopiere dir doch den COMMENTARY_WRITE und ändere den ab oder benutze den üblichen COMMENTRY_WRITE und greif dir den Container den COMMENTRY_WRITE verwendet und pack da dein eigenes HTML rein, falls der Callback-Event den Enno angegeben hat nicht zum Ziel führen sollte.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst

Beitrag von ralf.wenzel (Top Expert / 3924 / 200 / 280 ) »
Das Problem ist, dass ich das im TOP_OF_PAGE haben möchte, wo es thematisch hingehört, das wird aber nicht durchlaufen. Ich überlege gerade, ob ich es irgendwie hinkriege, dass das Ereignis trotzdem angetriggert wird. Ich könnte die Klasse erben und selbst ein Ereignis bauen, aber Events kann man leider nicht redefinieren ;)
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing

Re: cl_gui_alv_grid: TOP OF PAGE wird nicht ausgelöst

Beitrag von black_adept (Top Expert / 4087 / 126 / 940 ) »
Magst du das Ereignis nicht direkt über den Dispatcher selber antriggern wenn du ein Display oder Refresh machst oder muss das automatisch passieren?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2729
Views
Page up and down im REUSE-ALV-Grid
von sapdepp » 24.08.2011 12:11 • Verfasst in ABAP® Core
2
Antw.
2461
Views
Top-Of-Page-Ersatz beim ALV Grid-Control
von LB_FAN86 » 19.09.2007 15:33 • Verfasst in ABAP Objects®
7
Antw.
5969
Views
Event wird nicht ausgelöst
von dawns » 29.03.2007 09:05 • Verfasst in ABAP Objects®
1
Antw.
1025
Views
Batch Input wird nicht ausgelöst...
von Nici » 10.06.2005 11:29 • Verfasst in ABAP® für Anfänger
0
Antw.
1625
Views
Workflow: beendendes Ereignis wird nicht ausgelöst!
von Frank Zet. » 29.10.2006 15:49 • Verfasst in ABAP® Core

Über diesen Beitrag


Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.

Unbeantwortete Forenbeiträge

Daten an Tabelle binden
Gestern von Bright4.5 1 / 511
aRFC im OO-Kontext
vor 4 Wochen von ralf.wenzel 1 / 2146
Hilfe bei SWEC/SWE2
letzen Monat von retsch 1 / 8742