Bonjour,

Je suis entrain de créer un ALV grid simple et Objet, mais j 'aimerai comprendre ce que je fais.

Dans le code que je vous ai mi il y a une premiere partie celle qe j ai mi en rouge qui est la déclaration des tables internes. ce que je comprends pas c'est que j'ai exécuter le prog en les mettant en commentaire et le prog fonctionne ???

Et peut on m'expliquer les déclaration de l'alv objet et l'alv grid classique ?

Et j'aimerai savoir à quoi sert la déclaration de c'est 2 tables internes (mis en bleu ) alors qu'il y a déja eu des déclarations de tables internes plus haut.

PS: ce code est un exemple que j ai récupéré sur un site et j'essaie de le comprendre

Ceci est un INCLUDE de DATA
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36

DATA: i_pa0001 TYPE TABLE OF pa0001.
DATA: s_pa0001 LIKE pa0001.

TYPES: BEGIN OF t_data,
      pernr LIKE pa0001-pernr,
      bukrs LIKE pa0001-bukrs,
      werks LIKE pa0001-werks,
      btrtl LIKE pa0001-btrtl,
      END OF t_data.


DATA: i_data TYPE TABLE OF t_data.

* Affichage ALV grid Objet  **********************************

DATA:       alviewer         TYPE REF TO cl_gui_alv_grid.

DATA:
           go_alv       TYPE REF TO cl_gui_alv_grid,
*          go_alv_eh    TYPE REF TO lcl_alv_eh,
            go_container TYPE REF TO cl_gui_custom_container,
            gs_variant   TYPE disvariant,
            gs_layout    TYPE lvc_s_layo.

DATA:       gt_fcat      TYPE lvc_t_fcat.
DATA: s_restab TYPE zsrestab.
DATA: i_restab TYPE  STANDARD TABLE OF zsrestab.

* Affichage ALV GRID Classique  *******************************

TYPE-POOLS : slis.

DATA: fieldcat TYPE slis_t_fieldcat_alv WITH HEADER LINE.
data: IT_SORT TYPE  SLIS_T_SORTINFO_ALV with header line.



Ceci est un INCLUDE pour les routines

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
*&---------------------------------------------------------------------*
*&      Form  F1_LECTURE_DONNEES
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM f1_lecture_donnees .

*Charger l'IT0001

  SELECT *
         FROM pa0001
         INTO CORRESPONDING FIELDS OF TABLE i_restab
         WHERE pernr = '283'.

ENDFORM.                    " F1_LECTURE_DONNEES
*&---------------------------------------------------------------------*
*&      Form  EDITION_ALV_OBJET
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM edition_alv_objet .

  CALL SCREEN 100.


ENDFORM.                    " EDITION_ALV_OBJET




*&---------------------------------------------------------------------*
*&      Module  init_scr_100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE init_scr_100 OUTPUT.

* Ce module se charge d'afficher le resultat dejà extrait sous forme ALV


  PERFORM field_catalog.

  PERFORM create_alv_container.

  PERFORM create_alv_grid.

  PERFORM create_variant_event.

  PERFORM display_alv.


ENDMODULE.                 " init_scr_100  OUTPUT
*&---------------------------------------------------------------------*
*&      Form  create_alv_container
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_alv_container .

  CREATE OBJECT go_container
    EXPORTING
      container_name              = 'ALV_GRID'
    EXCEPTIONS
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5
      OTHERS                      = 6.


ENDFORM.                    " create_alv_container
*&---------------------------------------------------------------------*
*&      Form  field_catalog
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM field_catalog .

  CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
    EXPORTING
      i_buffer_active        = 'X'
      i_structure_name       = 'ZSRESTAB'
    CHANGING
      ct_fieldcat            = gt_fcat
    EXCEPTIONS
      inconsistent_interface = 1
      program_error          = 2
      OTHERS                 = 3.



ENDFORM.                    " field_catalog
*&---------------------------------------------------------------------*
*&      Form  create_alv_grid
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_alv_grid .


  CREATE OBJECT go_alv
    EXPORTING
*    I_SHELLSTYLE      = 0
*    I_LIFETIME        =
      i_parent          = go_container
*    I_APPL_EVENTS     = space
*    I_PARENTDBG       =
*    I_APPLOGPARENT    =
*    I_GRAPHICSPARENT  =
*    I_NAME            =
*  EXCEPTIONS
*    ERROR_CNTL_CREATE = 1
*    ERROR_CNTL_INIT   = 2
*    ERROR_CNTL_LINK   = 3
*    ERROR_DP_CREATE   = 4
*    others            = 5
      .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.



*  CREATE OBJECT go_alv
*    EXPORTING
*      i_parent          = go_container
**      i_grid_id         = p_gr  idid
**      i_toolbar_manager = p_tbm
**      i_optimize_output = p_optim
*    EXCEPTIONS
*      error_cntl_create = 1
*      error_cntl_init   = 2
*      error_cntl_link   = 3
*      error_dp_create   = 4
*      grid_id_invalid   = 5
*      OTHERS            = 6.


ENDFORM.                    " create_alv_grid
*&---------------------------------------------------------------------*
*&      Form  create_variant_event
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM create_variant_event .

* Variant-report has to be set otherwise saving of the toolbar
* state is not possible
  gs_variant-report    = sy-repid.


ENDFORM.                    " create_variant_event
*&---------------------------------------------------------------------*
*&      Form  display_alv
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM display_alv .

  CALL METHOD go_alv->set_table_for_first_display
    EXPORTING
      i_save                        = 'A'
      is_variant                    = gs_variant
      is_layout                     = gs_layout
    CHANGING
      it_outtab                     = i_restab
      it_fieldcatalog               = gt_fcat
    EXCEPTIONS
      invalid_parameter_combination = 1
      program_error                 = 2
      too_many_lines                = 3
      OTHERS                        = 4.


ENDFORM.                    " display_alv
*&---------------------------------------------------------------------*
*&      Module  STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
  SET PF-STATUS 'ZSSA'.
  SET TITLEBAR 'ZSSA'.

ENDMODULE.                 " STATUS_0100  OUTPUT
*&---------------------------------------------------------------------*
*&      Module  USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
  CASE sy-ucomm.

    WHEN 'EXIT'.
      LEAVE PROGRAM.
    WHEN 'CANCEL'.
      LEAVE TO SCREEN 0.
    WHEN 'BACK'.

      LEAVE TO SCREEN 0.
  ENDCASE.
ENDMODULE.                 " USER_COMMAND_0100  INPUT
*&---------------------------------------------------------------------*
*&      Form  EDITION_ALV_GRID
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form EDITION_ALV_GRID .

* fieldcatalog for revi-information
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_program_name         = sy-repid
            i_internal_tabname     = 'I_RESTAB'
           i_structure_name       = 'ZSRESTAB'
           I_CLIENT_NEVER_DISPLAY = 'X'
       CHANGING
            ct_fieldcat            = fieldcat[]
       EXCEPTIONS
             inconsistent_interface = 1
             program_error          = 2
             OTHERS                 = 3.

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                      =
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         =
   IT_FIELDCAT                       = fieldcat[]
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
   IT_SORT                           = 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                          = i_restab
* 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.                    " EDITION_ALV_GRID
*&---------------------------------------------------------------------*
*&      Form  EDITION_CLASSIQUE
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
form EDITION_CLASSIQUE .



* fieldcatalog for revi-information
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
       EXPORTING
            i_program_name         = sy-repid
            i_internal_tabname     = 'I_RESTAB'
           i_structure_name       = 'ZSRESTAB'
           I_CLIENT_NEVER_DISPLAY = 'X'
       CHANGING
            ct_fieldcat            = fieldcat[]
       EXCEPTIONS
             inconsistent_interface = 1
             program_error          = 2
             OTHERS                 = 3.



  CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
       EXPORTING
*            i_callback_program       = sy-repid
*            i_callback_pf_status_set = 'SET_PF_STATUS'
*            i_callback_user_command  = 'USER_COMMAND_DETAILLISTE'
*           I_STRUCTURE_NAME         =
*           is_layout                = layout
            it_fieldcat              = fieldcat[]
*           IT_EXCLUDING             =
*           IT_SPECIAL_GROUPS        =
            IT_SORT                  = it_sort[]
*           IT_FILTER                =
*           IS_SEL_HIDE              =
*            i_default                = 'X'
*            i_save                   = 'A'
*            is_variant               = variante
*            it_events                = events[]
*            it_event_exit            = self_ucomm[]         "1999/10/01
*           IS_PRINT                 =
*           I_SCREEN_START_COLUMN    = 0
*           I_SCREEN_START_LINE      = 0
*           I_SCREEN_END_COLUMN      = 0
*           I_SCREEN_END_LINE        = 0
*      IMPORTING
*           E_EXIT_CAUSED_BY_CALLER  =
       TABLES
            t_outtab                 = i_restab[]
       EXCEPTIONS
            program_error            = 1
            OTHERS                   = 2.


endform.                    " EDITION_CLASSIQUE