Vodič za podzaslone ABAP: Pozovite podzaslon SAP

⚡ Pametni sažetak

ABAP podzasloni ugrađuju jedan zaslon unutar područja drugog zaslona za vrijeme izvođenja, zajedno s njegovom logikom toka. Ova stranica objašnjava područja podzaslona, ​​naredbu CALL SUBSCREEN u PBO i PAI, prijenos podataka i ograničenja koja uzrokuju pogreške za vrijeme izvođenja.

  • 🪟 Osnovna definicija: Podzaslon je neovisni zaslon prikazan unutar definiranog područja glavnog zaslona, ​​a nekoliko podzaslona može dijeliti jedan glavni zaslon.
  • 🧩 Uključi analogiju: Logika toka ugrađenog zaslona umetnuta je u logiku toka glavnog zaslona, ​​točno kao što se include umetne u program.
  • 🪜 Tri koraka: Definirajte područje podzaslona, ​​definirajte zaslon podzaslona, ​​a zatim uključite taj zaslon u područje.
  • ⌨️ Poziv PBO-a: POZOVI PRETPLATNIČKI ZASLON UKLJUČUJUĆI dodjeljuje području broj zaslona od četiri znaka i pokreće njegovu PBO logiku.
  • ⌨️ PAI poziv: POZOVI PRETPLATNIČKI ZASLON U PAI-ju pokreće PAI logiku ugrađenog zaslona i prenosi podatke identično imenovanih polja.
  • ???? Ograničenja: Podzaslon ne smije koristiti SET PF-STATUS, SET TITLEBAR, SET SCREEN, LEAVE SCREEN, vlastiti OK_CODE ili AT EXIT-COMMAND.
  • 🌐 Globalna polja: Polja koja koristi podzaslon su globalna polja deklarirana u TOP includeu programa.

ABAP podzasloni

Što je podzaslon u SAP ABAP?

Prije nego što pročitate ovaj tutorial, provjerite znate li što Program dijaloga je.

  • Podzaslon je neovisni zaslon koji se prikazuje u području drugog ("glavnog") zaslona.
  • Podzasloni vam omogućuju da ugradite jedan zaslon u drugi tijekom izvođenja. Na glavni zaslon možete uključiti više podzaslona.
  • Izraz podzaslon odnosi se i na zaslon koji ugradite i na područje na glavnom zaslonu u koje ga postavite. Ovaj vodič govori o područjima podzaslona. Stvarni zasloni kreirani putem SE51 transakcije nazivaju se podzasloni ako su definirani u atributima zaslona.
  • Kada koristite podzaslon, logika toka ugrađenog zaslona također je ugrađena u logiku toka glavnog zaslona. Dakle, korištenje podzaslona na zaslonima je kao korištenje uključuje u ABAP programi.

Za korištenje podzaslona morate slijediti tri jednostavna koraka

  1. Definirajte područja podzaslona na zaslonu
  2. Definirajte odgovarajuće podzaslone
  3. Uključite podzaslon u područje podzaslona.

Također, trebate prilagoditi okvir podzaslona i glavnog zaslona. Morate ga imenovati u polju za naziv polja.

Nadalje, također trebate prilagoditi polja unutar podzaslona kako bi se pojavila na glavnom zaslonu. U slučaju da je podzaslon definiran kao veći od dostupnog područja na glavnom zaslonu, bit će vidljiv samo dio podzaslona koji stane u dostupno područje. Područje se uvijek mjeri od gornjeg lijevog kuta zaslona. Stoga biste trebali biti oprezni pri definiranju područja podzaslona i stvaranju podzaslona.

POZIV PODEKRAN

PRIMJER

Na primjer, ovdje smo definirali dva podzaslona na glavnom ekranu i priložili dva različita podzaslona odgovarajućim područjima. Kad god se pozove glavni zaslon, poziva se PBO glavnog zaslona. Ali prije prikaza pozivaju se i PBO-ovi svakog zaslona koji su povezani s područjima podzaslona na glavnom zaslonu.

Nazovi Subscreen unutra SAP

Snimka zaslona prikazuje glavni zaslon s dva podzaslonska područja ispunjena s dva odvojena podzaslona.

Zaslon podzaslona možete uključiti pomoću naredbe CALL SUBSCREEN u logici tijeka glavnog zaslona.

Pozivanje podzaslona u PBO-u

Za uključivanje podzaslona u područje podzaslona glavnog zaslona i pozivanje njegove PBO logike toka, upotrijebite sljedeću izjavu u PBO događaju glavnog zaslona:

PROCESS BEFORE OUTPUT.

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

Ova izjava dodjeljuje podzaslon s brojem na podzaslonsko područje tzv . Također možete odrediti program u kojem je definiran podzaslon (opcija). Ako izričito ne navedete program, sustav traži ekran podzaslona u istom ABAP programu kao i glavni program. Ako ne pronađe odgovarajući zaslon podzaslona, ​​javlja se pogreška vremena izvođenja. PBO logika toka podzaslona također je uključena na istoj točki. Ovo može pozvati PBO module programa ABAP u kojem je definiran podzaslon. Na kraju podzaslona PBO, globalna polja iz programa prosljeđuju se svim ekranskim poljima s identičnim nazivom na podzaslonu. PBO logika toka ekrana podzaslona može sama uključivati ​​daljnje podzaslone.

Ime područja podzaslona mora se unijeti izravno bez navodnika. Možete odrediti imena i bilo kao literale ili varijable. Ako koristite varijable, morate deklarirati i ispuniti varijable s istim imenom u ABAP programu. Broj zaslona mora imati 4 znaka. Ako nekom području ne dodijelite podzaslon, ono ostaje prazno.

Pozivanje podzaslona u PAI-ju

Da biste pozvali PAI logiku toka zaslona podzaslona, ​​upotrijebite sljedeću izjavu u PAI logici toka glavnog zaslona:

PROCESS AFTER INPUT.

CALL SUBSCREEN <area>.

Ova izjava uključuje PAI logiku toka podzaslonskog zaslona uključenog u podzaslonsko područje u PBO događaju. Ovo može pozvati PAI module programa ABAP u kojem je definiran podzaslon. Podaci se prenose između polja s identičnim nazivom na podzaslonu i ABAP programu bilo kada se aktivira PAI događaj, bilo u odgovarajućim FIELD izjavama u PAI tokovnoj logici podzaslona.

Kako stvoriti i ugraditi podzaslon

Tri prethodno navedena koraka provode se na ekranu Painter i u logici toka glavnog zaslona. Slijed u nastavku stvara jedan glavni zaslon s jednim područjem podzaslona.

  1. Stvorite područje podzaslona: Otvorite glavni zaslon, na primjer zaslon 100, u odjeljku Zaslon Painter (SE51). Odaberite Podzaslon element iz trake elemenata, nacrtajte ga na rasporedu i unesite naziv kao što je SUB_AREA u polje Naziv. Taj se naziv kasnije koristi u naredbi CALL SUBSCREEN.
  2. Izradite podzaslonski ekran: Izradite drugi zaslon, na primjer zaslon 110, i postavite njegovu vrstu zaslona na Podzaslon u atributima. Podzaslonski zaslon nema polje OK koda i nema vlastiti GUI status.
  3. Postavite polja: Nacrtajte polja za unos na zaslonu 110. Zadržite raspored unutar veličine područja podzaslona jer se prikazuje samo dio koji stane, mjereno od gornjeg lijevog kuta.
  4. Deklarirajte globalne podatke: Polja stavite u TOP include skupa modula, tako da i glavni ekran i podekrani čitaju iste globalne varijable.
  5. Pozovite podzaslon: Dodajte POZIVNI SUBSCREEN na PBO i na PAI glavnog zaslona, ​​kao što je prikazano dolje.
  6. Aktivirajte i testirajte: Aktivirajte zaslone i program, a zatim pokrenite transakciju. Područje podzaslona popunjeno je zaslonom 110, a njegovi moduli se izvode unutar logike toka zaslona 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.

💡 Savjet: Pohranite broj zaslona u globalnu varijablu umjesto u literal kada područje mora prikazivati ​​​​drugi podzaslon ovisno o korisničkom unosu. Varijabla mora imati isto ime u programu i u naredbi CALL SUBSCREEN.

Zapamtite

  • Imena elemenata podzaslona unutar ekrana trebaju biti jedinstvena
  • Ne biste trebali imati OK_CODE ili FCODE priložen uz podzaslon. Sam OK_CODE glavnog zaslona je OK_CODE podzaslona
  • Podzasloni ne mogu imati dijaloške module koji sadrže POSTAVITE NASLOVNU TRAKU, POSTAVITE PF-STATUS, POSTAVITE ZASLON, NAPUSTI ZASLON ili NAPUSTI ZASLON. To će uzrokovati pogrešku vremena izvođenja.
  • Morate ga pozvati u logici toka (i PBO i PAI) glavnog zaslona.
  • CALL SUBSCREEN nije dopušten u izjavama CHAIN..ENDCHAIN ​​i LOOP ENDLOOP
  • Ne može imati modul AT EXIT-COMMAND
  • Polja koja koristite su globalna polja. Moraju biti deklarirani u vrhu uključivanja
  • Ako koristite podzaslone iz drugog dijaloški program prijenos podataka neće se dogoditi ako ne dodate određeni kod.

⚠️ Upozorenje: Postavljanje CALL SUBSCREEN unutar CHAIN ​​… ENDCHAIN ​​ili unutar petlje zaslona LOOP stvara sintaktičku pogrešku, a pozivanje broja zaslona koji ne postoji stvara pogrešku u izvođenju pri prvom prikazu.

Pitanja i odgovori

Traka s karticama je spremnik čije su stranice s karticama same po sebi područja podzaslona. Podzaslon je sadržaj, a traka s karticama samo odlučuje koji je od tih podzaslona trenutno vidljiv korisniku.

Glavni zaslon može sadržavati nekoliko podzaslona, ​​a svako područje prikazuje jedan podzaslon odjednom. Podzaslon može sam po sebi ugraditi daljnje podzaslone, tako da je ugniježđivanje ograničeno samo veličinom zaslona i čitljivošću.

Podaci se prenose samo između polja zaslona i programskih polja koja nose identična imena i deklarirana su globalno. Podzaslon preuzet iz drugog programa ne prenosi ništa osim ako vrijednosti nisu eksplicitno proslijeđene kodom.

Da. AI asistenti čitaju kratki ispis i logiku toka, a zatim ukazuju na uobičajene uzroke, kao što su nedostajući broj zaslona, ​​zabranjeni SET PF-STATUS unutar podzaslona ili CALL SUBSCREEN postavljen unutar CHAIN-a.

Alati za analizu umjetne inteligencije skeniraju skup modula, otkrivaju zaslone s dupliciranim rasporedima i predlažu jedan višekratno upotrebljiv podzaslon pomoću naredbi CALL SUBSCREEN koje ih zamjenjuju. Prijedlog se pregledava prije nego što se zasloni izbrišu.

Sažmite ovu objavu uz: