Fachbeitrag UDO Implementierung

 Einfache UDO-Implementierung in SAP Business One 

Einfache UDO-Implementierung in SAP Business One

Seit der Version 9.0 gibt es in SAP Business One eine einfache Möglichkeit, „Benutzerdefinierte Objekte“ (UDO) zu integrieren. Durch die Einführung des SAP-Business-One-Studio ist es nun auch Beratern ohne Programmierkenntnisse möglich, Implementierungen mit solchen individuellen Objekten zu erweitern. Wie weit Sie damit wirklich ohne Programmierung kommen können, lesen Sie in diesem Blogbeitrag. 

Als Beispiel dient dabei ein bislang im Standard nicht vorhandenes Objekt: Zubehörartikel. Wenn Sie zum Beispiel Webshops anbinden, kennen Sie das Thema: Es soll eine Beziehung von Artikeln untereinander hergestellt werden, um zu definieren, dass bestimmte Artikel ein Zubehör für einen anderen Artikel darstellen. So sind zum Beispiel die Maus und die Tastatur jeweils Zubehörartikel für Computer. Ein ähnliches Konstrukt ist in SAP Business One bereits mit den Alternativartikeln abgebildet, welche jedoch nicht der gewünschten Artikelbeziehung entsprechen. 

Was ist ein "Benutzerdefiniertes Objekt" (UDO - User Defined Object)

SAP Business One arbeitet objektorientiert. Es sind zwar alle Daten in einer Datenbank abgelegt, welche wiederum Tabellenstrukturen aufweist, dennoch sind die einzelnen Prozesse auf Objekte aufgeteilt. Ein Objekt ist zum Beispiel ein Angebot, eine Bestellung oder auch ein Artikelstammdatensatz. Hinter nahezu jedem Hauptmenüeintrag (bis auf das Administrations-Menü) versteckt sich ein Objekt. 

Das Objekt ist eine Art logische Struktur der darunter liegenden Datentabellen. So stehen die Informationen zu einem Objekt im einfachsten Fall in nur einer Tabelle, es kann jedoch auch eine Vielzahl an Tabellen zu einem komplexeren Objekt gehören. Neben den Datentabellen besitzt ein Objekt auch vordefinierte Funktionen, die in SAP Business One als Services bezeichnet werden. 

Klassische Beispiele für diese Services sind: 

  • Hinzufügen 
  • Aktualisieren 
  • Löschen 
  • Suchen 

Damit kann ein Objekt völlig autark in SAP Business One arbeiten, da es seine eindeutigen Datenspeicherorte (Tabellen) und seine Funktionen (Services) besitzt. Ein benutzerdefiniertes Objekt bekommt dieses Verhalten (der SAP-Business-One-Standard-Objekte) vererbt und verhält sich damit genau wie ein bereits existierendes Objekt. Es erweitert also die Funktionalität von SAP Business One unter Zuhilfenahme der bereits vorhandenen Services. 

Das Anlegen eines benutzerdefinierten Objektes erfolgt in zwei Schritten. Zunächst ist die Grundlage für den Datenspeicher zu schaffen, indem „Benutzerdefinierte Tabellen“ (UDTs) und „Benutzerdefinierte Felder“ (UDFs) für das Objekt definiert werden. In SAP Business One wird diese Struktur häufig als „Metadaten“ bezeichnet. Im zweiten Schritt wird das benutzerdefinierte Objekt selbst angelegt. Dies geschieht sehr komfortabel über einen Assistenten, der Sie durch die Konfiguration führt. Im Wesentlichen werden die in Schritt 1 angelegten Metadaten mit dem neu zu erstellenden Objekt verknüpft und dem Objekt seine spezifischen Eigenschaften zugewiesen. Beide Schritte können sowohl manuell (in SAP Business One selbst) oder auch automatisiert (durch eine Programmierung) vorgenommen werden. Letzteres ist sinnvoll, wenn das benutzerdefinierte Objekt Teil einer komplexeren Programmierung wird – also Teil eines AddOns. In diesem Artikel konzentrieren wir uns jedoch auf die manuelle Definition von benutzerdefinierten Objekten.

Erstellen einer Metadatenstruktur für die Verwaltung von Zubehör-Aritkeln

Die Verwaltung von Zubehörartikeln soll in diesem Beispiel eine sehr einfache Datenstruktur verwenden. Dabei gibt es einen Hauptartikel (zum Beispiel den Computer), für den die Zubehörartikel (zum Beispiel eine PC-Maus) definiert werden. Sämtliche Artikel, die im Objekt Verwendund finden, müssen auch im Artikelstamm hinterlegt sein. Daraus ergibt sich ein Bedarf von zwei Tabellen – eine für den Hauptartikel und eine für die Zubehörartikel. Der Hauptartikel soll in unserem Beispiel nur mit Hilfe der Artikelnummer angegeben werden. Die jeweiligen Zubehörartikel benötigen neben ihrer Artikelnummer noch die Angabe zur Menge. Diese Datenstruktur kann auch jederzeit um weitere Informationen erweitert werden. Die folgende Tabelle zeigt die benötigten Tabellen und Felder in SAP Business One. 

Tabelle: Hauptartikel Tabelle: Zubehörartikel

Artikelnummer Hauptartikel

Artikelnummer Zubehörartikel

benötigte Menge des Zubehörartikels

Tabelle 1: Benötigte Tabellen für Beispielobjekte

Der Vorteil an der Definition von Objekten in SAP Business One ist die Tatsache, dass Sie sich keine Gedanken über die Verknüpfung der beiden Tabellen machen müssen. Diese ist in der UDO-Logik von SAP Business One bereits enthalten, da SAP Business One bei UDTs, die für ein Objekt erstellt werden, automatisch eigene Felder zur Verknüpfung hinzufügt. Aus diesem Grund werden wir auch kein zusätzliches Feld für die Artikelnummer des Hauptartikels anlegen müssen. Dafür verwenden wir das bereits von SAP Business One erstellte Feld „Code“.

Es ist beim Anlegen der Tabellen jedoch darauf zu achten, dass der passende Objekttyp ausgewählt wird. Da das benutzerdefinierte Objekt später basierend auf diesem Objekttyp erstellt wird, ist es wichtig, dass bei UDO-Tabellen generell ein Objekttyp anzugeben ist und dieser zum gewünschten Objekt passen muss. Zur Auswahl stehen dabei die beiden Objekttypen „Stammdaten“ und „Beleg“. Der Unterschied liegt in den registrierten Services (vordefinierte Funktionen). So gibt es im Objekttyp „Beleg“ neben allen Funktionen des Stammdatenbelegtyps zusätzlich noch belegrelevante Funktionen, wie das Schließen eines Beleges oder die Integra-tion in die Belegnummerierung.

SAP Business One UDO Tabellen
Abbildung 1: Definition von UDO-Tabellen

Die Art des Objektes ergibt sich zumeist aus der jeweiligen Anwendung. In unserem Fall ist es also dement-sprechend ein Stammdatenobjekt. In Abbildung 1 ist folglich die Haupttabelle (hier: Zubehörartikel Kopf) als Objekttyp „Stammdaten“ und die Zeilentabelle (hier: eine namens „Zubehörartikel Detail“) vom Objekttyp „Stammdatenzeilen“ dargestellt.

Nach dem Anlegen der beiden Felder für die Tabelle der Zubehörartikel, können Sie die Tabellenstruktur wie gewohnt bereits nutzen, obwohl zu diesem Zeitpunkt das Objekt noch nicht existiert. Die folgende Tabelle beschreibt die Feld-Definitionen.

Feld: Artikelnummer

Definition: Alphanumerisch / Regulär (50 Zeichen)

Feld: Menge

Definition: Einheiten und Summen / Menge

Tabelle 2: Definierte Felder für Zubehörartikel

 Ein Blick in den Abfragegenerator für die beiden neu erstellten Tabellen zeigt, dass neben den angelegten benutzerdefinierten Feldern weitere Felder (durch SAP Business One) automatisch angelegt wurden. Diese Spalten werden zur späteren Verwaltung des Objektes benötigt. 

SAP Business One Benutzerdefinierte Felder Objekttabellen
Abbildung 2: Benutzerdefinierte und automatisch erstellte Felder für die Objekttabellen

Erstellen eines eigentlichen Objekts

Das Objekt erstellen Sie nun mit Hilfe des Objektregistrierungs-Assistenten (Menü: EXTRAS > CUSTOMIZING TOOLS). Dieser führt Sie durch die Erstellung des Objektes, wobei Sie im Wesentlichen folgende Schritte durchlaufen:

  • Festlegen von eindeutiger ID, Namen und Typ des Objektes
  • Auswahl der Haupttabelle
  • Registrieren der Services (Funktionen wie Hinzufügen, Aktualisieren, Suchen, etc.)
  • Automatisches Erstellen eines SAP-Business-One-Fensters und Menüeintrages für das Objekt
  • Definition der Suchfelder (sofern die Suche als Service registriert wurde)
  • Auswahl der auf der Maske angezeigten Felder
  • Einbinden der Untertabellen (hier: Tabelle der Zubehörartikel)

Was der Objektregistrierungs-Assistent im Hintergrund bereits alles für Sie erledigt, ist sehr bemerkenswert. Nach erfolgreicher Registrierung des Objektes „Zubehörartikel“ können Sie bereits den im Assistenten festgelegten Menüeintrag verwenden und erhalten dabei eine voll funktionsfähige SAP-Business-One-Maske. Hier funktionieren bereits alle registrierten Services, so dass Sie direkt neue Zubehörartikel anlegen, danach suchen und auch aktualisieren können. Und das ohne eine einzige Zeile zu programmieren.

SAP Business One Eingabemaske Zubehörartikel
Abbildung 3: Eingabemaske für Zubehörartikel

Zugegebenermaßen ist die Eingabe der Daten noch nicht sehr benutzerfreundlich, aber es funktioniert bereits alles.

Anpassen der Objektmaske

Um nun die Eingabemöglichkeiten zu optimieren, bearbeiten Sie die Maske des Objektes in SAP Business One Studio. Hier können Sie neben einfachen Änderungen – wie Feldbezeichnungen umbenennen, Felder neu positionieren oder Größenänderungen vornehmen – auch erweiterte Maskenanpassungen vornehmen. Um eine kundenfreundliche Eingabemöglichkeit der verschiedenen Artikel zu gewährleisten, empfiehlt sich eine SAP-Business-One-Auswahlliste („Choose from-List“) für Artikelstammdaten. Diese sogar zweimal – einmal für den Hauptartikel und einmal für die Zubehörartikel.

SAP Business One Studio Zubehoerartikel
Abbildung 4: UDO-Maske für Zubehörartikel im B1-Studio

Dazu laden Sie zunächst die UDO-Maske in SAP Business One Studio, indem Sie im AddOn „Projekt“ eine UDO-Form dem Projekt hinzufügen. Nach der erfolgreichenAnmeldung an der relevanten SAP-Business-One-Firmendatenbank können Sie dann die Maske des gewünschten UDOs auswählen.

Über die in SAP Business One Studio integrierte Toolbox können der Maske nun weitere SAP-Business-One-Elemente hinzugefügt werden. Im Fall der Auswahlliste wäre dies eine „Choose from List“ aus dem Bereich DATA SOURCE.

Zum Positionieren wird das Element bei geklickter linker Maustaste auf die Maske gezogen und anschließend konfiguriert. Spätestens ab diesem Zeitpunkt ist es zumindest hilfreich, wenn Sie über Kenntnisse im SAP-Business-One-SDK verfügen, auch wenn Sie weiterhin keine Zeile Quellcode selbst schreiben müssen.

Toolbox SAP Business One Studio
Abbildung 5: Toolbox des SAP Business One Studio

Die Konfiguration der Auswahlliste ist übersichtlich und in der folgenden Tabelle kurz erläutert:

Option Wert Erklärung

MultiSelection

False

Die Auswahlliste gibt nur einen Artikel zurück. Eine Mehrfachauswahl etwa mit gedrückter STRG-Taste wird nicht unterstützt.

ObjectType

4

Dieser Wert steht für die Artikelstammdaten. Eine Liste der Objekttypen finden Sie in der SDK-Hilfe unter dem Index-Eintrag „BoObjectTypes Enumeration“.

UniqueID

CFL_Main

Eindeutiger Name der Auswahlliste in der Maske

 Tabelle 3: Optionen der Auswahlliste

Als zweiten Schritt muss die fertig konfigurierte Auswahlliste noch an ihren Bestimmungsort. In diesem Fall ist das die Textbox zur Auswahl des Hauptartikels. In dieser Textbox gibt es drei relevante Eigenschaften, die es zu setzen gilt. Die folgende Tabelle listet diese kurz erläutert auf.

Option Wert Erklärung

ChooseFromListAlias

ItemCode

Dies ist der Spaltenname, der mit dem Objekt in der Auswahlliste verknüpft ist. Hier: ItemCode, da es möglich sein soll die Artikelnummer auszuwählen.

ChooseFromListAutoFill

True

Sollte bei der Eingabe in das Textfeld nur ein Wert gefunden werden, so wird im TRUE-Fall der gefundene Wert gleich ausgewählt.

ChooseFromListUID

CFL_Main

Verknüpfung zur erstellten Auswahlliste.

 Tabelle 4: Optionen der Textbox

Gleichermaßen gehen Sie für die zweite Auswahlliste der Zubehörartikel vor. Es gibt nur einen kleinen Unterschied: Da sich das Auswahlfeld der Artikelnummer für den Zubehörartikel innerhalb der Tabelle (Matrix) befindet, finden Sie die Eigenschaften der Zubehörartikelnummer unter der Columns-Eigenschaft der Matrix. Von hier haben Sie Zugriff auf die einzelnen Spalten, wo Sie die Artikelnummernspalte auswählen und wie gewohnt die Eigenschaften der Auswahlliste konfigurieren können. Beachten Sie in diesem Zusammenhang auch, dass Sie eine neue Auswahlliste für die Zubehörartikelaus-wahl erstellen müssen. Da sich diese innerhalb einer Matrix befindet und damit auch mehrere Werte verarbeiten kann, können Sie die Eigenschaft „MultiSelection“ auf TRUE setzen.

Um dem Fenster noch eine für SAP-Business-One-Nutzer gewohnte Funktion hinzuzufügen, können Sie einen Linkpfeil für den Hauptartikel hinzufügen. Auch dies kann im SAP-Business-One-Studio ohne Programmierung erfolgen. Suchen Sie hierzu das Element „LinkedButton“ und platzieren Sie es entsprechend der Logik vor dem Eingabetextfeld für den Hauptartikel. Der Linkpfeil benötigt zwei Konfigurationswerte, die in der folgenden Tabelle erläutert werden.

Option Wert Erklärung

LinkTo

0_U_E

Hier ist die „UniqueID“-Eigenschaft des Textfeldes einzutragen, aus welchem die Artikelnummer stammt.

LinkedObject

4

Die „4“ steht für Artikelstammdaten.

 Tabelle 5: Konfigurationswerte für einen Linkpfeil

Einbinden in SAP Business One

Wenn alle Änderungen an der Maske vorgenommen sind, kann diese per Rechtsklick im „Solution Explorer“ zurück in die Datenbank geschrieben werden und ist anschließend sofort nutzbar. Alternativ können Sie auch das Vorschau-Icon aus der Toolbar des SAP Business One Studio nutzen, um sich die konfigurierte Maske in einem bereits geöffneten SAP-Business-One-Client anzeigen zu lassen.

Zum Abschluss lässt sich das UDO auch in den Artikelstamm einbinden. Dafür erstellen Sie dort ein neues benutzerdefiniertes Feld und verknüpfen es mit dem erstellten UDO. Unter Verwendung des im SAP-Business-One-Client eingebauten „Formular UI Designer“ können Sie anschließend das benutzerdefinierte Feld an eine passende Stelle im Artikelstamm positionieren und ausrichten. Nach dem erfolgreichen Anlegen eines neuen Zubehör-Datensatzes und anschließender Auswahl im Artikelstamm, verknüpft der Linkpfeil dann den UDO-Datensatz und ruft die selbst erstellte Maske auf. 

SAP Business One Zubehörartikel Artikelstamm
Abbildung 6: Einbindung der Zubehörartikel in den Artikelstamm

Fazit

Mit den von SAP bereitgestellten Standard-Funktionalitäten wie benutzerdefinierten Tabellen (UDT), Feldern (UDF) und Objekten (UDO), dem SAP Business One Studio und den eingebauten „Formular UI Design“-Möglichkeiten können Sie SAP Business One auch für komplexere Anforderungen erweitern, ohne selbst Quellcode programmieren zu müssen. Alle hier geeigneten Funktionalitäten sind zwar auch für Programmierer verfügbar, im Rahmen eines einzelnen Kundenprojektes kann jedoch auch der Berater diese Umsetzungen selbständig durchführen.