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.

  • 📋 Scopo principale: ABAP List Viewer fornisce le funzionalità standard per gli elenchi tramite moduli funzione predefiniti, quindi non è mai necessario programmarli nuovamente.
  • 🗂️ Catalogo campi: REUSE_ALV_FIELDCATALOG_MERGE crea il catalogo che descrive ogni colonna di output e può anche essere compilato manualmente.
  • Elenco e griglia: REUSE_ALV_LIST_DISPLAY stampa un elenco classico, mentre REUSE_ALV_GRID_DISPLAY visualizza gli stessi dati in un controllo griglia.
  • 🧱 Rapporto di blocco: INIT, APPEND e DISPLAY combinano diverse tabelle interne in un unico output composto da blocchi separati.
  • 🌳 Rapporto gerarchico: REUSE_ALV_HIERSEQ_LIST_DISPLAY collega una tabella di intestazione e una tabella di elementi tramite la chiave condivisa in IS_KEYINFO.
  • 🧰 Tipo di pool SLI: Ogni struttura, tipo di tabella e costante utilizzata dall'ALV classico è dichiarata nel pool di tipi SLIS.
  • 💾 Varianti di visualizzazione: Una variante memorizza le impostazioni predefinite di ordinamento, filtro e totalizzazione, e il parametro I_SAVE determina se si tratta di impostazioni specifiche dell'utente o standard.

Rapporti ALV in SAP ABAP

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:

  1. Tipo: 'H' – intestazione, 'S' – selezione, 'A' – azione
  2. Tasto: solo quando il tipo è 'S'.
  3. 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

  1. Reuse_alv_variant_default_get
  2. Reuse_alv_variant_f4
  3. 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!

DOMANDE FREQUENTI

I moduli REUSE appartengono al classico ALV basato su funzioni. CL_GUI_ALV_GRID è il controllo orientato agli oggetti incorporato in un contenitore personalizzato su una dynpro e offre celle modificabili e gestione degli eventi tramite metodi.

Imposta DO_SUM nel catalogo dei campi per la colonna che deve essere sommata e passa una tabella di ordinamento con SUBTOT attivato per la colonna che raggruppa le righe. Non è necessario alcun codice di calcolo aggiuntivo.

Passa il nome di un modulo a I_CALLBACK_USER_COMMAND. Il modulo riceve il codice funzione e la riga selezionata, in modo che il programma possa leggere il record e aprire un elenco di dettagli o una transazione.

Sì. Gli assistenti AI negli strumenti di sviluppo ABAP generano la query SELECT, il catalogo dei campi e la chiamata alla funzione REUSE_ALV_GRID_DISPLAY a partire da una descrizione delle colonne richieste. La query SELECT generata necessita comunque di un controllo delle prestazioni.

No. ALV rimane l'output standard di SAP Report con interfaccia grafica. Gli assistenti basati sull'intelligenza artificiale aggiungono ulteriore valore riassumendo lunghi elenchi, individuando valori anomali e rispondendo a domande sui dati visualizzati in un linguaggio semplice.

Riassumi questo post con: