Hirdetés
 

SAP HTML Viewer bemutatása, avagy Index indítása SAP-ból

PDF
Nyomtatás

Nemrég egy vicces kedvű kolléga küldött a csapatomnak egy képet. Mint az tisztán látható, a probléma az volt, hogy a kolléga az URL címet („index.hu”) a böngésző helyett az SAP rendszer parancs mezőjébe írta be. Pusztán reflexből…A levél törlése előtt azonban elgondolkoztam, hogy vajon tényleg olyan hülyeség-e a dolog, mint az elsőre látszik. Lehetséges lenne-e egy olyan tranzakciót létrehozni, ami tényleg a kívánt URL címet hozza be egy külön böngésző ablakban. A cikk végén meglátjuk…

Előtte azonban nézzük át a HTML Viewer nevezetű EnjoySAP kontroll használatát. Mint az a nevéből kitűnik, ezzel az elemmel egy böngésző ablakot jeleníthetünk meg egy SAPGUI-s képernyő egyik tartozékaként. Nézzük, hogy milyen lépések szükségesek a használatához:
Először is egy custom control elemet kell elhelyeznünk a képernyőnkön (layout editor) a kívánt méretben. Ide fog kerülne a böngésző ablakunk, jobban mondva először egy konténer kontroll, ami tartalmazni fog egy HTML nézőt (HTML Viewer-t). Ezekhez az elemekhez külön ABAP osztályok tartoznak, amiknek referencia változóit a program elején kell deklarálni:

DATA: container TYPE REF TO cl_gui_custom_container,
html_viewer TYPE REF TO cl_gui_html_viewer,
url(255) VALUE 'http://index.hu'.

START-OF-SELECTION.
CALL SCREEN '0100'.

Az URL nevű változó tartalmazza a megjelenítendő oldal URL címét.
A ’100’-as képernyő flow logic-jába a következő modulok szükségesek:

PROCESS BEFORE OUTPUT.
MODULE create_objects.
MODULE set_url.

PROCESS AFTER INPUT.
MODULE exit AT EXIT-COMMAND.

A CREATE_OBJECTS PBO modulban példányosítjuk az előbb említett osztályokat, ügyelve, hogy mindkettőből csak egy legyen létrehozva (nem kívánt hatás elkerülése végett):

MODULE create_objects OUTPUT.
CHECK container IS INITIAL.
* create the container
CREATE OBJECT container
EXPORTING container_name = 'MY_CONTAINER'.
CHECK html_viewer IS INITIAL.
* create the control
CREATE OBJECT html_viewer
EXPORTING parent = container.
ENDMODULE. " CREATE_OBJECTS OUTPUT

A SET_URL PBO modulban töltjük be a kívánt URL-t a HTML nézőnkbe. Ehhez a CL_GUI_HTML_VIEWER osztály SHOW_URL metódusára van szükség:

MODULE set_url OUTPUT.
* call method for setting url
CALL METHOD html_viewer->show_url
EXPORTING
url = url.

ENDMODULE. " SET_URL OUTPUT

A programból való kilépés előtt (pl. exit command-os gomb megnyomása után) az EXIT PAI modulban a „tisztogatást” magunk kell elvégezni, nehogy nem kívánt folyamatok maradjanak a kezelőfelületen:

MODULE exit INPUT.
CALL METHOD html_viewer->free.
CALL METHOD container->free.
FREE html_viewer. " destroy the ABAP object
FREE container.
LEAVE PROGRAM.
ENDMODULE. " EXIT INPUT

A programot már tesztelhetjük is.
Végezetül térjünk vissza a cikk elején említett kérdésre. Természetesen az „index.hu” tranzakciót nem indíthatjuk el, mert egy SAP-s tranzakció nevében nem lehet pont. Ha azonban pont helyett aláhúzás jelet teszünk („index_hu”) akkor már működik a dolog!

Lássuk a forráskódot:

REPORT zhcs_index_hu NO STANDARD PAGE HEADING.

DATA: container TYPE REF TO cl_gui_custom_container,
html_viewer TYPE REF TO cl_gui_html_viewer,
url(255) VALUE 'http://index.hu'.

CREATE OBJECT html_viewer
EXPORTING parent = container.
CALL METHOD html_viewer->show_url_in_browser
EXPORTING
url = url.
WRITE 'Index.hu'.

Mint láthatjuk a CL_GUI_HTML_VIEWER osztály SHOW_URL_IN_BROWSER metódusával nyithatunk új böngésző ablakot.
Már csak a tranzakció kódot kell a programhoz létrehozni (se93) és készen is vagyunk. Standard termékekbe azért ezt ne építsük be. :)

A szerző fejlesztőként dolgozik a SAP Labs Hungary Development részlegénél 2005 júliusa óta. Már a kezdetektől az SCM-es ATP csapat tagja, számos résztelüket felelőse, és az ehhez tartozó projektek résztvevője.


Nincs hozzászólása.
A téma megvitatása a fórumon. (0 hozzászólás)