Zeitpunkte

Dies ist Teil 6 von 9 der Serie Tabellenpflegedialoge & Viewcluster

Zeitpunkte sind ein mächtiges Werkzeug des Tabellepflegedialoges. Hier können Anpassungen vorgenommen werden, ohne den SAP-Quellcode modifzieren zu müssen. Wir werden nicht auf alle Zeitpunkte eingehen, zeigen Ihnen aber anhand eines Beispiels, wie Sie die Zeitpunkte nutzen können.

Um mit Zeitpunkten zu arbeiten, benötigen Sie ABAP-Erfahrung.

Was sind Zeitpunkte?

Zeitpunkte sind Userexits, in die während der Verarbeitung des Pflegeviews verzweigt wird. Hierbei gibt es Zeitpunkte, die zusätzlich durchlaufen werden als auch Zeitpunkte, die Standard-Routinen ersetzen.

Zu den gewünschten Zeitpunkten wird eine Unterroutine in der Funktionsgruppe des Pflegeviews angelegt.

Welche Zeitpunkte durchlaufen werden, stellen Sie zu jedem View ein. die Zeitpunkte sind in der Online-Hilfe ausführlich erklärt.

Beispiel: Versorgen von verborgenen Feldern

Eine häufig gewünschte Funktion ist es, Die Änderung von Tabelleneinträgen zu protokollieren.

Eine einfache Methode ist, die Felder “Änderungsdatum”, “Änderungszeit” und “Änderer” in die zu pflegende Tabelle aufzunehmen.

Legen Sie dann einen View für diese Tabelle an, auch wenn Sie die Tabelle nicht mit einer anderen Tabelle verknüpfen möchten.

Sie können dann in dem View die genannten Felder auf “Read-Only” oder sogar “hidden” setzen.

Um die Felder zu füllen, bedienen wir uns des Zeitpunktes “Versorgen von verborgenen Feldern”.

Auf der Übersicht des Tabellenpflegegenerators zu dem View springen Sie bitte im Menü “Umfeld – Modifikationen – Zeitpunkte” in die Pflege der Zeitpunkte.

Die Meldung “Bitte keine Änderungen (Daten gehören SAP)” können Sie getrost ignorieren.

Durch [_Neue Einträge_] können Sie den Zeitpunkt “21” hinzufügen. Als Routinennamen geben Sie z.B. “ZZ_AENDERUNGSINFO” ein. Nach drücken von “Enter” können Sie den Button “Editor” anklicken um das Coding zu erfassen. Ist es die erste Unterroutine, so müssen Sie ein Include auswählen, in welches das Coding kommen soll:

Sie können dann das Coding erfassen. Es ist denkbar einfach:

Code

*----------------------------------------------------------------------*
***INCLUDE LZTT1F01 .
*----------------------------------------------------------------------*
FORM zz_aenderungsinfo.

ztt1v-aenam = sy-uname.
ztt1v-aedat = sy-datum.
ztt1v-aetim = sy-uzeit.

ENDFORM.

Alle Coding-Änderungen müssen aktiviert werden!
Alle Tabelleneinträge der Zeitpunkte müssen gesichert werden!!

Der Zeitpunkt “21” wird lediglich bei der Anlage und beim Ändern eines Eintrags durchlaufen! Beim Kopieren eines Eintrags und bei der Anzeige ist dieser Zeitpunkt nicht aktiv!

Beispiel: Eigene Einlese-Routine

Eine eigene Einlese-Routine eignet sich besonders dann, wenn der Benutzer nur einen Teil der Daten sehen darf.

Wir können die Standard-Einlese-Routine des Pflegedialoges verwenden und dann die Einträge löschen, die der Anwender nicht sehen darf.

Legen Sie, wie zuvor auch, einen Zeitpunkt an. Diesmal nehmen wir
“AA – Anstelle der Standardroutine für das Einlesen der Daten”.

Das Coding könnte so aussehen, um dem Anwender nur den Eintrag “DE” anzuzeigen.

FORM zz_daten_einlesen.

*** Einlesen der Daten 
PERFORM get_data_ztt1v.

*** Alle Einträge ausser "DE" löschen
LOOP AT total INTO ztt1v.
IF ztt1v-land1 <> 'DE'.
DELETE total.
ENDIF.
ENDLOOP.

ENDFORM.

Hier könnten natürlich weitere Customizingtabellen abgefragt werden, welcher Anwender für welche Länder zuständig ist.

Hinweis:
Um diese Form der Berechtigungsprüfung zu vervollständigen, sollte auch der Zeitpunkt “05 beim Hinzufügen eines neuen Eintrags” aktiviert werden, damit der Anwender auch nur Daten eingeben darf, für die er zuständig ist.

Update-Flags

Die Tabelle TOTAL besteht aus der Struktur des Views bzw. der Tabelle und drei zusätzlichen Feldern:

  • VIM_ACTION
  • VIM_MARK
  • VIM_TXTACT

Wichtig ist in der Regel das Feld “VIM_ACTION”. Hier wird vermerkt, ob der Eintrag neu hinzugefügt (N), geändert (U) oder gelöscht (D) wurde. Alle möglichen Werte sind hier aufgelistet.

Um auf die Updateflags zugreifen zu können, muss ein eigener Typ definiert werden:

TYPES: BEGIN OF ts_data.
         INCLUDE TYPE zmytab.
         INCLUDE TYPE vimtbflags.
TYPES: END OF ts_data.
DATA ls_data TYPE ts_data.

Der Loop über TOTAL erfolgt dann in den soeben definierten Arbeitsbereich.

Andere Zeitpunkte

Schauen Sie sich die anderen Zeitpunkte an und lesen Sie sich die Hilfe zu den Zeitpunkten durch. Mit den Suchwörtern “zeitpunkte pflegeview” finden Sie unter help.sap.com leicht die Hilfe für Ihr Release.

Sie werden bestimmt Anwendungsgebiete für Ihre Projekte finden…!

Enno Wulff
Letzte Artikel von Enno Wulff (Alle anzeigen)
Series Navigation<< Pflege-Dynpros anpassenViewcluster Vorbereitungen >>