SAP Programmazione dei rapporti ABAP

⚡ Riepilogo intelligente

La programmazione di report ABAP crea programmi eseguibili che selezionano, elaborano e visualizzano grandi volumi di dati. SAP dati. Questa pagina illustra le aggiunte all'intestazione del report, la schermata di selezione, la sequenza degli eventi, i comandi di formattazione, gli elenchi interattivi e i database logici.

  • 📊 Scopo principale: Un programma di reportistica legge i dati da diverse tabelle, li elabora e li presenta come un elenco che può essere formattato, scaricato o inviato via e-mail.
  • 🧾 Tipo di programma: Ogni report è un programma eseguibile di tipo 1, legato a un'area applicativa e guidato interamente dagli eventi.
  • 🏁 Aggiunte all'intestazione: NESSUNA INTESTAZIONE DI PAGINA STANDARD, LINE-MISURARE, LINE-COUNT e MESSAGE-ID appartengono alla prima istruzione REPORT.
  • ️ Schermata di selezione: PARAMETERS accetta un singolo valore, mentre SELECT-OPTIONS accetta un intervallo o un insieme di valori.
  • ️ Sequenza degli eventi: LOAD-OF-PROGRAM, INITIALIZATION, AT SELECTION-SCREEN, START-OF-SELECTION e END-OF-SELECTION vengono eseguiti in un ordine fisso.
  • 🖱️ Liste interattive: HIDE memorizza i valori dei campi della riga selezionata, mentre HOTSPOT trasforma un campo di elenco in un elemento cliccabile per l'elenco secondario.
  • ️ Database logici: Creati in SE36, sostituiscono le istruzioni SELECT con un evento GET e aggiungono controlli di autorizzazione centralizzati.

SAP Programmazione dei rapporti ABAP

Che cos'è la programmazione di report ABAP?

SAPABAP supporta due tipi di programmi: programmi di report e programmi di dialogo. I programmi di report vengono utilizzati quando è necessario visualizzare grandi quantità di dati.

Scopo/Utilizzo dei programmi di report

  • Vengono utilizzati quando i dati provenienti da diverse tabelle devono essere selezionati ed elaborati prima della presentazione
  • Utilizzato quando i report richiedono un formato speciale
  • Utilizzato quando è necessario scaricare il report da SAP in un foglio Excel da distribuire.
  • Utilizzato quando il rapporto deve essere inviato per posta a una persona specifica.

Punti importanti da notare sul programma Report

  • I programmi di report sono sempre programmi eseguibili. Il tipo di programma è sempre 1.
  • Ogni programma di report corrisponde a un particolare tipo di applicazione, ovvero con vendite e distribuzione, FI – CO ecc. Può anche essere applicazione incrociata, ovvero di tipo '*'.
  • La programmazione dei report è una programmazione guidata dagli eventi.
  • La prima riga di un programma di report è sempre Report .
  • Per sopprimere l'intestazione dell'elenco o il nome del programma l'aggiunta Nessuna intestazione di pagina standard viene utilizzato.
  • La dimensione della riga per un particolare report può essere impostata utilizzando l'addizione dimensione della linea .
  • Il conteggio delle righe per una pagina particolare può essere impostato utilizzando l'addizione conteggio righe n(n1). N è il numero di righe per la pagina e N1 è il numero di righe riservate al piè di pagina.
  • Per visualizzare qualsiasi informazione o messaggio di errore aggiungiamo una classe messaggio al programma utilizzando l'aggiunta: ID messaggio . Le classi di messaggi vengono mantenute in SE91.

Pertanto un programma di report ideale dovrebbe iniziare con:

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

Programma di report vs Programma di dialogo

Entrambi i tipi di programma vengono eseguiti nello stesso sistema, ma risolvono problemi opposti. Un report legge e visualizza i dati, mentre un programma di dialogo consente all'utente di gestirli tramite schermate.

Criteri Programma di reportistica Programma di dialogo
Tipo di programma Tipo 1, eseguibile Tipo M, pool di moduli
Iniziato da Nome del programma o codice di transazione Solo un codice di transazione
Controllo del flusso Eventi come INIZIALIZZAZIONE e INIZIO SELEZIONE Logica di flusso dello schermo con moduli PBO e PAI
Input dell'utente Una schermata di selezione generata Schermi progettati nello schermo Painter
Utilizzo tipico Visualizzazione e download di grandi volumi di dati Creazione e modifica dei dati aziendali

La schermata di selezione è la sezione in cui un report raccoglie i dati di input, pertanto verrà descritta di seguito.

Schermata di selezione

La "schermata di selezione" è la schermata in cui si specificano i valori di input per i quali il programma deve essere eseguito.

La schermata di selezione viene normalmente generata dal file

  1. Scheda Sintetica
  2. Seleziona-Opzioni

Sintassi

Selection-screen begin of screen <screen #>
selection-screen begin of block <#>  with frame title <text>
.........
.........
selection-screen end of block <#>
selection-screen end of screen <screen #>

Scheda Sintetica

I parametri aiutano a fare una selezione dinamica. Possono ospitare un solo valore per un ciclo di esecuzione del programma.

Sintassi

Definizione dei parametri come tipo di dati

Parameters p_id(30) type c.

Definizione di parametri come un campo di tabella.

Parameter p_id like <table name>-<field name>.

I parametri possono essere sia caselle di controllo che pulsanti di scelta.

Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>.
Parameters p_id2  radiobutton group <group name>.

I parametri possono essere elenchi a discesa.

Parameter p_id like <table name>-<field name> as listbox

selezionare Opzioni

Un'opzione di selezione viene utilizzata per inserire un intervallo di valori o un insieme di valori in un programma

Sintassi

select-options s_vbeln for vbak-vbeln.

Schermata di selezione

Lo screenshot mostra i campi di input minimo e massimo generati da un'opzione di selezione, insieme al pulsante per la selezione multipla.

Puoi anche definire un'opzione di selezione come una variabile

select-options s_vbeln for vbak-vbeln no intervals no-extension

Una volta raccolti i dati in ingresso, il programma reagisce a una sequenza predefinita di eventi.

Eventi in un programma di report ABAP

I programmi di report ABAP lo sono programmi guidati da eventi. I diversi eventi in un programma di report sono:

Caricamento del programma

  • Attiva l'evento associato in una sessione interna dopo aver caricato un programma di tipo 1, M, F o S.
  • Esegue inoltre il blocco di elaborazione associato una volta e una sola volta per ciascun programma e sessione interna.
  • Il blocco di elaborazione LOAD-OF-PROGRAM ha più o meno la stessa funzione per an Programma ABAP di tipo 1, M, F o S come costruttore ha per le classi negli oggetti ABAP

Inizializzazione.

  • Questo evento viene eseguito prima che venga visualizzata la schermata di selezione.
  • Inizializzazione di tutti i valori.
  • È possibile assegnare valori diversi rispetto a quelli predefiniti nella schermata di selezione.
  • È possibile riempire la schermata di selezione con alcuni valori in fase di esecuzione.

Nella schermata di selezione.

  • L'evento viene elaborato quando la schermata di selezione è stata elaborata (al termine del PAI).
  • La convalida e i controlli dei valori immessi avvengono qui

Inizio selezione.

  • Qui il programma inizia a selezionare i valori dalle tabelle.

Fine della selezione.

  • Dopo che tutti i dati sono stati selezionati, questo evento scrive i dati sullo schermo.

Eventi interattivi

  • Utilizzato per la reportistica interattiva. Viene utilizzato per creare un elenco dettagliato da un elenco di base.

Suggerimento: Le istruzioni scritte senza alcuna parola chiave relativa all'evento appartengono per impostazione predefinita a START-OF-SELECTION, motivo per cui un report viene comunque eseguito anche in assenza dell'evento.

Esempio: un semplice programma di reportistica ABAP

Il programma seguente unisce le aggiunte, la schermata di selezione e gli eventi in un unico report di lavoro. Legge le intestazioni degli ordini di vendita da VBAK per i numeri inseriti nella schermata di selezione e li scrive in un elenco.

REPORT z_sales_order_list NO STANDARD PAGE HEADING
                          LINE-SIZE 80
                          LINE-COUNT 65(3)
                          MESSAGE-ID zsd.

TABLES: vbak.

DATA: lt_vbak TYPE STANDARD TABLE OF vbak,
      ls_vbak TYPE vbak.

* Selection screen
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
PARAMETERS: p_erdat LIKE vbak-erdat.

INITIALIZATION.
  p_erdat = sy-datum.

AT SELECTION-SCREEN.
  IF p_erdat > sy-datum.
    MESSAGE e001(zsd).          " Date must not lie in the future
  ENDIF.

START-OF-SELECTION.
  SELECT * FROM vbak
    INTO TABLE lt_vbak
    WHERE vbeln IN s_vbeln
      AND erdat LE p_erdat.

END-OF-SELECTION.
  LOOP AT lt_vbak INTO ls_vbak.
    WRITE: / ls_vbak-vbeln, ls_vbak-erdat, ls_vbak-netwr.
    HIDE ls_vbak-vbeln.
  ENDLOOP.

Tre dettagli meritano di essere sottolineati. INITIALIZATION riempie il parametro data prima che appaia la schermata di selezione. AT SELECTION-SCREEN convalida l'inserimento e genera un messaggio dalla classe ZSD. HIDE memorizza il numero d'ordine di ogni riga scritta, in modo che un doppio clic possa creare un elenco secondario a partire da esso, argomento della sezione successiva.

Formattazione del rapporto

ABAP consente di formattare i report nel modo desiderato dall'utente. Ad esempio, le "Linee alternative" devono apparire in colori diversi e la linea "Totali" deve apparire in giallo.

Sintassi

Format Color n

Format Color n Intensified On

n possono corrispondere a vari numeri

Tieni presente che ci sono anche altre aggiunte insieme al formato

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

Programmazione di report interattivi

  • Utilizzando la programmazione interattiva, gli utenti possono controllare attivamente il recupero e la visualizzazione dei dati.
  • Utilizzato per creare un elenco dettagliato a partire da un elenco molto semplice
  • I dati dettagliati sono scritti in un elenco secondario.
  • L'elenco secondario può sovrapporsi completamente alla prima schermata oppure visualizzarlo in una nuova schermata
  • Gli elenchi secondari possono essere essi stessi interattivi.
  • Il primo elenco può anche richiamare una transazione.
  • Esistono diversi eventi associati alla programmazione interattiva.

Alcuni comandi utilizzati per la programmazione interattiva

hotspot

Se si trascina il mouse sui dati visualizzati nel report, il cursore si trasforma in una mano con l'indice teso. È possibile ottenere un hotspot utilizzando l'istruzione FORMAT.

Syntax:      Format Hotspot On (Off).

Nascondi

Questo comando ti aiuta a memorizzare i nomi dei campi in base ai quali verranno eseguiti ulteriori elaborazioni per ottenere un elenco dettagliato. Viene scritto direttamente dopo l'istruzione WRITE per un campo. Quando viene selezionata una riga, i valori vengono automaticamente inseriti nelle variabili per un ulteriore utilizzo.

Syntax:     Hide <field-name>.

I report che leggono numerose tabelle possono sostituire le istruzioni SELECT con un database logico, come descritto di seguito.

Database logici

  • Invece di utilizzare le query "Seleziona" è possibile utilizzare il database logico per recuperare i dati per un programma.
  • I database logici vengono creati tramite transazione SE36
  • Il nome di un database logico può contenere fino a 20 caratteri. Può iniziare con un prefisso dello spazio dei nomi.
  • I dati vengono selezionati da un altro programma e si può accedere ai dati utilizzando GET comando che inserisce i dati nell'area di lavoro .

Vantaggi di un database logico rispetto alle normali query di selezione.

  1. Offre condizioni di controllo per vedere se l'input è corretto, completo e plausibile
  2. Contiene controlli di autorizzazione centralizzati per l'accesso al database
  3. Miglioramenti come il miglioramento delle prestazioni si applicano immediatamente a tutti i report che utilizzano il database logico.

Nota: a causa delle complessità coinvolte, i database logici non vengono utilizzati nella maggior parte dei casi

DOMANDE FREQUENTI

PARAMETERS crea un campo di input che contiene un singolo valore. SELECT-OPTIONS crea una tabella interna con i campi SIGN, OPTION, LOW e HIGH, in modo che accetti intervalli, esclusioni e selezioni multiple.

AT LINE-SELECTION reagisce a un doppio clic o al tasto F2, mentre AT USER-COMMAND reagisce a un codice funzione del menu. Entrambi creano l'elenco secondario a partire dai valori memorizzati da HIDE.

Il menu a tendina offre le opzioni Elenca, Salva e File locale per un report classico. Un programma può anche richiamare il modulo funzione GUI_DOWNLOAD, ed esportare un elenco ALV in un foglio di calcolo senza bisogno di codice aggiuntivo.

Sì. Gli assistenti IA negli strumenti di sviluppo ABAP generano l'intestazione REPORT, le SELECT-OPTIONS e i blocchi di eventi a partire da una semplice descrizione dell'elenco richiesto. La SELECT generata necessita comunque di una verifica delle prestazioni.

Gli strumenti di intelligenza artificiale riassumono lunghi elenchi, evidenziano i valori anomali e rispondono a domande sui dati in un linguaggio semplice. L'integrazione di tali analisi di solito implica la conversione dell'elenco classico in un output basato su ALV o Fiori.

Riassumi questo post con: