!--a11y-->
Direct Input 
Mit der Funktion ‚Direct Input‘ (DI) ist es möglich, eine performante Datenübernahme aus einem Altsystem durchzuführen. Die Daten werden mit denselben Routinen wie im Dialog geprüft und in der Datenbank gespeichert, wenn sie fehlerfrei sind. Fehlerhafte Daten werden nicht übernommen und in einem Protokoll ausgewiesen.
Neben der Neuanlage von Daten ist es auch möglich, die Daten bereits existierender Instanzen zu ändern. Ein NODATA-Zeichen (Default ist der Schrägstrich ‚/‘)wurde eingeführt, damit nicht bei jeder Änderung die Werte aller Datenfelder angegeben werden müssen. Wird für ein Feld das NODATA-Zeichen übergeben, bleibt der alte Wert erhalten.
Für den DI müssen verschiedene DDIC-Strukturen angelegt und dem BDT bekannt gemacht werden.
Hinweis: Beachten Sie bitte, daß aufgrund der Funktionalität des NODATA-Zeichens nur Felder vom Datentyp CHAR in diese Strukturen aufgenommen werden dürfen. Für Tabellenfelder anderer Datentypen nehmen Sie ein CHAR-Feld auf, bei dem Name und Länge mit dem Datenbankfeld identisch sind.
Aktivitäten:
· DDIC-Strukturen anlegen
¡ Anwendungsobjektspezifische Kopfdaten (abgekürzt S1)
Diese Struktur umfaßt alle Felder, die zum Lesen
der Tabellen notwendig sind (unter Umständen identisch mit den Feldern des
Einstiegsbildes beim Dialog) sowie alle Felder, die auch als
Feldmodifikationskriterium dienen.
Beispiel: Beim Geschäftspartner
heißt diese Struktur BUS0DIINIT.
¡ Alle Kopfdaten (abgekürzt S2)
Neben den Feldern der Struktur S1 umfaßt S2 auch
noch die Kopfdaten, die unabhängig vom Anwendungsobjekt immer benötigt werden.
Diese allgemeingültigen Kopfdaten befinden sich in der BDT-Struktur BUSSDIHDR.
Fügen Sie diese Struktur als erstes in S2 ein, danach die von Ihnen im ersten
Schritt angelegte Struktur S1.
Beispiel: Beim Geschäftspartner
heißt diese Struktur BUSHDR_DI
¡ Daten je Datenbanktabelle (abgekürzt S3)
Je Datenbanktabelle legen Sie eine DI-Struktur an, die alle zu übernehmenden Felder dieser Tabelle enthält. Können bei einer Tabelle je Objektinstanz mehrere Sätze gepflegt werden (z.B. Table-Control im Dialog), nehmen Sie in diese Struktur zusätzlich noch ein Kennzeichen auf, das die Art der Änderung pro Datensatz beschreibt. Referieren Sie bei diesem Feld das Datenelement BU_CHIND. In der gleichnamigen Domäne existieren folgende Festwerte:
§ U Ändern
§ I Einfügen
§ D Löschen
§ M Modifizieren (Anlegen oder Ändern)
Bei der Änderungsart ‚M‘ ermittelt das
Anwendungsprogramm innerhalb des Zeitpunktes DINP2, ob der Datensatz angelegt
(Satz war noch nicht vorhanden) oder geändert (Satz bereits vorhanden)
wird.
Beispiel: Beim Geschäftspartner
gibt es unter anderem die Strukturen
§ BUS000_DI Tabelle BUT000 (Allgemeine Daten)
§ BUS0BK_DI Tabelle BUT0BK (Bankverbindungen)
§ BUS020_DI Tabellen BUT020/ADRC (Adressen)
Hinweis: Die Feldnamen müssen über die Strukturen S2 und alle Strukturen S3 hinweg eindeutig sein, da ansonsten die Aktivierung der Struktur S4 (siehe unten) nicht möglich ist.
¡ Alle Daten (abgekürzt S4)
Alle für den Direct Input relevanten Daten werden
in dieser Struktur zusammengefaßt. Fügen Sie dazu zunächst die Struktur S2 als
Include-Struktur ein, danach die Includes für alle von Ihnen angelegten
Strukturen S4.
Beispiel: Beim Geschäftspartner heißt diese Struktur BUS_DI.
· Namen der DDIC-Strukturen im BDT hinterlegen
¡ Innerhalb der Definition Ihres Anwendungsobjektes hinterlegen Sie
§ den Namen der Struktur S2 im Feld Kopfdaten
§ den Namen der Struktur S4 im Feld Alle Daten.
¡ Innerhalb der Definition der Tabellen hinterlegen Sie je Tabelle den Namen der zugehörigen DI-Struktur S3.
· Weitere Einstellungen im BDT
Für alle Sichten, deren Felder sich in der Struktur S1 befinden, muß das Kennzeichen Kopfdaten DI markiert werden. Damit wird gewährleistet, daß die Funktionsbausteine Nach der Eingabe zu diesen Sichten direkt nach dem Zeitpunkt DINP1 prozessiert werden.
Beim DI wird prinzipiell dieselbe Programmlogik verwendet wie innerhalb des Dialogs. Nahezu alle Zeitpunkte des Dialogs werden beim DI in der gleichen Reihenfolge aufgerufen (siehe Bild 3).

Aus Laufzeitgründen werden die Anwendungsdaten aber nicht je Instanz einzeln auf die Datenbank geschrieben, sondern in Paketen zu je 200 Objektinstanzen. Deshalb wird wie beim Übernehmen-Modus die Bearbeitung einer Instanz nach den Zeitpunkten DTAKE und DLVE1 abgebrochen. Die Zeitpunkte DSAVE und DLVE2 werden erst durchgeführt, wenn die Daten zu mehreren Instanzen gemerkt wurden bzw. wenn keine weiteren Daten vorliegen.
Neben den Zeitpunkten beim Dialog sind für den DI die beiden Zeitpunkte DINP1 und DINP2 wichtig, die für den Datentransport vom BDT zu den Anwendungen sorgen.
· Zeitpunkt DINP1 (Direct Input: Kopffelder füllen)
Der Inhalt der anwendungsobjektspezifischen
Kopfdaten (Struktur S1) wird vom BDT an die Anwendungen übergeben. Dem
entspricht beim Dialog die Dateneingabe im Einstiegsbild.
Aufrufzeitpunkt: Nach ISSTA und vor
dem Prüfen der Kopfdaten.
Hinweis: Im nächsten Schritt stößt
das BDT die Funktionsbausteine zum Zeitpunkt Nach der Eingabe für alle Kopfsichten
(Kennzeichen ‚Kopfdaten DI‘ bei der Definition der Sichten
markiert) an, wodurch die gemerkten Kopfdaten geprüft werden.
Anwenderkreis: Alle Anwendungen,
die eigene Kopffelder haben.
Namenskonvention:
<Anwendung>_<Anwendungsobjekt>_EVENT_DINP1
(Kunde: Funktionsbausteinname erhält
zusätzlich das Präfix ‚Y_‘ oder ‚Z_‘).
Schnittstelle:
à
I_INIT
Kopfdaten
Aktionen:
¡ Kopfdaten vom BDT in unstrukturierter Form lesen (Parameter I_INIT) und in eine Feldleiste mit der Struktur S2 stellen
¡ Kopfdaten innerhalb der Funktionsgruppe merken in den Feldern, über die später die Prüfungen laufen werden
Beispiel: BUP_BUPA_EVENT_DINP1
· Zeitpunkt DINP2 (Direct Input: Datenfelder füllen)
Jeweils ein Datensatz zu einer Tabelle (ohne Kopfdaten) wird vom BDT an die Anwendungen übergeben. Im Dialog entspricht dies der Dateneingabe auf den Datenbildern.
Aufrufzeitpunkt: Nach dem Lesen der alten Daten
(Zeitpunkt ISDAT und ISDST) und vor dem Prüfen der Datenfelder.
Anwenderkreis: Alle Anwendungen, die Datenfelder in eigenen Sichten haben.
Auch tabellenpartizipierende Anwendungen!
Namenskonvention:
<Anwendung>_<Anwendungsobjekt>_EVENT_DINP2
(Kunde:
Funktionsbausteinname erhält zusätzlich das Präfix ‚Y_‘ oder
‚Z_‘).
Beispiel: BUP_BUPA_EVENT_DINP2
Schnittstelle:
à
I_DATA
Datensatz zu einer Tabelle
Aktionen:
¡ Daten in eigene Struktur einlesen
Der Importingparameter I_DATA (Bezugsstruktur BUSDIDAT1) enthält die Felder TBNAM und DATA. Im Feld TBNAM steht der Name der DI-Struktur. Das Feld DATA enthält die Daten der DI-Struktur als String. Die Anwendung merkt sich die für sie wichtigen Daten in einer Struktur mit dem Aufbau der DI-Struktur.
¡ Bestimmung der relevanten Aktion bei Kennzeichen ‚M‘ (Modifizieren)
Bei Tabellen mit Mehrfacherfassung und eingehenden Datensätze mit Aktion M muß zunächst noch die durchzuführende Aktion bestimmt werden. Dazu muß der Datensatz bei den bestehenden Daten nachgelesen werden. Existiert der Datensatz bereits, wird Aktivität U (Ändern) gesetzt, im anderen Fall die Aktivität I (Einfügen).
¡ Auswertung des ‚NO-DATA-Kennzeichens‘
Bei der Änderung bestehender Daten kann das NO-DATA-Kennzeichen verwendet werden. Alle Felder, die nicht geändert werden sollen, enthalten dieses Kennzeichen. Zum Zeitpunkt DINP2 wird dieses Kennzeichen entschlüsselt. Dazu muß der Funktionsbaustein BUS_DI_DATA_COMBINE aufgerufen werden. Dieser Baustein ermittelt aus den alten und den neu übergebenen Daten (Importing-Parameter) den kompletten neuen Datenstand (Exporting-Parameter).
¡ Neuen Datenstand merken
Die Anwendung merkt sich den neuen Datenstand in den dafür vorgesehenen Tabellen bzw. Feldleisten. Anschließend werden vom BDT die Prüfungen zu den Sichten aufgerufen, bei denen das Kennzeichen Kopfdaten DI nicht markiert ist.