SAP vállalatirányítási rendszer alapjai /5 • Tantárgy kódja: VEMI5344i • Tanév: 2006/07 - 2.félév • Előadó: dr. Varga Ernő, dr. Gerzson Miklós • Workbench alapok
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
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
Információk a Dictionary-ban ABAP Dictionary: SPLFI transzparens tábla:
up la D
ABAP feldolgozási blokk
ka t
tin tá s
Az SPLFI adatbázistábla tulajdonságainak leírása
spfli ... SELECT SINGLE * FROM spfli
SPFLI
Adatbázistáblák keresése Editor
Újra felhasználható komponensek keresése
Keresés a SELECT utasítással Indítás Debuggingmóduszban Töréspont a SELECT utasításnál A program objektumlistája
Alprogramok
A Dynpro-mezőn F1 Műszaki infó Dupla kattintás a dynpromezőre
A program ismert, amely hozzáfér az adatbázistáblához
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 struktúramező az ABAP Dictionary-ben ismert
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
Adatmodell BC_TRAVLAG T CR
Utazási iroda BC_GEOCITY T
Város A
BC_AIRPORT
T
BC_CITAIRP
Eladási hely
Városrepülőtérhozzárendelés
A
Repülőtér
BC_COUNTER T
T
CR
R
BC_CUSTOM T
R
Ügyfél H
BC_CARRIER T
Légitársaság
BC_PLANFLI H
T
Repülési terv
BC_SFLIGHT H
Repülőút
Idő
T
BC_BOOKING T H
Foglalások
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 H
Repülési terv
11001 H
Járat
Idő
11001 H
Foglalások
Kulcsmezők és másodagos indexek Indexek
Mezők MANDT CARRID CONNID COUNTRYFR CITYFROM AIRPFROM COUNTRYTO CITYTO AIRPTO FLTIME DEPTIME ARRTIME DISTANCE DISTID FLTYPE
Kulcs ... Mezőtípus
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
... Rövid megnevezés ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
...
Olvasás táblából: SELECT utasítás Mely oszlopok?
SELECT <eredmény>
FROM
Mely táblá(k)?
INTO
Hová?
WHERE
Mely sorok?
egy sor
}
} meghatározott oszlop
több sor
Lekérdezés az adatbázisból ABAP-program
pa_car
Adatobjektumok
wa_scarr ABAP feldolgozási blokk
SELECT ...
Open SQL
adatbázisaz adatbázis SQL-je specifikus konvertálás Adatbázisinterfész
ABAP-futásidőrendszer
scarr
Egyedi rekordhozzáférés ABAP-program Adatobjektumok
pa_car Adatbázistábla SCARR
wa_scarr ABAP feldolgozási blokk
SELECT SINGLE * FROM scarr INTO wa_scarr WHERE carrid = pa_car. IF sy-subrc = 0. ... Adatbázisinterfész ABAP-futásidőrendszer
scarr
SELECT ciklus Adatobjektumok
ABAP-programok
pa_car
Adatbázistábla SFLIGHT
wa_sbc400focc ABAP feldolgozási blokk
SELECT SELECT carrid connid fldate seatsocc seatsmax FROM sflight INTO wa_sbc400focc WHERE carrid = pa_car. Utasítások minden beolvasott rekordhoz
ENDSELECT ENDSELECT. IF sy-subrc = 0. ... ABAP-futásidőrendszer
Adatbázisinterfész
Array fetch Adatobjektumok
pa_car
ABAP-programok
Adatbázistábla SFLIGHT
itab_focc
ABAP feldolgozási blokk
SELECT carrid connid fldate seatsmax seatsocc FROM sflight INTO TABLE itab_focc WHERE carrid = pa_car.
IF sy-subrc = 0. ... ABAP-futásidőrendszer
Adatbázisinterfész
INTO opció ABAP program
DATA wa_sbc400focc TYPE sbc400focc. 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
INTO CORRESPONDING FIELDS ABAP Programm
DATA wa_sdyn_conn TYPE sdyn_conn. SELECT SINGLE carrid carrid connid connid deptime deptime FROM spfli INTO INTO CORRESPONDING CORRESPONDING FIELDS FIELDS OF OF wa_sdyn_conn wa_sdyn_conn WHERE carrid = pa_car AND connid = pa_con. A beolvasott sorral megegyező név mandt carrid connid
mandt carrid connid ...
...
deptime
deptime
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 Jogosultság az S_CARRID jogosultsági objektumhoz Profil4 Jogosultság az S_TCODE jogosultsági objektumhoz
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 = Módosítás = Megjelenítés =
01 02 03
'Módosítás' jogosultság S_CARRID objektumhoz CARRID: LH LH ACTVT: Ändern
AUTHORITHY-CHECK
AUTHORITY-CHECK OBJECT 'S_CARRID' Vizsgálat ID 'CARRID' FIELD 'LH' ID 'ACTVT' FIELD '02'.
Az S_CARRID objektumra vonatkozó jogosultságok összessége
ACTVT 03
Eredmény visszaküldése 02 IF sy-subrc ne 0. * Reakció a hiányzó jogosultságra 01 * kontextustól függően ENDIF.
x
x
x
x
x
x
AA AZ DL LH UA
CARRID
Jogos.vizsg.beépítése programba Minta Minta hozzáadása ... ... AUTHORITY-CHECK ... ...
A rendszer generálja az ABAP-kódot
S_CARRID
AUTHORITY-CHECK OBJECT 'S_CARRID' ID CARRID FIELD '__________' ID ACTVT FIELD '__________'. IF SY-SUBRC SY-SUBRC NE NE 0. 0. IF ENDIF.
Return-kód fogadása
Változók vagy értékek kiegészít.
Olvasás több adatbázistáblából Kiszállított komponensek használata, melyek adatgyűjtést foglalnak magukba
Objektum
Globális osztályok módszerei
BAPI-k Üzleti objektumok
Logikai adatbázis
sz é f er ciót In nk Fu elem
Funkciócsoport
ABAP Dictionary nézetek SPFLI Mandt Carrid Connid ... Cityfrom ...
SCARR Mandt Carrid Carrname ...
VIEW Mandt Carrid Connid Cityfrom Carrname
Programon belüli modularizálás • ABAP eseményblokkok – INITALIZATION – START-OF-SELECTION
• Alprogramok
ABAP programok elemei Eseményblokk
Programlokális típusok és mezők definiálása
Eseményblokk Szelekciós kép
Modul
Eseményblokk Eseményblokk
Interfész Alprogram
Modul
Process Before Output Process After Input
Dynpro
Példa program eseményblokkal Programlokális típusok és mezők definiálása
A rendszer által generált szelekciós kép
PARAMETERS pa_date LIKE sy-datum DEFAULT sy-datum.
INITIALIZATION.
Eseményblokk
pa_date = pa_date - 7. START-OF-SELECTION. WRITE pa_date.
Eseményblokk
Példaprogram működése futásidőben ABAP-program
Programindítás
pa_date 20000101
INITIALIZATION. pa_date = pa_date - 7. 19991225
?? START-OF-SELECTION. WRITE pa_date.
ABAP-futásidőrendszer Idő
Az alaplista listapufferja
Eseményblokk végrehajtható programban ABAP-program
INITIALIZATION.
START-OF-SELECTION.
ABAP-futásidőrendszer
• 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
Eseményblokkok szintaktikája REPORT ...
PARAMETERS: pa_date LIKE sy-datum DEFAULT sy-datum.
INITIALIZATION. INITIALIZATION.
" Javasolt értékek a szelekciós képhez
pa_date = pa_date - 7.
START-OF-SELECTION. START-OF-SELECTION. 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.
" Az adatfeldolgozás kezdete
Program alprogramokkal
Eseményblokk Interfész Alprogram
Interfész Alprogram
• 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
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
Példa: alprogram interfésze *&--------------------------------------------------------------------* *& Form FILL_ITAB *&--------------------------------------------------------------------* * Filling internal table with records of sflight with * carrid = p_carrid, calculate percentage *---------------------------------------------------------------------* * -->P_carrid carrier id * <--P_IT_FLIGHT internal standard table with line type sbc400focc *---------------------------------------------------------------------* fill_itab USING FORM fill_itab value( p_carrid) TYPE s_carr_id CHANGING p_it_flight TYPE sbc400_t_sbc400focc.
... ENDFORM.
" FILL_ITAB
Alprogram meghívása futásidőben ABAP-program
Eseményblokk
PERFORM fill_itab USING pa_car CHANGING itab. p_carrid p_it_flight fill_itab
ABAP-futásidőrendszer Idő
Érték és cím szerinti átadás a1
fv1
a2
fv2
a3
fr3
call by reference (címátadás)
call by value (értékátadás)
call by value and result (értékátadás és értékvisszaadás)
Aktuális paraméter Form ális param éter Formális paraméter START-OF-SELECTION. : PERFORM form1 USING a1 PERFORM CHANGING a2 a3. FORM form1 USING VALUE(fv1) CHANGING VALUE(fv2) fr3 . : ENDFORM. ENDFORM.
Példa: alprogram hívása PARAMETERS pa_car TYPE s_carr_id. DATA: it_flight TYPE sbc400_t_sbc400focc. . . . pa_car PERFORM fill_itab USING pa_car CHANGING it_flight it_flight . . . . FORM fill_itab USING CHANGING
VALUE(p_carrid) VALUE(p_carrid ) p_it_flight p_it_flight
Aktuális paraméter
Formális TYPE s_carr_id 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.
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.
paraméter
Reuse-komponensek • Funkciócsoportok és funkcióelemek • Business-objektumok és BAPI-k • Logikai adatbázisok
Üzleti logika beágyazási lehetőségei Reuse-komponensek beágyazása az üzemgazdasági logikába
Objektum
Funkciócsoportok
ABAP: műszaki lehetőségek
Business objektumok
Logikai adatbázis
Reusekomponensek
Funkciócsoport z s é f lem r e e Int kció 1
I
Fu nte nk rfé ció sz FE ele m 2
n E Fu F
Importparaméter
Funkcióelem FE4
Interfész
nter fé sz
F fész Inter
elem k c ió Fun E5
Interfész
Fun kció e FE3 lem I
Alprogram
Exportparaméter Changing-paraméter
Kivételek
Funkcióelem Funkciócsoport Alprogram Interfész
Funkcióelem
Globális adatobjektumok
Adminisztráció
Lokális adatobjektumok Forráskód Interfész Import-paraméter
Export-paraméter
Changing-paraméter
Kivételek
sy-subrc
Funkciócsoport: adatáramlás z s é f lem r e e Int ió
F fész Inter
nt er fész
elem k c ió Fun E5
Fun kció e FE3 lem I
kc E1 n Fu F
I
Fu nte nk rfé ció sz FE ele 2 m
Funkcióelem FE4
Interfész
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
Standard dialógus funkcióeleme STO1
!
!
textline title
answer
answer
igen nem
ABAP program
Funkcióelem keresése Editor Keresés a CALL FUNCTION utasítással Indítás debuggingmóduszban Töréspont a CALL FUNCTION utasításnál, vagy a CALL SCREEN utasításnál A CANCEL utasítást elindító dynpro keresése A Process After Input felépítési logikájának vizsgálata
A funkcióelemből meghívott dynpro keresése
Alkalmazási hierarchia alkalmazási komponensek kijelölése Repositoryinfórendszer
F1 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
Egy olyan program ismert, amely a funkcióelemet felhasználja
Funkcióelem interfésze Funkcióelem Tulajdonságok
Paraméterek TEXTLINE1 TEXTLINE2 TITEL START_COLUMN START_ROW
POPUP_TO_CONFIRM_LOSS_OF_DATA Importálás Exportálás
Csere
Kivételek
... Referenciatípus ... Választható Érték
A funkcióelem nem választható paramétereit a CALL FUNCTION utasítással kell megadni
Nicht Optionale Parameter des Constructors müssen bei CREATE OBJECT versorgt werden
Forráskód
Leírás
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
Importparaméter
Tesztkörnyezet Exportparaméter
Funkcióelem
Kivétel
Funkcióelem meghívása PAI
textline title
answer
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
Minta
Funkcióelem beépítése Minta beszúrása CALL FUNCTION ... ... ... ...
Rendszer által generált ABAP-kód
POPUP_TO_CONFIRM_LOSS_OF_DATA
CALL FUNCTION 'POPUP_TO_CONFIRM_LOSS_OF_DATA' EXPORTING textline = title = IMPORTING answer = . CASE SY-SUBRC.
Aktuális paraméterek kiegészítése Return-kód „elkapása“
Összefoglalás • Adatbázis dialógusok • Modularizálás • Reuse komponensek