W Pub: ABAP Curso Parte 2

Parte II

Con lo aprendido en el captulo anterior ya podremos hacer ciertos programas, aunque tendr que ser muy sencillos. En este captulo vamos a ver como podemos hacer preguntas a nuestras variables y tomar decisiones dependiendo de sus valores.

Condicionales.
Para poder preguntar por los valores de las varibles, ABAP nos permite utilizar tras directivas muy parecidas entre si, pero con diferentes resultados:

Estas son las condiciones lgicas:

            = ,     EQ: Igual (EQual)
            <>, ><, NE: No Igual (Not Equal)
            > ,     GT: Mayor que (Greater Than)
            < ,     LT: Menor que (Less Than)
            >=, =>, GE: Mayor o Igual (Greater than or Equal)
            <=, =<, LE: Menor o Iguak (Less than or Equal)
                    CO: Contiene Solo (Contain Only)
                    CA: Contiene Alguno (Contain Any)
                    NA: No Contiene Alguno (Not Contain Any)
                    CS: Contiene Cadena (Contain String)
                    NS: No Contiene Cadena (No Contain String)
                    CP: Contiene Mascara (Contain Pattern)
                    NP: Contiene Cadena (No Contain Pattern)
  f1 BETWEEN f2 AND f3: Campo f1 est entre f2 y f3
         f1 IS INITIAL: Campo f1 est inicializado
      <f1> IS ASSIGNED: Pregunta si el Field-Symbol f1 est asignado
              f1 IN f2: Pregunta si el campo f1 est dentro de f2
IF ... ENDIF
pregunta si cierto y si no.
IF SY-SUBRC EQ 0.
ELSEIF SY-SUBRC GT 8.
    ELSE.
       IF SY-SUBRC = 4.
       ELSE.
       ENDIF.
ENDIF.
CHECK
comprueba y sal.
CHECK SY-SUBRC EQ 0.
CASE ... ENDCASE
compara multiples casos.
CASE SY-SUBRC.
   WHEN '0'. WRITE 'ERROR 0.'
   WHEN '4'. WRITE 'ERROR 4.'
   WHEN '6' OR '8'. WRITE 'ERROR 6 o 8'.
   WHEN OTHERS. WRITE 'OTROS ERRORES'.
ENDCASE.

Bucles.
Adems, podemos hacer que ciertas instrucciones se repitan n veces o hasta que se cumpla cierta condicin, para ello contamos con:

DO
haz.
DATA VAR01 TYPE I.
DO 5 TIMES.
   ADD 1 TO VAR01.
ENDDO.
WHILE
mientras se cumpla la condicin repite.
WHILE SY-SUBRC NE 0.
''(...)''
ENDWHILE.
LOOP
entra en un bucle, ver tablas internas.
DATA TITAB LIKE BSEG OCCURS 0 WITH HEADER LINE.
LOOP AT TITAB.
''(...)''
ENDLOOP.

Procedimientos.
Un procedimiento no es ms que un pedazo de cdigo aislado dentro del programa y que puede ser llamado en varios momentos de su ejecucin. A este procedimiento se le puede hacer un pase de parametros y que este nos devuelva varios resultados. Si conseguimos hacer que un procedimiento sea lo ms independiente al programa estaremos consiguiendo hacer una verdadera programacin modular. Al procedimiento se le llama con la instruccin perform y no importa donde est definido si en nuestro programa o en cualquier otro o incluso no hace falta que exista.

Open-SQL.
Para poder manejar correctamente la informacin almacenada en las tablas, es necesario disponer de unas sentencias capaces de hacer todo el trabajo independintemente de la mquina donde se est ejecutando SAP. Por ello SAP ha creado una serie de sentencias que las llama Open-SQL y con son casi hermanas que las conocidas SQL. Por ello disponemos de:

SELECT
busquedas.
TABLES T005U.
SELECT * FROM T005U WHERE SPRAS = SY-LANGU.
  EXIT.
ENDSELECT.
INSERT
inserciones.
SELECT * FROM T005U WHERE SPRAS = SY-LANGU.
  T005U-SPRAS = 'DE'.
  INSERT T005U.
ENDSELECT.
DELETE
borrar entradas.
SELECT * FROM T005U WHERE SPRAS = SY-LANGU.
  DELETE T005U.
ENDSELECT.
MODIFY
modifica y si no existe crea.
UPDATE
modifica.

Tablas Internas
Las tablas internas son muy importantes en SAP, ya que es una forma cmoda y rpida de trabajar con la informacin. En ella podemos hacer las mismas operaciones que con las tablas propias de SAP, pero su rendimiento es mucho mejor. Por ello, no hay programa que no disponga de almenos una tabla interna. Y su herramientas son:

DATA
definicin de tablas.
DATA: BEGIN OF ITAB OCCURS 0,
         KEY TYPE I,
         NOMBRE(40),
''         (...)''
      END OF ITAB.
DATA: IBSEG LIKE BSEG OCCURS 0 WITH HEADER LINE.
REFRESH
elimina todo el contenido.
APPEND
inserciones.
DELETE
borrar entradas.
COLLECT
añade.
SORT
ordenaciones.
   SORT TITAB BY NOMBRE.
LOOP AT
bucles.
READ TABLE
lectura de tabla.
READ TABLE TITAB WITH KEY CLAVE = SY-TABIX.
DESCRIBE TABLE
analizamos la tabla.
DESCRIBE TABLE TITAB LINES CONTADOR.
IF CONTADOR EQ 0.
   MESSAGE E001.
ENDIF.

Tablas Cluster
Existe otra forma de tener los datos metidos en las tablas y eso son mediante datos del tipo Cluster LRAW. En ellos se puede almacenar tanta informacin como se desee e incluso puede estar guardada de forma estructurada, como si fuesen tablas internas y mezcladas de diferentes formas. En definitiva, los LRAW son como un gran saco donde uno puede ir metiendo informacin: