Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation Klasse CL_BSP_SERVER_SIDE_COOKIE  Dokument im Navigationsbaum lokalisieren

Überblick

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_COOKIEbefindet sich im Paket SBSP_RUNTIME.

Vererbungshierarchie/Interfacekomposition

Implementiertes Interface

-

Superklasse

-

Attribute

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.

 

Methoden

Hinweis

Alle Methoden liegen im Sichtbarkeitsbereich public section.

Methode get_server_cookie

Signatur

method GET_SERVER_COOKIE
  exporting
    NAME
    EXPIRY_TIME
    EXPIRY_DATE
    SESSION_ID
    USERNAME
    APPLICATION_NAMESPACE
    APPLICATION_NAME
    DATA_NAME
    DATA_VALUE

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

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.

Methode delete_server_cookie

Signatur

method DELETE_SERVER_COOKIE
  exporting
    NAME
    APPLICATION_NAME
    APPLICATION_NAMESPACE
    USERNAME
    SESSION_ID

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

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.

Methode set_server_cookie

Signatur

method SET_SERVER_COOKIE
  importing
    DATA_VALUE
  exporting
    EXPIRY_DATE_ABS
    EXPIRY_TIME_ABS
    DATA_NAME
    SESSION_ID
    USERNAME
    EXPIRY_TIME_REL
    EXPIRY_DATE_REL
    APPLICATION_NAMESPACE
    APPLICATION_NAME
    NAME

Beschreibung

Diese Methode setzt ein Server Cookie.

Parameter

DATA_VALUE

Datenobjektinhalt

EXPIRY_DATE_ABS

Gültig bis Datum

EXPIRY_TIME_ABS

Absolute Gültigkeitsdauer

Hinweis

Wenn Sie hier keinen Wert angeben, wird ab SAP Web Application Server 6.20 die absolute Verfallszeit automatisch auf 23:59 Uhr gesetzt.

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

Hinweis

Wenn Sie hier keinen Wert angeben, wird ab SAP Web Application Server 6.20 die relative Verfallszeit automatisch auf eine Stunde gesetzt.

EXPIRY_DATE_REL

Gültigkeitsdauer in Tagen

APPLICATION_NAMESPACE

Namensraum der BSP-Anwendung

APPLICATION_NAME

Name der BSP-Anwendung

NAME

Names des Cookies

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.

Methode get_last_error

Signatur

method GET_LAST_ERROR
  importing
    RC

Beschreibung

Diese Methode liefert den Returncode des letzten Calls.

Parameter

RC

Returncode

Beispiel

data: rc  type i,
      txt type string.

rc = cl_bsp_server_side_cookie=>get_last_error( ).

Methode get_last_error_name

Signatur

method GET_LAST_ERROR_NAME
  importing
    NAME

Beschreibung

Diese Methode liefert den internen Namen der Ausnahme des letzten Calls.

Parameter

NAME

Interner Fehlertext

 

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.

Methode get_server_cookie_info

Signatur

method GET_SERVER_COOKIE_INFO
  exporting
    COOKIES
    APPLICATION_NAMESPACE
    APPLICATION_NAME
    SESSION_ID
    USERNAME
    NAME

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

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 .

Methoden get und set

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.

 

Ende des Inhaltsbereichs