Salut,
Tu fais partie de ceux pour lequel faire des ALV (SAP List Viewer) LVC te branche, mais le fait de devoir déclarer une structure dans le DDIC (Dictionnaire de Données) t'ennuie et devoir faire tout le boulot à la main te décourage.
Ce serait tellement plus simple si on pouvait fusionner les avantages des ALV LVC avec les avantages des ALV SLIS.
C'est ce que présente ce bout de traitement ci-dessous :
TYPE-POOLS : slis.
DATA : BEGIN OF s_message,
msg_type LIKE bapiret2-type,
message LIKE bapiret2-message,
END OF s_message.
DATA : t_message LIKE TABLE OF s_message.
DATA : t_fieldcat_slis TYPE slis_t_fieldcat_alv,
t_fieldcat_lvc TYPE lvc_t_fcat.
DATA : l_internal_tabname TYPE slis_tabname VALUE 'S_MESSAGE'.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
i_program_name = sy-repid
i_internal_tabname = l_internal_tabname
* I_STRUCTURE_NAME = I_STRUCTURE_NAME
* I_CLIENT_NEVER_DISPLAY = 'X'
I_INCLNAME = sy-repid
* I_BYPASSING_BUFFER = I_BYPASSING_BUFFER
* I_BUFFER_ACTIVE = I_BUFFER_ACTIVE
CHANGING
ct_fieldcat = t_fieldcat_slis
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.
CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS'
EXPORTING
it_fieldcat_alv = t_fieldcat_slis
* IT_SORT_ALV = IT_SORT_ALV
* IT_FILTER_ALV = IT_FILTER_ALV
* IS_LAYOUT_ALV = IS_LAYOUT_ALV
IMPORTING
et_fieldcat_lvc = t_fieldcat_lvc
* ET_SORT_LVC = ET_SORT_LVC
* ET_FILTER_LVC = ET_FILTER_LVC
* ES_LAYOUT_LVC = ES_LAYOUT_LVC
TABLES
it_data = t_message
EXCEPTIONS
it_data_missing = 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.
À partir de maintenant, on peut appeler la fonction REUSE_ALV_GRID_DISPLAY_LVC ou générer un ALV par le biais de la classe CL_GUI_ALV_GRID.