include-program beszúrásával a szimbólumok és az ikonok is rendelkezésre állnak.
•
A rendelkezésre álló ikonok és szimbólumok áttekintése az online dokumentációban vagy a WRITE- utasítás mintájában található.
•
Vízszintes vonal létrehozható az ULINE-utasítással, az sy-uline rendszermezővel egy WRITE-utasításban, vagy több egymást követő mínuszjellel szintén egy WRITE-utasításban.
•
Függőleges vonal létrehozható az sy-vline rendszermezővel egy WRITEutasításban.
•
Speciális vonalak, mint pl. egy sarok a jobb felső részen, a line_top_right_corner AS LINE utasítással hozhatók létre.
•
Ezek a nyelvi elemek lehetővé teszik a lista bekeretezését, a feliratok vízszintes, az oszlopok függőleges vonalakkal történő elválasztását, valamint táblák és fastruktúrák létrehozását.
10
Lapozás listákban és vezéroszlopok SCROLL LIST [TO PAGE ][TO COLUMN ][TO LAST PAGE] []...
SET LEFT SCROLL-BOUNDARY [COLUMN ].
REPORT
sapbc405_fold_scroll_boundary ...
DATA: lsb_column TYPE i VALUE 10. TOP-OF-PAGE. ... SET SCROLL SET LEFT LEFT SCROLLSCROLLBOUNDARY SCROLL--BOUNDARY COLUMN lsb_column COLUMN lsb_column. lsb_column. lsb_column
9
START-OF-SELECTION. ... SCROLL LIST LIST TO TO LAST LAST PAGE. PAGE. PAGE SCROLL PAGE
•
A SET LEFT SCROLL-BOUNDARY utasítás segítségével vezéroszlopokat határozhatunk meg a listában, melyek a listában történő vízszintes lapozáskor a helyükön maradnak. Kiegészítő paraméterek nélkül az aktuális írási pozíciót (sy-colno) baloldali határvonalként határozza meg a rendszer. A határvonalat minden egyes új oldalhoz külön be kell állítani (pl. a TOP-OF-PAGE-hez).
•
A NEW-LINE NO-SCROLLING utasítással megakadályozhatjuk a soremelést követő listasor eltolódását vízszintes lapozás esetén. Ezt a funkciót például akkor használhatjuk, ha azt szeretnénk, hogy a megjegyzéssorok mindig láthatóak legyenek.
•
A SCROLL-utasítás segítségével futásidőben tetszőleges helyre lapozhatunk a listában, úgy hogy a felhasználó például a lista utolsó oldalát lássa.
11
További formázó utasítások NEW-LINE. SKIP [TO LINE] . RESERVE LINES. BACK. POSITION . SET BLANK LINES {ON|OFF}.
•
NEW-LINE meg.
Új sor, a WRITE-utasításban a "/" jelnek felel
•
RESERVE LINES Ha egy lista felépítésekor az aktuális oldalon nincs hely legalább sor számára, akkor lapdobásra kerül sor.
•
SKIP Szóközjelek kivitele SKIP TO LINE Következő kivitel az n sorban (visszafelé pozicionálás is lehetséges)
•
BACK, RESERVE nélkülVisszaugrás az aktuális oldal első sorára a TOPOF-PAGE után RESERVE utasítással visszaugrás a RESERVE után kivitt első sorra
•
POSITION oszlopában
•
SET BLANK LINES ON Üres sorok kivitele, amelyek csak a szóközjelek kivitelével keletkeztek
•
SET BLANK LINES OFF kivitelre (standard beállítás)
Következő kiviteli pozíció az aktuális sor
Üres sorok nem kerülnek
12
Többnyelvű listák Program
Forrásszöveg
Szövegelemek
REPORT REPORT .... ....
Címek/feliratok
WRITE:/ WRITE:/ SY-VLINE, SY-VLINE, 'Flug'(001), 'Flug'(001), 'Startort'(002), 'Startort'(002), 'Zielort'(003), 'Zielort'(003), ... ...
Listafelirat
DE Flugverbindungen EN Flight Connections FR ...
Szövegszimbólumok 001
002
DE EN FR : DE
Flug Flight ..... Startort
Bővített szintaktikai ellenőrzés végrehajtása: hibák fellépése, ha szövegelemek nincsenek karbantartva. Egyeztetés: program szövegelemek között lehetséges. Szöveghosszak meghatározása más nyelvek karakterkészletével.
•
A szövegelemek közé tartoznak a standard feliratok, a szövegszimbólumok és a szelekciós szövegek. A szövegelemeket a rendszer a forrásszöveghez nyelvfüggően külön tárolja. Ezáltal adva van a fordítás lehetősége. A bejelentkezés nyelvén keresztül vezérelhető, hogy melyik nyelven jelennek meg a szövegelemek.
•
A szövegszimbólumok kiviteli hosszát minél nagyobbra állítsuk, mert maximum ennyi hely áll a fordítás rendelkezésére.
•
A szövegszimbólumok a programban kétféle módon hívhatók fel:
•
•
SZÖVEG-xxx karaktersor)
•
'sztring' (xxx).
(xxx egy háromjegyű
Lehetőségünk van a szövegszimbólumok és a program egyeztetésére, ha a második változatot használjuk a szövegszimbólumok létrehozásához. Ha egy szövegszimbólum karban van tartva, mindig ez jelenik meg a listában. A bővített szintaktikai ellenőrzés hibát fog feltárni, ha elfelejtkeztünk a szövegszimbólumok karbantartásáról.
13
SY-SROWS
1 SY-LINSZ
SY-LINCT
Rendszermezők listakészítésnél
2
SY-SCOLS SY-COLNO
SY-LINNO SY-PAGNO 1
•
•
2
3
Az ABAP-futásidőrendszer egy lista létrehozásakor a következő rendszermezőket tölti ki: •
SY-LINCT Sorok száma a REPORTutasításból (LINE-COUNT)
•
SY-LINSZ Sorszélesség a REPORTutasításból (LINE-SIZE)
•
SY-SROWS ablakban
Sorok száma a megjelenítési
•
SY-SCOLS ablakban
Oszlopok száma a megjelenítési
•
SY-PAGNO
Az aktuális oldal száma
•
SY-LINNO Az aktuális oldal aktuális sorának száma (SY-PAGNO)
•
SY-COLNO
Az aktuális oszlop száma
Az utolsó három rendszermezőt a rendszer a lista létrehozásakor folyamatosan tölti ki.
14
Standard funkciók listákban Vissza/Befejezés/Megszakítás Lapozás Nyomtatás Keresés Lista
Mentés
Mentés/Küldés
A lista standard felhasználói felületén keresztül számos listákkal kapcsolatos művelet áll a felhasználó rendelkezésére.
15
Szelekciós kép • • • •
Létrehozás Kialakítás Bevitelek ellenőrzése Változatok
16
Szelekciós kép: áttekintés Log. Log. AB AB
Standard szelekciós kép
NODES: ...
Dynpro:
1. változat
1000 1. verzió
Program Program intern: intern:
Standard szelekciós kép
PARAMETERS: ... SELECT-OPTIONS: ...
SELECTION-SCREEN PARAMETERS: SELECT-OPTIONS: SELECTION-SCREEN ...
Dynpro:
BEGIN OF OF SCREEN SCREEN 1100. 1100. BEGIN ... . ... . END OF OF SCREEN SCREEN 1100. 1100. END
1000
1. változat
Szelekciós kép Dynpro:
1100
1. változat
CALL SELECTIONSELECTION-SCREEN 1100. CALL -SCREEN 1100. SELECTION
•
A szelekciós kép a program és a felhasználó közötti olyan interfészként értelmezhető, mely segítségével pl. korlátozható az adatbázisból beolvasásra kerülő adatmennyiség.
•
A logikai adatbázisok olyan szelekciós képeket bocsájtanak rendelkezésre, melyek konkrét jellemzőértékei a megadott csomópontnevektől (NODES ) függenek. A szelekciós képek verziói - amennyiben a logikai adatbázisban definiálásra kerültek - a standard szelekciós kép alhalmazát képezik. A PARAMETERS és a SELECT-OPTIONS deklaratív nyelvi elemek segítségével bevitelre kész mezőket tartalmazó standard szelekciós kép (1000-es dynpro) hozható létre. A standard szelekciós kép mellett a SELECTION-SCREEN BEGIN .... utasítással további olyan szelekciós képek hozhatók létre, melyek a CALL SELECTION-SCREEN utasítással hívhatók fel.
•
•
•
Egy-egy szelekciós képhez változatokat is létrehozhatunk. A változat felhasználóspecifikus szelekciós mennyiséget jelent. Változat létrehozása akkor célszerű, ha a programot gyakran kell ugyanazzal a szelekcióhalmazzal, vagy háttérfeldolgozásban indítani.
17
Meződeklaráció: PARAMETERS PARAMETERS: [TYPE ][DECIMALS ][LIKE ][MEMORY ID ] [OBLIGATORY][DEFAULT <wert>] [AS CHECKBOX] [RADIOBUTTON GROUP ] REPORT sapbc405_sscd_checkbox_radiobutton. ... . PARAMETERS: pa_carr LIKE sflight-carrid, pa_name AS CHECKBOX DEFAULT 'X', pa_curr AS CHECKBOX DEFAULT 'X', pa_lim_1 RADIOBUTTON GROUP lim, pa_lim_2 RADIOBUTTON GROUP lim, pa_lim_3 RADIOBUTTON GROUP lim. CONSTANTS mark VALUE 'X'. * Check, if any checkbox has been selected IF pa_name EQ mark. ... . ENDDIF. IF pa_curr EQ mark. ... . ENDDIF. * Check, which radiobutton has been selected CASE mark. WHEN pa_lim_1. ... . WHEN pa_lim_2. ... . WHEN pa_lim_3. ... . ENDCASE.
•
•
•
•
Légitársaság
AA
Légitársaság kivitele
Név kivitele
Ár kivitele (saját pénznem) (Saját pénznem):
bs 500 5000
500 - 1000 1000 - 1500
A PARAMETERS-utasítás deklaratív nyelvi elem. A mezők a DATAutasításhoz hasonlóan a TYPE vagy LIKE kiegészítésekkel deklarálhatók. A szelekciós képen bevitelre kész mezőket hoz létre a rendszer. Egy PARAMETERS neve legfeljebb nyolc karakterből állhat. A szelekciós szövegeket (a paraméterek neveit) a szövegelemek/szelekciós szövegek funkcióval ajánlott karbantartani. A DEFAULT <érték> kiegészítéssel javasolt érték megadása lehetséges. MEMORY ID megadása esetén az SAP Memory a SET/GET paraméterek segítségével hoz létre javasolt értéket. Kötelező mezők deklarálása esetén (OBLIGATORY -kiegészítés)a szelekciós képet csak akkor zárja be a rendszer, ha ezek a mezők feltöltésre kerültek. Paramétereket jelölőmezőként is (AS CHECKBOX) generálhatunk. Ezáltal olyan egyjegyű karaktermezőt hozunk létre, melynek tartalma ' '(SPACE = szóköz) vagy 'X' lehet. A jelölőmezők tartalma az IF/ENDIF kontrollstruktúrák segítségével értékelhető ki. A RADIOBUTTON GROUP kiegészítéssel választókapcsolócsoportokat is létrehozhatunk a szelekciós képen. Egy csoporton belül (a csoportnév legfeljebb 4 karakterből állhat) mindig csak egy kapcsoló kiválasztása lehetséges. A választókapcsolók tartalma a CASE/ENDCASE kontrollstruktúra segítségével értékelhető ki.
18
SELECT-OPTIONS utasítás SELECT-OPTIONS: <seltab> FOR . REPORT ... .
sapbc405_sscd_select_options .
SELECT-OPTIONS: so_carr FOR sflight-carrid DEFAULT 'AA', so_fldt FOR sflight-fldate. Belső tábla so_carr Légitársaság Sign
Option
Low
I
EQ
AA
High
Járat dátuma
AA
-
•
A SELECT-OPTIONS-utasítás deklaratív nyelvi elem. A PARAMETERS-utasítással ellentétben ez esetben nem csak egy bevitelre kész mező jelenik meg a szelekciós képen , hanem összetett szelekció végrehajtására kap lehetőséget a felhasználó.
•
A SELECT-OPTIONS utasítás hatására egy <seltab> nevű, szabványos struktúrával rendelkező belső táblát hoz létre a rendszer. Ez a tábla 4 mezőből áll: seltab-sign, seltaboption, seltab-low és seltab-high. A <seltab> szelekciós tábla neve legfeljebb 8 karakterből állhat. A szelekciós szövegeket (a szelekciók neveit) a szövegelemek/szelekciós szövegek funkcióval ajánlott karbantartani.
•
A FOR kiegészítés után adjuk meg azt a mezőt, melynek tartalmát a szelekciós bevitellel össze szeretnénk hasonlítani. Ezt a mezőt pl. egy DATA vagy egy NODES -utasítással kell deklarálni. A seltab-low és a seltab-high mezőtulajdonságai megegyeznek az ellenőrző mező tulajdonságaival.
•
A <seltab> szelekciós tábla minden sora összehasonlító művelettel megfogalmazott feltételt tartalmaz. A következő értékek megadása lehetséges:
•
•
SIGN: I (Include), E (Exclude) OPTION: EQ, NE, LE, LT, GE, GT, BT(Between), NB (Not Between), CP (Contains Pattern), NP (Contains Pattern not) Az 'S' szelekciós mennyiség meghatározása a következőképpen történik: az összes include (I1,..., In) unióhalmaza mínusz az összes exclude (E1, ..., Em) unióhalmaza. Ha a tábla üresen marad, a teljes halmazt veszi figyelembe, ha a SELECT-utasításban WHERE IN <seltab> kiegészítést használunk.
19
Többszörös szelekciók Szelekciós opciók
Légitársaság
AA
=
-
egyedi érték nagyobb vagy egyenlő kisebb vagy egyenlő
Többszörös szelekciók
Szelektálás 1 E...
1 I...
E...
I...
AA Sign
Option
Low
High
I I
EQ BT
AA DL
LH
•
A <seltab> belső tábla a szelekciós képen bevitt adatokkal tölthető fel. A seltab-sign és a seltab-option mezők standard bejegyzései az intervallumok I, EQ, ill. I, BT egyediérték-korlátozásait tartalmazzák.
•
A szelekciós tábla feltöltése a szelekciós opciók funkcióval lehetséges (kettős kattintás a megfelelő beviteli mezőre ill. az adott nyomógomb lenyomásával). A rendszer az adott szelekciónak megfelelően a seltabsign és seltab-option mezők összes alternatíváját felkínálja. Ha a Szelektálás jelzőlámpája zöldet mutat, ez a seltab-sign mezőben I értéknek felel meg, a piros jelzőlámpa pedig E értéknek.
•
Táblabejegyzést a megfelelő nyomógomb (Szelekciós sor törlése) lenyomásával törölhetünk.
•
Minden szelekciós kritérium lehetőséget nyújt komplex többszörös szelekciók megadására, amennyiben ettől eltérő definícióra nem került sor. A rendszer a többszörös szelekciót a nyíl színének megváltoztatásával jelzi.
20
SELECT-OPTIONS szintaktikája SELECT-OPTIONS <seltab> FOR DEFAULT <érték> DEFAULT <érték1> TO <érték2>
OPTION <xx> SIGN <x>
MEMORY ID LOWER CASE OBLIGATORY NO-EXTENSION NO INTERVALS.
•
•
A SELECT-OPTIONS-utasítás kiegészítései a következők lehetnek: •
DEFAULT: javasolt értékek megadását teszi lehetővé a seltab-low (egyedi érték) ill. seltab-low és seltab-high (intervallum) mezőkben. Az OPTION és a SIGN kiegészítésekkel a seltab-option és a seltabsign mezők standard értékektől eltérő javasolt értékei állíthatók be.
•
A MEMORY ID kiegészítéssel SPA/GPA-paraméter rendelhető hozzá. Az SAP-Memory-ban azonosítóval tárolt értéket a szelekciós kép felhívása során a seltab-low-mezőbe (alsó intervallumhatár) helyezi a rendszer.
•
A LOWER CASE kiegészítés kikapocsolja a bevitt adatok nagybetűkre való konvertálását. Ez Dictionary-mezőknél nem megengedett, mivel ez esetben a Dictionary-ben megadott attribútum dominál.
•
Az OBLIGATORY kiegészítéssel kötelező mezőt hozhatunk létre. A szelekciós képen szereplő beviteli mezőben kérdőjel jelenik meg, itt a felhasználó meg kell adjon egy értéket.
•
A NO-EXTENSION kiegészítés kikapcsolja a többszörös szelekció lehetőségét.
•
A NO INTERVALS kiegészítés kikapcsolja a szelekciós képen a felső intervallumhatárt (seltab-high mező). A Többszörös szelekció kiegészítő kép segítségével továbbra is megadhatunk intervallumokat.
Ha 1. típusú programok attribútumai között logikai adatbázist adtunk meg, akkor a logikai adatbázis szelekciós képét dolgozza fel a rendszer. Ha a programban a további SELECTION-OPTIONS vagy a PARAMETERS utasítást programoztunk, ezek a logikai adatbázis szelekciói alatt kerülnek megjelenítésre.
21
Szelekciós kép kialakítása /1 SELECTION-SCREEN BEGIN OF BLOCK WITH FRAME
TITLE <szöveg>
SELECTION-SREEN END OF BLOCK
Jegyár ...
REPORT sapbc405_sscd_sel_screen_i. ... SELECTION-SCREEN BEGIN OF BLOCK carr WITH FRAME. SELECT-OPTIONS: so_carr FOR wa_sflight-carrid. SELECTION-SCREEN END OF BLOCK carr. BEGIN OF OF BLOCK BLOCK limit WITH FRAME TITLE text-001. SELECTION-SCREEN BEGIN PARAMETERS: pa_lim_1 RADIOBUTTON GROUP lim, pa_lim_2 RADIOBUTTON GROUP lim, pa_lim_3 RADIOBUTTON GROUP lim. END OF OF BLOCK BLOCK limit. SELECTION-SCREEN END ...
•
A SELECTION-SCREEN utasítással vezérelhetjük a szelekciós kép felépítését. A logikailag összetartozó szelekciók a BEGIN OF BLOCK kiegészítéssel csoportosíthatók és a WITH FRAME kiegészítéssel kerettel láthatók el. A blokknak címet is adhatunk, de a TITLE <szöveg> kiegészítés csak kerettel összefüggésben használható.
•
Kerettel ellátott blokkokat egymásba helyezhetünk (legfeljebb 5 keretet).
•
A szelekciós kép kialakításánál célszerű a BIBS-mintatranzakcióban szereplő ergonómiai irányelvekhez igazodnunk.
22
Szelekciós kép kialakítása /2 SELECTION-SCREEN: BEGIN OF LINE COMMENT pos(len) <szöveg> [FOR FIELD ] POSITION pos END OF LINE
Kivitel ... Férőhelyek ...
REPORT sapbc405_sscd_sel_screen_ii. ... * Parameters displayed in one line SELECTION-SCREEN BEGIN OF LINE. SELECTION-SCREEN COMMENT 1(20) text-s03. SELECTION-SCREEN COMMENT pos_low(8) text-s04. PARAMETERS pa_col AS CHECKBOX. SELECTION-SCREEN COMMENT pos_high(8) text-s05. PARAMETERS pa_ico AS CHECKBOX. SELECTION-SCREEN END OF LINE. ...
•
Egy kiviteli sorba több paraméter és megjegyzés is felvehető. A SELECTION-SCREEN BEGIN OF LINE és SELECTION-SCREEN END OF LINE utasítások közé kell ékelnünk ezeket. Szöveget a COMMENT-kiegészítéssel vehetünk fel.
•
A megjegyzésszöveget mindig el kell látnunk formátummal (pozíció és kiviteli hossz). A pozíció a pos_low ill. pos_high mezők segítségével is megadható. Ezek a seltab-low és seltab-high mezők pozíciói a szelekciós képen. A COMMENT ... FOR FIELD kiegészítés hatására az mező F1-segítsége mind a megjegyzésszövegnél, mind magánál a paraméternél is megjelenik. Továbbá, az adott paraméter kikapcsolásánál (szelekciós változat: láthatatlan attribútum) a megjegyzésszöveg sem kerül megjelenítésre. A POSITION <pos> utasítással egy adott soron belül a következő kivitel helyére pozicionálhatjuk a kurzort (csak a ... BEGIN OF LINE ... END OF LINE blokkon belül használható).
•
•
23
Szelekciós kép inicializálása INITIALIZATION. REPORT ...
sapbc405_sscd_initialization.
INITIALIZATION. INITIALIZATION. MOVE:
mark TO
pa_all. Légitársaság
MOVE: 'I' TO so_carr-sign, 'BT' TO so_carr-option, 'AA' TO so_carr-low, 'LH' TO so_carr-high. APPEND so_carr. CLEAR so_carr. MOVE: 'E' TO so_carr-sign, 'EQ' TO so_carr-option, 'DL' TO so_carr-low. APPEND so_carr. ...
AA
Járat dátuma
-
LH
-
Kivitel ... Férőhelyek ... szabad foglalt mind Kijelölés
színek
ikonok
•
Az INITIALIZATION esemény egy végrehajtható programban pontosan egyszer kerül feldolgozásra. Ebben az időpontban pl. feltölthetjük a logikai adatbázis szelekcióit javasolt értékekkel. A szelekciók neveit az F1-segítség (műszaki infó) felhívásával állapíthatók meg.
•
A riporton belüli szelekciókat a DEFAULT <érték> kiegészítés segítségével láthatjuk el javasolt értékekkel. Az értékmennyiségeket INITIALIZATION esemény során helyezi a rendszer a <seltab> belső táblákba. A szelekciós kép inicializálása elvileg az AT SELECTION-SCREEN OUTPUT eseménynél is végrehajtható. Ez az esemény a szelekciós kép Process Before Output (PBO) időpontjának felel meg, és mint ilyen a.e. többször is feldolgozásra kerül. A szelekciós kép PBO időpontjában végrehajtott tipikus műveletek egyike a dinamikus képernyőmódosítás (LOOP AT SCREEN), azaz mezők megjelenítése vagy elrejtése, bevitel lehetővé tétele vagy kikapcsolása stb.
•
24
Beviteli ellenőrzések AT SELECTION-SCREEN ON ON RADIOBUTTON GROUP
ON <seltab> ON BLOCK
REPORT sapbc405_sscd_at_sel_screen. ... * Check of selection criterion SO_DEPT AT SELECTION-SCREEN ON so_dept. IF ( so_dept-low LT '060000' AND so_dept-high LT '060000' ) OR ( so_dept-low GE '220000' AND so_dept-high GE '220000' ) AND city_fr EQ 'FRANKFURT'. MESSAGE e046(bc405). ENDIF. ...
•
Az AT SELECTION-SCREEN feldolgozási blokk keretében vezérelhetjük a szelekciós képünkhöz kapcsolódó hibadialógusokat. Az esemény a szelekciós kép PAI-feldolgozásához (PAI: Process After Input) tartozik. Hiba esetén (MESSAGE Exxx vagy MESSAGE Wxxx) az összes mezőt ismét bevitelre készre állítja a rendszer.
•
Az ON ill. ON <seltab> paraméterek segítségével egyes szelekciókra célirányosan is hivatkozhatunk. Hiba esetén csak ezeket helyezi bevitelre kész állapotba a rendszer. Egy-egy logikai csoport beviteli kombinációinak ellenőrzéséhez az AT SELECTION-SCREEN ON BLOCK esemény áll rendelkezésünkre. E blokk mezőit hibaüzenet esetén állítja a rendszer bevitelre kész állapotra. Az AT SELECTION-SCREEN ON END OF <mező> esemény a Többszörös szelekciók szelekciós kép PAI-feldolgozásához tartozik.
•
• •
Beviteli ellenőrzést végezhetünk a logikai adatbázis szelekciós kritériumaira vagy saját programjaink szelekciójára vonatkozóan.
25
CALL SELECTION-SCREEN REPORT sapbc405_sscd_call_sel_screen. ... SELECTION-SCREEN: BEGIN OF SCREEN 1100. PARAMETERS: pa_cus AS CHECKBOX, pa_agy AS CHECKBOX. SELECTION-SCREEN: END OF SCREEN 1100. ...
Szelekciós kép: Dynpro 1000
AT SELECTION-SCREEN ON pa_add. IF pa_add = mark. CALL SELECTION-SCREEN SELECTION-SCREEN 1100 1100 CALL STARTING AT 5 5 ENDING AT 50 10. IF sy-subrc <> 0. LEAVE TO SCREEN 1000. ENDIF. ENDIF.
• •
•
• •
Szelekciós kép : Dynpro 1100
Egy programban több szelekciós képpel dolgozhatunk. A standard szelekciós kép dynprószáma mindig 1000. Szelekciós képet a SELECTION-SCREEN BEGIN OF SCREEN ... END OF SCREEN utasításkombinációval is definiálhatunk. A BEGIN ... END ... utasítások között a SELECT-OPTIONS és PARAMETERS utasításokkal deklaráljuk a szükséges szelekciókat. A szelekciós kép az dynprószámot kapja és a CALL SELECTION-SCREEN utasítással hívható fel. A szelekciós képről való visszatérést a rendszer végzi, tehát nincs szükség külön programozásra, mint pl. korábban a LEAVE SCREEN - CALL SCREEN utasítások esetén. A program közvetlenül a felhívás után folytatódik. Az SY-SUBRC rendszermező segítségével azonban le kell kérdeznünk, hogy a felhasználó a Végrehajtás (F8) vagy a Megszakítás (zöld és sárga nyíl, piros kereszt) funkciót választotta-e. Végrehajtás (F8) esetén sy-subrc = 0, megszakítás esetén pedig sy-subrc = 4. Az INITIALIZATION esemény során tölthetjük fel a szelekciós képeket javasolt értékekkel. Az AT SELECTION-SCREEN kérdezhetjük le, hogy éppen melyik szelekciós kép feldolgozását végzi a rendszer. Ez a lekérdezés pl. egy CASE-kontrollstruktúra és az sy-dynnr rendszermező segítségével valósítható meg.
26
Szelekciós kép változatok /1
ABAP-editor
Program
...SSCD_VARIANTS
Részobjektumok Változatok
Megjelenítés Módosítás
Az összes szelekciós képhez
Szelekciós kép Mentés változatként
Egyedi szelekciós képekhez
DEMO ...SSCD_VARIANTS
•
• •
•
•
Minden programhoz tetszőleges számú különböző szelekciós halmaz, azaz változat hozható létre. Ezek a változatok egyértelműen hozzá vannak rendelve a programhoz. Változatok létrehozása akkor célszerű, ha a programot egyazon szelekciós halmazzal többször futtatunk, vagy a háttérben hajtjuk végre. A program attribútumai között kijelölhötjük az Indítás változattal opciót. A program a felhasználók (rendszer/szolgáltatások/reporting) ezt követően csak változattal indíthatják el. Ha a program több szelekciós képet használ, a változat tetszőlegesen létrehozható az összes szelekcióra vagy külön-külön szelekciókra vonatkozóan. Változatok névkonvenciója és transzportja • 'SAP&xxx': SAP által kiszállított változatok • 'CUS&xxx': felhasználó által (a 000 mandantban) létrehozott változatok • E névkonvencióhoz igazodó változatok mandantfüggetlenek és a riporttal együtt automatikusan transzportálásra kerülnek. Ha nem tartjuk be ezt a névkonvenciót, bejegyzést kell létrehoznunk egy kérelem (feladat) objektumlistájában: LIMU VARI .
27
Szelekciós kép változatok /2 Attribútumok • Változat • • • •
csak háttérfeldolgozáshoz változat védelme megjelenítés csak katalógusban rendszerváltozat (automatikus transzport)
• Mezőtulajdonságok • • • • • • •
•
•
•
•
kötelező mező SPA/GPA kikapcsolása mező elmentése értékek nélkül szelekciós változó ‘Záróérték' mező kikapcsolása mező kikapcsolása mező védelme
Minden változathoz nevet és leírást kell hozzárendelnünk. A változatok alapesetben mindkét környezetben, tehát online-változatban és háttérfeldolgozáshoz egyaránt rendelkezésre állnak. Arra is lehetőségünk van, hogy a változat felhasználását a háttérfeldolgozásra korlátozzuk. Változatunkat védhetjük egyéb felhasználók módosításaival szemben. Ha kijelöljük a Megjelenítés csak a katalógusban opciót, az adott változat nem jelenik meg az általános értéksegítségben (F4). A szelekció típusát a deklarációja során határozzuk meg: Az s típus SELECT-OPTIONS-t, a p típus a PARAMETERS-t jelöli. A rendszer kikapcsolja a bevitelre kész állapotot, ha kijelöltük a szelekciók védelme opciót. A kikapcsolás attribútummal lehetőségünk van a szükségtelen szelekciók kikapcsolására, így áttekinthetőbbé tehetjük a szelekciós képet. Ha a programban szelekciós változókat használunk, elvben három különböző lehetőségünk van arra, hogy a szelekciókat futásidőben értékekkel töltsük fel: • a TVARV-táblából ('T'-típus) • dátummezők feltöltése a dinamikus dátumszámítás segítségével ('D'-típus), pl. napi dátum • felhasználóspecifikus változók ('B'-típus); ennek feltétele, hogy a szelekciót előzetesen a MEMORY ID kiegészítéssel deklaráljuk.
28
Adatok formatálása, csoportszint feldolgozás • • • •
Áttekintés Belső táblák Kinyert (extraktum) adatállományok Két technika összehasonlítása
29
Csoportszint feldolgozás Adatrekordok:
Indulás
Cél
Járatsz.
Frankfurt Berlin 2402 2436
Frankfurt
Berlin
2402
Frankfurt
Berlin
2436
Frankfurt
New York
0026
0026
Frankfurt
New York
0400
Frankfurt
New York
0402
0400 0402
Frankfurt
San Francisco 0454
Honkong
Singapore
0863
New York
San Francisco 0454 Honkong Singapore
•
Ha listáinkat strukturáltan szeretnénk felépíteni, a csoportszintfeldolgozás technikáját alkalmazhatjuk. A csoportszinteket a megjelenítendő mezők tartalmai határozzák meg: a csoportszint váltása mindig akkor következik be, ha a mező tartalma módosul.. Csoportszintek használatának ezért csak akkor van értelme, ha adataink rendezett formában állnak rendelkezésre.
•
A csoportszint-feldolgozás használatának feltétele, hogy a kivitelre szánt adatok ideiglenesen tárolva legyenek. E feltétel teljesítéséhez a belső táblák vagy az átmenti adatállomány technikája használható.
30
Belső standard tábla létrehozása TYPES: BEGIN OF , ... END OF . DATA
TYPE STANDARD TABLE OF .
REPORT
sapbc405dapd_a_internal_tables.
TYPES:
struct_conn, struct_conn, BEGIN OF struct_conn, cityfrom LIKE spfli-cityfrom, cityto LIKE spfli-cityto, carrid LIKE spfli-carrid, deptime LIKE spfli-deptime, arrtime LIKE spfli-arrtime, END OF struct_conn. struct_conn. struct_conn.
DATA:
TYPE STANDARD STANDARD TABLE TABLE OF OF struct_conn, itab_conn TYPE wa_conn TYPE struct_conn.
•
A 4.0 Release óta összesen három táblafajtát különböztetünk meg: standard táblákat (STANDARD TABLE), rendezett táblákat (SORTED TABLE) és hash-táblákat (HASHED-TABLE).
•
A belső táblák teljes szintaktikáját kérem az online-dokumentációban olvassa el.
31
Belső tábla feltöltése > ... SELECT * FROM INTO TABLE DL DL LH LH
• •
•
•
1699 24.500,00 1984 13.100,00 0400 5.700,00 0402 36.750,00
APPEND <wa> TO .
COLLECT <wa> INTO .
CARR CONN UMSATZ
CARR CONN UMSATZ
LH
0400
3.925,00 <wa>
LH
0400
3.925,00
DL DL LH LH
1699 1984 0400 0402
24.500,00 13.100,00 5.700,00 36.750,00
DL DL LH LH
1699 1984 0400 0402
24.500,00 13.100,00 5.700,00 36.750,00
9.625,00
Az Array-Fetch segítségével egy belső táblát a SELECT során egyszerre feltölthetünk. Az APPEND utasítással bejegyzéseket csatolhatunk a belső tábla végéhez. Az APPEND utasítás fólián bemutatott változata csak standard vagy rendezett táblákhoz használható. Az APPEND utasítást követően a sytabix rendszermező tartalmazza az újonnan létrehozott táblabejegyzés indexét. A COLLECT utasítás segítségével egyértelmű ill. tömörített adatállományokat hozhatunk létre. Ennek során a belső tábla <wa> munkaterületének tartalmát a rendszer új bejegyzésként felveszi a tábla végére vagy hozzáadja egy már létező hasonló bejegyzéshez. A második eset ekkor következik be, ha a belső táblában már szerepel olyan bejegyzés, mely kulcsmezői tekintetében megegyezik a munkaterülettel. Az új bejegyzés azon mezőit, melyek nem tartoznak a kulcshoz, a rendszer hozzáadja a a már létező bejegyzés megfelelő tartalmához. A COLLECT utasításnál az összes mező, mely nem a kulcshoz tartozik, numerikus típusú kell legyen.
32
Belső tábla rendezése, feldolgozása SORT [BY ...] [ASCENDING | DESCENDING].
LOOP AT [INTO <wa>]. ... ENDLOOP.
REPORT sapbc405dapd_a_internal_tables. ... DATA: itab_conn TYPE STANDARD TABLE OF struct_conn, wa_conn TYPE struct_conn. GET spfli FIELDS carrid cityfrom cityto deptime arrtime. MOVE-CORRESPONDING spfli TO wa_conn. APPEND wa_conn TO itab_conn. END-OF-SELECTION. SORT SORT itab_conn itab_conn BY BY cityfrom cityto carrid deptime. LOOP AT AT itab_conn itab_conn INTO INTO wa_conn. wa_conn. LOOP WRITE: / wa_conn-cityfrom, wa_conn-cityto, wa_conn-carrid, 51 wa_conn-deptime, 65 wa_conn-arrtime. ENDLOOP. ENDLOOP.
•
•
•
• •
• • •
A SORT utasítás az belső tábla bejegyzéseit növekvően rendezi. Ha nem adjuk meg a BY ... kiegészítést, a rendezés alapjául a tábladefinícióban meghatározott kulcsot használja a rendszer. Ha a BY ... kiegészítést megadjuk, az , , ... mezőket használja a rendszer rendezési kulcsként. Ezek a mezők tetszőleges típusúak lehetnek. A SORT utasítás ASCENDING és DESCENDING kiegészítéseivel megadható, hogy növekvő (standard beállítás) vagy csökkenő legyen-e a rendezés. A SORT utasításhoz kapcsolódó további információ az onlinedokumentációban található. A LOOP AT ... ENDLOOP ciklusutasítással dolgozható fel egy belső tábla. A belső tábla adatrekordjai szekvenciálisan kerülnek feldolgozásra. A CONTINUE utasítás segítségével az aktuális ciklusátfutás idő előtt befejezhető, és a feldolgozás a következő átfutással folytatható. Az EXIT utasítással befejezhető a ciklus feldolgozása. A sy-subrc visszatérési kód a ciklusfeldolgozást (az ENDLOOP utasítást) követően jelzi, hogy a rendszer feldolgozta-e a ciklust: SY-SUBRC = 0: a rendszer legalább egyszer átfutotta a ciklust. SY-SUBRC = 4: a rendszer nem futotta át a ciklust, mivel nem talált bejegyzést.
33
Csoportszint feldolgozás belső táblákkal AT AT AT AT
FIRST. NEW . END OF . LAST.
REPORT TYPES:
[SUM.] [SUM.] [SUM.] [SUM.]
... ... ... ...
ENDAT. ENDAT. ENDAT. ENDAT.
sapbc405dapd_c_itab_gr_level. BEGIN OF struct_conn, cityfrom LIKE spfli-cityfrom, cityto cityto LIKE spfli-cityto, ... END OF struct_conn. itab_conn TYPE STANDARD TABLE OF struct_conn, ...
DATA: ... END-OF-SELECTION. SORT itab_conn BY cityfrom cityto carrid connid fldate. LOOP AT itab_conn INTO wa_conn. AT ENDAT. AT NEW NEW cityfrom. cityfrom. cityfrom. WRITE: ... ENDAT. ATATNEW NEWcityto. cityto. WRITE: ... cityto. ENDAT. AT NEW connid. WRITE: ... ENDAT. connid. WRITE: ... AT ATEND ENDOF OFconnid. connid. . SUM. ... ENDAT. ENDAT. connid AT . cityfrom ATEND ENDOF OFcityfrom. cityfrom. ... ENDAT. ENDAT. ENDLOOP.
•
A csoportszint-feldolgozáshoz különleges kontrollstruktúrákat használhatunk, melyek mind AT-tel kezdődnek és ENDAT-tel végződnek. Ezek a kontrollstruktúrák csak LOOPcikluson belül használhatók.
•
Az AT FIRST ill. AT LAST utasításblokkokat pontosan egy alkalommal dolgozza fel a rendszer, mégpedig az első ill. utolsó LOOP-ciklusátfutás során.
•
Az AT NEW ... ENDAT közötti utasítások akkor kerülnek végrehajtásra, ha az mező értéke az aktuális LOOP- ciklusátfutás során módosul (egy csoportszint kezdete) vagy a tábladefinícióban e mezőhöz képest balra elhelyezkedő mező értéke.
•
Az AT END OF ... ENDAT közötti utasítások akkor kerülnek végrehajtásra, ha az mező értéke a következő LOOP- ciklusátfutás során módosul (egy csoportszint vége) vagy a tábladefinícióban e mezőhöz képest balra elhelyezkedő mező értéke.
•
A kontrollstruktúra feldolgozásának megkezdése során (az AT utasításnál): - minden karaktertípusú mezőt (jobb oldalt) az aktuális csoportmező mögött "*” karakterrel tölti fel a rendszer - minden egyéb mezőt (jobb oldalt) az aktuális csoportmező mögött iniciális értékre állít a rendszer.
•
A kontrollstruktúra feldolgozásának lezárása időpontjában (az ENDAT utasításnál) a munkaterület összes mezője az aktuális ciklusátfutás adatait tartalmazza.
•
A SUM utasítással a LOOP-ciklus munkaterületében valamennyi I, F és P típusú mezőben rendelkezésre bocsájtja a rendszer az adott csoportösszegeket.
34
Csoportszint feldolgozás belső táblákkal /2 REPORT ... TYPES: BEGIN OF struct, f1 ..., f2 ..., f3 ..., END OF struct. DATA: itab TYPE STANDARD TABLE OF struct, wa TYPE struct. ... SORT itab BY f1 f2. LOOP AT itab INTO wa. AT FIRST. ENDAT. AT NEW f1. ENDAT. AT NEW f2. ENDAT. <Einzelsatzverarbeitung> AT END OF f2. ENDAT. AT END OF f1. ENDAT. AT LAST. ENDAT. ENDLOOP.
•
A belső táblák csoportszint-struktúrája statikus. Pontosan megegyezik a belső táblák oszlopainak sorrendjével (balról jobbra). Különösen a belső táblák esetén független a csoportszint-struktúra a tábla rendezésének kritériumaitól. Ez azt jelenti, hogy a belső tábla mezőinek sorrendje meg kell egyezzen a rendezési sorrenddel.
•
A csoportszint-feldolgozás implementálása során be kell tartanunk az egyes csoportszintek fent bemutatott sorrendjét a LOOP-cikluson belül. A sorrend a belső tábla mezőinek sorrendjéhez igazodik és így a rendezési sorrendhez is. A rekordok egyedi feldolgozására az AT ... ENDAT kontrollstruktúrákon kívül kerül sor.
•
35
Extraktum létrehozása Mezőcsoportok megnevezése
Utasítás: FIELD-GROUPS
A HEADER mezőcsoportnak mindig léteznie kell
Mezőcsoportok meghatározása
Utasítás: INSERT ... INTO
FIELD-GROUPS: header, connections, header
connections
flights. flights
INSERT:spfli-carrid spfli-connid sflight-fldate INTO header, spfli-cityfrom spfli-airpfrom ... INTO connections. carrid connid fldate cityfrom airpfrom ... header
Extraktum feltöltése
•
•
flights
EXTRACT connections.
Utasítás: EXTRACT LH
•
connections
400
Frankfurt FRA
Mezőcsoportba csak globális adatobjektum vehető fel, alprogramban vagy funkcióelemben lokálisan definiált adatobjektum nem. Az INSERT utasításnál nemcsak mezőket, hanem mezőszimbólumokat is megadhatunk. Így lehetséges, hogy a mezőszimbólum által hivatkozott adatobjektumot futásidőben dinamikusan vegyünk fel a mezőcsoportba. A nem hozzárendelt mezőszimbólumokat figyelmen kívül hagyja a rendszer, azaz nem szúr be új mezőt a mezőcsoportba. Az EXTRACT utasítás egy mezőcsoport összes mezőjét egyetlen rekordként szekvenciális adatállományba írja (a transzport névazonos mezőkkel történik). Ha definiáltunk HEADER mezőcsoportot, ennek mezőit a rendszer rendezési kulcsként minden rekord elé helyezi. Ezt követően ez az adatállomány a SORT utasítással rendezhető és a LOOP...ENDLOOP utasításokkal feldolgozható. Ezt követően az EXTRACT már nem lehetséges.
36
Extraktum létrehozása: példa REPORT
sapbc405dapd_d_extracts.
* Naming field groups FIELD-GROUPS: FIELD-GROUPS: header, connections, flights, bookings. FIELD * Specifying field groups INSERT: spfli-carrid spfli-connid INSERT: INTO header, header, header, INTO sflight-fldate spfli-cityfrom spfli-airpfrom spfli-cityto spfli-airpto INTO INTO connections, connections, connections, sflight-price sflight-paymentsum sflight-currency seatsfree INTO INTO flights, flights, flights, sbook-bookid INTO INTO bookings. bookings. bookings. * Data retrieval GET spfli. EXTRACT EXTRACT connections. LH GET sflight FIELDS fldate price ... seatsfree = ... EXTRACT EXTRACT flights. LH GET sbook FIELDS bookid. EXTRACT EXTRACT bookings. LH ...
• •
•
400
'X00'
Frankfurt FRA
400
29.12.99
400
29.12.99 00000048
1.332,00 DEM
... ...
Az INSERT utasítás nem deklaratív nyelvi elem. Ez azt jelenti, hogy a mezőcsoportok futásidőben is módosíthatók. Miután egy-egy mezőcsoport első adatállománya az EXTRACT utasítással az átmeneti állományban tárolásra került, az adott mezőcsoport a továbbiakban már nem bővíthető az INSERT utasítással. Különösen a HEADER mezőcsoportra érvényes, hogy az első EXTRACT utasítás után már (mezőcsoporttól függetlenül) egyáltalán nem bővíthető. A GET események feldolgozása során a logikai adatbázis automatikusan hexadecimális nullákat ír a csomópont összes mezőjébe, amikor visszatér a hierarchikusan magasabban fekvő csomóponthoz. Mivel a HEADER általában az összes mezőcsoport rendezési mezőit tartalmazza, ezek a hexadecimális nullák a HEADERben egyfajta hierarchiakulcsként foghatók fel: minél nagyobb a nullák száma, annál magasabban vagyunk a csoportszint-hierarchiában.
37
Extraktum rendezése és feldolgozása SORT [BY ...] [ASCENDING |DESCENDING].
LOOP. ... ENDLOOP.
AT AT AT AT AT AT
FIRST. ... NEW . ... . ... WITH . END OF . CNT() LAST. CNT()
ENDAT. ENDAT. ENDAT. ENDAT. SUM() SUM()
ENDAT. ENDAT.
•
A SORT utasítás a kinyert (extraktum-)adatállományt a HEADER mezőcsoportban definiált mezősorrend szerint rendezi. A BY ... kiegészítéssel határozhatunk meg új rendezési kulcsot. Ennek során minden a HEADER mezőcsoport vagy egy olyan mezőcsoport mezője kell legyen, mely csak a HEADER mezőcsoportban szereplő mezőket tartalmaz. Az ASCENDING ill. DESCENDING kiegészítésekkel határozhatjuk meg, hogy a rendezés iránya növekvő (alapérték) ill. csökkenő legyen-e.
•
A logikai adatbázisok által X‘00‘ értékkel feltöltött mezőket a SORT utasítás mindig az egyéb értéket tartalmazó mezők elé sorolja be.
•
Az extraktumállomány feldolgozása szekvenciálisan, egy LOOP-ciklus segítségével történik. Az extraktum-adatrekordmezőket a rendszer a névazonos programmezőkbe helyezi.
•
A csoportváltás mindig a HEADER mezőire vonatkozik . Az extraktumállományok egyedirekord-feldolgozása az AT ( = mezőcsoport) nyelvi elem segítségével történik.
•
A CNT() nem utasítás, hanem olyan mező, mely automatikusan létrehozásra és feltöltésre kerül, ha a a HEADER mezőcsoport nem-numerikus mezője és a rendezési kulcs része. A csoport végén a CNT() azon eltérő értékek számát tartalmazza, melyeket a mező ezen csoportszinten felvett.
•
A SUM() nem utasítás, hanem olyan mező, mely automatikusan létrehozásra és feltöltésre kerül, ha az gey extraktumállomány numerikus mezője. A csoport végén a SUM() az mező csoportösszegét tartalmazza.
•
A SUM és CNT mezők a csoportszint végén vagy az AT LAST időpontban állnak rendelkezésre.
38
Csoportszint feldolgozás: példa REPORT sapbc405dapd_d_extracts. ... END-OF-SELECTION. * Sorting extract data in the order of the header fields SORT. *
Control Level Processing LOOP. LOOP. ENDAT. AT NEW spfli-connid. WRITE ... ENDAT. ENDAT. AT AT NEW NEW sflight-fldate. WRITE ... ENDAT. * Single record processing ENDAT. AT connections. WRITE ... ENDAT. AT flights WITH bookings. WRITE ... ENDAT. ENDAT. AT END OF spfli-connid. ... ENDAT. ENDLOOP. ENDLOOP.
39
Csoportszint feldolgozás sémája FIELD-GROUPS: header, record1, record2. INSERT: f2 f1 INTO header, f3 f4 INTO record1, f5 INTO record2. ... END-OF-SELECTION SORT BY f1 f2. LOOP. AT FIRST. ENDAT. AT NEW f1. ENDAT. AT NEW f2. ENDAT. AT record1. AT record2.
ENDAT. ENDAT.
AT END OF f2. ENDAT. AT END OF f1. ENDAT. AT LAST. ENDAT. ENDLOOP.
Csoportkezdet feldolgozása Egyedirekordfeldolgozás Csoportvégfeldolgozás
•
A csoportszint-váltások sorrendje a LOOP-cikluson belül a rendezési sorrendhez kell igazodjon.
•
Az összegek csak a csoportvég-feldolgozás keretében határozhatók meg.
40
Belső táblák és extraktumok Belső Belső tábla
•
•
•
•
Extraktum
☺
több belső tábla
pontosan egy EXTRACT-állomány
☺
csoportszint-összegek a csoportszint kezdetén is lehetségesek (AT FIRST, AT NEW f)
csoportszint-összeg csak a csoportszint végén lehetséges (AT END OF f, AT LAST)
☺
számos művelet (beszúrás, módosítás, törlés, egyedi hozzáférés, ...)
☺
belső tábla módosítása mindenkor lehetséges
kisszámú művelet (csak csatolás, rendezés és szekvenciális feldolgozás)
állomány bővítése EXTRACT utasítással SORT vagy LOOP után már nem lehetséges több rekordfajta megengedett
belső táblánként pontosan egy sortípus lehetséges
statikus sortípus
csoportszint-feldolgozás csak a sortípus mezősorrendje szerint lehetséges
Összegzés (SUM) magas költségekkel jár
☺ ☺
dinamikus rekordfajták (az INSERT nem deklaratív utasítás!)
☺
csoportszint-feldolgozás a rendezési sorrend szerint (a Header mezősorrendjétől függetlenül)
☺
Összegzés (SUM(f)) optimálva
Az extraktumok csak csatolást (EXTRACT), rendezést (SORT) és szekvenciális feldolgozást (LOOP) engednek meg. Ha SORT vagy LOOP utasításra már sor került, az átmenti adatállomány nem bővíthető az EXTRACT utasítással. Olyan műveletek, mint az EXTRACT-állományba való beszúrás vagy az abból való törlés nem használhatók. Az extraktumok több rekordfajtát (FIELD-GROUPS) engednek meg, melyek mezői dinamikusan határozhatók meg (az INSERT nem deklaratív nyelvi elem). A belső táblák pontosan egy sortípussal rendelkeznek, melyet statikusan deklarálunk. Belső táblák esetén a csoportszintek hierarchiájához a táblamezők deklaráció szerinti sorrendjét veszi alapul a rendszer. A csoportszintek struktúrája tehát belső táblák esetén statikus, és független attól, hogy a tábla mely kritériumok szerint került rendezésre. Extraktumok esetén a csoportszintek feldolgozása nem függ a mezők sorrendjétől, tehát simételt rendezést követően teljesen új csoportszint-feldolgozásra kerülhet sor. Az extraktumállományok csoportszint-struktúrája tehát dinamikus. Nem felel meg pontosan a rendezési kulcsnak, tehát azon HEADER mezőcsoport mezősorrendjének, mely szerint az extraktumállomány rendezésre került. Extraktumok esetén a compiler megjegyzi, hogy a csoportszint és kumulálandó mező mely kombinációjához szeretnénk csoportszintösszegzést végrehajtani. A kért csoportszint-összegeket a LOOP ... ENDLOOP-blokk feldolgozása során határozza meg a rendszer. Belső táblák esetén a csoportszint-összegeket csak a végén, a SUM-utasítással határozzuk meg, amely négyzetes mértékű ráfordítást eredményez a belső táblák csoportszint-összegzésénél.
41
Listák tárolása és háttérfeldolgozás • Lista mentése • Nyomtatás • Háttérfeldolgozás
42
Listák mentésének lehetőségei Lista
Rendszer
Mentés/küldés
+
Lista
Mentés
Járat adatai
Tárolás
•
Háromféle lehetőség van lista mentésére: •
•
1.) tárolás az Office-ban 2.) tárolás lokális fájlként a PC-n 3.) tárolás területmenüben.
Ön a listát Rendszer menüben mindig elmentheti, vagy használhatja a Lista menüt is a standard listastátusnál.
43
Lista mentése az Office-ban Frankfurti légi összeköttetések (1) LH 400 400 400 402
Lufthansa 2000.01.19. 2000.02.26. 2000.03.02. 2000.04.21.
New York New York New York New York
Küldés
380 380 380 189
Saját járatadatok
Tárolás
Személyes tároló
Járat adatai
Tárolás
•
Lehetőség van mappák létrehozására az Office-ban (Iroda). Ezekben a mappákban listák is tárolhatók. Ha a listát a személyes mappa küldött dokumentumai közé helyezzük, más felhasználóknak is elküldhető.
44
Lista mentése PC file-ként Frankfurti légi összeköttetések (1) LH 400 400 400 402
Lufthansa 2000.01.19. 2000.01.26. 2000.02.02. 2000.01.21.
konvertálatlan
•
•
New York New York New York New York
táblázatkezelő
380 380 380 189
Rich Text Format
HTML-formátum
Lista a PC-re lokális fájlként négy különböző formátumban menthető el: •
1.) konvertálatlan (ASCII) formátumban
•
2.) táblázatkezelő formátumban (-> Microsoft EXCEL)
•
3.) RTF (Rich Text formátum -> Microsoft WORD)
•
4.) HTML-formátumban (Web-Browser).
Az a könyvtár, amelyet a rendszer a frontenden való mentés során felkínál, a RSSOPCDR program segítségével állítható be.
45
Elmentett listák a területmenüben Ugrás
Beszámoló
Területmenü
Előnézet Elmentett listák
Járatadat-modell programjai Járatadatok megjelenítése
Frankfurti légi összeköttetések (1)
Programok LH 400 400 400 402
Lufthansa 2000.01.19. 2000.01.26. 2000.02.02. 2000.01.21.
New York New York New York New York
DEMO: olvasás ...
380 380 380 189
DEMO: változat ... Query-k Egysoros alaplista ... +
Járatadatok módosítása
•
A 4.6A release-ben a területmenüket struktúranavigációra állítottuk át. Azon tranzakciók mellé, amelyeket a területmenü eddig is tartalmazott, most 1-es típusú programok és SAP Query-k is felvehetők. A tranzakciókóddal nem rendelkező programokhoz a rendszer automatikusan tranzakciókódot rendel.
•
A 4.6 release-től kezdve a beszámolóstruktúrák a beszámolómenükbe integrálódnak. Ezt követően a beszámolóstruktúrák feldolgozása már a területmenü karbantartási eszközeivel történik.
•
Az elmentett listákat a program maga tárolja. Ezek az elmentett területmenük újra megtalálhatók, ha a program a menübe integrálásra került. Az elmentett listák az RSRSSLIS standard program segítségével is megjeleníthetők.
•
A területmenükhöz akkor férhetnek hozzá a felhasználók, ha az adott területmenü hozzá van a felhasználó tevékenységcsoportjához. A területmenü a profilgenerátor segítségével rendelhető hozzá tevékenységcsoporthoz
46
Listák nyomtatási lehetőségei REPORT ...
Spool-processz
WRITE: ...
Háttérprocessz
4
1
2
3
REPORT ... WRITE: ...
Dialógusprocessz
•
Lista nyomtatására négyféle lehetőségünk van: • 1) a szelekciós képről • A lista nyomtatása létrehozása során történik (lista egyeztetése a nyomtatási formátummal), és nem jelenik meg a képernyőn. • A lista létrehozása dialógus-processzben történik. • 2) a programból • Az 1.) lehetőség mindkét pontjához hasonlóan történik. • Ez az eljárás interaktív listák esetében hasznos: elágazási listák nyomtatása. • 3) lista létrehozása után • A lista már elkészült, (látható a képernyőn), és csak bizonyos feltételek mellett igazítható a nyomtatási formátumhoz. Például a lista oszlopainak száma már semmiképp sem módosítható. • A lista létrehozása dialógus-processzben történik. • 4) a háttérben • A lista már létrehozásakor kinyomtatásra kerül ... (mint az 1. lehetőség esetén) • A lista létrehozása batch-processzben történik. Ennek az az előnye, hogy pl. hosszú programok esetén a munka egyetlen dialógusprocesszét sem blokkolja.
47
Nyomtatási paraméterek Spool-kérelem Kiviteli készülék Nyomtatások száma
Fedőlapok SAP-fedőlap Szelekció-fedőlap Fogadó Osztály
Név Cím Jogosultság
Spoolprocessz
Spool-vezérlés Azonnali kivitel Törlés a kivitel után Új spool-kérelem Spool-várakozási idő Archiválási módusz
Kiviteli formátum Sorok Oszlopok Formázás
•
Lista nyomtatásához meg kell adni a nyomtatási paramétereket. A nyomtatási paraméterek vezérlik a lista kivitelét, és a következő területekre oszthatók: •
1) kiviteli eszköz és a nyomtatások száma
•
2) spool-kérelem
•
3) spool-vezérlés
•
4) fedőlapok
•
5) kiviteli formátum
•
A nyomtatási paraméterek egy képernyőről adhatók meg, vagy közvetlenül a programba írhatók. A programvezérelt nyomtatási paramétereket a következőkben tárgyaljuk (NEW-PAGE PRINT ON).
•
A SET_PRINT_PARAMETERS funkcióelem segítségével a nyomtatási paraméterek képernyőjén egy online-lista alapján javasolt értékek adhatók meg (azaz nyomtatás a szelekciós képről, ill. a lista létrehozása után).
48
Programvezérelt nyomtatás NEW-PAGE PRINT ON [PARAMETERS <pri_set> | ... ] [NO DIALOG]. NEW-PAGE PRINT OFF.
REPORT sapbc405_stld_new_page_prt_on. NEW-PAGE NEWNEW-PAGE PRINT PRINT ON ON
IMMEDIATELY KEEP IN SPOOL RECEIVER COVER TEXT
' ' 'X' sy-uname 'Járatadatok'.
WRITE: ... NEW-PAGE PRINT OFF. NEW NEW
• •
A NEW-PAGE PRINT ON hatására a rendszer lapemelést végez, és az összes ezt követő kivitelt átirányítja a spoolba. A nyomtatási paraméterek a PARAMETERS-attribútum segítségével mezőlista formájában adhatók át a rendszernek, vagy mint a fólián szereplő példa mutatja, egyesével is megadhatók.
•
A nyomtatási paraméterek megadása egyesével nem ajánlott: abban az esetben pl., ha a felhasználó a nyomtatási paraméterek képernyőjén dolgozik és úgy dönt, hogy mégsem nyomtat, akkor csak arra van lehetősége, hogy az egész programot megszakítsa.
•
Ezzel szemben a PARAMETERS-attribútummal való munka esetén a nyomtatás a program befejezése nélkül is megszakítható (lásd a következő oldalon).
•
A NO DIALOG paraméter megadásával a lista közvetlenül a spool-ba kerül, anélkül, hogy a felhasználó a programban megadott nyomtatási paramétereket a futásidő alatt módosíthatná. Ha a NO DIALOG paraméter nem kerül magadásra, akkor a futásidő alatt egy - a paramétereket javasolt értékként megadó - nyomtatásiparaméterképernyő jelenik meg.
•
A NEW-PAGE PRINT OFF utasításra a rendszer lapdobást végez, amely befejezi a spool-kérelmet (sy-spono utasítást ad), és az ezt követő összes kivitelt ismét visszairányítja a képernyőre.
49
Nyomtatás: GET_PRINT_PARAMETERS REPORT
sapbc405_stld_get_print_param ...
DATA: print_parameter_set pri_params, print_parameter_set LIKE LIKE pri_params, pri_params, valid, valid, valid, list_text LIKE print_parameter_set-prtxt. ... START-OF-SELECTION. CALL FUNCTION 'GET_PRINT_PARAMETERS' EXPORTING destination = 'LP01' immediately = ' ' release = 'X' receiver = sy-uname list_text = list_text IMPORTING out_parameters = print_parameter_set valid = valid. IF valid = 'X'. PRINT ON PARAMETERS print_params NO DIALOG. NEWPAGE PRINT ON PARAMETERS print_parameter_set NO DIALOG. NEW-NEW-PAGE ... . ENDIF. ... END-OF-SELECTION. -PAGE PRINT OFF. NEW IF valid = 'X'. NEWNEW-PAGE ENDIF.
•
•
•
•
A NEW-PAGE PRINT ON utasítás PARAMETERS-attribútumának mezőlistáját a GET_PRINT_PARAMETERS funkcióelem segítségével kell kitölteni. A mezőlista tartalmaz egy belső ellenőrző összeget, melyet a NEW-PAGE PRINT ON értékel ki. Ha ez az ellenőrzőösszeg nem korrekt, akkor a program megszakad. A GET_PRINT_PARAMETERS funkcióelem kiszámolja az ellenőrzőösszeget és az out_parameters paraméter segítségével visszaadja a programnak. A GET_PRINT_PARAMETERS funkcióelem olyan nyomtatásiparaméterképernyőt jelenít meg, melyen a felhasználó módosíthatja a nyomtatási paramétereket, és végül nyomtatási paraméterek teljes rekordját határozhatja meg. Ezt a rekordot az out_parameters kiviteli paraméter adja vissza. A valid kiviteli paraméternek sikeres esetben 'X‘ az értéke. Ha nem sikerült teljes nyomtatásiparaméter-rekordot meghatározni, akkor az out_parameters paraméternél átadott mezőlista üres, a valid paraméter értéke pedig space. A GET_PRINT_PARAMETERS funkcióelemnek átadhatók nyomtatási paraméterek, melyek a nyomtatási paraméterek képernyőjén javasolt értékekként jelennek meg. A GET_PRINT_PARAMETERS funkcióelem nyomtatásiparaméterképernyőjén lehetőség van a nyomtatási paraméterek kiltöltésének megszakítására. Ebben az esetben az out_parameters paraméternél átadott mezőlista üres, a valid értéke pedig space.
50
Példa: GET_PRINT_PARAMETERS REPORT sapbc405_stld_diff_receiver ... LOOP ... receiver = ... department = ... CALL FUNCTION 'GET_PRINT_PARAMETERS' EXPORTING department = department new_list_id = 'X' no_dialog = 'X' receiver = receiver ... IMPORTING out_parameters = print_parameters_set valid = valid EXCEPTIONS ... IF valid <> space. NEW-PAGE PRINT ON ON PARAMETERS PARAMETERS print_parameters_set print_parameters_set NO NO DIALOG. DIALOG. NEW-PAGE PRINT NEW PERFORM list_generator. NEW-PAGE PRINT OFF. OFF. NEW-PAGE PRINT NEW -spono sy WRITE: / 'Spool ID', sysy-spono. .... ENDLOOP.
•
Elképzelhető alkalmazás lehet pl. a lista több címzetthez való továbbításának feladata.
•
A fenti ábrán ennek megvalósítása látható. Ahhoz, hogy a listát több címzetthez is elküldhessük, a listát több spool-kérelem között kell megosztani. A spool-kérelem befejezését a NEW_LIST_ID paraméterrel, és a NEW-PAGE PRINT OFF utasítással érhetjük el.
51
Háttérfeldolgozás fázisai Lépések (steps)
Nyomtatás
Job definiálása Kezdési időpont Job mentése
Státus ütemezett Job áttekintése
engedélyezett kész aktív megszakadt
•
Ha a program nagyobb adatmennyiséget konvertál, és így hosszabb futásidőt igényel, célszerű a programot háttérfeldolgozásban elindítani.
•
A háttérben futó feldolgozás felhasználói dialógusok nélkül történik, és az online-üzemmóddal párhuzamosan történhet. Az online-üzemmódban dialógusprocesszek állnak rendelkezésre. A job-ok feldolgozása speciális workprocesszekben történik (batch-workprocesszek), így osztott feldolgozás is lehetséges.
•
A program háttérben való futtatásához először fel kell vennünk azt egy job-ba.
•
A job-definíció során megadható, hogy az adott job keretei között milyen programok fussanak (steps). Ekkor lehet megadni a nyomtatási paramétereket, és itt kell megadni a job végrehajtásának időpontját is.
•
A job-áttekintés az adott job aktuális állapotáról nyújt információkat.
52
Lépések definiálása Indítási feltételek
Lépés
Általános adatok Job-név
MY_JOB
Job-osztály
C
ABAP-program
Státus
ütemezett
ABAP-program
Cél-szgép
Külső utasítás
Név
SAPBC405_SSCD_VARIANTS
Változat
DEMO: BC405
Nyelv
DE Nyomtatási adatok
Mentés
Spool
•
A Job definiálása funkcióban először a job nevét kell megadni (szabadon definiálható), majd a prioritást (job-osztály), és a célszámítógépet (az F4segítséggel).
•
Ezt követően kell definiálnunk a job egyes lépéseit. Ha a programot szelekciós képpel szeretnénk futtatni, változó megadása is szükséges. Az elkészült lista tárolható a spool-ban, vagy azonnal ki is nyomtatható. Ez a viselkedés a nyomtatási paraméterek megadásával vezérelhető. Az összes lépés megadását követően mentse el azokat, majd térjen vissza a jobdefiníció kezdőképéhez.
53
Kezdési időpont és engedélyezés Indítási feltételek
Lépés
Általános adatok
Azonnal
Dátum/időpont
Dátum/időpont
Job-név
MY_JOB
Job-osztály
C
Státus
ütemezett
Cél-szgép Ütemezett indítás
2000.01.01.
00:00:00
Ez után nincs indítás
Mentés
Job mentése
•
Az összes lépés létrehozását követően megadható a job indítási időpontja. Az is megadható pl., hogy a job meghatározott napon, meghatározott időpontban kerüljön indításra.
•
Az indítási időpont megadását követően mentse el azokat, majd térjen vissza a job-definíció kezdőképéhez. Itt mentse el a job-ot, így a job engedélyezésével az a megadott időpontban végrehajtható.
•
A job-ütemezés a BTCH és BTC2 funkciócsoportok funkcióelemeinek segítségével programvezérléssel is elvégezhető.
54
Interaktív listák alapvető technikái • • • • •
Elágazási listák Interaktív események Listaszintek közötti adatátadás Elágazási listák oldalfeliratai Lista modális dialógusablakban
55
A listarendszer EL 20
EL 2 EL 1
Alaplista
Meghívó
pl. kettős kattintás a sorra
•
Az alaplista mellett párhuzamosan maximum 20 elágazási lista lehet a rendszerben. A rendszer minden listát saját tárolóterületen (listapuffer) tárol.
•
Az elágazási listáknál ugyanazok a funkciók (lapozás, nyomtatás) állnak rendelkezésre, mint az alaplistánál.
•
Az aktuális listából a Vissza (zöld nyíl) és a Megszakítás (piros kereszt) funkciókkal lehet kilépni. A hozzá tartozó listapuffert a rendszer engedélyezi, és a logikailag fölérendelt lista újra megjelenik a képernyőn.
•
A szelekciós képhez a Befejezés (sárga nyíl) funkcióval lehet visszatérni.
56
Interaktív lista események *
Alaplista
START-OF-SELECTION. GET ... . END-OF-SELECTION. TOP-OF-PAGE. *
Elágazási listák
AT LINE-SELECTION. AT USER-COMMAND. TOP-OF-PAGE DURING LINE-SELECTION.
•
A START-OF-SELECTION, GET, END-OF-SELECTION, TOPOF-PAGE és END-OF-PAGE események az alaplista létrehozásához állnak rendelkezésre. Ha egyszer kilép az alaplistából, akkor ezeket az eseményeket már nem dolgozza fel a rendszer.
•
Elágazási lista létrehozásához lényegében két esemény létezik: Az AT LINE-SELECTION és az AT USER-COMMAND. Elágazási lista fejlécének elkészítéséhez szükség van a TOP-OF-PAGE DURING LINE-SELECTION eseményre.
57
Elágazási listák: lefutásvezérlés Liste
SY- UCOMM
Bearbeiten Springen System Hilfe
%EX PRI
DEMO: Lista ...
P+ P...
Rendszerprogramok F2
SY- UCOMM PICK
REPORT SAPBC405_... AT AT LINE-SELECTION. LINELINE-SELECTION.
•
Miután a felhasználó műveletet hajtott végre a listán, a rendszer kiváltja az ehhez a művelethez definiált funkciókódot, és bemásolja azt az 'syucomm' -rendszermezőbe.
•
Ha a felhasználó kiváltja a PICK funkciót, akkor a program átveszi az ellenőrzést, és végrehajtja az AT LINE-SELECTION interaktív eseményt. A standardlista-státus összes többi funkcióját a rendszerprogramok dolgozzák fel.
•
Ha Ön a felhasználónak saját funkciót is szeretne kínálni, saját GUI-státus karbantartása szükséges a Menu Painterben, melyet a programban a SET PF-STATUS 'NAME' utasítással kell deklarálnia. Ha ilyen művelet kerül kiváltásra, a program átveszi a vezérlést és végrehajtja az AT USER-COMMAND interaktív eseményt.
58
Elágazási listák létrehozása /1 REPORT sapbc405_ilbd_interact_list_1.
Alaplista
... AT AT LINE-SELECTION. LINELINE-SELECTION. WRITE: 'Ez egy elágazási lista'(001) COLOR COL_TOTAL, / 'Listaszint: '(002), sy-lsind, ...
Felhasználói művelet: sy-ucomm = PICK
Ez egy elágazási lista Listaszint: 1
•
Ha a felhasználó kiváltja a PICK funkciót, akkor a program átveszi a vezérlést, és végrehajtja az AT LINE-SELECTION interaktív eseményt. Az ezt követő összes kivitel (WRITE) elágazási listán kerül kivitelre.
•
Az SY-LSIND rendszermező megadja az aktuális listaszintet, és annak értékét mindig közvetlenül az AT LINE-SELECTION esemény végrehajtása előtt eggyel megnöveli. A listaszintek maximális száma 20-ra korlátozódik.
59
Elágazási listák létrehozása /2 Alaplista sy-lsind: 0 REPORT sapbc405_ilbd_interact_lists_2. AT AT LINE-SELECTION. LINELINE-SELECTION.
PICK
sysy-lsind. lsind. CASE sy-lsind. WHEN WHEN '1'. '1'. WRITE: 'Elágazási lista: 1'(001), /'SY-LSIND: '(000), sy-lsind. WHEN WHEN '2'. '2'. WRITE: 'Elágazási lista : 2'(002), /'SY-LSIND: '(000), sy-lsind. ENDCASE.
Elágazási lista: 1 sy-lsind: 1
PICK
Elágazási lista : 2 sy-lsind: 2 PICK
•
Az SY-LSIND rendszermező azon lista indexét tartalmazza, amelyet a program éppen létrehoz. A mező tartalmát a rendszer az interaktív feldolgozási blokk kezdete során eggyel növeli. Ezen tartalom lekérdezésével - pl. a CASE utasítás segítségével -, megkülönböztethető a különböző listaszintek feldolgozása.
•
A CASE-utasítás a listarendszer felülről való korlátozására is felhasználható. A példában nem készül harmadik elágazási lista: Ha a 2. elágazási listánál kiváltásra kerül az AT LINE-SELECTION esemény, akkor az SY-LSIND értékét a rendszer ugyan 3-ra állítja, ezt azonban a CASE-utasítás nem veszi értékként figyelembe, így a rendszer nem hajtja végre a WRITE-utasítást. Ez azt jelenti, hogy nem jön létre elágazási lista. Ehelyett a rendszer az SY-LSIND-t újra 2-re állítja, és megjeleníti a 2. elágazási listát.
60
Adattranszport: HIDE-terület HIDE: , , ...
.
REPORT sapbc405_ilbd_hide . GET spfli FIELDS carrid connid cityfrom cityto.
DEMO: Adattranszport: Hide-technika -------------------------------------------------------AA NEW YORK SAN FRANCISCO AZ RÓMA FRANKFURT AZ TOKIO RÓMA LH FRANKFURT NEW YORK
WRITE: / spfli-carrid, 10 spfli-cityfrom, (24) spfli-cityto. HIDE: spfli-carrid, spfli-connid.
A '0' listaszint Hide-területe Sor
AT LINE-SELECTION. ...
3 4 5 6 :
Mezőnév
Érték
Mezőnév
Érték
spfli-carrid spfli-carrid spfli-carrid spfli-carrid :
AA AZ AZ LH :
spfli-connid spfli-connid spfli-connid spfli-connid :
0017 0555 0789 0400 :
•
Az alaplista adatai elágazási listánál csak akkor állnak rendelkezésünkre, ha ezeket az adatokat pl. belső táblában pufferoltuk. Ha csak egy - a felhasználó által kiválasztott - sor információit szeretnénk megjeleníteni az elágazási listában, hivatkozást kell létrehoznunk a kiválasztott listasor és a belső tábla megfelelő sora között. Pontosan ezen követelmény leképezésére áll rendelkezésre a HIDE -technika.
•
A HIDE utasítással a mezőtartalmakra vonatkozó listasorok külön területen pufferolhatók. Ez esetben a rendszer a változónevet és az aktuális változótartalmat is tárolja. A HIDE utasítással rendszerint kulcsmező-tartalmak, vagy olyan információk menthetők el, amelyekre a későbbiekben a kiegészítő információk olvasásánál lehet szükség (SELECT ... WHERE .... ).
•
•
•
Egy-egy listasor adatainak tárolásához a HIDE utasítást kell használni, mielőtt egy új sor elkezdődne, mivel az adatokat mindig az aktuális kiviteli sorral (SY-LILY rendszermező) kapcsolatban tárolja a rendszer. A HIDE-területre olyan mezők is felvehetők, amelyek a listán nem jelennek meg.
61
Sorkiválasztás: HIDE-technika DEMO: adattranszport: Hide-technika -------------------------------------------------------AA NEW YORK SAN FRANCI AZ RÓMA FRANKFURT AZ TOKIÓ RÓMA LH FRANKFURT NEW YORK
DEMO: adattranszport: Hide-technika -------------------------------------------------------LH 400 2000.02.01. 1.332,00 DEM 2000.03.28. 1.332,00 DEM 2000.04.17. 1.332,00 DEM
1
4
SY- LILLI 6
2
5
A '0' listaszint Hide-területe
•
REPORT SAPBC405_ILBD_HIDE .
Sor
Mezőnév
Érték
Mezőnév
Érték
AT AT LINE-SELECTION. LINELINE-SELECTION.
3 4 5 6 :
spfli-carrid spfli-carrid spfli-carrid spfli-carrid :
AA AZ AZ LH :
spfli-connid spfli-connid spfli-connid spfli-connid :
0017 0555 0789 0400 :
SELECT ... WHERE carrid = spfli-carrid LH AND connid = spfli-connid. 0400
3
A következőkben a fenti példa egyes lépéseit részletezzük: •
1) A felhasználó kettős kattintással kiválaszt egy sort, amelyhez a rendszer a HIDE-területen adatokat tárol. A futásidőrendszer megállapítja az SY-LILLI rendszermező segítségével, hogy melyik sorra vonatkozott a kettős kattintás: a fenti példában ez a 6. sor.
•
2) A futásidőrendszer a HIDE-terület azon helyére ugrik, ahol az egérrel kijelölt sor adatai találhatók.
•
3) A futásidőrendszer feltölti a HIDE-területen a kiválasztott sorhoz megadott mezőket a megfelelő értékekkel.
•
4) A futásidőrendszer végrehajtja az AT LINESELECTION eseményt, és feldolgozza a program megfelelő blokkját.
•
5) A rendszer létrehozza az elágazási listát.
62
Adattárolás a listarendszerben Hide-terület: alaplista
Alaplista
Hide-terület: EL1
Hide-terület: EL2
EL 1
EL 2
...
Megjelenítés
Megjelenítés
Megjelenítés
Listapuffer: alaplista
Listapuffer: EL1
Listapuffer: EL2
•
A lista összes kivitele listapufferba kerül. Minden listát addig tárol a rendszer, amíg listapuffere törlésre nem kerül. Minden elágazási listát, melynek listaszintje meghaladja az aktuális listaszintet, a futásidőrendszer automatikusan törli, azaz törli a hozzá tartozó listapuffert. Példa: az 5. elágazási lista elágazik a 3. elágazási listához, így a 4. és 5. elágazási lista listapuffereit törli a rendszer.
•
Minden listához saját HIDE-terület van hozzárendelve.
63
Érvényes sorkiválasztás REPORT sapbc405_ilbd_valid_line_sel. ... GET spfli FIELDS ... WRITE ... HIDE: spfli-carrid, spfli-connid.
DEMO: adattranszport: Hide-technika -------------------------------------------------------LH 400 2000.02.01. 1.332,00 DEM 2000.03.28. 1.332,00 DEM 2000.04.17. 1.332,00 DEM
END-OF-SELECTION. CLEAR CLEAR spfli-carrid. spflispfli-carrid. carrid.
Hide - terület AT LINE-SELECTION. CHECK CHECK NOT NOT spfli-carrid spfliIS INITIAL. INITIAL. spfli-carrid IS ... CLEAR spfli-carrid. spfliCLEAR spfli-carrid. carrid.
•
Érvénytelen sorkiválasztásnak nevezik egy olyan sor kiválasztását, amelyhez nincsenek adatok tárolva a HIDE-területen. Ilyen lehet pl. a fejléc vagy a lábléc.
•
Igény szerint saját magunk is gondoskodhatunk arról, hogy érvénytelen sorkiválasztásnál a rendszer ne hozzon létre elágazási listát.
•
A fenti példaprogramban olyan mező (spfli-carrid) inicializálása történik, amelynek tartalmát a rendszer a HIDE-területen tárolja. Ha a felhasználó nem megengedett sort választ ki, akkor a futásidőrendszer nem talál értéket ehhez a mezőhöz a HIDE-területen, a mező nem kap új értéket, és így iniciális marad. Ezzel a CHECK-utasítás az aktuális feldolgozási blokkból (AT LINE-SELECTION) való kilépést eredményezi. A rendszer nem hoz létre elágazási listát, és az interaktív eseményt kiváltó lista újra megjelenik a képenyőn.
64
GUI-cím megadása SET TITLEBAR
'T01' Kettős kattintás
[WTH .. ][WI Címkarbantartás
Cím létrehozása Program
SAPBC405_ILBD_GUI_TITLE
Címkód
T01 SY-TITLE SY-TITLE
Cím
&1 légitársaság járatadatai
Átvétel
• •
Minden cím
A cím neve maximum 20 karakter hosszúságú lehet, és nagybetűkkel kell megadni. A beállított cím addig marad aktív, amíg nem adunk új címet. A SET TITLEBAR <TITLE> WITH utasítással a GUI-cím változóinak karbantartását végezhetjük el.
65
Elágazási listák oldalfeliratai TOP-OF-PAGE DURING LINE-SELECTION.
REPORT sapbc405_ilbd_heading_i_lists NO STANDARD PAGE HEADING.
Alaplista
TOP-OF-PAGE.
TOP-OF-PAGE TOPDURING LINE-SELECTION. LINETOP-OFOF-PAGE DURING LINE-SELECTION.
Elágazási lista
• • •
A TOP-OF-PAGE esemény csak az alaplista létrehozása során kerül kiváltásra. Elágazási listák oldalainak fejlécét a TOP-OF-PAGE DURING LINESELECTION esemény felhasználásával hozhatjuk létre. A TOP-OF-PAGE DURING LINE-SELECTION utasítás az első kivitel (pl. WRITE) alkalmával minden új listaoldalon kiváltásra kerül
66
Lista modális dialógusablakban WINDOW STARTING AT [ENDING AT ]. REPORT
sapbc405_ilbd_g_window.
DATA: ... line1 TYPE i, line2 TYPE i. ... AT AT LINE-SELECTION. LINELINE-SELECTION. ... line1 = sy-curow + 1. line2 = line1 + 12. WINDOW STARTING STARTING AT AT 10 10 line1 line1 WINDOW ENDING AT AT 65 65 line2. line2. ENDING ´ WRITE ... ...
DEMO: modális dialógusablak ------------------------------------------------------------AA NEW YORK SAN FRANCISCO AZ ROM FRANKFURT AZ TOKIÓ RÓMA DEMO: modális dialógusablak LH FRANKFURT NEW YORK LH AZ 0555 LH 2000.0519. 360.202 ITL QF 2000.08.21. 360.202 ITL QF SQ SINGAPORE SAN FRANCISCO
• •
•
•
A WINDOW STARTING AT utasítás hatására az aktuális elágazási lista egy modális dialógusablakban fog megjelenni. A modális dialógusablak bal felső sarka a oszlop soránál található. A számolás a fő ablak bal felső sarkában található nulla/nulla pozíciónál kezdődik. Ha az kisebb vagy egyenlő nullánál, akkor a lista modális dialógusablak helyett a teljes képernyőn jelenik meg. Az ENDING opcionális paraméterrel a modális dialógusablak szélessége és magassága vezérelhető. A jobb alsó sarok a oszlop sorába helyeződik. Egy modális dialógusablak csak egyetlen nyomógombsort tartalmaz, vagyis nincs benne menü- és szimbólumsor.
67
Mezőkiválasztás GET CURSOR FIELD <mező1> [VALUE <mező2>]. REPORT sapbc405_ilbd_field_selection. DATA: ... , field_name(30),field_value(50). field_value(50). field_name(30), ... AT LINE-SELECTION. GET GET CURSOR CURSOR FIELD FIELD field_name field_name VALUE VALUE field_value. field_value. field_value. field_name. field_name. CASE field_name. WHEN 'SPFLI-CARRID'. 'SPFLI'SPFLI-CARRID'. ... WHEN 'SPFLI-CONNID'. 'SPFLI'SPFLI-CONNID'. ...
DEMO: mezőkiválasztás -------------------------------------------------------CARRID CONNID CITYFROM AA 0017 NEW YORK AZ 0555 RÓMA AZ 0789 TOKIÓ LH 0400 FRANKFURT
DEMO: mezőkiválasztás LH: Lufthansa
ENDCASE.
DEMO: mezőkiválasztás LH 0400 2000.05.19. 2000.08.21.
•
A GET CURSOR utasítással lehetőség van elágazási listák kurzorpozíciótól függő - létrehozására. Ha a felhasználó a fenti példában a CARRID-mezőre kattint, akkor megkapja a légitársaság nevét. Ha azonban az egyik CONNID-mezőre kattint, akkor az ehhez a járatcsatlakozáshoz tartozó összes járat-időpont jelenik meg.
•
A kiviteli mező nevét a FIELD paraméternél megadott mezőben bocsátja rendelkezésre a rendszer. A kiviteli érték a VALUE paraméternél megnevezett mezőben található.
•
A rendszer beállítja az SY-SUBRC visszatérési értéket: •
•
'0' érték: a kurzor egy mezőn állt
• '4' érték: a kurzor nem egy mezőn állt Figyelem: a SELECT-utasítás WHERE-feltételeként nem szabad használni a VALUE paramétert, mivel a nem karakteres mezőknél típuskonvertálás következne be, amely nem a kívánt eredményekhez vezethet. Ehelyett ebben az esetben a HIDE-technikát kell alkalmazni.
68
Interaktív listák rendszermezői
SY-LILLI SY-LILLI 11 22 33 44
1
SY-PAGNO SY-PAGNO
2
SY-CPAGE SY-CPAGE
SY-LINNO SY-LINNO 55 66 77 88
11 22 33 44
SY-CUROW SY-CUROW SY-CUCOL SY-CUCOL
99 10 10
3
EL 1
EL 2
SY-LSIND SY-LSIND == 11 SY-LISTI SY-LISTI == 00
SY-LSIND SY-LSIND == 22 SY-LISTI SY-LISTI == 11
Alaplista SY-LSIND SY-LSIND == 00 SY-LISTI SY-LISTI == 00
•
...
Az összes interaktív eseménynél a következő rendszermezőket a rendszer automatikusan látja el adatokkal: •
SY-LSIND indexe;
az aktuális lista
•
SY-LISTI megjelenített lista indexe;
az utoljára
•
SY-LILLI kiválasztott sorának abszolút száma;
a megjelenített lista
•
SY-CPAGE száma;
•
SY-CUCOL a megjelenített lista azon oszlopának száma az ablakban, amelyben a kurzor utoljára állt;
•
SY-CUROW a megjelenített lista azon sorának száma az ablakban, amelyben a kurzor utoljára állt;
•
SY-STACO oszlopának száma;
•
SY-STARO a legfelső megjelenített oldal (SYCPAGE) első látható sorának száma (jelen esetben a feliratsorok nem számítanak);
•
SY-UCOMM az a funkciókód, amely a megjelenített listán az interaktív eseményt kiváltotta;
•
SY-PFKEY
a megjelenített lista legfelső oldalának
a megjelenített lista első megjelenített
a megjelenített lista státusa;
69
ALV Grid Control • • • •
Technikai háttér Alapelvek Control megvalósítása Funkciós elem
70
ALV – Technikai háttér /1 ALV Grid Control: Mi a control? egyedülálló bináris szoftverkomponensek helyileg kerülnek telepítésre a SAPGUI-val a frontenden az applikációs szerver funkcióit tárolják a frontend számára ABAP-objektumok osztályaiba vannak beépítve újrafelhasználásra (reuse) alkalmasak
•
A controlok vezérlését egy központi Control Framework veszi át.
•
Az R/3-rendszer ABAP-objektumok segítségével lehetővé teszi a desktop-alkalmazások (Custom Controls) vezérlését. Az applikációs logika ebben az esetben az R/3 applikációs szerverén fut (Automation Client), amely a frontendre tereli a custom control-okat (Automation Server).
•
Ha custom control-okat kell csatlakoztatni a frontendhez, akkor a SAPGUI konténerként szolgál azok számára. A custom control-ok ActiveX control-ok és JavaBean-ek lehetnek.
•
A control létrehozásának és vezérlésének módszereit a rendszer Remote Function Call (RFC) segítségével viszi át a frontendre.
•
A control-ok ABAP-objektumok segítségével valósíthatók meg a programokban.
71
ALV – Technikai háttér /2 Terület
Custom konténer control
Minden olyan controlt, amit dynpro-n kíván megjeleníteni, hozzá kell rendelni egy Konténer control-hoz. A bemutatott ábrán egy ALV Grid control integrációja látható Custom konténer control segítségével. A Screen Painter-ben létrehozott konténer segítségével meg kell határozni azt a területet, amelyet a Custom konténer control kitölt.
ALV Grid Control
•
Az SAP-konténer képes arra, hogy más control-okat (például SAP ALV Grid Control, Tree Control, SAP Picture Control, SAP Splitter Control stb.) foglaljon magába. Ezeket a control-okat collection-ben kezeli, és fizikai területet biztosít a megjelenítéshez.
•
Minden control egy konténerben működik. A konténerek maguk is control-ok, ezért egymásba ágyazhatók. A konténer a hozzá tartozó control szülője (parent). Az SAPkonténerek öt csoportra oszlanak: •
SAP Customer konténer: Megjelenítés a Screen Painter-ben definiált területen belül, dynpro-kon vagy alképernyőkön. Osztály: CL_GUI_CUSTOM_CONTAINER
•
SAP Dialogbox konténer: Megjelenítés amodális dialógusablakban vagy a teljes képernyőn. Osztály: CL_GUI_DIALOGBOX_CONTAINER
•
SAP Docking konténer: Megjelenítés rögzített (dokkolt), átméretezhető részablakként, lehetőséget nyújtva annak különálló amodális dialógusablakként való megjelenítésére. Osztály: CL_GUI_DOCKING_CONTAINER
•
SAP Splitter konténer: Több control megjelenítése és csoportosítása egy adott területen, azaz a területek felosztása cellákra. Osztály: CL_GUI_SPLITTER_CONTAINER
•
SAP Easy Splitter konténer: Megjelenítés két cellában, húzható választóvonallal (Split Bar). Osztály: CL_GUI_EASY_SPLITTER_CONTAINER.
72
ALV példa, standard funkciók Részletek
Keresés
Rendezés
Szűrő
Összegzés
Letöltés
Nyomtatás
Megjelenítési változat
Eszköztár
AA AA AA AA LH LH LH LH LH
17 17 17 64 400 400 400 402 402
2000-01-17 2000-02-20 2000-03-11 2000-05-19 2000-01-13 2000-02-26 2000-03-21 2000-03-04 2000-05-28
USD USD USD USD DEM DEM DEM DEM DEM
513,69 513,69 513,69 369,00 1234,56 1234,56 1234,56 1234,56 1234,56
A321 A321 747-400 747-400 A310-300 A310-300 A310-300 A319 A319
•
A control oszlopainak szélessége húzással módosítható, illetve az 'Optimális szélesség' funkcióval az éppen megjelenített adatokhoz igazítható. Az oszlopok át is helyezhetők a megfelelő oszlop kijelölésével, majd új helyre húzásával.
•
A control eszköztára (toolbar) standard funkciókat tartalmaz. A részletes megjelenítés modális dialógusablakban jeleníti meg azon sor valamennyi mezőjét (a rejtetteket is), amelyen a kurzor áll.
•
A rendező funkció tetszőleges számú oszlophoz rendelkezésre áll az ALV control-ban. Összetett rendezési kritériumokat adhatók meg, az oszlopok pedig csökkenő vagy növekvő sorrendben rendezhetők.
•
A 'Keresés' funkció segítségével adott karakterláncot (stringet) kereshet a kijelölt terület oszlopaiban vagy soraiban (generikus keresés * megadása nélkül).
•
Egy vagy több oszlopra vonatkozólag is képezhető összeg. A 'Részösszegek' funkció segítségével csoportszint-listák építhetők fel: kijelöljük a figyelembe veendő oszlopokat (csak a nem numerikus mezőket), és megkapjuk a megfelelő csoportszint-összegeket.
•
Nyomtatáskor vagy letöltéskor mindig a teljes lista kerül feldolgozásra, nem csak a megjelenített képernyőrészletek.
•
A megjelenítési változatok a saját igényekhez igazíthatók. A változatok mentéséről a 'További technikák' című részben olvashat.
73
ALV Grid Control: elv Adatforrás
SELECT ...
GET ...
Query
Interfész
ALV GRID CONTROL
Adatok gyűjtése belső táblába
Mezőleírás • Mezőkatalógus • DIC-struktúra Lista
A belső tábla adatainak megjelenítése a mezőleírásnak és a a standard funkcióknak (pl. rendezés, összegzés) megfelelően
Quick View
•
•
Az ALV Grid Control a listák dynpro-n való megjelenítésére szolgáló általános eszköz. A control standard funkciókat nyújt, például rendezés tetszőleges oszlopok szerint, illetve numerikus oszlopok vagy akár rögzített vezetőoszlopok hozzáadása. Az adatbeszerzés például programozott SELECT utasításokkal vagy logikai adatbank segítségével történhet a programban. Az adatrekordokat a rendszer belső táblában tárolja, és mezőleírással együtt adja át az ALV control-nak.
•
A mezőleírás az egyes oszlopok kialakításával kapcsolatos információkat tartalmazza, például az oszlop címét és a kivitel hosszát. Ezeket az információk globálisan a Dictionary-ben tárolhatók (struktúra a Dictionary-ben), vagy magában a programban, a mezőkatalógusban definiálhatók. A két technika ötvözése (merge) is lehetséges.
•
Az ALV-kapcsolat az SAP Query és a QuickViewer standard funkciója. Ha többsoros Query- vagy QuickView-listák vannak definiálva, akkor azok automatikusan egy sorban összegződnek, és hosszú, egysoros lista formájában jelennek meg az ALV control-ban.
74
Control megvalósítása: dynpro A Screen Painter-ben létrehozni: Dynpro 100 A Menu Painter-ben létrehozni: Státus
MY_CONTROL_AREA
C
Layout létrehozása a Screen Painter-ben
100
A Dynpro 100 lefutási logikájában PBO PAI
Státus megállapítása A BACK, EXIT és CANCEL ok-code-feldolgozása
•
A Screen Painterben képernyőtárat hozunk létre az ALV Grid control-hoz. A control területet igényel a dynpro-n a megjelenéshez. Ezért konténer control-t kell létrehozni, amely meghatározza ezt a területet.
•
A konténer control a Screen Painter layout-ján hozható létre a megfelelő ikonnal. A terület méretét ('MY_CONTROL_AREA') az ALV control későbbi mérete határozza meg.
•
Az ALV képernyőtár lefutási logikájában a PBO időpontjáig meg kell adni az érvényes GUI státust. A PAI időpontjáig programozni kell az ok_code-feldolgozást a megszakítási funkciókhoz.
75
Megvalósítás programban A TOP-Include-ban Konténer control
* CONTROLS DATA: g_custom_container TYPE REF TO cl_gui_custom_container, alv_grid TYPE REF TO cl_gui_alv_grid.
ALV Grid Control
Az ALV Grid Control a CL_GUI_ALV_GRID. osztály segítségével jeleníthető meg.
• •
A Custom konténerhez és az ALV Grid controlhoz tartozó referenciaváltozókat deklarálni kell. A referenciaváltozók a TYPE REF TO ABAP-utasítás segítségével hozhatók létre.
•
Az ehhez szükséges globális osztályok neve a Custom konténer control esetében cl_gui_custom_container, az ALV Grid control esetében pedig cl_gui_alv_grid.
•
A globális osztályok a Class Builder-ben kerülnek definiálásra. A Class Buider-ben információk jeleníthetők meg a módszerekkel, illetve azok paramétereivel, kivételeivel stb. kapcsolatban.
76
Objektumok létrehozása MODULE create_objects OUTPUT. IF g_custom_container IS INITIAL. CREATE CREATE OBJECT OBJECT g_custom_container EXPORTING container_name = 'MY_CONTROL_AREA'. CREATE CREATE OBJECT OBJECT alv_grid EXPORTING i_parent = g_custom_container.
C
ENDIF. ENDMODULE.
•
•
" CREATE_OBJECTS
OUTPUT
A konténerhez és az ALV control-hoz tartozó objektumok a CREATE OBJECT ABAP-utasítás segítségével hozhatók létre. Az objektumok osztályok instanciái. Objektum létrehozásakor (CREATE) a megfelelő osztály CONSTRUCTOR módszere kerül végrehajtásra. A CONSTRUCTOR módszer paraméterei határozzák meg, hogy az objektum létrehozásakor mely paramétereket kell megadni. A példában az alv_grid objektumhoz a konténer control neve (g_custom_container) az i_parent exporting paraméterrel együtt van megadva, így az összekapcsolja a két control-t. A Class Builder-ből tájékozódhat arról, hogy a CONSTRUCTOR módszer milyen paraméterekkel rendelkezik, illetve hogy ezek közül melyek opcionálisak.
•
A program futása során csak egy alkalommal kell létrehozni az objektumokat. Ez az IF IS INITIAL. ...ENDIF lekérdezésbe ... való beágyazással biztosítható.
•
Az objektumokat a control első megjelenése előtt, vagyis az ALV képernyőtár PBO időpontjáig létre kell hozni.
77
Program lefutás START-OF-SELECTION Belső tábla adatokkal
Az oszlopok leírása
itab_sflight A
B
DIC
Mezőkatalógus
sflight
C
SELECT * FROM
A
sflight ...
B
A
B
C
C
CALL SCREEN 100. Process Before Output
Process After Input
MODULE status_0100.
MODULE exit AT EXIT-COMMAND.
MODULE create_objects.
MODULE user_command_0100.
MODULE transfer_data.
•
A kívánt adatmennyiség ALV control-ban való megjelenítéséhez az adatokat belső tábla formájában kell átadni a control-nak, és léteznie kell mezőleírásnak, amely meghatározza az oszlopok kiviteli sorrendjét.
•
A mezőleírás a legegyszerűbb esetben egy Dictionary-struktúrával történhet. A Dictionary-ben a mező műszaki tulajdonságai, például a típus és a hossz ugyanúgy megtalálható, mint a szemantikai tulajdonságok, például a rövid és hosszú szövegek. Ezekből az információkból az ALV control meg tudja határozni az oszlopszélességet és az oszlopfeliratokat. Az oszlopok sorrendjét a struktúra mezősorrendje határozza meg.
•
Ha a Dictionary-ben nincs megfelelő aktív struktúra, vagy a program saját mezőit kell megjeleníteni a control-ban, akkor a kiviteli hosszt, az oszlopcímet és a hasonló információkat a mezőkatalógusban kell megadni.
•
A tipikus programfutás során először az adatmennyiség kerül beolvasásra (SELECT ....), majd a rendszer kitölti a belső táblát a megjelenítendő adatokkal (... INTO TABLE ...), végül a CALL SCREEN <szám> ABAP-utasítással hívja az ALV képernyőtárat.
78
Adatok megjelenítése a control-ban Process Before Output MODULE status_0100. MODULE create_objects. MODULE transfer_data.
MODULE transfer_data OUTPUT. CALL METHOD alv_grid->set_table_for_first_display EXPORTING i_structure_name = 'SFLIGHT' CHANGING it_outtab = itab_sflight. ENDMODULE.
" TRANSFER_DATA OUTPUT A SET_TABLE_FOR_FIRST_DISPLAY a CL_GUI_ALV_GRID osztály egyik módszere.
•
Az ALV control felé irányuló adattranszfer a cl_gui_alv_grid osztály set_table_for_first_display módszerének felhívásakor zajlik le. Az ALV képernyőtár PBO időpontjáig programozni kell a módszer felhívását.
•
Az i_structure_name Exporting paraméterben kerül megadásra annak a Dictionary-struktúrának a neve, amely a mezőleírást biztosítja. Az it_outtab Changing paraméterben kerül megadásra annak a belső táblának a neve, amely a megjelenítendő adatrekordokat tartalmazza.
79
ALV-lista funkcióelemmel
• REUSE_ALV_LIST_DISPLAY • Mezőkatalógus vagy Dictionary struktúra megadása • Layout megadása és mentési opció • Interaktivitás: callback formok
80
Programok összekapcsolása • Adatátadás módjai – SAP memória: SET/GET – ABAP memória: EXPORT/IMPORT
• Program meghívása: – Riport hívása: SUBMIT – Tranzakció hívása: • CALL TRANSACTION • LEAVE TO TRANSACTION
81
Programok összekapcsolása visszatérés nélkül Tranzakció
LEAVE TO TRANSACTION
CALL TRANSACTION
1-es típusú program
SUBMIT
SUBMIT AND RETURN
Program
Program Program
• •
•
visszatéréssel
Program
A programból hívhat másik 1. típusú programot, vagy elindíthat egy tranzakciót. Ha a LEAVE TO TRANSACTION vagy SUBMIT utasítást alkalmazza, akkor a hívott program ugyanabban a programkontextusban (ugyanazzal a roll-területtel) indul. A hívó program többé nem áll rendelkezésre. CALL TRANSACTION vagy SUBMIT AND RETURN esetén a rendszer új programkontextusban (új roll-területen) indítja el a hívott programot. Ha a ‚BACK' (Vissza) funkciót használja (zöld nyíl), akkor visszatér a hívó programhoz. 1-es típusú program esetén ez a funkció (BACK) standard.
82
Adatok láthatósága Session SAP-memória SET
GET
Külső módusz 1
Belső módusz
1
Módusz létrehozása EXPORT
ABAP-memória
Belső módusz Belső Belső módusz módusz 9
2
...
CALL TRANSACTION SUBM IT AND RETURN
IMPORT
IMPORT
EXPORT
ABAP-memória
Külső módusz 2
Rendszer/
Belső módusz
1
Belső Belső módusz Belső módusz módusz 9
2
...
CALL TRANSACTION SUBM IT AND RETURN
•
A globális, felhasználóspecifikus SAP-memória a számítógép előtt töltött időszak során a felhasználó rendelkezésére áll. A párhuzamosan futó külső móduszok ugyanazt az SAP-memóriát használják. Felhasználói session-önként legfeljebb 6 módusz nyitható meg. Új külső móduszt a Rendszer / Módusz létrehozása menüparanccsal vagy a /o tranzakciókóddal nyithat meg.
•
A SET PARAMETER segítségével adatokat helyezhet el az SAPmemóriában, a GET PARAMETER utasítással pedig adatokat olvashat be a memóriából.
•
Külső móduszban az ABAP-memória segítségével lehet hozzáférni a belső móduszhoz. Egyszerre legfeljebb 9 belső módusz nyitható meg. Új belső móduszt például a SUBMIT AND RETURN utasítással lehet létrehozni. A belső móduszokat a rendszer veremben kezeli. Az IMPORT ... TO MEMORY utasítással adatok transzportálhat az ABAP-memóriába, az EXPORT ... FROM MEMORY utasítással pedig adatokat olvashat be onnan. Az ABAP-memória csak a külső módusz élettartama során áll rendelkezésre.
•
83
Adatátadás: SAP memória SAP-memória Tranzakció
Dynpro 100
BC405D_SET_GET
Dynpro 200 ...
LH 400
F1-segítség műsz. infó
a paraméter-ID-nek szerepelnie kell az adatelemben lévő dynpromezőben a dynpromezőt az attribútumaiban legalább GET-paraméterként kell jelölni
•
•
Ahhoz, hogy egy tranzakció dynpro-mezőit a SET/GET-paraméterrel lehessen kitölteni, két feltételnek kell teljesülnie: •
a dynpro-mező adatelemében paraméterazonosítót (ID) kell megadni
•
a dynpro-mezőt az attribútumaiban legalább GETparaméterként meg kell jelölni
A paraméter-ID nevét az F1-segítség Műszaki infó pontjával kérdezheti le. Helyezze a kurzort a képszámra (dynpro-szám), kattintson a Navigálás gombra, majd lépjen be a SCREEN PAINTER-be. Itt megjelenítheti a mezőattribútumokat. Ha a dynpro-mező legalább GET-paraméterként meg van jelölve, akkor az SAP-memóriából javasolt értékekkel látható el.
84
SET/GET paraméterek SET PARAMETER ID FIELD GET PARAMETER ID FIELD REPORT sapbc405copd_a_set_get . ... AT LINE-SELECTION. CHECK NOT wa_flights-carrid IS INITIAL. SET PARAMETER ID 'CAR' FIELD wa_flights-carrid. SET PARAMETER ID 'CON' FIELD wa_flights-connid. CALL TRANSACTION 'BC405D_SET_GET'. CLEAR wa_flights-carrid.
SAPmemória
CAR LH CON 400
LH 400
•
Az ABAP-ban tároljon egy értéket az SAP-memóriában a SET PARAMETER ID utasítás segítségével, az kód alatt. Ezt az értéket a GET PARAMETER ID utasítással helyezheti vissza a programba.
•
Tranzakció felhívása előtt gondoskodjon róla, hogy a (felhasználóspecifikus!) SAP-memóriába bekerüljön az aktuális érték.
85
SUBMIT utasítás SUBMIT
Paraméterátadás
SUBMIT AND RETURN
WITH <sel> WITH <seltab> BETWEEN AND WITH <seltab> IN VIA SELECTION-SCREEN
<sel> <seltab>
•
•
•
•
PARAMETERS vagy SELECT OPTIONS neve EQ, NE, CP, NP, GT, GE, LT, LE Mezőnév vagy konstans SELECT-OPTIONS neve RANGES utasítással létrehozott belső tábla
A SUBMIT utasítás 1-es típusú programot indít el. Az AND RETURN kiegészítéssel a program új móduszban indul el, és lehetőség van a felhívó programba való visszatérésre. A paramétereket a WITH kiegészítéssel adhatja át a hívott programnak szelekciós képpel. Mind a PARAMETERS, mind a SELECT-OPTIONS utasításhoz adhatók meg értékek.. Ekkor teljesen mindegy, hogy egy logikai adatbázis szelekciós képéről vagy pedig programspecifikus szelekciókról van-e szó. Komplex korlátozások a RANGES táblában adhatók át. A RANGES tábla struktúrája megegyezik a szelekciós táblák struktúrájával (low, high, sign, option). A hívott program standard szelekciós képe háttérbe kerül, kivéve ha VIA SELECTION-SCREEN kiegészítéssel látja el a SUBMIT utasítást.
86
SUBMIT WITH példa REPORT sapbc405copd_c_submit NO STANDARD PAGE HEADING. ... AT LINE-SELECTION. ... * RANGES table for selection criterion CARRID will be filled MOVE wa_flights-carrid TO sel_carrid-low. MOVE 'I' TO sel_carrid-sign. MOVE 'EQ' TO sel_carrid-option. APPEND sel_carrid. * RANGES table for selection criterion CONNID will be filled ... * RANGES table for selection criterion FLDATE will be filled ... SUBMIT sapbc405copd_d_booking AND RETURN WITH so_car IN sel_carrid WITH so_con IN sel_connid WITH so_fld IN sel_fldate. ...
Példa: komplex szelekciók átadása RANGES tábla segítségével.
87
Adatátadás ABAP memóriával EXPORT ... [From ...] TO MEMORY ID IMPORT ... [TO ...] FROM MEMORY ID
Program 1 Deklaráció: , <mezősor>,
ABAP-memória
EXPORT <mezősor> <mező> TO MEMORY ID ' ' SUBMIT <program 2> ....
Program 2 Deklaration: , <mezősor>, <mező>
<mezősor> <mező>
IMPORT <mezősor> <mező> FROM MEMORY ID ' '
•
Az EXPORT utasítással adatokat helyezünk el az ABAP-memóriában az logikai kód alatt. Az adatok az IMPORT utasítással írhatók vissza a memóriából. Ily módon mezők, mezősorok és belső táblák küldhetők egyik programból a másikba.
•
Az objektumok hozzárendelése EXPORT/IMPORT esetén az logikai kód, illetve a névegyezés alapján történik. Az objektumok (pl. itab) nevének és struktúrájának meg kell egyeznie a két programban.
•
Ha ismét adatokat helyez az ABAP-memóriába egy adott kód alatt, akkor a rendszer felülírja a régi információkat (a csatolás nem lehetséges).
88
Visszatérés hívott programból LEAVE PROGRAM. Program Program
Vissza a kiválasztáshoz
AT USER-COMMAND. CASE sy-ucomm. WHEN ... LEAVE PROGRAM.
•
A standard státus listáiban mindig három megszakítási lehetőség áll rendelkezésre: a zöld nyíl, a sárga nyíl és a piros X jel. Ha a felhívandó programhoz való visszatérés előtt még ABAP-utasításokat szeretne végrehajtani (például adatokat szeretne rögzíteni az ABAP-memóriában), akkor Ön is programozhatja a visszatérést.
•
Ehhez a LEAVE PROGRAMM utasítás áll rendelkezésére.
89
Összefoglalás • Adatkivitel listákon • Szelekciós kép • Adatok formálása és csoportszint feldolgozás • Listák tárolása és háttérfeldolgozás • Interaktív listák • ALV-lista • Programok összekapcsolása
90