ELTE SAP Excellence Center Oktatóanyag 1sap.elte.hu/sap_abap/ABAP-07.pdf · Eseményblokkok:...
Transcript of ELTE SAP Excellence Center Oktatóanyag 1sap.elte.hu/sap_abap/ABAP-07.pdf · Eseményblokkok:...
Eseményblokkok: végrehajtható programoknál (1. típus) az ABAP-
ELTE SAP Excellence Center Oktatóanyag 2
futá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.
Az eseményblokkot az ABAP-programban egy eseménykulcsszó vezeti be.
ELTE SAP Excellence Center Oktatóanyag 3
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.
Program blokk ami csak az adott programban érhető el.
ELTE SAP Excellence Center Oktatóanyag 5
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ó
REPORT ZGRAPH.
ELTE SAP Excellence Center Oktatóanyag 8
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'EXPORTINGCOL1 = '2003'COL2 = '2004'COL3 = '2005'TITL = 'Egy főre jutó évi kiadások Magyarországon, FT'
TABLESDATA = ITAB_DATAOPTS = ITAB_OPTIONS
EXCEPTIONSOTHERS = 1.
* Fájl-választó ablak megjelenítése.REFRESH gt_fajltabla.
ELTE SAP Excellence Center Oktatóanyag 9
CALL METHOD cl_gui_frontend_services=>file_open_dialogEXPORTINGwindow_title = 'Betöltendő fájl neve...'default_filename = '*.txt'multiselection = ' '
CHANGINGfile_table = gt_fajltablarc = gd_subrc.
LOOP AT gt_fajltabla INTO g_fajl.ENDLOOP.
START-OF-SELECTION.
REFRESH gt_itab.
* Fájl betöltése a belső táblába.CALL FUNCTION 'GUI_UPLOAD'EXPORTINGfilename = g_fajlfiletype = 'ASC'codepage = '1403'
TABLESdata_tab = gt_itab
EXCEPTIONSfile_open_error = 1file_read_error = 2no_batch = 3gui_refuse_filetransfer = 4invalid_type = 5no_authority = 6unknown_error = 7bad_data_format = 8header_not_allowed = 9separator_not_allowed = 10header_too_long = 11unknown_dp_error = 12access_denied = 13dp_out_of_memory = 14disk_full = 15dp_timeout = 16OTHERS = 17.
REPORT ZADE_EXCEL.
TABLES: ZADE_1.
ELTE SAP Excellence Center Oktatóanyag 10
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'EXPORTINGFILENAME = 'c:\temp\sap.xls'FILETYPE = 'WK1'MODE = ' 'TABLESDATA_TAB = ITAB.
CALL FUNCTION 'WS_EXECUTE'EXPORTINGCOMMANDLINE = 'c:\temp\sap.xls'PROGRAM = 'C:\Program Files\Microsoft Office\OFFICE11\EXCEL.EXE'.
REPORT zelte_modul.
TYPES:
ELTE SAP Excellence Center Oktatóanyag 11
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 = '+' ORpa_op = '-' ORpa_op = '*' ORpa_op = '/' AND pa_inp2 <> 0 ORpa_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 szazalekUSINGpa_inp1pa_inp2
CHANGINGgv_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* <- CV_EREDM**********************************************************************FORM szazalek USING pv_act TYPE i
pv_max TYPE i
Először kell egy funkció csoport amiben lesznek az elemek.
ELTE SAP Excellence Center Oktatóanyag 12
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 FORM-rutinokná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.
A funkcióelemek a Repository-ban rögzített definiált interfészt tartalmazó
ELTE SAP Excellence Center Oktatóanyag 13
alprogramok. Más alkalmazások számára is elérhető
function zelte_szazalek.
*"----------------------------------------------------------------------
ELTE SAP Excellence Center Oktatóanyag 14
*"----------------------------------------------------------------------
*"*"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.
Amennyiben a kivétel fellép, de azt a meghívó program explicit módon nem
ELTE SAP Excellence Center Oktatóanyag 15
kezeli, a funkcióelemben lehetőség van egy hibaüzenet küldésének beállítására.