Navigation:  Datenzugriff auf SAP > Datenextrakt  >

Where Clause

Print this Topic Previous pageReturn to chapter overviewNext page

+++   So können Sie Datras EPTL mit Datras Dynamic ABAP auf Ihrem SAP-System kostenlos testen (Anleitung, Download)   +++   Datras hat die Preise gesenkt   +++

 

s.a. "Wichtige Änderungen ab EPTL 4.0"

 

 

Standard

Extended

 Dynamic

WHERE Clause

 

 

Restriktionen:

Bei Vergleichen muss der linke Operand immer eine Spalte sein.
nicht:         WHERE 'LH' = CARRID
sondern:    WHERE CARRID = 'LH'
In der WHERE-Clause dürfen keine Klammern für Reihenfolge der Operatoren gesetzt werden, sonst schmeißt der SAP-Interpreter das Handtuch!
 
Also, Punkt vor Strich und alle Klammern ausmultiplizieren wie in der Grundschule gelernt.

Beispiel:

nicht:         WHERE CARRID = 'LH' AND ( CITYFROM = 'FRANKFURT' OR  CITYFROM = 'NEW YORK')
sondern:     WHERE CARRID = 'LH' AND  CITYFROM = 'FRANKFURT' OR  CARRID = 'LH' AND CITYFROM = 'NEW YORK'   (ohne Klammern!!!)
 
Wichtig: Diese Aussage ist definitiv falsch (thanks to Thomas Roth, CAS).

Korrektur: VOR und NACH einer Klammer sollte bei SAP immer ein Leerzeichen eingefügt werden, sonst kommt es zu seltsamen Fehlermeldungen des SAP-Interpreters.

Datras-EPTL fügt automatisch Leerzeichen bei Klammern in der Where-Clause ein.
 

Nested Selects, d.h Subqueries erfordern Datras-Dynamic-ABAP.

 

Mit dem Test auf NULLs muss man in SAP vorsichtig umgehen:

eigentlich gibt es keine NULLS in SAP, dafür gibt es aber ein Attribut "NOTNULL" in der Systemtabelle DD03L, welche die Attribute der Felder von Tabellen und Views beschreibt.
Zitat aus ABAP Objects, SAP-Press, S. 572, 5. Fußnote: "....Über ändernde Open-SQL-Anweisungen wie INSERT, UPDATE oder MODIFY werden keine Null-Werte in Datenbanken erzeugt, außer wenn statt einer Datenbank ein View angesprochen wird, der nicht alle Spalten der Datenbank enthält...."

Hier verwechselt zwar der Autor offensichtlich eine Datenbank mit einer Tabelle, inhaltlich ist aber die Bedeutung wesentlich gravierender: ein Feld kann einen NULL-Wert haben oder halt nicht, je nachdem ob der Wert über die Manipulation einer Tabelle oder eines Views stattfand.

 

Hinweis:

In der SAP-Hilfe werden zwar Beispiele für die Klammerung von Operatoren in der WHERE-Clause gegeben, die Autoren müssen da aber etwas verwechselt haben, denn das geht ja gar nicht in SAP.

Korrektur: In den Beispielen der SAP-Hilfe sind keine Leerzeichen VOR und NACH den Klammern enthalten, und es wird auch nicht erwähnt, dass diese notwendig sind.

Das Gleiche gilt für das Buch ABAP Objects, SAP-Press; das ist das Buch mit der Raupe auf dem Buchdeckel die zum Schmetterling wird. In späteren Auflagen ist dann nur noch der Schmetterling da, die Metamorphose von SAP ist also zumindest auf dem Buchdeckel vollendet.  

 
Kleiner Tipp an die Autoren: Falls Leerzeichen notwendig sind, so doch auch in den gedruckten Beispielen einfügen und darauf hinweisen (macht mehr Freunde und weniger Feinde :)