ABAP 7.40, WÄHLEN Sie .. BIS ZU n ZEILEN syntax Verwirrung
Update: die Frage, Die zurückgezogen werden sollte, ist die Grammatik korrekt ist. Offenbar bestimmt die SAP ABAP über eine Grammatik, die dann modifiziert durch zusätzliche Regeln in einfachem text. Ich habe diesen zweiten Teil.
Ich bin auf der Suche in der ABAP-schlüsselwortdokumentation 7.40, AUSWÄHLEN -> WÄHLEN Sie Zusätze. Für die Zugabe von BIS ZU n ZEILEN, es gibt das Beispiel
DATA: wa_scustom TYPE scustom.
SELECT *
FROM scustom
WHERE custtype = 'B'
ORDER BY discount DESCENDING
INTO @wa_scustom
UP TO 3 ROWS.
ENDSELECT.
Ich verifiziert, dass der code in ein SAP-7.40 system und habe den Fehler
Zeile 7: "IN" ist nicht gültig hier. '.' erwartet wird
Auf der anderen Seite, der folgende code wird akzeptiert, obwohl er nicht gedeckt ist durch die Grammatik WÄHLEN Sie in dem Dokument: BIS ZU n ZEILEN nach der VON.
SELECT COUNT(*) UP TO 1 ROWS
FROM MARC
WHERE matnr eq 100.
Als wir sind, ein tool zu schreiben, dass automatisch generiert ABAP code, es wäre nett zu wissen, was legal ist und was nicht. Gibt es eine "endgültige" Dokument? Im Allgemeinen lohnt es sich, die versuchen, einen Ansprechpartner bei SAP für Korrekturen? (Sie sehen, ich bin etwas Fremd in der SAP-Welt), Wenn ja, wer könnte das sein?
- Ah, ich glaube, ich fand einige info in Bezug auf den zweiten code Stück: nach der ABAP-schlüsselwortdokumentation 7.31, wird der angegebene code ist legal. So, vielleicht SAP verändert die Grammatik, sondern lassen den parser schweigend hinnehmen, die alte Grammatik.
- Es sieht aus wie die abap-compiler will die "bis" - Anweisung, bevor die where/group by/order by-Teil. Aber ich habe nicht gefunden, alle Unterlagen über diese Regeln.
- Ja, es ist die übliche SAP-Politik. In der neuesten Dokumentation erzwingt Sie verwenden nur die neuesten syntax, jedoch legacy-syntax ist stets unterstützt.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich kann nicht überprüfen Sie es jetzt, aber ich vermute, dass Sie "INTO ..." und "BIS ZU ..." Teile, die nach "WO ..." und "ORDER BY ..." - Teile.
Dokumentation Staaten , dass die syntax von SELECT ist:
mit der Bemerkung "Die FROM-Klausel ... können auch platziert werden, bevor die IN-Klausel." Es gibt keine Bemerkungen, die Sie einfügen können WHERE/GROUP BY/HAVING/ORDER BY WÄHLEN Sie zwischen/IN die/AUS.
So, geben Sie einen Versuch:
In der Tat, gibt es eine syntax auferlegt von SAP erlaubt nur "BIS ZU n ZEILEN" und anderen Argumenten zu kommen, BEVOR die WHERE-Klausel. Allerdings gibt es mehr Flexibilität, um es in neueren ABAP-server-Versionen.
Wenn verallgemeinern, nutzen Sie bitte die ältere syntax. Es wird immer noch funktionieren auf neueren Versionen, wie der SAP hat eine starke Abwärtskompatibilität Politik.
"Sei konservativ in dem, was Sie senden, werden liberal, was Sie akzeptieren".
Sowas:
Hoffe, es hilft.