Neue OpenSQL Syntax?

Getting started ... Alles für einen gelungenen Start.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Neue OpenSQL Syntax?

Beitrag von Murdock (Specialist / 115 / 55 / 8 ) »
Hi,
folgender Select wurde mittels eines Reportgenerators erstellt. Bisher gab es mit dem Tool auch keine Probleme.
Bei diesem Select kommen nun beim Aktivieren die Meldungen:
Die Elemente der "SELECT LIST"-Liste müssen mit Kommata getrennt werden.

und

Wenn neue OpenSQL Syntax verwendet wird, muss diese auch durchgängig verwendet werden. Dazu gehört das Escaping der Hostvariablen mittels @.

Die Frage ist nun, warum dieser Select als neue OpenSQL Syntax erkannt wird?
Hat da jemand eine Idee?

Code: Alles auswählen.

  SELECT
      ekbe~belnr AS belnr
      ekko~bsart AS bsart
      ekko~ekorg AS ekorg
      ekpo~matnr AS matnr
      ekpo~txz01 AS txz01
      mara~mtart AS mtart
      eine~aplfz AS aplfz
      ekpo~ebeln AS ebeln
      ekpo~ebelp AS ebelp
      ekko~ekgrp AS ekgrp
      ekko~lifnr AS lifnr
      lfa1~name1 AS name1
      ekbe~menge AS menge
      ekbe~bwart AS bwart
      qals~lmengeist AS lmengeist
      qals~lmenge01 AS lmenge01
      qave~vcode AS vcode
      ekbe~menge AS qty_return
      ekko~bedat AS bedat
      eket~eindt AS eindt
      eket~eindt AS due_date
      eban~frgdt AS frgdt
      ekbe~budat AS budat
      qals~paendzeit AS paendzeit
      ekpo~netpr AS netpr
      ekpo~werks AS werks
  INTO CORRESPONDING FIELDS OF TABLE gt_result
  FROM ekko INNER JOIN ekpo ON ekko~ebeln = ekpo~ebeln
            LEFT OUTER JOIN ekbe ON ekbe~belnr = ekko~ebeln 
            INNER JOIN mara ON mara~matnr = ekpo~matnr 
            LEFT OUTER JOIN lfa1 ON lfa1~lifnr = ekko~lifnr 
            LEFT OUTER JOIN eket ON eket~ebeln = ekpo~ebeln AND eket~ebelp = ekpo~ebelp 
            LEFT OUTER JOIN eine ON eine~infnr = ekpo~infnr AND eine~werks = ekpo~werks 
            LEFT OUTER JOIN eban ON eban~banfn = ekpo~banfn AND eban~bnfpo = ekpo~bnfpo 
            LEFT OUTER JOIN qals ON qals~ebeln = ekpo~ebeln AND qals~ebelp = ekpo~ebelp 
            LEFT OUTER JOIN qave ON qave~prueflos = qals~prueflos
  WHERE ekko~ekorg = p_ekorg AND ekko~bedat = p_bedat AND ekbe~budat IN so_budat.

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Neue OpenSQL Syntax?

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Die Anweisung "LEFT OUTER JOIN ekbe" in Zusammenhang mit "ekbe~budat IN so_budat" bewirkt, dass die neue Syntax zu verwenden ist.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Neue OpenSQL Syntax?

Beitrag von Murdock (Specialist / 115 / 55 / 8 ) »
a-dead-trousers hat geschrieben:
04.10.2021 10:38
Die Anweisung "LEFT OUTER JOIN ekbe" in Zusammenhang mit "ekbe~budat IN so_budat" bewirkt, dass die neue Syntax zu verwenden ist.
Danke, aber wenn ich die "ekbe" Zeilen rausnehme, kommt immer noch der Fehler, daran kann es also nicht liegen :-(

Code: Alles auswählen.

  SELECT
*      ekbe~belnr AS belnr
      ekko~bsart AS bsart
      ekko~ekorg AS ekorg
      ekpo~matnr AS matnr
      ekpo~txz01 AS txz01
      mara~mtart AS mtart
      eine~aplfz AS aplfz
      ekpo~ebeln AS ebeln
      ekpo~ebelp AS ebelp
      ekko~ekgrp AS ekgrp
      ekko~lifnr AS lifnr
      lfa1~name1 AS name1
*      ekbe~menge AS menge
*      ekbe~bwart AS bwart
      qals~lmengeist AS lmengeist
      qals~lmenge01 AS lmenge01
      qave~vcode AS vcode
*      ekbe~menge AS qty_return
      ekko~bedat AS bedat
      eket~eindt AS eindt
      eket~eindt AS due_date
      eban~frgdt AS frgdt
*      ekbe~budat AS budat
      qals~paendzeit AS paendzeit
      ekpo~netpr AS netpr
      ekpo~werks AS werks
  INTO CORRESPONDING FIELDS OF TABLE gt_result
  FROM ekko INNER JOIN ekpo ON ekko~ebeln = ekpo~ebeln
*            LEFT OUTER JOIN ekbe ON ekbe~belnr = ekko~ebeln 
            INNER JOIN mara ON mara~matnr = ekpo~matnr 
            LEFT OUTER JOIN lfa1 ON lfa1~lifnr = ekko~lifnr 
            LEFT OUTER JOIN eket ON eket~ebeln = ekpo~ebeln AND eket~ebelp = ekpo~ebelp 
            LEFT OUTER JOIN eine ON eine~infnr = ekpo~infnr AND eine~werks = ekpo~werks 
            LEFT OUTER JOIN eban ON eban~banfn = ekpo~banfn AND eban~bnfpo = ekpo~bnfpo 
            LEFT OUTER JOIN qals ON qals~ebeln = ekpo~ebeln AND qals~ebelp = ekpo~ebelp 
            LEFT OUTER JOIN qave ON qave~prueflos = qals~prueflos
  WHERE ekko~ekorg = p_ekorg AND ekko~bedat = p_bedat
       " AND ekbe~budat IN so_budat
       .

Re: Neue OpenSQL Syntax?

Beitrag von a-dead-trousers (Top Expert / 4285 / 214 / 1141 ) »
Pfuuhhh...
Jetzt steig ich leider auch aus. Die allgemeine Syntax besagt nur, dass man Felder aus einer OUTER JOIN Bedingung nicht in der WHERE-Klausel verwenden darf. Das wurde eben in der "neuen" Syntax erst eingeführt.

https://help.sap.com/doc/abapdocu_751_i ... _modes.htm
Das wäre die Infos zu den releaseabhängigen Modi der Open SQL Syntaxprüfung. Diese sind kummulierend, d.h. für 7.50 gelten auch die Punkte aus 7.40.

EDIT:
"Angabe von Feldern der rechten Seite beim LEFT OUTER JOIN oder von Feldern der linken Seite beim RIGHT OUTER JOIN in der WHERE-Bedingung." steht im Eintrag zu 7.40, SP05

EDIT 2:
Möglich, dass die Anweisung "LEFT OUTER JOIN qave ON qave~prueflos = qals~prueflos" schuld hat, weil sie auf einen anderen LEFT OUTER JOIN aufbaut. Wobei mir bislang diese Einschränkung noch nie aufgefallen wäre bzw. noch nie gesehen hätte.

Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
Murdock

Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Neue OpenSQL Syntax?

Beitrag von Murdock (Specialist / 115 / 55 / 8 ) »
a-dead-trousers hat geschrieben:
04.10.2021 11:06
Pfuuhhh...

EDIT 2:
Möglich, dass die Anweisung "LEFT OUTER JOIN qave ON qave~prueflos = qals~prueflos" schuld hat, weil sie auf einen anderen LEFT OUTER JOIN aufbaut. Wobei mir bislang diese Einschränkung noch nie aufgefallen wäre bzw. noch nie gesehen hätte.
Das ist es, wollte ich auch gerade schreiben. ich habe mal schrittweise ein paar Sachen auskommentiert und wenn ich nur

Code: Alles auswählen.

            LEFT OUTER JOIN qals ON qals~ebeln = ekpo~ebeln AND qals~ebelp = ekpo~ebelp 
          
drin lasse, geht es.
Mit

Code: Alles auswählen.

  LEFT OUTER JOIN qave ON qave~prueflos = qals~prueflos
kommt der Fehler. Führen wir das mal auf eine "interne where Bedingung" bei dem Join zurück, dann passt das wieder mit den von Dir geposteten Einschränkungen. 😉

Danke.

Seite 1 von 1

Vergleichbare Themen

1
Antw.
1448
Views
SUM( preis * menge ) in OpenSQL?
von sap-known » 18.06.2007 13:33 • Verfasst in ABAP® für Anfänger
3
Antw.
2533
Views
syntax-check command
von technocrat » 25.10.2004 07:14 • Verfasst in Development Related
8
Antw.
3387
Views
Syntax Fehler bei Ausführung
von Littlered » 25.05.2005 14:17 • Verfasst in ABAP® Core
3
Antw.
1864
Views
Syntax farbig darstellen
von Webdanny » 14.11.2005 09:27 • Verfasst in ABAP® für Anfänger
9
Antw.
3859
Views
ABAP Syntax-Check per Fuba?
von tmaurer » 26.04.2006 12:01 • Verfasst in ABAP® Core

Über diesen Beitrag



Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.