Tutorial pentru subecranele ABAP: Apelați subecranul în SAP

⚡ Rezumat inteligent

Subecranele ABAP încorporează un ecran într-o zonă a unui alt ecran în timpul execuției, împreună cu logica fluxului său. Această pagină explică zonele subecranelor, instrucțiunea CALL SUBSCREEN în PBO și PAI, transferul de date și restricțiile care cauzează erori în timpul execuției.

  • 🪟 Definiția de bază: Un subecran este un ecran independent afișat într-o zonă definită a unui ecran principal, iar mai multe subecrane pot partaja un ecran principal.
  • 🧩 Includeți analogia: Logica de flux a ecranului încorporat este inserată în logica de flux a ecranului principal, exact așa cum o includere este inserată într-un program.
  • 🪜 Trei pași: Definiți zona subecranului, definiți ecranul subecranului, apoi includeți ecranul respectiv în zonă.
  • ⌨️ Apel PBO: APEL SUBECRAN INCLUSIV atribuie un număr de ecran din patru caractere zonei și rulează logica sa PBO.
  • ⌨️ Apel PAI: APEL SUBECRAN În PAI, rulează logica PAI a ecranului încorporat și transportă datele câmpurilor cu nume identice.
  • 🚫 restricţii: Un subecran nu poate utiliza SET PF-STATUS, SET TITLEBAR, SET SCREEN, LEAVE SCREEN, un OK_CODE propriu sau AT EXIT-COMMAND.
  • 🌐 Câmpuri globale: Câmpurile utilizate de un subecran sunt câmpuri globale declarate în include-ul TOP al programului.

Subecranele ABAP

Ce este un subecran în SAP ABAP?

Înainte de a citi acest tutorial, asigură-te că știi ce este Program de dialog este.

  • Un subecran este un ecran independent care este afișat într-o zonă a altui ecran („principal”).
  • Subecranele vă permit să încorporați un ecran în altul în timpul rulării. Puteți include mai multe sub-ecrane pe ecranul principal.
  • Termenul subecran se aplică atât ecranului pe care îl încorporați, cât și zonei de pe ecranul principal în care îl plasați. Acest tutorial este despre zonele subecranului. Ecranele reale create prin tranzacția SE51 sunt numite ecrane subecran dacă sunt definite în atributele ecranului.
  • Când utilizați un subecran, logica de flux a ecranului încorporat este, de asemenea, încorporată în logica de flux a ecranului principal. Prin urmare, utilizarea subecranelor pe ecrane este ca și cum folosiți include în programe ABAP.

Pentru a utiliza un subecran, trebuie să urmați trei pași simpli

  1. Definiți zona (zonele) subecranului pe un ecran
  2. Definiți ecrane secundare adecvate
  3. Includeți ecranul subecranului în zona subecranului.

De asemenea, trebuie să ajustați cadrul subecranului și al ecranului principal. Trebuie să-l denumiți în câmpul cu numele câmpului.

De asemenea, trebuie să ajustați câmpurile din subecran pentru a le face să apară în ecranul principal. În cazul în care subecranul este definit ca fiind mai mare decât zona disponibilă din ecranul principal, va fi vizibilă doar partea din subecran care se încadrează în zona disponibilă. Zona este întotdeauna măsurată din colțul din stânga sus al ecranului. Prin urmare, ar trebui să aveți grijă adecvată atunci când definiți zonele sub-ecranului și creați sub-ecranele.

SUBSCREEN DE APEL

EXEMPLU

De exemplu, aici am definit două zone sub-ecran pe ecranul principal și am atașat două sub-ecran diferite la zonele corespunzătoare. Ori de câte ori este apelat ecranul principal, este apelat PBO al ecranului principal. Dar, înainte de afișare, sunt numite și PBO-urile fiecărui ecran atașat cu zone secundare pe ecranul principal.

Apelați subecranul SAP

Captura de ecran prezintă ecranul principal cu cele două zone ale subecranului umplute de două subecranuri separate.

Puteți include un ecran subecran utilizând instrucțiunea CALL SUBSCREEN în logica fluxului ecranului principal.

Apelarea subecranului în PBO

Pentru a include un ecran secundar în zona subecranului a ecranului principal și a apela logica fluxului PBO al acestuia, utilizați următoarea declarație în evenimentul PBO al ecranului principal:

PROCESS BEFORE OUTPUT.

CALL SUBSCREEN <area> INCLUDING [<prog>] <dynp>.

Această declarație atribuie ecranului secundar cu un număr în zona subecran numită . De asemenea, puteți specifica programul în care este definit ecranul subecran (opțional). Dacă nu specificați programul în mod explicit, sistemul caută ecranul secundar în același program ABAP ca și programul principal. Dacă nu găsește un ecran secundar corespunzător, apare o eroare de rulare. Logica fluxului PBO a ecranului secundar este de asemenea inclusă în același punct. Aceasta poate apela modulele PBO ale programului ABAP în care este definit ecranul subecran. La sfârșitul subecranului PBO, câmpurile globale din program sunt transmise oricăror câmpuri de ecran cu nume identic din ecranul subecran. Logica de flux PBO a ecranului secundar poate include ea însăși subecranele suplimentare.

Numele din zona subecranului trebuie introdus direct fără virgule. Puteți specifica numele și fie ca literale sau variabile. Dacă utilizați variabile, trebuie să declarați și să completați variabile cu nume identic în programul ABAP. Numărul ecranului trebuie să aibă 4 caractere. Dacă nu atribuiți un ecran subecran unei zone, acesta rămâne gol.

Apelarea subecranului în PAI

Pentru a apela logica fluxului PAI a ecranului secundar, utilizați următoarea declarație în logica fluxului PAI a ecranului principal:

PROCESS AFTER INPUT.

CALL SUBSCREEN <area>.

Această declarație include logica fluxului PAI a ecranului subecran inclus în zona subecranului în evenimentul PBO. Aceasta poate apela module PAI ale programului ABAP în care este definit ecranul subecran. Datele sunt transportate între câmpurile cu nume identic din ecranul subecran și programul ABAP fie atunci când evenimentul PAI este declanșat, fie la instrucțiunile FIELD corespunzătoare din logica fluxului PAI a ecranului subecran.

Cum se creează și se încorporează un subecran

Cei trei pași enumerați anterior sunt executați în ecran Painter și în logica de flux a ecranului principal. Secvența de mai jos creează un ecran principal cu o singură zonă de subecran.

  1. Creați zona subecranului: Deschideți ecranul principal, de exemplu ecranul 100, în meniul Ecran Painter (SE51). Alegeți Subecran elementul din bara de elemente, desenați-l pe layout și introduceți un nume precum SUB_AREA în câmpul Nume. Acest nume este utilizat ulterior în instrucțiunea CALL SUBSCREEN.
  2. Creați ecranul secundar: Creați un al doilea ecran, de exemplu ecranul 110, și setați tipul acestuia la Subecran în atribute. Un ecran secundar nu are un câmp de cod OK și nici o stare interfață grafică proprie.
  3. Plasați câmpurile: Desenați câmpurile de introducere pe ecranul 110. Păstrați aspectul în interiorul dimensiunii zonei subecranului, deoarece se afișează doar partea care se potrivește, măsurată din colțul din stânga sus.
  4. Declarați datele globale: Plasați câmpurile în secțiunea TOP include a pool-ului de module, astfel încât atât ecranul principal, cât și subecranul să citească aceleași variabile globale.
  5. Apelați subecranul: Adăugați CALL SUBSCREEN la PBO și la PAI-ul ecranului principal, așa cum se arată mai jos.
  6. Activează și testează: Activați ecranele și programul, apoi porniți tranzacția. Zona subecranului este umplută de ecranul 110, iar modulele sale rulează în cadrul logicii de flux a ecranului 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.

💡 Sfat: Stocați numărul ecranului într-o variabilă globală în loc de un literal atunci când zona trebuie să afișeze un subecran diferit în funcție de datele introduse de utilizator. Variabila trebuie să aibă același nume în program și în instrucțiunea CALL SUBSCREEN.

Puncte de reținut

  • Numele elementelor sub-ecranelor dintr-un ecran ar trebui să fie unice
  • Nu ar trebui să aveți OK_CODE sau FCODE atașat la subecran. OK_CODE al ecranului principal în sine este OK_CODE al subecranului
  • Ecranele secundare nu pot avea module de dialog care să conțină SETARE BARĂ DE TITLUL, SETARE STARE PF, SETARE ECRAN, LEAVE SCREEN sau LEAVE TO SCREEN. Acest lucru va cauza o eroare de rulare.
  • Trebuie să îl apelați în logica fluxului (atât PBO, cât și PAI) a ecranului principal.
  • CALL SUBSCREEN nu este permis în instrucțiunile CHAIN..ENDCHAIN ​​și LOOP ENDLOOP
  • Nu se poate avea un modul AT EXIT-COMMAND
  • Câmpurile pe care le utilizați sunt câmpurile globale. Ele trebuie să fie declarate în top include
  • Dacă utilizați subecrane de la altul program de dialog transferul de date nu va avea loc decât dacă adăugați un anumit cod.

⚠️ Atenție: Plasarea comenzii CALL SUBSCREEN în interiorul comenzii CHAIN ​​… ENDCHAIN ​​sau în interiorul unei bucle de ecran produce o eroare de sintaxă, iar apelarea unui număr de ecran care nu există produce o eroare de execuție la primul afișaj.

Întrebări frecvente

O tabstrip este un container ale cărui pagini cu tab-uri sunt ele însele zone de subecran. Subecranul este conținutul, iar tabstrip decide doar care dintre aceste subecranuri este vizibil în prezent utilizatorului.

Un ecran principal poate conține mai multe zone de subecran, iar fiecare zonă afișează câte un subecran odată. Un subecran poate încorpora el însuși alte subecranuri, astfel încât imbricarea este limitată doar de dimensiunea ecranului și de lizibilitate.

Datele sunt transportate doar între câmpurile de ecran și câmpurile de program care poartă nume identice și sunt declarate global. Un subecran preluat dintr-un alt program nu transportă nimic, cu excepția cazului în care valorile sunt transmise explicit prin cod.

Da. Asistenții inteligenți artificiali citesc scurtul dump și logica fluxului, apoi indică cauzele obișnuite, cum ar fi un număr de ecran lipsă, un SET PF-STATUS interzis în subecran sau un CALL SUBSCREEN plasat în CHAIN.

Instrumentele de analiză bazate pe inteligență artificială scanează un grup de module, detectează ecrane cu machete duplicate și propun un singur subecran reutilizabil cu instrucțiunile CALL SUBSCREEN care le înlocuiesc. Propunerea este revizuită înainte ca ecranele să fie șterse.

Rezumați această postare cu: