im Hintergrund ausgeführter Report / Ausgabe weiterverarbeiten

Wir benötigen eine Auswertung, die periodisch im Hintergrund ausgeführt werden soll und die Daten in eine Kundeneigene Tabelle schreibt. Normalerweise würden wir die Auswertelogik in ein programm packen. Da der Programmierer aber eine Menge Arbeit sparen kann, soll hier die Möglichkeit aufgezeigt werden wie man mit einen Standard-Report die ausgegebenen daten nutzen kann.

Dazu gibt es die Anweisung SUBMIT mit Parameter. Der Report wird aufgerufen mit einer vorher angelegten Variante und die Ausgabe wird nach beenden des Reports im Speicher gehalten. Diesen Speicher kann man mit einem FuB wieder auslesen. Der gelesene Inhalt muß noch in eine lesbare Form umgewandelt werden um diesen dann z.B. in eine interne Tabelle zu schreiben oder in das Dateisystem zu entlassen.

* Report Z_IST_PLAN_VARIANCE
* (Transaktionscode S_ALR_87013620)
* mit Variante starten
SUBMIT Z_IST_PLAN_VARIANCE
USING SELECTIONSET VARIANTE
* WITH %%DYN006-LOW EQ I_ZUONR
EXPORTING LIST TO MEMORY
AND RETURN.

IF SYSUBRC NE 0.
MESSAGE E260(F5) RAISING NOT_FOUND.
ENDIF.

* Nach Rückkehr aus dem Report soll das Ergebniss aus dem Speicher
* gelesen werden.
CALL FUNCTION ‚LIST_FROM_MEMORY‘
TABLES
LISTOBJECT = LISTE
EXCEPTIONS
NOT_FOUND.
IF SYSUBRC NE 0.
MESSAGE E584(F5) RAISING NOT_FOUND.
ENDIF.

* So, nun noch in lesbare Form umwandeln.
CALL FUNCTION ‚LIST_TO_ASCI‘
TABLES
LISTOBJECT = LISTE
LISTASCI = LISTETXT
EXCEPTIONS
EMPTY_LIST
LIST_INDEX_INVALID.

* unrelevante Kopfzeilen eliminieren
LOOP AT LISTETXT .
MOVE LISTETXT+1(30) TO CONTAINERTEXT1.
MOVE LISTETXT+32(15) TO CONTAINERTEXT2.
MOVE LISTETXT+48(15) TO CONTAINERTEXT3.
MOVE LISTETXT+64(15) TO CONTAINERTEXT4.
MOVE LISTETXT+80(10) TO CONTAINERTEXT5.
APPEND CONTAINER.
ENDLOOP.


Schreibe einen Kommentar