Sind alle benötigten Felder bekannt? (Bitte Hilfe benutzen)
Message type: E = Error
Message class: AQ - Message texts for SAP Query
Message number: 154
Message text: Sind alle benötigten Felder bekannt? (Bitte Hilfe benutzen)
Was verursacht dieses Problem?
<ZH>Dies ist nur eine Warnung. Eine generierte Fassung des InfoSets
wird auf jeden Fall zur Verfügung gestellt.</>
Bei der Generierung von Query-Reports für Queries über diesem InfoSet
wird der Zugriff auf Datenbank- und Zusatztabellen so optimiert, daß
nur die wirklich benötigten Felder bereitgestellt werden (GET bzw.
SELECT mit Feldliste). Dies stellt einen wesentlichen
Performance-Gewinn gegenüber der Technik dar, bei der alle Felder einer
Tabellenzeile bereitgestellt werden (GET ohne Feldliste bzw. SELECT *).
Es ist möglich, daß das vorliegende InfoSet nicht alle Informationen
enthält, um die benötigten Felder zu ermitteln. Dies kann in
Query-Reports dazu führen, daß benötigte Felder bei der Abarbeitung des
Reports immer nur ihren Initialwert enthalten.
<ZH>Bitte überprüfen Sie deshalb, ob einer der unten beschriebenen
Fälle zutrifft und korrigieren Sie Ihr InfoSet entsprechend.</>
Um einen optimierten Zugriff auf Datenbank- und Zusatztabellen zu
ermöglichen, wird bei der Generierung eines InfoSets ermittelt, welche
Felder zur Generierung von Query-Reports benötigt werden. Das können
folgende Felder sein:
Felder, die in Sachgruppen aufgenommen wurden
Felder, die zur Formulierung der WHERE-Bedingung bei angeschlossenen
Tabellen verwendet werden
Felder, die im Coding von Zusatzfeldern angesprochen werden
Felder, die im Coding zu den Zeitpunkten GET / GET LATE bzw. zum
Zeitpunkt der Satzverarbeitung angesprochen werden
Das vorliegende InfoSet enthält enthält ABAP-Code zur Definition von
Zusatzfeldern bzw. zu den Zeitpunkten GET / GET LATE bzw. zum Zeitpunkt
der Satzverarbeitung. Innerhalb solcher Codings 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ß
jedoch 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.
Systemantwort
Das System gibt eine Fehlermeldung aus und erlaubt Ihnen nicht, mit dieser Transaktion fortzufahren, bis der Fehler behoben ist.
Wie behebe ich diesen Fehler?
Wenn eines der Coding-Stücke ABAP-Anweisungen enthält, die implizit auf
Felder zugreifen, so stellen Sie bitte mit Hilfe der ABAP-Anweisung
FIELDS innerhalb des Coding-Stückes sicher, daß alle verwendeten
Datenbank-, Tabellen- und Zusatzfelder auch explizit genannt werden.
Beispiel:
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.
Bitte beachten Sie, daß dies für jedes Coding-Stück gesondert gemacht
werden muss, 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.
Bitte beachten Sie weiterhin, daß in einem Coding nur die unmittelbar
verwendeten Felder benannt werden müssen.
Beispiel
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 korrekt.
In Ausnahmefällen kann in einem Coding die Anweisung
FIELDS tab.
verwendet werden, wobei tab eine Datenbanktabelle oder eine
Zusatztabelle ist. Dies bewirkt, daß alle Felder der Tabelle tab im
Query-Report bereitgestellt werden. Bitte beachten Sie, daß Sie in
diesem Fall den optimierten Zugriff auf die Tabelle tab ausschalten und
damit eine deutlichen Performance-Verlust bei der Abarbeitung von
Queries zu erwarten haben.
Fehlermeldungsextrakt aus SAP-System. Copyright SAP SE