Hallo Michi,
du hast mir schon paar mal recht gut geholfen, wofür ich mich nochmals recht herzlich bedanke. Nun stehe ich aber vor einem neuen Problem. Ich soll bestimmte Felder aus insgesamt 9 Tabellen ausgeben, wieder mal mithilfe des ALV. Da es sich um nicht transparente Tabellen handelt, konnte ich kein VIEW anlegen, und hab daher eine Struktur angelegt.
Das Programm soll wie folgt sein: Ein Parameter für den jeweiligen Bukrs, und per 4 Radio Buttons sollen 4 verschiedene Listen ausgegebn werden. Einmal die Belegarten/Nummernkreise, dann Debitoren Kontengruppen, Kreditoren Kontengruppen und als letztes noch Sachbearbeiter. Außerdem soll man ebenfalls noch per 2 SELECT-OPTION mehrere Kontenruppen angeben können für Debitoren und Kreditiroen. Mein Problem liegt in der Verknüpfung der Radiobuttons und der SELECT-OPTIONS mit den Datenbankfeldern, sodass jeweils die richtigen Felder in die ALV selektiert werden. Ich weiß, dass ich zunächst Inhalte der Datenbanktabelle in eine interne Tabelle einfügen soll, und dann eine Ereignistabelle bzw.Ausgabetabelle erstellen soll. Doch leider beherrsche ich dies noch nicht so gut, und aufgrund der Vielzahl der Tabellen erscheint mir dies doch recht komplex. In einem anderen Programm, waren es 3 Tabellen (SKA1,SKB1 und SKAT), das Include/Unterprogramm des Programms sah so aus:
FORM f_fill_tables.
DATA: lv_lines TYPE i.
CLEAR: it_ska1[], it_skb1[], it_skat[],it_tab[].
* Einträge aus SKA1-Tabelle auswählen
DESCRIBE TABLE so_ktonr LINES lv_lines.
IF lv_lines > 0.
* Selektion über Kontenplan und Kontennummer
SELECT * FROM ska1 INTO TABLE it_ska1
WHERE ktopl = p_ktplan AND saknr IN so_ktonr.
ELSE.
* Selektion nur über Kontenplan
SELECT * FROM ska1 INTO TABLE it_ska1
WHERE ktopl = p_ktplan.
ENDIF.
* passende Einträge aus der SKB1-Tabelle auswählen
DESCRIBE TABLE it_ska1 LINES lv_lines.
IF lv_lines > 0.
IF NOT p_bkreis IS INITIAL.
* Selection über Kontennummer und Buchungskreis
SELECT * FROM skb1 INTO TABLE it_skb1
FOR ALL ENTRIES IN it_ska1
WHERE saknr = it_ska1-saknr AND bukrs = p_bkreis.
ELSE.
* Selektion nur über Kontennummer
SELECT * FROM skb1 INTO TABLE it_skb1
FOR ALL ENTRIES IN it_ska1
WHERE saknr = it_ska1-saknr.
ENDIF.
* passende Bezeichnungen auswählen
SELECT * FROM skat INTO TABLE it_skat
FOR ALL ENTRIES IN it_ska1
WHERE SPRAS = sy-langu AND KTOPL = it_ska1-ktopl
AND SAKNR = it_ska1-saknr.
ENDIF.
* Ergebnistabelle zusammenbauen
LOOP AT it_skb1 INTO wa_skb1.
* Arbeitszeile initialisieren
CLEAR wa_zeile.
* Komponenten der SKB1-Tabelle übernehmen
wa_zeile-BUKRS = wa_skb1-BUKRS.
wa_zeile-SAKNR = wa_skb1-SAKNR.
wa_zeile-BEGRU = wa_skb1-BEGRU.
wa_zeile-BUSAB = wa_skb1-BUSAB.
wa_zeile-DATLZ = wa_skb1-DATLZ.
wa_zeile-ERDAT_SKB1 = wa_skb1-ERDAT.
wa_zeile-ERNAM_SKB1 = wa_skb1-ERNAM.
wa_zeile-FDGRV = wa_skb1-FDGRV.
wa_zeile-FDLEV = wa_skb1-FDLEV.
wa_zeile-FIPLS = wa_skb1-FIPLS.
wa_zeile-FSTAG = wa_skb1-FSTAG.
wa_zeile-HBKID = wa_skb1-HBKID.
wa_zeile-HKTID = wa_skb1-HKTID.
wa_zeile-KDFSL = wa_skb1-KDFSL.
wa_zeile-MITKZ = wa_skb1-MITKZ.
wa_zeile-MWSKZ = wa_skb1-MWSKZ.
wa_zeile-STEXT = wa_skb1-STEXT.
wa_zeile-VZSKZ = wa_skb1-VZSKZ.
wa_zeile-WAERS = wa_skb1-WAERS.
wa_zeile-WMETH = wa_skb1-WMETH.
wa_zeile-XGKON = wa_skb1-XGKON.
wa_zeile-XINTB = wa_skb1-XINTB.
wa_zeile-XKRES = wa_skb1-XKRES.
wa_zeile-XLOEB = wa_skb1-XLOEB.
wa_zeile-XNKON = wa_skb1-XNKON.
wa_zeile-XOPVW = wa_skb1-XOPVW.
wa_zeile-XSPEB_SKB1 = wa_skb1-XSPEB.
wa_zeile-ZINDT = wa_skb1-ZINDT.
wa_zeile-ZINRT = wa_skb1-ZINRT.
wa_zeile-ZUAWA = wa_skb1-ZUAWA.
wa_zeile-ALTKT = wa_skb1-ALTKT.
wa_zeile-XMITK = wa_skb1-XMITK.
wa_zeile-RECID = wa_skb1-RECID.
wa_zeile-FIPOS = wa_skb1-FIPOS.
wa_zeile-XMWNO = wa_skb1-XMWNO.
wa_zeile-XSALH = wa_skb1-XSALH.
wa_zeile-BEWGP = wa_skb1-BEWGP.
wa_zeile-INFKY = wa_skb1-INFKY.
wa_zeile-TOGRU = wa_skb1-TOGRU.
* Komponenten der SKA1-Tabelle füllen
READ TABLE it_ska1 INTO wa_ska1 WITH KEY saknr = wa_skb1-saknr.
IF sy-subrc = 0.
MOVE-CORRESPONDING wa_ska1 TO wa_zeile.
* dabei auch zugehörige Bezeichnungen füllen
READ TABLE it_skat INTO wa_skat WITH KEY
SPRAS = sy-langu KTOPL = wa_ska1-ktopl
SAKNR = wa_ska1-saknr.
IF sy-subrc = 0.
wa_zeile-TXT20 = wa_skat-TXT20.
wa_zeile-TXT50 = wa_skat-TXT50.
ENDIF.
ENDIF.
* gefüllte Zeile an Tabelle anhängen
APPEND wa_zeile TO it_tab.
ENDLOOP.
ENDFORM. " f_get_tables
So ähnlich muss es auch bei dem neuen Programm sein, bloß sind es diesmal 9 Tabellen^^. Ich hoffe du hast einige gute Ansätze oder ähnliche Programme, und kannst mir irgendwie behilflich sein. Falls du noch des Hauptprogramm, indem der Funktionsbaustein ALV enthalten ist, brauchst,(mit Deklarationen und Feldkatalog) kann ich dir diese gern senden. Oder die einzelnen Tabellennamen auch. Ich bedanke mich für deine großzügige Hilfe im Voraus.
Mit freundlichen Grüßen