OFFICIUM INSERVIO
Your reliable partner for your business software...
Sage 100 Benutzerfelder (benutzerdefinierte Felder) / User fields (user defined fields)
(alle Versionen/all versions)
Dienstag, 1. Januar 2019
Definition der Standard Benutzerfelder
Korrektes Ausrollen/Deployment der Felder aus der Entwicklungsumgebung zu den Kunden
Erweiterung der Benutzerfeld-Klassen
Spezielle Benutzerfelder für Techpartner/Fachhändler
Deutsch
Hintergrund
In der Sage 100 gibt es schon (nahezu) von Anfang an sogenannte "Benutzerfelder" , auch mit "benutzerdefinierte Felder" oder "USER"-Felder bezeichnet.
Diese Datenfelder sind sehr wichtig im Zusammenhang mit Erweiterungen der Sage 100 und können prinzipiell über den Sage Administrator angelegt werden.
In der Praxis fallen bei Kunden und Techpartnern immer wieder Fehlinterpretationen und teils fehlendes Wissen zu diesem Thema auf.
Nachfolgend eine Übersicht der wichtigsten Hintergründe zu den Benutzerfeldern.
Definition der Standard Benutzerfelder
Benutzerfelder können sehr einfach über das Sage Administrator Tool angelegt werden.

Praxistipp: Wenig bekannt ist die Möglichkeit , im Administrator Tool mit Drag & Drop ein angelegtes Benutzerfeld sehr leicht in eine andere Klasse verschieben zu können , um es identisch auch dort anzulegen.
Benutzerfelder haben prinzipiell nachfolgenden Aufbau und Bedeutung und müssen unbedingt in der SQL-Tabelle "USysClassFields" korrekt registriert sein.
Zu beachten ist , dass der vergebene Name keinen Unterstrich _ enthalten darf , da dieser von Sage reserviert ist.
Außerdem sind die Länge des Datenfeldes und auch die Länge der Bezeichnung des Feldes beschränkt!
Für die korrekte Registrierung der "normalen" Benutzerfelder wird der weiter unten beschriebene "Assistent für Benutzerfelder" von Sage empfohlen!

Korrektes Ausrollen/Deployment der Felder aus der Entwicklungsumgebung zu den Kunden
Die Felder werden wie weiter oben erklärt über das Sage Administrator Tool angelegt.
⚠️Für das Ausrollen zum Kunden empfiehlt es sich unbedingt , den im Rahmen des Sage Developer-Programms bereitgestellten "Assistenten für Benutzerfelder" einzusetzen.
Dies ist wichtig , da es nicht mit einem simplen Erzeugen des Feldes auf der zugrundeliegenden Sage-Tabelle und einer Registrierung in der Tabelle "USysClassFields" getan ist.
Für bestimmte Benutzerfeld-Klassen muss das Feld z.B. auch in weiteren , abhängigen SQL-Tabellen angelegt werden.
Ein gutes Beispiel sind die Archiv-Tabellen der Beleg-Tabellen "KHKVKBelege" und "KHKEKBelege" und die temporären Druck-Tabellen.
Für Benutzerfelder der Klassen "Verkaufsbeleg" , "Verkaufsbelegpositionen" sowie "Einkaufsbeleg" und "Einkaufsbelegpositionen" muss das SQL-Datenfeld auch exakt identisch in diesen Tabellen angelegt werden , sonst kommt es zur Laufzeit zu Problemen.
Der "Assistenten für Benutzerfelder" wird von Sage im Rahmen des Developer-Programms als separates Setup ausgerollt und registriert sich nach Ausführung des Setups dort als Assistent.
⚠️ Das Setup wird von Sage regelmäßig aktualisiert und es sollte immer die letzte zur Sage Installation passende Version verwendet werden!

Die mit dem Assistenten abgerufenen Felder werden durch diesen in ein SQL-Script geschrieben , welches im Root-Ordner der Sage 100-Installation mit dem Namen "OLUpdateUserFields.upd" abgelegt wird (der Name kann beim Export angepasst werden).
Erweiterung der Benutzerfeld-Klassen
Es ist von Sage vorgesehen , dass Fachhändler auch neue Klassen für Benutzerfelder hinzufügen können.
Die Vorgehensweise findet sich in nachfolgendem Beitrag erläutert:
https://www.officium-inservio.com/sage-100-1/userfldnewclass
Spezielle Benutzerfelder für Techpartner/Fachhändler
Sage erlaubt seit bereits ungefähr 2013 die Anlage spezieller Benutzerfelder für Techpartner/Fachhändler.
Auch dieses Feature ist wenig bekannt.
Diese speziellen Benutzerfelder können z.B. vom Endkunden nicht verändert und gelöscht werden.
Dieses Feature der Benutzerfelder soll für besondere Anpassungen sicherstellen , dass der Endunde nicht z.B. versehentlich ein Feld verändert oder sogar löscht und dass es dann zur Laufzeit zu Problemen kommt.
Die Grundidee von Sage für diese speziellen Benutzerfelder ist wie folgt:
Felder von Partnerlösungen dürfen nicht durch den Anwender löschbar sein.
Namenskollisionen, auch zwischen verschiedenen Partnern, sind vollständig auszuschließen.
Felder sind nur sichtbar, wenn vom Partner definiert (kein Aus-/Einblenden durch Anwender).
Eigene Felder sollen fest positioniert sein, auch auf Standardseiten.
Technische Unterscheidung:
"Normale" benutzerdefinierte Felder:
USER_(Name)Partnerfelder:
USER__(Zweck)_(PartnerId)_(Name)⚠️ Man beachte den doppelten Unterstrich gegenüber dem einfachen Unterstrich! Für Zweck schlägt Sage das Kürzel "IN" für intern vor.
Es gelten weiterhin folgende Regeln:
Solche Felder können nicht über das Sage Administrator Tool angelegt werden.
Berücksichtigung der Felder beim Kopieren der Datenbank oder Mandantendaten.
Keine automatische Anzeige in Control-Center-Elementen und neuen Bildschirmauskünften.
Bei Feldanlage via DB-Skripte ist der Eintrag in der Tabelle "USysClassFields" notwendig. Dies ermöglicht später die Platzierung der Felder über den Administrator im Formularlayout.
