Show TOC Anfang des Inhaltsbereichs

Funktionsdokumentation Fortschreibungsroutine und Startroutine  Dokument im Navigationsbaum lokalisieren

Verwendung

Mit Hilfe von Routinen können komplexe Fortschreibungsregeln zu einer Kennzahl oder einem Merkmal definiert werden.

Routinen sind ABAP-Programme, die aus einem vordefinierten globalen Datendeklarationsteil und einer ABAP-Formroutine bestehen. In der Formroutine stehen Ihnen alle Funktionen der ABAP-Programmierung zur Verfügung.

Folgende Routinenarten können in der Fortschreibung verwendet werden:

·         die Startroutine - diese Routine wird zu Beginn des Fortschreibungsprogramms für ein Datenpaket genau einmal durchlaufen

·         Routinen zur Fortschreibung von Kennzahlen mit und ohne Rückgabetabelle

·         Routinen zur Fortschreibung von Kennzahlen und ihrer Einheit

·         Routinen zur Fortschreibung von Merkmalen

Funktionsumfang

Routinen für Kennzahlen ohne Rückgabetabelle sowie für Merkmale

Die Formroutine hat folgende Parameter:

·        MONITOR: steht für benutzerdefiniertes Monitoring zur Verfügung (siehe dazu auch Fehlerbehandlung in der Fortschreibungsroutine)

·        MONITOR_RECNO: für das Monitoring wird damit die Satznummer mitgegeben

·        COMM_STRUCTURE: In der Variablen COMM_STRUCTURE wird der Routine der fortzuschreibende Satz der Kommunikationsstruktur zur Verfügung gestellt.

·        RECORD_NO: In der Variablen RECORD_NO wird die Nummer des aktuell zu bearbeitenden Satzes der Bewegungsdaten in Form der Kommunikationsstruktur zur Verfügung gestellt.

·        RECORD_ALL: In der Variablen RECORD_ALL wird die Anzahl der Sätze der Bewegungsdaten in Form der Kommunikationsstruktur zur Verfügung gestellt.

·        SOURCE_SYSTEM: In der Variablen SOURCE_SYSTEM wird der technische Name des Quellsystem zur Verfügung gestellt.

·        RESULT: Der Variablen RESULT müssen Sie das Ergebnis der errechneten Kennzahl bzw. des errechneten Merkmals zuweisen.

·        RETURNCODE: Mit der Variablen RETURNCODE können Sie das Schreiben in das Datenziel steuern. Nur wenn der RETURNCODE gleich 0 ist, wird der errechnete RESULT-Wert in das Datenziel geschrieben. RETURNCODE ungleich 0 bedeutet einen Fehler in der Berechnung. Bei Schlüsselfeldern wird dann die Berechnung abgebrochen, d.h. für diese Kennzahl wird kein Datensatz ermittelt und sie wird übersprungen. Datenfelder werden initialisiert.

·        abort: Wenn abort ungleich 0 ist, wird der gesamte Fortschreibeprozess abgebrochen. 

Beispiel

Im folgenden Beispiel wird der Ladevorgang abgebrochen, wenn der Wert für das InfoObject AMOUNT kleiner als 0 ist. In diesem Fall wird zusätzlich die Nachricht ‘100’ vom Typ ERROR (E) mit der Nachrichtenklasse ‘ZJH’ angezeigt.

Hinweis

Nachrichten vom Typ ERROR werden im Monitor auch bei der I-DOC Statusangabe angezeigt.

1.

* if abort is not equal zero, the update process will be canceled

2.

if comm_structure-amount < 0.

3.

  monitor-msgid = ‘ZJH’.

4.

  monitor-msgty = ‘E’.

5.

  monitor-msgno = ‘100’.

6.

  monitor-msgv1 = comm_structure-amount.

7.

  append monitor.

8.

  abort = 1.

9.

  exit.

10.

else.

11.

  abort = 0.

12.

endif.

13.

* result value of the routine

14.

result = comm_structure-amount.

 

Routinen für Kennzahlen mit Einheitenberechnung

Wenn Sie das Kennzeichen Routine mit Einheitenberechnung setzen, gibt es den zusätzlichen Rückgabeparameter UNIT. Darin können Sie die gewünschte Einheit der Kennzahl ablegen, beispielsweise DEM oder ST. Siehe dazu auch Währungsumrechnung in der Fortschreibung.

Routinen für Kennzahlen mit Rückgabetabelle

Bei Routinen mit Rückgabetabelle wird der Parameter RESULT durch die Rückgabetabelle RESULT_TABLE ersetzt. Die Rückgabetabelle hat die gleiche Struktur wie das Datenziel, es wird aber nur die eine Kennzahl bzw. Datenfeld gefüllt, zu dem die Routine angelegt wurde, plus seine Merkmale bzw. Schlüsselfelder. Damit können aggregierte Werte verteilt werden.

Beispiel

Die InfoSource liefert die Umsatzzahlen der einzelnen Vertriebsorganisationen. Es soll jedoch der Umsatz pro Mitarbeiter angezeigt werden. Dazu sind folgende Verarbeitungsschritte nötig:

-         Lesen der IDs der Mitarbeiter, die zu der Vertriebsorganisation gehören, aus der von der InfoSource bereitgestellten Stammdatentabelle.

-         Teilen des Umsatzes durch die Anzahl der Mitarbeiter, die aus der Stammdatentabelle gelesen wurden.

-         Erzeugen eines Eintrages in Ihrer Rückgabetabelle für jeden Mitarbeiter.

Diese Grafik wird im zugehörigen Text erklärt

Zusätzlich ist der Parameter ICUBE_VALUES vorhanden. Hier sind die berechneten Merkmalswerte abgelegt. Um nun die Rückgabetabelle RESULT_TABLE zu füllen, ist es am einfachsten, die Struktur ICUBE_VALUES in die Tabelle RESULT_TABLE so oft zu kopieren, wie es nötig ist, und nur die entsprechende Kennzahl zu füllen und die Merkmalswerte anzupassen.

Beachten Sie bitte den folgenden Spezialfall: Wenn Sie eine Kennzahlroutine mit Rückgabetabelle und zusätzlich Währungsumrechnung verwenden, werden die Währungen NICHT in der Struktur ICUBE_VALUES abgelegt, da sie erst nach der Ausführung der Routine berechnet werden.

Startroutine

Die Startroutine wird pro Datenpaket zu Beginn der Fortschreibung ausgeführt. Sie hat als Parameter nur MONITOR, MONITOR_RECNO, DATA_PACKAGE, RECORD_ALL, SOURCE_SYSTEM und ABORT. Dabei ist DATA_PACKAGE das gesamte Datenpaket. Die Startroutine hat keinen Rückgabewert. Sie ist dazu da, Vorab-Berechnungen durchzuführen und in einer globalen Datenstruktur oder Tabelle abzulegen. Auf diese Struktur oder Tabelle kann dann in den anderen Routinen zugegriffen werden.

Beispiel

Sie wollen in der Fortschreibung den einzelnen Verkäufer einer Vertriebsstelle bestimmte Anteile am Umsatz gutschreiben. Z.B. Verkäufer A 20% des Umsatzes von Vertriebsstelle A, Verkäufer B 30%, Verkäufer C 50%. Die Verkäufer und ihre Vertriebsstellen sind in einer Stammdatentabelle aufgelistet. Die hochgeladenen Daten enthalten als Merkmal die Vertriebsstelle und die Verkaufszahlen. Um die Verkäufer den Vertriebsstellen zuordnen zu können, müssen Sie die Daten aus der Stammdatentabelle nachlesen. Falls Die Stammdatentabelle nicht zu umfangreich ist, können Sie in der Startroutine eine interne Tabelle generieren, die die Stammdaten enthält und auf die die nachfolgenden Kennzahlen- und Merkmalsroutinen zugreifen können.

Sie haben außerdem die Möglichkeit, Daten zu verändern (z.B. modifizieren oder löschen), indem Sie mit Hilfe von ABAP-Code die Tabelle DATA_PACKAGE ändern.

Siehe auch:

Fortschreibungsroutine anlegen

 

Ende des Inhaltsbereichs