Oktatóanyag 1
Eseményblokkok: végrehajtható programoknál (1. típus) az ABAPfutásidőrendszer egy meghatározott sorrendben átveszi az eseményblokkok meghívását, melyek egy listában jeleníthetők meg. Az eseményblokkok sorrendje a forráskódban indifferens. Alprogramok: interfészt tartalmazó programintern modularizáló egységek. A programok alprogramjai egy ABAP-utasítás segítségével bármely feldolgozási blokkból meghívhatók. Funkcióelemek: definiált interfészt tartalmazó, programokat átfogó modularizáló egységek. A funkcióelemek egy ABAP-utasítás segítségével bármely program bármely feldolgozási blokkjából meghívhatók. A metódusok az OOP ABAP. Oktatóanyag 2
Az eseményblokkot az ABAP-programban egy eseménykulcsszó vezeti be. Minden blokk a következő feldolgozási blokk kezdésével zárul. Sorrendjük felcserélhető, ld: DATA bárhol lehet több is. Oktatóanyag 3
Oktatóanyag 4
Program blokk ami csak az adott programban érhető el. form1 alprogram neve Interfész: USING Bemenő paraméterek CHANGING Módosítandó, kimeneti paraméterek A paraméterek tipizálása kötelező (TYPE, LIKE) Parméterátadás is lehetséges a VALUE utsítással DATA lokális deklaráció Oktatóanyag 5
Oktatóanyag 6
Oktatóanyag 7
REPORT ZGRAPH. DATA: BEGIN OF ITAB_DATA OCCURS 0, ADATNEV TYPE C, MENNYISEG1 TYPE I, MENNYISEG2 TYPE I, MENNYISEG3 TYPE I, END OF ITAB_DATA, BEGIN OF ITAB_OPTIONS OCCURS 0, OPTION TYPE C, END OF ITAB_OPTIONS. ITAB_DATA-ADATNEV = 'Élelmiszerek'. ITAB_DATA-MENNYISEG1 = 150435. ITAB_DATA-MENNYISEG2 = 156619. ITAB_DATA-MENNYISEG3 = 154704. APPEND ITAB_DATA. ITAB_DATA-ADATNEV = 'Ruházkodás'. ITAB_DATA-MENNYISEG1 = 31170. ITAB_DATA-MENNYISEG2 = 32827. ITAB_DATA-MENNYISEG3 = 32786. APPEND ITAB_DATA. ITAB_DATA-ADATNEV = 'Közlekedés, hírközlés'. ITAB_DATA-MENNYISEG1 = 104836. ITAB_DATA-MENNYISEG2 = 117471. ITAB_DATA-MENNYISEG3 = 140273. APPEND ITAB_DATA. CALL FUNCTION 'GRAPH_MATRIX_3D' EXPORTING COL1 = '2003' COL2 = '2004' COL3 = '2005' TITL = 'Egy főre jutó évi kiadások Magyarországon, FT' TABLES DATA = ITAB_DATA OPTS = ITAB_OPTIONS EXCEPTIONS OTHERS = 1. Oktatóanyag 8
* Fájl-választó ablak megjelenítése. REFRESH gt_fajltabla. CALL METHOD cl_gui_frontend_services=>file_open_dialog EXPORTING window_title = 'Betöltendő fájl neve...' default_filename = '*.txt' multiselection = ' ' CHANGING file_table = gt_fajltabla rc = gd_subrc. LOOP AT gt_fajltablainto g_fajl. ENDLOOP. START-OF-SELECTION. REFRESH gt_itab. * Fájl betöltése a belső táblába. CALL FUNCTION 'GUI_UPLOAD' EXPORTING filename = g_fajl filetype = 'ASC' codepage = '1403' TABLES data_tab = gt_itab EXCEPTIONS file_open_error = 1 file_read_error = 2 no_batch = 3 gui_refuse_filetransfer = 4 invalid_type = 5 no_authority = 6 unknown_error = 7 bad_data_format = 8 header_not_allowed = 9 separator_not_allowed = 10 header_too_long = 11 unknown_dp_error = 12 access_denied = 13 dp_out_of_memory = 14 disk_full = 15 dp_timeout = 16 OTHERS = 17. Oktatóanyag 9
REPORT ZADE_EXCEL. TABLES: ZADE_1. DATA: BEGIN OF ITAB OCCURS 100. INCLUDE STRUCTURE ZADE_1. DATA: END OF ITAB. SELECT * FROM ZADE_1 INTO TABLE ITAB. CALL FUNCTION 'DOWNLOAD' EXPORTING FILENAME = 'c:\temp\sap.xls' FILETYPE = 'WK1' MODE = ' ' TABLES DATA_TAB = ITAB. CALL FUNCTION 'WS_EXECUTE' EXPORTING COMMANDLINE = 'c:\temp\sap.xls' PROGRAM = 'C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE'. Oktatóanyag 10
REPORT zelte_modul. TYPES: g_eredmeny TYPE p LENGTH 16 DECIMALS 2. PARAMETERS: pa_inp1 TYPE i, pa_inp2 TYPE i, pa_op TYPE c. DATA: gv_eredm TYPE g_eredmeny. IF ( pa_op = '+' OR pa_op = '-' OR pa_op = '*' OR pa_op = '/' AND pa_inp2 <> 0 OR pa_op = '%' ). CASE pa_op. WHEN '+'. gv_eredm= pa_inp1 + pa_inp2. WHEN '-'. gv_eredm = pa_inp1 - pa_inp2. WHEN '*'. gv_eredm= pa_inp1 * pa_inp2. WHEN '/'. gv_eredm= pa_inp1 / pa_inp2. WHEN '%'. PERFORM szazalek USING pa_inp1 pa_inp2 CHANGING gv_eredm. ENDCASE. WRITE: 'Eredmény:', gv_eredm. ELSEIF pa_op = '/' AND pa_inp2 = 0. WRITE: 'Nem osztunk nullával!'. ELSE. WRITE: 'Rossz operandus!'. ENDIF. ********************************************************************** * FORM : szazalek ********************************************************************** * -> PV_AKT * -> PV_MAX ELTE SAP * <- Excellence CV_EREDM Center ********************************************************************** Oktatóanyag 11 FORM szazalek USING pv_act TYPE i pv_max TYPE i
Először kell egy funkció csoport amiben lesznek az elemek. Egy csomagban tároljuk a függvényeket. Létrehozás: Jobb klikk módszer. Z_ vagy Y_ karakterekkel kell kezdődniük Funkciócsoporton belüli létrehozás. Jobb klikk módszer. Z_ vagy Y_ karakterekkel kell kezdődniük Tulajdonságok: a funkcióelem neve, rövid szöveg, funkciócsoport, felelős, utolsó módosító, lefutásfajta, fejlesztési osztály, stb. interfészt interfészparaméter: import-, export- vagy changing-paraméter elemi adatobjektumok, mezősorok, továbbá belső táblák lehetnek. A FORMrutinoknál megismert átadásfajták rendelkezésre állnak. Lehetőség van továbbá opcionális paraméterek definiálására is. kivételek: amennyiben a funkcióelem feldolgozásánál hiba lép fel, lehetőség van annak kivételként történő kezelésére. Forráskód: amit az interfész paraméterezése után ki is tölt. Oktatóanyag 12
A funkcióelemek a Repository-ban rögzített definiált interfészt tartalmazó alprogramok. Más alkalmazások számára is elérhető Oktatóanyag 13
function zelte_szazalek. *"---------------------------------------------------------------------- *"*"Lokális interfész: *" IMPORTING *" REFERENCE(IV_ACT) TYPE I *" REFERENCE(IV_MAX) TYPE I *" EXPORTING *" REFERENCE(EV_EREDM) TYPE I *" EXCEPTIONS *" NULL_OSZTAS *"---------------------------------------------------------------------- if iv_max = 0. ev_eredm = 0. raise null_osztas. else. ev_eredm = iv_act / iv_max * 100. endif. endfunction. Oktatóanyag 14
Amennyiben a kivétel fellép, de azt a meghívó program explicit módon nem kezeli, a funkcióelemben lehetőség van egy hibaüzenet küldésének beállítására. Oktatóanyag 15
Ha többen fejlesztenek egy nagyobb programot hasznos, mert a különálló adatokat használ. Top Include: A funkciók által használt globális változókat, formokat enkapszulálja. Oktatóanyag 16