Tutorial sulle schermate secondarie ABAP: richiama la schermata secondaria in SAP
โก Riepilogo intelligente
Le sottoscreen ABAP incorporano una schermata all'interno di un'area di un'altra schermata in fase di esecuzione, insieme alla relativa logica di flusso. Questa pagina illustra le aree delle sottoscreen, l'istruzione CALL SUBSCREEN in PBO e PAI, il trasferimento dei dati e le restrizioni che possono causare errori in fase di esecuzione.

Che cos'รจ una sottoschermata in SAP ABAP?
Prima di leggere questo tutorial assicurati di sapere cos'รจ un Programma di dialogo รจ.
- Una schermata secondaria รจ una schermata indipendente visualizzata in un'area di un'altra schermata (โprincipaleโ).
- Le schermate secondarie consentono di incorporare una schermata all'interno di un'altra in fase di runtime. ร possibile includere piรน schermate secondarie nella schermata principale.
- Il termine sottoschermo si applica sia allo schermo che incorpori, sia all'area dello schermo principale in cui lo posizioni. Questo tutorial riguarda le aree secondarie dello schermo. Le schermate effettive create tramite la transazione SE51 sono chiamate schermate secondarie se definite negli attributi della schermata.
- Quando si utilizza una schermata secondaria, la logica di flusso della schermata incorporata รจ incorporata anche nella logica di flusso della schermata principale. Pertanto, utilizzare le schermate secondarie sugli schermi รจ come utilizzare include in Programmi ABAP.
Per utilizzare una schermata secondaria รจ necessario seguire tre semplici passaggi
- Definire le aree secondarie su uno schermo
- Definire le schermate secondarie adatte
- Includere la schermata secondaria nell'area della schermata secondaria.
Inoltre, รจ necessario regolare la cornice dello schermo secondario e dello schermo principale. ร necessario nominarlo nel campo del nome del campo.
Inoltre, รจ necessario anche regolare i campi all'interno della schermata secondaria per farli apparire nella schermata principale. Nel caso in cui lo schermo secondario sia definito piรน grande dell'area disponibile nella schermata principale, sarร visibile solo la parte dello schermo secondario che si adatta all'area disponibile. L'area viene sempre misurata dall'angolo superiore sinistro dello schermo. Pertanto รจ necessario prestare la dovuta attenzione durante la definizione delle aree delle schermate secondarie e la creazione delle schermate secondarie.
CHIAMATA SOTTOSCHERMATA
ESEMPIO
Ad esempio, qui abbiamo definito due aree secondarie sullo schermo principale e abbiamo collegato due diversi sottoschermi alle aree corrispondenti. Ogni volta che viene richiamata la schermata principale, viene richiamato il PBO della schermata principale. Ma prima della visualizzazione, vengono richiamati anche i PBO di ogni schermo collegati alle aree secondarie dello schermo principale.
Lo screenshot mostra la schermata principale con le due aree secondarie riempite da due schermate secondarie separate.
ร possibile includere una schermata secondaria utilizzando l'istruzione CALL SUBSCREEN nella logica di flusso della schermata principale.
Richiamare la sottoschermata in PBO
Per includere una schermata secondaria nell'area della schermata secondaria della schermata principale e richiamare la relativa logica di flusso PBO, utilizzare la seguente istruzione nell'evento PBO della schermata principale:
PROCESS BEFORE OUTPUT. CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.
Questa istruzione assegna un numero alla schermata secondaria all'area della schermata secondaria denominata . ร inoltre possibile specificare il programma in cui viene definita la schermata secondaria (opzionale). Se non si specifica esplicitamente il programma, il sistema cerca la schermata secondaria nello stesso programma ABAP del programma principale. Se non trova una schermata secondaria corrispondente, si verifica un errore di runtime. Nello stesso punto รจ inclusa anche la logica del flusso PBO della schermata secondaria. Questo puรฒ richiamare moduli PBO del programma ABAP in cui รจ definita la schermata secondaria. Alla fine della sottoschermata PBO i campi globali del programma vengono trasferiti a qualsiasi campo della videata con lo stesso nome nella videata secondaria. La logica di flusso PBO della videata parziale puรฒ contenere essa stessa ulteriori videate parziali.
Il nome dell'area della sottoschermata deve essere inserita direttamente senza virgolette. ร possibile specificare i nomi E sia come valori letterali che come variabili. Se si utilizzano variabili, รจ necessario dichiarare e compilare variabili con nome identico nel programma ABAP. Il numero dello schermo deve essere lungo 4 caratteri. Se non si assegna una schermata secondaria ad un'area, questa rimane vuota.
Richiamare la sottoschermata in PAI
Per richiamare la logica del flusso PAI della schermata secondaria, utilizzare la seguente istruzione nella logica del flusso PAI della schermata principale:
PROCESS AFTER INPUT. CALL SUBSCREEN <area>.
Questa dichiarazione include la logica del flusso PAI della schermata secondaria inclusa nell'area della schermata secondaria nell'evento PBO. Questo puรฒ richiamare moduli PAI del programma ABAP in cui รจ definita la schermata secondaria. I dati vengono trasportati tra i campi con nome identico nella schermata secondaria e il programma ABAP quando viene attivato l'evento PAI o nelle istruzioni FIELD corrispondenti nella logica del flusso PAI della schermata secondaria.
Come creare e incorporare una sottoschermata
I tre passaggi elencati in precedenza vengono eseguiti nello schermo Painter e nella logica di flusso della schermata principale. La sequenza seguente crea una schermata principale con una singola area di sottoschermata.
- Crea l'area del sottoschermo: Apri la schermata principale, ad esempio la schermata 100, nella schermata Painter (SE51). Scegli il Sottoschermo Seleziona l'elemento dalla barra degli elementi, disegnalo sul layout e inserisci un nome come SUB_AREA nel campo Nome. Tale nome verrร utilizzato in seguito nell'istruzione CALL SUBSCREEN.
- Crea la schermata secondaria: Crea una seconda schermata, ad esempio la schermata 110, e imposta il suo tipo di schermata su Sottoschermo negli attributi. Una schermata secondaria non ha un campo codice OK e non ha un proprio stato GUI.
- Posiziona i campi: Disegna i campi di input sulla schermata 110. Mantieni il layout all'interno delle dimensioni dell'area del sottoschermo, poichรฉ verrร visualizzata solo la parte che vi rientra, misurata dall'angolo in alto a sinistra.
- Dichiarare i dati globali: Inserisci i campi nell'include TOP del pool di moduli, in modo che sia la schermata principale che la sottoschermata leggano le stesse variabili globali.
- Richiamare la sottoschermata: Aggiungere CALL SUBSCREEN al PBO e al PAI della schermata principale, come mostrato di seguito.
- Attiva e testa: Attivare le schermate e il programma, quindi avviare la transazione. L'area della sottoschermata viene riempita dalla schermata 110 e i suoi moduli vengono eseguiti all'interno della logica di flusso della schermata 100.
* Flow logic of the main screen 100 PROCESS BEFORE OUTPUT. MODULE status_0100. CALL SUBSCREEN sub_area INCLUDING 'SAPMZDEMO' '0110'. PROCESS AFTER INPUT. CALL SUBSCREEN sub_area. MODULE user_command_0100.
Suggerimento: Quando un'area deve visualizzare una sottoschermata diversa a seconda dell'input dell'utente, รจ necessario memorizzare il numero della schermata in una variabile globale anzichรฉ in un valore letterale. La variabile deve avere lo stesso nome sia nel programma che nell'istruzione CALL SUBSCREEN.
Punti da ricordare
- I nomi degli elementi delle schermate secondarie all'interno di una schermata devono essere univoci
- Non dovresti avere OK_CODE o FCODE allegati alla schermata secondaria. L'OK_CODE della schermata principale stessa รจ OK_CODE della schermata secondaria
- Le schermate secondarie non possono avere moduli di dialogo contenenti SET TITLEBAR, SET PF-STATUS, SET SCREEN, LEAVE SCREEN o LEAVE TO SCREEN. Ciรฒ causerร un errore di runtime.
- ร necessario richiamarlo nella logica del flusso (sia PBO che PAI) della schermata principale.
- CALL SUBSCREEN non รจ consentito nelle istruzioni CHAIN..ENDCHAIN โโe LOOP ENDLOOP
- Non puรฒ avere un modulo AT EXIT-COMMAND
- I campi utilizzati sono i campi globali. Devono essere dichiarati nella parte superiore
- Se si utilizzano schermate secondarie da un altro programma di dialogo il trasferimento dei dati non avverrร a meno che non si aggiunga un codice specifico.
โ ๏ธ Attenzione: Inserire CALL SUBSCREEN all'interno di CHAIN โโโฆ ENDCHAIN โโo all'interno di un ciclo di schermate produce un errore di sintassi, e chiamare un numero di schermata inesistente produce un errore di runtime alla prima visualizzazione.

