Az ABAP programozási nyelv

Fájlkezelés

A dataset egy az alkalmazás-szerveren megtalálható illetve ott létrejövő szekvenciális fájl. Szerveroldali fájlkezelésre használják az SAP-ban. (Megjegyzés: Amennyiben kliens oldalon található fájlokat kell feltölteni és feldolgozni, illetve letölteni, akkor a GUI_DOWNLOAD és GUI_UPLOAD függvényeket vagy a CL_GUI_FRONTEND_SERVICES osztály megfelelő metódusait kell használni.)
Műveletek:


A következőkben <dsn> a fájl elérési útvonalát adja meg (például <dsn> = ‘/tmp/test.txt’ vagy <dsn> = ‘c:\temp\test.txt’).
OPEN DATASET <dsn> [Egyéb opciók]. : Általános forma. Ha nincsenek egyéb opciók, akkor a fájlt bináris módban megnyitja olvasásra.
OPEN DATASET <dsn> FOR INPUT. : Megnyit egy fájlt olvasásra.
OPEN DATASET <dsn> FOR OUTPUT. : Megnyit egy fájlt írásra.
OPEN DATASET <dsn> FOR APPENDING. : Megnyit egy fájlt írásra, de úgy, hogy a végére fűzi hozzá a kiírt adatokat.
OPEN DATASET <dsn> IN BINARY MODE [FOR ....]. : Ha egy fájlt bináris módban nyitnak meg, akkor az adat bájtfolyamként kerül beolvasásra ill. kiírásra. Az adat típusa adja meg a bájtfolyam hosszát és az adatábrázolás módját.
OPEN DATASET <dsn> FOR .... IN TEXT MODE ENCODING {DEFAULT|UTF-8|NONUNICODE}.: Ha egy fájlt szöveges módban nyitnak meg, akkor az adat soronként kerül kiírásra vagy beolvasásra, azaz az olvasási egység 1 sor. Az ENCODING – azaz a karakterkódolás – opció ilyenkor kötelező. UTF-8 esetén a rendszer a karakterek UTF-8-as kódolásban tárolja el. NON-UNICODE esetén ha a rendszer nem Unicode-os, akkor a karakterek konvertálatlanul tárolódnak el, míg Unicode-os rendszer esetén a SAP rendszerben beállított kódlap szerint konvertálódnak át a karakterek (TCP0C tábla). DEFAULT esetén ha a rendszer Unicode-os, akkor UTF-8, különben NON-UNICODE. A sorvége jel Unix-on ‘LF’, Windows-on „CRLF” vagy „ LF”.
OPEN DATASET <dsn> [FOR ....] [IN ... MODE] AT POSITION <pos>. : A hangsúly itt az AT POSITION <pos>-on van. Megnyit egy fájlt, és előkészíti azt a megadott pozíciótól való olvasásra ill. írásra. Ha a fájl megnyitása sikeres volt, akkor a SY-SUBRC értéke 0, különben 8.
OPEN DATASET <dsn> FILTER <filt>. : A fájl megnyitása során lefuttatja a FILTER opcióban megadott operációs rendszer parancsot. Pl. <filt> = ‘compress’.
OPEN DATASET <dsn> MESSAGE <msg>. : A fájl megnyitása során az operációs rendszer által visszaküldött üzenetet belerakja a MESSAGE után megadott (<msg>) változóba.

CLOSE DATASET <dsn>. : Ez az utasítás bezárja az alkalmazás-szerveren megnyitott <dsn> nevű fájlt. Egy megnyitott fájlt nem minden esetben kötelező lezárni, de mindenképpen javasolt. Mindenképpen le kell zárni a fájlt, ha utána újra meg akarja nyitni a fejlesztő írásra, és ki akarja törölni a fájl tartalmát.

DELETE DATASET <dsn>. : Letörli a fájlt az alkalmazás-szerverről. Ha a fájl törlése sikeres volt, akkor a SY-SUBRC értéke 0, különben 4.

TRANSFER <f> TO <dsn> [LENGTH <len>]. : A TRANSFER utasítás segítségével adatot lehet kiírni egy fájlba. Az <f> mező értékét kiírja a <dsn> nevű fájlba. Az <f> mező értéke vagy egy elemi típus, vagy egy struktúra, de nem lehet belső tábla. A kiírt adat hossza megadható a LENGTH opció segítségével. Ezt nem kötelező megtenni, de ha a fejlesztő megadja, és az adat hossza nagyobb, mint <len>, akkor a rendszer levágja a többletet. Ha rövidebb, akkor kiegészíti szóközökkel. Ha a fájlt nincs megnyitva, akkor a rendszer megnyitja bináris módban, vagy megnyitja a fájlt felhasználva legutolsó OPEN DATASET beállításait. Az érthetőség kedvéért és a programhibák elkerülése végett a fájlt mindenképpen meg kell nyitni az OPEN DATASET-tel, mielőtt még bármilyen műveletet végrehajtana rajta a rendszer. A műveletek lefutása utána pedig mindenképpen érdemes lezárni a CLOSE DATASET-tel.

READ DATASET <dsn> INTO <f> [LENGTH <len>]. : Beolvassa a rendszer a <dsn> nevű fájlból az adatot az <f> nevű változóba. Ha a fájl nincs megnyitva, akkor a rendszer megnyitja bináris módban, vagy megnyitja a fájlt felhasználva legutolsó OPEN DATASET beállításait. Ha a rendszer be tudta olvasni az adatot, akkor a SY-SUBRC értéke 0. Ha rendszer elérte a fájl végét, akkor a SY-SUBRC értéke 4 lesz. Ha a fájlt nem sikerült megnyitni, akkor a SY-SUBRC értéke 8. A LENGTH opció bináris módban használható. Az <f> változóba beolvasott adat hosszát beírja a <len> változóba.

A rendszer automatikusan végrehajtja az alábbi ellenőrzéseket a dataseteken: S_DATASET jogosultsági objektum: A rendszer ellenőrzi, hogy az adott ABAP program hozzáférhet-e a megadott fájlhoz. SPTH tábla: Ellenőrzi az SPTH táblában, hogy a megadott fájl be lett-e regisztrálva, hogy az ABAP programok elérhessék.