Liebe/-r Experte/-in,
Hallo,
ich stehe vor einem 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^^. Also hier:
Jeweils eine ALV-Liste mit den hier unten angegebn Tabellen-Feldnamen soll erscheinen.
1)T003-BLART T003T-LTEXT T003-NUMKR NRIV-FROMNUMBER NRIV-TONUMBER NRIV-NRLEVEL NRIV-EXTERNIND
2)T077D-KTOKD T077X-TXT30 T077D-NUMKR
3)T077K-KTOKK T077Y-TXT30 T077K-NUMKR NRIV (wieder die selben Felder wie oben)
4)T001S-BUSAB T001S-SNAME T001S-USNAM
*Radiobuttons
IF p_rad1 = ‚X‘.
ELSEIF p_rad2 = ‚X‘.
ELSEIF p_rad3 = ‚X‘.
ELSEIF p_rad4 = ‚X‘.
ENDIF.
Ein Parameter: Buchungskreis
zu den 4 Radiobutoons Auswahl:
- Radiobutton:
Belegarten/Nummernkreise
2)Debitoren Kontengruppen
*zusätzlich SELECT-OPTION um mehrere Debitoren Kontengruppen auszuwählen(soll rechts davon erscheinen)
3) Kreditoren Kontengruppen
*zusätzlich SELECT-OPTION um mehrere Kreditoren Kontengruppen auszuwählen(soll rechts davon erscheinen)
- Sachbearbeiter
Ich hoffe Sie haben einige gute Ansätze oder ähnliche Programme, und könnt mir irgendwie behilflich sein. Ich bedanke mich für Ihre großzügige Hilfe im Voraus.
Mit freundlichen Grüßen