Dynamische Tabellenstruktur erstellen

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

Dynamische Tabellenstruktur erstellen

Beitrag von skill (ForumUser / 5 / 0 / 0 ) »
Hallo zusammen,

ich habe schon verschiedene Threads gelesen, aber leider passt dies nicht so ganz auf mein Problem bzw. mir fehlt der Hintergrund die Vorschläge richtig umzusetzen. Ich schreibe einen Report, der anhand der Belegart die Anzahl der damit gebuchten Belege für die Jahre 2000-2007 (aktuelles Jahr) ausgibt. Meine interne Tabelle sieht im Moment so aus:

Code: Alles auswählen.

** 
interne Tabelle: Ausgabetabelle
TYPES: BEGIN OF t_itab_output,
         blart TYPE t003-blart,              "Belegart
         y2000 TYPE i,                       "Anzahl der Belege 2000
         y2001 TYPE i,                       "Anzahl der Belege 2001
         y2002 TYPE i,                       "Anzahl der Belege 2002
         y2003 TYPE i,                       "Anzahl der Belege 2003
         y2004 TYPE i,                       "Anzahl der Belege 2004
         y2005 TYPE i,                       "Anzahl der Belege 2005
         y2006 TYPE i,                       "Anzahl der Belege 2006
         y2007 TYPE i,                       "Anzahl der Belege 2007
         fdate TYPE bkpf-budat,              "Erste Buchung
         ldate TYPE bkpf-budat,              "Letzte Buchung
       END OF t_itab_output.

DATA: it_output TYPE STANDARD TABLE OF t_itab_output,
      wa_output TYPE t_itab_output.

Das ist natürlich 1. unschön und 2. muss wenn die Auswertung für 2008 gemacht wird angepasst werden. Wie kann ich denn den Block y2000-y2007 dynamisch generieren? Mit CREATE_DATE habe ich es nicht hinbekommen. Und wie gebe ich dann die dynamschen Felder im ALV Grid aus? Dort deklariere ich im Feldkatalog jedes Feld manuell.

Mit folgendem Code ist es mir zumindestens mal gelungen die Variablen dynamisch zu erzeugen:

Code: Alles auswählen.

** 
* Zeiger auf das Feld in der Struktur
FIELD-SYMBOLS: <fs> TYPE string. 

* Nimmt Feldnamen auf
DATA: g_fieldname TYPE string,
      year TYPE i VALUE 2000,
      year_begin(4) TYPE c.

WHILE year IN s_gjahr.
  year_begin = year.

* Feldnamen zusammenbasteln
  CONCATENATE 'Y' year_begin INTO g_fieldname.

* Zeiger auf Feld ausrichten
  ASSIGN (g_fieldname) TO <fs> .

  year = year + 1.

ENDWHILE.
aber wie hänge ich diese Fehlder jetzt in meine interne Tabelle?

Ich habe 4.7 auf Basis 620.

Vielen Dank im Voraus,

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


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

wieso nimmst Du denn nicht einfach das Jahr mit in die interne Tabelle auf:

Code: Alles auswählen.

TYPES: BEGIN OF t_itab_output, 
         blart TYPE t003-blart,              "Belegart 
         jahr(4),                                    "Jahr 
         anzahl TYPE i,                           "Anzahl der Belege 
         fdate TYPE bkpf-budat,            "Erste Buchung 
         ldate TYPE bkpf-budat,             "Letzte Buchung 
       END OF t_itab_output. 
Wenn Du alle Belege für ein Jahr gelesen hast, schreibst Du die Anzahl der Belege und das Jahr in die interne Tabelle

Grüsse khb

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

erstelle Dir ein Feldkatalog mit den gewünschten Feldern, wobei ich gerne
mit dem FB LVC_FIELDCATALOG_MERGE mir die Feldbeschreibungen (hier BKPF) hole und die Felder herauspicke, die ich benötige.
Für die Zählerfelder reicht es m.W., in der Struktur LVC_S_FCAT den Name(*), den internen Datentyp und Spaltenüberschriften je Feld mitzugeben.
Anschließend kann man sich mit der Methode cl_alv_table_create=>create_dynamic_table eine Datenreferenz auf 'seine' Tabelle erzeugen lassen.

Das bedeutet jedoch, dass man auf die Tabelle und deren Felder immer nur über Feldsymbole zugreifen kann.

@khb
da er was von Feldkatalog schreibt, vermute ich, dass die Tabelle in einem ALV-Grid dargestellt werden soll...

PS:
Prämisse: ALV-OO

(*) als Name sollte die Jahreszahl reichen. Dann muss man den Namen nicht mit erst noch CONCATENATE o.ä. jedesmal zu erzeugen.
Gruß
Ereglam


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

Seite 1 von 1

Vergleichbare Themen

4
Antw.
4197
Views
Dynamische Struktur erstellen und ansprechen
von miho » 07.08.2013 13:32 • Verfasst in ABAP® für Anfänger
3
Antw.
1768
Views
eine dynamische Tabelle erstellen mit mehreren Tabellenn
von ibo » 09.10.2016 19:43 • Verfasst in ABAP® für Anfänger
2
Antw.
1391
Views
Tabellenstruktur
von Ines » 12.10.2006 22:51 • Verfasst in ABAP® für Anfänger
3
Antw.
2172
Views
Tabellenstruktur geändert...
von SAPAlex » 25.04.2008 20:18 • Verfasst in ABAP® für Anfänger
1
Antw.
1827
Views
Tabellenstruktur ändern
von dan » 11.03.2009 16:31 • Verfasst in ABAP® für Anfänger

Über diesen Beitrag


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

Aktuelle Forenbeiträge

Regex in where
vor 4 Stunden von tar 8 / 183
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

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

Regex in where
vor 4 Stunden von tar 8 / 183
Daten an Tabelle binden
Gestern von Bright4.5 3 / 1489

Unbeantwortete Forenbeiträge

aRFC im OO-Kontext
vor 5 Wochen von ralf.wenzel 1 / 3261
Hilfe bei SWEC/SWE2
September 2024 von retsch 1 / 9822