Hallo zusammen,
ich habe ein etwas "verschrobenes" Konstrukt:
Für eines meiner Projekte schreibe ich gerade an einem Funktionsbaustein. Dieser soll, anhand einer Übergabetabelle die Werte aus dieser Tabelle anhand der Ursprungs-Struktur (variabel!) extrahieren und nur die Werte bzw. Felder die zuvor an anderer Stelle gecustomized wurden, an eine Ausgabetabelle übertragen. Die Ausgabetabelle ist notwendig, da ALV-Grids ja nur Eingabetabellen vom Type Standard Table akzeptieren und die Übergabetabelle - aus diversen Gründen die zu Erklären jetzt zu lange dauern würde und auch zu Ausufern würde - nunmal eine TabellenTyp-Tabelle ist.
Nun, die Übergabe der Daten und das Extrahieren sowie das Übergeben der Daten an die Ausgabetabelle funktioniert alles - wunderbar....
Nun kommt mein Problem:
Zur Anzeige der Daten bediene ich mich, wen wunderts

, eines ALV-Grids, das auf einer Tabelle folgender TypBeschreibung basiert:
Data: gt_distab Type Z_DISSTRUCT.
wobei Z_DISSTRUCT folgende Felder und Attribute aufweißt:
Code: Alles auswählen.
Komponente Komp.Typ. Dtyp Länge Kurzbeschreibung
FIELD1 CHAR100 CHAR 100 Charakter 100
FIELD2 CHAR100 CHAR 100 Charakter 100
FIELD3 CHAR100 CHAR 100 Charakter 100
FIELD4 CHAR100 CHAR 100 Charakter 100
FIELD5 CHAR100 CHAR 100 Charakter 100
FIELD6 CHAR100 CHAR 100 Charakter 100
Für diese Struktur lasse ich mir natürlich über den Baustein LVC_FIELDCATALOG_MERGE die lvc_t_fcat erstellen. Nennen wir Ihn FeldKatalogA.
Nun, sieht es ja nicht gut aus, wenn man Daten zu einem spezifischen Objekt präsentiert, das als Überschrift über den Spalten überall nur 'Charakter 100' steht.
Also ermittel ich Anhand der Import-Parameter den Namen der dynamischen (zu vergebenden, die Strukturen existieren schon im DDic) Struktur, auf welcher die Daten in der Import-Tabelle beruhen, auch dafür noch den Feldkataog. Nennen wir diesen FeldKatalogB.
Um nun meine Anzeigetabelle - von den Überschriften her - auf die Ursprungsstruktur der Eingabedaten anzupassen, setze ich für den FeldKatalogA die zu belegenden Spalten wie folgt um:
Code: Alles auswählen.
clear: FeldKatalogA-coltext,
FeldKatalogA-scrtext_l,
FeldKatalogA-scrtext_m,
FeldKatalogA-scrtext_s,
FeldKatalogA-ref_field,
FeldKatalogA-ref_table.
move:
space to FeldKatalogA-tech,
FeldKatalogB-scrtext_m to FeldKatalogA-reptext.
Die nicht zu besetzenden Felder des FeldKatalogsA werden im Feld Tech auf 'X' gesetzt, sind also in der Anzeige nicht mehr wirksam.
Durch löschen der Felder ref_field und ref_table wird ja, wie ich die Doku verstanden habe, die Dictionary-Beziehung der Felder aufgehoben, so das im Feld reptext die anzuzeigende Spaltenüberschrift stehen sollte.
Soweit zur Beschreibung der Vorbereitungen. Da dies nicht mein erstes OO-Alv_Grid ist, das ich verwende, habe ich natürlich auf dem Dynpro ein CustomControl, für welches ein cl_gui_custom_control-Objekt angelegt wird. Dieses wiederrum dient als Parent-Objekt für die cl_gui_alv_grid-Instanz. Beide werden sauber angelegt und befinden sich auf einem PopUp-Dynpro.
Setze ich nun mit einen Set_Table_For_First_Display meine interne Anzeigetabelle an das Grid ab, übergebe ich das Layout (sel_mode = 'B' und zebra = 'X') und den FeldKatalogA ebenfalls an die Methode...
Phänomen: Es kommt zu keinem Laufzeitfehler, aber das Grid wird dennoch nicht angezeigt!?!?!
Laaanger Rede kurzer Sinn: Hat einer von Euch eine Erklärung dafür, bzw. kann mir Erklären (ich hoffe meine Auführungen waren ausführlich genug), was ich falsch mache?
Besten Dank im voraus und
vG
Arno