Ich möchte eine Methode einer globalen Klasse nutzen, die eine Range-Tabelle als Import-Parameter verwendet.
Im Selection-Screen meines Programms habe ich daher eine Select-Option definiert, welche das gleiche Datenelement verwendet, wie die Range-Tabelle.
Bei der Syntaxprüfung bekommen ich nun den Fehler: "Feld 'p_select_option' unbekannt."
Ich kann ich auch nicht über die Select-Options loopen.. da kommt der gleiche Fehler.
Hatte erst gedacht, dass ich mir die Range-Tabelle nochmal lokal hole und die Select-Options übertrage, aber hne Loop wird das nichts.
Kann mir jemand sagen woran das liegt bzw. wie ich an der Stelle weiter komme?
Wenn ich den Debugger anschmeiße, dann ist 'p_select_option' ganz normal gefüllt.
Auch für Select Statements kann ich sie ganz normal verwenden (... IN p_select_option ...).
Hehe, aber ich bin nicht sicher, was genau ich posten soll.
Top Include:
...
Data: g_bukrs type bukrs.
...
Selection-Screen Include:
...
Select-Options p_bukrs for g_bukrs.
...
Include für Implementierung einer Klasse:
...
CALL METHOD zcl_clas=>method
EXPORTING
it_bukrs = p_bukrs
RECEIVING
rt_table = lt_table.
...
it_bukrs ist eine im DDIC definierte Range-Table vom Datenelement bukrs. Ich würde es ja noch akzeptieren, wenn p_bukrs nicht zum Typen von it_bukrs passt.. immerhin ist das eine ne Range-Rable ausm DDIC und das andere einfach ne Select-Option ausm Selection-Screen.. aber ich kann ja nicht einmal drüber loopen, obwohl die Tabelle im Debugger ganz normal gefüllt ist.
Folgendes funktioniert:
SELECT *
FROM dtab
APPENDING CORRESPONDING FIELDS OF TABLE lt_table
WHERE bukrs IN p_bukrs.
Vielleicht übersehe ich einfach ne Kleinigkeit oder so.. ich hoffe die Schnipsel helfen etwas dabei, mein Problem zu verstehen.
Sorry, ich habe einen anderen Namen für den Parameter gewählt, damit es besser verständlich ist. Aus verschiedenen Gründen kann ich nicht das richtige Coding posten...
Der Fehler in diesem Fall wäre dann also: Feld "p_bukrs" unbekannt. Es existiert aber ein Feld mit ähnlichem Namen: "g_bukrs".
Hallo,
dann empfehle ich Dir Deinen Code soweit einzudampfen, bis er für die Veröffentlichung geeignet ist (und möglichst kurz ist).
Ich bin ziemlich sicher, dass Du dabei bereits den Fehler finden wirst. Wenn nicht kannst Du ihn ja veröffentlichen.
Wenn du eine SelOpt p_select_option an eine Methode übergeben willst, musst du p_select_option[] übergeben. Grund: Eine SelOpt ist eine Range-Tabelle mit impliziter Kopfzeile. Die Kopfzeile zu übergeben, bringt nichts, du musst den Tabellenkörper übergeben. Daher das [].
Folgende Benutzer bedankten sich beim Autor ralf.wenzel für den Beitrag: Hakk
Ich konnte das Problem mittlerweile lösen. Es lag an einer falschen Reihenfolge der Includes im Rahmenprogramm.
Ich habe jetzt die Implementierungs-Icludes der Klassen ganz oben ins TOP-Iclude geschrieben und das Selection-Screen Include ganz ans Ende.