Code: Alles auswählen.
DATA: lt_fetchTabelle TYPE TABLE OF /scwm/lagp, " Deklaration einer IT mit Struktur von Lagerplatztabelle
ls_fetchTabelle LIKE LINE OF lt_fetchTabelle. " Deklaration einer WorkArea vom Typ einer Zeile der IT
Code: Alles auswählen.
SELECT * FROM /scwm/lagp INTO TABLE lt_fetchTabelle
WHERE LGNUM = iv_lgnum
AND LGTYP IN it_lgtyp
AND LGBER IN it_lgber.
Code: Alles auswählen.
SELECT a~LGNUM a~LGPLA a~LGTYP a~LGBER a~SKZUA "b~LTYPT "c~LBERT
INTO CORRESPONDING FIELDS OF TABLE lt_fetchTabelle
FROM ( ( /scwm/lagp AS a INNER JOIN /scwm/t301t AS b ON b~LGNUM = a~LGNUM
AND b~LGTYP = a~LGTYP )
INNER JOIN /scwm/t302t AS c ON c~LGNUM = a~LGNUM
AND c~LGBER = a~LGBER )
WHERE a~LGNUM = iv_lgnum
AND b~LGNUM = iv_lgnum
AND c~LGNUM = iv_lgnum
AND a~LGTYP IN IT_LGTYP
AND b~LGTYP in IT_LGTYP
AND a~LGBER IN IT_LGBER
AND c~LGBER IN IT_LGBER
.
Code: Alles auswählen.
DELETE ADJACENT DUPLICATES FROM lt_fetchTabelle.
Wenn du zuviele Einträge bekommst, dann stimmen die JOIN-Bedingungen nicht. Wenn die /SCWM/ Tabellen Kopien der SAP-Tabellen sind (Namensraum /SCWM/ ist kein Standard-SAP), dann hast du nicht alle Schlüssel versorgt.LukasHD hat geschrieben:Deshalb würde ich mich trotz meiner bisherigen Lösung über einen Hinweis auf ein alternatives, besseres Vorgehen freuen
Code: Alles auswählen.
SELECT /scwm/lagp~lgnum /scwm/lagp~lgpla /scwm/lagp~lgtyp /scwm/lagp~lgber /scwm/lagp~skzua
/scwm/t301t~ltypt
/scwm/t302t~lbert
INTO CORRESPONDING FIELDS OF TABLE lt_fetchtabelle
FROM /scwm/lagp
JOIN /scwm/t301t
ON /scwm/t3021~spras = sy-langu "Anmeldesprache
AND /scwm/t3021~lgnum = /scwm/lagp~lgnum
AND /scwm/t3021~lgtyp = /scwm/lagp~lgtyp
JOIN /scwm/t302t
ON /scwm/t302t~spras = sy-langu "Anmeldesprache
AND /scwm/t302t~lgnum = /scwm/lagp~lgnum
AND /scwm/t302t~lgtyp = /scwm/lagp~lgtyp
AND /scwm/t302t~lgber = /scwm/lagp~lgber
WHERE /scwm/lagp~lgnum = iv_lgnum
AND /scwm/lagp~lgtyp IN it_lgtyp
AND /scwm/lagp~lgber IN it_lgber
wie oben bereits geschrieben wurde ist es am einfachsten, wenn man sich einen eigenen TYPE definiert:LukasHD hat geschrieben: Und die Frage zum ersten Punkt besteht auch immer noch (Neue Felder in interne Tabelle hinzufügen, damit ich eine IT hab, mit einer Struktur, die alle benötigten Felder hat [also die aus dem fetch und die zwei aus den beiden anderen Tabellen], sodass ich bei meiner JOIN-Anweisung alles da rein schreiben kann.
Code: Alles auswählen.
TYPES: BEGIN OF ts_data,
INCLUDE TYPE /scwm/lagp.
TYPES: lgber TYPE /scwm/t301t~lgber, "INCLUDE TYPE macht leider den Kettensatz kaputt, deshalb hier einen neuen anfangen
ltypt TYPE /scwm/t301t~ltyp,
END OF ts_data.
Code: Alles auswählen.
TYPES BEGIN OF ts_data.
INCLUDE TYPE /scwm/lagp.
TYPES: LBERT TYPE /scwm/t302t-LBERT,
LTYPT TYPE /scwm/t301t-LTYPT,
END OF ts_data.
TYPES tt_fetchTabelle TYPE TABLE OF ts_data.
DATA: lt_fetchTabelle TYPE tt_fetchTabelle, " Deklaration einer IT mit Struktur von Lagerplatztabelle für Array-Fetch
wa_fetchTabelle LIKE LINE OF lt_fetchTabelle. " Deklaration einer WorkArea vom Typ einer Zeile der IT
Benutzt du noch den alten Classic Debugger oder schon den neuen?LukasHD hat geschrieben:Am Code war nichts falsch, es lag einfach nur an der Einschränkung des Debuggers, dass er mir nur die ersten 50 Spalten angezeigt hat und alles dahinter einfach abgeschnitten.