Rüdiger
unread,Jun 9, 2010, 3:40:35 PM6/9/10Sign in to reply to author
Sign in to forward
You do not have permission to delete messages in this group
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to BSP-Praxis
In manchen Fällen kann es nützlich sein, Dateien aus dem Web-
Repository (Transaktion SMW0) ins MIME Repository zu migrieren. Zum
Beispiel für Applikationen, die immer noch auf dem ITS laufen und nun
auf die für Webentwickler angenehmere BSP-Technologie umgesattelt
werden sollen. In unserem Fall wurde eine solche Migration nötig, um
eine GUI-Transaktion aus dem Jahre 2003, die an zentraler Stelle mit
einem HTML-Viewer arbeitet, zu erweitern: Um die nötige
Bewegungsfreiheit für die Erweiterung zu bekommen, haben wir den HTML-
Code, die Graphiken, Stylesheets und JavaScript-Dateien vom Web
Repository in eine BSP migriert. Der Viewer wird nun nicht mehr mit
einer internen Tabelle gefüttert, die den anzuzeigenden HTML-Code
enthält, sondern bekommt nur noch die URL der BSP-Applikation zur
Anzeige vorgelegt. In Views von BSP-Applikationen ist der HTML-Code
nun richtig zu Hause - da fühlt er sich wohl: Er kann formatiert und
strukturiert werden, sich wiederholende Codefragmente können
extrahiert und mit serverseitigem Scripting (loops) dynamisch
aufgebaut werden, usw.
Es folgen hier zwei im Rahmen dieser Migration verwendete Routinen,
die vielleicht von allgemeinerem Nutzen sind. Die erste, get_js,
importiert eine Datei aus dem binären Teil des Web Repository. Der
Parameter iv_name gibt den Namen an, mit dem die Datei in Transaktion
SMW0 gefunden wird. iv_incode ist die SAP-Codepage des Zeichensatzes,
mit dem die Datei abgespeichert wurde (z.B. '1100' für Latin-1). ev_js
enthält, wenn die Datei gefunden wurde, deren Inhalt als String.
Die zweite Routine, get_html, funktioniert im wesentlichen gleich,
greift jedoch auf die textförmig abgelegten Daten zu. Daher ist die
Angabe einer Codepage für die Routine get_html nicht nötig.
Wenn die Dateien einmal als String (oder XSTRING bei Graphiken)
vorliegen, können sie vom aufrufenden Programm beliebig
weiterverarbeitet werden. Zum Beispiel kann man sie ins MIME
Repository einchecken, von wo aus sie für BSP-Applikationen besser
verfügbar werden. Darüberhinaus ist der Zugriff aufs MIME-Repository
wegen der besonderen Pufferung im ICM effizienter.
* ---
form get_js using iv_name type csequence
iv_incode type cpcodepage
changing ev_js type string.
field-symbols: <ls_mime> type w3mime.
data: ls_key type wwwdatatab,
lt_mime type w3mimetabtype,
lv_line type string.
clear ev_js.
ls_key-relid = 'MI'.
ls_key-objid = iv_name.
call function 'WWWDATA_IMPORT'
exporting
key = ls_key
tables
mime = lt_mime
exceptions
wrong_object_type = 1
import_error = 2
others = 3.
if sy-subrc <> 0.
message id sy-msgid type 'A' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
loop at lt_mime assigning <ls_mime>.
call function 'SCP_TRANSLATE_CHARS'
exporting
inbuff = <ls_mime>-line
incode = iv_incode
importing
outbuff = lv_line
exceptions
invalid_codepage = 1
internal_error = 2
cannot_convert = 3
fields_bad_type = 4
others = 5.
if sy-subrc <> 0.
message id sy-msgid type 'A' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
concatenate ev_js space into ev_js separated by lv_line.
endloop.
endform. "get_js
* ---
form get_html using iv_name type csequence
changing ev_html type string.
field-symbols: <ls_html> type w3html.
data: ls_key type wwwdatatab,
lt_html type w3htmltabtype.
clear ev_html.
ls_key-relid = 'HT'.
ls_key-objid = iv_name.
call function 'WWWDATA_IMPORT'
exporting
key = ls_key
tables
html = lt_html
exceptions
wrong_object_type = 1
import_error = 2
others = 3.
if sy-subrc <> 0.
message id sy-msgid type 'A' number sy-msgno
with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
loop at lt_html assigning <ls_html>.
concatenate ev_html space into ev_html separated by <ls_html>-
line.
endloop.
endform.