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.

Š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
- Definirajte područja podzaslona na zaslonu
- Definirajte odgovarajuće podzaslone
- 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.
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.
- 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.
- 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.
- 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.
- Deklarirajte globalne podatke: Polja stavite u TOP include skupa modula, tako da i glavni ekran i podekrani čitaju iste globalne varijable.
- Pozovite podzaslon: Dodajte POZIVNI SUBSCREEN na PBO i na PAI glavnog zaslona, kao što je prikazano dolje.
- 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.

