Képernyő típusok
Két fő képernyőfajtát használhatunk:
- Szelekciós képernyő
- Dynpro
Amikor egy reportot készítünk, akkor rendszerint a Szelekciós képernyőt látjuk először.
A report elején lévő programkódok lefutnak,
és ennek az eredménye látható a képernyőn. Amikor valamilyen eseményt kiváltunk, akkor a megfelelő eseményhez
definiált programkód hajtódik végre, és az jelenik meg a Szelekciós képernyőn. Ezen eseményekhez tartozó kódok
is ebben a reportban vannak, a megfelelő esemény fejléc alatt. Ezek a blokkok vagy a fájl végéig tartanak,
vagy egy újabb ilyen esemény fejlécig, vagy egy saját függvénydefinícióig (form, perform). A Screen Painter
használata nélkül hozható létre képernyő. Rendszerint egy programhoz egy alap Szelekciós képernyő tartozik,
de definiálható több is.
Egy Dynpro máshogy működik. Minden dynpro - egy képernyő - egy programhoz tartozik, például egy
reporthoz. Ezenkívül egy szám is egyértelműen tartozik hozzá, ez 1 és 999 között adható meg - a 0 foglalt, az
előző képernyőt jelenti, míg az 1000-es az alap Szelekciós képernyőt -. Ennek segítségével a reportunkból,
átválthatunk egy dynpro-ra a
call screen utasítás segítségével. Egy dynpro-t grafikusan létre kell hozni,
a Screen Painterrel.
Képernyő események
Alapvetően négy fajta képernyő eseménnyel találkozhatunk:
- PAI (Process After Input)
- PBO (Process Before Output)
- POH (Process On Help Request)
- POV (Process On Value Request)
Az első akkor hajtódik végre, mielőtt a képernyő megjelenítésre kerül, a második pedig akkor, amikor a képernyőről
továbblépünk, a harmadik akkor, amikor egy beviteli mezőben állva F1 gombot nyomunk, míg a negyedik akkor amikor egy beviteli
mezőn állva F4-et nyomunk. Az utóbbi kettő konkrét esemény, míg az első kettő eseménytípust jelent.
Szelekciós képernyő készítés
Ez egy speciális képernyőtípus, amit definiálni lehet futtatható programban, függvénycsoportokban,
illetve modulokban. A globális deklarációs részben definiálható a következő utrasításokkal:
- SELECT-OPTIONS
- SELECTION-SCREEN
- PARAMETERS
Ugyanazon névtérben van, mint a többi - a programunkhoz definiált - képernyő.
Amikor egy ABAP program meghívásra kerül, a Szelekciós képernyőt,
illetve a hozzátartozó vezérlési logikát és vezérlőket is automatikusan legenerálja.
Rendszerint két feladata lehet egy ilyen képernyőnek:
- A felhasználótól bekérni paramétereket (egyszerű értékeket), és szelekciós kritériumokat (összetett értékeket)
- Egy futtatható program interfészét jeleníti meg, aminek a kitöltése után futtathatjuk a programot
Nincs lehetőség dialogus ablak definiálására az ABAP programban, ezért különböző események adódnak a képernyő
feldolgozása folyamán, és ezeket lehet lekezelni.
Standard Szelekciós képernyő elemei
Ezen elemek felhaszálásaval beleszólásunk van a képernyőn megjelenő információk megjelenésébe.
Egy szelekciós képernyő maximális szélessége 83 karakter. Ha ezt túllépjük, akkor a képernyő
vagy le lesz vágva a 83. karakternél, vagy nem generálódik le. Kereten belüli tartalom esetén,
a megjelenített hossz a kerethez igazodik.
Minden képernyő elem, ami a SELECTION-SCREEN utasítással lett létrehozva, ugyanazon névtérben
van. Ez akkor is így van, ha különböző szelekciós képernyőkről van szó. Ezt is figyelembe
kell venni az olyan elemek definiálásánál, amikhez globális objektum is generálódik.
Ha egy elemet más szelekciós képernyőn is használni szeretnénk, akkor a SELECTION-SCREEN
utasítás INCLUDE kiegészítését kell használni.
A MODIF és ldb_additions magyarázatától eltekintünk, ehhez szükséges a logikai adatbázisok
használatának, illetve a speciális megjelenítések ismerete.
SELECTION-SCREEN SKIP [n] [ldb_additions].
Ez az utasítás
n üres sort hoz létre.
Az
n értékét közvetlenül kell megadni, egyjegyű pozitív számként.
Az
n elhagyása esetén egy üres sor jön létre.
SELECTION-SCREEN ULINE [[/][pos](len)] [MODIF ID modid]
[ldb_additions].
Ez az utasítás vízszintes vonalat hoz létre, alapértelmezettként 83 pozíció hosszan.
A
(pos,len) megadása esetén a
pos pozíciótól,
len hosszan készít vonalat.
Szükség lehet arra is, hogy egy sorban az aktuális pozíciótól rajzoljunk vonalat,
ekkor a
pos elhagyható.
SELECTION-SCREEN COMMENT [/][pos](len)
{text|{[text] FOR FIELD sel}}
[VISIBLE LENGTH vlen]
[MODIF ID modid]
[ldb_additions].
Ez az utasítás egy kimeneti mezőt hoz létre, a
text-ben megadott szöveget írja ki. A
(pos,len) jelentése megegyezik az
ULINE-nál kifejtettekkel.
A
FOR FIELD sel megadása esetén,
a
sel paraméter, vagy szelekciós kritériumhoz fog tartozni ez a mező. Ez a mező is láthatatlanná
válik, ha a
sel elem láthatatlanra lett állítva.
VISIBLE LENGTH vlen megadása esetén a mező
megjelenítési hosszát adhatjuk meg. Ha
vlen nagyobb mint
len, akkor
len hosszú lesz. Ha
vlen
kisebb mint
len, akkor
vlen hosszan jelenik meg a szöveg, de görgethető a tartalom, illetve
egér fölévitelekor megjelenik a teljes szöveg.
SELECTION-SCREEN PUSHBUTTON [/][pos](len) button_text
USER-COMMAND fcode
[VISIBLE LENGTH vlen]
[MODIF ID modid]
[ ldb_additions].
Ez az utasítás egy nyomógombot hoz létre, a
button_text-ben megadott szöveggel. A
(pos,len) jelentése megegyezik az
ULINE-nál kifejtettekkel.
USER-COMMAND fcode
itt lehet megadni a funkció kódot a nyomógombhoz (maximum 20 karakter lehet).
VISIBLE LENGTH vlen mint a korábbi vezérlőknél.
A gomb használata előtt deklarálni kell táblaként a
SSCRFIELDS struktúrát az ABAP szótárból.
Amikor a gomb megnyomásra kerül, a futtató környezet kiváltja az
AT SELECTION-SCREEN eseményt,
és a gomb funkciókódja átadásra kerül a programnak, megfelelő ucomm komponensként az
SSCRFIELDS
segítségével.
SELECTION-SCREEN BEGIN OF LINE.
...
[SELECTION-SCREEN POSITION pos [ldb_additions]].
...
SELECTION-SCREEN END OF LINE.
Ez az utasítássorozat, a sorok közvetlen kialakításában segít. Egy ilyen blokkban megadott elemek,
helykihagyás nélkül, egymás után kerülnek megjelenítésre. Több
SELECTION-SCREEN POSITION ... utasítás
következhet egymás után. A pos értéke 1 és 83 között lehet.
A következő szabályok vonatkoznak a blokkban előforduló elemekre:
- SELECT-OPTIONS nem fordulhat elő, viselkedés ilyenkor nem definiált
- Nem ágyazható egymásba több ilyen sorblokk
- Nem definiálható blokk benne
- A / szimbólum nem használható a formázás során
- Elhagyható a pos paraméter
- Automatikusan nem definiálódnak a megjelenített vezérlők szöveges azonosítói, ezek manuálisan a
SELECTION-SCREEN COMMENT-tel létrehozhatóak
SELECTION-SCREEN BEGIN OF BLOCK block
[WITH FRAME [TITLE title]]
[NO INTERVALS].
...
SELECTION-SCREEN END OF BLOCK block.
Ez az utasítássorozat, vezérlőkből készített blokkok, csoportok létrehozására használható,
block névvel.
Minden képernyő elem, amit a
PARAMETERS,
SELECT-OPTIONS és
SELECTION-SCREEN definiál ezen blokkban,
részét képezik a blokknak.
... WITH FRAME [TITLE title] egy keretet rajzol a blokk köré,
title pedig a blokk neveként fog megjelenni.
... NO INTERVALS megadása esetén, a blokk szélessége akkorára állítódik, amennyi a benne lévő kitöltött vezérlők
méretének szükséges.
SELECTION-SCREEN FUNCTION KEY n [ldb_additions].
Ezzel az utasítással lehetőségünk van funkciógombok definiálására az alkalmazás eszközpanelján.
Ebből összesen 5 lehet, melyek neve
FC01-től
FC05-ig terjed. Ezekhez a gombokhoz a megfelelő
FC01..FC05 funkció kódok tartoznak. Az
SSCRFIELDS adatszótár elem definiálására szükség van a használatához.
A gomb szövege változtatható, mégpedig a következőképpen: ha az
FC02-nek a feliratát akarjuk megadni,
akkor az
SSCRFIELDS struktúra
functxt_2n mezőjének kell értékül adnunk a kívánt szöveget.
Ezen gombok megnyomásakor végrahajtódik az
AT SELECTION-SCREEN esemény, a megfelelő FC0
n
funkciókód átadásra kerül.
Szelekciós képernyő eseményei
AT SELECTION-SCREEN
{ OUTPUT }
| { ON {para|selcrit} }
| { ON END OF selcrit }
| { ON BLOCK block }
| { ON RADIOBUTTON GROUP radi }
| { }
| { ON {HELP-REQUEST|VALUE-REQUEST}
| FOR {para|selcrit-low|selcrit-high} }
| { ON EXIT-COMMAND }.
Ezek jelentése a következő:
... OUTPUT
Ez a Szelekciós képernyő PBO (Process Before Output) - a képernyőre kerülés előtt fut le - eseménye.
Ekkor lehetőség van dinamikus képernyő módosításokra, illetve a paraméterek és szelekciós kritériumok
elkészítésére a képernyőhöz. Ez minden egyes aktiválásnál lefut, ezért a szelekciós képernyőn az
egyes megjelenő mezők változtatása esetén, ez felülírja az esetleges felhasználó által, az előző
aktiváláskor felvitt értékeket.
LOAD-OF-PROGRAM,
INITIALIZATION szekciók
használhatóak azokra az esetekre, amikor csak a program elején akarunk értékeket beállítani (default értékek).
... ON {para|selcrit}
Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Akkor hajtódik végre, amikor
a megadott parameter, vagy szelekciós kritérium került aktiválásra. Ekkor lehet a felhasználó által az adott
vezérlőben lévő tartalmat ellenőrizni, és esetlegesen valamilyen üzenetet küldeni a felhasználónak.
Amennyiben ilyen üzenet (warning, error) küldésre kerül, ismét megjelenik a képernyő, és a fókusz az adott
vezérlőre kerül. A parameter nem lehet Radiobutton.
... ON END OF selcrit
Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Akkor hajtódik végre, amikor
a megadott szelekciós kritérium került aktiválásra, úgy hogy teljesen ki lett töltve.
Ekkor a teljes szelekciós táblában lévő tartalmat ellenőrizni lehet.
... ON BLOCK block
Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Akkor hajtódik végre, amikor
a megadott blokk minden beviteli mezője került átadásra a programnak.
Ekkor a teljes blokkban lévő tartalmat ellenőrizni lehet. Üzenetküldés esetén, ismét módosíthatóak
lesznek az beviteli mezők.
... ON RADIOBUTTON GROUP radi
Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Akkor hajtódik végre, amikor
a megadott Radiobutton csoport került átadásra a programnak.
Üzenetküldés esetén, ismét módosíthatóak lesznek az gombok állapotai.
... { }
Ez egy PAI (Process After Input) - adatbevitel után - eseménye a képernyőnek. Ez a blokk hajtódik végre utoljára
a Szelekciós képernyő feldolgozása során. Itt minden felhasználói adatbevitel ellenőrizhatő, gyakran csak ennek
az eseménynek a kezelésére van szükség.
Üzenetküldés (warning, error) esetén, ismét módosítható lesz az összes beviteli mező a képernyőn.
... { ON { HELP-REQUEST | VALUE-REQUEST } FOR
{para|selcrit-low|selcrit-high} }
Az
ON HELP-REQUEST és az
ON VALUE-REQUEST események akkor váltódnak ki (POH és POV), amikor a
szelekciós képernyő mezőjében - az a mező, ami vagy a
para paraméter mezője, vagy a
selcrit szelekciós
kritériumának egyik mezője - F1 vagy F4 gombnyomás történik. Ekkor más események nem váltódnak ki.
Ekkor ezekben az esemény blokkokban, általunk definiált bevitelimező hozható létre, ami felülírja
a rendszer alapértelmezett viselkedését.
Ezek a blokkok csak az ugyanazon programban definiált vezérlőkre implementálhatóak.
Ekkor nincs adatmozgás a képernyő és az Abap program között. A változtatások, amik a paramétert vagy a
szelekciós kritériumot érintik, azok módosításra kerülnek a képernyőn is.
... ON EXIT-COMMAND
Ez a blokk akkor hajtódik végre, ha a Szelekciós képernyőn a
Cancel,
Back,
Exit vezérlőgombok valamelyike
kerül megnyomásra. Ekkor a vezérlők, változók takarítására kerülhet a sor.