ABAP Cursosentenciaformendform
<html>
<head> <title>FORM .. ENDFORM</title> </head> <BODY BGCOLOR="#000000" TEXT="#FFFFFF" LINK="#0099FF" VLINK="#AA0000"> <p align="left">⚠ <b><span class="titulo">FORM .. ENDFORM</span>⚠ </b></p>
<p align="left">⚠ <b>Definicin⚠ </b></p>
<p align="left">Esta sentencia permite definir subrutinas.</p>
<p align="left">⚠ <b>Sintaxis:⚠ </b></p>
<pre>FORM <subrutina> [ TABLES <parmetros-formales> ]
[ USING <parmetros-formales> ]
[ CHANGING <parmetros-formales> ]</pre>
<p><subrutina> define el nombre de la subrutina. Con TABLES,
USING y CHANGING definimos los parmetros formales de la subrutina. Para las subrutina internas nos es definir parmetros ya que la subrutina tiene acceso a todos los objetos de datos declarados en el programa principal. Para las subrutinas externas se puede elegir pasar los objetos de datos mediante parmetros o utilizar memoria compartida entre el programa que llama a la subrutina y la subrutina (sentencia COMMON PART).</p>
<p>⚠ <b>Ejemplo 1:⚠ </b></p>
FORM WELCOME.
WRITE / 'Hola mundo'.
ENDFORM.</pre>
<p><br>⚠ <b>Ejemplo 2:⚠ </b></p>
<pre>DATA: BEGIN OF X.
INCLUDE STRUCTURE SFLIGHT.
DATA: ADDITION(8) TYPE C,
END OF X.
...
PERFORM U USING X. ... FORM U USING X STRUCTURE SFLIGHT.WRITE: X-FLDATE.
ENDFORM.</pre>
<p>⚠ <b>Ejemplo 3:⚠ </b><br>
</p>
<pre>TYPES: BEGIN OF FLIGHT_STRUC,
FLCARRID LIKE SFLIGHT-CARRID,
PRICE LIKE SFLIGHT-FLDATE,
END OF FLIGHT_STRUC.</pre>
<pre>DATA: MY_FLIGHT TYPE FLIGHT_STRUC OCCURS 0 WITH HEADER LINE,
IBOOK1 LIKE SBOOK OCCURS 0 WITH HEADER LINE,
IBOOK2 LIKE IBOOK1 OCCURS 0,
STRUC LIKE SBOOK.</pre>
<pre>PERFORM DISPLAY TABLES MY_FLIGHT IBOOK1 IBOOK2 USING STRUC.</pre>
<pre>FORM DISPLAY TABLES P_ITAB LIKE MY_FLIGHT[] P_BOOK1 LIKE IBOOK1[]
P_BOOK2 LIKE IBOOK2[]
USING P_STRU LIKE STRUC.
DATA L_CARRID LIKE P_ITAB-FLCARRID.
...
WRITE: / P_STRU-CARRID, P_STRU-CONNID.
...
LOOP AT P_ITAB WHERE FLCARRID = L_CARRID.
...
ENDLOOP.
...
ENDFORM.</pre>
<p>⚠ <b>Ejemplo 4:⚠ </b></p>
<pre>DATA: NUMBER_1 TYPE I VALUE 1,
NUMBER_2 TYPE I VALUE 2,
TEXT_1(10) VALUE 'one',
TEXT_2(10) VALUE 'two'.</pre>
<pre>PERFORM CONFUSE USING NUMBER_1
NUMBER_2
TEXT_1
NUMBER_1
TEXT_2.</pre>
<pre>FORM CONFUSE USING PAR_NUMBER_1 TYPE I
PAR_NUMBER_2 TYPE I
PAR_TEXT_1 TYPE C
VALUE(PAR_V_NUMBER_1) TYPE I
VALUE(PAR_V_TEXT_2) TYPE C.
ADD 3 TO PAR_V_NUMBER_1.
ADD 4 TO PAR_NUMBER_1.
ADD NUMBER_1 TO PAR_NUMBER_2.
TEXT_2 = 'three'.
PAR_TEXT_1 = PAR_V_TEXT_2.
PAR_V_TEXT_2 = 'four'.
ENDFORM.
</pre> <p>El contenido de los campos despus de la llamada al⚠ <a href="perform.htm" tppabs="perform.htm">PERFORM⚠ </a>
Es:</p>
<pre>NUMBER_1 = 5
NUMBER_2 = 7 TEXT_1 = 'two' TEXT_2 = 'three' </pre> <p>⚠ <b>Vase tambin:⚠ </b> ⚠ <a href="perform.htm" tppabs="perform.htm">PERFORM⚠ </a></p>
</body>
</html>