Alternativ: Bau dir den Fieldcat selbst zusammen, ist fast schneller bei 5 Feldern.Aufbau des Feldkatalogs aus Dictionarystruktur oder interner Tabelle
Funktionalität
Unterstützt den Aufbau des Feldkatalogs für die ALV-Funktionsbausteine. Der Aufbau erfolgt alternativ auf Basis einer im ABAP Data Dictionary definierten Struktur bzw. Tabelle oder einer programminternen Tabelle.
Code: Alles auswählen.
TYPES: BEGIN OF ty_ausg,
posid LIKE prps-posid,
objnr LIKE prps-objnr,
prart LIKE prps-prart,
stat LIKE jest-stat,
END OF ty_ausg.
CONSTANTS : rbselected TYPE c LENGTH 1 VALUE 'X'.
DATA: t_ausg TYPE TABLE OF ty_ausg WITH HEADER LINE, p_prart TYPE prps-prart, wa_ausg TYPE ty_ausg.
SELECTION-SCREEN BEGIN OF BLOCK para WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs TYPE bukrs OBLIGATORY.
SELECT-OPTIONS:
so_prart FOR p_prart.
SELECTION-SCREEN END OF BLOCK para.
SELECTION-SCREEN BEGIN OF BLOCK rbuttons WITH FRAME TITLE text-002.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 2.
PARAMETERS: rb1 RADIOBUTTON GROUP rb .
SELECTION-SCREEN COMMENT 5(30) text-003 .
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 2.
PARAMETERS: rb2 RADIOBUTTON GROUP rb.
SELECTION-SCREEN COMMENT 5(30) text-004.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK rbuttons.
*&---------------------------------------------------------------------*
*& Applikationslogik
*&---------------------------------------------------------------------*
IF rb1 = rbselected.
SELECT prps~posid prps~objnr prps~prart jest~stat
FROM prps JOIN jest ON prps~objnr = jest~objnr
INTO CORRESPONDING FIELDS OF TABLE t_ausg
WHERE prps~pbukr = p_bukrs
AND prps~prart IN so_prart
AND jest~inact <> 'X'
.
ENDIF.
IF rb2 = rbselected.
SELECT prps~posid prps~objnr prps~prart jest~stat
FROM prps JOIN jest ON prps~objnr = jest~objnr
INTO CORRESPONDING FIELDS OF TABLE t_ausg
WHERE prps~pbukr = p_bukrs
AND prps~prart IN so_prart
AND jest~inact = 'X'
.
ENDIF.
TYPE-POOLS: slis.
DATA lt_fcat TYPE slis_t_fieldcat_alv.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_internal_tabname = 'T_AUSG'
CHANGING
ct_fieldcat = lt_fcat.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_structure_name = space
it_fieldcat = lt_fcat
TABLES
t_outtab = t_ausg
EXCEPTIONS
program_error = 1
OTHERS = 2.
Kann mir das jemand erklären? Muss ich meinen Datentyp extern definieren und dann durch ein Include einbinden?Die programminterne Tabelle muss entweder in einem -TOP Inlcude stehen
oder das einschliessende Include muss explizit in der Schnittstelle
bekannt gegeben werden.
Code: Alles auswählen.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'T_AUSG'
i_incl_name = sy-repid
CHANGING
ct_fieldcat = lt_fcat.
Code: Alles auswählen.
DATA: t_ausg LIKE STANDARD TABLE OF ty_ausg.
Ich habe hier im System mal einige Programme nach der Reuse_alv... Funktion durchsucht und bin auf Code gestoßen, den ich mal ausprobieren werden.casman hat geschrieben:Ich glaub, das Beste ist wirklich, du legst dir die Struktur fix im DDIC an...das kostet dich ja hier immer mehr Zeit und Nerven.
EDIT: Eins kannste noch versuchen:
Code: Alles auswählen.
DATA: t_ausg LIKE STANDARD TABLE OF ty_ausg.
Code: Alles auswählen.
TYPE-POOLS: slis.
* Deklarationen
*ALV_GRID
DATA: lt_fcat TYPE slis_t_fieldcat_alv.
DATA: ls_fcat TYPE slis_fieldcat_alv.
DATA: gs_layout TYPE slis_layout_alv.
.
.
.
.
*&---------------------------------------------------------------------*
*& Form feldkatalog_fuellen
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM feldkatalog_fuellen.
CLEAR ls_fcat.
ls_fcat-fieldname = 'BEZEI'.
ls_fcat-seltext_l = 'Rückmeldungsart'.
APPEND ls_fcat TO lt_fcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'AUFNR'.
ls_fcat-seltext_l = 'Auftragsnummer'.
APPEND ls_fcat TO lt_fcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'VORNR'.
ls_fcat-seltext_l = 'Vorgangsnummer'.
APPEND ls_fcat TO lt_fcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'BUDAT'.
ls_fcat-seltext_l = 'Buchungsdatum'.
APPEND ls_fcat TO lt_fcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'ISMNW'.
ls_fcat-seltext_l = 'Istarbeit'.
APPEND ls_fcat TO lt_fcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'ISMNE'.
ls_fcat-seltext_l = 'Einheit der Arbeit'.
APPEND ls_fcat TO lt_fcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'KORRVM'.
ls_fcat-seltext_l = 'Korrekturvermerk'.
APPEND ls_fcat TO lt_fcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'AENDERER'.
ls_fcat-seltext_l = 'Aenderer'.
APPEND ls_fcat TO lt_fcat .
CLEAR ls_fcat.
ls_fcat-fieldname = 'DATUM'.
ls_fcat-seltext_l = 'Datum'.
APPEND ls_fcat TO lt_fcat .
ENDFORM. "feldkatalog_fuellen.
*&---------------------------------------------------------------------*
*& Form alv_fill
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM alv_fill.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_grid_title = 'Account'
it_fieldcat = lt_fcat
is_layout = gs_layout
i_save = 'A'
TABLES
t_outtab = gt_ausgabe
EXCEPTIONS
programm_error = 1
OTHERS = 2.
ENDFORM. "alv_fill
*& Form fieldcatalog_commit
*&
*&---------------------------------------------------------------------
FORM fieldcatalog_commit.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = 'GT_AUSGABE'
CHANGING
ct_fieldcat = lt_fcat
EXCEPTIONS
programm_error = 1
OTHERS = 2.
ENDFORM. "fieldcatalog_commit
*&---------------------------------------------------------------------*
*& Form layout
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->LS_LAYOUT text
*----------------------------------------------------------------------*
FORM layout USING ls_layout TYPE slis_layout_alv.
ls_layout-colwidth_optimize = 'X'.
ENDFORM. "layout