hab mal meinen ersten Join anstatt dem üblichen select erfolgreich gebastelt.
Die Ausgabe der Werte funktioniert auch wunderbar.
Ich lese die Sätze in tmp_sel und würde die dann gerne in einem weiteren FORM
updaten. Leider kann ich im Update-form die ITAB tmp_sel nicht verwenden weils immer heisst die Tabelle ist unbekannt und muss in der Tables anweisung definiert werden. (Warum funktionierts dann im Join???)
Hier der Code:
TABLES: J_4prel, J_4porgstr.
DATA: begin of tmp_sel OCCURS 0.
include structure J_4prel.
DATA: ORG like J_4porgstr-orgart.
DATA: END OF tmp_sel.
DATA: count type i.
parameters: Test type checkbox default 'X'.
select-options: s_KAT for J_4prel-Relation.
select-options: s_PSN for J_4porgstr-prsnr.
select-options: s_ORG for J_4porgstr-orgart default '00022'.
------------------------------------------------------------------------
FORM select_psns .
refresh tmp_sel. clear tmp_sel.
select o~ORGART o~PRSNR r~DTVON r~DTBIS r~LBLGN r~Relation
appending corresponding fields of table tmp_sel
from J_4porgstr AS o
inner join
J_4prel AS r on o~PRSNR = r~PRSNR
where o~ORGART IN s_ORG
and r~DTVON > r~DTBIS
and o~PRSNR in s_PSN
and r~Relation in s_KAT.
-----------------------------------------------------------------------------
Das Update soll nun die Einträge aus tmp_sel mit Relation = 'Z10', updaten, genauer gesagt das Feld DTBIS aus J_4prel mit dem zugehörigen Wert aus J_4plstgk (dort heisst das Feld GTBIS).
Hat jemand eine Idee wie ich oben genanntes Problem löse und wie der Update Code ungefähr aussehen müsste?
leider fehlt die Update-Routine in deinem Code-Schnipsel.
Wenn ich es richtig verstanden habe, müsstest du über die interne Tabelle einen Loop basteln und dort Zeilenweise das Update ausführen. Das ist aber nur eine Annahme, deine Form-Routine fehlt mir einfach.
Der Fehler weist auf ein SELECT oder UPDATE mit tmp_sel hin und da sind interne Tabellen nicht erlaubt. Ich meine z.B. so etwas:
Das Update sollte so in die Richtung aussehen, da ich noch Anfänger bin komm ich ohne Debugger meist nicht weit, da mir der jedoch für den Select gleich schon "tmp_sel nicht deklariert" ausgibt, weiß ich jetzt nicht ob der Code so überhaupt funktioniert
loop at tmp_sel.
select * from tmp_sel where RELATION = 'Z10'.
J_4prel-DTBIS = J_4prel-DTVON.
update J_4prel.
endselect.
endloop.
Hab das ganze jetzt mit READ TABLE und einem LOOP probiert, in beiden Fällen sind alle Variablen laut Debugger korrekt gefüllt, aber das Update auf die Tabelle macht er nicht???
loop at tmp_sel where RELATION = 'Z10'.
* read table tmp_sel with key RELATION = 'Z10'.
tmp_sel-DTVON = tmp_sel-DTBIS.
modify tmp_sel.
update J_4prel set dtvon = tmp_sel-dtvon where LBLGN = tmp_sel-lblgn and PRSNR2 = tmp_sel-PRSNR2.