gabo hat geschrieben:war die Frage zu unklar, oder geht soetwas einfach nicht?
Unklar nicht, aber wenn du gesucht schon gesucht hast müßtest du über die möglichen Techniken gestolpert sein.
Die RTTS-Klassen und CREATE DATA sind eine Möglichkeit oder über CL_ALV_TABLE_CREATE könnte man es auch lösen, hat beides seine Vor- und Nachteile. Evtl. ist auch eine Kombination von beidem möglich/sinnvoll.
Ich würde es über RTTS (cl_abap_tabledescr, cl_abap_structdescr, etc.) lösen:
- Tabellenbeschreibung der übergebenen Tabelle ermitteln
- Strukturbeschreibung der Tabellenbeschreibung ermitteln
- Komponentenliste der Strukturbeschreibung ermitteln
- Komponentenliste nach eigenen Wünschen anpassen (Feldlänge, neue Felder)
- neue Strukturbeschreibung aus geänderter Komponentenliste erzeugen
- neue Tabellenbeschreibung aus neuer Strukturbeschreibung erzeugen
- mittels CREATE DATA TYPE HANDLE neue Tabelle/Struktur erzeugen
Ob Rechenoperationen auf CHAR-Feldern gehen weiß ich nicht, hier müßtest du evtl. casten.
Wenn du auf die einzelenen Felder einer Zeile zugreifen willst:
Code: Alles auswählen.
DO.
ASSIGNG COMPONENT sy-index OF STRUCTURE <ZEILE> TO <COMP>.
IF sy-subrc = 0.
* Rechen:
<COMP> = <COMP> + 1.
ELSE.
* letztes Feld erreicht DO verlassen.
EXIT.
ENDIF.
ENDDO.
Der ALV sollte ansich kein Problem sein, den würde ich erst später in Angriff nehmen.
Kleine Frage zum Schluß:
Bekommst du den Namen der DB-Tab über die die interne Tabelle definiert wurde mit übergeben?