Code: Alles auswählen.
* Beschreibung: Programm zum durchsuchen der Tabelle YSD_SEARCH
*---------------------------------------------------------------------*
REPORT YSD_SEARCH.
TABLES YSD_die_richtige_tabelle.
TYPES: BEGIN OF T_DATA,
MANDT TYPE MANDT,
KUNWE TYPE KUNWE,
KUNRE TYPE KUNRE,
END OF T_DATA .
DATA: tempTable TYPE TABLE OF T_DATA WITH HEADER LINE,
tempLine TYPE T_DATA.
* selektionsfenster
*---------------------------------------------------------------------*
PARAMETERS: s_KUNWE(15) TYPE c, "NO-DISPLAY.
s_KUNRE(15) TYPE c.
START-OF-SELECTION.
* getData
*---------------------------------------------------------------------*
SELECT *
FROM YSD_die_richtige_tabelle
INTO tempTable.
ENDSELECT.
* Bis hierher füllt er tempTable mit den Datensätzen und soweit erst einmal alles gut - Jedoch springt er danach nicht in die Loop sondern überspringt sie jedes mal
* showData
*---------------------------------------------------------------------*
LOOP AT tempTable INTO tempLine.
WRITE: tempLine-LIFNR,
tempLine-HERK,
tempLine-KUNWE,
tempLine-VONR,
tempLine-KUNRE.
ENDLOOP.
WRITE 'KTHXBB'.
Code: Alles auswählen.
SELECT *
FROM YSD_die_richtige_tabelle
INTO tempTable.
ENDSELECT.
Habe den Header entfernt und die Select-Anweisung korrigiert (mit INTO Table).JHM hat geschrieben:Nach diesem Select ist tempTable leer. Dann kann man auch nicht drüber loopen.Code: Alles auswählen.
SELECT * FROM YSD_die_richtige_tabelle INTO tempTable. ENDSELECT.
entweder INTO TABLE oder APPEND tempTable einbauen.
Verzichte am besten auf WITH HEADER LINE, ist sowieso veraltet und braucht man nicht. Hier erschwert sie die Fehlersuche, da unter einem Namen zwei DATAs angesprochen werden können.
Folgende Benutzer bedankten sich beim Autor PeterPaletti für den Beitrag:
kurdy91x
tempTable wurde als Standardtabelle mit Headerzeile definiert. Das Programm führt also eine interne Tabelle mit dem Namen tempTable und eine Kopfzeile mit dem Namen tempTable. Der Select hat nur die Kopfzeile gefüllt, nach dem Select stand also in der Kopfzeile der letzte gelesene DB-Satz. Es fehlte die Übernahme der Kopfzeile in die interne Tabelle.kurdy91x hat geschrieben:Aber warum er mir davor beim debugging angezeigt hat, dass tempTable nach der Select Anweisung gefüllt wurde - im loop aber nicht bearbeitet wurde verstehe ich immer noch nicht.
Noch kurz ergänzend: Wenn du die Variable im Debugger via "tempTable[]" wie oben beschrieben einträgst, bekommst du etwas in der Form zahl x zahl (z.B. 23x4 o.ä.) angezeit. Die erste Zahl zeigt dir dann die Anzahl der Einträge im Tabellen-Body und die zweite die Anzahl der Spalten, welche die Tabelle besitzt. In dem gerade gesagten Beispiel wären es also 23 Datensätze mit jeweils 4 Spalten.JHM hat geschrieben:kurdy91x hat geschrieben:Mittels tempTable[] (zwei eckige Klammern) kann explizit auf die interne Tabelle zugegriffen werden (Editor und Debugger).
Deshalb nicht mehr benutztenkurdy91x hat geschrieben:aber fatal wenn man es falsch benutzt.