Bevezetés az SAP világába Zolnai László zolnai@elte.hu http://zolnai.web.elte.hu/bev_sap.html 4. Az ABAP fejlesztıi környezet 1
Tartalom Fejlesztés SAP-ban Az ABAP ABAP Dictionary A fejlesztıi környezet Fejlesztés folyamata Példaprogramok 2 2
SAP Testreszabás eszközei A testreszabás hosszú folyamat A testreszabási feladatok lehetnek: Nagyon egyszerők Iparág specifikusak (bonyolultak) A vállalat szakértı felhasználói és az SAP tanácsadók közösen végzik IMG (Implementacion Guide) - Customizing elektronikus kézikönyv, a vállalati igényeket a speciális üzleti igényeknek felelteti meg 3 A testreszabás nagyon fontos eleme az SAP rendszer imlementációjának. A rendszer átvétele után, amikor az összes kiválasztott modul rendelkezésre áll, be kell állítani a rendszert. IMG - interaktív modell, projektek szervezésére, megvalósítására vonatkozó javaslatok automatikus létrehozását segíti. Segítik a tanácsadók munkáját speciális üzleti igényeknek megfeleltetı sablonok segítségével 3
Módosítás vs. bıvítés Egy objektumból csak egyetlen eredeti változat létezik az egész világon, minden további másolat A másolatokat módosítani veszélyes, mert ha az eredetit frissítik, akkor elágazik a fejlesztés Standard alkalmazások User-exitek és egyéb bıvítés Vásárlói programok Testreszabás Módosítás Kibıvítés Vásárlói fejlesztés IMG Abap Workbench 4 Standard módosítás a ügyfeles fejlesztık réme, mert egy patch bármikor felülcsaphatja a módosításaikat. A fejlesztık tartják a létrát a tanácsadóknak, hogy fent meszelhessenek. 4
Bıvítési lehetıségek User-exit Standard program által meghívott, customer namespaceben található eljárás Include structure Standard program által adatstruktúrába beágyazott vásárlói struktúra Append structure Vásárló általi struktúra kibıvítés, anélkül, hogy erre számított volna a standard fejlesztıje Subscreen A standard fejlesztı által felajánlott képernyıterület, melyre a vásárló mezıket helyezhet el Menu exit Menüstruktúra bıvítésére használható 5 User-exit Lukak a sztenderd kódban, saját programrészek beszúrására. Include structure DDIC-ben kiegészítés Append structure DDIC-ben hozzáfőzés Subscreen Rejtett mezık felfedése, esetleg képernyı terület beszúrása. (HR Infótípus módosítás) Menu exit Input kiegészítés 5
ABAP jelentése Allgemeiner Berichtsaufbereitungsprozessor Advanced Business Application Programming 6 Az SAP üzleti alkalmazás kernelje, A C-ben íródott rendszermag kivételével minden alkalmazást ABAP-ban írtak. ABAP magyarul: fejlett üzleti alkalmazás programozása ABAP németül: generic report preparation processor 6
ABAP jellemzıi 80-as években indult 4GL-nyelv Több nyelven elérhetı Beágyazott SQL-ek használata: Open SQL Lépést tartott a programozási paradigmaváltásokkal, típusos Objektum-orientált kiegészítéssel rendelkezik Platform-független Létezik JAVA,.Net konnektor 7 A 70 években a nyelv az R/2 rendszer makrófordítójaként mőködött, és kizárólag listák elıállítására lehetett használni. A 80 években alkalmassá tették üzleti alkalmazások fejlesztésére. A 90 évek óta, az R/3 rendszer megjelenésével az ABAP a negyedik generációba lépett. Az R/3-as rendszer 4.6-os verziójával megjelent az ABAP Objects, amely a klasszikus, procedurális ABAP objektumorientált továbbfejlesztése. OOP rugalmasabb használat. A 4GL eszköz: Futtatható állomány generálása, Objektumorientáltság, Grafikus felhasználói felület, Szabványosság és rugalmasság, Moduláris programfelépítés, Csoportmunka-támogatás, Segédprogramok JAVA fejlesztések: LSO, HR toborzás segítı programok (pl.: MÁV), Netweaver, ByDesigne A Bázis réteget (FI, HR, ) mái napig ABAP-ban fejleszik. 7
Transzport rendszer Módosítások átvezetése a rendszerek között Átvezethetık: Repository objektumok Customizing beállítások Package logikai rendezés Transport request átmeneti összerendelés 8 Transzport: Egy csoportosítás, csomagolás, mely az objektumok egyik rendszerbıl a másikba való másolásáért felelıs. 8
A fejlesztés folyamata Fejlesztıi rendszer DEV SAP Teszt rendszer TST SAP Produktív rendszer PRD 9 Fejlesztıi rendszer: saját fejlesztések létrehozása, customizing beállítások Teszt/Minıségbiztosítási rendszer: fejlesztések, beállítások tesztelése. (esetleges gyakorló rendszer) Produktív/Éles rendszer: ide már csak a letesztelt, kipróbált fejlesztések kerülhetnek be Taszk (feladat): A felhasználó által létrehozott vagy módosított objektumok listáját tartalmazza. a rendszer által egy automatikus számot kap. A rendszerben a SE03-as tranzakció alatt érhetjük el ıket. Változási kérelem: Egy olyan objektum, amely összefogja a taszkokat és információkat tárol a célrendszerrıl, a transzport típusáról, a kérés kategóriájáról stb. SU01 A release nem más, mint a taszkok módosításának a befejezése és a transzportra való engedély megadása. 9
Aktiválás Új Inaktív Aktív Aktív Átdolgozott Inaktív Aktív Idı 10 A fejlesztés nem lokálisan történik, hanem minden esetben egy központi szerveren, ahol egyszerre többen dolgoznak ugyan annak a programnak más-más részein. Így gyakran elıfordulhat, hogy ha valaki szintaktikai hibát vét, akkor a rendszer egy u.n. Short-Dump üzenettel tér vissza. Tehát a megoldás mindig, az utolsó stabil verzió használata. Erre szolgál az aktív/inaktív logikai kapcsoló, mely segítségével inaktív módban nyugodtan fejleszthetünk, mert mindenki más csak a legutolsó aktív verzióját látja a programrészünknek. 10
A fejlesztés lépései 1. Kérelem létrehozása 2. Csomag létrehozása (vagy lokális objektum, vagy a $TMP csomagba) 3. Új program létrehozása (SE80 v SE38) 4. Program elkészítése 5. Ellenırzés, debugger 6. Aktiválás 7. Tranzakciós kód hozzárendelése (SE93) 8. Kérelem átvitele a teszt rendszerbe 9. Tesztelés 10. Kérelem átvitele a produktív rendszerbe 11 Customer Namespace: Z, Y 11
Abap Workbench Abap Dictionary - (SE11) Adatdefiníciós eszköz Abap Editor - (SE38) Forráskódok szerkesztése, programok futtatása Abap Debugger - Hibakeresést tesz lehetıvé, a /h gyorsparanccsal indítható ScreenPainter - Képernyıtervek elkészítése. MenuPainter - Menüstruktúrák, GUI státuszok elkészítésére Class Builder - (SE24) Osztályok és interfészek definiálására alkalmas Function Builder - (SE37) Funkciós csoportok és modulok definiálására alkalmas Object Navigator - (SE80) Integrált fejlesztıi környezet, mely egyesíti a fentieket 12 Riportok = ABAP programok Funkciós csoportok (függvények), modulok, osztályok, interfészek Ezekhez tartoznak: Szövegelemek, Képernyıtervek, Menütervek, Címsorok 12
DDIC - Data Dictionary (SE11) Data Dictionary (Abap Dictionary) Milyen objektumok vannak? Domain Adatelem Tábla Struktúra Nézet 13 A táblamezık technikai definícióját a domének (pl. mezıtípus, mezıhossz, külsı formátum), szemantikai definícióját (pl. rövid megnevezés) pedig az adatelemek szolgálják. Több adatelemnek lehet ugyanaz doménje (pl. egy maszkolt darabszám vonatkozhat almákra, és traktorokra is). Struktúra Tábla egy sora, több mezı összefőzve, workarea Nézet View. Join-olt, összekapcsolt táblák Tábla karbantartó tranzakciók: SE16, SE16N, SM30, SM31 13
ABAP fejlesztıi környezet (SE80) 14 14
Fıbb objektumok Csomag Program Funkciócsoport Osztály / interfész Internet service Lokális objektumok BSP-alkalmazás Inaktív objektumok 15 Package: A csomagok egyfajta csoportosítása a repository elemeknek. Program: A standard ABAP programok találhatók itt Function Group: A funkciós modulok funkciós csoportok szerinti felsorolása függvenyek SE37 Class/Interface: Mivel objektum orientált ABAP-ról beszélünk, ezért itt láthatóak az osztályok Internet Service: Kölönbözı ITS szolgáltatásokat tartalmaz, ide tartoznak a Web szolgáltatások is Local Objects: Itt azok az objektumok találhatóak, amelyek csak a lokális szerveren tárolódnak, és nincsenek hozzárendelve transzportokhoz BSP Application: A Web Dynpro elıtti webes megoldás, mely ötvözi a régi ABAP-ot a HTML kóddal. 15
ABAP fejlesztıi környezet 16 Régi sztenderd (R/2) szerint ABAP kódok 72 hosszúak. De mára ez már tetszıleges. Komment a kommentben probléma sztori. 16
SE80 - funkció gombok Ceruza: Szerkesztı és megjelenítı mód közötti váltás Mérleg: Szintaktikai ellenırzést végez a programkódon Gyertya: Aktiválni/ inakvtiválni lehet vele a kódot Franciakulcs: Az aktuális programkódot futattja Vasvilla: Megmutatja, hogy az aktuális programot, milyen más objektum használja még fel. Stoptáblák: Külsı és belsı töréspontok elhelyezése Pattern: Elıre definiált programkódokat lehet vele a kódba beültetni Pretty Printer: A vizuális formázást valósítja meg 17 17
ABAP program futása 18 Az egyes rétegek közötti interakció egy program futása közben: PBO (process before output) PAI (process after input) 18
ABAP nyelvi elemei - elágazások IF <feltétel1>. <végrehajtási blokk> ELSEIF <feltétel2>. <végrehajtási blokk>... ELSE. <végrehajtási blokk> ENDIF. CASE <mezınév>. WHEN <érték1>. <végrehajtási blokk> WHEN <érték2>. <végrehajtási blokk>... WHEN OTHERS. <végrehajtási blokk> ENDCASE. 19 19
ABAP nyelvi elemei - Ismétlési szerkezetek DO [<n> TIMES]. <végrehajtási blokk> ENDDO. DO. <végrehajtási blokk> IF <kilépési feltétel>. EXIT. ENDIF. ENDDO. SELECT <mezınevek> FROM <tábla> <végrehajtási blokk> ENDSELECT. LOOP AT <belsı tábla> <végrehaajtási blokk> ENDLOOP. WHILE <feltétel>. <végrehajtási blokk> ENDWHILE. 20 Számláló ciklus Hátul tesztelıs ciklus Elöl tesztelıs ciklus Select adatbázistáblákból válogatásra Loop Belsı táblákon való mőveletekre Egyéb lehetıség: Get pernr (HR-ben használt eseménykezelés az egyes dolgozók feldobására logikai adatbázisból) 20
Tábla tartalmát kiíró kód REPORT Z_ELSO_01_PRG. DATA sv_flight TYPE sflight. WRITE 'A járat tábla tartalma:'. SELECT * FROM sflight INTO sv_flight WHERE paymentsum > 10000. NEW-LINE. WRITE: sv_flight-carrid, sv_flight-connid, sv_flight-price, sv_flight-seatsmax, sv_flight-seatsocc, sv_flight-paymentsum. ENDSELECT. 21 Az ABAP Workbench nagy elınye az integráltságában rejlik, hiszen az ABAP kódban duplán kattintva az objektumok nevére, rögtön megkaphatjuk például a nekik megfelelı bejegyzést az ABAP Dictionaryben és fordítva. 21
Feldolgozási blokkok Esemény blokkok START-OF-SELECTION, INITIALIZATION, stb Alprogramok Form-ok Funkcióelemek Functions Method-ok Include-ok 22 Eseményblokkok: végrehajtható programoknál az ABAPfutásidırendszer egy meghatározott sorrendben átveszi az eseményblokkok meghívását, melyek egy listában jeleníthetık meg. Az eseményblokkok sorrendje a forráskódban indifferens. Alprogramok: interfészt tartalmazó programintern modularizáló egységek. A programok alprogramjai egy ABAP-utasítás segítségével bármely feldolgozási blokkból meghívhatók. Szubrutinok. Funkcióelemek: definiált interfészt tartalmazó, programokat átfogó modularizáló egységek. A funkcióelemek egy ABAP-utasítás segítségével bármely program bármely feldolgozási blokkjából meghívhatók. A metódusok az OOP ABAP. Include-ok: Ha többen fejlesztenek egy nagyobb programot hasznos, mert a különálló adatokat használ. Top Include Az includok által használt globális változókat, formokat enkapszulálja. 22
Elemi adattípusok Adattípus Leírás Kezdıérték Kezdı hossz I Integer 0 platform függı P Decimális adott tizedesjegyekkel 0 8 F lebegı pontos 0.000... platform függı N numerikus szöveg 000... 1 C szöveg (karakter) space 1 D dátum YYYYMMDD 00000000 8 T idı HHMMSS 000000 6 X hexadecimális X'00' 1 23 Mibıl épülnek fel a mezık adatelemei Adatelem: Más táblákban, struktúrában felhasználható elemi adattipusokból felepulı rekord tipusok Tulajdonságai: elemi tipus, hossza (tizedesjeggyel), keresési súgó Pl: HR-ben betrg (Betrag németül) = összeg, pernr (Personnummer németül) = SzTSz Személügyi TörzsSzám 23
Belsı táblák 24 A belsı táblák hasonló szerzetek az adatbázistáblákhoz, azzal a különbséggel hogy ezek a memóriába találhatók. Open SQL - ebben az esetben a programunk a fent említett adatbázis interfészen keresztül kapcsolódik. Automatikusan kiegészíti a Mandanttal a lekérdezést. Natív SQL - a program közvetlenül az adatbázishoz kapcsolódik. 24
Dictionary objektumok - SE11 25 Adatbázistábla, Nézet, Adattípus, Típuscsoport, Domén, Keresési segítség, Zárolási objektum Struktúra nézet: Mezı neve, Kulcs, Inic. Értékek, Adatelem, Adattípus, Hossz, TízJegy., Rövid megnev. 25
Képernyık - Dynprok Kapcsolattartás a felhasználóval, adatok bevitele, megjelenítése, módosítása. Egyszerően programozható, nyomtatással kevéssé kell foglalkozni, HTML konvertálás automatikus. Fajtái: Lista - List Szelekciós képernyı Selection screen Képernyı - Screen 26 26
Képernyık I. - Write lista 27 27
Képernyık II. - ALV lista 28 Sorki-választás (dupla kattintás): AT-LINE SELECTION Fejléc Menüsor Oszlop-beállítások, layout 28
Képernyık III. Selection screen 29 Adat-bevitel Késıbbi feldolgozásra adat kiválasztás Keresés és beviteli segítség Ált. köztes képernyı 29
Képernyık IV. Screen 30 Menü és eszköztár Beviteli segítség Tervezhetı képernyı Több ablakos programok egymást hívhatják: CALL SCREEN 30
Screen painter SE52 31 31
Képernyık V. Smart Forms 32 Pl.: Adóbevallás őrlap 32
Összefoglalás Fejlesztés SAP-ban DEV -> TST -> PRD Fejlesztı környezet (SE80) ABAP program felépítése Belsı táblák Megjelenítés 33 Milyen mélységő változtatásra van szükség? Transzport folyamatok Menük, gombok, aktív/inaktív Tábla szőrés, feldolgozás, kiíratás (PBO, PAI) Memóriában az adatbázis Dynpro, listák, smart forms 33
SAP doesn't hire developers. It initializes them Köszönöm a figyelmet! Zolnai László zolnai@elte.hu 34 34