310 likes | 395 Vues
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 04. Előadás Vaspöri Gábor SAP fejlesztő Tel : 30 /510-6351 E-mail: vaspori.gabor@gmail.com Skype: vaspori.gabor. Tartalom. Ismétlés Listák
E N D
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 04. Előadás Vaspöri Gábor SAP fejlesztő Tel: 30/510-6351 E-mail: vaspori.gabor@gmail.com Skype: vaspori.gabor
Tartalom • Ismétlés • Listák • Lista parancsok • Többnyelvű listák • Házi feladat • ALV • Alapok • Mezőkatalógus • ALV_GRID vs. ALV_LIST
Ismétlés • 001 • Cache, nyelvválasztás • Saját adatok, variáns • SE80 beállítások • Debugger, pretty printer, etc. • SE11 – SE16 • SE37 – SE24 • 002 • Név konvenció • SY-mezők • Queryk • Debugger használata • 003 • PARAMETERS • SELECT-OPTIONS • Default, memory id, lower case, obligatory, no-extensions • SC block, commetn, pushbutton • Események • Load-of-program, init, start-of-selection, end-of-selection • At user command, at selection-screen output • Szövegelemek
Program típusok • Riportprogramozás • Futtatható alkalmazások • Klasszikus megjelenítés • Dialógusprogramozás • Komplett alkalmazások • Tranzakciók • Interakciók a felhasználókkal • Webprogramozás • Business-Server-Pages • Webdynpro-Anwendungen
Listák • ABAP-programban az első WRITE-utasítás váltja ki a lista létrehozását. • A REPORT-utasítás LINE-SIZE <s> és LINE-COUNT <m>kiegészítéseivel globálisan meghatározható a listaoldalak oszlop- és sorszáma.
Lista parancsok/1 • Listákon használható utasítások • WRITE • Kimentre kerülnek az utasítás mögött felsorolt szövegszimbólumok, karaktersorozatok. A ’/’ jellel soremelés hajtható végre. • MESSAGE • Az üzenetosztályokat a SE91-es tranzakción belül tudjuk megtekinteni/módosítani. • Az üzenetazonosító az üzenetosztályon belül 3 számjeggyel megjelölt egyedi üzenetet. • Típusok • ’E’: hibaüzenet • ’W’: figyelmeztető üzenet • ’S’: üzenet zöld jelzéssel • ’I’: üzenetablak ugrik fel
Lista parancsok/2 • FORMAT COLORSzínezi lehet a WRITE utasítás által kiíratott szöveget. FORMAT COLOR OFF-fal a színezés véget ér. • Példa: • FORMAT COLOR 4. • WRITE: 'Ez színes.'. • FORMAT COLOR OFF. • Színek számai például: • 1: kék • 2: világosszürke • 3: sárga • 4: sötétszürke • 5: zöld • 6: piros • 7: okkersárga • NEW-LINEÚj sor, a WRITE-utasításban a "/" jelnek felel meg. • RESERVE <n> LINESHa egy lista felépítésekor az aktuális oldalon nincs hely legalább <n> sor számára, akkor lapdobásra kerül sor. • SKIP <n><n> sor kihagyása a listán
Lista parancsok/3 • SKIP TO LINE <n> • Következő kivitel az n sorban (visszafelé pozicionálás is lehetséges). • BACK • RESERVE <n> LINES nélkül: • Visszaugrás az aktuális oldal első sorára a TOP-OF-PAGE után • RESERVE <n> LINES utasítással: Visszaugrás a RESERVE után kivitt első sorra • POSITION <n> • Következő kiviteli pozíció az aktuális sorban. • SET BLANK LINES ON/OFF • ON: Üres sorok kivitele, amelyek csak a szóközjelek kivitelével keletkeztek. • OFF: Üres sorok nem kerülnek kivitelre (standard beállítás). • A SKIP utasítással végrehajtott sok kihagyásokra nincs hatással.
Többnyelvű listák • A szövegelemeket a rendszer nyelvfüggően külön tárolja. • Egy létrehozott szövegelemet le tudunk fordítani olyan nyelvekre, amik telepítve vannak az SAP szerverre. • A bejelentkezés nyelvén keresztül vezérelhető (SY-LANGU), hogy melyik nyelven jelennek meg a szövegelemek.
Interaktív listák • Alaplista mellett maximum 20 elágazási lista • Trükk: Kattintásnál átállítani a rendszerváltozót 19-re. • Ugyanazok a funkciók elérhetők mint az alaplistánál • Navigáció • Egy lista szinttel visszalépni • Vissza (Zöld nyíl) • Megszakítás (Piros kereszt) • Szelekciós képhez visszalépni • Befejezés (sárga nyíl) • Események: • AT LINE SELECTION • Listán történő kattintáskor hívódik fel • AT USER-COMMAND • Felhasználói esemény váltja ki • TOP-OF-PAGE DURING LINE-SELECTION • Elágazási lista fejléce készíthető el vele
Elágazási lista létrehozása/2 • Ha a felhasználó kiváltja a PICK funkciót, akkor a program átveszi a vezérlést, és végrehajtja az AT LINE-SELECTION interaktív eseményt. Az ezt követő összes kivitel (WRITE) elágazási listán kerül kivitelre. • Az SY-LSIND rendszermező megadja az aktuális listaszintet, és annak értékét mindig közvetlenül az AT LINE-SELECTION esemény végrehajtása előtt eggyel megnöveli. A listaszintek maximális száma 20-ra korlátozódik. • A CASE-utasítás a listarendszer felülről való korlátozására is felhasználható. A példában nem készül harmadik elágazási lista:Ha a 2. elágazási listánál kiváltásra kerül az AT LINE-SELECTION esemény, akkor az SY-LSIND értékét a rendszer ugyan 3-ra állítja, ezt azonban a CASE-utasítás nem veszi értékként figyelembe, így a rendszer nem hajtja végre a WRITE-utasítást. Ez azt jelenti, hogy nem jön létre elágazási lista. Ehelyett a rendszer az SY-LSIND-t újra 2-re állítja, és megjeleníti a 2. elágazási listát.
HIDE Terület/1 • Az alaplista adatai elágazási listánál csak akkor állnak rendelkezésünkre, ha ezeket az adatokat pl. belső táblában pufferoltuk. Ha csak egy - a felhasználó által kiválasztott - sor információit szeretnénk megjeleníteni az elágazási listában, hivatkozást kell létrehoznunk a kiválasztott listasor és a belső tábla megfelelő sora között. Pontosan ezen követelmény leképezésére áll rendelkezésre a HIDE -technika. • A HIDE utasítással a mezőtartalmakra vonatkozó listasorok külön területen pufferolhatók. Ez esetben a rendszer a változónevet és az aktuális változótartalmat is tárolja. • A HIDE utasítással rendszerint kulcsmező-tartalmakat, vagy olyan információkat mentünk el, amelyek segítségével a későbbiekben a kiegészítő információkat ki tudjuk olvasni (SELECT ... WHERE .... ; READ TABLE). • Egy-egy listasor adatainak tárolásához a HIDE utasítást kell használni, mielőtt egy új sor elkezdődne, mivel az adatokat mindig az aktuális kiviteli sorral (SY-LILLI rendszermező) kapcsolatban tárolja a rendszer. • A HIDE-területre olyan mezőkis felvehetők, amelyek a listán nem jelennek meg. • Pl.: Z_PTTK_BLADE_04_1
HIDE Terület/3 • Hibás sorkiválasztás ellenőrzése • Fejléc, lábléc
Elágazási listák feliratai • A TOP-OF-PAGE esemény csak az alaplista létrehozása során kerül kiváltásra. • Elágazási listák oldalainak fejlécét a TOP-OF-PAGE DURING LINE-SELECTION esemény felhasználásával hozhatjuk létre. • A TOP-OF-PAGE DURING LINE-SELECTION utasítás az első kivitel (pl. WRITE) alkalmával minden új listaoldalon kiváltásra kerül
Lista létrehozása dialógusablakban/1 • A WINDOW STARTING AT utasítás hatására az aktuális elágazási lista egy modális dialógusablakban fog megjelenni. • A modális dialógusablak bal felső sarka a <c1> oszlop <r1> soránál található. A számolás a fő ablak bal felső sarkában található nulla/nulla pozíciónál kezdődik. Ha az <r1> kisebb vagy egyenlő nullánál, akkor a lista modális dialógusablak helyett a teljes képernyőn jelenik meg. • Az ENDING opcionális paraméterrel a modális dialógusablak szélessége és magassága vezérelhető. A jobb alsó sarok a <c2> oszlop <r2> sorába helyeződik. • Egy modális dialógusablak csak egyetlen nyomógombsort tartalmaz, vagyis nincs benne menü- és szimbólumsor.
Mezőkiválasztás/1 • A GET CURSOR utasítással lehetőség van elágazási listák - kurzorpozíciótól függő - létrehozására. Ha a felhasználó a fenti példában a CARRID-mezőre kattint, akkor megkapja a légitársaság nevét. Ha azonban az egyik CONNID-mezőre kattint, akkor az ehhez a járatcsatlakozáshoz tartozó összes járat-időpont jelenik meg. • A kiviteli mező nevét a FIELD paraméternél megadott mezőben bocsátja rendelkezésre a rendszer. A kiviteli érték a VALUE paraméternél megnevezett mezőben található. • A rendszer beállítja az SY-SUBRC visszatérési értéket: • '0' érték: a kurzor egy mezőn állt • '4' érték: a kurzor nem egy mezőn állt
Interaktív listák rendszermezői • SY-LSIND az aktuális lista indexe; • SY-LISTI az utoljára megjelenített lista indexe; • SY-LILLI a megjelenített lista kiválasztott sorának abszolút száma; • SY-CPAGE a megjelenített lista legfelső oldalának száma; • SY-CUCOL a megjelenített lista azon oszlopának száma az ablakban, amelyben a kurzor utoljára állt; • SY-CUROW a megjelenített lista azon sorának száma az ablakban, amelyben a kurzor utoljára állt; • SY-STACO a megjelenített lista első megjelenített oszlopának száma; • SY-STAROa legfelső megjele-nített oldal (SY-CPAGE) első látható sorának száma (jelen esetben a feliratsorok nem számítanak); • SY-UCOMMaz a funkciókód, amely a megjelení-tett listán az interak-tív eseményt kivál- • totta.
ALV • Adatok rendezett megjelenítése a képernyőn • A listás megjelenítés továbbfejlesztése • Alap funkciók • Rendezés, szűrés, exportálás, etc. • A belső rendszertábla tárolja (lvc_t_fcat) a megjelenítendő adatok tulajdonságait: • FIELDCATALOG • A mezőszimbólum létrehozása: • Automatikus (DDIC) • Manuális • Kettő keveréke
ALV létrehozása Funkciós modullal CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' EXPORTING i_callback_program = ‘<program_neve>’ i_structure_name = ‘<struktúra_neve>' TABLES t_outtab = gt_tabla. IF sy-subrc NE 0. MESSAGE ID sy-msgid TYPE ‘E’ NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. • Feladat: • Hozzunk létre programot, amely az SPFLI tábla adatait jeleníti meg ALV-ben.
ALV GRID vs. ALV LIST • Lista készítés FM segítségével: • CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY‘ • ALV grid készítés FM segítségével. • CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY' • Feladat: Az előző riportunkat bővítsük ki annyival, hogy először jelenjen meg egy szelekciós képernyő, ahol radio buttonok segítségével lehessen kiválasztani, hogy ALV_LIST-ként avagy ALV_GRID-ként szeretnénk a belső tábla tartalmát megjeleníteni. • Természetesen a LIST megjelenítési kódjának megírási is feladat.
Házi feladat/1 • 1. Hozz létre egy programot, aminek a bemenő paramétere a CARRID, CONNID, FLDATE mindegyik az SFLIGHT táblából. • 2. Ezeknek megfelelően szelektáld a táblát egy belső táblába. • 3. A szelekciós képernyőn hozz létre egy blokkot, 4 radiobuttonnal: • - Manuális lista; Automatikus lista; Manuális ALV; Automatikus ALV • Tipp: • 1. Deklaráció • 2. Szelekciós képernyő • 3. START-OF-SELECTION. • PERFORM get_data. • PERFORM create_field_catalog. • 4. CASE parameter. • WHEN ''. • PERFORM man_list. • WHEN ''. • PERFORM au_list. • WHEN ''.
Házi feladat/2 • Manuális lista • Hozz létre egy AT-LINE-SELECTION eseményt, ahol a megfelelő rendszerváltozóval kérdezd le, hogy milyen szintű listán kattintottál. • Alaplista esetén a GET_CURSOR parancs segítségével egy új listában jelenítsd meg a kattintott mező értékét (elég az első 3re vonatkozóan). • A további elágazási listák esetén hozz létre új listát, ahol az aktuálisan kattintott lista száma jelenjen meg (WRITE: 'A következő szinten állunk:' SY-listaszint) • Segítség a feladathoz: • Órán megoldott feladatok. • Órán bemutatott feladatok. (pl.: Z_PTTK_BLADE_04_4) • Google • Email: vaspori.gabor@gmail.com