ERP arendusvahendid Programmeerimiskeeled 19 05 Indrek Vaino 1

  • Slides: 28
Download presentation
ERP arendusvahendid Programmeerimiskeeled 19. 05 Indrek Vaino 1

ERP arendusvahendid Programmeerimiskeeled 19. 05 Indrek Vaino 1

Sissejuhatus Kolme erineva arendusvahendi tutvustus: 1. XAL (e. Xtended Application Language) 2. X++ 3.

Sissejuhatus Kolme erineva arendusvahendi tutvustus: 1. XAL (e. Xtended Application Language) 2. X++ 3. ABAP/4 (Advanced Business Application Programming language) 2

Eesmärgid ja omapärad • Suunatud majandustarkvara olemasoleva funktsionaalsuse (edasi)arendamiseks • Oma spetsiifiline süntaks •

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 3

XAL: ajalugu • 1983, 1986 - rakenduse ja keele eelkäijad • 1991 - esimene

XAL: ajalugu • 1983, 1986 - rakenduse ja keele eelkäijad • 1991 - esimene kliendile suunatud versioon 4 GL arendusvahendist • 1995 - Windows'i-põhine tugi (kohitsetud) • 1997, 1998 - toote upgrade (XAL >> X++) 4

XAL: üldtutvustus • Platvormid (W 95/98, NT, W 2000, AIX 4. 3, HP-UX 10.

XAL: üldtutvustus • Platvormid (W 95/98, NT, W 2000, AIX 4. 3, HP-UX 10. x, 11. 0, SUN Solaris 7, TRU 64 evol. 5, Linux) • Andmebaasid (Native db, Oracle 8, 9 i, Microsoft SQL) • Tüübipõhine (type-based) 4 GL 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. 5

XAL: andmed • Viis andmetüüpi: - INTEGER [-2'147'483'648… 2'147'483'647], DECIMAL [16 numbrit sõltuvalt komakohast],

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. 6

XAL: keele süntaks • Funktsioonid ja võtmesõnad (umbes 200 funktsiooni: tüübiteisendused, suhtlemine virtuaalmasinaga, suhtlemine

XAL: keele süntaks • Funktsioonid ja võtmesõnad (umbes 200 funktsiooni: tüübiteisendused, suhtlemine virtuaalmasinaga, suhtlemine andmebaasiga) • Operaatorid: Aritmeetilised (=, +, -, *, /) ja Võrdlusoperaatorid (==, <, >, <=, >=, <>) • 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) 7

XAL: mitmesugust • Erindeid eraldi käsitlema ei pea, interpretaator tagastab veakoodi mida programm võib

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) 8

Axapta ja X++ 9

Axapta ja X++ 9

Axapta / X++: ajalugu • XALi järgmine, edasiarendatud versioon. • 1998 - esimene reliis,

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. 10

Axapta / X++: üldtutvustus • Platvormiks on Windows, andmebaasiks MS SQL, Oracle 9 i

Axapta / X++: üldtutvustus • Platvormiks on Windows, andmebaasiks MS SQL, Oracle 9 i ning native baasiks MSDN. • IDE sisaldab objektipuud (Application Hierarhcy Tree), tabelisirvijat, koodisilujat, editori, märgendite süsteemi jpm. • 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 Morph. X. 11

X++: andmed • Seitse erinevat primitiivset andmetüüpi: boolean, integer, real, date, timeofday, string, enum.

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[]; No. Yes e[100, 10]. • Konteinerid on dünaamilised tüübita massiivid, mis võivad sisaldada primitiivtüüpe, massiive ja konteinereid. Nt. container c 3=[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. 12

X++: andmed • Andmetabeli poole saab pöörduda sarnaselt, nagu klasside poole. void Get. Customer.

X++: andmed • Andmetabeli poole saab pöörduda sarnaselt, nagu klasside poole. void Get. Customer. Balance. MST() { Cust. Table customer. Table; // instants klienditabelile Print customer. Table. Account. No; // kliendi konto number } • Meetodid andmete töötlemiseks asuvad andmete juures; võimalik meetodit välja kutsuda ka otsepöördumisega tabeli meetodi poole. Print Cust. Table: : find("KLIENT"). Address; • Vahetu pöördumine ka andmetabelite poole. Ledger. Journal. Trans led. Journal. Trans() { Ledger. Journal. Trans ledger. Journal. Trans; ; select firstonly ledger. Journal. Trans where ledger. Journal. Trans. Voucher == Bank. Deposit. Voucher && ledger. Journal. Trans. Date == Bank. Deposit. Trans. Date && ledger. Journal. Trans. Bank. Deposit. Num == Bank. Deposit. Num; return ledger. Journal. Trans; } 13

X++: muutujad ja skoop • Muutuja on pointer mälus paiknevale objektile, mis sisaldab vajalikke

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. 14

X++: keele süntaks • Relatsioonilised operaatorid (like, ==, >=, <=, >, <, !=, &&,

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. 15

X++: mitmesugust • Eraldi vahendid andmete haldamiseks, vormide disainimiseks, aruannete loomiseks, klasside kirjeldamiseks, webirakenduste

X++: mitmesugust • Eraldi vahendid andmete haldamiseks, vormide disainimiseks, aruannete loomiseks, klasside kirjeldamiseks, webirakenduste tegemiseks. • Mäluhaldus: automaatne prügikoguja (automatic garbage collector) toimib automaatselt - koheselt, kui viide mingile objektile kaob vabastatakse mälu uute väljakutsete jaoks. 16

SAP R/3 : ABAP 17

SAP R/3 : ABAP 17

SAP / ABAP: ajalugu • Üks paljudest 4 GL keeltest mida arendati 1980 -ndatel.

SAP / ABAP: ajalugu • Üks paljudest 4 GL keeltest mida arendati 1980 -ndatel. Algselt mõeldud aruannete loomiseks R/2 ning tähistas algselt "Allgemeiner Berichts. Aufberetiungs. Prozessor" -- ü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 Net. Weaver toetab nii ABAPi kui Javat. 18

SAP / ABAP: üldtutvustus • Platvormid (HP-Ux, Tru 64, Linux, Windows, AIX, Sun Solaris,

SAP / ABAP: üldtutvustus • Platvormid (HP-Ux, Tru 64, Linux, Windows, AIX, Sun Solaris, andmebaas Oracle, Informix, ADABAS-A, DB 2, DB/400, Microsoft SQL, Max. Db etc. ) • ABAP on plokk-struktureeritud keel, süntaks ja keelelised elemendid on sarnased nii Oracle PL/SQL, IBMi PLI 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. 19

ABAP: üldtutvustus • ABAP programmid transleeritakse bait-koodi, mida töötleb edasi interpretaator. Virtuaalarvuti on suhteliselt

ABAP: üldtutvustus • ABAP programmid transleeritakse bait-koodi, mida töötleb edasi interpretaator. Virtuaalarvuti on suhteliselt hästi peidetud, ent esinevad programsed vead (coredump) 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. 20

ABAP: andmed • Andmetüübid >> • Andmeobjektid (sisaldavad andmeid programmi täitmisel; enne andmete kasutamist

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). 21

ABAP : kompleks-struktuur • Kasutaja defineeritava kompleks andmestruktuuri näide * local types in program

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. 22

ABAP: keele süntaks • • • Loogilised operaatorid (EQ, =, NE, <>, ><, LT,

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 <f 1> TO <f 2> on samaväärne <f 2> = <f 1>. WRITE (NAME) TO TARGET on samaväärne <f 2> = <f 1> Algväärtustamine: Clear <f 1> 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. 23

ABAP : tüübiteisendused • Struktuuri konverteerimine mitte-sobivasse struktuuri (non-compatible) • Elementaarmuutujate konverteerimine struktuuriks •

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 characterformaadis struktuur omavahel. 24

ABAP: kasutajaliides • Screen (ekraanivorm): defineeritakse vahendis Screen Painter ning selle poole saab programselt

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. 25

ABAP: programmitüübid • Igal ABAP-programmil on tüüp, mis määrab kindlaks, kas ja kuidas programmi

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. 26

ABAP: programminäited • Näited SAPis 27

ABAP: programminäited • Näited SAPis 27

Tänan tähelepanu eest. 28

Tänan tähelepanu eest. 28