ABAP Cursosentenciacallfunction
<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>