CALL TRANSACTION USING für Datenübernahme verwenden 

Die Anweisung CALL TRANSACTION USING ist die schnellere der beiden empfohlenen Datenübernahme-Methoden. Bei dieser Methode werden die Fremddaten inline in Ihrem Datenübernahmeprogramm verarbeitet.

Unter Datenübernahme-Methode auswählen finden Sie Einzelheiten, die Ihnen als Entscheidungshilfe bei der Wahl der passenden Datenübernahme-Methode dienen sollen.

 

Syntax:

CALL TRANSACTION    <tcode>

           USING    <bdc_tab>

           MODE     <mode>

           UPDATE   <update>

 

<tcode> : Transaktionscode

<bdc_tab> : interne Tabelle der Struktur BDCDATA.

<mode> : Anzeigemodus

A

alles anzeigen

E

nur bei Fehlern anzeigen

N

nichts anzeigen

 

<update> : Verbuchungsmodus

S

synchron

A

asynchron

L

lokale Verbuchung

 

Ein Programm, das mit CALL TRANSACTION USING Fremddaten verarbeitet, sollte die folgenden Arbeitsschritte ausführen:

  1. BDCDATA-Struktur für die gewünschte Transaktion vorbereiten.
  2. Rufen Sie zusammen mit CALL TRANSACTION USING die gewünschte Transaktion auf, und stellen Sie die BDCDATA -Struktur bereit. Beispiel:

CALL TRANSACTION 'TFCA' USING BDCDATA
                MODE 'A'
                UPDATE 'S'.
                MESSAGES INTO MESSTAB.

IF SY-SUBRC <> 0.

   <Fehlerbehandlung>.

ENDIF.

Der Parameter MODE

Mit dem Parameter MODE können Sie festlegen, ob die Datenübernahme-Verarbeitung angezeigt wird oder nicht. Die folgenden drei Modi stehen zur Verfügung:

A Alles anzeigen. Wenn Sie das Programm ausführen, werden alle Bildschirmbilder sowie alle enthaltenen Daten angezeigt

N Nichts anzeigen. Die Bildschirmbilder werden grundsätzlich nicht angezeigt. Dabei spielt es keine Rolle, ob sie Fehler enthalten oder nicht. Sobald die Transaktionsverarbeitung abgeschlossen wurde, wird die Steuerung wieder an Ihr Programm zurückgegeben.

E Nur Fehler anzeigen. Sobald in einem Bildschirmbild ein Fehler auftritt, wird die Transaktion in den Anzeigemodus geschaltet, so daß Sie den Fehler beheben können.

Diese Anzeigemodus sind mit denen der Batch-Input-Mappenverarbeitung identisch.

Der Parameter UDPATE

Mit dem Parameter UPDATE regeln Sie, wie die von einer Transaktion verursachten Datenbankverbuchungen ausgeführt werden sollen. Die folgenden Modi stehen zur Verfügung:

A Asynchrone Verbuchung. In diesem Modus wartet die aufgerufene Transaktion nicht, bis die verursachten Datenbankverbuchungen ausgeführt wurden, sondern gibt die Verbuchung einfach an den SAP-Verbuchungsdienst weiter.

Mit der asynchronen Verarbeitung erzielen Sie daher in der Regel eine schnellere Ausführung Ihres Datenübernahmeprogramms.

Die asynchrone Verarbeitung wird für große Datenmengen NICHT empfohlen, da die aufgerufene Transaktion keine Abschlußmeldung vom Verbuchungsmodul erhält. Das rufende Datenübernahmeprogramm kann daher auch nicht feststellen, ob die Transaktion mit einer erfolgreichen Datenbankverbuchung abgeschlossen wurde oder nicht.

Bei der asynchronen Verbuchung müssen Sie die Verbuchungsverwaltungsfunktion (Transaktion SM12 ) verwenden, um festzustellen, ob die Verbuchung während der Mappenverarbeitung vorzeitig abgebrochen wurde. Die Funktionen zur Fehleranalyse und Fehlerbehebung sind weniger benutzerfreundlich als bei der synchronen Verbuchung.

S Synchrone Verbuchung. Bei der synchronen Verbuchung wartet die aufgerufene Transaktion, bis alle anfallenden Verbuchungen abgeschlossen sind. Daher ist die Verarbeitung langsamer als bei der asynchronen Verbuchung. Die aufgerufene Transaktion kann jedoch eventuell aufgetretene Verbuchungsfehler an das Programm melden; dadurch wird die Fehleranalyse und -behebung vereinfacht.

L Lokale Verbuchung. Bei der lokalen Verbuchung findet die Datenbankfortschreibung nicht in einem separaten Prozeß, sondern im Prozeß des Aufrufers statt. (siehe hierzu die ABAP Schlüsselwortdokumentation zu SET UPDATE TASK LOCAL )

Der Parameter MESSAGES

MESSAGES gibt an, daß alle Systemmeldungen, die während der Ausführung von CALL TRANSACTION USING ausgegeben werden, in die interne Tabelle <MESSTAB> geschrieben werden. Die interne Tabelle muß die Struktur BDCMSGCOLL haben.

Die von der Transaktion TFCA ausgegebenen Systemmeldungen können Sie in der Tabelle MESSTAB aufzeichnen. Verwenden Sie dazu folgendes Coding:

( In diesem Beispiel wird mit einer nicht existierenden Flugverbindung gearbeitet um in der Transaktion einen Fehler auszulösen.)

DATA: BEGIN OF BDCDATA OCCURS 100.
       INCLUDE STRUCTURE BDCDATA.
DATA: END OF BDCDATA.
DATA: BEGIN OF MESSTAB OCCURS 10.
       INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF MESSTAB.
BDCDATA-PROGRAM = 'SAPMTFCA'.
BDCDATA-DYNPRO = '0100'.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
CLEAR BDCDATA.
BDCDATA-FNAM = 'SFLIGHT-CARRID'.
BDCDATA-FVAL = 'XX'.
APPEND BDCDATA.
BDCDATA-FNAM = 'SFLIGHT-CONNID'.
BDCDATA-FVAL = '0400'.
APPEND BDCDATA.
CALL TRANSACTION 'TFCA' USING BDCDATA MODE 'N'
                  MESSAGES INTO MESSTAB.
LOOP AT MESSTAB.
   WRITE: / MESSTAB-TCODE,
          MESSTAB-DYNAME,
          MESSTAB-DYNUMB,
          MESSTAB-MSGTYP,
          MESSTAB-MSGSPRA,
          MESSTAB-MSGID,
          MESSTAB-MSGNR.
ENDLOOP.
Über den Erfolg der Verarbeitung der gerufenen Transaktion gibt der Returncode Auskunft. Die folgende Übersicht zeigt  die Rückgabecodes von CALL TRANSACTION USING sowie die Systemfelder, die Informationen der aufgerufenen Transaktion enthalten. Wie die Abbildung zeigt, sind Rückgabecodes ab 1000 für die Datenübernahme reserviert. Wenn Sie die Option MESSAGES INTO <Tabelle> verwenden, müssen Sie die unten gezeigten Systemfelder nicht abfragen; ihr Inhalt wird automatisch in die Tabelle geschrieben (siehe obiges Beispiel).

Returncodes:

Wert

Bedeutung

          0

erfolgreich

<=1000

Fehler im Dialogprogramm

> 1000

Batch-Input-Fehler

 

Systemfelder:

Name:

Bedeutung:

SY-MSGID

Message-ID

SY-MSGTY

Message-Typ (E,I,W,S,A,X)

SY-MSGNO

Message-Nummer

SY-MSGV1

Message-Variable 1

SY-MSGV2

Message-Variable 2

SY-MSGV3

Message-Variable 3

SY-MSGV4

Message-Variable 4

  

Fehleranalyse und Neustart

Im Gegensatz zur Batch-Input-Methode mit Mappen bietet CALL TRANSACTION USING keine besonderen Verarbeitungsverfahren für fehlerhafte Transaktionen. Es gibt keine Neustartfunktion für Transaktionen, die Fehler enthalten oder Verbuchungsabbrüche verursachen.

Fehlerhafte Transaktionen können Sie verarbeiten, indem Sie die synchrone Verbuchung (Verbuchungsmodus S) verwenden und die Rückgabecodes von CALL TRANSACTION USING überprüfen. Ist der Rückgabecode nicht 0, gehen Sie folgendermaßen vor: