Floorplan Manager (ABAP)
Relevante Klassen
Alle Feeder-Interfaces beinhalten das Interface IF_FPM_GUIBB, das die beiden Methoden INITIALIZE und GET_PARAMETER_LIST umfasst. Beide Methoden werden nur während der Initialisierungsphase des GUIBBs aufgerufen.
Übersicht Feeder-Klassen
Feeder-Klassen bilden die Schnittstelle zwischen der Anwendungslogik und den GUIBB zur Darstellung derUI-Informationen innerhalb der Floorplan-Manager-Anwendung.
Jeder GUIBB benötigt für die Bereitschellung von Daten eine Feeder-Klasse.
Alle Feeder-Interfaces beinhalten das Interface IF_FPM_GUIBB, das die beiden Methoden GET_PARAMETER_LIST und INITIALIZE umfasst. Beide Methoden werden nur während der Initialisierungsphase des GUIBBs aufgerufen.
GET_PARAMETER_LIST: Eigene Konfigurationsparameter verarbeiten ( z.B. read only )
INITIALIZE: Wird nach GET_PARAMETER_LIST aufgerufen. Nutzung z.B. zum Laden von Anwendungsobjekten (von der DB) / Sperren setzen etc.
Methoden mit lediglich unterschiedlicher Signatur:
CHECK_CONFIG i.d.R. irrelevant GET_DEFAULT_CONFIG i.d.R. irrelevant GET_DEFINITION Wird nach INITIALIZE aufgerufen Bestimmt Aufbau Baustein (z.B. welche Eingabefelder hat das Form ) GET_DATA Bestimmt Inhalt der Oberfläche ( z.B. Text in Textfeld eines Forms ) PROCESS_EVENT Verarbeitung von Benutzereingabe (z.B. Suchknopf wurde gedrückt) ( evtl. auch Ereignisse von anderen FPM Komponenten z.B. Refresh) FLUSH Benutzereingaben von der Oberfläche in die Anwendung übernehmen
Standard-Interface IF_FPM_GUIBB
Feederklassen Programmstart
- GET_PARAMETER_LIST: Eigene Konfigurationsparameter verarbeiten ( z.B. read only )
- INITIALIZE: Wird nach GET_PARAMETER_LIST aufgerufen. Nutzung z.B. zum Laden von Anwendungsobjekten (von der DB) / Sperren setzen etc.
Feederklassen Programmablauf / Event-Loop
- FLUSH -> Daten von Oberfläche an Anwendung übertragen
- PROCESS_EVENT -> Besondere Ereignisse ( z.B. Knopfdruck ) verarbeiten
- GET_DATA -> Oberfläche mit aktuellen Daten aus Anwendung versorgen; Entspricht PROCESS_BEFORE_OUTPUT
Beispielimplementierungen
IF_FPM_GUIBB_LIST->GET_DEFINITION
Signatur der Methode:
EO_FIELD_CATALOG - Enthält Feldkatalog in Form eines Strukturtyps, der alle Komponenten umfasst, die als Felder im Formular verwendet werden können ET_FIELD_DESCRIPTION - Liste mit Feldbeschreibungen und beschreibenden Informationen zu den einzelnen Feldern ET_ACTION_DEFINITION - Liste mit möglichen Aktionen
method IF_FPM_GUIBB_LIST~GET_DEFINITION.
DATA: lt_field_cat TYPE ztt_list,
ls_field_descr TYPE LINE OF fpmgb_t_listfield_descr,
ls_action_def type line of fpmgb_t_actiondef.
eo_field_catalog ?= cl_abap_tabledescr=>describe_by_data( lt_field_cat ).
ls_field_descr-name = 'LFDNR'.
ls_field_descr-read_only = abap_true.
ls_field_descr-condense = 'X'.
APPEND ls_field_descr TO et_field_description.
ls_action_def-id = 'SAVEBUTTON'.
ls_action_def-text = text-001.
ls_action_def-tooltip = text-001.
ls_action_def-imagesrc = 'ICON_SYSTEM_SAVE'.
APPEND ls_action_def TO et_action_definition.
endmethod.
Anwendungsdaten in Model-Klasse
Empfehlung: Singleton (andere möglich, aber meist umständlich).
UIBB / User Interface Building Blocks
GUIBB / Generische UI Building Blocks
GUIBB-Komponenten inkl. zugehöriger Feeder-Interfaces
- FPM_FORM_UIBB --> IF_FPM_GUIBB_FORM
- FPM_LIST_UIBB --> IF_FPM_GUIBB_LIST
- FPM_SEARCH_UIBB --> IF_FPM_GUIBB_SEARCH
Nur in den seltensten Fällen muss eine eigene Komponente angelegt werden.
Übersetzungen
Nachrichtenklassen und Texte in Klassen werden direkt an den Stellen übersetzt, wo sie eingegeben werden.
Texte für FPM Konfigurationen können für die Anmeldesprache direkt in den UIBBs / Komponenten hinterlegt werden.
Für die Übersetzungen solcher Texte muss aus dem zugehörigen Objekt der Objektkatalogeintrag rausgesucht werden. Danach:
- SE63 → Übersetzung → ABAP-Objekte → Transportobjekt → Dort das Transportobjekt aus dem Objektkatalogeintrag eintragen.
WebServices pflegen und aktivieren
WebServices können mit der Transaktion SICF
gepflegt und auch dort aktiviert werden.
Für ein WebDynpro / FPM kann über die SE80 die FPM-/WebDynpro-Anwendung geöffnet werden und dann über Springen -> HTTP-Service-Pflege in die SICF bis zum richtigen Service springen.
Aktivieren per Funktionsbaustein
Falls keine Zugriffsrechte vorliegen, kann ein Webservice vielleicht mit einem RFC-fähigen Funktionsbaustein auf dem Zielsystem aktiviert werden, indem der verwendete User auf dem Zielsystem ausreichend Zugriffsrechte hat.
Funktionsgruppe | HTTPTREE |
Funktionsbaustein | HTTP_ACTIVATE_NODE |
Als RFC-Zielsystem das Zielsystem auswählen unter Berücksichtigung des Users mit ausreichenden Rechten.
Bedeutung der Parameter des Funktionsbausteins:
Parameter | Inhalt / Bedeutung |
URL | Service-Pfad aus SICF verwenden (siehe oben) |
HOSTNAME | DEFAULT_HOST (aus SICF verwenden) |
EXPAND | X |
Fehlerbehandlung
Protokolle
Standard-Protokolle von SAP nutzen:
Transaktion | Beschreibung | Anmerkungen |
---|---|---|
ST22 | Laufzeitfehler | |
SM21 | Systemlog | |
SLG1 | Anwendungslog | Für Floorplan Manager filtern nach:
Objekt = Unterobjekt = |
ST11 | Fehlerprotokolldatei |
Pakete
Paket | APB_FPM |
Kurzbeschr. | Floorplan Manager |
Anwendungskomponente | BC-WD-CMP-FPM Floorplanmanager Web Dynpro ABAP |
Oberpaket | SWDP |
Softwarekomp. | SAP_UI Release 740, SP 20 |
Unterpakete für Test- und Demo-Daten:
- APB_FPM_TEST
- APB_FPM_DEMO
Quellen und Tutorials
https://blogs.sap.com/2017/05/04/getting-started-with-the-floorplan-manager/
https://blogs.sap.com/2017/11/14/the-fpm-event-phase-model-easy-going-or-already-lost/
Developer Guides: https://archive.sap.com/documents/docs/DOC-61783
Floorplan Manager for WebDynpro ABAP 7.4 SP08 https://archive.sap.com/documents/docs/DOC-59244