W Pub: ABAP Cursosentenciadata

<html>

<head>

<title>DATA</title>

</head>

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

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

<p align="left">⚠ &lt;b&gt;Definicin⚠ &lt;/b&gt;</p>

<p align="left">Declaracin de objetos de datos.</p>

<p align="left">⚠ &lt;b&gt;Sintaxis:⚠ &lt;/b&gt;</p>

<pre>DATA <campo> [ (<longitud>)] <tipo> [ <valor> ] [ <decimales> ]</pre>

<p>Variante utilizada para declarar variables. El nombre de la

  variable <campo> no debe tener ms de 30 caracteres. Se puede utilizar 
  cualquier carcter a excepcin de: "+", ".", ",", 
  ":", "(" y ")". Adems el nombre no puede estar 
  slo compuesto de dgitos numricos, ni coincidir con los objetos de datos predefinidos, 
  ni con las palabras reservadas. Veamos algunas recomendaciones:</p>

<ul>

  <li>Utilizar nombres significativos, que no requieran el uso 
    de comentarios.</li>
  <li>No utilizar el "guin" ya que podramos confundir 
    la variable con un field-string.</li>
  <li>Utilizar el "gui bajo" para nombres especiales.</li>
  <li>No utilizar los caracteres especiales. Utilizar siempre 
    una letra como primer carcter del nombre.</li>

</ul>

<p>Con la opcin <tipo> se especifica el tipo de variable.

  Tenemos dos opciones:</p>

<ol>

  <li>⚠ &lt;a href="types.htm"&gt;TYPE⚠ &lt;/a&gt; <tipo></li>
  <li>LIKE <objeto-dato></li>

</ol>

<ul>

  <li>Con la clusula ⚠ &lt;a href="types.htm"&gt;TYPE⚠ &lt;/a&gt; se puede utilizar cualquier tipo de 
    datos, predefinido o definido por el usuario. Para algunos tipos de datos 
    (C, P, N, y X) se puede definir la longitud con la clusula <longitud>. 
    Si no se especifica longitud, estos tipos tienen una longitud por defecto. 
    Si no se especifica la clusula <tipo> el sistema utiliza el tipo alfanumrico 
    C.</li>
  <li>Con la clusula LIKE asignamos el tipo de dato de forma 
    indirecta, con el tipo de dato del objeto de dato especificado. El objeto 
    de dato debe estar ya declarado, y puede ser de cualquier tipo. A menudo se 
    utiliza esta clusula para crear variables que almacenarn datos de tablas 
    externas. Si se modifican las caractersticas del campos de la tabla externa, 
    de forma automtica, se cambian los atributos de la variable.</li>
  <li>Una variante para las clusulas TYPE y LIKE es la siguiente: 
    TYPE LINE OF <tabla-intera> y LIKE LINE OF <tabla-interna>. Con 
    esta variante creamos un objeto de dato con la estructura de lnea de la tabla 
    interna.</li>

</ul>

<p>Con la opcin <calor> se asigna un valor a la variable,

  distinto al valor inicial. El formato es el siguiente: VALUE <valor>. 
  <valor> puede ser un literal, una constante o IS INITIAL.</p>

<p>Con la opcin <decimales> se puede especificar el nmero

  de decimales para los campos de tipo P. El formato es el siguiente: DECIMALS 
  <num>, siendo <num> el nmero de dgitos despus del punto decimal. 
  El nmero mximo de decimales es de 14.</p>

<pre>DATA: BEGIN OF <registro>,

           ....
      END OF <registro>.</pre>

<p>Variante utilizada para declarar registros o ⚠ &lt;i&gt;field-strings⚠ &lt;/i&gt;.

  Para declarar un ⚠ &lt;i&gt;field-strings⚠ &lt;/i&gt; se utiliza la sentencia DATA y ser marca 
  el principio y el final de la agrupacin con las clusulas BEGIN OF y END OF. 
  La opcin <registro> da nombre al ⚠ &lt;i&gt;field-string⚠ &lt;/i&gt;.</p>

<pre>DATA <tabla> <tipo> [ WITH HEADER LINE ].</pre>

<p>Variante utiliza para declarar tablas internas.</p>

<ul>

  <li>En la opcin <tipo> se puede referenciar un tipo de 
    dato de tabla interna con la clusula ⚠ &lt;a href="types.htm"&gt;TYPE⚠ &lt;/a&gt; o una tabla interna con la clusula 
    LIKE. El objeto de dato <tabla> ser creado con la misma estructura 
    que la referenciada en <tipo>.</li>
  <li>Si utilizamos la clusula WITH HEADER LINE la tabla interna 
    se crea con el rea de trabajo <tabla>. El rea de trabajo y la tabla 
    interna tienen el mismo nombre. En funcin de la sentencia que estemos utilizando, 
    el sistema sabe si queremos emplear el rea de trabajo o la tabla.</li>

</ul>

<pre>DATA <tabla> <tipo> OCCURS <n> [ WITH HEADER LINE ].</pre>

<p>Esta sentencia crea la tabla interna <tabla> por el uso

  de la clusula OCCURS. en la opcin <tipo> se especifica una estructura. 
  Las lneas de la tabla interna tendrn la estructura referenciada en <tipo>. 
  <n> tiene el mismo significado que para los tipos de datos de tablas internas, 
  visto en la sentencia ⚠ &lt;a href="types.htm"&gt;types⚠ &lt;/a&gt;.</p>

<ul>

  <li>Si utilizamos la clusula WITH HEADER LINE la tabla se crea 
    con el rea de trabajo <tabla>.</li>

</ul>

<pre>DATA: BEGIN OF <tabla> OCCURS <n>,

           ....
      END OF <tabla>.</pre>

<ul>

  <li>Con esta sentencia definimos la tabla interna <tabla>. 
    Los componentes de la lnea de la tabla interna se definen entre las clusula 
    BEGIN OF y END OF.</li>
  <li>A excepcin de la clusula OCCURS, el resto de la sintaxis 
    es igual a la definicin de un field-string, visto anteriormente. Esta sentencia 
    siempre crea un rea de trabajo. <n> tiene el mismo significado que 
    el visto anteriormente.</li>

</ul>

<p>⚠ &lt;b&gt;Ejemplo:⚠ &lt;/b&gt;</p>

<pre>DATA: BEGIN OF PERSON_TYPE,

         NAME(20),
         AGE TYPE I,
       END OF PERSON_TYPE,
      PERSONS LIKE PERSON_TYPE OCCURS 20 WITH HEADER LINE.
      PERSONS    TYPE LINE_TYPE OCCURS 20,
      PERSONS_WA TYPE LINE_TYPE.</pre>

<pre>DATA TAB TYP TYPE I OCCURS 10.

DATA TAB_WA TYPE LINE OF TAB.

DATA NUMBER TYPE I VALUE 123,

     FLAG                      VALUE 'X',
     TABLE_INDEX LIKE SY-TABIX VALUE 45.</pre>

<p>⚠ &lt;b&gt;Tipo de datos predefinido:⚠ &lt;/b&gt;</p>

<table border="1">

  <tbody> 
  <tr> 
    <th>Tipo</th>
    <th>Descripcin
    <th>Lo</th>
    <th>Valor inicial</th>
  <tr> 
    <td>C</td>
    <td>Texto (carcter)</td>
    <td><1</td>
    <td>Blanco</td>
  <tr> 
    <td>N</td>
    <td>Texto numrico</td>
    <td><1</td>
    <td><'00...0'</td>
  <tr> 
    <td>D</td>
    <td>Fecha (YYYYMMDD)</td>
    <td><8</td>
    <td><'00000000'</td>
  <tr> 
    <td>T</td>
    <td>Hora (HHMMSS)</td>
    <td><6</td>
    <td><'000000'</td>
  <tr> 
    <td>X</td>
    <td>Hexadecimal</td>
    <td>1</td>
    <td>X'00'>/td> 
  <tr> 
    <td>I</td>
    <td>Entero</td>
    <td><4</td>
    <td><0</td>
  <tr> 
    <td>P</td>
    <td>Numero empaquetado</td>
    <td>8</td>
    <td>0</td>
  <tr> 
    <td>F</td>
    <td>Nmero punto flotante>/td> 
    <td>8</td>
    <td>'0.0'</td>
  </tbody> 

</table>

<span><br>

⚠ &lt;b&gt;Vease tambin: ⚠ &lt;/b&gt;⚠ &lt;a href="include_structure.htm" tppabs="http://www.gaussr3.com/abap4/sentencias/include_structure.htm"&gt;INCLUDE STRUCTURE⚠ &lt;/a&gt;. </span>

</body>

</html>