A legfontosabb összetevői az ABAP/4 típuskoncepciójának az adattípusok és az adatobjektumok.
Adattípusokat a struktúrájuk és definíciójuk szerint osztályozhatjuk:
Előre definiált | Felhasználó által definiált | |
---|---|---|
Elemi | Az ABAP/4 nyolc előre definiált típussal rendelkezik: C, D, F, I, N, P, T, X | A felhasználó által definiált adattípusok az elemi adattípusokra épülnek |
Struktúrált | Táblák: csak a formális paraméterek tipizálásánál és a mezőszinbolumoknál használható | Rekord kezeléshez és belső táblákhoz |
Adattípus | Leírás | Kezdőérték | Iniciális hossz |
---|---|---|---|
P | pakolt decimális | 0 | 8 |
I | integer | 0 | platform függő |
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 |
Az adatobjektumoknak több fajtáját különböztetjük meg:
Talán ez az egyik legfontosabb és legegyedibb típusa az ABAP/4-nek. Mivel a nyelvet alapvetően
nagytömegű adatok feldolgozására fejlesztették ki, szükséges volt megoldani az adatbázissal történő
kommunikációt anélkül, hogy az túlzottan leterhelné a központi szervert. A lényege az, hogy egyszer,
vagy akár többször, a program futása során az adatbázisszerverről beolvassuk a számunkra fontos adatokat egy
belső táblába, ott feldolgozzuk őket, majd ha szükséges, ugyancsak a belső táblán keresztül visszaírjuk
az adatbázisba a módosításokat. Egy belső táblát létrehozhatunk (DATA utatsítás segítségével) fejléccel
vagy anélkül. Ha fejléccel hozzuk létre, akkor az egyik lehetőség a fejléc segítségével kommunikálni
a belső táblával, ahol a fejléc neve megegyezik a belső tábla nevével. Ha fejléc nélkül hozzuk létre, akkor
egy un. munkaterület (work area) segítségével történik a belső tábla elérése. A fejléc és a munkaterület
egy olyan struktúra, mely megegyezik a belső tábla definíciójával (tehát a belső tábla egy sorának felel meg).
Művelet | Leírás |
---|---|
APPEND | Sor(ok) táblához fűzése |
COLLECT | Hozzáfűzés kulcsegyezés figyelésével |
INSERT | Megadott helyre sor beszúrása |
MODIFY | Mezők módosítása (index megadható) |
DELETE | Sorok törlése (loop ciklusban vagy index vagy feltétel alapján) |
SORT | Rendezés |
CLEAR | Visszaállítja a táblát az inicializált értékére (header line esetén azt a sort) |
REFRESH | Mindenképp visszaállítja a táblát |
LOOP AT | Tábla olvasása (intervallum megadható) |
READ TABLE | Olvasás index vagy kulcs alaján |
Az ABAP-Dictionary-ban lehetőségünk van un. típuscsoportok létrehozásásra (TYPE POOL), melyek típusokat, konstansokat tartalmazhatnak és egyetlen utasítással (TYPE-POOLS) bevonhatunk a programozói munkába.
Egy szeparáló karakter alapján részekre vágja a szövegünket, amelyeket változókba rakhatunk Használat
A SEARCH függvény egy értéket keres meg egy Stringben és az érték pozicióját sy-fdpos nevű rendszerváltozóban tárolja el. Használat
A CONCATENATE függvény segítségével tetszőleges számú szöveget fűzhetünk össze. Használat
A SHIFT függvény elmozgatja a string elemeit (LEFT, RIGHT, CIRCULAR) irányba places paraméterben megadott értékkel. Használat
Translate függvény segítségével kis -, vagy nagybetűssé alakíthatjuk a szövegünket. Használat
A függvény egy szöveg hosszát adja vissza. Használat
A Condense függvény segítségével eltávolíthatjuk a szóközöket a szövegből. Használat
A Replace egy szövegben a megadott értékeket kicseréli. Használat
Függvény | Leírás | Szintaxis |
---|---|---|
ABS | Visszadja az argumentum abszolut értékét | ABS(n) |
CEIL | Visszaadja a következő egész számot ami nagyobb vagy egyenlő az argumentummal | CEIL(n) |
FLOAT | Egy szöveget lebegőpontos számmá alakít. | FLOAT(str) |
FLOOR | Visszaadja azt az egész számot, ami kisebb vagy egyenlő az argumentumnál. | FLOOR(n) |
HEX | Egy hexadecimális szöveget decimális szöveggé konvertál | HEX(str) |
INT | Egy szöveget egész számmá alakít | INT(str) |
LIMIT | Korlátozza egy számot a megadott tartományon. | LIMIT(lower,n,upper), ha n kissebb, mint lower, akkor a lower értékkel tér vissza, ha n nagyobb, mint upper akkor az upper értékkel egyébként meg n-el |
MAX | Megkeresi egy számlista maximumát | MAX(number list) |
MIN | Megkeresi egy számlista minimumát | MIN(number list) |
NSTR | Egy maszknak megfelelően fogrmázza a számot és szöveggel tér vissza | NSTR(n,mask) a mask értékeit lásd a Maszkok táblázatban |
NVAL | Egy szöveg numirikus értékét adja vissza | NVAL(str) |
POS | Egy szöveget positive egész számmá konvertál | POS(str) |
RND | Visszad egy vélétlen számo, ami nagyobb 0 tól és kissebb a max értéktől | RND(max) |
ROUND | Kerekít, visszadja a legközellebbi egész számot (0,5 esetén felfelé kerekít) | ROUND(n) |
SIGN | Az ismert előjel függvény (ha a szám negatív -1, pozitív esetén 1 és minden más esetben 0 val tér vissza ) | SIGN(n) |
TRUNC | A szám egész részét adja vissza | TRUNC(n) |
FRAC | A maradékot adja vissza | FRAC(n) |
Maszk |
Leírás |
---|---|
+ |
+ vagy - jelet rak a számok elé. |
- |
a pozitivak elé sapce-t, a negatívak elé - jelet rak . |
Z |
A jelentés nélküli számjegyek nullák. pl('000045') |
P |
A jelentés nélküli számjegyek space-k.pl (' 45') |
B |
A nullákat space-re cseréli. |
C |
Ezres bontásban jeleníti meg a számokat. |
N |
A tizedesponttól ballra hány szém jelenjen meg. |
. M |
A tizedesponntól jobbra hány szám jelenjen meg |
% |
Az adatokat százalékban jeleníti meg. |
[CUR] |
Beszúrja az adott deviza kódot. A valuta kódot szögletes zárójelben kell megadni (például a [USD] vagy az [EUR]) . |
NORMAL |
Szabványos formátum. |
Néhány példa
Függvény |
Leírás |
Szintaxis |
Példák |
---|---|---|---|
DATE |
Visszaadja a meghatározott időpontig az adott év, hónap, nap értékeket az alapértelmezett formátumban. |
DATE(year,month,day) |
DATE(2005,4,23) Összeállítja az alapértelmezett formátumban a dátumot: 23/4/2005 |
TIME |
Visszaadja a meghatározott időben az adott óra, perc, másodperc értéket az alapértelmezett formátumban. |
TIME(hour,min,sec) |
TIME(14,30,45) == 14:30:45 Összeállítja az aktuális idő szerint az óra, perc és másodperc értékeketet alapértelmezett formátumban. Ebben az esetben, a következő az eredmény: 14:30:45 |
DADD/ TADD |
Növeli / csökkenti a dátum / idő értéket a paraméterben kapott értékkel. |
DADD(dt,n,unit) TADD (t,n,unit) |
TADD(@CREATE_TIME,13,'H') Ebben az esetben 13 órát ad hozzá az értékhez. például ha a CREATE_TIME 10:17:22 akkor az eredmény: 23:17:22 (az alapértelmezett formátum (HH:NN:SS). |
DGET TGET |
Egy numerikus értéket ad vissza, a lényege hogy lekérdezhetjük egy dátum bármely részét külön-külön |
DGET(dt,part) TGET(t,part) Az első paraméter az idő/dátum, a második pedig, hogy minek a numerikus értékét szeretnénk elkérni óra/hónap |
DGET(@CREATE_DATE,'M') Ha a CREATE_DATE 30.05.2002 és a part paraméter 'M'(Hónap) a visszatérési érték 5 lesz, ha 27.02.2004 akkor 2 |
DSTR/ TSTR |
Ennek a függvénynek a segítségével módosíthatjuk az alapértelmezett dátum formátumot |
DSTR (dt,mask) TSTR (t,mask) A mask paraméter egy speciális string, ami meghatározza a dátu/idő formátumát |
DSTR(@DATE_FIELD,'MON DD, YYYY') Ebben az esetben ha a DATE_FILED 30.05.2002 a következő alakot kapjuk vissza May 30, 2002 DSTR(DADD(@CREATE_DATE,13,'D'),'XML_DATE') A függvények egybeágyazhatóak. Ebben a példában hozzáadunk 13 napot a CREATE_DATE paraméterhez, majd egy másik formátumba konvertáljuk,ha a paraméter 30.05.2002, a visszatéréris érték : 2002-06-12 |
DSUB/ TSUB |
Visszaadja a két dátum/idő közötti értéket a unit paraméternek megfelelő formátumban. |
DSUB(dt1,dt2,unit) TSUB (t1,t2,unit) |
DSUB(NOW(),@CREATE_DATE,'D') A példában napokban akarjuk megkapni a két dátum közötti időszakot. A NOW() függvény az aktuális dátumot adja vissza. ha az aktuálsis dátum 16.09.2007 és a CREATE_DATE 05.8.2007, akkor a visszatérési érték 39 |
DVAL/ TVAL |
Converts a date or a time string representation – usually in a user input field – to a standard date/time value. The date/time input format is defined by the client platform and user locale settings. |
DVAL(str) TVAL(str) |
DVAL(@TIME_FIELD) A függvény az alapértelmezett formátumra konvertálja a dátumunkat. A példában, ha a TIME_FIELD 30.05.06, akkor az alapértelmezett formátummal tér vissza: 30/05/2006 |
NOW/ TNOW |
Visszadja az aktuális dátumot vagy időt. |
NOW() TNOW() |
NOW() Visszadja az aktuális dátumot az alapértelmezettt formátumban TNOW() Visszadja az aktuális időt az alapértelmezett formátumban:08:40:10 |