dynamische Klasse

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

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

dynamische Klasse

Beitrag von ThomasK ( / / 0 / 3 ) »
Hallo zusammen,

ich arbeite gerade an einer internen Tabelle, welche eine variable Zahl von Membervariablen haben soll. Erst zur Laufzeit wird geprüft, wieviele Variablen ich benötige. => Manchmal hat die Tabelle nur 10 Variablen, manchmal aber 75.

Zum Verständnis:
Die Tabelle enthält 1 Obermaterial und diesem sind 1-n Materialien zugeordnet. Nun möchte ich in der Tabelle das Obermaterial stehen haben und zu den einzelnen Materialien je die benötigte Anzahl, also z.B.:

Klasse Mat

Mat-obermaterial = 'MAT_O'.
Mat-mat1 = 0.
Mat-mat2 = 5.
Mat-mat3 = 0.
...
Mat-matn = 99.

mat1 - matn können erst zur Laufzeit ermittelt werden. Hat irgenwer eine Idee, wie ich das realisieren kann?

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


Beitrag von ereglam (Top Expert / 1829 / 2 / 7 ) »
ich würde folgende Konstruktion verwenden:

Code: Alles auswählen.

TYPES:
  BEGIN OF ts_mat_cnt,
    matnr TYPE matnr,
    count TYPE i,
  END   OF ts_mat_cnt,
  BEGIN OF ts_mat,
    matnr     TYPE matnr,
    t_dep_mat TYPE TABLE OF ts_mat_cnt
  END   OF ts_mat.

DATA:
  gs_mat TYPE ts_mat.
Damit stellst Du das Obermaterial in gs_mat-matnr unf fügst für jedes abhängige Material einen Eintrag in der Tabelle gs_mat-t_dep_mat an.
Gruß
Ereglam


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

Beitrag von ThomasK ( / / 0 / 3 ) »
Danke erstmal,

soweit bin ich dann auch schonmal gekommen, habs dann aber wieder verworfen ... :wink:

Ich habe nun also in meiner Oberklasse stehen:

Code: Alles auswählen.


TYPES: BEGIN OF imat,
        matnr TYPE makt-matnr,
        maktx TYPE makt-maktx,
        bdmng TYPE resb-bdmng,
END OF imat.


DATA: BEGIN OF itab OCCURS 1,
        maktx_o TYPE makt-maktx, 
        matspalten TYPE TABLE OF int_matspalten,
END OF itab.
Das Befüllen haut auch schon hin (über Umwege, aber ich bin ja noch am lernen ...)

Gut, jetzt mochte ich einem Fieldcat befüllen:

Code: Alles auswählen.

  CLEAR v_imat_k.

  LOOP AT itab-matspalten INTO v_imat_k.

    CLEAR ls_fieldcat.
    ls_fieldcat-tabname       = 'itab'.
    ls_fieldcat-fieldname     = 'MATSPALTEN-BDMNG'.
    ls_fieldcat-reptext_ddic  = v_imat_k-maktx.
    APPEND ls_fieldcat TO f_fieldcat.

    CLEAR v_imat_k.

  ENDLOOP.
In dem Funtkionsbaustein REUSE_ALV_GRID_DISPLAY wird itab auch als t_outtab angegeben.
Es kann aber leider nicht der 2-dim Wert aus matspalten gelesen werden - da gibt er nen schmarrn aus.

Nun die Frage, ob es nen Kniff gibt, wie man dem Fieldcat oben den Wert matspalten-bdmng der Tabelle itab zuweisen kann.

Beitrag von Desaster (ForumUser / 68 / 0 / 0 ) »
Hi ThomasK,
ich denke für die Ausgabe brauchst Du dann:
REUSE_ALV_HIERSEQ_LIST_DISPLAY

Gruss Desaster

Beitrag von Gast ( / / 0 / 3 ) »
Ist do eine Ausgabe auch als GRID möglich?

Bei Liste reicht die Breite nicht aus, d.h. es werden 3 Zeilen Überschriften produziert ...

Zudem ist eine Ausgabe mit Grid schöner ... :wink:

Beitrag von cosmo (Specialist / 175 / 0 / 0 ) »
In einem ALV ist eine dynamische Anzahl von Spalten prinzipiell nicht möglich. Es sind aber sehr viele Spalten möglich. Du müsstest eine Tabelle mit der maximalen Anzahl an Spalten erzeugen, wovon Du dann die nicht benötigten per Feldkatalog ausblendest. Die Überschriften lassen sich ebenfalls im Feldkatalog verändern.

Solche Datenstrukturen werden aber auch gerne als Aufrissbaum dargestellt. Beschäftige Dich hier mal mit der Klasse CL_GUI_COLUMN_TREE. Dies ist dann auch die Frage, ob man eine hierarchisch sequentielle Liste in einem Control darstellen kann.
Jörg Krause, Anwendungsentwickler und SAP-Betreuer MM/PP

Beitrag von ThomasK ( / / 0 / 3 ) »
Hallo nochmal.

Ich komm auf keinen grünen Zweig, aber es muss doch irgendwie möglich sein ...

Ich finde auch CL_GUI_COLUMN_TREE nicht zum ansehen. Ich programmiere hier auch nicht objektorientiert, weil es noch nicht gewünscht ist.

Langsam schmeiß ich diesen PC aus dem Fenster raus ... :wink:

Also ich versuche es nochmal zu erklären:

Als erstes werden die Tabellen befüllt. Ich habe auch schon probiert, die interne Tabelle anhand von einem Schlüssel auszugliedern und das dann wiederzugeben z.B.:

int_o ist die Obergruppe
int_m ist Untergruppe

Code: Alles auswählen.

DATA: BEGIN OF int_o occurs 1,
        key(1),
        name(10),
end of int_o.

DATA: BEGIN OF int_m occurs 1,
        key(1),
        matnr TYPE makt-matnr,
        bdmng TYPE resb-bdmng,
END OF int_m.

* Befüllung z.B.:

  int_o-key = 'A'.
  int_o-name = 'Mat_o_A'.
  append int_o.

  int_o-key = 'B'.
  int_o-name = 'Mat_o_B'.
  append int_o.


  int_m-key = 'A'.
  int_m-matnr = 'M1'.
  int_m-bdmng = 1.
  append int_m.

  int_m-key = 'A'.
  int_m-matnr = 'M2'.
  int_m-bdmng = 2.
  append int_m.

  int_m-key = 'B'.
  int_m-matnr = 'M1'.
  int_m-bdmng = 3.
  append int_m.

  int_m-key = 'B'.
  int_m-matnr = 'M2'.
  int_m-bdmng = 4.
  append int_m.
Nun möchte ich eine Grid-Ausgabe, die wie folgt aussieht:

Code: Alles auswählen.

key | name    | M1 | M2
A   | Mat_o_A | 1  | 2
B   | Mat_o_B | 3  | 4
Hab im Fieldcat es auch schon geschafft, die Ausgabe der Spaltenüberschriften dynamisch anzugeben.

Code: Alles auswählen.

FORM fieldcat_init USING f_fieldcat TYPE slis_t_fieldcat_alv.

  DATA: ls_fieldcat TYPE slis_fieldcat_alv.
...
  LOOP AT int_m.

    CLEAR ls_fieldcat.
    ls_fieldcat-tabname       = 'int_m'.
    ls_fieldcat-fieldname     = 'BDMNG'.
    ls_fieldcat-reptext_ddic  = int_m-matnr.
    APPEND ls_fieldcat TO f_fieldcat.

  ENDLOOP.
...
ENDFORM.
Vielleicht funktioniert es ja doch irgendwie...

Ach ja, die matnr in int_m ist sortiert und somit ist immer sicher gestellt, dass z.B. 'M1' an pos 1 kommt, so dass es untereinander funktionieren müsste.

Danke schon mal für eure Mühen!

Der verzweifelte ThomasK ... :(

Seite 1 von 1

Vergleichbare Themen

1
Antw.
2022
Views
Lokale Klasse autom. in globale Klasse ändern
von JohnLocklay » 09.01.2019 09:10 • Verfasst in ABAP Objects®
5
Antw.
3027
Views
Klasse soll Typdefinition von anderer Klasse nutzen
von debianfan » 24.05.2017 11:30 • Verfasst in ABAP Objects®
2
Antw.
2706
Views
ALV mit Klasse / Gestaltungsmöglichkeiten
von Arkhan » 29.04.2005 08:44 • Verfasst in ABAP Objects®
18
Antw.
13584
Views
Klasse: CL_ABAP_GZIP
von Gast » 25.10.2004 11:54 • Verfasst in Web-Dynpro, BSP + BHTML
0
Antw.
2458
Views
Persistente Klasse
von Sertl » 28.08.2007 23:14 • Verfasst in ABAP Objects®

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