Il existe plusieurs façons d'utiliser ALV, nous pouvons donc avoir besoin de plus d'informations sur votre code pour vous aider.
- La première méthode consiste à utiliser le module de fonction REUSE_ALV_GRID_DISPLAY. Cela affichera directement le contenu de la table dans la sortie dynpro. Si tout ce dont vous avez besoin est un affichage, alors allez-y, car c'est le plus simple: Si la structure de la table est dans le dictionnaire, cet appel peut être aussi simple que ceci (ceci affichera tous les membres de la structure comme
myreport = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = myreport
it_excluding = exclude_tab
TABLES
t_outtab = display_data
EXCEPTIONS
program_error = 1
OTHERS = 2.
Si la structure est déclarée dans le programme, vous devez créer un catalogue sur le terrain. le code suivant peut servir de base:
FORM fill_fieldcat CHANGING p_fieldcat TYPE slis_t_fieldcat_alv.
* Data definition
DATA ls_fieldcat TYPE slis_fieldcat_alv.
* Macro definition
DEFINE append_fieldcat.
clear ls_fieldcat.
ls_fieldcat-fieldname = &1. * name of the field in struct
ls_fieldcat-tabname = &2. * name of the table
ls_fieldcat-row_pos = &3. * column
ls_fieldcat-ref_fieldname = &4. * field in ref table
ls_fieldcat-ref_tabname = &5. * ref table
ls_fieldcat-outputlen = &6. * size of output
ls_fieldcat-seltext_m = &7. * text (space if using the element typetext)
ls_fieldcat-ddictxt = 'M'.
ls_fieldcat-key = &8. * is this a key field in table
ls_fieldcat-emphasize = &9. * emphisze column display
append ls_fieldcat to p_fieldcat.
END-OF-DEFINITION.
* Init.
REFRESH p_fieldcat.
* Append fielcatalog for ALV
append_fieldcat:
'FORMATIONCODE' 'DISPLAY_TAB' 1 'SHORT' 'HRP1000' 12 'Code Stage' space space,
'FORMATIONTEXT' 'DISPLAY_TAB' 1 'STEXT' 'HRP1000' 20 'Libelle Stage' space space,
'SESSIONID' 'DISPLAY_TAB' 1 'OBJID' 'HRP1000' space 'Session' space space,
'BEGDA' 'DISPLAY_TAB' 1 'BEGDA' 'HRP1000' space 'Debut' space space,
'ENDDA' 'DISPLAY_TAB' 1 'BEGDA' 'HRP1000' space 'Fin' space space,
ENDFORM. "fill_fieldCat
vous appelez alors le formulaire pour créer le catalogue sur le terrain, et l'utiliser dans le paramètre it_fieldcat de l'appel de fonction.
- La deuxième méthode consiste à utiliser ABAP-Object. Utilisez le contrôle se83 pour des exemples de cette utilisation. la base est la suivante:
Dans votre Dynpro, vous déclarez un conteneur personnalisé avec un nom donné ("ALV_CONT"). Puis, alors PBO du dynpro vous initialisez le récipient et mettre un objct ALV intérieur:
* global variables :
DATA : delegationlist_table TYPE REF TO cl_gui_alv_grid,
delegationlist_container TYPE REF TO cl_gui_custom_container.
data : gs_layout TYPE lvc_s_layo.
dans PBO
IF delegationlist_container IS INITIAL.
* create a custom container control for our ALV Control
CREATE OBJECT delegationlist_container
EXPORTING
container_name = 'ALV_CONT'
EXCEPTIONS
cntl_error = 1
cntl_system_error = 2
create_error = 3
lifetime_error = 4
lifetime_dynpro_dynpro_link = 5.
* create an instance of alv control
CREATE OBJECT delegationlist_table
EXPORTING
i_parent = delegationlist_container.
* Set a titlebar for the grid control
gs_layout-grid_title = 'Délégations'.
gs_layout-sel_mode = 'A'.
gs_layout-cwidth_opt ='X'.
* set table as data source
* the struct name *must* be uppercase
* the table must have this struc
CALL METHOD delegationlist_table->set_table_for_first_display
EXPORTING
i_structure_name = 'ZPRT_DELEGATIONLIST'
is_layout = gs_layout
CHANGING
it_outtab = delegationlist.
ENDIF.
espère que cette aide,
Cordialement
Guillaume PATRY
Quel module fonction appelez-vous? – BenV
Vous devriez toujours fournir un exemple de code si possible, cela aurait rendu la réponse beaucoup plus facile. – vwegert