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.
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.
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.
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
.
Kopfzeile im Feldkatalog hat nichts mit der Anzeige der Feldnamen zu tun!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!
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
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
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...Was mir aber bei deinem Coding auffällt ist, dass die int. Tabelle bei "...MERGE" 'TY_PROT' heißt - beim Anzeigen hingegen "IIT_PROT"
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.