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>
: AnzeigemodusA |
alles anzeigen |
E |
nur bei Fehlern anzeigen |
N |
nichts anzeigen |
<update>
: VerbuchungsmodusS |
synchron |
A |
asynchron |
L |
lokale Verbuchung |
Ein Programm, das mit
CALL TRANSACTION USING Fremddaten verarbeitet, sollte die folgenden Arbeitsschritte ausführen: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
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
( 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.
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: