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.
4347
Views
Dynamische Struktur erstellen und ansprechen
von miho » 07.08.2013 13:32 • Verfasst in ABAP® für Anfänger
3
Antw.
1787
Views
eine dynamische Tabelle erstellen mit mehreren Tabellenn
von ibo » 09.10.2016 19:43 • Verfasst in ABAP® für Anfänger
2
Antw.
1411
Views
Tabellenstruktur
von Ines » 12.10.2006 22:51 • Verfasst in ABAP® für Anfänger
3
Antw.
2273
Views
Tabellenstruktur geändert...
von SAPAlex » 25.04.2008 20:18 • Verfasst in ABAP® für Anfänger
1
Antw.
1871
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

Feldwerte vergleichen
vor einer Stunde von jocoder 3 / 46
Workflow-Datenfluss mit Multi-Line-Container
vor 19 Stunden von ewx gelöst 2 / 116
Mahnung erstellen
vor 23 Stunden von Sebastian82 4 / 152
Absprung VA02 Position
vor 2 Tagen von gs3rr4 gelöst 3 / 143

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

Feldwerte vergleichen
vor einer Stunde von jocoder 3 / 46
Workflow-Datenfluss mit Multi-Line-Container
vor 19 Stunden von ewx gelöst 2 / 116
Mahnung erstellen
vor 23 Stunden von Sebastian82 4 / 152
Absprung VA02 Position
vor 2 Tagen von gs3rr4 gelöst 3 / 143

Unbeantwortete Forenbeiträge

OPD Druck im SPOOL
vor 2 Tagen von Manfred K. 1 / 104
Export von Spools in XLSX
vor einer Woche von abapamateur 1 / 970
Feldberechnung ME32K
vor einer Woche von ZF_SAPler 1 / 1545