Tutorial sulla programmazione tramite finestre di dialogo: pool di moduli in SAP ABAP
โก Riepilogo intelligente
Programmazione del dialogo in SAP ABAP crea programmi in un pool di moduli che interagiscono con l'utente tramite schermate e modificano il contenuto del database. Questa pagina illustra i codici di transazione, le schermate, lo stato dell'interfaccia utente grafica, la logica di flusso delle schermate, le dynpro e la struttura del pool di moduli.

Che cos'รจ la programmazione dialogica?
SAP-ABAP supporta due tipi di programmi: Programma report e Programma dialogo.
Se il programma ABAP richiede l'input dell'utente, viene utilizzata la programmazione Dialog.
Una finestra di dialogo utente รจ qualsiasi forma di interazione tra l'utente e il programma e puรฒ essere una delle seguenti:
- Immissione dei dati
- Scelta di una voce di menu
- Facendo clic su un pulsante
- Facendo clic o facendo doppio clic su una voce
Il programma di dialogo viene utilizzato anche quando dobbiamo navigare avanti e indietro tra le schermate
I programmi di dialogo vengono creati con il tipo 'M' โ Module Pool. Non possono essere eseguiti autonomamente e devono essere allegati ad almeno un codice transazione in cui si specifica una schermata iniziale.
Differenza tra i programmi Report e Dialog
Programma di report:
Un report รจ un programma che in genere legge e analizza i dati nelle tabelle del database senza modificarli banca dati.
Programma di dialogo:
Un programma di dialogo consente di lavorare in modo interattivo con il sistema e di modificare il contenuto delle tabelle del database. Ogni programma di dialogo dispone di una determinata sequenza di schermate che vengono elaborate dal sistema una dopo l'altra.
| Criteri | Programma di reportistica | Programma di dialogo |
|---|---|---|
| Tipo di programma | Tipo 1, eseguibile | Tipo M, pool di moduli |
| Accesso al database | Legge e analizza i dati | Legge e modifica i dati |
| Funziona da solo | Funziona solo tramite un codice di transazione | |
| Controllate | Eventi del rapporto | Logica di flusso dello schermo di ogni dynpro |
La sequenza delle schermate di una transazione di dialogo รจ piรน facile da seguire con un esempio.
Un esempio di elaborazione delle transazioni nella programmazione a dialoghi
Il diagramma illustra una transazione dalla prima schermata all'aggiornamento del database. L'utente inserisce i dati nella schermata 100, PAI convalida l'inserimento e decide la schermata successiva, la schermata 200 raccoglie i dati rimanenti e l'attivitร di aggiornamento infine scrive il record. Ciascuno di questi passaggi รจ prodotto dai componenti elencati di seguito.
Componenti del programma Dialog
a differenza di rapporto che generalmente comporta la creazione di un programma autonomo che puรฒ essere eseguito indipendentemente da altri oggetti, lo sviluppo di programmi di dialogo comporta lo sviluppo di piรน oggetti, nessuno dei quali puรฒ essere eseguito da solo. Invece tutti gli oggetti sono collegati gerarchicamente al programma principale e vengono eseguiti in una sequenza dettata dal programma principale di dialogo.
I componenti di un programma di dialogo sono:
Codice transazione
- Il codice transazione avvia una sequenza di schermate.
- I codici transazione possono essere creati nel browser del repository in ABAP Workbench o utilizzando Transaction SE93.
- Un codice di transazione รจ collegato ad un programma ABAP e ad una schermata iniziale.
- ร possibile avviare una sequenza di schermate da qualsiasi programma ABAP utilizzando l'istruzione CALL SCREEN.
Schermi
- Ogni dialogo in un SAP il sistema รจ controllato da uno o piรน schermi.
- Puoi creare schermate utilizzando Screen Painter nel Workbench ABAP attraverso la transazione SE51
- Ogni schermata appartiene a un Programma ABAP.
- Queste schermate sono costituite da una "maschera di schermata" o "layout" e dalla sua logica di flusso. La schermata ha un layout che determina le posizioni dei campi di input/output e di altri elementi grafici come caselle di controllo e pulsanti di scelta. Una logica di flusso determina l'elaborazione logica all'interno della schermata.
Stato della GUI
- Ogni schermata ha uno o piรน stati della GUI che sono componenti indipendenti di un programma.
- Controlla le barre dei menu, la barra degli strumenti standard, la barra degli strumenti dell'applicazione, con cui l'utente puรฒ scegliere le funzioni nell'applicazione.
- Li crei nell'ABAP Workbench utilizzando il menu Painter.
Programma ABAP
- Ciascuno schermo e stato della GUI nel sistema R/3 appartiene a un programma ABAP.
- Il programma ABAP contiene i moduli di dialogo richiamati dalla logica del flusso dello schermo ed elabora anche l'input dell'utente dallo stato della GUI.
- I programmi ABAP che utilizzano le schermate sono noti anche come programmi di dialogo.
- In un pool di moduli (programma di tipo M); il primo blocco di elaborazione da richiamare รจ sempre un modulo di dialogo. ร tuttavia possibile utilizzare le schermate anche in altri programmi ABAP, ad esempio programmi eseguibili o moduli funzione. Il primo blocco di elaborazione viene poi richiamato diversamente; ad esempio, dall'ambiente runtime o da una chiamata di procedura. La sequenza delle schermate viene quindi avviata utilizzando l'istruzione CALL SCREEN.
Logica del flusso dello schermo
La logica del flusso dello schermo รจ principalmente divisa in quattro componenti.
- Processo prima dell'output (PBO) evento: che viene elaborato prima della visualizzazione della schermata
- Processo dopo l'input (PAI) evento: che viene elaborato dopo un'azione dell'utente sullo schermo
- Processo su richiesta di aiuto (P.O.H.): che viene elaborato quando si preme F1
- Processo su richiesta valore (POV): che viene elaborato quando si preme F4
POH e POV sono spiegati in dettaglio nella pagina relativa a processo di richiesta di valore e processo di richiesta di assistenza.
Dynapro
- Una schermata, insieme alla sua logica di flusso, viene chiamata Dynpro ("Programma dinamico" poichรฉ la logica di flusso della schermata influenza il flusso del programma).
- Ogni dynpro controlla esattamente un passo del tuo programma di dialogo.
- Le schermate appartenenti ad un programma sono numeratoLa sequenza del flusso di schermate puรฒ essere lineare o ciclica. All'interno di una catena di schermate, รจ possibile richiamarne un'altra e, dopo averla elaborata, tornare alla catena originale. ร inoltre possibile sovrascrivere la schermata successiva definita staticamente all'interno dei moduli di dialogo del programma ABAP.
Pool di moduli ABAP
- In seguito a un evento PBO o PAI, un Dynpro richiama un programma di dialogo ABAP. L'insieme di tali programmi รจ chiamato pool di moduli ABAP.
- Ad esempio, i moduli richiamati all'evento PAI vengono utilizzati per verificare l'input dell'utente e per attivare le fasi di dialogo appropriate, come l'attivitร di aggiornamento.
- Tutti i dynpro da chiamare dall'interno prima la transazione si riferisce a un pool di moduli comune.
Struttura di un programma di dialogo
Il diagramma di struttura mostra come il codice della transazione, le schermate, lo stato dell'interfaccia grafica e il pool di moduli siano collegati allo stesso programma principale.
Flusso del processo per un programma di dialogo
Il diagramma di flusso del processo mostra l'alternanza tra la schermata e il programma ABAP: PBO compila i campi della schermata, l'utente interviene e PAI elabora l'input prima che venga richiamata la schermata successiva.
Come creare un programma di pool di moduli
I componenti sopra descritti vengono creati in un ordine fisso. I passaggi seguenti consentono di creare una transazione funzionante a partire da un pool di moduli vuoto.
- Creare il pool di moduli: In SE80 o in SE38, creare un programma il cui nome inizia con SAPMZ e impostare il tipo di programma su M โ Modulo poolIl tipo non puรฒ essere modificato in seguito senza eliminare l'oggetto.
- Dichiarare i dati globali: Inserisci l'istruzione TABLES e le variabili globali nell'include TOP, che puรฒ essere letto da ogni modulo di dialogo del pool.
- Progetta la schermata: Crea schermata 100 con la schermata Painter (SE51), posizionare i campi di input sul layout e immettere il numero della schermata successiva negli attributi della schermata.
- Scrivi la logica di flusso: Nella scheda Logica del flusso, richiamare un modulo per PBO e uno per PAI, come mostrato di seguito.
- Costruisci lo stato dell'interfaccia grafica: Crea uno stato con il menu Painter (SE41) e impostarlo nel modulo PBO con l'istruzione SET PF-STATUS, in modo che Salva, Indietro ed Esci raggiungano il programma come codici funzione.
- Inserisci un codice di transazione: Nella transazione SE93, crea una transazione di dialogo, assegna un nome al pool di moduli e inserisci 100 come schermata iniziale.
* Screen 100, flow logic PROCESS BEFORE OUTPUT. MODULE status_0100. PROCESS AFTER INPUT. MODULE user_command_0100. * Module pool SAPMZDEMO MODULE status_0100 OUTPUT. SET PF-STATUS 'STATUS_100'. SET TITLEBAR 'TITLE_100'. ENDMODULE. MODULE user_command_0100 INPUT. CASE sy-ucomm. WHEN 'SAVE'. PERFORM save_data. WHEN 'BACK' OR 'EXIT'. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE.
Suggerimento: LEAVE TO SCREEN 0 termina la schermata corrente e ritorna al punto di chiamata, che รจ il modo standard per uscire correttamente da una transazione di dialogo.




