Navigationsprofil im ALV Grid Control

Ein Navigationsprofil ist sehr nützlich im ALV Grid Control in SAP ERP bzw. SAP S/4HANA. Mit dem Navigationsprofil hast Du die Möglichkeit, zusätzliche Funktionen und Transaktionen in der Drucktastenleiste eines ALV Grid Controls einzufügen.

In diesem Artikel wird das Navigationsprofil näher erläutert und beschrieben, wie man einfach und schnell ein Navigationsprofil im eigenen ALV Grid Control einfügen kann.

ALV Grid Control erklärt

Die Abkürzung ALV steht für SAP List Viewer. Es ist ein flexibles Werkzeug zur Listendarstellung von Informationen. Im SAP List Viewer stehen drei Darstellungsarten zur Verfügung.

Erstens gibt es die Darstellungsart einer einfachen zweidimensionalen Tabelle. Damit kann man leicht eine Datenausgabe über mehrere Zeilen und Spalten realisieren, ohne sich um die Ausrichtung kümmern zu müssen. Die Struktur wird in einem Feldkatalog definiert.

Zweitens gibt es hierarchisch sequenzielle Listen. Hierbei können Daten tabellarisch und hierarchisch in genau zwei Ebenen gegliedert angezeigt werden. Man kann vorab definieren, ob nur die erste Ebene oder beide Ebenen beim Aufruf angezeigt werden sollen.

Als dritte Darstellungsart stehen die Baumstrukturen zur Verfügung. Hierbei können tabellarisch angelegte Daten auf mehr als zwei Hierarchieebenen angezeigt werden.

Das ALV Grid Control stellt einfache zweidimensionale Tabellen dar und enthält bereits generische Funktionen, die vom Benutzer genutzt werden können. Hierunter fallen beispielsweise das Sortieren, Suchen und Filtern der Datensätze. Außerdem bietet es umfangreiche Möglichkeiten des Datenexports nach beispielsweise Excel oder HTML. Darüber hinaus kann ein ABAP-Entwickler das ALV Grid Control um eigene Funktionen erweitern und das Navigationsprofil zur Verfügung stellen.

Was ist ein Navigationsprofil in SAP ERP?

Ein Navigationsprofil ist eine Funktion im ALV Grid Control, mit dessen Hilfe man zusätzliche Funktionen und Transaktionen in die Drucktastenleiste oder Kontextmenüs eines ALV Grid Controls einfügen kann.

Navigationsprofile können benutzerabhängig oder -unabhängig eingerichtet werden.

Es ist dabei sogar möglich, Navigationsprofile zu transportieren.

Das Navigationsprofil kann mit dem entsprechenden Button in der Drucktastenleiste im ALV Grid Control aufgerufen werden. Mit der Transaktion NAVP_MANAGE kann man Navigationsprofile verwalten.

Button Navigationsprofil

Navigationsprofil – Funktionsweise

Für die Verwendung eines Navigationsprofils ist das Berechtigungsobjekt C_NAV_PROF notwendig. Folgende Aktivitäten können dabei vergeben werden:

  • 01 – Hinzufügen oder Erzeugen
  • 23 – Pflegen

In folgenden Transaktionen steht das Navigationsprofil beispielsweise standardmäßig zur Verfügung: CO01 (Hinzufügen Fertigungsauftrag), CO24 (Fehlteilinfosystem), COHV (Massenbearbeitung Fertigungsaufträge), COOIS (Fertigungsauftragsinformationssystem), MD09 (Bedarfsverursachernachweis), PKMC (Regelkreispflege).

Folgende Funktionen werden in der Drucktaste vom Navigationsprofil unterstützt:

  • Navigationsprofil auswählen
  • Navigationsprofil ändern
  • Navigationsprofil sichern
  • Navigationsprofil verwalten
Navigationsprofil - Funktionen

Navigationsprofil auswählen

Durch die Funktion “Navigationsprofil auswählen” erhält man eine Übersicht über die Navigationsprofile. Hierbei kann man durch Klick auf die entsprechende Zeile das Profil auswählen und im ALV Grid Control nutzen.

Navigationsprofil auswählen

Navigationsprofil ändern

Klickt man auf den Button “Navigationsprofil” erscheint im Kontextmenü die Funktion “Navigationsprofil ändern”. Wählt man diese aus, kann man in der Drucktastenleiste oder im Kontextmenü einzelne Funktionen hinzufügen: Trennlinie, Transaktionsaufruf, Funktionsaufruf, Klassenaufruf, Menü.

Wählt man die Funktion aus (Drucktastenleiste oder Kontextmenü), kann man eine Funktion über den Plus-Button hinzufügen. Anschließend kann man die notwendigen Eigenschaften der Funktion angeben und bestätigen.

Transaktionsaufruf einfügen durch Navigationsprofil

Das Ergebnis ist sofort sichtbar. In diesem Beispiel wurde ein Transaktionsaufruf als Button in der Drucktastenleiste hinzugefügt.

Transaktionsaufruf in der Drucktastenleiste

In diesem Beispiel kann man direkt durch Klick auf die entsprechende Zeile im ALV Grid Control und drücken des Buttons “Bestellung anzeigen” in die Transaktion ME23N abspringen und die Bestellnummer wird dabei gemäß der ausgewählten Zeile übernommen.

Navigationsprofil sichern

Nur wenn man das Navigationsprofil sichert, stehen die Änderungen auch in Zukunft zur Verfügung. Wenn man nicht speichert, gehen die Änderungen nach Verlassen des Programms verloren und man muss die Änderungen erneut durchführen.

Wählt man die Funktion “Navigationsprofil sichern” über den Button aus, erscheint ein Fenster in dem man die ID des Profils und die Bezeichnung angeben kann. Zusätzlich hinaus kann man einstellen, ob das Navigationsprofil nur benutzerspezifisch gilt und ob es standardmäßig aufgerufen werden soll.

Navigationsprofil sichern

Navigationsprofil verwalten

Durch die Funktion “Navigationsprofil verwalten” erhält man eine Übersicht über alle Navigationsprofile. Dabei werden diese in benutzerspezifische und globale Profile aufgeteilt. Durch Klick auf den Button “Standardprofile” oder “Benutzerprofile” wechselt man die entsprechende Ansicht.

So hat man die Möglichkeit, die Voreinstellung zu setzen, Profile zu importieren oder zu löschen. Zusätzlich hinaus können Standardprofile transportiert werden.

Navigationsprofil verwalten

Mit der Transaktion NAVP_MANAGE kann man direkt Navigationsprofile verwalten.

Navigationsprofil im eigenen ALV Grid Control verwenden

Für die Verwendung eines Navigationsprofils im ALV Grid Control sind folgende Schritte notwendig:

  • Custom Container erstellen
  • GUI-Status einrichten
  • Feldkatalog erstellen
  • ABAP-Programm erstellen
    • Daten selektieren
    • ALV Grid Control erstellen
    • Navigationsprofil hinzufügen
    • ALV Grid Control mit Daten aufrufen

Zuerst benötigen wir einen ALV Grid Control, um das Navigationsprofil in der Drucktastenleiste einfügen zu können.

Custom Control

Über den Screen Painter (Transaktion SE51) kann man das notwendige Dynpro erstellen. Alternativ kann man direkt im ABAP Editor (Transaktion SE38 oder SE80) über die Vorwärtsnavigation das Dynpro anlegen.

Nachdem man den Screen Painter aufgerufen hat, gibt man das Programm und die Dynpro-Nummer an. Das Programm muss davor im ABAP Editor (Transaktion SE38) angelegt worden sein. Anschließend klickt man auf den Anlegen-Button.

Dynpro 100 für ALV Grid Control anlegen

Daraufhin gibt man die Kurzbeschreibung an. Bei Bedarf können weitere Attribute gepflegt werden (z.B. Zeilen und Spalten im Dynpro). Über den Button “Springen Layout” oder der Tastenkombination “Strg + F7” kann man über den grafischen Editor im Screen Painter das Custom Control hinzufügen.

Dynpro im Screen Painter (Transaktion SE51)

Anschließend fügt man im Dynpro das notwendige Custom Control hinzu. Hierzu nutzt man in der linken Buttonleiste den entsprechenden Button aus und fügt diesen im Fenster ein. Je nach Bedarf kann man die Länge und Höhe einstellen (z.B. 255 x 200). Man gibt die ID des Custom Controls an, speichert und aktiviert.

Custom Control einfügen

Durch Speichern und Aktivieren ist das Custom Control erfolgreich angelegt und kann im Dynpro verwendet werden.

Im Tabreiter “Elementliste” im Screen Painter wird nun das Custom Control aufgelistet.

GUI-Status

Als nächste Vorarbeit muss der GUI-Status angelegt werden, damit die Funktionstasten “Zurück”, “Beenden” und “Abbrechen” behandelt werden. Diese werden mit Kommandos versehen, damit später im Programm darauf zugegriffen werden kann.

Die verschiedenen GUI-Status werden im PBO-Modul angelegt. Die Abkürzung PBO steht für Process Before Output und sorgt in der Dynpro-Ablauflogik für die Programmlogik vor der visuellen Ausgabe im SAP GUI.

Das PBO-Modul legt man über die Vorwärtsnavigation leicht an. Dafür wechselt man in den Tabreiter “Ablauflogik”, kommentiert die Zeile “MODULE STATUS_0100” ein und klickt doppelt auf “STATUS_0100”, um dieses PBO-Modul anzulegen. Daraufhin bestätigt man die Anlage im separaten Fenster.

GUI-Status im PBO-Modul

Daraufhin gibt man den Namen des PBO-Moduls an. Es reicht absolut aus, die Vorauswahl beizubehalten.

Angabe Namen PBO-Modul

Anschließend kann man die ID des GUI-Status festlegen. Bei Bedarf legt man auch den Namen der Titelleiste fest. In diesem Beispiel lautet die ID der GUI-Status STATUS_0100.

*----------------------------------------------------------------------*
***INCLUDE Z_NAVPROF_ALV_STATUS_0100O01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
  SET TITLEBAR 'Navigationsprofil im ALV Grid Control'.
ENDMODULE.

Erneut kann man die GUI-Status durch die Vorwärtsnavigation anlegen. Hierzu klickt man mit der linken Maustaste doppelt auf die festgelegte ID.

GUI-Status anlegen

Daraufhin erscheint ein Fenster, um die Attribute zu pflegen. Den Statustyp kann man auf Dialogstatus eingestellt lassen. Anschließend bestätigt man die Anlage.

Status anlegen Attribute

Im darauffolgenden Fenster kann man die einzelnen GUI-Status pflegen. In diesem Beispiel werden nur die Funktionstasten gepflegt. Hier gibt man die Kommandos BACK und EXIT ein. Wenn man möchte, kann man alle GUI-Status der Vollständigkeit pflegen.

GUI-Status pflegen

Nach dem Speichern und Aktivieren sind die GUI-Status ebenfalls erfolgreich angelegt.

Abschließend muss man den OK-Code noch als Variable erstellen und in der Elementliste mit aufnehmen.

OK_CODE in der Elementliste mit aufnehmen

Feldkatalog

Nun sind alle notwendigen Voraussetzungen erfüllt, um das Programm für die Ausgabe der Daten im ALV Grid Control zu gewährleisten. An dieser Stelle kann man eine eigene Struktur als Feldkatalog erstellen, um die Daten für die Ausgabe im ALV Grid Control vorzubereiten.

In diesem einfachen Beispiel muss keine separate Struktur erstellt werden, da wir die Bestelldaten (Tabelle EKKO) ausgeben.

Wenn man eine eigene Struktur erstellen möchte, kann man das einfach im ABAP Dictionary (Transaktion SE11) erledigen.

ABAP-Programm erstellen

Für die Verwendung eines Navigationsprofils im ALV Grid Control benötigt man die statische Klasse CL_NAVP_FACTORY bzw. die Klasse CL_NAVP_ALV_TABLE.

Das Beispielprogramm sieht folgendermaßen aus:

*&---------------------------------------------------------------------*
*& Report Z_NAVPROF_ALV
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_navprof_alv.

*----------------------------------------------------------------------
* Datendeklaration
*----------------------------------------------------------------------
DATA:
  lt_alv_ekko    TYPE STANDARD TABLE OF ekko,
  lo_custom_cont TYPE REF TO cl_gui_custom_container,
  ok_code        LIKE sy-ucomm.


*----------------------------------------------------------------------
* Selektion der notwendigen Daten
*----------------------------------------------------------------------
SELECT * FROM ekko INTO TABLE lt_alv_ekko.

IF lt_alv_ekko IS INITIAL.
  MESSAGE TEXT-001 TYPE 'I'.
ELSE. "Einträge vorhanden
  "Anzeige des ALV
  CALL SCREEN 100.
ENDIF.

INCLUDE z_navprof_alv_status_0100o01.

INCLUDE z_navprof_alv_outputo01.

INCLUDE z_navprof_alv_user_command_i01.
*----------------------------------------------------------------------*
***INCLUDE Z_NAVPROF_ALV_STATUS_0100O01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'STATUS_0100'.
  SET TITLEBAR 'Navigationsprofil im ALV Grid Control'.
ENDMODULE.
*----------------------------------------------------------------------*
***INCLUDE Z_NAVPROF_ALV_OUTPUTO01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  OUTPUT  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE output OUTPUT.

  DATA: lt_fcat     TYPE lvc_t_fcat,
        lo_alv      TYPE REF TO cl_gui_alv_grid,
        ls_profile  TYPE        navp_s_profile_key,
        lo_nav_prof TYPE REF TO cl_navp_alv_table,
        lo_output   TYPE REF TO data.

*----------------------------------------------------------------------
* Der definierte Custom Container 'CCONT' wird erzeugt.
*----------------------------------------------------------------------
  CREATE OBJECT lo_custom_cont
    EXPORTING
      container_name = 'CCONT'.

*----------------------------------------------------------------------
* Feldkatalog zum Bearbeiten vorbereiten
*----------------------------------------------------------------------
  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_structure_name = 'EKKO'
    CHANGING
      ct_fieldcat      = lt_fcat.

*----------------------------------------------------------------------
* ALV Grid Control mit Custom Control erstellen
*----------------------------------------------------------------------
  CREATE OBJECT lo_alv
    EXPORTING
      i_parent = lo_custom_cont.

*----------------------------------------------------------------------
* Navigationsprofil hinzufügen
*----------------------------------------------------------------------
  GET REFERENCE OF lt_alv_ekko INTO lo_output.
  ls_profile-report = sy-repid.

  CREATE OBJECT lo_nav_prof
    EXPORTING
      io_alv_table             = lo_alv
      id_table                 = lo_output
      is_profile_key           = ls_profile
      iv_save_mode             = 'A'.

* Dieser Aufruf kann anstelle der Instanzerzeugung oberhalb verwendet werden
* --> ANFANG
*  lo_nav_prof = cl_navp_factory=>factory(
*      io_alv         = lo_alv
*      is_profile_key = ls_profile
*      it_table       = lt_alv_ekko ).
* <-- ENDE

*----------------------------------------------------------------------
* Daten anzeigen
*----------------------------------------------------------------------
  CALL METHOD lo_alv->set_table_for_first_display
    EXPORTING
      i_structure_name = 'EKKO'
    CHANGING
      it_outtab        = lt_alv_ekko
      it_fieldcatalog  = lt_fcat
    EXCEPTIONS
      program_error    = 1
      OTHERS           = 2.

ENDMODULE.
*----------------------------------------------------------------------*
***INCLUDE Z_NAVPROF_ALV_USER_COMMAND_I01.
*----------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE ok_code.
      "Zurück Button
    WHEN 'BACK'.
      SET SCREEN 0.
      LEAVE SCREEN.
      "EXIT Button, Speicher aufräumen
    WHEN 'EXIT'.
      FREE lo_custom_cont.
      LEAVE PROGRAM.
  ENDCASE.

  CLEAR ok_code.
ENDMODULE.

Beispielprogramme Navigationsprofile verwenden in ALV Grid Control

In folgenden Beispielprogrammen kann man die Verwendung vom Navigationsprofil im ALV Grid Control einfach und schnell überprüfen:

  • NAVP_DEMO_TABLE
  • NAVP_DEMO_TABLE_COMPLEX
  • NAVP_DEMO_TREE
  • NAVP_DEMO_TREE_COMPLEX
  • NAVP_DEMO_TREE_FORM_ROUTINES
  • NAVP_DEMO_TREE_TOOLBAR_EVT_RCV

Über den Autor

Andreas Geiger

Schön, dass Du Dich für SAP ERP bzw. SAP S/4HANA interessierst.

Mein Name ist Andreas Geiger und ich bin der Gründer von ERP-UP.de. Mein Ziel ist es, so viel nützliches Wissen wie möglich über das SAP ERP-System zu vermitteln. Ich möchte Dir damit einen Mehrwert bieten. Es freut mich, wenn ich Dir damit helfen kann.

Mehr zu ERP UP

ERP UP unterstützen

Wenn Du mit ERP UP zufrieden bist, kannst Du mich gerne unterstützen. Dabei gibt es unzählige Möglichkeiten, wie Du mich einfach und schnell unterstützen kannst. Wie Du genau ERP UP unterstützen kannst, erfährst Du hier. Vielen Dank.

Schreibe einen Kommentar