Zwei interne Tabellen mit einem ALV ausgeben

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

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

Zwei interne Tabellen mit einem ALV ausgeben

Beitrag von ABAP_DEV (ForumUser / 7 / 0 / 0 ) »
Hallo zusammen,
ich habe ein Problem mit einem Report und komme nicht mehr weiter. Daher hätte ich gern ein paar Tipps.
Ich habe ein ALV-Tree mit 2 Tabellen als Knoten implementiert und will beim Klicken den Inhalte der Tabellen mit einem ALV anzeigen lassen. Da die Tabellen unterschiedlich sind, habe die Struktur der Tabellen dynamisch erzeugt. Aber jetzt weiß ich nicht, wie ich das Feldsymbol <lt_data> weiter verarbeiten kann , damit ich am Ende nur einen ALV für die Ausgabe der beiden Tabellen benutzen kann.

DATA: lt_user TYPE TABLE OF usr02,
lt_agr_users TYPE TABLE OF agr_users,
lt_dyn_fcat TYPE lvc_t_fcat,
ls_dyn_fcat TYPE lvc_s_fcat,
lt_field TYPE TABLE OF dfies,
lv_pos TYPE I,
lo_data TYPE REF TO DATA,
ls_line TYPE REF TO DATA.

FIELD-symbols: <lt_data> TYPE STANDARD TABLE,
<ls_data> TYPE ANY.

SELECT * FROM usr02 INTO TABLE lt_user.
SELECT * FROM agr_users INTO TABLE lt_agr_users.

IF <ls_node>-text = 'USR02'.

CALL FUNCTION 'DDIF_NAMETAB_GET'
EXPORTING
tabname = 'USR02'
TABLES
dfies_tab = lt_field .

LOOP AT lt_field ASSIGNING FIELD-SYMBOL(<ls_field_cat>).
lv_pos = lv_pos + 1.
ls_dyn_fcat-fieldname = <ls_field_cat>-fieldname.
ls_dyn_fcat-coltext = <ls_field_cat>-fieldtext.
ls_dyn_fcat-col_pos = lv_pos.
APPEND ls_dyn_fcat TO lt_dyn_fcat.
CLEAR ls_dyn_fcat.
ENDLOOP.

CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_dyn_fcat
IMPORTING
ep_table = lo_data.

ASSIGN lo_data->* TO <lt_data>.

LOOP AT lt_user INTO DATA(ls_user).
APPEND INITIAL LINE TO <lt_data> ASSIGNING FIELD-SYMBOL(<ls_new>).
MOVE-corresponding ls_user TO <ls_new>.
ENDLOOP.

******* Verarbeitung von <lt_data> für die Ausgabe ******

ELSEIF <ls_node>-text = 'AGR_USERS'.

ENDIF.

cl_salv_table=>factory( EXPORTING
r_container = lo_tab_right
IMPORTING
r_salv_table = lo_salv
CHANGING
t_table = <lt_data> ).

Vielen Dank

Viele Grüße

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


Re: Zwei interne Tabellen mit einem ALV ausgeben

Beitrag von a-dead-trousers (Top Expert / 4271 / 213 / 1140 ) »
Ich würde dir empfehlen, wenn du mit dyn. Strukturen/Tabellen arbeiten möchtest, dich gleich mit RTTI bzw. RTTC vertraut zu machen. Das ist einfach flexibler und zukunftssicherer.
Die Methode CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE verwendet die "alte" Subroutinen-Technik und kann nur max. 36 Datenobjekte verwalten (siehe GENERATE SUBROUTINE POOL).

Für den dyn. Zugriff auf einzelne Komponenten einer Struktur gibt es ASSIGN COMPONENT ... OF STRUCTURE ... TO ...
Im Falle einer Tabelle kannst du "unstrukturiert" mit Datentyp ANY in einem LOOP AT ... oder READ TABLE ... INDEX ... auf die Zeilen zugreifen und dann eben mit obigem Befehl die einzelnen Felder ansprechen.

Warum du für deine Darstellung nun eine dyn. Tabelle brauchts erschließt sich mir aber nicht ganz.
Wenn du eh weist von welchem Typ deine Zeilen sind, kannst du ja dein SALV ein Mal mit der einen Struktur und ein anderes Mal mit der anderen aufrufen.

lg ADT

P.S.: SALV verwendet intern RTTI um den Feldkatalog für das ALV-Grid dyn. aufzubauen.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Zwei interne Tabellen mit einem ALV ausgeben

Beitrag von ABAP_DEV (ForumUser / 7 / 0 / 0 ) »
Hi ADT,
Danke dir für deine Antwort.
Das Problem ist dass jede interne Tabellen seine eigene Struktur hat. Ich habe versucht, das Problem mit 2 AVL, leider hat das nicht geklappt.
Unbenannt.PNG

Re: Zwei interne Tabellen mit einem ALV ausgeben

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Du brauchst doch nur die Tabelle austauschen.
Beispielprogramm - musst nur einen PF-STatus anlegen mit FCode XXX

Code: Alles auswählen.

REPORT.
DATA: mo_salv TYPE REF TO cl_salv_table.

END-OF-SELECTION.
  SELECT *
    FROM t000
  INTO TABLE @DATA(gt_t000).
  SELECT *
    FROM t001
  INTO TABLE @DATA(gt_t001).

  cl_salv_table=>factory( EXPORTING
                            r_container    = cl_gui_container=>screen0
                          IMPORTING
                            r_salv_table   = mo_salv
                          CHANGING
                            t_table        = gt_t000 ).

  mo_salv->display( ).
  WRITE :/ '.'.
  SET PF-STATUS 'XXX'.

AT USER-COMMAND.
  mo_salv->set_data( CHANGING t_table =  gt_t001 ).
  mo_salv->refresh( ).
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Re: Zwei interne Tabellen mit einem ALV ausgeben

Beitrag von ABAP_DEV (ForumUser / 7 / 0 / 0 ) »
Hi Black_adept,
danke für deine Antwort. Dein Programm sieht viel versprechend. Aber wie würde das aussehen, wenn man anstatt SET PF-STATUS, Handler (zB. Anzeige durch doppelklick) benutzen würde. Beispiel: SET HANDLER lcl_events=>on_double_click FOR o_tree, um von einer Tabelle auf die andere zu springen..

Viele Grüße

Re: Zwei interne Tabellen mit einem ALV ausgeben

Beitrag von black_adept (Top Expert / 3943 / 105 / 886 ) »
Sollte genau so funktionieren - PF-Status habe ich nur genommen weil man so schnell ein Demoprogramm zusammenbekommt.
Es gibt ein Problem wenn man auf einen Doppelklick im Grid den Event nicht vollständig abarbeitet und im Eventhandling noch mal groß was am Grid rumfummeln möchte ohne den Event vollständig durchlaufen zu haben. Aber da dein Eventhandler am Tree und nicht am Grid registriert zu sein scheint sollte das ohne Weiteres funktionieren.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Seite 1 von 1

Vergleichbare Themen

3
Antw.
409
Views
2
Antw.
15151
Views
Zwei interne Tabellen zusammenführen
von _Manfred_ » 28.04.2005 13:57 • Verfasst in ABAP® für Anfänger
10
Antw.
8393
Views
zwei interne Tabellen zusammenführen => ALV
von Mark33 » 22.08.2012 07:00 • Verfasst in ABAP® für Anfänger
6
Antw.
3512
Views
Zwei interne Tabellen verarbeiten
von gogi » 20.11.2007 11:14 • Verfasst in ABAP® für Anfänger
3
Antw.
374
Views
Zwei Rechnungsformulare in einem PDF ausgeben
von deejey » 01.07.2022 06:16 • Verfasst in ABAP® Core

Ü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

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

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.

Aktuelle Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Interne Tabelle
vor 5 Tagen von black_adept 2 / 133
MaLo-Checker in ABAP
vor einer Woche von A6272 6 / 254

Unbeantwortete Forenbeiträge

Zwischensumme Adobe Forms
vor 3 Tagen von Lucyalison 1 / 64
Group Items auf einer Filterbar
vor einer Woche von Bright4.5 1 / 107
tRFC Transaktionen SM58
vor 4 Wochen von A6272 1 / 140