<html>
<head> <title>CALL FUNCTION</title> </head> <BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000"> <p align="left">⚠ <b>
<span class="titulo">CALL FUNCTION </span>⚠ </b>
</p>
<p align="left">⚠ <b>
Definicin⚠ </b>
</p>
<p align="left">La sentencia CALL FUNCTION se utiliza para llamar
a un mdulo de funcin. Esta sentencia tiene varias variantes en funcin de la tarea de trabajo que procesa el mdulo de funcin.</p>
<p align="left">⚠ <b>
Sintaxis:⚠ </b>
</p>
[ EXPORTING <p1> = <f1> ... <pn> = <fn> ] [ IMPORTING <p1> = <f1> ... <pn> = <fn> ] [ TABLES <p1> = <tabla1> ... <pn> = <tablan> ] [ CHANGING <p1> = <f1> ... <pn> = <fn> ] [ EXCEPTIONS <p1> = <exc1l> ... <pn> = <excn> [ OTHERS = <nn>] ].</pre>
<p align="left">Llamada bsica a un mdulo de funcin. Llama al
mdulo de funcin <funcin>. <funcin puede ser un literal o una variable. La asignacin de los nombre entre el programa y el mdulo de funcin se realiza por el nombre, no por la secuencia de los parmetros.</p>
<ul>
<li> <p align="left">Con la clusula EXPORTING se puede pasar campos, field-strings o tablas al mdulo de funcin. Estos parmetros se deben declarar en el mdulo de funcin como parmetros IMPORT. Cuando se realiza la llamada debemos asignar valores a todos los parmetros que no se les haya definido un valor por defecto. </li> <li> <p align="left">La clusula IMPORTING se utiliza para que el mdulo de funcin devuelva al programa valores en campos, field-strings o tablas internas. Estos parmetros deben estar declarados como tablas en el mdulo de funcin. Cuando llamamos al mdulo de funcin debemos indicar todas las tablas a las que no se les haya asignado una tabla por defecto. </li> <li> <p align="left">Con la clusula CHANGING se puede pasar valores en campos. field-strings o tablas internas al mdulo de funcin, que podrn ser modificados en el mdulo de funcin y devueltos al programa. </li> <li> <p align="left">Con la clusula EXCEPTIONS especificamos las excepciones que queremos considerar en la llamada al mdulo. Las excepciones se activan con las sentencias RAISE y⚠ <a href="message.htm" tppabs="message.htm">
MESSAGE⚠ </a>
(con la clusula RAISING). </li>
</ul>
<p align="left">Una llamada a un mdulo de funcin puede generarlos siguientes mensajes de error:</p>
<ul>
<li> <p align="left">CALL_FUNCTION_NOT_FOUND -> Mdulo de funcin desconocido. </li> <li> <p align="left">CALL_FUNCTION_NO_VB -> Slo mdulos de funcin de actualizacin pueden ser llamados desde la tarea de actualizacin. </li> <li> <p align="left">CALL_FUNCTION_NO_ACTIVE -> Mdulo de funcin creado pero no activo. </li> <li> <p align="left">CALL_FUNCTION_PARM_MISSING -> El mdulo de funcin espera un parmetro que no ha sido utilizado en la llamada. </li> <li> <p align="left">CALL_FUNCTION_CONFLICT_LENG -> Parmetro con longitud errnea. </li> <li> <p align="left">CALL_FUNCTION_CONFLICT_TYPE -> Parmetro con tipo errneo. </li> <li> <p align="left">CALL_FUNCTION_CONFILCT_GEN_TYPE -> El tipo de parmetro actual no satisface los requerimientos del parmetro definido en el mdulo de funcin. </li> <li> <p align="left">CALL_FUNCTION_WRONG_ALIGNMENT -> El parmetro actual no satisface los requerimientos del parmetro definido en el mdulo de funcin. </li> <li> <p align="left">CALL_FUNCTION_BASE_LITL -> Se ha pasado un literal en un parmetro estructurado. </li>
</ul>
<pre>CALL FUNCTION <funcin> STARTING NEW TASK <tarea>[ DESTINATION <destino> ] [ DESTINATION IN GROUP { <grupo> | DEFAULT } ] [ PERFORMING <rutina> ON END OF TASK ] [ EXPORTING <p1> = <f1> ... <pn> = <fn> ] [ TABLES <p1> = <tabla1> ... <pn> = <tablan> ] [ EXCEPTIONS <p1> = <e1> MESSAGE <m1> ... <pn> = <en> MESSAGE <mm> ].</pre>
<p>El sistema arranca el mdulo de funcin asncronamente en un
nuevo modo. En contraste con el formato bsico, esta variante hace que el sistema continu con la ejecucin del programa aunque el mdulo de funcin no haya terminado. Las clusula opcionales son las siguientes:</p>
<ul>
<li>Con la clusula DESTINATION el mdulo de funcin se ejecuta externamente como una "Remote Function Call" (RFC). <destino> puede ser una variable o un literal.</li> <li>Con la clusula DESTINATION IN GROUP el mdulo de funcin se ejecuta en todos los servidores definidos en un grupo. Los mdulos de funcin se ejecutarn en paralelo.</li> <li>La clusula PERFORMING nos permite controlar los errores que se puedan producir en la ejecucin del mdulo de funcin. <rutina> determina la rutina a ejecutar.</li> <li>La clusula EXPORTING se utiliza para pasar parmetros al mdulo de funcin, de la misma forma que en la variante 1.</li> <li>La clusula TABLES se utiliza para pasar tablas internas al mdulo de funcin, de la misma forma que en la variante 1.</li> <li>La clusula EXCEPTIONS nos permite manejar dos excepciones del sistema (en ambos casos se puede utilizar la opcin⚠ <a href="message.htm" tppabs="message.htm">
MESSAGE⚠ </a>
para activar un mensaje):</li>
</ul>
<blockquote><ol> <li>SYSTEM_FAILURE -> Si el sistema destino no funciona.</li> <li>COMMUNICATION_FAILURE -> Si no se puede conectarnos o comunicarnos con el sistema destino.</li> </ol>
</blockquote>
<p>Para poder utilizar esta variante de la sentencia⚠ <a href="call_function.htm" tppabs="call_function.htm">
CALL
FUNCTION⚠ </a>
, tanto el sistema servidor como el sistema cliente deben estar
en versin 3.0 o superior.</p>
<pre>CALL FUNCTION <funcin> IN UPDATE TASK
[ EXPORTING <p1> = <f1> ... <pn> = <fn> ] [ TABLES <p1> = <tabla1> ... <pn> = <tablan> ] </pre>
<p>Con esta variante el mdulo de funcin se ejecutar en la tarea
de actualizacin. La ejecucin no es inmediata, los parmetros traspasados con las clusulas EXPORTING y TABLES se almacenan en la base de datos. En el siguiente⚠ <a href="commit_work.htm" tppabs="commit_work.htm">
COMMIT WORK⚠ </a>
causa que el mdulo de funcin se ejecute en la tarea de actualizacin. Las clusulas EXPORTING y TABLES tienen el mismo significado que en la variante 1.</p>
<pre>CALL FUNCTION <funcin> DESTINATION <destino>
[ EXPORTING <p1> = <f1> ... <pn> = <fn> ] [ IMPORTING <p1> = <f1> ... <pn> = <fn> ] [ TABLES <p1> = <tabla1> ... <pn> = <tablan> ] [ CHANGING <p1> = <f1> ... <pn> = <fn> ] [ EXCEPTIONS <p1> = <exc1l> ... <pn> = <excn> [ OTHERS = <nn>] ].</pre>
<p>El mdulo de funcin se ejcuta desde una fuente externa, a
travs de una llamada "Remote Function Call" (RFC). <destino> puede ser un literal o una variable. Dependiendo del destino especificado el mdulo de funcin podr ser ejecutado en un sistema R/3 o un sistema R/2. <destino> es una clave que permite al sistema saber qu sistema remoto estamos asignado. Los destinos se definen en la transaccin SM59. La forma de llegar a travs de los mens es la siguiente: (Pantalla inicial de SAP)⚠ <i>
->⚠ </i>
⚠ <i>
Herramientas -> Gestin; Gestin -> Red Destinos RFC⚠ </i>
.</p>
<p>Hay ciertos destinos que tienen un significado especial:</p>
<p>NONE -> Este destino apunta al propio sistema donde se realizala llamada al mdulo de funcin.</p>
<p>BACK -> Este destino fuerza a que el programa que realiza
la llamada al mdulo de funcin tenga que ser llamado desde un sistema diferente. Si el programa se ejecuta desde el mismo sistema se produce la excepcin COMMUNICATION_FAILURE.</p>
<p>Las clusulas opcionales tienen el mismo significado que el
de la variante 1 (llamada bsica).</p>
<pre>CALL FUNCTION <funcin> IN BACKGROUND TASK
[ AS SEPARATE UNIT ] [ DESTINATION <destino> ] [ EXPORTING <p1> = <f1> ... <pn> = <fn> ] [ TABLES <p1> = <tabla1> ... <pn> = <tablan> ]
</pre>
<p>Llamada al mdulo de funcin de modo asncrono. Con la clusulaAS SEPARATE UNIT el mdulo de funcin se ejecuta en una nueva LUW. El resto de las clusulas ya han sido comentadas anteriormente.</p>
<p>⚠ <b>
Vease tambin:⚠ </b>
⚠ <a href="call_dialog.htm" tppabs="call_dialog.htm">
CALL DIALOG⚠ </a>
,
⚠ <a href="call_customer_function.htm" tppabs="call_customer_function.htm">
CALL CUSTOMER-FUNCTION⚠ </a>
,⚠ <a href="call.htm" tppabs="call.htm">
CALL⚠ </a>
.</p>
</body>
</html>