PTE Természettudományi Kar Programtervező- és GazdaságInformatikus Szak 7624 Pécs, Ifjúság u. 6. http://www.ttk.pte.hu/ SAP-ABAP2 03. Előadás Vaspöri Gábor SAP fejlesztő Tel: 30/510-6351 E-mail: vaspori.gabor@gmail.com Skype: vaspori.gabor
Tartalom Szelekciós képernyő programozása PARAMETERS SELECT-OPTIONS Egyéb SC parancsok Események Beviteli ellenőrzés Lefutási logika SC módosítás Szövegelemek Házi feladat
Parameters/1 Felhasználó és program közti interfész, amivel a riport futását befolyásolhatjuk PARAMETERS, SELECTION-OPTIONS parancsok Egy programhoz több SC is lehet (SC-hez variáns!) PARAMETERS használata TYPE, vagy LIKE utasítással deklarálható Neve maximum 8 karakter hosszú lehet Kiegészítők: DEFAULT <érték> MEMORY ID <pid> SAP memory SET/GET utasításával érhető el Pl.: Saját adatok OBLIGATORY Kötelezően kitöltendő mezők AS CHECKBOX Értéke: ‘ ‘ vagy ‘X’
Parameters/2 RADIOBUTTON GROUP <grp> Csoportnév max 4 karakter Csak 1 lehet kijelölt Plusz pont!!! Mi a különbség deklaráláskor a TYPE és a LIKE parancs között??? (www.google.com sy-langu->HU || EN || DE )
Select-options/1 Összetett szelekció <seltab> típusú belső tábla Sign Option Low High Név max 8 karakter TYPE LIKE helyett FOR utasítás Példa kód (Werk) Z_PTTK_BLADE _01_1 SIGN: I (Include), E (Exclude) OPTION: EQ, NE, LE, LT, GE, GT, BT(Between), NB (Not betw), CP (Contains Pattern), NP (Contains Pattern not).
Select-options/2 Használatához TABLES utasítás kellene, DE: TABLES * ... (Obsolete) helyett DATA gs_... TYPE ... Példa kód (Z_PTTK_BLADE_03_2) Kiegészítések DEFAULT Seltab-Low (egyedi érték) Seltab-Low + Seltab-High (intervallum) Sign( default: I – Intern), Option(default: EQ - Equal) Pl. DEFAULT <val1> TO <val2> OPTION <xx> SIGN<x> MEMORY ID <pid> Az érték a Seltab-Low érték helyére kerül SAP memory SET/GET utasításával érhető el Pl.: Saját adatok LOWER CASE Kikapcsolhatjuk vele a bevitt adatok nagybetűre konvert. DDIC-nél ez nem működik OBLIGATORY Kötelezően megadandó mező (Jele: „?”) NO-EXTENSION Többszörös szelekció lehetőségének kivétele
Select-options/3 NO INTERVALS (Nincs kötőjel!) Intervallum (felső értékének) kikapcsolása Többszörös szelekciósegítségével továbbra is megadható intervallum: Példa (<”Felső korlát” >=„Alsó korlát”) MATCHCODE Keresési segítség SO-hoz való kapcsolása (F4)
Szelekciós képernyő/1 SELECTION-SCREEN Utasítással vezérelhető a szelekciós képernyő BEGIN/END OF BLOCK <blokk>. Blokkok hozhatók létre az összetartozó adatoknak WITH FRAME: Keret létrehozása TITLE: Kereten megjelenő szöveg Egymásba ágyazhatóak a blokkok (max. 5) SELECTION-SCREEN SKIP n. n sort kihagy a szelekciós képernyőn
Szelekciós képernyő/2 SELECTION-SCREEN BEGIN/END OF LINE Segítségével egy sorba több paraméter/megjegyzés is felvehető COMMENT Komment létrehozása Meg kell adni a kezdő pozíciót, és a kiviteli hosszt is COMMENT ... FOR FIELD <f> Paraméterhez köthető komment POSITION <pos> Segítségével egy adott soron belül a következő kivitel helyére pozícionálhatjuk a kurzort csak a ... BEGIN OF LINE ... END OF LINE blokkon belül használható SELECTION-SCREEN PUSHBUTTON 1(10) text-100 USER- COMMAND push1. Nyomógomb elhelyezése Text-100 -> Megjelenő szöveg, push1 -> Kiváltott esemény
Események/1 INITIALIZATION Egy végrehajtható programban csak egyszer kerül feldolgozásra, a szelekciós képernyő megjelenítése előtt. AT SELECTION-SCREEN OUTPUT Itt is végre lehetne hajtani az inicializációt SC PBO (Process Before Output) időpontja (rajz) Ami többször is felhívódik Itt hajtjuk végre a dinamikus képernyő módosítást LOOP AT SCREEN – Ezzel futásidőben változtatjuk az SC-t Példa kód Z_PTTK_BLADE_03_3
Események/2 Változók, struktúrák deklarálás Szelekciós képernyő kialakítás Iniciális PARAMETERS, SELECT-OPTION értékek megadása START-OF-SELECTION, ami mindig van, akár kiírjuk akár nem. End of selection, hol felhívjuk az „end_of_day” szubrutint
Beviteli ellenőrzések/1 AT SELECTION-SCREEN Hibadialógusok kezelése SC PAI (Process After Input) időpontja Hiba esetén (MESSAGE Exxx vagy MESSAGE Wxxx) az összes mezőt ismét bevitelre készre állítja a rendszer AT SELECTION-SCREEN ON <par> ill. ON <sel> Hiba esetén csak az adott részt helyezi bevitelre kész állapotba a rendszer AT SELECTION-SCREEN ON BLOCK <blokk> Egy-egy logikai csoport beviteli kombinációinak ellenőrzése
Beviteli ellenőrzések/2 AT SELECTION SCREEN ON RADIOBUTTON GROUP <radi> Rádiógomb esetén fut le AT SELECTION-SCREEN ON END OF <mező> Többszörös szelekciók PAI modulja AT SELECTION SCREEN ON EXIT-COMMAND Program befejezésekor fut le AT SELECTION SCREEN ON {HELP-REQUEST|VALUE- REQUEST} FOR <par>|<sel> Keresési segítség (F4), Leírás meghívása
Lefutási logika (riport) LOAD-OF-PROGRAM INITIALIZATION Szelekciós képernyő (ha van deklarálva) Szelekciós képernyőhöz tartozó események START-OF-SELECTION Ha ez a eseménykulcsszó hiányzik akkor a további (nem eseményhez tartozó) kódot úgy értelmezi mintha ebben lenne END-OF-SELECTION TOP-OF-PAGE Ha oldalváltás következik be (manuális, vagy automatikus) (pl.: Van egy hosszú lista, és nem fér ki 1 oldalra) AT USER-COMMAND Felhasználói eseménykor (nyomógomb, duplakatt, etc.)
Szelekciós képernyő módosítása AT SELECTION-SCREEN OUTPUT Mező kikeresése a SCREEN táblában Screen-mező Active, stb. stb. Modify screen Az átállított érték feltöltése Mező eltüntetése: Adott mező „Active” értékének ‘0’-ra állítása Példa kód Z_PTTK_BLADE_03_4
Szövegelemek Feliratok létrehozására Szelekciós opciók kiírására Szinte bármilyen (RÖVID) szöveges elemhez Legnagyobb előnye, hogy szinte a program minden részén elérhető Továbbá többnyelvű! Használat: Text-s00 Duplakattintás Szöveg beírása A szelekciós képernyő elemei is elérhetők Természetesen ezt is aktiválni kell
Szövegelemek fordítása Ugrás -> Fordítás Nyelv megadása Dupla kattintás Majd a fordítás
Házi feladat/1 Hozzunk létre egy programot: Z_TTK_Felh_03_01 Hozzunk létre egy szelekciós képet, ami így nézzen ki: A szövegelemeket fordítsuk le angolra is! (Hogy hogyan, lásd a 24-es dián!!!) Szelekciós opció: S_CAR típusa az SPFLI-CARRID mezője, kötelező mező S_CON típusa az SPFLI-CONNID mezője Paraméter: P_DATUM ami egyszerű dátum típusú mező (Iniciális érték: 03.11.2009) A légitársaság alapértelmezetten ‘LH’ legyen.
Házi feladat/2 Az előző szelekciós képernyőt alakítsuk át: A dátum paraméter alakítsátok szelekciós opcióvá Neve: S_FLDATE Típusa az SFLIGHT-FLDATE mezője Jelenítsétek és rejtsétek el egy checkbox állítgatásával Neve: p_datum Típusa: C Elrejtés SCREEN-active: 0/1