ABAP Objects ALV Grid Mantova, 30 dicembre 2018
Introduzione ALV grid control (ALV = ABAP List Viewer) è un tool flessibile per visualizzare liste Fornisce una serie di operazioni come generiche funzioni e può essere espanso con proprie definizioni Toolbar Output table nel grid control
Introduzione ALV grid utilizza la metodologia a oggetti per gestire la comunicazione con lo schermo ALV grid offre metodi attraverso un classe globale i quali possono essere usati per gestire il comportamento della lista
CL_GUI_ALV_GRID_BASE ALV e ABAP Objects Come risultato dell’utilizzo di ABAP Objects, le liste sono visualizzate attraverso un istanza ALV, e, attraverso la gestione degli eventi di ABAP Objects, si può intervenire sul flusso del programma CL_GUI_OBJECT CL_GUI_CONTROL CL_GUI_ALV_GRID_BASE CL_GUI_ALV_GRID
Dichiarazione delle variabili di riferimento Screen objects Dichiarazione delle variabili di riferimento DATA grid_1 TYPE REF TO cl_gui_alv_grid. DATA container_1 TYPE REF TO cl_gui_custom_container. Istanza e integrazione con lo screen CREATE OBJECT container_1 CONTAINER_NAME = ‘<screen_container_name>’. CREATE OBJECT grid_1 PARENT = container_1. Data display sullo screen control CALL METHOD grid_1->set_table_for_first_display Parametri di input: la tabella dei dati e il catalogo dei campi
Una tabella interna con i dati da visualizzare chiamata output table Field catalog e dati Come minimo si devono fornire due tipi di informazioni per visualizzare i dati Una tabella interna con i dati da visualizzare chiamata output table parameter IT_OUTTAB Una descrizione della struttura della tabella interna attraverso un field catalog oppure attraverso la corrispondente struttura del Data Dictionary Parameter IT_FIELDCAT
Dichiarare le variabili per la lista ALV e il contenitore. Esempio pratico Dichiarare le variabili per la lista ALV e il contenitore. DATA: grid1 TYPE REF TO cl_gui_alv_grid. DATA: g_custom_container TYPE REF TO cl_gui_custom_container. Dichiarare una tabella interna per i dati. DATA: gt_sflight TYPE TABLE OF sflight. Creare una dynpro standard e segnare l’area dove visualizzare la lista definendo un custom container assegnare un nome al custom container (es. CCONT).
Esempio pratico Nel modulo PBO della dynpro istanziare il container control e la lista ALV IF g_custom_container IS INITIAL. CREATE OBJECT g_custom_container EXPORTING CONTAINER_NAME = 'CCONT'. … Creare un collegamento tra il container e lo schermo usando il nome del container creato nella dynpro e istanziare la lista utilizzando il parametro parent CREATE OBJECT grid1 EXPORTING I_PARENT = g_custom_container. ENDIF.
Riempire la tabella interna Esempio pratico Riempire la tabella interna SELECT * FROM sflight INTO TABLE gt_sflight. Passare la tabella interna e la sua struttura al controllo ALV chiamare questo metodo solo dopo che la lista ALV sia stata instanziata. CALL METHOD grid1->set_table_for_first_display EXPORTING I_STRUCTURE_NAME = 'SFLIGHT‘ CHANGING IT_OUTTAB = gt_sflight. La struttura della tabella viene letta direttamente dal DDIC e non tramite un Field Catalog.
Selezione linee della ALV Per intercettare una o più linee selezionate sulla ALV si deve chiamare il metodo CALL METHOD grid1->get_selected_rows IMPORTING et_index_rows = gi_index_rows. All’interno del modulo PAI per le elaborazioni, definendo una funzione apposita sullo status per lo screen Restituisce la tabella interna <et_index_rows>, di tipo LVC_T_ROWS e con struttura LVC_S_ROW. Il campo index è l’indice della linea selezionata nella tabella interna dei dati ROWTYPE ALV Control: tipo riga INDEX ALV Control: numero righe (indice della tabella interna) Esempio di definizione gi_index_rows TYPE lvc_t_row, g_selected_row LIKE lvc_s_row.
Selezione linee della ALV Esempio pratico MODULE <user_command_0100> INPUT. CASE sy-ucomm. WHEN ‘SELE’. CALL METHOD grid1->get_selected_rows IMPORTING et_index_rows = gi_index_rows. IF NOT gi_index_rows[] IS INITIAL. LOOP AT gi_index_rows INTO g_selected_row. READ TABLE git_dati into gwa_dati INDEX g_selected_row-index. IF sy-subrc = 0. <elaborazione riga selezionata>