Az ABAP nyelvi elemei I. , Riportok készítése, debugger
Az SAP programozása 1. Tarcsi Ádám
1. Az ABAP nyelvi elemei
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
2
Elemi adattípusok
Adattípus
Leírás
Kezdőérté Kezdő hossz k
I
Integer
0
platform függő
P
Decimális, adott tizedesjegyekkel
0
8
F
lebegő pontos
0.000...
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
STRING XSTRING
platform függő
Szöveges
dinamikus
Hexadecimális szöveges
dinamikus
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
3
Operátorok
EQ
Egyenlő (=)
NE
Nem egyenlő (<>)
GT
Nagyobb (>)
LT
Kisebb (<)
GE
Nagyobb vagy egyenlő (>=)
LE
Kisebb vagy egyenlő (<=)
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
4
Aritmetikai operátorok
+összeadás - kivonás * szorzás / osztás DIV egészosztás MOD egészosztás maradéka ** hatványozás
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
5
Néhány egyszerű példa
DATA integer TYPE i. Integer = 4 / 10 . - az eredmény 0 Integer = 5 / 10 . - az eredmény 1
SUM = SUM + 1. SUM = SUM + : 1, 2, 3, 4.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
6
Változók kezelése
Paraméterek (beolvasás): ▪ PARAMETERS pa_carr TYPE scarr-carrid.
Lokális típus: ▪ TYPES z_c_tipus(8) TYPE c.
Változó deklaráció: ▪ DATA z_text TYPE z_text_type . ▪ DATA : z_text TYPE z_text_type , z_carr TYPE scarr-carrid, z_carr2 LIKE z_carr.
Konstans: ▪ CONSTANS c_cf TYPE s_crarr_id VALUE 'QF'. Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
7
ABAP nyelvi elemei - áttekintés
Elágazások: IF
. ELSEIF . ELSEIF . ... ELSE. ENDIF.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
CASE <mezőnév>. WHEN <érték1>. WHEN <érték2>. ... WHEN OTHERS. ENDCASE.
8
Elágazások példa
IF sy-saprl < '45A'. WRITE: / 'ABAP Release', sy-saprl, 'nem objektumorientált'. ELSE. IF sy-saprl < '46A'. WRITE: / 'ABAP Release', sy-saprl, 'részben objektumorientált'. ELSE. WRITE: / 'ABAP Release', sy-saprl, 'teljesen objektumorientált'. ENDIF. ENDIF. Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
CASE sy-datum+4(2). WHEN '12' OR '01' OR '02'. WRITE / 'Tél'. WHEN '03' OR '04' OR '05'. WRITE / 'Tavasz'. WHEN '06' OR '07' OR '08'. WRITE / 'Nyár'. WHEN '09' OR '10' OR '11'. WRITE / 'Ősz'. WHEN OTHERS. WRITE 'Hibás dátum'. ENDCASE.
9
Ismétlési szerkezetek
DO [ TIMES]. ENDDO. DO. IF . EXIT. ENDIF. ENDDO. While . ENDWHILE. SELECT <mezőnevek> FROM ENDSELECT. LOOP AT ENDLOOP. Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
10
DO és WHILE DATA: is_zero TYPE i. DO 20 TIMES. is_zero = sy-index MOD 2. CHECK is_zero = 0. WRITE:/ 'Index:', sy-index. ENDDO.
DATA: inner_limit TYPE i VALUE 5, outer_limit TYPE i VALUE 5, inner_index TYPE i, outer_index TYPE i. WHILE outer_limit > 0. outer_index = sy-index. WRITE: / 'Külső érték:', sy-index, 'Limit:', outer_limit. inner_limit = 5. WHILE inner_limit > 0. inner_index = sy-index. WRITE: / ' Belső érték:', sy-index, ' Limit:', inner_limit. inner_limit = inner_limit - 1. ENDWHILE. outer_limit = outer_limit - 1. ENDWHILE.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
11
2. RIPORT program írása
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
12
WRITE
WRITE AT [/] [<pos>][()] .
LEFT-JUSTIFIED CENTERED RIGHT-JUSTIFIED UNDER NO-GAP USING EDIT MASK <m> NO-ZERO NO-SIGN DECIMALS EXPONENT <e> ROUND CURRENCY UNIT TEXT-001
Balra igazított szöveg Középre igazított Jobbra igazított szöveg A kimenet a mező alatt kezdődik Nem hagy szóközt a mező kiírása után Formátum template-t lehet megadni Ha csak nullákat tartalmaz akkor szóközt ír A negatív előjel nem jelenik meg Hány tizedesjegy jelenjen meg F típusú mezőknél a kitevő hossza tizedesjegyre kerekít A pénznemnem megfelelő kiíratás A mennyiségnek megfelelő tizedesjegy A text-001 szöveges mező kiírása
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
13
WRITE – 2.
Vízszintes vonal ▪ ULINE [AT [/] [<pos>][()]. ▪ WRITE [AT [/] [<pos>][()] SY-ULINE.
Függőleges vonal ▪ VLINE [AT [/] [<pos>]. ▪ WRITE [AT [/] [<pos>] SY-VLINE.
Üres sor ▪ SKIP [].
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
14
WRITE példák
DATA: number TYPE p VALUE '-1234567.89' DECIMALS 2. * Egyszerű write WRITE 'Szia'. * Aposztróf kiírása. WRITE: / 'Aposztróf kiírása '' így lehetséges.'. * Standart output format. WRITE: 'A Number nevű szám packed formátumú:', number. * Pozícionálás WRITE 'Első sor.'. WRITE 'Még mindig az első sor.'. WRITE /'Második sor.'. WRITE /13 'Harmadik sor, 13-ik karaktertől.'.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
15
WRITE példák – 2.
DATA: len TYPE i, pos TYPE i, text(10) TYPE c VALUE '1234567890‘, integer TYPE i VALUE 1234567890. * Pozícionálás WRITE 'Első sor.'. WRITE 'Még mindig az első sor.'. WRITE /'Második sor.'. WRITE /13 'Harmadik sor, 13-ik karaktertől.'. len = pos = WRITE WRITE
10. 12. 'A számsor ------------ ebben a szövegben jelenik meg.'. AT pos(len) text.
* Vágás WRITE: (5) integer, /(5) text.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
16
WRITE példák – 3.
* Listában nem jelenig meg üres sor WRITE: 'Egy', / ' ', / 'Kettő'. SKIP 2. * sy: System variables és igazítás. WRITE: 'Sorszám:', sy-linno LEFT-JUSTIFIED, /. "Sorszám. SKIP 2.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
17
WRITE példák – 4.
DATA: flag1 TYPE c VALUE ' ', flag2 TYPE c VALUE 'X', flag3(5) TYPE c VALUE 'Xenon'. * icon-ok és symbol-umok INCLUDE <symbol>. INCLUDE . WRITE: / 'Phone Symbol:', SYM_PHONE AS SYMBOL. SKIP. WRITE: / 'Alarm Icon: ', icon_alarm AS ICON.
SKIP 2. * checkbox WRITE: / 'Flag 1 ', flag1 AS CHECKBOX, / 'Flag 2 ', flag2 AS CHECKBOX, / 'Flag 3 ', flag3 AS CHECKBOX. Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
18
Környezeti változók (system fields): sy - tábla ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪ ▪
SY-DBSYS: adatbázis rendszer SY-HOST: alkalmazás-szerver SY-OPSYS: alkalmazás szerveri operációs rendszer SY-SYSID: R/3 rendszer ID SY-MANDT: mandant száma SY-MODNO: session szám SY-UNAME: felhasználó neve SY-DATUM: dátum SY-FDAYW: nap sorszáma a héten SY-TIMLO: lokális idő SY-UZEIT: idő a szerveren SY-TCODE: jelenlegi tranzakció kódja SY-REPID: jelenleg futó program neve SY-DYNNR: jelenleg futó ablak sorszáma SY-ULINE, SY-VLINE: konstans horizontális, vertikális vonalat rajzol SY-INDEX: cikluson belül az aktuális lépésszám SY-SUBRC: visszatérési érték, ált. hiba jelzésére SY-CUCOL, SY-CUROW: horizontális, vertikális kurzor pozíció
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
19
WRITE példák – 5. DATA: g(5) TYPE c VALUE 'Hello', f(5) TYPE c VALUE 'Világ', float TYPE f VALUE '123456789.0', pack TYPE p VALUE '123.456' DECIMALS 3. * Formázás WRITE: g, f. WRITE: /10 g, / f UNDER g. WRITE: / g NO-GAP, f.
WRITE: '000123', / '000123' NO-ZERO. WRITE float EXPONENT 3. WRITE pack DECIMALS 2. WRITE: / pack / pack / pack
/ pack ROUND -2, ROUND -1, ROUND 1, ROUND 2.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
20
WRITE példák – 6.
* Formázás
FORMAT COLOR COL_HEADING. "vagy =1. WRITE: 'Oszlopfejléc formátumú szöveg'. FORMAT COLOR COL_HEADING OFF.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
21
Dátumok kezelése – 1.
DATA: time TYPE t VALUE '154633', datum TYPE sy-datum, ev(4) type c, honap(2) type c, nap(2) type c. WRITE: sy-datum, / sy-datum YYMMDD. datum = sy-datum. ev = datum(4). honap = datum+4(2). nap = datum+6(2). ULINE. WRITE: / datum, / ev no-gap, honap no-gap, nap. WRITE: time, /(8) time USING EDIT MASK '__:__:__'. Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
22
Dátumok kezelése – 2. PARAMETERS t_start TYPE t DEFAULT '080000'. DATA: d_start TYPE d, year_days TYPE i, working_hours TYPE i. d_start = sy-datum. d_start+4(4) = '0101'. year_days = sy-datum - d_start + 1. working_hours = ( sy-uzeit - t_start ) / 3600. WRITE: / 'Eltelt napok száma a', sy-datum(4), '-es évben:', year_days, / 'Eltelt munkaidő:', working_hours. Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
23
Szövegszimbólumok használata
DATA szoveg(10) TYPE c. szoveg = text-010. WRITE: / szoveg, text-020.
• Többnyelvű • Aktiválni kell
Eredménye:
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
24
Szövegkezelés Szöveg hossza: DATA: text(25) TYPE c VALUE 'SAP ABAP programozás', len TYPE i. len = strlen( text ). WRITE: / 'A(z)', text, 'szöveg hossza:', len. Konkatenáció: DATA: SOR(20) TYPE C. CONCATENATE 'You''' 'll be there.' INTO SOR. WRITE:/ SOR.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
25
Szövegkezelés
Csere: DATA text TYPE string. text = 'Token 1, Token 2, Token 3, Token 4'. WHILE sy-subrc = 0. REPLACE ', ' WITH ' - ' INTO text. ENDWHILE. WRITE / text.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
26
Keresés szövegben DATA: text TYPE string. text = 'Öreg kutya vak-vak-vak, ha nem muszáj, nem ugat!'. WRITE: / 'Keresés az alábbi szövegben:', '''Öreg kutya vak-vak-vak, ha nem muszáj, nem ugat!'''. SKIP. SEARCH text FOR 'ugat '. WRITE: / 'Keresendő: ''ugat '''. WRITE: / 'sy-subrc:', sy-subrc, / 'sy-fdpos:', sy-fdpos. ULINE.
sy-subrc: 0 sy-fdpos: 43
SEARCH text FOR '.ugat .'. WRITE: / 'Keresendő: ''.ugat .'''. WRITE: / 'sy-subrc:', sy-subrc, / 'sy-fdpos:', sy-fdpos. ULINE.
sy-subrc: 4 sy-fdpos: 0
SEARCH text FOR 'kuty*'. WRITE: / 'Keresendő: ''kuty*'''. WRITE: / 'sy-subrc:', sy-subrc, / 'sy-fdpos:', sy-fdpos. ULINE.
sy-subrc: 0 sy-fdpos: 5
SEARCH text FOR '*utya'. WRITE: / 'Keresendő: ''*utya'''. WRITE: / 'sy-subrc:', sy-subrc, / 'sy-fdpos:', sy-fdpos. ULINE.
sy-subrc: 0 sy-fdpos: 5
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
27
Értékadás / törlés
Move DATA: A(5), B(5), C(5). A = ’12345’. B = ’67890’. MOVE A+2(2) TO C. MOVE A+2(2) TO B+1(3). ▪ C értéke ’34’ lesz, B értéke pedig ’634 0’
MOVE-CORRESPONDING TO . WRITE (a) TO b. Változó értékének törlése: CLEAR f. Belső tábla értékeinek törlése: REFRESH t_itab.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
28
Logikai kifejezések karaktersorozathoz
CO (Contains Only): CO Igaz, ha csak -beli karaktereket tartalmaz. CN (Contains Not only): CN Igaz, ha nem csak -beli karaktereket tartalmaz. CA (Contains Any): CA Igaz, ha legalább egy karaktert tartalmaz -ből. NA (contains Not Any): NA Igaz, ha egyetlen karaktert sem tartalmaz -ből. CS (Contains String): CS Igaz, ha tartalmazza stringet. Az összehasonlítás nem kisbetű/nagybetű függő. NS (contains No String): NS Igaz, ha nem tartalmazza stringet. Az összehasonlítás nem kisbetű/nagybetű függő. CP (Contains Pattern): CP Igaz, ha tartalmazza az mintát. A minta tartalmazhat joker karaktereket (* és +). Az összehasonlítás nem kisbetű/nagybetű függő. NP (contains No Pattern): NP Igaz, ha nem tartalmazza az mintát.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
29
3. Debugger
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
30
Debugger
Test plan készítés ▪ Minden pozitív / negatív teszt esetre tesztelni ▪ Nullával való osztás ▪ Beviteli ellenőrzések tesztelése ▪ Paraméterek értékének, kitöltésének ellenőrzése Hiba esetén ABAP debugger ▪ Breakpointok elhelyezése, lépésenkénti végrehajtás ▪ Kivételkezelés ▪ Memória és egyéb erőforráshasználat- figyelés ▪ Watch point elhelyezése ▪ ABAP és SQL trace ▪ Változó értékének nyomkövetése sy-subrc <> 0 ellenőrzése SE30 performancia analízis tranzakció SLIN tranzakció: kiterjesztett szintaktikai ellenőrzés CATT: Computer Aided Test Tool Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
31
ABAP Debugger – 1.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
32
ABAP Debugger – 2.
Tarcsi Ádám, ELTE Informatikai Kar: Az SAP programozása 1.
33