lunes, 8 de diciembre de 2014

Introducción ABAP. Instrucciones básicas

Continuamos en este post con la introducción a ABAP. En este caso vamos a comentar las instrucciones mas básicas que podemos realizar.

Asignación

Existen varias formas de asignar a una variable:

-Asignación directa:  <variable> =  valor.
 El valor se puede especificar como un literal, el contenido de una constante  o el contenido de una variable.

-Sentencia MOVE: Asigna un valor a una variable.

             MOVE   <valor>   TO   <variable>.

-Sentencia MOVE-CORRESPONDING: Mueve el contenido de los campos de una estructura a los campos que tengan el mismo nombre de otra estructura.

           MOVE-CORRESPONDING <origen> TO <destino>.

-Sentencia CLEAR: Inicializa el contenido de un campo a su valor inicial según el tipo de dato.

            CLEAR  <campo>.

-OFFSETS:  Se puede hacer referencia parcial a una parte de un campo, indicando el número de posiciones que hay hasta la posición en la que se comienza a referenciar utilizando + y la cantidad de posiciones que se referencia entre paréntesis.

      MOVE <campo1> + <posiciones>(longitud) TO <campo2>.

 Ejemplo: DATA: d_dato1(8) TYPE c VALUE ‘ABCDEF’,
                              d_dato2(4) TYPE c.

                
                d_dato2 = d_dato1+2(4).
   Ahora   d_dato2 = ‘CDEF’.

Condicionales

Operadores condicionales.

 Igual:            <valor1>  EQ    <valor2>
                           <valor1>   =      <valor2>
 No igual:       <valor1>  NE    <valor2>
                           <valor1>   <>    <valor2>
 Mayor:          <valor1>   GT    <valor2>
                           <valor1>     >     <valor2>
 Menor:          <valor1>   LT     <valor2>
                            <valor1>   <      <valor2>
 Mayor o igual:       <valor1>  GE    <valor2>
                                    <valor1>   >=   <valor2>
 Menor o igual:       <valor1>  LE    <valor2>
                                    <valor1>   <=   <valor2>
 <valor1> BETWEEN <valor2> AND <valor3>.
 <valor1> IS INITIAL.    Si tiene el valor inicial.
 <valor> IN <rango>.    Si <valor> tiene un valor comprendido en el rango <rango>

Operadores lógicos.

<condicion1>   AND <condicion2>
< condicion1>   OR   <condicion2>
NOT <condición>.

Sentencias IF <condición> ..... ENDIF.

      Ejemplo:  IF NOT d_dato IS INITIAL.
                               WRITE  d_dato.
                       ENDIF.


 Escribe por pantalla el valor introducido en d_dato si se recibe un valor distinto del inicial.

Sentencias CASE <variable>.......ENDCASE.

Permiten ejecutar diferentes grupos de sentencias en función del valor contenido en <variable>, delimitando las sentencias con la cláusula WHEN <valor>.
El valor OTHERS comprende todos los valores que no hayan sido especificados en las anteriores cláusulas WHEN.

Ejemplo:   CONSTANTS: c_centrado TYPE c VALUE ‘c’,
                                          c_izquierda TYPE c VALUE ‘i’,
                                          c_derecha    TYPE c VALUE ‘d’.
                  DATA: d_alineación TYPE c,
                               d_texto(100) TYPE c.
                  CASE d_alineación.
                        WHEN c_centrado.
                               WRITE  d_texto CENTERED. 
                         WHEN c_izquierda.
                                WRITE d_texto LEFT-JUSTIFIED.
                         WHEN c_derecha.
                                WRITE d_texto RIGHT-JUSTIFIED.
                         WHEN OTHERS.
                                WRITE d_texto.
                  ENDCASE.


Operadores condicionales para cadenas de texto.

<cadena1>  CO   <cadena2>  Si todos los caracteres, incluidos los espacios de 1, están en 2.
Si la condición es cierta, la variable SY-FDPOS contendrá la longitud de <cadena1>, sino, contiene el OFFSET del primer carácter de <cadena1> que no existe en <cadena2>.
<cadena1>  CN   <cadena2>  Si existe algún carácter en 1 que no está en 2, incluido espacios.
Si la condición es cierta, la variable SY-FDPOS contendrá el OFFSET del primer carácter de <cadena1> que no existe en <cadena2>, sino, contiene la longitud de <cadena1>.
<cadena1>  CA   <cadena2>  Si alguno de 1 incluido espacios, está en <cadena2>.
Si la condición es cierta, la variable SY-FDPOS contendrá el OFFSET del primer carácter de <cadena1> que existe en <cadena2>, sino, contiene la longitud de <cadena1>.
<cadena1>  NA   <cadena2>  Si ninguno de los caracteres de <cadena1>, está en <cadena2>.
Si la condición es cierta, la variable SY-FDPOS contendrá la longitud de <cadena1>, sino, contendrá el OFFSET del primer carácter de <cadena1> que existe en <cadena2>.
<cadena1>  CS   <cadena2>  La condición se cumple si  <cadena1> contiene a  <cadena2>.
Si la condición es cierta, la variable SY-FDPOS contendrá el OFFSET del primer carácter de <cadena2> que existe en <cadena1>, sino, contiene la longitud de <cadena1>.
<cadena1>  NS   <cadena2>.  La condición se cumple si  <cadena1> no contiene a  <cadena2>.
Si la condición es cierta, la variable SY-FDPOS contendrá la longitud de <cadena1>, sino, contendrá el OFFSET del primer carácter de <cadena2> que existe en <cadena1>.
<cadena>  CP   <patrón>.  La condición se cumple si  <cadena> contiene el patrón de búsqueda <patrón>. Este patrón permite utilizar el carácter * para representar cualquier cadena de caracteres y + para representar cualquier carácter.
Si la condición es cierta, la variable SY-FDPOS contendrá el OFFSET del primer carácter de <patrón> que existe en <cadena>, sino, contiene la longitud de <cadena>.
Ejemplo:  La condición ‘Jose Luis Diaz’ CP ‘Jose*Diaz’ es verdadera y devuelve 0 en SY-FDPOS. La condición ‘JoseLuisDiaz’CP ‘Jose+Luis’ es falsa y devuelve 12 en SY-FDPOS.
<cadena>  NP   <patrón>.  La condición se cumple si  <cadena> no contiene el patrón de búsqueda <patrón>.
Si la condición es cierta, la variable SY-FDPOS contendrá la longitud de <cadena>, sino, contendrá el OFFSET del primer carácter de <patrón> que existe en <cadena>.


No hay comentarios:

Publicar un comentario

Integración SAP

Cuando hablamos de SAP como sistema integrado que cubre toda la casuística de nuestro negocio estamos siendo bastante osados. Casi cualquier...