Fehler beim Loop - Hilfe

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
10 Beiträge • Seite 1 von 1
10 Beiträge Seite 1 von 1

Fehler beim Loop - Hilfe

Beitrag von tho_died (ForumUser / 21 / 0 / 0 ) »
Hallo,
ich habe folgende IT definiert:

DATA BEGIN OF wa_temp_qmsm OCCURS 0 WITH HEADER LINE.
include structure qmsm.
Data END OF wa_temp_qmsm.


Nach einem befüllten der wa_temp_qmsm möchte ich diese abloopen.

loop at wa_temp_qmsm.
do something...
endloop.

Leider bekomme ich als sy-subrc immer die 4.
Was ist denn hier falsch?
Warum geht er nie, trotz daten in die Schleife?


Danke Thomas

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Beitrag von khb (Specialist / 184 / 7 / 1 ) »
Hallo Thomas,

hmm ich dachte immer, interne Tabellen mit kopfzeilen deklariert man:

DATA: itab LIKE db_tab OCCURS 0 WITH HEADER LINE

und mit

data: begin of ...
...
end of ....

legt man eine Struktur an.

Also ich kriege bei Deinem Coding immer einen Fehler, wenn ich das Programm prüfe.

Ein return-code > 0 bei internen Tabellen weist darauf hin, dass die Tabelle nicht durchlaufen wird.

lg khb

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Hallo tho_died,

hast Du denn auch die Daten aus dem Arbeitsbereich WA_TEMP_QMSM auch mit INSERT (oder APPEND) in die Tabelle WA_TEMP_QMSM übertragen?

PS:
es wird empfohlen, keine impliziten Kopfzeilen mehr zu verwenden...

Code: Alles auswählen.

DATA:
  lt_qmsm TYPE STANDARD TABLE OF qmsm, "Tabelle ohne Kopfzeile
  ls_qmsm LIKE LINE OF lt_qmsm. "Arbeitsbereich (kann auch LW_QMSM sein)

ls_qmsm = '...'. "Daten zuweisen
* SAP empfiehlt ausschließliches Verwenden von INSERT (APPEND ist obsolet)
INSERT ls_qmsm INTO TABLE lt_qmsm. "in Tabelle übertragen
...

* Tabelle durchlaufen...
LOOP AT lt_qmsm INTO ls_qmsm.
*  do something
ENDLOOP.
Gruß
Ereglam


May the Force be with your code
|| .| |.|| | .... . ..|. ||| .|. |.|. . |... . .|| .. | .... |.|| ||| ..| .|. |.|. ||| |.. .

Beitrag von Jufo (ForumUser / 43 / 0 / 0 ) »
Hallo Thomas,

interessant, daß Du das überhaupt kompilieren konntest. Bei dieser Art der Deklaration hat die interne Tabelle automatisch eine Kopfzeile, deshalb kannst - oder besser mußt - Du "with header line" weglassen. Dann sollte es gehen. Wenn Du aber der internen Tabelle zu den Feldern der Tabelle qmsm keine weiteren Felder hinzufügen willst, erreichst Du dasselbe wirklich einfacher mit

data: wa_temp_qmsm like qmsm occurs 0 with header line.

Wenn danach der Sy-subrc immer noch ungleich 0 ist, dann solltest Du das Zulesen der Daten prüfen bzw. im Debugger schauen, ob Werte in Deiner internen Tabelle ankommen.

Ciao, Judith

Re: Fehler beim Loop - Hilfe

Beitrag von ralf.wenzel (Top Expert / 3956 / 204 / 281 ) »
tho_died hat geschrieben:DATA BEGIN OF wa_temp_qmsm OCCURS 0 WITH HEADER LINE.
include structure qmsm.
Data END OF wa_temp_qmsm.
Oh mein blutender Jesus. Kopfzeilen deklariert man explizit, WITH HEADER LINE ist imho sogar von der SAP verbotenes Coding.
tho_died hat geschrieben:Leider bekomme ich als sy-subrc immer die 4.
Was ist denn hier falsch?
Du bist sicher dass in der Tabelle Daten vorhanden sind? Per Debugger geschaut?


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Beitrag von HelmutB (ForumUser / 21 / 0 / 0 ) »
Oh mein blutender Jesus. Kopfzeilen deklariert man explizit, WITH HEADER LINE ist imho sogar von der SAP verbotenes Coding.
Naja, richtiger ist wohl : WITH HEADER LINE ist bei ABAP OO verboten, wäre das generell so, könnte SAP 10.000-de von Programmen einstampfen, abgesehen mal von all den kundeneigenen Programmen...

Es wird zwar nicht mehr empfohlen, aber funktioniert jedenfalls prinzipiell (nicht mal die erweiterte Syntaxprüfung beanstandet es).

Und was dein 'blutender Jesus' damit zu tun hat, ist mir völig unklar.

MfG
Helmut

Beitrag von ralf.wenzel (Top Expert / 3956 / 204 / 281 ) »
HelmutB hat geschrieben:Naja, richtiger ist wohl : WITH HEADER LINE ist bei ABAP OO verboten, wäre das generell so, könnte SAP 10.000-de von Programmen einstampfen, abgesehen mal von all den kundeneigenen Programmen...
Keineswegs -- das heißt ja nicht, dass alte Programme zwingend überarbeitet werden müssen.

Fakt ist, dass bei solch einem Konstrukt nicht klar ist, welches Objekt gemeint ist, wenn man einen Befehl darauf anwendet.

Du kennst den Unterschied zwischen "clear itab" und "clear itab" je nachdem ob die itab eine Kopfzeile hat oder nicht? Die beiden Anweisungen machen etwas komplett unterschiedliches.

Darum sollte man so nicht arbeiten. Natürlich funktioniert das. Es funktioniert ne ganze Menge was man nicht tun sollte. Aber ich dachte, hier säßen Fachleute.

Ich jedenfalls weigere mich, bei Fremdabnahmen sowas abzunehmen.


Ralf
Bild
Ralf Wenzel Heuristika SAP-Development
25 Jahre SAP-Entwickler • 20 Jahre Freiberufler
PublikationenUngarische NotationXing
Neuer Artikel über BRF+ in der neuen iX 05/25!

Beitrag von HelmutB (ForumUser / 21 / 0 / 0 ) »
Keineswegs -- das heißt ja nicht, dass alte Programme zwingend überarbeitet werden müssen.
Wenn's verboten wäre, schon...
Fakt ist, dass bei solch einem Konstrukt nicht klar ist, welches Objekt gemeint ist, wenn man einen Befehl darauf anwendet.
Mir ist das schon klar...
Aber ich dachte, hier säßen Fachleute.
Nee is klar....hab ich jetzt auch verstanden
Ich jedenfalls weigere mich, bei Fremdabnahmen sowas abzunehmen.
Das nützt dem Thomas nix...genauso wenig wie meine Kommentare..;-)

MfG
Helmut

Beitrag von xxxx (ForumUser / 38 / 0 / 0 ) »
@ralf

sehr präpotent deine antworten ...

zurück zum Anfang

Beitrag von GastX (Specialist / 287 / 5 / 19 ) »
Hallo tho_died,
hat sich Dein Problem mittlerweile eigentlich erledigt?

Wenn nicht:
- kannst Du mal mehr Coding posten, insbesondere das Befüllen?
- wie sieht das denn im Debugger aus?

Generell und wertfrei:
Es ist schon ratsam, separat definierte Arbeitsbereiche zu verwenden. Zum einen wg. der Lesbarkeit; zum anderen, weil die Wahrscheinlichkeit gross ist, dass "obsolete" Elemente irgendwann einmal statt Warnungen schlicht Fehler erzeugen.
Apropos: auf welchem Release arbeitest Du?

Gruss Frank

P.S.: zu der anderen Diskussion:

@ralf: Kopfzeilen werden nicht explizit definiert,denn dann wären es ja keine. Was Du meinst sind Arbeitsbereiche.
@ralf 2: Natürlich weiss man, welches Objekt man am Wickel hat. Oder man kann es wissen; wenn auch nicht auf einen Blick, so ist es dennoch eindeutig ermittelbar.
(Dass es nicht so förderlich ist, wenn man das nicht der Codezeile ansieht sondern man das ganze Drumherum dazu durchforsten muss, steht auf einem anderen Blatt. Das spricht natürlich für explizit definierte Arbeitsbereiche.)

Allgemein: was die erweiterte Syntaxprüfung von solchen Konstrukten hält, hängt auch davon ab, auf welchem Release man arbeitet. Ich habe gerade parallel 4.6c und ERP 6.0 am Wickel, schon nett...

A

Seite 1 von 1

Vergleichbare Themen

7
Antw.
3084
Views
Fehler bei F4-Hilfe
von Stefan144 » 17.09.2019 16:17 • Verfasst in ABAP® für Anfänger
1
Antw.
2738
Views
4
Antw.
4406
Views
LOOP in einem LOOP
von Bjuti » 10.09.2013 15:18 • Verfasst in ABAP® für Anfänger
39
Antw.
8986
Views
Loop
von Kai999 » 27.07.2017 16:15 • Verfasst in ABAP® für Anfänger
52
Antw.
11334
Views
LOOP AT
von cuncon » 01.02.2018 09:28 • Verfasst in ABAP® für Anfänger

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.