Code: Alles auswählen.
REPORT zread_fcat_background.
PARAMETERS: p_repid TYPE disvariant-report OBLIGATORY,
p_handle TYPE disvariant-handle OBLIGATORY,
p_user TYPE disvariant-username,
p_vari TYPE disvariant-variant OBLIGATORY,
p_struct TYPE dd02l-tabname OBLIGATORY.
DATA: lt_fcat TYPE SLIS_T_FIELDCAT_ALV,
ls_variant TYPE disvariant,
lv_user_specific TYPE flag.
END-OF-SELECTION.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_struct
i_bypassing_buffer = 'X'
CHANGING
ct_fieldcat = lt_fcat
EXCEPTIONS
inconsistent_interface = 1
program_error = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE 'Fehler spot 1' TYPE 'I' DISPLAY LIKE 'E'.
STOP.
ENDIF.
ls_variant = VALUE #( report = p_repid
handle = p_handle
variant = p_vari
username = p_user
).
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
i_save = 'A'
CHANGING
cs_variant = ls_variant
EXCEPTIONS
wrong_input = 1
not_found = 2
program_error = 3
OTHERS = 4.
IF sy-subrc <> 0.
MESSAGE 'Fehler spot 2' TYPE 'I' DISPLAY LIKE 'E'.
STOP.
ENDIF.
IF ls_variant-username IS INITIAL.
lv_user_specific = space.
ELSE.
lv_user_specific = 'X'.
ENDIF.
CALL FUNCTION 'REUSE_ALV_VARIANT_SELECT'
EXPORTING
i_dialog = ' '
i_user_specific = lv_user_specific
it_default_fieldcat = lt_fcat
i_layout = VALUE slis_layout_alv( )
IMPORTING
et_fieldcat = lt_fcat
CHANGING
cs_variant = ls_variant
EXCEPTIONS
wrong_input = 1
fc_not_complete = 2
not_found = 3
program_error = 4
OTHERS = 5.
BREAK-POINT .
LT_DBDATA_READ_FROM_LTDX ist schon OK, aber du musst die Rückgabetabelle noch filtern: Wenn in der Spalte PARAM der Wert 'NO_OUT' und in der Spalte VALUE der Wert 'X' steht ist dieses Feld von der Anzeige ausgenommen.bapimueller hat geschrieben: ↑26.09.2024 16:58Mit welchem Fuba oder Methode kann ich mir die Felder der ausgewählten Variante auslesen? Der Fuba 'LT_DBDATA_READ_FROM_LTDX' liefert mir alle möglichen Felder zurück, obwohl ich IS_VARKEY entsprechend mit der RepID und der Variante versorge.
Folgende Benutzer bedankten sich beim Autor whaslbeck für den Beitrag:
bapimueller