Anzeige einer Internen Tabelle ueber REUSE_ALV_GRID_DISPLAY

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

Alles rund um die Sprache ABAP®: Funktionsbausteine, Listen, ALV
13 Beiträge • Seite 1 von 1
13 Beiträge Seite 1 von 1

Anzeige einer Internen Tabelle ueber REUSE_ALV_GRID_DISPLAY

Beitrag von Gast ( / / 0 / 3 ) »
Hallo zusammen,

ich moechte gerne den Inhalt einer internen Tabelle ueber den FB 'REUSE_ALV_GRID_DISPLAY' ausgeben.
Sowohl interne Tabelle als auch Feldkatalog sind gefuellt, aber dennoch wird nur eine leere, einspaltige ALV-Liste angezeigt.

Hier mein Code:

Code der Include-Datei 'Z_FELDKATALOGTOP':

Code: Alles auswählen.

TYPE-POOLS: slis.

DATA:    BEGIN OF ty_adresse,
           name(30)      TYPE c,
           vorname(30)   TYPE c,
           strassenr(30) TYPE c,
           plz(5)        TYPE n,
           ort(30)       TYPE c,
         END OF ty_adresse.

DATA: git_adresse  LIKE STANDARD TABLE OF ty_adresse,
      gwa_adresse  LIKE LINE OF git_adresse,
      git_fieldcat TYPE slis_t_fieldcat_alv,
      gvc_repid    LIKE sy-repid.
Hier wird die interne Tabelle gefuellt:

Code: Alles auswählen.

  gwa_adresse-name      = 'Muster'.
  gwa_adresse-vorname   = 'Marion'.
  gwa_adresse-strassenr = 'Musterstrasse 1'.
  gwa_adresse-plz       = 98765.
  gwa_adresse-ort       = 'Musterstadt'.
  APPEND gwa_adresse TO git_adresse.
Hier werden Feldkatalog und ALV-Liste erstellt:

Code: Alles auswählen.

* --- Feldkatalog fuer ALV-Liste erstellen
  PERFORM get_fieldcatalog CHANGING git_fieldcat.

* --- Daten der internen Tabelle in ALV-Liste ausgeben
  PERFORM show_data TABLES git_adresse[]
                    USING  git_fieldcat.

FORM get_fieldcatalog CHANGING cit_fieldcat.

  gvc_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               = gvc_repid
      i_internal_tabname           = 'GIT_ADRESSE'
      i_inclname                   = 'Z_FELDKATALOGTOP'
    CHANGING
      ct_fieldcat                  = cit_fieldcat
            .
ENDFORM.


FORM show_data TABLES iit_adresse
               USING  iit_fieldcat.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
  EXPORTING
    it_fieldcat                       = iit_fieldcat
  TABLES
    t_outtab                          = iit_adresse
            .
ENDFORM.
Beim Aufruf des Unterprogramms show_data sind sowohl Interne Tabelle als auch der Feldkatalog gefuellt, dennoch wird danach nur eine einspaltige leere ALV-Liste angezeigt.

Woran koennte das denn liegen? :?:

Gruss
Charadin

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


Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
hmm, bin mir nun doch nicht sicher, ob der Feldkatalog richtig gefüllt ist, da unter "fieldname" nur "STANDARD" steht - aber sollten da nicht die Feldnamen der internen Tabelle stehen?

Vielleicht liegt der fehler also doch beim Feldkatalog und nicht beim FB zur ALV-List-Ausgabe...
Gruß,
Charadin

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
habe jetzt den FB für den Feldkatalog verändert:

Code: Alles auswählen.

CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    i_program_name               = gvc_repid
    i_internal_tabname           = 'TY_ADRESSE'
    i_inclname                   = 'Z_FELDKATALOGTOP'
  CHANGING
    ct_fieldcat                  = cit_fieldcat
          . 
Jetzt ist der Feldkatalog richtig gefüllt, und auch der Inhalt der internen Tabelle wird ausgegeben, aber leider werden trotz gefülltem Feldkatalog keine Feldnamen in der ALV-Liste angezeigt.

Woran könnte das denn jetzt liegen?
Gruß,
Charadin

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
bin jetzt selber auf den Fehler gekommen:

Der über den FB "REUSE_ALV_FIELDCATALOG_MERGE" erstellte Feldkatalog besitzt keine Kopfzeile.
Wenn man also noch einen Kopfzeilenersatz deklariert, werden auch die Feldnamen angezeigt.

Irgendwie etwas umständlich, das ganze, aber zumindest funktioniert es jetzt! :D
Gruß,
Charadin

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Charadin hat geschrieben:bin jetzt selber auf den Fehler gekommen:

Der über den FB "REUSE_ALV_FIELDCATALOG_MERGE" erstellte Feldkatalog besitzt keine Kopfzeile.
Wenn man also noch einen Kopfzeilenersatz deklariert, werden auch die Feldnamen angezeigt.

Irgendwie etwas umständlich, das ganze, aber zumindest funktioniert es jetzt! :D
Kopfzeile im Feldkatalog hat nichts mit der Anzeige der Feldnamen zu tun!
Davon abgesehen - der Feldkatalog der von "REUSE_ALV_FIELDCATALOG_MERGE" gefüllt wird muss vorher von dir definiert werden. Und ob dieser nun eine Kopfzeile (wofür auch immer) hat oder nicht liegt an deiner Definition und nicht am FB.
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Hallo Stefan,

danke für Deine Antwort, aber wie muss ich denn den Feldkatalog definieren, damit mir auch ohne Kopfzeile die Feldnamen angezeigt werden? :?:
Gruß,
Charadin

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Was wird denn angezeigt? Unbeschriftete Überschriften der Spalten?
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Wenn ich die Kopfzeile nicht extra deklariere, wird zwar der Inhalt der internen Tabelle angezeigt, aber keine Feldnamen, d.h. die Spalten sind nicht beschriftet...
Gruß,
Charadin

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Poste oder PM mir mal den Quelltext von
a) Aufruf von "REUSE...MERGE"
und
b) Aufruf von "REUSE...DISPLAY"
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Hier der Aufruf von REUSE_ALV_FIELDCATALOG_MERGE:

Code: Alles auswählen.

* --- Feldkatalog fuellen.
PERFORM get_fieldcatalog CHANGING git_fieldcat.

...

FORM get_fieldcatalog CHANGING cit_fieldcat.

  DATA: vc_repid LIKE sy-repid.

  vc_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               = vc_repid
      i_internal_tabname           = 'TY_PROT'
*     I_STRUCTURE_NAME             =
*     I_CLIENT_NEVER_DISPLAY       = 'X'
      i_inclname                   = 'ZMIG_DEL_TABLESTOP'
*     I_BYPASSING_BUFFER           =
*     I_BUFFER_ACTIVE              =
    CHANGING
      ct_fieldcat                  = cit_fieldcat
*   EXCEPTIONS
*     INCONSISTENT_INTERFACE       = 1
*     PROGRAM_ERROR                = 2
*     OTHERS                       = 3
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    "feldkatalog_fuellen
Hier der Aufruf von REUSE_ALV_GRID_DISPLAY:

Code: Alles auswählen.

* --- Ausgabe ALV-Liste
PERFORM show_data TABLES git_prot[]
                  USING  git_fieldcat gst_layout.

...

FORM show_data TABLES iit_prot
               USING  iit_fieldcat ist_layout.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
     EXPORTING
*     I_INTERFACE_CHECK                 = ' '
*     I_BYPASSING_BUFFER                = ' '
*     I_BUFFER_ACTIVE                   = ' '
*     I_CALLBACK_PROGRAM                = ' '
*     I_CALLBACK_PF_STATUS_SET          = ' '
*     I_CALLBACK_USER_COMMAND           = ' '
*     I_CALLBACK_TOP_OF_PAGE            = ' '
*     I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*     I_CALLBACK_HTML_END_OF_LIST       = ' '
*     I_STRUCTURE_NAME                  =
*     I_BACKGROUND_ID                   = ' '
      i_grid_title                  = 'Folgende Daten wurden gelöscht: '
*     I_GRID_SETTINGS                   =
       is_layout                         = ist_layout
       it_fieldcat                       = iit_fieldcat
*     IT_EXCLUDING                      =
*     IT_SPECIAL_GROUPS                 =
*     IT_SORT                           =
*     IT_FILTER                         =
*     IS_SEL_HIDE                       =
*     I_DEFAULT                         = 'X'
*     I_SAVE                            = ' '
*     IS_VARIANT                        =
*     IT_EVENTS                         =
*     IT_EVENT_EXIT                     =
*     IS_PRINT                          =
*     IS_REPREP_ID                      =
*     I_SCREEN_START_COLUMN             = 0
*     I_SCREEN_START_LINE               = 0
*     I_SCREEN_END_COLUMN               = 0
*     I_SCREEN_END_LINE                 = 0
*     IT_ALV_GRAPHICS                   =
*     IT_HYPERLINK                      =
*     IT_ADD_FIELDCAT                   =
*     IT_EXCEPT_QINFO                   =
*     I_HTML_HEIGHT_TOP                 =
*     I_HTML_HEIGHT_END                 =
*   IMPORTING
*     E_EXIT_CAUSED_BY_CALLER           =
*     ES_EXIT_CAUSED_BY_USER            =
    TABLES
      t_outtab                          =  iit_prot
*   EXCEPTIONS
*     PROGRAM_ERROR                     = 1
*     OTHERS                            = 2
            .
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
         WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

ENDFORM.                    "show_data
Gruß,
Charadin

Beitrag von black_adept (Top Expert / 4159 / 136 / 960 ) »
Hi Charadin,

ich gestehe, dass ich wg. diverser Mankos ( und vielleicht muss man ja auch der von dir hier beschriebenen Fall dazu zählen )den 'REUSE_ALV_FIELDCATALOG_MERGE' nicht mehr für interne Tabellen benutze, die nicht im Wesentlichen über ein DDIC-Struktur definiert werden. Da seit Release 4.6 auch der "Bypassing Buffer"-Schalter eingebaut ist ist dies die m.E. einfachste Möglichkeit ALV anzuzeigen. Wenn ich eine ALV-Ausgabe machen möchte definiere ich mir inzw. fast immer eine Struktur (Programmname_ALV) und alles wird schön einfach...

Was mir aber bei deinem Coding auffällt ist, dass die int. Tabelle bei "...MERGE" 'TY_PROT' heißt - beim Anzeigen hingegen "IIT_PROT"
live long and prosper
Stefan Schmöcker

email: stefan@schmoecker.de

Beitrag von Charadin (Specialist / 148 / 0 / 0 ) »
Was mir aber bei deinem Coding auffällt ist, dass die int. Tabelle bei "...MERGE" 'TY_PROT' heißt - beim Anzeigen hingegen "IIT_PROT"
Zuerst habe ich auch versucht, bei i_internal_tabname direkt den Namen der internen Tabelle anzugeben, aber da kam dann immer nur ein leerer bzw. falsch gefüllter Feldkatalog zurück. Als ich dann den Datentyp angegeben habe, war der Feldkatalog plötzlich richtig gefüllt...
Gruß,
Charadin

Re: LÖSUNG REUSE_ALV_GRID_DISPLAY

Beitrag von Urdestiny (ForumUser / 6 / 0 / 0 ) »
Hallo Leute,

Dieses Forum hat mir schon soviel weitergeholfen, dass ich heute endlich mal etwas zurück geben möchte.
Ich habe mich jetzt lange mit genau diesem Thema auseinander gesetzt und habe die Lösung für das erstellen des FACT aus einer
internen Tabelle.

Das kleine Testprogramm kann man einfach kopieren und laufen lassen.
Geschrieben habe ich es NUR um den FUBA REUSE_ALV_FIELDCATALOG_MERGE in die Gänge zu bringen.

Code: Alles auswählen.



REPORT  Z_TEST_PROG_3.

TYPE-POOLS: SLIS.

DATA: BEGIN OF IT_MARA OCCURS 0,
        MATNR LIKE MARA-MATNR,
        ERSDA LIKE MARA-ERSDA,
        ERNAM LIKE MARA-ERNAM,          
        MTART LIKE MARA-MTART,
        MEINS LIKE MARA-MEINS,
        BSTME LIKE MARA-BSTME,
      END OF IT_MARA.

DATA: IT_FCAT TYPE SLIS_T_FIELDCAT_ALV.          
SELECT MATNR ERSDA ERNAM MTART MEINS BSTME UP TO 10 ROWS      
 INTO TABLE IT_MARA                                                   
  FROM MARA.


CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
  EXPORTING
    I_PROGRAM_NAME               = SY-REPID                   
    I_INTERNAL_TABNAME           = 'IT_MARA'                
*   I_STRUCTURE_NAME             =
*   I_CLIENT_NEVER_DISPLAY       = 'X'
    I_INCLNAME                   = SY-REPID                       
*   I_BYPASSING_BUFFER           =
*   I_BUFFER_ACTIVE              =
  CHANGING
    CT_FIELDCAT                  = IT_FCAT
 EXCEPTIONS
   INCONSISTENT_INTERFACE       = 1
   PROGRAM_ERROR                = 2
   OTHERS                       = 3
          .

IF SY-SUBRC <> 0.
  MESSAGE 'FEHLER' TYPE 'I'.
ENDIF.




Der Feldkatalog ist danach mit den Feldern aus der internen Tabelle gefüllt.
Der Aufruf mit DISPLAY fehlt jetzt noch, aber das sollte ja dann kein Problem mehr sein .

Bevor der sy-subrc geprüft wird, einfach nen Breakpoint setzen, dann kann man sich im Debugger den FCAT anschauen :-)

Zum Thema Tabellen und Deklaration, mit OCCURS sollte man nicht unbedingt arbeiten wenn man Objektorientiert programmiert.

Gruß an alle und ein Dankeschön an die, die sich mit dem Thema befasst haben.

Seite 1 von 1

Vergleichbare Themen

6
Antw.
9314
Views
Checkbox-Inhalt bei REUSE-ALV-GRID-DISPLAY-LVC
von Ucke » 19.11.2006 21:18 • Verfasst in ABAP® Core
1
Antw.
5193
Views
Page up and down im REUSE-ALV-Grid
von sapdepp » 24.08.2011 12:11 • Verfasst in ABAP® Core
1
Antw.
1740
Views
Verschachtete Tabelle im REUSE-ALV?
von supermario73 » 03.08.2006 12:20 • Verfasst in ABAP® Core
3
Antw.
26236
Views
SAP GUI 800 Patch 8 - ALV Grid - bei Anzeige nicht ausgegraut
von qyurryus » 29.07.2024 09:39 • Verfasst in SAP - Allgemeines

Ü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

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.