Da hat die SAP schon ganz andere Edge Cases umgesetzt. Der ganze FOR-Befehl gehört meines Erachtens dazu, aber auch viele Spezialfälle anderer Befehle. LINE_EXISTS ist hingegen ein sehr nützlicher Ausdruck, den ein 7.40-Programmierer viel verwendet.lausek hat geschrieben:Also ich kann diesen Rant ganz ehrlich nicht nachvollziehen. Wie oft hast du denn den Fall, dass du verschachtelt auf eine Zeile prüfen willst? Das sieht für mich stark nach einem Edgecase aus, der sich aus SAP-Sicht einfach nicht umzusetzen lohnt.
Das hast Du gesagt!Ralf hat geschrieben:Schlag mich tot
Weil LINE_EXISTS die herkömmlichen Regeln ja genau an dieser Stelle zu durchbrechen pflegt. Normalerweise werden logische Ausdrücke ja von innen nach außen, also beginnend mit der innersten Klammer, ausgewertet. Damit müsste einRalf hat geschrieben:aber für mich wäre das ein erwartetes Verhalten. Warum soll die Ausnahme denn nicht geworfen werden?
Erstmal danke; den OPTIONAL kannte ich noch nicht. Deine Syntax funktioniert. Hab mir die Doku dazu durchgelesen; der kann sicherlich nochmal nützlich sein.tm987456 hat geschrieben:CHECK LINE_EXISTS( BUFFER_DLL_ROLE_ASSIGNMENTS[ TABLE_LINE = VALUE #( BUFFER_UNAME[ PERNR = PERNR ]-USRID OPTIONAL ) ] ).
Funktioniert VALUE mit OPTIONAL an der Stelle nicht?
Ich schon, weil der eine Teil des LINE_EXISTS ist und der andere nicht. Das finde ich sowas von transparent, dass ich dafür kaum Worte finde.DeathAndPain hat geschrieben:Genau davon rede ich doch. Tabellenausdrücke sind beides, nur dass es in meinem Fall noch einen inneren gibt. Beim äußeren fängt LINE_EXISTS den Dump ab, beim inneren nicht. Das finde ich nicht sinnvoll.
Genau das ist der Punkt, an dem wir deutlich unterschiedlicher Meinung sind. Für mich ist entweder keiner von beiden Teil des LINE_EXISTS (reguläre Ausdrucksauswertung von innen nach außen), oder sie sind es beide (LINE_EXISTS übersteuert innerhalb seiner Klammern die reguläre Ausdrucksauswertung). Was die SAP hier gemacht hat, ist nicht Fisch und nicht Fleisch. Fisch höchstens insofern: https://gifrific.com/wp-content/uploads ... n-Head.gifweil der eine Teil des LINE_EXISTS ist und der andere nicht
Ich geb DeathAndPain insofern recht, dass man den Ausdruck innerhalb des LINE_EXISTS auch als ganzes werten könnte, ähnlich einem EVAL in JavaScript.ralf.wenzel hat geschrieben:Du siehst keinen Unterschied zwischen den beiden Ausdrücken?
Sehr komisch. Aber daran sieht man, dass die es eh keinem recht machen können. Sonst hätte ich irgendwann geschrieben, dass mir die Ausnahme fehlt
Folgende Benutzer bedankten sich beim Autor a-dead-trousers für den Beitrag:
ralf.wenzel