SAP vállalatirányítási rendszer alapjai /5 Tantárgy kódja: VEMI5344i Tanév: 2010/11-1.félév Előadó: dr. Varga Ernő, dr. Gerzson Miklós Workbench alapok WB_alapok_2/1
Workbench alapok/2 ABAP programok lefutása ABAP Workbench bevezetés ABAP utasítások és adatdeklarációk Adatbázis dialógusok Modularizálás Újrafelhasználható komponensek Összefoglalás WB_alapok_2/2
Adatbázis dialógusok Információk adatbázis táblákról Olvasás adatbázistáblából Jogosultságvizsgálatok Olvasás több adatbázistáblából WB_alapok_2/3
Információk a Dictionary-ban ABAP Dictionary: SPLFI transzparens tábla: Az SPLFI adatbázistábla tulajdonságainak leírása SPFLI ABAP feldolgozási blokk SELECT SINGLE * FROM spfli WB_alapok_2/4
Információk a Dictionary-ban ABAP Dictionary: ZOKT_HALG transzparens tábla: Az ZOKT_HALG adatbázistábla tulajdonságainak leírása ZOKT_HALG ABAP feldolgozási blokk SELECT SINGLE * FROM ZOKT_HALG WB_alapok_2/5
Adatbázistáblák keresése Editor Keresés a SELECT utasítással A program objektumlistája Alprogramok Töréspont a SELECT utasításnál F1 A Dynpro-mezőn Műszaki infó Dupla kattintás a dynpromezőre Újra felhasználható komponensek keresése Indítás Debuggingmóduszban Alkalmazási hierarchia Alkalmazáskomponensek kijelölése Repositoryinfórendszer Struktúramező az ABAP Dictionaryben Dupla kattintás az adatelemre Felhasználáskimutatás a táblákban A program ismert, amely hozzáfér az adatbázistáblához A struktúramező az ABAP Dictionary-ben ismert WB_alapok_2/6
Demo repülési adatmodell Kiindulási hely Indulási repülőtér Az utazási iroda feladatai: lehetséges repülőterek lehetséges járatok a kívánt időpontban lehetséges járatok a kívánt napon a járatok további információi: árak, egyéb szolgáltatások, Célrepülőtér Érkezési hely WB_alapok_2/7
Tárgymeghirdetési tanácsadó adatmodell Szak tantárgyai Aktuális félév adatai Az oktatásszervezés feladatai: lehetséges tantárgyak a szakon lehetséges tantárgyak a kiválasztott félévben oktató megadása igények rögzítése: létszám, terem, időpont, Oktató hozzárendelése Igények megadása WB_alapok_2/8
ZOKT_TTGY T Adatmodell Tantárgy ZOKT_TSZ T Tanszék A A R R ZOKT_TSZT T Tantárgytanszékhozzárendelés BC_TRAVLAG T Időpont ZOKT_TEREM T Terem CR CR ZOKT_FELEV Félév T ZOKT_OKT T Oktató ZOKT_SZAK T Szak ZOKT_KURZ T BC_SFLIGHT T H Kurzus H Kurzus H oktatóval BC_BOOKING T Kurzus meghirdetés Idő WB_alapok_2/9
Adatmodell BC_TRAVLAG T Utazási iroda CR BC_GEOCITY T Város A BC_CITAIRP T BC_COUNTER T BC_AIRPORT T A Városrepülőtérhozzárendelés Eladási hely CR Repülőtér R R BC_CUSTOM T Ügyfél H BC_CARRIER T BC_PLANFLI T BC_SFLIGHT T BC_BOOKING T Légitársaság H Repülési terv H Repülőút H Foglalások Idő WB_alapok_2/10
Megvalósítás Dictionary-ban SCARR SPFLI SFLIGHT SBOOK Légitársaság Repülési terv Járat Járatfoglalás MANDT CARRID CARRNAME.. MANDT CARRID CONNID AIRPFROM AIRPTO DEPTIME.. MANDT CARRID CONNID FLDATE SEATSMAX SEATSOCC.. MANDT CARRID CONNID FLDATE BOOKID CUSTOMID COUNTER AGENCYNUM H.. 11001 Légitársaság 11001 11001 H Repülési terv H Járat H 11001 Foglalások Idő WB_alapok_2/11
Megvalósítás Dictionary-ban SPFLI Repülési terv SBOOK Járatfoglalás MANDT CARRID CONNID FLDATE BOOKID SFLIGHT Járat MANDT CARRID CONNID FLDATE SEATSMAX SCARR Légitársaság MANDT CARRID CARRNAME.. MANDT CARRID CONNID AIRPFROM AIRPTO WB_alapok_2/12.... CUSTOMID COUNTER AGENCYNUM.. SEATSOCC Tanszék 11001 Tantrágy 11001 Szak 11001 Kurzus 11001 Idő H H H H DEPTIME
Kulcsmezők és másodagos indexek Indexek Mezők Kulcs Mezőtípus Rövid megnevezés MANDT CARRID CONNID COUNTRYFR CITYFROM AIRPFROM COUNTRYTO CITYTO AIRPTO FLTIME DEPTIME ARRTIME DISTANCE DISTID FLTYPE!!! S_MANDT S_CARR_ID S_CONN_ID LAND1 S_FROM_CIT S_FROMAIRP LAND1 S_TO_CITY S_TOAIRP S_FLTIME S_DEP_TIME S_ARR_TIME S_DISTANCE S_DISTID S_FLTYPE WB_alapok_2/13
Kulcsmezők és másodlagos indexek WB_alapok_2/14
Kulcsmezők és másodlagos indexek WB_alapok_2/15
Kulcsmezők és másodlagos indexek WB_alapok_2/16
Olvasás táblából: SELECT utasítás Mely oszlopok? SELECT <eredmény> FROM <tábla> Mely táblá(k)? INTO <cél> WHERE <feltétel> Hová? Mely sorok? } egy sor több sor } meghatározott oszlop WB_alapok_2/17
WB_alapok_2/18
Lekérdezés az adatbázisból ABAP-program Adatobjektumok pa_car wa_scarr ABAP feldolgozási blokk SELECT Open SQL adatbázisspecifikus konvertálás az adatbázis SQL-je Adatbázisinterfész scarr ABAP-futásidőrendszer WB_alapok_2/19
Egyedi rekordhozzáférés ABAP-program Adatobjektumok pa_car wa_scarr Adatbázistábla SCARR ABAP feldolgozási blokk SELECT SINGLE * FROM scarr INTO wa_scarr WHERE carrid = pa_car. IF sy-subrc = 0. ABAP-futásidőrendszer Adatbázisinterfész scarr WB_alapok_2/20
SELECT ciklus Adatobjektumok pa_car ABAP-programok wa_sbc400focc Adatbázistábla SFLIGHT ABAP feldolgozási blokk SELECT carrid connid fldate seatsocc seatsmax FROM sflight INTO wa_sbc400focc WHERE carrid = pa_car. Utasítások minden beolvasott rekordhoz ENDSELECT. IF sy-subrc = 0. Adatbázisinterfész ABAP-futásidőrendszer WB_alapok_2/21
Array fetch Adatobjektumok pa_car ABAP-programok itab_focc Adatbázistábla SFLIGHT ABAP feldolgozási blokk SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO TABLE itab_focc WHERE carrid = pa_car. IF sy-subrc = 0. Adatbázisinterfész ABAP-futásidőrendszer WB_alapok_2/22
INTO opció DATA wa_sbc400focc TYPE sbc400focc. ABAP program SELECT SINGLE carrid connid fldate seatsmax seatsocc FROM sflight INTO wa_sbc400focc WHERE carrid = pa_car AND connid = pa_con AND fldate = pa_date. Ugyanaz a típusa, mint a beolvasott oszlopnak WB_alapok_2/23
INTO CORRESPONDING FIELDS ABAP Programm DATA wa_sdyn_conn TYPE sdyn_conn. SELECT SINGLE carrid connid deptime FROM spfli INTO CORRESPONDING FIELDS OF wa_sdyn_conn WHERE carrid = pa_car AND connid = pa_con. mandt carrid connid deptime A beolvasott sorral megegyező név mandt carrid connid deptime WB_alapok_2/24
Jogosultságvizsgálat Felhasználói törzsrekordok Szelekciós képernyő AUTHORITY CHECK BC400-00 Profil1 Profil2 Megjegyzés Nem SY-SUBRC = 0? Igen SELECT Profil S_CARRID Jogosultság az S_CARRID jogosultsági objektumhoz Profil4 Jogosultság az S_CARRID jogosultsági objektumhoz Jogosultság az S_TCODE jogosultsági objektumhoz WB_alapok_2/25
Jogosultsági objektumok 'Megjelenítés' jogosultság S_CARRID objektumhoz CARRID: * Objektum: S_CARRID ACTVT: Megjelenítés CARRID (Légitársaság) ACTVT (Tevékenység) Tevékenységek: Létrehozás = 01 Módosítás = 02 Megjelenítés = 03 'Módosítás' jogosultság S_CARRID objektumhoz CARRID: LH LH ACTVT: Ändern WB_alapok_2/26
AUTHORITHY-CHECK AUTHORITY-CHECK OBJECT 'S_CARRID' ID 'CARRID' FIELD 'LH' ID 'ACTVT' FIELD '02'. Vizsgálat Eredmény IF sy-subrc ne 0. visszaküldése * Reakció a hiányzó jogosultságra * kontextustól függően ACTVT 03 02 01 Az S_CARRID objektumra vonatkozó jogosultságok összessége x x x x x x ENDIF. AA AZ DL LH UA CARRID WB_alapok_2/27
Minta Jogos.vizsg.beépítése programba Minta hozzáadása AUTHORITY-CHECK S_CARRID A rendszer generálja az ABAP-kódot AUTHORITY-CHECK OBJECT 'S_CARRID' ID CARRID FIELD ' ' ID ACTVT FIELD ' '. IF SY-SUBRC NE 0. Változók vagy értékek kiegészít. ENDIF. Return-kód fogadása WB_alapok_2/28
Olvasás több adatbázistáblából Objektum Globális osztályok módszerei Kiszállított komponensek használata, melyek adatgyűjtést foglalnak magukba Üzleti objektumok BAPI-k Logikai adatbázis Funkciócsoport WB_alapok_2/29
ABAP Dictionary nézetek SPFLI Mandt Carrid Connid Cityfrom SCARR Mandt Carrid Carrname VIEW Mandt Carrid Connid Cityfrom Carrname WB_alapok_2/30
Demo: Dictionary nézet ZST00_KURZUS: 3 tábla összekötése: ZOKT_KURZUS: Kurzusok adatai ZOKT_TANAR: Tanárok adatai ZOKT_TANTARGY: Tantárgyak adatai Join feltételek: ZOKT_TANAR és ZOKT_KURZUS: MANDT és TANAZON/TANAR ZOKT_TANTARGY és ZOKT_KURZUS: MANDT és TTAZON/TANTARGY WB_alapok_2/31
Demo: Dictionary nézet WB_alapok_2/32
Programon belüli modularizálás ABAP eseményblokkok INITALIZATION START-OF-SELECTION Alprogramok WB_alapok_2/33
ABAP programok elemei Eseményblokk Eseményblokk Szelekciós kép Programlokális típusok és mezők definiálása Eseményblokk Modul Process Before Output Interfész Eseményblokk Alprogram Modul Process After Input Dynpro WB_alapok_2/34
Példa program eseményblokkal ZST00_ESEM_BLOKK Programlokális típusok és mezők definiálása A rendszer által generált szelekciós kép INITIALIZATION. PARAMETERS pa_date LIKE sy-datum DEFAULT sy-datum. Eseményblokk pa_date = pa_date - 7. START-OF-SELECTION. Eseményblokk WRITE pa_date. WB_alapok_2/35
Példaprogram működése futásidőben Programindítás ABAP-program INITIALIZATION. pa_date = pa_date - 7. pa_date 20000101 19991225 START-OF-SELECTION. WRITE pa_date.?? Az alaplista listapufferja ABAP-futásidőrendszer Idő WB_alapok_2/36
Eseményblokk végrehajtható programban INITIALIZATION. ABAP-program START-OF-SELECTION. Az eseményblokkot az eseménykulcsszó vezeti be A következő feldolgozási blokk fejezi be Különböző feladatokhoz különböző eseményblokkok tartoznak Az eseményblokkok feldolgozási sorrendjét a futásidő-rendszer határozza meg Standard eseményblokk: START-OF-SELECTION ABAP-futásidőrendszer WB_alapok_2/37
Eseményblokkok szintaktikája REPORT PARAMETERS: pa_date LIKE sy-datum DEFAULT sy-datum. INITIALIZATION. " Javasolt értékek a szelekciós képhez pa_date = pa_date - 7. START-OF-SELECTION. SELECTION. " Az adatfeldolgozás kezdete WRITE pa_date. Az eseményblokkok forráskódbeli sorrendje nincs hatással arra, hogy az ABAP-futásidőrendszer milyen sorrendben hívja fel őket. WB_alapok_2/38
Program alprogramokkal Interfész Interfész Al- program Alprogram Eseményblokk Funkcionalitás beágyazása Programok jobb olvashatósága és strukturáltsága Könnyebb karbantartás Programlokális újrafelhasznáhatóság Feldolgozási blokk interfésszel WB_alapok_2/39
Alprogram az objektumlistában SAPBC400PBD_FORMS Program objektumfajtái DDIC-struktúrák Mezők Események Alprogramok AUTHORITY_SCARRID FILL_ITAB Jobb egérgomb WRITE_ITAB Módosítás Megjelenítés Felhasználáskimutatás WB_alapok_2/40
Példa: ZST00_PELDA_SZUBRUTIN WB_alapok_2/41
Alprogram meghívása futásidőben Eseményblokk ABAP-program PERFORM fill_itab USING pa_car CHANGING itab. p_carrid p_it_flight fill_itab ABAP-futásidőrendszer Idő WB_alapok_2/42
Érték és cím szerinti átadás a1 a2 a3 Aktuális paraméter fv1 fv2 fr3 Formális paraméter call by value (értékátadás) call by reference (címátadás) call by value and result (értékátadás és értékvisszaadás) START-OF-SELECTION. : PERFORM form1 USING a1 CHANGING a2 a3. FORM form1 USING VALUE(fv1) CHANGING VALUE(fv2) fr3. : ENDFORM. WB_alapok_2/43
Példa: alprogram hívása PARAMETERS pa_car TYPE s_carr_id. DATA: it_flight TYPE sbc400_t_sbc400focc.. PERFORM fill_itab USING pa_car CHANGING it_flight.. Aktuális paraméter FORM fill_itab USING VALUE(p_carrid) TYPE s_carr_id CHANGING p_it_flight TYPE sbc400_t_sbc400focc. DATA ls_flight TYPE sbc400focc. " local structure SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO CORRESPONDING FIELDS OF TABLE p_it_flight WHERE carrid = p_carrid. ENDFORM. Formális paraméter Szintaktikai hiba, ha az aktuális paraméter típusai nem egyeztethetők össze a formális paraméter típusokkal való ellátásával. WB_alapok_2/44
Reuse-komponensek Funkciócsoportok és funkcióelemek Business-objektumok és BAPI-k Logikai adatbázisok WB_alapok_2/45
Üzleti logika beágyazási lehetőségei Objektum Reuse-komponensek beágyazása az üzemgazdasági logikába ABAP: műszaki lehetőségek Business objektumok Funkciócsoportok Reusekomponensek Logikai adatbázis WB_alapok_2/46
Funkciócsoport Alprogram Interfész Importparaméter Exportparaméter Changing-paraméter Funkcióelem FE4 Interfész Kivételek WB_alapok_2/47
Funkcióelem Funkciócsoport Alprogram Interfész Funkcióelem Adminisztráció Globális adatobjektumok Lokális adatobjektumok Forráskód Interfész Import-paraméterparaméter Export-paraméterparaméter Changing-paraméter Kivételek sy-subrc WB_alapok_2/48
Funkciócsoport: adatáramlás Funkcióelem FE4 Interfész WB_alapok_2/49
Példa: dialógus a megszakítás ikonnál <szabadon definiálható szöveg>! Az adatok elvesznek. <szabadon definiálható szöveg> igen nem WB_alapok_2/50
Standard dialógus funkcióeleme STO1 textline title! <textline>! <textline> igen nem answer answer ABAP program WB_alapok_2/51
Editor Keresés a CALL FUNCTION utasítással A CANCEL utasítást elindító dynpro keresése Indítás debuggingmóduszban Töréspont a CALL FUNCTION utasításnál, vagy a CALL SCREEN utasításnál A Process After Input felépítési logikájának vizsgálata Funkcióelem keresése F1 A funkcióelemből meghívott dynpro keresése műszaki infó a dynpro és a keretprogram neve funkciócsoport megtekintése az Object Navigator-ban felhasználáskimutatás a dynpro-számra Alkalmazási hierarchia alkalmazási komponensek kijelölése Repositoryinfórendszer Egy olyan program ismert, WB_alapok_2/52 amely a funkcióelemet felhasználja
Funkcióelem interfésze Funkcióelem POPUP_TO_CONFIRM_LOSS_OF_DATA Tulajdonságok Importálás Exportálás Csere Kivételek Forráskód Paraméterek TEXTLINE1 TEXTLINE2 TITEL START_COLUMN START_ROW Referenciatípus A funkcióelem nem választható paramétereit a CALL FUNCTION utasítással kell megadni Választható Érték Nicht Optionale!! Parameter des! Constructors!! müssen bei!! CREATE OBJECT versorgt werden! Leírás WB_alapok_2/53
Dokumentáció és tesztelés Dokumentáció rövid szöveg funkcionalitás példa magyarázatok további információk paraméterek kivételek funkciócsoport Tesztkörnyezet Exportparaméter Importparaméter Funkcióelem Kivétel WB_alapok_2/54
Funkcióelem meghívása textline title answer PAI MODULE user_command_0100 input. save_ok_code = ok_code. clear ok_code. CASE save_ok_code. WHEN 'CANCEL'. CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA' EXPORTING textline = gd_textline title = gd_title IMPORTING answer = gd_answer. case answer. WHEN WHEN ENDCASE. ABAP program WB_alapok_2/55
Minta Funkcióelem beépítése Minta beszúrása CALL FUNCTION POPUP_TO_CONFIRM_LOSS_OF_DATA Rendszer által generált ABAP-kód CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA' EXPORTING textline = title = IMPORTING answer =. CASE SY-SUBRC. Aktuális paramétere k kiegészítése Return-kód elkapása WB_alapok_2/56
Összefoglalás Adatbázis dialógusok Modularizálás Reuse komponensek WB_alapok_2/57