Show TOC Anfang des Inhaltsbereichs

Hintergrunddokumentation BSP-Extensions  Dokument im Navigationsbaum lokalisieren

Einleitung

Das an die Server-Pages-Technologie angelehnte BSP-Programmiermodell erlaubt Entwicklern einen weiten Spielraum bezüglich des HTML-Codings, das sie erstellen können, angefangen von einer leeren Seite bis zu komplexen Anwendungen. Jedoch ist die wiederholte Erstellung von komplexem HTML-Coding oft eine langwierige Angelegenheit, und so können sich dabei leicht Fehler einschleichen. Beispielsweise läßt sich ein einfacher HTML-Button ganz leicht realisieren: <input id=btn type=submit>. Wenn sie nun damit anfangen, zusätzlich noch besondere Stile und andere Attribute für die Größe und den Status des Buttons zu verwenden, dann wird das ursprünglich einfache HTML-Coding wesentlich komplexer und unübersichtlicher. Hier hilft eine Abstraktionstechnik, mit der sowohl die Syntax als auch die Semantik einer bestimmten HTML-Codingstrecke einfach ausgedrückt werden kann. Dieser Mechanismus ist derart strukturiert, dass er auch für andere Arten von BSPs verwendet werden kann, also auch für XML, WML, etc. Bei dieser Technologie spricht man von BSP-Extensions.

Eine BSP-Extension beinhaltet eine Sammlung von BSP-Elementen. Jedes Element ist im BSP-Kontext einer ABAP-Klasse zugeordnet ist, um die Element-Funktionalität zu repräsentieren, was meistens die Generierung des HTML-Codings beinhaltet. Die Definition der Elemente und die Abbildung auf die ABAP-Klassen ist derart flexibel, dass auch viele weitere Problemfälle bzw. Schwierigkeiten mit dieser Technologie gelöst werden können.

SAP stellt eine Infrastruktur zur Verfügung, mit der Entwickler BSP-Extensions im Rahmen von BSP-Applikationen einsetzen können. Von SAP wird eine Menge an vordefinierter Extensions, z.B. HTML Business für BSP (HTMLB), XHTMLB und PHTMLB, ausgeliefert, die ab jedem SAP Web Application Server 6.20 System zugänglich und einsetzbar sind. Zusätzlich ist es möglich, für spezifische Anforderungen und Bedürfnisse eigene Extensions zu definieren. Diese können im BSP-Umfeld über einen Editor erstellt werden, der in die Entwicklungsumgebung (Transaktion SE80) integriert ist.

Über die extension-Direktive wird eine Extension in eine BSP eingebunden.

Lesen Sie weiter unter Eigene BSP-Extensions erstellen.

Hinweis

Sie können auch Komposit-Elemente erstellen, u.a. um Layout-Änderungen bei komplizierten BSP-Anwendungen zu erleichtern.

BSP-Extension und BSP-Elemente

Jede BSP-Extension besteht aus einer Sammlung von BSP-Elementen. Jedes Element hat bestimmte Attribute und ist einer ABAP-Klasse zugeordnet. Für das Schreiben von Elementen in BSPs wird die übliche Notation für XML-Elemente verwendet. Die im Element bereitgestellten Attribute werden als Eingabeparameter für die ABAP-Klasse verwendet, die dem Element zugeordnet ist.

Beispiel

Beispielsweise können Sie einen einfachen Button auf einer BSP folgendermaßen definieren:

<htmlb:button id=”btn1” text=“Hit Me!” />

Hier ist ”htmlb” der XML-Namensraum, “button” ist das Element, und “id” und “text” sind Attribute. Wenn der BSP-Compiler das Element sieht, wird er den folgenden Pseudocode generieren:

data: btn1 type ref to CL_HTMLBL_BUTTON.
create object btn1.
btn1->writer = current_output_writer.
btn1->id = ‘btn1’.
btn1->text = ‘Hit Me!’.
btn1->begin_tag( ).
btn1->end_tag( ).

Im HTML-Outputstream schreibt die Element-Klasse das HTML auf Grundlage der vom Element gelieferten Funktionalität. Dabei wird davon ausgegangen, dass alle Elemente in einer Extension einen gemeinsamen Ausgabestil unterstützen.

Diese Grafik wird im zugehörigen Text erklärt

Im obigen Button-Beispiel folgte auf das Start-Tag sofort das Ende-Tag. Keinerlei Body-Bestandteile waren vorhanden oder (für den Button) benötigt. Für andere Beispiele könnte es jedoch interessant sein, den Body zu manipulieren oder detaillierteren Input zu verarbeiten.

Beispiel

Ein typisches Element könnte z.B. einen HTML-Link um ein kleines Textsegment erstellen. In diesem Fall hat das Element einen Body, der zuerst in einen String gerendert und dann als Parameter an das Element für die weitere Verarbeitung weitergereicht wird.

<htmlb:link id=”link1” reference=“http://www.sap.com”>
    Homepage of the e-company!
</htmlb:link>

Daraus resultiert:

Diese Grafik wird im zugehörigen Text erklärt

Das Link-Element nimmt als Referenz die Internet-Adresse. Zusätzlich bietet das Link-Element eine Formatierung auf der Grundlage der Stile, die von der BSP-Extension zur Verfügung stehen. Der Body wird als Input für das Element verwendet.

Auch wenn die Verwendung von Elementen und die daraus resultierenden ABAP-Klassenaufrufe den Anschein haben, ziemlich komplexe Mittel für derart einfache HTML-Elemente zu sein, so bietet die Unterstützung und Verwendung von BSP-Extensions doch diverse nicht zu unterschätzende Vorteile:

      Die Standard-XML-Syntax, die verwendet wird, kann geparst und während der BSP-Compile-Zeit geprüft werden.

      Das zurückgegebene HTML-Coding muss nur einmal in der ABAP-Elementklasse (von einem Experten) entwickelt werden, so dass die Korrektheit des Codings gewährleistet ist.

      Die Elementklasse kann zusätzliche Logik beinhalten, um Browser-abhängigen HTML-Code zu generieren.

      Das generierte HTML-Coding beinhaltet korrekte Referenzen auf die zur Verfügung stehenden Style Sheets.

 

Neben einer BSP-Extension für Standard-HTML-Elemente wie Buttons, Eingabefelder, Dropdown-Listen u.ä. können auch stark spezialisierte Extensions realisiert werden.

Beispiel

Beispielsweise könnte eine Extension entwickelt werden, um die Corporate Identity einer Firma auf einer HTML-Seite abzubilden. In diesem Fall würde das Coding des Benutzers dieser Extension z.B. folgendermaßen aussehen:

<%@extension name=”SAP_Corporate_Identity_Extension” prefix=”corp” %>
<corp:logo/>
<corp:stock_ticker/>

Auf der HTML-Seite könnte dies so aussehen:
Diese Grafik wird im zugehörigen Text erklärt

Beispiele

Im System stehen verschiedene Beispiele für BSP-Applikationen, die BSP-Extensions verwenden, zur Verfügung. Einfache Beispiele für den Einsatz der BSP-Extensions HTMLB, XHTMLB und PHTMLB finden Sie in den BSP-Applikationen SBSPEXT_HTMLB, SBSPEXT_XHTMLB und SBSPEXT_PHTMLB, weiterführende Beispiele finden Sie in der BSP-Extension HTMLB_SAMPLES.

Im Folgenden sind zwei einfache Beispiele für die HTMLB-Elemente button und tableView aufgeführt:

Button

TableView

Ende des Inhaltsbereichs