Ansicht
Dokumentation

ABAPCALL_FUNCTION_DESTINATION_PARA - CALL FUNCTION DESTINATION PARA

ABAPCALL_FUNCTION_DESTINATION_PARA - CALL FUNCTION DESTINATION PARA

ROGBILLS - Synchronize billing plans   TXBHW - Original Tax Base Amount in Local Currency  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

CALL FUNCTION DESTINATION, parameter_list

Kurzreferenz



... ${ $[EXPORTING  p1 = a1 p2 = a2 ...$]
      $[IMPORTING  p1 = a1 p2 = a2 ...$]
      $[TABLES     t1 = itab1 t2 = itab2 ...$]
      $[CHANGING   p1 = a1 p2 = a2 ...$]
      $[EXCEPTIONS $[exc1 = n1 exc2 = n2 ...$]
                  $[system_failure        = ns $[MESSAGE smess$]$]
                  $[communication_failure = nc $[MESSAGE cmess$]$]
                  $[OTHERS = n_others$]$] $}
  $| ${ $[PARAMETER-TABLE ptab$]
      $[EXCEPTION-TABLE etab$] $} ...

Zusätze:

1. EXPORTING  p1 = a1 p2 = a2 ...

2. IMPORTING  p1 = a1 p2 = a2 ...

3. TABLES     t1 = itab1 t2 = itab2 ...

4. CHANGING   p1 = a1 p2 = a2 ...

5. EXCEPTIONS exc1 = n1 exc2 = n2 ... $[MESSAGE ...$]

6. PARAMETER-TABLE ptab

7. EXCEPTION-TABLE etab

Wirkung

Parameterübergabe für sRFC. Mit diesen Zusätzen werden den Formalparametern des synchron aufgerufenen entfernten Funktionsbausteins Aktualparameter und nicht-klassenbasierten Ausnahmen Rückgabewerte zugeordnet. Die Zusätze haben im Wesentlichen dieselbe Bedeutung wie beim generellen Funktionsbausteinaufruf.

Beim RFC gilt jedoch im Unterschied zum generellen Funktionsbausteinaufruf:

  • Die Anbindung eines Aktualparameters an falsch angegebene Formalparameter wird prinzipiell ignoriert.
  • Die Typisierung wird nicht überprüft. Der Inhalt eines Aktualparameters wird im remote aufgerufenen Funktionsbaustein behandelt und falls möglich auf den Typ des Formalparameters gecasted. Dabei gelten Regeln die von der Typisierung und dem verwendeten RFC-Protokoll abhängen. Für mehr Informationen siehe die Dokumentation RFC im SAP Help Portal.
  • Jeder Formalparameter wird implizit wie ein optionaler Parameter behandelt. Jeder Eingabe- oder Ein-/Ausgabeparameter, dem kein Aktualparameter zugeordnet ist, erhält entweder seinen typabhängigen Initialwert oder einen explizit bei der Definition angegebenen Vorschlagswert.

Im Folgenden sind noch einige spezifische Unterschiede für die einzelnen Zusätze beschrieben.

Hinweise

  • Wenn ein remote-fähiger Funktionsbaustein nicht über die RFC-Schnittstelle aufgerufen wird, verhält sich die Parameterübergabe wie beim generellen Funktionsbausteinaufruf und es kommt bei falschen Formalparametern und unpassenden Aktualparametern zu den entsprechenden Ausnahmen.
  • Die erweiterte Programmprüfung überprüft falls möglich die Parameterübergabe und meldet falsche Formalparameter und unpassende Aktualparameter als Fehler.

Zusatz 1

EXPORTING  p1 = a1 p2 = a2 ...

Zusatz 2

IMPORTING  p1 = a1 p2 = a2 ...

Wirkung

Bezüglich der Zusätze EXPORTING und IMPORTING gelten folgende Unterschiede:

  • Bei zeichenartigen Formalparametern kann der Aktualparameter eine andere Länge als der Formalparameter haben. Ein kürzerer Aktualparameter wird im gerufenen Funktionsbaustein bei der Eingabe rechts mit Leerzeichen aufgefüllt und bei der Ausgabe rechts abgeschnitten. Bei einem längeren Aktualparameter ist es umgekehrt.
  • Referenzvariablen dürfen weder direkt noch als Komponenten von tiefen Strukturen übergeben werden. Die Übergabe von Tabellen mit tiefen Zeilentypen, Strukturen und Strings sind dagegen wie beim generellen Funktionsbausteinaufruf erlaubt.
  • Bei der Übergabe von internen Tabellen mit nicht-eindeutigen Tabellenschlüsseln bleibt die Reihenfolge der duplikativen Zeilen bezüglich dieser Schlüssel nicht erhalten.

Zusatz 3

TABLES  t1 = itab1 t2 = itab2 ...

Wirkung

Bei TABLES zur Übergabe an Tabellenparameter gibt es den Unterschied, dass nur Tabellen mit flachen Zeilentypen und ohne sekundäre Tabellenschlüssel übergeben werden können und dass eventuell vorhandene Kopfzeilen nicht übergeben werden .

Hinweise

  • Solange nicht basXML als RFC-Protokoll eingestellt ist, wird für TABLES-Parameter implizit das klassische binäre RFC-Protokoll verwendet und nicht das XML-Format xRFC, das ansonsten für tiefe Typen verwendet wird. Die Übergabe interner Tabellen über TABLES-Parameter kann in diesem Fall und in Abhängigkeit von den übergebenen Daten daher erheblich schneller sein als bei der Übergabe über andere Parameter.
  • Inzwischen wird basXML als einheitliches Format für alle Arten der RFC-Kommunikation empfohlen. Das binäre RFC-Protokoll ist derzeit noch performanter als basXML, was sich in Zukunft aber ändern wird. Der Zusatz TABLES ist damit nur noch für RFMs notwendig, die momentan sehr kritisch bezüglich der Performance sind.

Zusatz 4

CHANGING   p1 = a1 p2 = a2 ...

Wirkung

Bezüglich des Zusatzes CHANGING gelten die gleichen Unterschiede wie bei den Zusätzen EXPORTING und IMPORTING.

Zusatz 5

EXCEPTIONS exc1 = n1 exc2 = n2 ... $[MESSAGE ...$]

Wirkung

Mit dem Zusatz EXCEPTIONS wird eine klassische nicht-klassenbasierte Ausnahmebehandlung durchgeführt, die im Wesentlichen wie beim allgemeinen Funktionsbausteinaufruf funktioniert. Zusätzlich können hier aber die speziellen Ausnahmen SYSTEM_FAILURE und COMMUNICATION_FAILURE angegeben werden, um die von der RFC-Schnittstelle selbst ausgelösten Ausnahmen zu behandeln.

Hinter der Angabe dieser Ausnahmen kann zusätzlich ein optionaler Zusatz MESSAGE angegeben werden. Tritt eine der speziellen klassischen Ausnahmen system_failure oder communication_failure auf, wird die erste Zeile des zugehörigen Kurzdumps in das Feld smess bzw. cmess gestellt, das flach und zeichenartig sein muss.

Wenn ein remote aufgerufener Funktionsbaustein während der nicht-klassenbasierten Ausnahmebehandlung eine klassenbasierte Ausnahme auslöst, wird diese nicht transportiert, sondern führt zur vordefinierten klassischen Ausnahme SYSTEM_FAILURE.

Hinweise

  • Die Angabe von error_message nach EXCEPTIONS wird in RFC ignoriert.
  • Wenn die klassische Ausnahme SYSTEM_FAILURE durch das Senden einer Nachricht vom Typ A, E oder X ausgelöst wird, enthält das Feld smess bei Angabe von MESSAGE den Kurztext der Nachricht.
  • Die klassenbasierte Ausnahmebehandlung beim RFC ist in der aktuellen Release-Schiene nicht möglich.

Zusatz 6

PARAMETER-TABLE ptab

Zusatz 7

EXCEPTION-TABLE etab

Wirkung

Diese Zusätze ordnen mit Hilfe spezieller interner Tabellen ptab und etab den Formalparametern des Funktionsbausteins Aktualparameter und den nicht-klassenbasierten Ausnahmen Rückgabewerte dynamisch zu.

Die Beschreibung und Verwendung der internen Tabellen ist die gleiche wie beim allgemeinen Aufruf von Funktionsbausteinen, es gelten jedoch die oben beschriebenen RFC-spezifischen Regeln für die statische Parameterübergabe.

Weiterhin kann die Spalte message vom Typ REF TO data der Ausnahmetabelle etab als Zeiger auf ein zeichenartiges Feld für die speziellen Ausnahmen system_failure oder communication_failure verwendet werden. Tritt eine solche Ausnahme auf, wird das zeichenartige Feld mit dem gleichen Inhalt gefüllt wie die Angabe smess oder cmess hinter MESSAGE bei der statischen Parameterübergabe.

Hinweise

  • Die Spalte message der Ausnahmetabelle etab wird nicht für allgemeine Funktionsaufrufe verwendet.
  • Das zeichenartige Feld, auf das sich die Spalte message bezieht, kann hier auch vom Typ string sein.

RFC - Dynamische Parameterübergabe in sRFC






Addresses (Business Address Services)   RFUMSV00 - Advance Return for Tax on Sales/Purchases  
Diese Dokumentation steht unter dem Copyright der SAP AG.

Length: 13679 Date: 20240426 Time: 222931     sap01-206 ( 168 ms )