interne Tabellen

Getting started ... Alles für einen gelungenen Start.
24 Beiträge • Vorherige Seite 2 von 2 (current)
24 Beiträge Vorherige Seite 2 von 2 (current)

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
ewx Sorry Komando zurück habe den falschen Code
kopiert es geht lediglich um den zweiten Code
den gepostet habe da habe ich nach wie vor die selben Probleme

Grüße
bohne

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


Beitrag von ewx (Top Expert / 4784 / 294 / 628 ) »
Bohne, ich blicke bei dir nicht mehr durch!
Wo hast du jetzt noch Probleme?

Wir können es dir alles gerne nochmal erklären, aber verstehen musst du es schon selbst!

Nochmal:
Es gibt interne Tabellen MIT und OHNE Kopfzeile.
MIT: itab type standard table of zeilentyp WITH HEADER LINE
OHNE: itab type standard table of zeilentyp.

Bei Verwendung einer internen Tabelle MIT Kopfzeile braucht man keinen separaten Arbeitsbereich. Weder für LOOPs noch für APPENDs noch für INSERTs (APPEND itab.).
Im Gegensatz zu internen Tabellen OHNE Kopfzeile.

Hier benötigt man EINEN SEPARATEN ARBEITSBEREICH, den man für LOOPs, APPENDs, INSERTs etc. verwenden muss:

Code: Alles auswählen.

Data wa_itab like zeilentyp.
APPEND wa_itab TO itab.
Enno.

Beitrag von GastX (Specialist / 277 / 4 / 18 ) »
@ewx: full ack.
@bohne: nur noch eine Ergänzung zu ewx' Posting:
Analog zu

Code: Alles auswählen.

append wa to itab.
heisst es also auch

Code: Alles auswählen.

loop at itab into wa.
write:/ wa.
endloop.
s. Beispiele weiter oben bzw. Zusammenfassung von ewx.

Schönen Abend noch, schau morgen mal wieder rein,
Frank

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Endlich habe ich's.
... vielen Dank an alle, die an der Erklärung dieses Themas in irgendeiner Weise beteiligt waren.

Es lebe das ABAPforum

Grüße
bohne

Beitrag von bohne (Specialist / 437 / 0 / 0 ) »
Hi!
Ich habe in der Zwischenzeit wieder etwas entdeckt
was mir nicht ganz klar ist!
Ich habe mittlerweile festgestellt dass diese internen Tabellen aus 2 Teilen bestehen.
Einmal der Arbeitsbereich und der Tabellenrumpf oder
die Kopfzeile und und der Tabellenrumpf.
Warum gibt es diese zwei Teile?
Wird der Arbeitsbereich genauso gefüllt wie
der Tabellenrumpf?
In Fall 3 habe ich nur einen Arbeitsbereich definiert
ohne eine interne Tabelle und kann die Datensätze
aus der Tabelle anzeigen lassen.
Wozu brauche überhaupt eine interne Tabelle?
Was ich überhaupt nicht verstehe ist:
Das hin- und herschieben der Daten aus dem Arbeitsbereich in die interne Tabelle und umgekehrt .. während einer Select-Abfrage mit Append dann bei LOOP usw.
Gibt es dabei eine einheitliche Regelung was wass wohin geschrieben wird und wieder ausgelesen ..?

Code: Alles auswählen.

Fall 1:
*********interne Tabelle***********************
DATA itab TYPE Standard TABLE OF scarr WITH NON-UNIQUE KEY carrid.

DATA wa TYPE scarr

Welche Daten kommen in itab und welche in wa
***********************************************

Code: Alles auswählen.

Fall 2.
*********interne Tabelle***********************
DATA itab TYPE Standard TABLE OF scarr WITH NON-UNIQUE KEY carrid WITH HEADER LINE.


***********************************************

Code: Alles auswählen.

Fall 3:

DATA wa TYPE scarr

select * from scarr INTO CORRESPONDING FIELDS
OF wa.

Write: / wa- ... ,
         wa- ... ,
         wa- ... ,
endselect.

Beitrag von Gast ( / / 0 / 3 ) »
bohne hat geschrieben:Hi!
Ich habe in der Zwischenzeit wieder etwas entdeckt
was mir nicht ganz klar ist!
Ich habe mittlerweile festgestellt dass diese internen Tabellen aus 2 Teilen bestehen.
Einmal der Arbeitsbereich und der Tabellenrumpf oder
die Kopfzeile und und der Tabellenrumpf.
Warum gibt es diese zwei Teile?
Genau das steht in den vorherigen Beiträgen, insofern dürfte das keine neue Erkenntnis sein.

Im übrigen ist es nicht so, daß eine interne Tabelle immer aus Kopf-und Rumpf besteht. Eine Kopfzeile ist optional. Man kann stattdessen auch einen eigenen Arbeitsbereich (workarea) definieren.
Der Arbeitsbereich dient dazu, um zeilen- und feldweise auf die Tabelle zuzugreifen.
In einem Arbeitsbereich (oder Kopfzeile) ist i.d.R. immer eine bestimmte Zeile einer internen Tabelle enthalten (z.B. über Loop oder Read eingelesen).

Beitrag von Norbert (ForumUser / 52 / 0 / 0 ) »
Ich empfehle den
BC400 in Walldorf :)
...........
Just do it !

Regeln zu move und apppend und select.

Beitrag von Gast ( / / 0 / 3 ) »
Hallo,
Dein Problem ist, dass man die einzelnen Felder einer Tabellenzeile nicht direkt im Tabellenrumpf ansprechen kann. Warum, dass bleibt das Geheimnis der Väter von ABAP. Bei ABAP kommt es sehr auf die komplexe Syntax an. Der SELECT-Befehl hat viele Varianten. z.B.
"SELECT * into itab. ... (APPEND)... Endselect."
" Select into table itab."
"Select into corresponding field of itab. ...(Append)...Endselect. "
"select into corresponding fields of table itab."

Bei der Angabe ohne "table" wird zuerst nur die Kopfzeile gefüllt. dann kann man von Hand die einzelnen Felder der Zeile bearbeiten den Append machen, sonst wird der geamte Tabellenkörper in einem Rutsch gefüllt, dabei hat man keinen Einfluss auf die einzelne Zeile und der Arbeitsbereich/Kopfzeile bleibt leer !

Ansprechen kann man die einzelnen Felder einer Zeile nur, wenn man sie vorher in einer LOOP-Schleife oder mit READ TABLE in einen Arbeitsbereich kopiert hat.
Die Einzel-felder einer Zeile im Rumpf und in der WA sind vom Typ und der Anordnung in der Zeile immer gleich. Bei Tabellen mit Kopfzeilen sind sie namensgleich. Den Rumpf kann man nicht mit MOVE ( = ) verändern, sondern nur mit APPEND, INSERT, MODIFY, COLLECT und DELETE. Es geht aber der move auf gesamte Tabellen-Rümpfe: move itab1 to itab2. (definiert ohne Kopfzeile ) move itab1[] to itab2[].(definiert mit Kopfzeile ). Man kann also auch nicht ganze Spalten eines Tabellenrumpfes mit einem Befehl verändern.

Re: Regeln zu move und apppend und select.

Beitrag von black_adept (Top Expert / 3944 / 105 / 886 ) »
Anonymous hat geschrieben:Hallo,
Dein Problem ist, dass man die einzelnen Felder einer Tabellenzeile nicht direkt im Tabellenrumpf ansprechen kann.
...
Ansprechen kann man die einzelnen Felder einer Zeile nur, wenn man sie vorher in einer LOOP-Schleife oder mit READ TABLE in einen Arbeitsbereich kopiert hat.
Doch - mit ASSIGN geht das sehr wohl. ( seit 4.? )
Anonymous hat geschrieben: Man kann also auch nicht ganze Spalten eines Tabellenrumpfes mit einem Befehl verändern.
MODIFY itab FROM wa TRANSPORTING feldname WHERE feldname <> wa-feldname.

Vergleichbare Themen

3
Antw.
420
Views
4
Antw.
3405
Views
Interne Tabellen
von Fools » 19.01.2005 16:04 • Verfasst in ABAP® für Anfänger
8
Antw.
3550
Views
interne Tabellen
von niermaj » 20.07.2005 10:15 • Verfasst in ABAP® für Anfänger
1
Antw.
1171
Views
RFC und interne Tabellen
von Mr.Black » 23.01.2007 18:22 • Verfasst in ABAP® Core
4
Antw.
3370
Views
Interne Tabellen mit Key
von Nicole » 13.10.2004 11:04 • Verfasst in ABAP® für Anfänger

Aktuelle Forenbeiträge

E-Mail versenden mit GroupWise 18
vor einer Stunde von Kaiwalker 2 / 277
PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 72

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.

Aktuelle Forenbeiträge

E-Mail versenden mit GroupWise 18
vor einer Stunde von Kaiwalker 2 / 277
PDF-Anzeige unter EDGE
vor 5 Tagen von jocoder 2 / 72

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 4 Wochen von Lucyalison 1 / 131
Group Items auf einer Filterbar
vor 4 Wochen von Bright4.5 1 / 166