1 / 22

PTE Természettudományi Kar Programtervező- és GazdaságInformatikus Szak

PTE Természettudományi Kar Programtervező- és GazdaságInformatikus Szak 7624 Pécs, Ifjúság u. 6. http://www.ttk.pte.hu/. TTINFV21-22 SAP-ABAP 2. Előadás Dr. Pauler Gábor egyetemi docens, PTE-TTK Információtechnológia és Általános Technika Tanszék Tel: 30 / 901 - 5488

carsyn
Download Presentation

PTE Természettudományi Kar Programtervező- és GazdaságInformatikus Szak

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. PTE Természettudományi Kar Programtervező- és GazdaságInformatikus Szak 7624 Pécs, Ifjúság u. 6. http://www.ttk.pte.hu/ TTINFV21-22 SAP-ABAP 2. Előadás Dr. Pauler Gábor egyetemi docens, PTE-TTK Információtechnológia és Általános Technika Tanszék Tel: 30/901-5488 E-mail: pauler@t-online.hu Skype: gjpauler

  2. Az előadás tartalma • ABAP bevezetés • ABAP alapszintaktika • Az ABAP fejlesztői objektumok helye az SAP architektúrában • Sztenderd típusok, relációs és aritmetikai operátorok • Kommentezés, alapvető programfelépítés, deklarációk • Típusok • Változók • Konstansok • Utasítások • Értékadás • Megjelenítő utasítások • Elágazásvezérlés • Ciklusok • Struktúrák • Deklarálásuk • Használatuk • Belső táblák • Fajtáik • Deklarálásuk • Használatuk • Szubrutinok

  3. ABAP bevezetés 1 • Az SAP alkalmazások, tranzakcók és dialóguslépések fejlesztésére szolgáló ABAP nyelv (Advanced Business Application Programming Language) sok szempontból őskülövület • Ennek az az oka, hogy az SAP-ben üdvös módon nagyon erős a törekvés, hogy megtartsa termékverziói oda-vissza kompatibilitását (pl. a 6.4-es SAP GUI simán működik az SAP szerver R/2verziójával is, mikor már több, mint másfél évtizede az R/3-at nyüstöljük) • (Összevethetjük ezt egy bizonyos Kapu Vilmos nevű „úriember” Nagyonkicsiszoftver nevű cégének termékeivel, amelyek rendszerint saját verziójukkal sem teljesen kompatibilisek) • Így viszont az ABAP-on nyomot hagytak a keletkezése óta létrejött nyelv-generációk: • Alapszintaktikája a múlt század nyolcvanas éveinek elejére nyúlik vissza, amikor: • a lányok farmert hordtak necc- harisnyával, tűsarkú cipővel, • a szovjetek mosolyogtak Rea- gan elnökön, aki beígérte ne- kik, hogy móresre tanítja őket, • a Monchici-majom, a jojó, a Neoton-familia lemezek, a Linda, Sandokan és a dobo- zos kóla menők voltak, • a dánok és a svédek voltak a pornóipar királyai, mert az oroszoknak több atomraké- tájuk volt, mint prostituáltjuk • és igen, van aki bevallja, van aki nem, de mind CBM Com- modore 64-et programoztunk: • A programkód végén kerengő szubrutinok, a csak sorvégi kommentek vagy külön komment sorok mind 2. generációs C64-Basic-szintű dolgok az ABAP-ban, és ezért hozzá képest még a C# is egy emberközeli nyelvnek számít… „C64 rulez forever!” /Poison - Singular crew/ • Az ABAP funkciós moduljai,melyek tulajdonképpen a legtöbb programnyelvben használt függvény-definíciók kicicomázásai eseménykezeléssel, input/output interfészekkel, az SAP kétségbeesett kísérleteinek emléke,hogy ne kelljen telje- sen átállni a 3. generációról a 4. generációs objektum orientált programozásra • És végül természetesen létrejöttek ABAP-ban is a 4. generációs OOP eszközök

  4. ABAP bevezetés 2 • Miért érdemes akkor mégis ABAP fejlesztéssel foglalkozni? Mert szinte biztosan állítható, hogy ebben keletkezik a fejlesztő számára az egy beírt/letesztelt programsorra eső legmagasabb profit: • Vegyünk például egy „eccerű” lelkes kezdő programozó ifjoncot, aki miután épphogy megtanult programozni, hajlamos sok munkával újra fölfedezni a kereket: pl. ír 1000 valahány sorban egy határidőnapló kontrollt PHP-ben, és rettenetesen büszke rá, hogy „de a hónapváltó fül itt villog kékben is, és azt más nem tudja, csak az enyém!” • Azonban más ránéz erre és azt mondja: „Ízléstelen határidőnapló-kontroll, különben is ilyen alapból van .Net-ben, kell a francnak!” • Tehát itt a fejlesztő dolga, hogy minden beírt programsorának eladható alkalmazást, annak pedig fizetőképes piacot találjon – vagy, ha rábízza másra, azok elveszik tőle a profit ¾-ét! • Egész más a leányzó fekvése, ha ABAP-ban kűzdünk össze 1000 működőképes sort: • Támogat minket, hogy a vállalatok ügyviteli/ERP rendszerei óriási és egyre bővülő piac, mert a globalizálódó versenyben egyre több cég léte/nemléte és sok millió dollár múlik azon, hogy vajon Szőke Nusi ügyintéző félreüti-e a számlaszámot, elfelejti, elhagyja, leönti kávéval, vagy a rutin ügyviteli műveletek mindenféle Nusi nélkül automatikusan zajlanak nagy költséghatékonysággal

  5. ABAP bevezetés 3 • Támogat minket, hogy az SAP beledobott több, mint 30 évet egy ilyen rendszer fejlesztésébe, óriási tudásanyagot felhalmozva az R/3-ban definiált üzleti folyamatokban vállalati ügyvitelről és cégvezetésről • Támogat minket, hogy emiatt az SAP piacvezető szerepet szerzett az ERP rendszerek területén, és még a Microsoft sem tudja megszorítani, hiába szeretné, tehát ahol dolgozunk/ ahol dolgozni fogunk/ aki ügyfelünk lesz, és valami komolyabb cég, ott már van/ épp most vezetik be/ a jövőben tervezik SAP beszerzését. • Támogat minket, hogy ha ebben a rendkívül drága és hosszú folyamatban, ami az SAP céghez illesztését, testreszabását jelenti, mi csak annyit tudunk tenni, hogy összekötjük pár ABAP kóddal a cég rendszereit az SAP-vel, és annak hatékonysága érvényesülni tud, azonnal sok pénzre tehetünk szert anélkül, hogy alkalmazást és piacot kellene keresnünk kódunk számára, vagy egy csomó ember ezért lenyúlna minket.

  6. Az ABAP fejlesztői objektumok helye az SAP architektúrában 1 • 1. Prezentációs réteg: SAP GUI kliens a felhasználó PC-jén • 2. Alkalmazási réteg: SAP NetWeaver Applikációs Szerver • 3. Adatbázis réteg: Oracle vagy MSSQL relációs adatbáziskezelőben • Mandantok (Mandant): felhasználóhoz rendelt munkaterület, logikai kliensek • Felhasználói adatok (User Data) • Alkalmazás-specifikus adatok (Application Data) • Mandant-specifikus testreszabások (Mandant-Specific Customizing): az SAP adott mandant-tulajdonos cég sajátosságaihoz igazítása • Mandant-független testreszabások (Mandant-Independent Customizing) • Mandant-független ABAP fejlesztési objektumtár (Repository), ennek részei: • Tranzakciók (Transaction): dialógus lépések sorozatai • Névterek(Domain):Felhasználói:Z. Progijaink neve így: Z_PTTK-EHAKOD_PROGRAMNEV • Csomagok (Package): programok csoportjai

  7. Az ABAP fejlesztői objektumok helye az SAP architektúrában 2 • Mandant-független ABAP fejlesztési objektumtár (Repository), ennek részei (folytatás): • Riport/Dialógus (Report/Dialog): dialógusokat kiszolgáló programok, részeik: • Forráskód (ABAP Source) • Munkaképernyők (DynPro) • Egyébb felhasználói felület (GUI) elemek (nyomógombok, stb.) • Szöveges szimbólumok (Text Symbol): több nyelven megjelenő képernyőszövegek • Programdokumentáció • Funkciós csoportok/modulok (Function Group/Module): egy függvényt leíró, önállóan nem, de más kódból futtaható ABAP-program, I/O interfész adatstruktúra leírásokkal kiegészítve, hierachikus csoportokba rendezve • ABAP adatszótár (ABAP Data Dictonary, DDIC): az SAP-ban központilag, globálisan (Global) definiált adatszerkezetek adattárháza • Az ABAP nyelv egyszerű sztenderd típusai (Standard Types) • Az egyszerű típusokból épített struktúra (Structure) típusok • A sztenderd típusokból/struktúrákból definált egyedi változók • A struktúra típusokból definiált belső táblák (Internal Table) • Struktúra típusokból kreált adatbázis táblák(Database Table)

  8. Az előadás tartalma • ABAP bevezetés • ABAP alapszintaktika • Az ABAP fejlesztői objektumok helye az SAP architektúrában • Sztenderd típusok, relációs és aritmetikai operátorok • Kommentezés, alapvető programfelépítés, deklarációk • Típusok • Változók • Konstansok • Utasítások • Értékadás • Megjelenítő utasítások • Elágazásvezérlés • Ciklusok • Struktúrák • Deklarálásuk • Használatuk • Belső táblák • Fajtáik • Deklarálásuk • Használatuk • Szubrutinok

  9. Az ABAP szintaktikai alapjai: Sztenderd adattípusok, operátorok • Egyszerű sztenderd adattípusok (Standard Types): (A méreteknél megadott „karakter” byte-ot is jelent) • Relációs operátorok • =, EQ : egyenlő, • <>, NE : nem egyenlő, • >, GT : nagyobb, • <, LT : kisebb, • >=, GE : nagyobb vagy egyenlő, • <=, LE : kisebb vagy egyenlő • Aritmetikai operátorok • + : összeadás, - : kivonás, * : szorzás, • / : osztás (egész típus osztásánál automatikusan kerekít!!!), • DIV : maradékos osztás, MOD : maradékos osztás maradéka, • ** : hatványozás (és nem ^ !!!) • A relációs és aritmetikai operátorok elé/után szigorúan szóközt kell ütni, különben szintaktikai hibát okoz: pl. NEMa=b*(c**2) hanem helyesen: a = b * ( c ** 2 )

  10. Kommentezés, alapvető programszerkezet, deklarációs rész • Kommentezés: • Teljes sor komment: * -gal kezdődik a sor 1. karakterén, sor végén nincs lezáró jel • Sor végi komment: ” -bárhol lehet a sorban, sor végén nincs lezáró jel • Sorvég-lezáró jel: . (Utasítások részei közben is lehet, de deklarációknak csak a végén) • Alapvető programszerkezet, deklarációs rész: * Programkód mindig kezdődjön a célját leíró komment sorral REPORTZ_Usernev_ProgramNev.”Program neve PARAMETERS:ParamNev1TYPETipus1, ParamNev2TYPETipus2 [VISIBLE LENGHTn].”Paraméter deklaráció (Futás elején be fogja kérni a paramétereket a nyitó szelekciós képernyőn, n karakter szélességű mezőben) TYPES:TipusNev1(Meret) TYPEAlapTipus1,”Lokális típus deklaráció, csak helyi kódban látszik, önállóan is létrehozhatjuk TipusNev2(3) TYPEpDECIMALS2.”Vagy sztenderd típusból DATA:ValtozoNev1TYPETipus,”Változó deklaráció sztenderd típusból ValtozoNev2(Meret)LIKEValtozoNev2.”Legyen ugyanolyan típusú, mint egy másik változó, eltérő mérettel CONSTANTS:KonstNev1TYPETipusVALUE’ABC’, KonstNev2TYPETipusVALUE’ABC’. ”Konstans deklarálása * Innen jönnek az utasítások… • A tananyagban alkalmazott programkód írási konvenciók: • ProgramKod: mindig Courier betűvel, tabulálva, funkcionális részei ékezet nélkül, nagy kezdőbetűs tagolással a többtagú szavaknál • KULCSSZAVAK: mindig nagybetű és félkövér • Komment: kék • AzonositoNev, Parameter: dőlt • ‘SzovegesKonstans’: ABAP-ban egyszeres idézőjelben van, zöld • [OpcionalisResz]: szögletes zárójelben tűntetjük fel (amely nem része a kódnak)

  11. Utasítások 1 • Értékadás: Valtozo=Konstans.”Az információ jobbról balra áramlik Valtozo=Valtozo. ”Az információ jobbról balra áramlik • Megjelenítő: WRITE ’ABC’. ”Egyszerű kiírás • Az egyszerű kiíráson kívül a később ismertetett SE91 tranzakcióbanüzenetosztá-lyokat (Message Class), azookon belül üzenetkóddal (Message Code) ellátott üzeneteket defeniálhatunk több nyelven, amelyek más kinézetű szövegdobozban jelenhetnek meg üzenettípus (Message Type) szerint, de megadhatunk hozzá egyedi szöveget is: • Típusok:x-kilép a programfutásból,e-hiba,w-figyelmeztetés,i-infó,s-minden OK. MESSAGETipusKod(Osztaly)WITH’EgyediSzoveg’.”A típus és a kód közt NINCS szóköz, példa: MESSAGE e001(38) WITH ‘Game over!’. • Elágazás- vezérlés: igen egyedi • IF-ELSEIF-ELSE: ha egy ágra ráugrott, a többit már nem vizsgálja IFSzam1EQ0. Utasitas1. [ELSEIFSzam1EQ1. Utasitas2. ELSE. Utasitas3.] ENDIF. • CASE: ha egy ágra ráugrott, a többit már nem vizsgálja CASEValtozo1. WHEN0. Utasitas1. WHEN1. Utasitas2. WHEN OTHERS. Utasitas3. ENDCASE.

  12. Utasítások 2 • Ciklusok: középkori megoldások, nincs beépített ciklusváltozóval rendelkező FOR • DO: nem fix pörgésszámú, elől/középen/hátul tesztelő, hamisra futó DO. TesztElottiUtasitasok. IFKilepFeltetel.”Ha kilépési feltel teljesül… EXIT.”Kilép a ciklusból ENDIF. TesztUtaniUtasitasok. ENDDO. • DO-TIMES: fix pörgésszámú DOPorgesSzamTIMES. Utasitas. ENDDO. • WHILE: elöl tesztelő, igazra futó WHILEFeltétel. ”Addig fut még ez igaz Utasítás ENDWHILE. • LOOP AT: lesz még egy ciklus, ami belső táblákon lépeget, később ismertetjük • Ciklusból történő idő előtti kiugrás utasításai: EXIT.”feltétel nélkül kiugrik az egész ciklus végére CHECKFeltetel.”Ha feltétel hamissá válik, kiugrik az adott cikluspörgésből a következő cikluspörgés kezdetére!

  13. Az előadás tartalma • ABAP bevezetés • ABAP alapszintaktika • Az ABAP fejlesztői objektumok helye az SAP architektúrában • Sztenderd típusok, relációs és aritmetikai operátorok • Kommentezés, alapvető programfelépítés, deklarációk • Típusok • Változók • Konstansok • Utasítások • Értékadás • Megjelenítő utasítások • Elágazásvezérlés • Ciklusok • Struktúrák • Deklarálásuk • Használatuk • Belső táblák • Fajtáik • Deklarálásuk • Használatuk • Szubrutinok

  14. Struktúrák • Struktúra (Structure): Egyszerű sztenderd-, vagy saját adattípusokból álló összetett adatszerkezet (más programnyelvekben Rekord (Record) néven ismeretes). Egyedi memóriaváltozók vagy rekordokból álló adatbázis táblák típusát képetheti • Struktúra-típusok deklarálása: • Saját struktúra típusának lokális (Local), csak adott programban látszó deklarálása: TYPES: BEGIN OFStrukturaTipusNev, MezoNev1TYPETipus, MezoNev1TYPETipus, END OFStrukturaNev. • ABAP Adatszótárba (ABAP Dictionary, DDIC) deklarálás: ez a minden SAP kompo-nens számára látható adatszerkezetek, a Globális típusok (Global Types) tárolója • SE11 tranzakcióval tudom a Dictionary elemeit szerkeszteni, később tárgyaljuk • Stuktúra-változók deklarálása: • Lokális, saját deklaráció: DATAls_StrukturaValtozoNevTYPEStrukturaTipusNev. • Szokványos, hogy a lokális struktúrák neve wa_ vagy ls_ előtaggal kezdődjön. Az ABAP elnevezési konvenciókat erősen ajánlatos betartani, mert az adatszótárban már több ezer adatszerkezet neve van definiálva az SAP működéséhez, ezért jó esély van rá, hogy hasonló nevet adnánk lokális szerkezetnek, ami miatt az ABAP kódból nem érhetjük el a hasonló nevű globális szerkezetet! • Lokális deklaráció, Dictionary-ban tárolt stuktúrából: DATAValtozo1TYPEspfli.”Pl. egy az adatszótárban már defini-ált, SPFLI nevű táblával egyező struktúrájú változót definiál • Dictionary-ba történő deklarálás: • SE11 tranzakcióval, később tárgyaljuk • Struktúra változók használata: Valtozo=StrukturaNev-MezoNev.”Így hivatkozik az elemeire (Vigyázat, más programnyelvekben ez StrukturaNev.MezoNev, de itt a „.” sorvég-záró jel!) Struktura2=Struktura1.”Azonos típusú struktúrának átad mindent Struktura2-Mezo=Struktura1-Mezo.”Csak 1 mezőt ad át MOVE-CORRESPONDINGStrukt1TOStrukt2.”Csak az azonos nevű és típusú mezőket adja át, ha vannak

  15. Belső táblák fogalma és fajtái 1 • Belső tábla (Internal table): struktúra-rekordokból álló adatbázistábla-szerű szerkezetek, de a memórában tárolódnak, így azoknál sokkal gyorsabbak. Rekordjaik száma dinamikusan bővíthető plusz memóriafoglalással, fájlba/adatbázisba írhatók/olvashatók, nyomtathatók, képernyőn megjeleníthetők • A belső tábla fajtájnak kiválasztása: ennek akkor van csak szerepe, ha nagy méretű, több millió rekordból álló belső táblákkal szeretnénk gyorsan dolgozni. A belső táblák fajtái közt az elsődleges kulcsmezők(Primary Key) és az indexek kezelésében van különbség, emiatt más műveletekre lesznek képesek más elérési sebességgel. Vigyázzunk arra, hogy SAP-terminológiában belső táblákkal kapcsolatosan az indexek(Index) egyszerűen idegen kulcsot, vagy a táblában a rekordok fizikai sorszámát jelentik, és ez nem egyezik meg az index hagyományos jelentésével: • Az adatbáziskezelésben az index(Index) egy az adatbázis táblához rakott, látha-tatlan táblamező, melyeket sem írni, sem olvasni nem tudunk, a rendszer automatikusan kezeli • Az index 1 táblamező vagy mezők 1 csoportja szerinti rekord-elérést gyorsítja • Tartalma az indexelt mező/mezőcsoport szerint adott értékű/érték-kombinációjú rekord memóriabeli fizikai helyére mutató pointer (általában 4 byte hosszban) • Az index megengedhet értékismétlődést a táblamezőben, ekkor nem egyedi (non-unique), ennek kezelése lassabb, vagy nem, ekkor egyedi (Unique) ami gyorsabb • Az index a rekordok beszúrását/törlését/módosítását a táblában lassítja, mert az indexmező tartalmát is frissíteni kell a tábla adatainak változtatásával • Ezért ilyen jellegű tömeges műveletek előtt érdemes az indexet az azonosítónevé-nél fogva letörölni, majd a műveletek lezárulta után újrafelépíteni. Az index törlése a tábla adattartalmát nem befolyásolja, csak az elérését lassítja

  16. Belső táblák fogalma és fajtái 2 • A belső táblák fajtái elérés szerint: • Alapértelmezett indexelt tábla (Standard indexed table): elsődleges kulcsot és nem egyedi értékű indexeket (itt:idegen kulcsokat!!!) is tartalmazhat, és elsősorban az indexen keresztül érjükel. Az esetek 99%-ában ezt használjuk, mert ezzel minden műveletet meglehet csinálni (rekord beszúrás, módosítás, törlés), de ez a leglassabb. (A lassúság persze relatív: az ABAP programok futásidejének átlagosan 2%-át teszik ki a belső táblák műveletei, mert azok a 2. rétegben, az applikációs szerver memóriában zajlanak, és 98%-át az adatbázis táblák kezelése, ami a 3. Adatbázis rétegben) Ha valami brutálisan nagy méretű belső táblát kellene kezelnünk (ami ABAP programok írása során igen ritka) aminek kezelése sztenderd táblaként már nagyon lassú, akkor két lehetőségünk van: megtartjuk táblaként, de gyorsan kimásoljuk adatbázis táblába, ott SQL-ben elvégezzük rajta a kívánt műveletet, és az eredménytáblát gyorsan visszamásoljuk sztenderd táblába • Vagy rendezett indexelt táblaként (Sorted indexed table) deklaráljuk: ez tartalmazhat egyedi/nem egyedi értékű indexet és elsődleges kulcsot is, és elsősorban a kulcson keresztül érjük el rekordjait. A rendszer rekordok törlése/beszúrása esetén mindig automatikusan újrarendezi a rekordokat, ezért bár elérése gyorsabb, mint a sztenderd tábláé, módosítása lassabb.

  17. Belső táblák fogalma és fajtái 3 • A hasított táblaként (Hash Table) deklarált belső tábla csak elsődleges kulcson keresztül érhető el, indexeken keresztül nem. A tárolási rendszere olyan, hogy az elsődleges kulcs értékéből ki tudja számítani a kulcs szerint fizikailag növekvő sorrendbe rendezett rekordok sorszámát, ezért a rekordok elérése itt borzasztó gyors (összevethető más programnyelvek 1 dimenzós tömbjeivel) viszont rekordot törölni és beszúrni utólag nem lehet. Így ez a fajta tábla statikus, időben változatlan, gyorsan, sokszor elérendő, nagyméretű adatok tárolására való, pl. kinézegető (Lookup) táblának, amit SAP-környezetben ellenőrző (Control) táblának hívunk • A belső táblák fajtái deklaráció szerint: • Fejléces tábla (Header Table): a belső táblák régebbi változata, újabb fejlesztésű kódokban már nem használatos, de az SAP elemek kompatibilitása miatt meghagyták, ezért ismernünk kell: ez olyan tábla, aminek deklarálásakor automatikusan létrejön egy, a táblával azonos struktúrájú és nevű rekordváltozó - ez a fejléc (Header) - , amin keresztül a táblával kapcsolatos I/O műveletek bonyolíthatók. • Nem fejléces tábla (Non-header Table): az újabb táblák deklarálásánál ilyen nem jön létre, hanem külön kell deklarálni egy rekordváltozót, aminek bármi lehet a neve

  18. Az előadás tartalma • ABAP bevezetés • ABAP alapszintaktika • Az ABAP fejlesztői objektumok helye az SAP architektúrában • Sztenderd típusok, relációs és aritmetikai operátorok • Kommentezés, alapvető programfelépítés, deklarációk • Típusok • Változók • Konstansok • Utasítások • Értékadás • Megjelenítő utasítások • Elágazásvezérlés • Ciklusok • Struktúrák • Deklarálásuk • Használatuk • Belső táblák • Fajtáik • Deklarálásuk • Használatuk • Szubrutinok

  19. Belső táblák deklarálása és műveleteik • Fejléces tábla deklarálása: DATAFejlecTáblaLIKEStruktValtNevOCCURS 0. • Normál tábla deklarálása: DATAlt_BelsoTáblaLIKE [STANDARD|SORTED|HASHED] TABLE OFStruktValtNev [WITH UNIQUE KEYElsodlegesKulcsMezo]. • A belső táblák egymásba ágyazhatóak!!! Az egyik tábla struktúrájának egy mezője lehet egy másik komplett belső tábla, sok memóriát fogyaszt, óvatosan használjuk • ABAP konvenció, hogy a lokális belső táblák neve lt_ előtaggal kezdődik • Műveletek belső táblákkal: • Alapvetó I/O műveletek: APPENDls_StruktValtTOlt_BelsoTabla.”Rekord hozzáfűzése INSERTls_StruktValtINTO TABLElt_BelsoTabla [WHERE Feltetel].”Struktúraváltozó beszúrása táblába, lehet feltételesen is READ TABLElt_BelsoTabla INTOls_StruktValt [WHERE Feltetel].”Tábla rekord kiolvasása struktúraváltozóba, lehet feltételesen is MODIFY TABLElt_BelsoTabla FROMls_StruktValt [WHERE Feltetel].”Tábla rekord módosítása struktúraváltozó tartalmára, lehet feltételesen is DELETElt_BelsoTabla WHERE Feltetel.”Rekordok törlése a táblá-ból, mindenképp kell feltétel,de lehet minden rekordra igaz! SORTlt_BelsoTabla[BY Mezo].”Rekordrendezés mezőnél fogva • Belső táblán lépegető ciklus: ezt azért jó alkalmazni, mert nem kell kézzel megvizsgál-ni, az adott belső táblában hány rekord van, mindegyikre rálép automatikusan: LOOP ATlt_BelsoTabla INTO ls_StruktValt. *Ciklusmagban a BelsoTabla aktualis rekordja be van lapozva a strukturaváltozoba WRITEls_StruktValt-Mezo.”Kiírja sorban a mezőértékeket a belsőtábla rekordjaiból, vagy számol valamit ENDLOOP. LOOP ATFejlecTabla.”Fejléces táblánál nem kell külön struktúra WRITEFejlecTabla-Mezo.”változót alkalmazni, a hasonló nevű ENDLOOP. ”fejlécbe lapoz, így nincsen INTO rész!

  20. Szubrutinok 1 • Általános szintaxis: REPORTZ_Usernev_ProgramNev.”Főprogram neve DATA:BemenoParam1TYPETipus, BemenoParam2TYPETipus, KimenoParam1TYPETipus, KimenoParam2TYPETipus.”Főprogram változók deklarálása PERFORMSzubRutNev[(ProgramNev)] ”Szubrutin meghívása, programnév csak akkor kell, ha más ABAP kódból hívja, nem ebből [USINGBemenoParam1, BemenoParam2] ”Input főprogram-változói [CHANGINGKimenoParam1, KimenoParam2] ”Output ezekbe a változókba [IF FOUND].”Ne akadjon le, ha nem talál ilyen nevű szubrutint. Ez csak külső hívásnál kell FORMSzubRutNev”Szubrutin leírása. (Nem kell, hogy megelőzze a meghívását, mint más nyelvekben, a kód végén szokott lenni!!!) USINGBemenoParam1TYPETipus BemenoParam2TYPETipus”Bemenő paraméterek deklarációja CHANGINGKimenoParam1TYPETipus KimenoParam2TYPETipus.”Kimenő paraméterek deklarációja DATALokValtTYPETipus.”Szubrutin saját lokális változóinak dek-larációja. Ezek csak a szubrutinon belül látszanak … KimenoParam1=BemenoParam1+BemenoParm2.”Számol valamit … ENDFORM.”Szubrutin leírás vége • Paraméter elnevezési konvenciók: • A paraméterek nevének előtagja a szubrutin rövidített neve szokott lenni, pl ha Osztas a szubrutin név, akkor: USINGOszt_Szamalalo, Oszt_Nevezo CHANGINGOszt_Hanyados

  21. Szubrutinok 2 • Paraméter típusegyeztetés: • Ha a szubrutinban a be/kimenő paramétert ANY típusúra deklaráljuk, elfogad bármilyen típusú be/kimenő értéket, feltéve, hogy értelmesen használni tudja • Ha adott típusúra deklaráljuk, csak azt a típust fogadja el • Paraméterek memóriafoglalása: • Minden paraméterként átadott főprogram változóról lokális másolat készül a memóriá-ban, nincsen cím szerinti paraméterátadás, mint modernebb programnyelvekben • Szubrutinból történő idő előtti kiugrás a főprogramhoz: EXIT.”feltétel nélküli CHECKFeltetel.”Ha feltétel hamissá válik, kiugrik • Példa belső tábla tipusú paraméter átadására és visszadására főprogram és szubrutin közt: REPORTZ_Usernev_ProgramNev.”Főprogramnév TYPES:BEGINStruktNev”Főprogramban definiált rekordtípus Mezo1TYPEI, Mezo2TYPEI END OFStruktNev. DATA StruktValt TYPE StruktNev. ”Egy rekordváltozó rá DATAParamBeTablaLIKE STANDARD TABLE OFStruktValt. DATAParamKiTablaLIKE STANDARD TABLE OFStruktValt.”Két főprogram belső tábla deklarálása a rekordból PERFORMSzubRutinUSINGParamBeTablaCHANGINGParamKiTabla.”Szub-rutin meghívása. A leírása a kód végén jön FORMSzubRutin”Szubrutin leírása USINGSzubBeTablaLIKEParamBeTabla”I/O paramétereket rádefiniál- CHANGINGSzubKiTablaLIKEParamKiTabla.”ja a főprogi táblatípusra DATAEgyRekordLIKE LINE OFParamBeTabla.”Lokális rekord buffer LOOP ATSzubBeTablaINTOEgyRekord.”Belapozza rekordokat bufferbe EgyRekord-Mezo1 = EgyRekord-Mezo1**2.”Számol valamit bufferben APPENDEgyRekordTOSzubKiTabla.”Hozzáírja az eredménytáblához ENDLOOP.”Rekordlapozó vége ENDFORM.”Szubrutin leírás vége

  22. Szakirodalom • SAP Online help:http://help.sap.com/ • Ingyenes webtanfolyamok, fórum, blog, e-konzultáció magyarul: • www.tudasmorzsak.hu • Angol nyelvű fórumok és tudásbázisok: • http://www.sap-img.com/abap.htm • http://erpgenie.com/ • http://help.sap.com/search/sap_trex.jsp • http://sap.ittoolbox.com/groups/technical-functional/sap-abap/

More Related