280 likes | 431 Views
ERP arendusvahendid. Programmeerimiskeeled. 19.05.05 Indrek Vaino. Sissejuhatus. Kolme erineva arendusvahendi tutvustus: XAL ( eXtended Application Language ) X++ ABAP/4 ( Advanced Business Application Programming language ). Eesmärgid ja omapärad.
E N D
ERP arendusvahendid Programmeerimiskeeled 19.05.05 Indrek Vaino
Sissejuhatus Kolme erineva arendusvahendi tutvustus: • XAL (eXtended Application Language) • X++ • ABAP/4 (Advanced Business Application Programming language)
Eesmärgid ja omapärad • Suunatud majandustarkvara olemasoleva funktsionaalsuse (edasi)arendamiseks • Oma spetsiifiline süntaks • Andmehalduse kesksed • Täielik või osaliselt piiratud ligipääs kogu rakenduse lähtekoodile
XAL: ajalugu • 1983, 1986 - rakenduse ja keele eelkäijad • 1991 - esimene kliendile suunatud versioon 4GL arendusvahendist • 1995 - Windows'i-põhine tugi (kohitsetud) • 1997, 1998 - toote upgrade (XAL >> X++)
XAL: üldtutvustus • Platvormid (W95/98, NT, W2000, AIX 4.3, HP-UX 10.x, 11.0, SUN Solaris 7, TRU64 evol.5, Linux) • Andmebaasid (Native db, Oracle 8, 9i, Microsoft SQL) • Tüübipõhine (type-based) 4GL keel - andmed ja struktuurid peavad järgima kindlaid reegleid. • Makrokeel, milles koodi korduvkasutuse vajadus on lahendatud makrodega. • Sisaldab ühtset IDE keskkonda arendusvahenditega (k.a. GUI-vahendid, makrovahendid, baasiga suhtlemise vahendid, silujad) milles kood transleeritakse ja täidetakse. • Sarnaneb BASICule, lihtne süntaks, intuitiivselt loetav.
XAL: andmed • Viis andmetüüpi: • INTEGER [-2'147'483'648…2'147'483'647], • DECIMAL [16 numbrit sõltuvalt komakohast], • TEXT [' ' või " ", spetsiaalfunktsioonid "\", nt. "\t" - tab, "\n" - crlf, max pikkus 255], • DATE, • ENUMERATED TEXT. • Massiivid (ühedimensionaalsed). • Andmetabelid: • Rakenduse tabelid, • Temporary e. ajutised tabelid, • Vabalt defineeritavad tabelid.
XAL: keele süntaks • Funktsioonid ja võtmesõnad(umbes 200 funktsiooni: tüübiteisendused, suhtlemine virtuaalmasinaga, suhtlemine andmebaasiga) • Operaatorid:Aritmeetilised (=, +, -, *, /) ja Võrdlus-operaatorid (==, <, >, <=, >=, <>) • Muutujad (programmi alguses, tüübi ja vajadusel tüübi pikkuse määrangutega, väärtustamine käsuga SET) • Makrod(Globaalsed - #Globaldefine, #Globalmacro; lokaalsed - #Localmacro; makroteegid - #Macrolib, makromuutujad / konstandid - #Define, #Undef) • Lihtlaused (omistamine, teisendused), liitlaused (IF…THEN...ENDIF, DO…END, SEARCH…END), juhtimislaused (RETURN, BREAK, TTSABORT, TTSCOMMIT)
XAL: mitmesugust • Erindeid eraldi käsitlema ei pea, interpretaator tagastab veakoodi mida programm võib vajadusel töödelda • Virtuaalne Windows'i programmeerimine • Eraldi arendusvahendid skriptide, andmebaasi, aruannete, päringute, vormide, menüüde töötlemiseks • Programminäited (Vizingi teoreemi algoritm)
Axapta / X++: ajalugu • XALi järgmine, edasiarendatud versioon. • 1998 - esimene reliis, 1999 - versioon 2.0 • 2000 - reliis 2.1 sisaldas AOSi, 2-/3-tier clients, COM-liides MS toodete jaoks, esimesed webi-rakendused. • 2001 - reliis 2.5 XML liides, täiendavad moodulid ja webi-rakendused. • 2002 - Microsoft ostis firma koos toote- ja kliendiportfelliga.
Axapta / X++: üldtutvustus • Platvormiks on Windows, andmebaasiks MS SQL, Oracle 9i ning native baasiks MSDN. • IDE sisaldab objektipuud(Application Hierarhcy Tree), tabelisirvijat, koodisilujat, editori, märgendite süsteemijpm. • X++ on sümbioos C++, Javast ja SQList, sisaldades neile sarnaseid / omaseid elemente. • X++ on OOP toetades OO printsiipe nagu kapseldamine, pärilikkus, klassid, objektid, meetodid ja parameetrid. • Arenduskeskkonda kutsutakse MorphX.
X++: andmed • Seitse erinevat primitiivset andmetüüpi: boolean, integer, real, date, timeofday, string, enum. • Komposiit-tüübid: massiivid, konteinerid, klassid, tabelid. • Massiivid: dünaamilised või fikseeritud pikkusega. Deklareerimine: nt. int i[]; NoYes e[100,10]. • Konteinerid on dünaamilised tüübita massiivid, mis võivad sisaldada primitiivtüüpe, massiive ja konteinereid. Nt. container c3=[1,3.4,"abc"]. Eraldi funktsioonid konteinerite töötlemiseks. • Laiendatud andmetüübid (Extended Data Types): kasutaja-defineeritud andmetüübid, mis võivad koosneda primitiividest ja konteineritest. Eraldi funktsioonid laiendatud andmetüüpide töötlemiseks.
X++: andmed • Andmetabeli poole saab pöörduda sarnaselt, nagu klasside poole. void GetCustomerBalanceMST() { CustTable customerTable; // instants klienditabelile Print customerTable.AccountNo; // kliendi konto number } • Meetodid andmete töötlemiseks asuvad andmete juures; võimalik meetodit välja kutsuda ka otsepöördumisega tabeli meetodi poole. Print CustTable::find("KLIENT").Address; • Vahetu pöördumine ka andmetabelite poole. LedgerJournalTrans ledJournalTrans() { LedgerJournalTrans ledgerJournalTrans; ; select firstonly ledgerJournalTrans where ledgerJournalTrans.Voucher == BankDeposit.Voucher && ledgerJournalTrans.TransDate == BankDeposit.TransDate && ledgerJournalTrans.BankDepositNum == BankDeposit.DepositNum; return ledgerJournalTrans; }
X++: muutujad ja skoop • Muutuja on pointer mälus paiknevale objektile, mis sisaldab vajalikke andmeid. • Muutuja peab olema vähemalt ühe täheline, ent väidetavalt mistahes pikkusega koosnedes kõikidest ASCII/ANSI koodilehe tähtedest ning numbritest. • Nimestandardid on defineeritud arendajate poolt, nt. peetakse ühetähelisi lühendeid sobilikuks üksnes ajutiste muutujate defineerimisel (i, j, k, m, n täisarvude ja c, d, e tähemärkide - char - jaoks). • Muutujad ja meetodid on kindlapiiriliselt defineeritava skoobiga. Globaalsele objektile pääseb ligi kõikjalt. Kasutaja-defineeritud muutujad on lokaalsed vaadeldava klassi või meetodi piires.
X++: keele süntaks • Relatsioonilised operaatorid (like, ==, >=, <=, >, <, !=, &&, ||, !), aritmeetilised operaatorid (>>, <<, *, /, DIV, MOD, &, +, -, ?). • Kommentaarid sarnased, nagu C++. • Omistamine sarnane nagu C++ (=, +=, ++, -=, --). • Laused. Tingimuslikud (IF, SWITCH), tsüklid (WHILE, DO, FOR, BREAK), andmetöötlus (SELECT, WHILE SELECT, SELECT FIRSTONLY, DELETE, INSERT, UPDATE, TTSxxx). • Umbes paar tuhat klassi ja andmetabelit, 200 funktsiooni ja reserveeritud võtmesõna.
X++: mitmesugust • Eraldi vahendid andmete haldamiseks, vormide disainimiseks, aruannete loomiseks, klasside kirjeldamiseks, webi-rakenduste tegemiseks. • Mäluhaldus: automaatne prügikoguja (automatic garbage collector) toimib automaatselt - koheselt, kui viide mingile objektile kaob vabastatakse mälu uute väljakutsete jaoks.
SAP / ABAP: ajalugu • Üks paljudest 4GL keeltest mida arendati 1980-ndatel. Algselt mõeldud aruannete loomiseks R/2 ning tähistas algselt "Allgemeiner BerichtsAufberetiungsProzessor" -- üldine aruandeloomise protsessor. • Oli esmalt mõeldud lõppkasutajatele andmete töötlemiseks, ent osutus kasutaja jaoks liiga keeruliseks. • 1991 - peamised SAP R/2 ja R/3 põhifunktsioonid olid kirjutatud ABAPis. • 1992 - ABAP jäi peamiseks keeleks klient-server põhises R/3 süsteemis. • 1999 - SAP reliisis objekt-orienteeritud lisad ABAPi - ABAP Objects koos R/3 reliisiga 4.5. • 2001 - sisuliselt kogu SAP rakendus on kirjutatud ABAPis. • Viimane arendusplatvorm NetWeaver toetab nii ABAPi kui Javat.
SAP / ABAP: üldtutvustus • Platvormid (HP-Ux, Tru64, Linux, Windows, AIX, Sun Solaris, andmebaas Oracle, Informix, ADABAS-A, DB2, DB/400, Microsoft SQL, MaxDb etc.) • ABAP on plokk-struktureeritud keel, süntaks ja keelelised elemendid on sarnased nii Oracle PL/SQL, IBMi PL\I kui ka COBOLi keelele. • Arenduskeskkond sisaldab IDEt ning transpordisüsteemi. • IDEs on nt. Object Navigator, ABAP Dictionary, ABAP Editor, Class Builder, Function Builder, Screen Painter, Menu Painter, koodisiluja jne. • Rakenduskoodi hoitakse andmebaasis ning kompileeritakse iga kord, kui seda esimest korda kasutatakse. Kompileeritud kood paigutatakse serveri mällu, mille poole pöördumine ja mille käivitamine on suhteliselt kiire. • ABAP sisaldab mõningaid tugevalt aruandluse koostamisele orienteeritud sündmus-trigerite kontrollstruktuure, aruandlust saab hõlpsasti koostada drill-down võimalustega.
ABAP: üldtutvustus • ABAP programmid transleeritakse bait-koodi, mida töötleb edasi interpretaator. Virtuaalarvuti on suhteliselt hästi peidetud, ent esinevad programsed vead (core-dump) meenutavad IBM/370 assemblerit. • ABAPis on loodud kogu R/3 nähtav funktsionaalsus. Kernel või tuum sisaldab osa C-koodi, mis interpreteerib baitkoodi kompileeritud ABAP-programme, ent C-koodi ümber on loodud selline infrastruktuur, et enamus kasutajaid ning ka paljud arendajad ei tea, mis või kus kernel on. • ABAPis kasutataks palju sisemisi andmetabeleid (Internal Tables), mida hoitakse rakendusserveril (vs andmebaasiserver) ning mis vähendavad tunduvalt andmebaasi koormust ja üleüldist võrguliiklust.
ABAP: andmed • Andmetüübid >> • Andmeobjektid (sisaldavad andmeid programmi täitmisel; enne andmete kasutamist tuleb need lugeda andmeobjektidesse): • tekstisümbolid, • muutujad, • konstandid, • tööalad (work areas).
ABAP : kompleks-struktuur • Kasutaja defineeritava kompleks andmestruktuuri näide * local types in program* referring to predefined ABAP types: TYPES: surname(20) TYPE c, street(30) TYPE c, zip_code(10) TYPE n, city(30) TYPE c, phone(20) TYPE n, date LIKE sy-datum. * local structure in program* referring to the above types TYPES: BEGIN of address, name TYPE surname, code TYPE zip_code, town TYPE city, str TYPE street, END OF address.
ABAP: keele süntaks • Loogilised operaatorid (EQ, =, NE, <>, ><, LT, <, LE, <=, GT, >, GE, >=), stringivõrdluse operaatorid (CO - contains only, CN - contains not only, CA - contains any, NA - contains not any, CS - contains string jne.), bitivõrdluse operaatorid (O - bits are one, Z - bits are zero, M - bits are mixed). • Väärtustamine: • MOVE <f1> TO <f2> on samaväärne <f2> = <f1>. • WRITE (NAME) TO TARGET on samaväärne <f2> = <f1> • Algväärtustamine: Clear <f1> • Lausete eraldajana kasutatakse punkti. Samal real võib olla mitu lauset eeldusel, et lause eraldaja ja järgmise lause vahel on veel ka tühik: PROGRAM TEST. WRITE 'Metsas elavad a) karu, b) jänes ja c) hunt'. • Lihtsa päringu näide: select * from mytable where key like '25%'. write: / mytable-key, mytable-value. perform do_something using mytable-value. endselect.
ABAP : tüübiteisendused • Struktuuri konverteerimine mitte-sobivasse struktuuri (non-compatible) • Elementaarmuutujate konverteerimine struktuuriks • Struktuuri teisendamine elementaarmuutujaks • Kõikidel puhkudel konverteeritakse esiteks seotud struktuur character-formaati ning seejärel konverteeritakse siht-struktuur ja character-formaadis struktuur omavahel.
ABAP: kasutajaliides • Screen (ekraanivorm): defineeritakse vahendis Screen Painter ning selle poole saab programselt pöörduda. Ekraanivorm sisaldab sisend-väljund reglementi (mask) ning voo-loogikat: process before output (PBO) ja process after input (PAI). • Selection Screens (valikuvormid): kõige enamlevinum kasutajaliidese tüüp, mida kasutatakse kunas-iganes siis, kui kasutajalt oodatakse andmebaasi välja täitmist või valikukriteeriumite sisestamist. • Lists (loendid): kasutatakse andmete kuvamiseks kasutajale. Loenditega saab edasi anda näiteks päringu tulemusi, kasutaja saab vajadusel loendit drill-downida ning trükkida loendi sisu printerisse või salvestada faili. • Messages (teated): kasutatakse kõige enam veasituatsioonide kasutajale kommunikeerimiseks. Näiteks on olemas teatetüübid Termination, Error, Information, Status, Warning, Exit.
ABAP: programmitüübid • Igal ABAP-programmil on tüüp, mis määrab kindlaks, kas ja kuidas programmi käivitatakse. • Käivitatavad programmid. • Tüüp 1 programmid on käivitatavad programmi nime abil (nt. aruanded). • Tüüp M programme saab käivitada ainult transaktsiooni koodiga. • Otseselt mitte käivitatavad programmid. • Tüüp F programmid on nn. funktsionaalsete moodulite konteinerid (funktsioonigrupid). • Tüüp K programmid on globaalsete klasside konteinerid (klassi definitsioonid). • Tüüp J programmid on globaalsed liidesed (liidese-definitsioonid). • Tüüp S programmid on alamprogrammid, mida käivitatakse teiste programmide seest (alamprogrammide kogumid). • Tüüp I programmid - include-programmid.
ABAP: programminäited • Näited SAPis