September 07, 2010     | Register
  
01

je vous propose ici une manière rapide de faire un ALVGRID rapidement en utilisant la RFC REUSE_ALV_GRID_DISPLAY. Pour cela on a les étapes suivantes :

 

  1. On déclare les objets (types) spécifiques à la RFC REUSE_ALV_GRID_DISPLAY.
  2. On charge notre table interne.
  3. On créée le catalogue de nos colonnes et champs correspondants à notre table interne.
  4. On définit notre layout.
  5. On appelle la RFC REUSE_ALV_GRID_DISPLAY pour afficher l'ALV

 

Voici le code



REPORT  zjfoeasyalv3.

*Déclaration obligatoie pour notre démo.
DATA: mygrid TYPE REF TO cl_gui_alv_grid.
DATA: it_cat TYPE lvc_t_fcat.
DATA:
  itab_user_addrp_cat   TYPE   slis_t_fieldcat_alv,
  wa_user_addr_cat     TYPE   LINE OF slis_t_fieldcat_alv,
  gs_layout    TYPE   slis_layout_alv
  .

* on remplit notre table interne
DATA: itab_user_addrp LIKE user_addrp OCCURS 100 WITH HEADER LINE.
SELECT * INTO CORRESPONDING FIELDS OF TABLE itab_user_addrp
  FROM user_addrp .


* Puis on ajoute un a un chaque champs
* cela permet de mapper le nom du champs avec un text....
CLEAR wa_user_addr_cat.
wa_user_addr_cat-fieldname  = 'BNAME'.
wa_user_addr_cat-seltext_s  = 'NAME'.
APPEND wa_user_addr_cat TO itab_user_addrp_cat.

CLEAR wa_user_addr_cat.
wa_user_addr_cat-fieldname  = 'PERSNUMBER'.
wa_user_addr_cat-seltext_s  = 'Num'.
APPEND wa_user_addr_cat TO itab_user_addrp_cat.

CLEAR wa_user_addr_cat.
wa_user_addr_cat-fieldname  = 'DATE_FROM'.
wa_user_addr_cat-seltext_s  = 'Date from'.
APPEND wa_user_addr_cat TO itab_user_addrp_cat.

CLEAR wa_user_addr_cat.
wa_user_addr_cat-fieldname  = 'NAME_FIRST'.
wa_user_addr_cat-seltext_s  = 'First name'.
APPEND wa_user_addr_cat TO itab_user_addrp_cat.

CLEAR wa_user_addr_cat.
wa_user_addr_cat-fieldname  = 'NAME_LAST'.
wa_user_addr_cat-seltext_s  = 'Last Name'.
APPEND wa_user_addr_cat TO itab_user_addrp_cat.

CLEAR wa_user_addr_cat.
wa_user_addr_cat-fieldname  = 'NAME_TEXT'.
wa_user_addr_cat-seltext_s  = 'Displayed name.'.
APPEND wa_user_addr_cat TO itab_user_addrp_cat.

* et enfin on initialise un layout
gs_layout-zebra  = 'X'.
gs_layout-colwidth_optimize = 'X'.


*  Et on a plus qu'à appeler la RFC
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
*   i_callback_program = g_repid
   i_save = 'U'
   it_fieldcat = itab_user_addrp_cat
   is_layout = gs_layout
 TABLES
   t_outtab = itab_user_addrp
       .

Actions: E-mail | RSS comment feed |

Comments

# sebastien.ferry
Wednesday, February 03, 2010 10:53 AM
Que dirais-tu de remplacer les
CLEAR wa_user_addr_cat.
wa_user_addr_cat-fieldname = 'DATE_FROM'.
wa_user_addr_cat-seltext_s = 'Date from'.
APPEND wa_user_addr_cat TO itab_user_addrp_cat.

par l'utilisation de la fonction REUSE_ALV_FIELDCATALOG_MERGE:

data : l_repid like sy-repid.
l_repid = sy-repid.


call function 'REUSE_ALV_FIELDCATALOG_MERGE'
exporting
i_program_name = l_repid
i_internal_tabname = 'ITAB_USER_ADDRP'
i_inclname = l_repid
changing
ct_fieldcat = itab_user_addrp.
# sebastien.ferry
Wednesday, February 03, 2010 11:00 AM
Et pour les paresseux, il y a le "Code Generator for reuse_alv_grid_display":
http://www.alv-grid-display.de/alv_grid_en.html
# jfo
Thursday, February 04, 2010 6:48 PM
je connais ce dernier lien... Mais je te propose d'écrire toi même un ABAP TIPS
# Nicolas
Tuesday, March 09, 2010 10:02 PM
Jérôme, pourquoi ne pas utiliser la version objet? Je vois en plus que tu as déclaré un objet de type cl_gui_alv_grid...
Wednesday, March 10, 2010 10:37 AM
Bonjour,

Je suis comme nicolas, je passerai pas une classe, et cela ne me demanderait que 7 lignes de codes.

Pour des questions de maintenance, je proscrirai l'utilisation de REUSE_ALV_FIELDCATALOG_MERGE

SAUF besoin très particulier.

Toujours réutiliser le DDIC
# finjisse
Friday, July 02, 2010 4:32 PM
Moi aussi, je me bats pour que mes "vieux" développeurs n'utilise plus les REUSE_ mais de l'ABAP OO !

Sinon un autre robot : http://www.alvrobot.com.ar/home.php

Post Comment

Only registered users may post comments.