Interne Tabelle

Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Getting started ... Alles für einen gelungenen Start.
12 Beiträge • Seite 1 von 1
12 Beiträge Seite 1 von 1

Interne Tabelle

Beitrag von Betty ( / / 0 / 3 ) »
Hallo!

Ich bin echt in Verlegenheit...
Bisher habe ich meine internen Tabellen immer so deklariert:
DATA: BEGIN OF itab OCCURS 50.
DATA: feld1,
feld2,
... .
DATA: END OF itab.

Hier hat itab ja immer eine Kopfzeile, wie deklariere ich eine Tabelle ohne Kopfzeile?
Irgendwie bekomme ich es echt nicht mehr gebacken, obwohl ich es sicher mal gelernt habe... :oops:

Danke, Betty

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


Beitrag von Thomas R. (Expert / 766 / 84 / 40 ) »
Hallo Betty,
folgend 2 Auszüge aus einem Beispielabap:

types:
begin of gt_data,
kstar type zrt_alv_guideline_alv-kstar,
netto type zrt_alv_guideline_alv-netto,
error type zrt_alv_guideline_alv-error,
budat type zrt_alv_guideline_alv-budat,
posid type zrt_alv_guideline_alv-posid,
kostl type zrt_alv_guideline_alv-kostl,
end of gt_data,
gt_data_tab type standard table of gt_data
with default key initial size 0.

data:
ltab_data type gt_data_tab.

In der Hilfe zu TYPES und DATA findest Du die nötigen Informationen.

MfG
Thomas R.

Beitrag von Betty ( / / 0 / 3 ) »
Oh, da hätte ich ja selbst drauf kommen können... :?

Mit gt_data_tab type standard table of gt_data definierst du dir wohl die Workarea, oder?
Was bedeutet der Zusatz 'with default key initial size 0'?

Die Info zu Types und Data werde hab ich grade aufgerufen...sollte zukünftig öfters mal da rein kucken.

Lieben Dank, Thomas!

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

am allereinfachsten geht es so:

Code: Alles auswählen.

* Tabelle definieren
DATA:
     i_table type table of SAP_TAB_OR_STRUC.

* Statische Workarea
DATA: 
     w_table like line of i_table.

* Bearbeiten
     LOOP AT i_table into w_table.

     ENDLOOP.
Noch was "schickes"

Code: Alles auswählen.

FIELD-SYMBOLS:
    <i_table> like line of i_table.

* Damit kann man die Tabelle "entlangsurfen" und hat 
* quasi garkeine Workarea mehr.

LOOP AT i_table ASSIGNING <i_table>.

ENDLOOP.

* Ach noch was: Einfügen neue Zeile mit Feldsymbol:

APPEND INITIAL LINE TO i_table ASSIGING <i_table>.
* und auf geht's ...

* Jeder Zugriff auf <i_table> schreibt sofort in die Tabelle!!!
Und richtig schick wird es bei Tabelle in Tabelle.

Ich definiere für micht selbst nur noch Tabellen ohne Kopfzeile und mit Feldsymbol.

Ich definiere alle meine Tabellenstrukturen als "Struktur" im SAP-Dictionary, so spare ich mir das "Gehampel" mit BEGIN OF ... END ... .

Wenn es mal nicht anders geht, definiere ich meine Struktur als Typ und nehmen diesen dann als Struktur für die interne Tabelle

Code: Alles auswählen.

TYPES:
     BEGIN OF y_table,
     ...
     ...
     END...

DATA:
     i_table TYPE TABLE OF y_table.
* weiter wie oben
Oder man verwendet einen im Dictionary definierten Tabellentyp, dann kann man sich das TABLE OF sparen.

Gruß
babap

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
babap hat geschrieben:...

Code: Alles auswählen.

FIELD-SYMBOLS:
    <i_table> like line of i_table.

...
* Ach noch was: Einfügen neue Zeile mit Feldsymbol:

APPEND INITIAL LINE TO i_table ASSIGING <i_table>.
* und auf geht's ...

* Jeder Zugriff auf <i_table> schreibt sofort in die Tabelle!!!
...
Gruß
babap
diese Form kannte ich auch noch nicht... :oops:
Gruß
Ereglam


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

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
Hallo,

das mit dem APPEND kannte ich auch noch nicht.
babap hat geschrieben:

Code: Alles auswählen.

FIELD-SYMBOLS: 
    <i_table> like line of i_table. 

* Damit kann man die Tabelle "entlangsurfen" und hat 
* quasi garkeine Workarea mehr. 

LOOP AT i_table ASSIGNING <i_table>. 

ENDLOOP. 

* Ach noch was: Einfügen neue Zeile mit Feldsymbol: 

APPEND INITIAL LINE TO i_table ASSIGING <i_table>. 
* und auf geht's ... 

* Jeder Zugriff auf <i_table> schreibt sofort in die Tabelle!!! 
habe das jetzt in mein Prog. implementiert,

Code: Alles auswählen.


DATA: g_it_out_lf TYPE TABLE OF lin_output_lieferung.
FIELD-SYMBOLS: <out_lf> TYPE lin_output_lieferung.

append initial line to g_it_out_lf assigning <out_lf>.
bekomme aber leider :cry: den Fehler:
Nach "G_IT_OUT_LF" wurde "." erwartet.

Hab ich da was übersehen???

mfg
Richard

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

könnte es sein, dass Dein Release noch kleiner 4.7/6.20 ist?

Code: Alles auswählen.

DATA:
  gt_mara TYPE TABLE OF mara.
FIELD-SYMBOLS:
  <mara> LIKE LINE OF gt_mara.

APPEND INITIAL LINE TO gt_mara ASSIGNING <mara>.
weil, bei mir macht er es.
Gruß
Ereglam


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

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
Hallo,

unter System - Status sagt er: R/3 Release 4.6C

ist ein wenig kleiner :?


Hätte mich gefreud, wenn das funkt.
mit loop at itab assagning <itab> arbeite ich schon länger, aber jedesmal wenn ich einen neuen Satz anlegen muß, brauche ich wieder die workarea. :cry:

mfg
Richard

Beitrag von Gast ( / / 0 / 3 ) »
Ich habe mir angewöhnt auch die interne Tabelle als type zu definieren:
types: begin of twa_type,
comp...,
end of twa_type,
tit_type type table of twa_type.


das hat den Vorteil, dass man die parameter in den Forms direkt typisieren kann.

perform myform using git_table.

form myform using pit_table type tit_type.
endform.

Ist für mich schöner als die Tables Structure anweisung....
Christian

Beitrag von babap (Expert / 681 / 1 / 1 ) »
Hallo,

ich habe diese Methode unter einem 4.6C-Release zuerst benutzt. Jetzt arbeite ich mit 4.7
RiffRaff hat geschrieben:Hallo,


habe das jetzt in mein Prog. implementiert,

Code: Alles auswählen.


DATA: g_it_out_lf TYPE TABLE OF lin_output_lieferung.
FIELD-SYMBOLS: <out_lf> TYPE lin_output_lieferung.

append initial line to g_it_out_lf assigning <out_lf>.
bekomme aber leider :cry: den Fehler:
Nach "G_IT_OUT_LF" wurde "." erwartet.

Hab ich da was übersehen???

mfg
Richard
Eventuell mal sehen, ob alle Hotpackages drin sind.

Und probier mal:

Code: Alles auswählen.

FIELD-SYMBOLS: <out_lf> LIKE LINE OF g_it_out_lf.
Manchmal bekommt der Syntaxchecker auch "Husten" wenn man das ASSIGNING falsch schreibt. Da hat er dann auch keine Alternativen als Vorschlag!!

Irgendwie muß das doch hinzukriegen sein.

Gruß
babap

Beitrag von Haubi (Expert / 625 / 20 / 30 ) »
Moinsen.

APPEND setzt doch SY-TABIX auf den Index der letzten Zeile der ITab. Daher müßte doch auch folgendes klappen (als Workaround):

Code: Alles auswählen.

APPEND INITIAL LINE TO gt_itab.
READ TABLE gt_itab
     ASSIGNING <gs_wa>
     INDEX sy-tabix.
Gruss,
Haubi
Das ABAP Kochbuch ab sofort bei Amazon...

I'd rather write code that writes code than write code...

Beitrag von RiffRaff (Specialist / 379 / 0 / 1 ) »
Hallo

der Ansatz von Haubi funkt (auch in meinem System).
Werd das mal so implementieren.

ein kleiner Einstieg zum weiterdiskutieren :lol:
Gast hat geschrieben: das hat den Vorteil, dass man die parameter in den Forms direkt typisieren kann.

perform myform using git_table.

form myform using pit_table type tit_type.
endform.
Richtig schön wäre:

Code: Alles auswählen.

form myform using value(pit_table) type tit_type. 
endform.
Übergabe by Reference
Da es ein Using Parameter ist, soll er ja nicht verändert werden.
Zu diskutieren wäre: wenn es sich um eine Tabelle handelt (besonders bei großen), ob man nicht by Value übergeben sollte (wie Gast geschrieben hatte), da hier nicht die ganze Tabelle kopiert wird.

mfg
Richard

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4190
Views
5
Antw.
5165
Views
Inhalt interne Tabelle an andere interne Tabelle übergeben
von L0w-RiDer » 30.01.2020 16:28 • Verfasst in ABAP® für Anfänger
5
Antw.
4945
Views
1
Antw.
4606
Views

Über diesen Beitrag


Die Frage ist als "gelöst" markiert. Den entsprechend Beitrag findest du hier.

Unterstütze die Community und teile den Beitrag für mehr Leser und Austausch

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.