2-dim-arrays?!?! interne tabellen

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

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

2-dim-arrays?!?! interne tabellen

Beitrag von Gast ( / / 0 / 3 ) »
Ich komme von der c-seite und frage mich ob man in abap sowas wie ne 2-dimensionale-tabelle machen kann wo ich dann schnell auf jedes element zugreifen kann??

ich habe schon eine interne tab versucht aber dann hatte ich das problem, dass ich nicht direkt auf ein beliebiges element zugreifen kann (wie würde das gehen??)

mfg

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
du meinst in der Form tab[x][y]...

Nein, so etwas geht in ABAP nicht.
Man muss das mehrstufig machen:

Code: Alles auswählen.

DATA:
  itab_line TYPE TABLE, "OF was_auch_immer
  itab      TYPE TABLE OF itab_line.

FIELD-SYMBOLS: "sind ähnlich *ptr in C
  <wa_itab> LIKE LINE OF itab,
  <wa_any>  LIKE LINE OF <wa_itab>.

READ TABLE itab ASSIGNING <wa_itab>
                INDEX x.
IF sy-subrc EQ 0.
  READ TABLE <wa_itab> ASSIGNING <wa_any>
                       INDEX y.
* jetzt hast Du mit <WA_ANY> Zugriff auf tab[x][y] ...
ENDIF.
PS:
ABAP ist eine sehr formale Sprache, wo man mehr oder weniger schreibt, was man macht...
Gruß
Ereglam


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

Beitrag von Gast ( / / 0 / 3 ) »
hmm schade das die form tab[x][y] nicht funkt aber wenigstens hab ich jetzt gewissheit!!!

ich werd gleich mal deinen vorschlag ausprobieren und danke für die schnelle antwort!

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
Gast hat geschrieben:hmm schade das die form tab[x][y] nicht funkt aber wenigstens hab ich jetzt gewissheit!!!

ich werd gleich mal deinen vorschlag ausprobieren und danke für die schnelle antwort!
ich hab's grad noch im R/3 gecheckt. Obigen Code mag er nicht...

Code: Alles auswählen.

DATA:
  itab_line TYPE TABLE OF string,
  itab      LIKE TABLE OF itab_line, "LIKE statt TYPE
  x         TYPE i VALUE 1,
  y         TYPE i VALUE 1.

FIELD-SYMBOLS: "sind ähnlich *ptr in C
  <wa_itab> LIKE LINE OF itab,
  <wa_any>  LIKE LINE OF <wa_itab>.

READ TABLE itab ASSIGNING <wa_itab>
                INDEX x.
IF sy-subrc EQ 0.
  READ TABLE <wa_itab> ASSIGNING <wa_any>
                       INDEX y.
* jetzt hast Du mit <WA_ANY> Zugriff auf tab[x][y] ...
ENDIF.

Beitrag von black_adept (Top Expert / 4158 / 136 / 959 ) »
Hmmm - vielleicht hab ich das Problem ja noch nicht so ganz durchschaut. Aber sind denn die internen Tabellen im SAP nicht de-facto Arrays.

Ich würde einen n-dimensionalen Array wie folgt aufbauen:

Code: Alles auswählen.

TYPES: BEGIN OF ty_array,
               x1 TYPE i,
               x2 TYPE i,
               ...
               xn TYPE i,
               value type irgendwas,
             END OF ty_array,
             tyt_array TYPE HASHED TABLE OF ty_array
                       WITH KEY x1 x2 ... xn.

DATA: t_array TYPE tyt_array.
Damit kann ich doch prima auf jedes einzelne Element direct zugreifen (via READ TABLE).
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
es geht doch wohl um die C-typische Schreibweise tab[x][y], die sich nicht in der Form in ABAP abbilden läßt...
Gruß
Ereglam


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

Beitrag von Gast ( / / 0 / 3 ) »
es geht doch wohl um die C-typische Schreibweise tab[x][y], die sich nicht in der Form in ABAP abbilden läßt...
...dann würde ich mir evtl. die ABAP-typische Schreibweise angewöhnen :wink:

Ich habe schon einige Leute in der Programmierung untergehen sehen, weil sie eine Sprache konnten und alles andere immer mit dieser Sprache verglichen.
Irgendwann geht das nicht mehr ....und dann schmeissen viele das Handtuch.

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

Man kann in ABAP Tabellen definieren, in deren Tabellenzeile wieder eine Tabelle enthalten ist.

Code: Alles auswählen.

TYPES: y_element type TABLE OF irgendwas.

TYPES: BEGIN OF y_tabelle,
       element TYPE y_element,
       END OF y_tabelle.

DATA: tabelle TYPE TABLE OF y_tabelle.

FIELD-SYMBOLS: <tabelle> like line of tabelle,
               <element> like line of y_element.
* oder vielleicht LIKE LINE OF tabelle-element ???

In der 4. Zeile das 3. Element erwischt man so:

Code: Alles auswählen.

READ TABLE tabelle ASSINGING <tabelle> INDEX 4.
READ TABLE <tabelle>-element ASSINGING <element>
                             INDEX 3.

Mit <element> hat man jetzt Zugriff auf das 3. Element in der 4. Zeile.


Im Debugger kan man mit tabelle[] den Tabellenkörper und mit tabelle[4] die 4. Zeile der Tabelle ansprechen.

Mit tabelle[4]-element[3] sieht man das 3. Element der 4. Zeile.

Die Variable "tabelle[]" kann man im Coding ansprechen (CLEAREN, MOVEN, Vergleichen ...)

Wäre zu probieren, ob man per Nummer die Einträge im Coding auch ansprechen kann ...

(Sorry für Syntaxfehler, aber habe leider gerade kein System zur Hand.)

Gruß
babap

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

Man kann in ABAP Tabellen definieren, in deren Tabellenzeile wieder eine Tabelle enthalten ist.

Code: Alles auswählen.

TYPES: y_element type TABLE OF irgendwas.

TYPES: BEGIN OF y_tabelle,
       element TYPE y_element,
       END OF y_tabelle.

DATA: tabelle TYPE TABLE OF y_tabelle.

FIELD-SYMBOLS: <tabelle> like line of tabelle,
               <element> like line of y_element.
* oder vielleicht LIKE LINE OF tabelle-element ???

In der 4. Zeile das 3. Element erwischt man so:

Code: Alles auswählen.

READ TABLE tabelle ASSINGING <tabelle> INDEX 4.
READ TABLE <tabelle>-element ASSINGING <element>
                             INDEX 3.

Mit <element> hat man jetzt Zugriff auf das 3. Element in der 4. Zeile.


Im Debugger kan man mit tabelle[] den Tabellenkörper und mit tabelle[4] die 4. Zeile der Tabelle ansprechen.

Mit tabelle[4]-element[3] sieht man das 3. Element der 4. Zeile.

Die Variable "tabelle[]" kann man im Coding ansprechen (CLEAREN, MOVEN, Vergleichen ...)

Wäre zu probieren, ob man per Nummer die Einträge im Coding auch ansprechen kann ...

(Sorry für Syntaxfehler, aber habe leider gerade kein System zur Hand.)

Gruß
babap
manchmal habe ich das Gefühl, dass man meine Ausführungen einfach überliest :? :evil:

Code: Alles auswählen.

DATA: 
  itab_line TYPE TABLE OF string, 
  itab      LIKE TABLE OF itab_line, "LIKE statt TYPE 
  x         TYPE i VALUE 1, 
  y         TYPE i VALUE 1. 

FIELD-SYMBOLS: "sind ähnlich *ptr in C 
  <wa_itab> LIKE LINE OF itab, 
  <wa_any>  LIKE LINE OF <wa_itab>. 

READ TABLE itab ASSIGNING <wa_itab> 
                INDEX x. 
IF sy-subrc EQ 0. 
  READ TABLE <wa_itab> ASSIGNING <wa_any> 
                       INDEX y. 
* jetzt hast Du mit <WA_ANY> Zugriff auf tab[x][y] ... 
ENDIF. 
bis auf die unterschiedliche Deklaration, sind die beiden Tabellen zweistufig! :!:

Seite 1 von 1

Vergleichbare Themen

3
Antw.
5135
Views
1
Antw.
2394
Views
RFC und interne Tabellen
von Mr.Black » 23.01.2007 18:22 • Verfasst in ABAP® Core
3
Antw.
3179
Views
interne Tabellen
von komel » 29.12.2016 16:35 • Verfasst in ABAP® für Anfänger
3
Antw.
2321
Views
2 interne tabellen
von swonny » 21.12.2006 09:40 • Verfasst in ABAP® für Anfänger
3
Antw.
14287
Views
Zugriff auf SAP interne Tabellen
von ille » 03.12.2007 13:37 • Verfasst in Java & SAP®

Ü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.