Die Datenübernahme-Datenstruktur
Um Daten in eine Batch-Input-Mappe zu schreiben, oder die Verarbeitung mit
CALL TRANSACTION USING
oder
CALL DIALOG
durchführen wollen, müssen Sie eine interne Tabelle
<bdc_tab>
vorbereiten. Die interne Tabelle muß gemäß der ABAP-Dictionary-Struktur
BDCDATA
aufgebaut sein.In der internen Tabelle
<bdc_tab>
werden nicht nur die Daten gespeichert, die in das SAP-System übernommen werden sollen, sondern auch die für die Verarbeitung erforderlichen Aktionen. Sie ist mit einem Skript vergleichbar, welches das SAP-System zur Verarbeitung der Batch-Input-Daten verwendet.Die folgende Abbildung enthält einen Überblick über die Felder der Struktur BDCDATA und zeigt, wie Sie die erforderliche interne Tabelle
<bdc_tab>
in Ihrem ABAP-Programm deklarieren.
Ablauf
Deklarieren Sie die interne Tabelle
<bdc_tab>
.
Initialisieren Sie die interne Tabelle vor jedem neuen Transaktionsaufruf.
Am Anfang jedes neuen Bildschirmbilds müssen Sie den Modulpoolnamen
<program>
, die Dynpronummer
<dynpro>
und ein Flag einpflegen:
<
bdc_tab>-PROGRAM = <program>.
<bdc_tab>-DYNPRO = <dynpro>.
<bdc_tab>-DYNBEGIN = 'X'.
APPEND <bdc_tab>.
Fügen Sie nun für jedes Feld, das Sie mit Werten versorgen wollen, einen Eintrag in die interne Tabelle ein. Sie müssen dabei den technischen Feldnamen
<fnam>
und den Inhalt des Felds
<fval>
angeben:
<bdc_tab>-FNAM = <fnam>.
<bdc_tab>-FVAL = <fval>.
APPEND <bdc_tab>.
Sofern das Feld in einem Steploop oder Tablecontrol steht, müssen Sie zusätzlich die Zeile angeben, in der die Eingabe gemacht werden soll. Dies geschieht durch Angabe der Zeilennummer direkt im Anschluß an den Feldnamen:
<bdc_tab>-FNAM = 'feldx(5)'.
Wenn Sie den Cursor auf ein bestimmtes Feld stellen wollen, dann geben Sie die Cursorposition wie folgt an, indem Sie das Feld
FNAM
mit dem Wert
BDC_CURSOR
füllen und in dem Feld
FVAL
den technischen Namen
<tname>
des Feldes übergeben, auf der der Cursor stehen soll:
<bdc_tab>-FNAM = 'BDC_CURSOR'.
<bdc_tab>-FVAL = <tname>.
APPEND <bdc_tab>.
Sofern den Cursor auf ein Feld in einem Steploop oder Tablecontrol positionieren wollen, müssen Sie zusätzlich die Zeile angeben. Dies geschieht durch Angabe der Zeilennummer direkt im Anschluß an den Feldnamen:
<bdc_tab>-FVAL = 'feldx(5)'.
Geben Sie nun an, welche Aktion auf diesem Dynpro ausgelöst werden soll. Dazu müssen Sie den ausgelösten Funktionscode
<fcode>
bestimmen und diesen dem Feld
FVAL
zuweisen. Dabei müssen Sie beachten, daß einer Funktionstastennummer immer das Zeichen '
/
' vorgestellt werden muß. Alle anderen Funktionscodes muß ein '
=
' vorangestellt werden.
Dem Feld
FNAM
müssen Sie den Wert
BDC_OKCODE
zuweisen:
<bdc_tab>-FNAM = ‘BDC_OKCODE’.
<bdc_tab>-FVAL = <fcode>.
APPEND <bdc_tab>.
Führen Sie die Punkte 3 bis 6 für jedes weitere Dynpro der Transaktion durch.
Nach dem letzten Bild der Transaktion ist die interne Tabelle
<bdc_tab>
mit allen benötigten Werten gefüllt. Sie kann nun für das Erstellen eines Eintrags in eine Batch-Input-Mappe oder dem Aufruf der Befehle
CALL TRANSACTION
oder
CALL DIALOG
verwendet werden.
Die Transaktion, auf die eine BDCDATA-Struktur sich bezieht, wird separat identifiziert. Wenn Ihr Programm Daten in eine Batch-Input-Mappe stellt, wird die Transaktion beim Aufruf des Funktionsbausteins
BDC_INSERT
angegeben. Dieser Funktionsbaustein schreibt die
BDCDATA
-Struktur in die Mappe. Verarbeitet Ihr Programm die Daten dagegen mit der Anweisung
CALL TRANSACTION USING
, wird die Transaktion direkt in dieser Anweisung angegeben.
Die folgende Tabelle ist ein Beispiel für den Inhalt einer BDCDATA-Struktur. Mit dieser Struktur wird eine Zeile in einen Report in Transaktion SE38 (dem ABAP Editor) eingefügt:
BDCDATA-Struktur, mit der einem Report eine Zeile hinzugefügt wird (Transaktion SE38)
PROGRAM |
DYNPRO |
DYNBEGIN |
FNAM |
FVAL |
SAPMS38M |
0100 |
X |
|
|
|
|
|
RS38M-PROGRAMM |
<Name> |
|
|
|
RS38M-FUNC_EDIT |
X |
|
|
|
BDC_OKCODE |
=CHAP (Funktionscode Ändern) |
SAPMSEDT |
2310 |
X |
|
|
|
|
|
RSTXP-TDLINECOM(1) |
B- |
SAPMSEDT |
2310 |
X |
|
|
|
|
|
BDC_CURSOR |
RSTXP-TDLINECOM(1) |
|
|
|
RSTXP-TDLINE(1) |
BDC Test Text |
|
|
|
BDC_OKCODE |
/11 (Funktionstaste Sichern) |
SAPMSEDT |
2310 |
X |
|
|
|
|
|
BDC_OKCODE |
/3 (Funktionstaste Zurück) |
SAPMS38M |
0100 |
X |
|
|
|
|
|
BDC_OKCODE |
/15 (Funktionstaste Beenden) |