[52870] in SAPr3-news

home help back first fref pref prev next nref lref last post

Re: Auflösung von SELECT-OPTION

daemon@ATHENA.MIT.EDU (Wolfgang P.)
Sun Jan 2 03:24:52 2005

To: sapr3-news@mit.edu
Date: Sun, 2 Jan 2005 09:24:25 +0100
From: "Wolfgang P." <w.pezda@utanet.at>
Message-ID: <cr8b4c$ip$1@newsreader1.utanet.at>

Ich habe gerade eben wieder in die News-Group geblickt und den Infoaustausch 
durchgelesen.

Dazu hätte ich folgende Statements:

@Rainer Huebenthal:
Sorry, folgendes mach ich normalerweise nicht, aber in diesem Falle mache 
ich doch eine Ausnahme.
Du macht auf mich den Eindruck eines reichlich arroganten und sich selbst 
überschätzenden Menschen. Du hast nicht mal begriffen, was ich wollte. Du 
hast auch nicht wirklich darüber nachgedacht bzw. mir Fragen gestellt, ob 
dein Verständnis von meinen Problem überhaupt korrekt ist. Man hat auch 
nicht den Eindruck, dass es dir nicht darum ging, mir eine Hilfe zu geben, 
sondern dem Forum zu zeigen, was für ein cooler und kompetenter Typ du bist. 
Dabei hast du nicht einmal kapiert, dass die IN-Klausel im SQL etwas anderes 
ist als die IN-Klausel über eine SELECT-OPTION, da letztere nur eine 
SAP-Spezifische Sache ist.

@den Rest:
Ich muß alle existierenden Preis- bzw. Rabattkonditionen nach ganz 
spezifischen Anforderungen durchsuchen und auszulisten. Alle von mir 
gefunden Bausteine beziehen sich zumeist darauf, dass die Konditionen, 
welche zurückgeliefert werden, sich auf einen Auftrag beziehen. Damit sind 
sie für mich nicht brauchbar. Dies zwingt mich, über alle im R/3 angelegten 
Konditionsschlüssel KSCHL zu gehen, die Access Sequences (Tabelle T682I) 
rauszusuchen, selbst auf die Axxx-Tabellen zuzugreifen, diese über das 
Dictionary Table DD03L zu analysieren und manche Daten auszugeben. Ansich 
funktioniert das Programm schon tadellos, bis auf jene Sache.

Der Zugriff lautet:

SELECT * INTO TABLE axxx
FROM (nametable)
WHERE (i_sql)

axxx ist eine Tabelle mit einem einzigen langen Charakterfeld, wo ich mir 
die Info's über die Postition und Länge der jeweiligen Felder einfach 
raushole.
in nametable steht die jeweilige Tabelle für die Konditionen (A030, A512 
usw.)
I_SQL ist jene Table, wo ich die Where-Bedingung in Abhängigkeit der 
jeweiligen Struktur aufbaue.
Ich versuchte, in I_SQL das Command

 ... AND MATNR IN S_MATNR AND ....

abzusetzen, bekam aber den Fehler, dass die Datenbank mit dieser 
SQL-Anweisung nichts anfangen kann. Ich schrieb ein kleines Testprogramm

SELECT-OPTIONS: S_MATNR FOR MARA-MATNR.
SELECT * FROM MARA WHERE MATNR IN S_MATNR.
WRITE: / MARA-MATNR.
ENDSELECT.

und sah über dem SQL-Trace nach, was tatsächlich an die Datenbank bei den 
verschiedenen Varianten abgesetzt wird. Dabei wurde mir klar, dass 
logischerweise die IN-Klausel über eine SELECT-OPTION eine SAP-spezifische 
Sache ist, welche das Oracle-SQL nicht verstehen kann. In meinem 
Testprogramm wurde jede Eingabemöglichkeit von mir vom Standard jeweils in 
eine BETWEEN Anweisung usw. geändert und so an die Datenbank geschickt.
Ich habe jetzt aus Zeitgründen eine Performance-fressende Lösung gefunden, 
indem ich alle Kunden und Artikel, welche in Frage kommen, in eine interne 
Tabelle speichere und meine SQL-Anweisung eben für jeden Artikel und Kunden 
extra aufrufe. Jetzt im Moment kann ich während der Entwicklung des 
Programmes damit leben. Aber das kann keine Dauerlösung sein.

Ich bin jetzt ein paar Tabe nicht da, werde aber nachher wieder in die 
NEWS-Group hineinsehen. Veilleicht ergibt sich noch ein Hinweis für mich. 
Ansonsten muß ich mich wohl oder übel hinsetzen und selbst PERFORM 
entwicklen, welches die SELECT-OPTION in eine SQL-Anweisung übersetzt. 



home help back first fref pref prev next nref lref last post