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.

  • ๐ŸชŸ Definizione di base: Una sottoschermata รจ una schermata indipendente visualizzata all'interno di un'area definita di una schermata principale, e diverse sottoschermate possono condividere una singola schermata principale.
  • ๐Ÿงฉ Includi l'analogia: La logica di flusso della schermata incorporata viene inserita nella logica di flusso della schermata principale, esattamente come si inserisce un file include in un programma.
  • ๐Ÿชœ Tre passi: Definisci l'area del sottoschermo, definisci lo schermo del sottoschermo, quindi includi tale schermo nell'area.
  • ๏ธ Appello PBO: SOTTOSCHERMO DI CHIAMATA COMPRESO assegna un numero di schermata di quattro caratteri all'area ed esegue la relativa logica PBO.
  • ๏ธ Chiamata PAI: SOTTOSCHERMO DI CHIAMATA in PAI esegue la logica PAI della schermata incorporata e trasporta i dati dei campi con lo stesso nome.
  • ๐Ÿšซ restrizioni: Una sottoschermata non puรฒ utilizzare SET PF-STATUS, SET TITLEBAR, SET SCREEN, LEAVE SCREEN, un proprio OK_CODE o AT EXIT-COMMAND.
  • ๐ŸŒ Campi globali: I campi utilizzati da una sottoschermata sono campi globali dichiarati nell'include TOP del programma.

Sottoschermate ABAP

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

  1. Definire le aree secondarie su uno schermo
  2. Definire le schermate secondarie adatte
  3. 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.

Chiama la schermata secondaria SAP

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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. Richiamare la sottoschermata: Aggiungere CALL SUBSCREEN al PBO e al PAI della schermata principale, come mostrato di seguito.
  6. 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.

DOMANDE FREQUENTI

Una tabstrip รจ un contenitore le cui pagine a schede sono a loro volta aree di sottoschermo. Il sottoschermo rappresenta il contenuto, e la tabstrip si limita a decidere quale di queste sottoschermate รจ attualmente visibile all'utente.

Una schermata principale puรฒ contenere diverse sotto-schermate, e ciascuna area visualizza una sotto-schermata alla volta. Una sotto-schermata puรฒ a sua volta contenere ulteriori sotto-schermate, quindi l'annidamento รจ limitato solo dalle dimensioni dello schermo e dalla leggibilitร .

I dati vengono trasferiti solo tra campi dello schermo e campi del programma che hanno nomi identici e sono dichiarati a livello globale. Una sottoschermata prelevata da un altro programma non trasferisce nulla a meno che i valori non vengano passati esplicitamente tramite codice.

Sรฌ. Gli assistenti AI leggono il dump di sistema e la logica di flusso, quindi indicano le cause piรน comuni, come un numero di schermata mancante, un comando SET PF-STATUS non consentito all'interno della sottoschermata o un comando CALL SUBSCREEN inserito all'interno di CHAIN.

Gli strumenti di analisi basati sull'intelligenza artificiale scansionano un pool di moduli, rilevano le schermate con layout duplicati e propongono una singola sottoschermata riutilizzabile con le istruzioni CALL SUBSCREEN che le sostituiscono. La proposta viene esaminata prima che le schermate vengano eliminate.

Riassumi questo post con: