Anfang des Inhaltsbereichs

konzeptionelle Dokumentation Die Datenübernahme-Datenstruktur  Dokument im Navigationsbaum lokalisieren

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.

Diese Grafik wird im zugehörigen Text erklärt

 

Ablauf

  1. Deklarieren Sie die interne Tabelle <bdc_tab> .
  2. Initialisieren Sie die interne Tabelle vor jedem neuen Transaktionsaufruf.
  3. 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>.
  4. 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)'.
  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)'.
  6. 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>.
  7. Führen Sie die Punkte 3 bis 6 für jedes weitere Dynpro der Transaktion durch.
  8. 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.

Beispiel

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)