Klasse CL_BSP_SERVER_SIDE_COOKIE 
Die Klasse CL_BSP_SERVER_SIDE_COOKIE stellt Methoden zum Setzen, Holen, Löschen und Verwalten von Cookies im Server zur Verfügung.
Server-seitige Cookies sind persistente Daten, ähnlich wie die üblichen Client-seitigen Cookies. Während jedoch die Größe von Cookies auf dem Client beschränkt ist auf ca. 4 Kilobytes pro Cookie, 300 Cookies insgesamt und 20 per Server oder Domäne, haben die Server-seitigen Cookies im Prinzip keinerlei Mengen- oder Größenbeschränkungen. Ein Server-seitiges Cookie wird auf der Datenbank abgelegt.
Aus Gründen der technischen Realisierung kann ein einzelnes Cookie auf die folgenden Arten abgelegt werden:
als Feld oder
als Struktur oder
als interne Tabelle
Achtung
Achten Sie beim Holen eines Cookies darauf, dass das Cookie wieder in dieselbe Datenstruktur zurückgeholt wird. Andernfalls gibt es einen Fehler, der mit einer Fehlermethode abgefragt werden kann.
Eine besondere Bemerkung gilt den Parametern username und session_id. Das Setzen von username auf sy-user ist nicht eindeutig, wenn eine Anwendung entsteht, die über einen anonymen Benutzer, hinterlegt beim Service, gestartet wird. Die Verwendung von session_id würde hier Eindeutigkeit schaffen (siehe Beispiel), da runtime->session_id die Browsersession kennzeichnet.
Beim Design einer Anwendung überlegen Sie als Entwickler immer genau, ob die Anwendung stateless sein soll und notwendige Kontextdaten von Seite zu Seite in Cookies gehalten werden (Client- oder Server-seitig) oder ob die Anwendung stateful sein soll. Letzteres ist dann sinnvoll, wenn große Mengen an Kontextdaten anfallen, die im stateless Fall immer wieder über ein Cookie letztlich von der Datenbank gelesen bzw. geschrieben werden müssen und damit die Performance der Anwendung verschlechtern (siehe auch Stateful oder stateless programmieren?).
Das Programm BSP_SHOW_SERVER_COOKIES liefert eine Übersicht aller im System gesetzten Cookies. Das Programm BSP_CLEAN_UP_SERVER_COOKIES löscht taggenau alle abgelaufenen Cookies.
Hinweis
Das Programm BSP_CLEAN_UP_SERVER_COOKIES sollte vom Systemadministrator als regelmäßig laufender Hintergrundjob eingeplant werden.
Die Klasse CL_BSP_SERVER_SIDE_COOKIE befindet sich im Paket SBSP_RUNTIME.
-
-
Attributname |
Deklarationsart |
Beschreibung |
CC_OK |
Konstante |
Die Aktion war erfolgreich. |
CC_WRONG_DATA_OBJECT |
Konstante |
Das Datenobjekt des zu lesenden Cookies passt nicht zum Datenobjekt des gesetzten Cookies. |
CC_PARAMETER_MISSING |
Konstante |
Aufrufparameter fehlen. |
CC_NOT_EXISTS |
Konstante |
Das Cookie existiert nicht. |
Hinweis
Alle Methoden liegen im Sichtbarkeitsbereich public section.
Signatur |
Ende des Codes |
|
Beschreibung |
Diese Methode holt ein Server Cookie. |
|
Parameter |
EXPIRY_TIME |
Gültigkeitsdatum (Zeit): bis Zeit |
EXPIRY_DATE |
Gültigkeitsdatum (Datum): bis Datum |
|
DATA_NAME |
Datenobjektname |
|
SESSION_ID |
Session-ID |
|
USERNAME |
Name des Benutzers |
|
APPLICATION_NAMESPACE |
Namensraum der BSP-Anwendung |
|
APPLICATION_NAME |
Name der BSP-Anwendung |
|
NAME |
Names des Cookies |
|
DATA_VALUE |
Datenobjektinhalt |
|
Syntax
Beispiel:
data: sorders type sales_orders,
edate type d,
etime type t,
usr type string.
clear sorders.
call method cl_bsp_server_side_cookie=>get_server_cookie
exporting
name = 'SALESORDER_GETLIST'
application_namespace = runtime->application_namespace
application_name = runtime->application_name
username = usr
session_id = runtime->session_id
data_name = 'SORDERS'
importing
expiry_date = edate
expiry_time = etime
changing
data_value = sorders.
Signatur |
Ende des Codes |
|
Beschreibung |
Diese Methode löscht ein Server-Cookie. |
|
Parameter |
NAME |
Names des Cookies |
APPLICATION_NAME |
Name der BSP-Anwendung |
|
APPLICATION_NAMESPACE |
Namensraum der BSP-Anwendung |
|
USERNAME |
Name des Benutzers |
|
SESSION_ID |
Session-ID |
|
Syntax
Beispiel:
data: usr type string.
call method cl_bsp_server_side_cookie=>delete_server_cookie
exporting
name = 'SALESORDER_GETLIST'
application_namespace = runtime->application_namespace
application_name = runtime->application_name
username = usr
session_id = runtime->session_id.
Signatur |
Ende des Codes |
|
Beschreibung |
Diese Methode setzt ein Server Cookie. |
|
Parameter |
DATA_VALUE |
Datenobjektinhal |
EXPIRY_DATE_ABS |
Gültig bis Datum |
|
EXPIRY_TIME_ABS |
Absolute Gültigkeitsdauer
Wenn Sie hier keinen Wert angeben, wird ab SAP Web Application Server 6.20 die absolute Verfallszeit automatisch auf 23:59 Uhr gesetzt Ende des Hinweises. |
|
DATA_NAME |
Datenobjektname |
|
SESSION_ID |
Session-ID, wenn gewünscht |
|
USERNAME |
Name des Benutzers; auch E-Mail-Adresse |
|
EXPIRY_TIME_REL |
Relative Gültigkeitsdauer in Sekunden
Wenn Sie hier keinen Wert angeben, wird ab SAP Web Application Server 6.20 die relative Verfallszeit automatisch auf eine Stunde gesetzt. Ende des Hinweises. |
|
EXPIRY_DATE_REL |
Gültigkeitsdauer in Tagen |
|
APPLICATION_NAMESPACE |
Namensraum der BSP-Anwendung |
|
APPLICATION_NAME |
Name der BSP-Anwendung |
|
NAME |
Names des Cookies |
|
Syntax
Beispiel:
data: sorders type sales_orders,
edate type d,
usr type string.
call function 'BAPI_SALESORDER_GETLIST' destination 'ABC'
exporting
customer_number = '0000001000'
tables
sales_orders = sorders.
edate = sy-datum.
add 1 to edate. “gültig für einen Tag
call method cl_bsp_server_side_cookie=>set_server_cookie
exporting
name = 'SALESORDER_GETLIST'
application_namespace = runtime->application_namespace
application_name = runtime->application_name
username = usr
session_id = runtime->session_id
expiry_date_abs = edate
expiry_time_abs = sy-uzeit
data_name = 'SORDERS'
data_value = sorders.
Signatur |
Ende des Codes |
|
Beschreibung |
Diese Methode liefert den Returncode des letzten Calls. |
|
Parameter |
RC |
Returncode |
Syntax
data: rc type i,
txt type string.
rc = cl_bsp_server_side_cookie=>get_last_error( ).
Signatur |
Ende des Codes |
|
Beschreibung |
Diese Methode liefert den internen Namen der Ausnahme des letzten Calls. |
|
Parameter |
NAME |
Interner Fehlertext |
Syntax
Beispiel:
data: rc type i,
txt type string.
rc = cl_bsp_server_side_cookie=>get_last_error( ).
if rc ne 0.
txt = cl_bsp_server_side_cookie=>get_last_error_name( ).
endif.
Signatur |
Ende des Codes |
|
Beschreibung |
Diese Methode liefert Informationen über Server-Cookies. |
|
Parameter |
COOCIES |
Liste aller Cookies. |
APPLICATION_NAMESPACE |
Namensraum der BSP-Anwendung |
|
SESSION_ID |
Session-ID |
|
USERNAME |
Name des Benutzers |
|
NAME |
Names des Cookies |
|
APPLICATION_NAME |
Name der BSP-Anwendung |
|
Syntax
Beispiel:
data: usr type string,
cookie_info type tsscookiei.
call method cl_bsp_server_side_cookie=>get_server_cookie_info
exporting
application_name = runtime->application_name
username = usr
importing
cookies = cookie_info .
Kurze Varianten für get_server_cookie und set_server_cookie.
Bei diesen beiden Methoden handelt es sich um Wrapper-Methoden, die die entsprechenden langen Methoden verschalen. Dadurch reduziert sich für den Entwickler die Anzahl der zu schreibenden Codingzeilen.