[52870] in SAPr3-news
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.