W Pub: ABAP Cursosentenciacallfunction

<html>

<head>

<title>CALL FUNCTION</title>

</head>

<BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000">

<p align="left">⚠ &lt;b&gt;<span class="titulo">CALL FUNCTION </span>⚠ &lt;/b&gt;</p>

<p align="left">⚠ &lt;b&gt;Definicin⚠ &lt;/b&gt;</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">⚠ &lt;b&gt;Sintaxis:⚠ &lt;/b&gt;</p>

<pre>CALL FUNCTION <funcin>

    [ 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 ⚠ &lt;a href="message.htm" tppabs="message.htm"&gt;MESSAGE⚠ &lt;/a&gt; 
      (con la clusula RAISING).
  </li>

</ul>

<p align="left">Una llamada a un mdulo de funcin puede generar

  los 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 ⚠ &lt;a href="message.htm" tppabs="message.htm"&gt;MESSAGE⚠ &lt;/a&gt; 
    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 ⚠ &lt;a href="call_function.htm" tppabs="call_function.htm"&gt;CALL

  FUNCTION⚠ &lt;/a&gt;, 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 
  ⚠ &lt;a href="commit_work.htm" tppabs="commit_work.htm"&gt;COMMIT WORK⚠ &lt;/a&gt; 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) ⚠ &lt;i&gt;->⚠ &lt;/i&gt; ⚠ &lt;i&gt;Herramientas 
  -> Gestin; Gestin -> Red Destinos RFC⚠ &lt;/i&gt;.</p>

<p>Hay ciertos destinos que tienen un significado especial:</p>

<p>NONE -> Este destino apunta al propio sistema donde se realiza

  la 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 clusula

  AS SEPARATE UNIT el mdulo de funcin se ejecuta en una nueva LUW. El resto 
  de las clusulas ya han sido comentadas anteriormente.</p>

<p>⚠ &lt;b&gt;Vease tambin:⚠ &lt;/b&gt; ⚠ &lt;a href="call_dialog.htm" tppabs="call_dialog.htm"&gt;CALL DIALOG⚠ &lt;/a&gt;,

  ⚠ &lt;a href="call_customer_function.htm" tppabs="call_customer_function.htm"&gt;CALL CUSTOMER-FUNCTION⚠ &lt;/a&gt;, ⚠ &lt;a href="call.htm" tppabs="call.htm"&gt;CALL⚠ &lt;/a&gt;.</p>

</body>

</html>