Rapporti ALV in SAP Tutorial – Visualizzatore elenco ABAP
⚡ Riepilogo intelligente
Rapporti ALV in SAPLe liste generate da ABAP List Viewer offrono allineamento delle colonne, ordinamento, filtraggio, totali e subtotali senza necessità di programmazione personalizzata. Questa pagina illustra i tipi di lista semplice, a blocchi e gerarchica, i relativi moduli funzione REUSE e le varianti di visualizzazione.

Che cos'è ALV in SAP ABAP?
Le funzionalità più comuni e desiderate in qualsiasi report sono l'allineamento delle colonne, l'ordinamento, il filtraggio, i subtotali, i totali, ecc. Implementarle da zero richiede un notevole impegno di programmazione. Per evitarlo, possiamo utilizzare un concetto chiamato ABAP List Viewer (ALV).
Ciascuno di questi rapporti fornisce moduli funzionali che aiutano a produrre l'output desiderato senza troppi sforzi. Vediamoli nel dettaglio –
L'ALV classico offre tre tipi di liste, e ognuna ha il proprio set di moduli funzione REUSE:
- Semplice report: una tabella interna visualizzata come elenco o griglia.
- Rapporto a blocchi: diverse tabelle interne visualizzate una sotto l'altra come blocchi separati.
- Rapporto gerarchico: una tabella di intestazione e una tabella degli elementi collegate da una chiave condivisa.
Rapporto semplice
Moduli funzionali importanti in questi rapporto siamo -
- Reuse_alv_fieldcatalog_merge
- Reuse_alv_list_display
- Reuse_alv_events_get
- Reuse_alv_grid_display
- Reuse_alv_commentary_write
REUSE_ALV_FIELDCATALOG_MERGE
Questo modulo funzionale viene utilizzato per popolare un catalogo di campi essenziale per visualizzare i dati in ALV.
Se i dati di output provengono da una singola tabella del dizionario e tutte le colonne sono selezionate, non è necessario creare esclusivamente il catalogo dei campi. È sufficiente menzionare il nome della tabella come parametro (I_structure_name) in REUSE_ALV_LIST_DISPLAY. Ma in altri casi dobbiamo crearlo.
Nota: Fieldcatalog può essere compilato anche manualmente inserendo tutti i dettagli richiesti nella tabella interna
I parametri importanti sono:
1. Esportazione:
- I_nome_programma: ID rapporto
- I_internal_tabname: la tabella di output interna
- I_inclname: include o il nome del report in cui vengono gestiti tutti i moduli dinamici.
2. Modifica
- ct_fieldcat: un tavolo interno con il tipo SLIS_T_FIELDCAT_ALV dichiarato nel pool di tipi SLIS.
REUSE_ALV_LIST_DISPLAY
Questo è il modulo funzione che stampa i dati.
I parametri importanti sono:
1. Esportazione:
- I_callback_program: ID rapporto
- I_bypassing_buffer : 'X'
- I_buffer_attivo : ' '
- I_callback_pf_status_set: routine in cui un utente può impostare il proprio stato pf o modificare la funzionalità dello stato pf esistente.
- I_callback_user_command: routine in cui vengono gestiti i codici funzione.
- Nome_struttura I: nome della tabella del dizionario
- Is_Layout: struttura per impostare il layout del report
- It_fieldcat: tabella interna con l'elenco di tutti i campi e i relativi attributi da stampare (questa tabella può essere popolata automaticamente dalla funzione)
- It_events: tabella interna con un elenco di tutti i possibili eventi di ALV e i nomi dei moduli corrispondenti.
2. Tabelle:
- UN. t_outtab: tabella interna con i dati da emettere
REUSE_ALV_EVENTS_GET
Restituisce la tabella dei possibili eventi per il tipo elenco
1. Importa:
Et_Eventi:La tabella degli eventi viene restituita con tutti i possibili eventi CALLBACK per il tipo di elenco specificato (colonna 'NAME'). Affinché gli eventi possano essere elaborati dalla Callback, il relativo campo "FORM" deve essere compilato. Se il campo è inizializzato, l'evento viene ignorato. La voce può essere letta dalla tabella degli eventi, il campo 'FORM' compilato e la voce modificata utilizzando costanti del tipo pool SLIS.
2. Esportazione:
I_list_type: 0 = elenco semplice REUSE_ALV_LIST_DISPLAY
1 = elenco gerarchico-sequenziale REUSE_ALV_HIERSEQ_LIST_DISPLAY
2 = elenco blocchi semplice REUSE_ALV_BLOCK_LIST_APPEND
3 = elenco di blocchi gerarchico-sequenziale REUSE_ALV_BLOCK_LIST_HS_APPEND
REUSE_ALV_GRID_DISPLAY
Una nuova funzione dalla versione ABAP4.6, per visualizzare i risultati in una griglia anziché in un'anteprima.
Parametri: uguali a reuse_alv_list_display
Nota: la griglia non è adatta a gestire grandi volumi di dati. Funzioni come l'ordinamento e lo scorrimento consumano molte risorse/tempo se la quantità di dati da visualizzare è elevata. Non esiste una definizione precisa che stabilisca se, in presenza di una determinata quantità di dati, sia preferibile utilizzare una lista o una griglia; la scelta deve essere fatta dallo sviluppatore in base alla propria esperienza. In caso di dubbi, la lista rimane l'opzione migliore.
REUSE_ALV_COMMENTARY_WRITE
Viene utilizzato nell'evento Inizio pagina per stampare le intestazioni e altri commenti per l'elenco.
Parametri importanti
- It_list_commentary: tabella interna con le intestazioni del tipo slis_t_listheader.
Questa tabella interna ha tre campi:
- Tipo: 'H' – intestazione, 'S' – selezione, 'A' – azione
- Tasto: solo quando il tipo è 'S'.
- Info: il testo da stampare
Esempio: un semplice report di griglia ALV
Il programma seguente trasforma i moduli funzione sopra descritti in un report funzionante. Legge la tabella degli orari di volo SPFLI, crea automaticamente il catalogo dei campi e visualizza il risultato in una griglia.
REPORT z_alv_demo. TYPE-POOLS: slis. DATA: lt_spfli TYPE STANDARD TABLE OF spfli, lt_fieldcat TYPE slis_t_fieldcat_alv, ls_layout TYPE slis_layout_alv. START-OF-SELECTION. * 1. Read the data into the output table SELECT * FROM spfli INTO TABLE lt_spfli. * 2. Build the field catalog from the dictionary structure CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' EXPORTING i_program_name = sy-repid i_internal_tabname = 'LT_SPFLI' i_structure_name = 'SPFLI' CHANGING ct_fieldcat = lt_fieldcat. * 3. Set the layout and display the grid ls_layout-zebra = 'X'. ls_layout-colwidth_optimize = 'X'. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = sy-repid is_layout = ls_layout it_fieldcat = lt_fieldcat i_save = 'A' TABLES t_outtab = lt_spfli.
Tre parametri svolgono la maggior parte del lavoro. I_STRUCTURE_NAME consente di derivare il catalogo dei campi dal dizionario, quindi nessuna colonna deve essere descritta manualmente. IS_LAYOUT attiva le righe a strisce e la larghezza ottimizzata delle colonne. I_SAVE = 'A' consente di salvare dall'elenco finale sia le varianti di visualizzazione specifiche dell'utente che quelle standard.
Blocca rapporto
Sembra un report semplice ma ha solo le funzionalità di ordinamento e filtraggio. Questo report viene utilizzato se è necessario visualizzare più di un report nell'output. Tecnicamente parlando, se disponi di più tabelle interne con dati da visualizzare come blocchi separati, allora optiamo per il report a blocchi di ALV.
Le funzioni importanti utilizzate per creare questo report sono:
- REUSE_ALV_BLOCK_LIST_INIT
- REUSE_ALV_BLOCK_LIST_APPEND
- REUSE_ALV_BLOCK_LIST_DISPLAY
REUSE_ALV_BLOCK_LIST_INIT
Questo modulo funzionale viene utilizzato per impostare lo stato predefinito della GUI, ecc. I parametri sono simili a quelli utilizzati in reuse_alv_list_display o reuse_alv_grid_display
REUSE_ALV_BLOCK_LIST_APPEND
Questo modulo funzionale aggiunge i dati al blocco.
Parametri importanti
1.Esporta:
- is_layout: impostazioni di layout per il blocco
- it_fieldcat: catalogo dei campi
- I_tabname: nome della tabella interna con tutti gli eventi possibili
2.Tabelle:
- t_outtab: tabella interna con dati di output.
REUSE_ALV_BLOCK_LIST_DISPLAY
Questo modulo funzione visualizza l'elenco con i dati aggiunti dalla funzione precedente.
Parametri: tutti i parametri sono facoltativi.
Rapporti gerarchici
La visualizzazione gerarchica è utilizzata per visualizzare dati correlati. Come i dettagli dell'ordine di vendita e dell'articolo. Qui i dettagli dell'ordine di vendita possono essere i dati dell'intestazione mentre gli articoli nell'ordine di vendita possono essere i dati dell'articolo
Il modulo funzione utilizzato a questo scopo è
REUSE_ALV_HIERSEQ_LIST_DISPLAY
Esportare:
- I_CALLBACK_PROGRAM
- I_CALLBACK_PF_STATUS_SET
- I_CALLBACK_USER_COMMAND
- IS_LAYOUT
- It_fieldcat
- It_events
- I_tabname_header: nome della tabella interna al programma contenente i dati di output del livello gerarchico più alto.
- I_tabname_item: nome della tabella interna al programma contenente i dati di output del livello gerarchico più basso.
- Is_keyinfo: questa struttura contiene i nomi dei campi dell'intestazione e della tabella degli elementi che collegano le due tabelle (chiave condivisa).
tavoli
- t_outtab_header: tabella di intestazione con i dati da emettere
- t_outtab_item: nome della tabella interna al programma contenente i dati di output del livello gerarchico più basso.
Tutte le definizioni di tabelle interne, strutture e costanti sono dichiarate in un pool di tipi chiamato SLIS. Questa tabella interna può essere popolata automaticamente utilizzando REUSE_ALV_FIELDCATALOG_MERGE'.
Visualizza varianti
- Le varianti di visualizzazione vengono utilizzate per impostare le proprietà predefinite di un output alv come criteri di ordinamento, criteri di filtro, totale e subtotale ecc.
- Le varianti di visualizzazione possono essere specifiche dell'utente e standard (le varianti standard possono essere utilizzate da qualsiasi utente)
- Il tipo di varianti di visualizzazione che possono essere salvate è controllato dal parametro i_save che viene passato nei moduli funzione reuse_alv_list_display / reuse_alv_grid_display
- È possibile fornire un'opzione nella schermata di selezione per selezionare quale variante di visualizzazione utilizzare
I moduli funzionali comuni relativi alla selezione/convalida delle varianti di visualizzazione sono
- Reuse_alv_variant_default_get
- Reuse_alv_variant_f4
- Reuse_alv_variant_existence
Suggerimento: Imposta I_SAVE = 'U' per consentire solo varianti specifiche dell'utente, 'X' per consentire solo varianti standard e 'A' per entrambe. Un valore vuoto impedisce completamente il salvataggio.
Questo è tutto ABAP – Programmazione ALV!
