Show TOC

HintergrundKlasse CL_BSP_SERVER_SIDE_COOKIE Dieses Dokument in der Navigationsstruktur finden

 

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 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.

Ende der Warnung.

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 Hinweis

Das Programm BSP_CLEAN_UP_SERVER_COOKIES sollte vom Systemadministrator als regelmäßig laufender Hintergrundjob eingeplant werden.

Ende des Hinweises.

Die Klasse CL_BSP_SERVER_SIDE_COOKIE befindet 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 Hinweis

Alle Methoden liegen im Sichtbarkeitsbereich public section.

Ende des Hinweises.
Methode get_server_cookie

Signatur

Syntax Syntax

  1. method GET_SERVER_COOKIE
      exporting
        NAME
        EXPIRY_TIME
        EXPIRY_DATE
        SESSION_ID
        USERNAME
        APPLICATION_NAMESPACE
        APPLICATION_NAME
        DATA_NAME
        DATA_VALUE
    
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 Syntax

Beispiel:

  1. 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.
    
    
Ende des Codes
Methode delete_server_cookie

Signatur

Syntax Syntax

  1. method DELETE_SERVER_COOKIE
      exporting
        NAME
        APPLICATION_NAME
        APPLICATION_NAMESPACE
        USERNAME
        SESSION_ID
    
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 Syntax

Beispiel:

  1. 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.
    
    
Ende des Codes
Methode set_server_cookie

Signatur

Syntax Syntax

  1. 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
    
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

Hinweis Hinweis

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

Hinweis Hinweis

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 Syntax

Beispiel:

  1. 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.
    
    
Ende des Codes
Methode get_last_error

Signatur

Syntax Syntax

  1. method GET_LAST_ERROR
      importing
        RC
    
Ende des Codes

Beschreibung

Diese Methode liefert den Returncode des letzten Calls.

Parameter

RC

Returncode

Syntax Syntax

  1. data: rc  type i,
          txt type string.
    
    rc = cl_bsp_server_side_cookie=>get_last_error( ).
    
    
Ende des Codes
Methode get_last_error_name

Signatur

Syntax Syntax

  1. method GET_LAST_ERROR_NAME
      importing
        NAME
    
Ende des Codes

Beschreibung

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

Parameter

NAME

Interner Fehlertext

Syntax Syntax

Beispiel:

  1. 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.
    
    
Ende des Codes
Methode get_server_cookie_info

Signatur

Syntax Syntax

  1. method GET_SERVER_COOKIE_INFO
      exporting
        COOKIES
        APPLICATION_NAMESPACE
        APPLICATION_NAME
        SESSION_ID
        USERNAME
        NAME
    
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 Syntax

Beispiel:

  1. 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 .
    
    
Ende des Codes
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.