Code: Alles auswählen.
select single kpf~budat
into order_be_issue
from ( ( mkpf as kpf inner join mseg as seg
on kpf~mblnr = seg~mblnr and kpf~mjahr = seg~mjahr )
inner join vbfa as fa
on seg~mblnr = fa~vbeln and seg~zeile = fa~posnn )
where fa~vbelv = order_vbeln
and fa~posnv = tmp_order_posnr
and fa~vbtyp_n = 'R'
and seg~bwart = '601'
and seg~matnr = tmp_order_matnr
and seg~kdauf = order_vbeln
and seg~kdpos = tmp_order_posnr.
Code: Alles auswählen.
data: temp_vbeln type vbfa-vbeln,
temp_posnn type vbfa-posnn.
select single vbeln posnn
into (temp_vbeln,temp_posnn)
from vbfa
where vbelv = order_vbeln
and posnv = tmp_order_posnr
and vbtyp_n = 'R'.
if sy-subrc = 0.
select single kpf~budat
into order_be_issue
from mkpf as kpf inner join mseg as seg
on kpf~mblnr = seg~mblnr and
kpf~mjahr = seg~mjahr
where seg~mblnr = temp_vbeln
and seg~zeile = temp_posnn
and seg~bwart = '601'
and seg~matnr = tmp_order_matnr
and seg~kdauf = order_vbeln
and seg~kdpos = tmp_order_posnr.
endif.
Hallo Dimes,dimes hat geschrieben:Hallo,
Ich hoffe mir kann jemand dabei helfen
Bei folgender ausgabe erhalte ich keinen Wert und sy-subrc = 4:
Und wenn ich das verschachtele dann bekomm ich einen wert:Code: Alles auswählen.
select single kpf~budat into order_be_issue from ( ( mkpf as kpf inner join mseg as seg on kpf~mblnr = seg~mblnr and kpf~mjahr = seg~mjahr ) inner join vbfa as fa on seg~mblnr = fa~vbeln and seg~zeile = fa~posnn ) where fa~vbelv = order_vbeln and fa~posnv = tmp_order_posnr and fa~vbtyp_n = 'R' and seg~bwart = '601' and seg~matnr = tmp_order_matnr and seg~kdauf = order_vbeln and seg~kdpos = tmp_order_posnr.
Ist es eigendlich egal wie ich die From-Klausel bilde, sprich z.B. erst vbfa inner join mseg und dann mkpf... Oder muss man sich da an eine Reinfolge halten?Code: Alles auswählen.
data: temp_vbeln type vbfa-vbeln, temp_posnn type vbfa-posnn. select single vbeln posnn into (temp_vbeln,temp_posnn) from vbfa where vbelv = order_vbeln and posnv = tmp_order_posnr and vbtyp_n = 'R'. if sy-subrc = 0. select single kpf~budat into order_be_issue from mkpf as kpf inner join mseg as seg on kpf~mblnr = seg~mblnr and kpf~mjahr = seg~mjahr where seg~mblnr = temp_vbeln and seg~zeile = temp_posnn and seg~bwart = '601' and seg~matnr = tmp_order_matnr and seg~kdauf = order_vbeln and seg~kdpos = tmp_order_posnr. endif.
Danke & Gruß
Dimes
Ich finde nicht das die beiden Codes unterschiedlich sind. Denn im ersten code lese ich ja auch nur dann wenn ich in der vbfa werte gefunden habe.Wie du schon gesagt hast:wie ich dies sehe, sind deine beiden Codes
unterschiedlich. Im zweiten, wenn du Werte
bekommst, liest du ja erst, wenn in der
Belegflusstabelle VBFA etwas gefunden wurde.
Bei meinem inner join muss ich das irgendwie so verstehen:Bei einem Inner Join muss in jeder Tabelle
ein Eintrag vorhanden sein, damit du ein
Ergebniss erhälst.
Hi Dimes,dimes hat geschrieben:hi,
Ich finde nicht das die beiden Codes unterschiedlich sind. Denn im ersten code lese ich ja auch nur dann wenn ich in der vbfa werte gefunden habe.Wie du schon gesagt hast:
Bei meinem inner join muss ich das irgendwie so verstehen:
sucht er anhand der where-klausel die werte in der vbfa, wenn er da nichts gefunden hat dann braucht er auch nicht in den anderen tabellen zu suchen, wenn er da jatzt aber was gefunden hat sucht er in den beiden anderen Tabellen weiter (auch anhand der where-klausel)...
das ist doch im Prinzip das gleiche was ich auch im 2ten coding gemacht habe! oder nicht?
Weshalb bekomme ich dann nur im 2 code ein ergebniss???
mach ich ja im prenziep im 2 coding auch so.wobei ich nicht sicher bin, ob deine On-Bedingungen im ersten Code zur VBFA auch richtig sind Beispiel (on seg~mblnr = fa~vbeln).
und da bekomme ich meine werte!into (temp_vbeln,temp_posnn)
...
where seg~mblnr = temp_vbeln
and seg~zeile = temp_posnn
...Code: Alles auswählen.