SAP Jobsuche bei DV-Treff


Suchen
KleinerEisbaer
vor 16 Jahre
Hallo,

warum geht folgender Code nicht:

Code:

Tables: vbrk, kna1, knbk.

Types: Begin of satz,
name1 type kna1-name1,
kunrg type vbrk-kunrg,
bankn type knbk-bankn,
end of satz.

Types: tabelle type standard table of satz.

Data: itab type tabelle,
wa type satz.

Data: it_vbrk type table of vbrk,
wa_vbrk like line of it_vbrk.

Data: it_kna1 type table of kna1,
wa_kna1 like line of it_kna1.

Data: it_knbk type table of knbk,
wa_knbk like line of it_knbk.

Select * from vbrk into wa_vbrk.
where fkdat between '20060201' and '20080229'
and vkorg = '3000'
and fkart = 'ZES'.
Append wa_vbrk to it_vbrk.

 Select * from kna1 into wa_kna1
 where kunnr = vbrk-kunrg.
 Append wa_kna1 to it_kna1.

 Select * from knbk into wa_knbk
 where kunnr = kna1-kunnr.
 Append wa_knbk to it_knbk.

Endselect.
Endselect.
Endselect.

Loop at it_vbrk into wa_vbrk.
  wa-kunrg = wa_vbrk-kunrg.

Loop at it_kna1 into wa_kna1.
  wa-name1 = wa_kna1-name1.

Loop at it_knbk into wa_knbk.
  wa-bankn = wa_knbk-bankn.
Append wa to itab.

Endloop.
Endloop.
Endloop.

Loop at itab into wa.
  write: / 'Itab: ', wa-kunrg, wa-name1, wa-bankn.
Endloop.


In der Write-Anweisung wird nichts ausgegeben.
Gerne nehme ich Alternativvorschläge - insbesondere auch zu meinen altmodischen Select-Anweisungen(!) Confused - entgegen!
Helft mir doch mal auf die Sprünge. Ich komme immer bei den internen Tabellen mit/ohne Kopfzeilen und der Verwendung von Arbeitsbereichen völlig durcheinander.
_________________
Nimm die Menschen wie sie sind, es gibt keine anderen.

PrinzJohn
vor 16 Jahre

Hallo,

ich habe Dir auch schon in einem anderen Forum ein antwort geschrieben.

Warum da nichts angezeigt wird, kann ich auf die schnelle nicht prüfen.

Nur mal ein paar Hinweise.

- Die Programmierung ist sehr unübersichtlich

- Warum nutzt Du keine Joins für die Tabellen ?

- Das harte codieren von Abgrenzungen wie z.B. 3000 für Vkorg oder "ZES" für Faktura_Art sollte man unterlassen

- Ich wette das Programm kann mehr als die Häflte von Zeilen reduziert werden.

 

KleinerEisbaer
vor 16 Jahre
Hallo PrinzJohn,

also Danke schon mal für Deine Antworten - auch wenn sie nicht konkret auf meine Fragen eingehen.

Natürlich kann man da vieles anders machen und selbstverständlich ist es nicht notwendig, die Werte hart einzugeben.

Aber was ich ja eigentlich wissen möchte ist, WAS im dargestellten Code dazu führt, dass bei der write-Ausgabe nichts ausgegeben wird.

Gerne kannst Du mir auch einen konkreten Vorschlag machen, wie Deine Join-Abfrage aussehen würde und auf welche Weise Du sie weiterverarbeiten würdest.

Danke schön!

PrinzJohn
vor 16 Jahre

Loop at it_vbrk into wa_vbrk.
  wa-kunrg = wa_vbrk-kunrg.

Loop at it_kna1 into wa_kna1.
  wa-name1 = wa_kna1-name1.

Loop at it_knbk into wa_knbk.
  wa-bankn = wa_knbk-bankn.
Append wa to itab.

Du liest die Daten in die WA's Wa_VBRK, WA_KNA1 und WA_KNBK.

Welchen Inhalt hat den WA beim APPEND ?

KleinerEisbaer
vor 16 Jahre

Hallo,

wa hatte ich wie folgt definiert:

Types: Begin of satz,

name1 type kna1-name1,

kunrg type vbrk-kunrg,

vkorg type vbrk-vkorg,

fkart type vbrk-fkart,

fkdat type vbrk-fkdat,

netwr type vbrk-netwr,

mwsbk type vbrk-mwsbk,

vbeln type vbrk-vbeln,

valdt type vbrk-valdt,

stras type kna1-stras,

ort01 type kna1-ort01,

pstlz type kna1-pstlz,

bankl type knbk-bankl,

bkont type knbk-bkont,

bankn type knbk-bankn,

end of satz.

Types: tabelle type standard table of satz.

Data: itab type tabelle,

wa type satz.

 

Im übrigen habe ich jetzt auch einen Join gemacht  . Guckst Du:

Select k~name1 v~kunrg v~vkorg v~fkart v~fkdat v~netwr v~mwsbk v~vbeln v~valdt k~stras

k~ort01 k~pstlz b~bankl b~bkont b~bankn

into table itab

from

( ( vbrk as v INNER JOIN kna1 as k

ON v~kunrg = k~kunnr )

inner join

knbk as b

on b~kunnr = k~kunnr )

where v~fkdat between '20060201' and '20080229'

and v~vkorg = '3000'

and v~fkart = 'ZES'.