Show TOC

HintergrundProblemfälle vermeiden Dieses Dokument in der Navigationsstruktur finden

 

Wenn ein InfoSet Coding-Teile enthält, die zu Problemen führen, wird bei jeder Generierung eine Warnung ausgegeben. Sie sollten dann überprüfen, ob eines der unten beschriebenen Beispiele zutrifft und das InfoSet entsprechend korrigiert werden muß.

Innerhalb von Coding-Teilen ist es wegen der freien Verwendbarkeit von ABAP-Sprachelementen möglich, auf Felder zuzugreifen, ohne diese Felder explizit aufzuführen (Feldsymbole, externer Perform, DO... VARYING, ADD... THEN... UNTIL, usw.).

Um eine fehlerfreie Generierung von Query-Reports zu gewährleisten, muß aus JEDEM (!) Coding-Stück (Zusatzfeld, GET / GET LATE / Satzverarbeitung) ermittelt werden können, auf welche Felder zugegriffen wird. Dazu ist es notwendig, daß jedes verwendete Feld in diesem Coding-Stück auch benannt wird. Wenn eines der Coding-Stücke ABAP-Anweisungen enthält, die implizit auf Felder zugreifen, die nicht in der Referenzliste stehen, so muß mit Hilfe der ABAP-Anweisung FIELDS innerhalb des Coding-Stückes sichergestellt werden, daß alle verwendeten Datenbank-, Tabellen- und Zusatzfelder auch explizit genannt werden.

Beispiel Beispiel

Beispiel 1:

Die Tabelle KNC1 enthalte die Felder UM01U, UM02U und UM03U mit den Monatsumsätzen der ersten drei Monate eines Jahres. Ein Zusatzfeld Q1, das den Umsatz des ersten Quartals enthalten soll, berechnet die Summe dieser drei Felder mit Hilfe eines externen Performs.

PERFORM QUARTAL1(pppppppp) USING Q1.

Der Zugriff auf die Felder KNC1-UM01U, KNC1-UM02U und KNC1-UM03U erfolgt über den gemeinsamen Speicherbereich für die Tabelle KNC1 im Query-Report und im gerufenen Programm pppppppp. Dem oben angegebenen Coding ist nicht zu entnehmen, daß die genannten Felder benötigt werden. Deshalb muß dieses Coding-Stück wie folgt geändert werden:

PERFORM QUARTAL1(pppppppp) USING Q1.

FIELDS: KNC1-UM01U, KNC1-UM02U, KNC1-UM03U.

Beachten Sie, daß für jedes Coding-Stück alle verwendeten Felder benannt sein müssen, da ein Coding-Stück nur bei Bedarf in den Query-Report übernommen wird, und somit für jedes Coding-Stück gesondert ermittelt werden muß, welche Felder benötigt werden.

Beachten Sie außerdem, daß in einem Coding nur die unmittelbar verwendeten Felder benannt werden müssen.

Ende des Beispiels.

Beispiel Beispiel

Beispiel 2:

Die Zusatzfelder F1 und F2 sind mit folgenden Codings definiert:

F1: F1 = TAB-FELD. "TAB-FELD ist ein Datenbankfeld

F2: F2 = F1 + 2.

Obwohl F2 indirekt auf TAB-FELD zugreift, ist es nicht notwendig, TAB-FELD im Coding von F2 als verwendetes Feld aufzuführen. Die Auflösung solcher indirekten Referenzen wird bei der Generierung des InfoSets automatisch vorgenommen. Die Codings für beide Zusatzfelder sind in der vorliegenden Form also korrekt.

Ende des Beispiels.

In Ausnahmefällen kann in einem Coding folgende Anweisung verwendet werden: FIELDS TAB, wobei TAB eine Datenbanktabelle oder eine Zusatztabelle ist.

Diese Anweisung bewirkt, daß alle Felder der Tabelle TAB im Query-Report bereitgestellt werden. Beachten Sie, daß in diesem Fall der optimierte Zugriff auf die Tabelle TAB ausgeschaltet wird und damit ein deutlicher Performance-Verlust bei der Abarbeitung von Queries zu erwarten ist!

Wenn Sie die Hinweise dieses Abschnitts bei der Pflege eines InfoSets beachten, kann die Referenzliste immer vollständig erzeugt werden. Die Beachtung dieser Hinweise kann vom System jedoch nicht überprüft werden, so daß eine unvollständige Generierung der Referenzliste nicht ausgeschlossen werden kann. Eine unvollständige Referenzliste bedeutet für Query-Reports, daß u.U. benötigte Felder nicht aus der Datenbank gelesen werden und immer ihren Initialwert besitzen.