You are on page 1of 51

Diseo de aplicaciones de SAP/R3

Contenido del Curso


Introduccin a SAP
(Que es SAP, Instalacin, Administracin)

Programacin bsica
(ABAP, Elementos, Open SQL, Depuracin, Modularizacin)

Programacin avanzada
(Ms Open SQL, REPORTs, Carga de datos, DIALOGs, Diccionario de ABAP)

Programacin alternativa
(OOP, ALVs, Ampliacin del estndar, Web Dynpros)

El Entorno ABAP. Los datos Elementos de programacin OPEN SQL. Estructuras y tablas Depuracin Modularizacin

El Entorno ABAP. Los Datos

Entorno de trabajo (Workbench)

Acceso al entorno de trabajo

El Navegador de objetos

Objetos de desarrollo

Paquete Objetos locales

Creacin de un programa

El editor de ABAP
Grabar

Opciones del men

Editar

Activar Ejecutar

Pattern
Pretty

Comprobar

Cabecera Cdigo del programa

Ejecucin del programa


*& Curso ABAP. Cdigo 01a. *&------------------------* REPORT ZHOLA_MUNDO.

WRITE : 'Hola Mundo'. * As se suele empezar * un lenguaje de programacin

NetWeaver: Entorno de Desarrollo + Entorno de Ejecucin

Ejercicio
Repeticin del cdigo Hola Mundo. Los alumnos se familiarizarn con el entorno, el editor ABAP y el navegador de objetos.

Herramientas: Depurador

En el punto de corte podemos ver cualquier variable, consultar su valor.

BreackPoints y Watch Points


Uso del depurador Parada de la ejecucin Desplazamiento de la ejecucin Consulta de datos Estrategias en la depuracin de cdigo
Breakpoints estticos Breakpoints dinmicos Watch points (variable) Breakpoints condicionales (eventos)

Herramientas
Bsqueda de cdigo
Importacin /

Exportacin Ayuda (F1)

Fichero txt

Estructura de un programa
Nombre del REPORTE Declaracin de tablas a usar en el programa Declaracin de tipos de datos y variables a usar Cdigo que origina la salida de datos por pantalla

Estructura: Eventos
Nombre del REPORTE Instrucciones a ejecutar al inicio del una pgina Declaracin de tablas a usar en el programa Declaracin de tipos de datos y variables a usar en el programa Instrucciones a ejecutar al inicio de la ejecucin del programa

Cdigo que origina la salida de datos por pantalla

Elementos bsicos de programacin


Declaracin de datos.
DATOS

Tipos de datos y objetos de datos Operaciones con los datos

Expresiones lgicas
LGICA (Algoritmos)

Secuencias de control
Anidamiento y control del flujo

Datos
Datos: Tipos de datos Objetos de datos
Son los elementos utilizados en una declaracin. Ambos pueden ser declarados y mantenidos por el usuario.

Operaciones con los datos Asignacin de Valores. Operaciones Salida por pantalla: la sentencia WRITE Parmetros. Pantallas de entrada. Punteros. Declaracin y Asignacin.

Tipos de datos
Son slo descripciones. No ocupan memoria en tiempo de ejecucin. Describen propiedades tcnicas.

Tipo C D F I N P T

Descripcin Texto Alfanumrico Fecha Numrico coma flotante Entero Texto Numrico Numrico Empaquetado Hora Hexadecimal

Tipo de Datos Elementales Tipo de Datos Estructurados Tipos pre-definidos por el sistema Tipos definidos por el usuario
Declaracin: TYPES

Estructuras Tablas Internas

TYPES <nombre>(<longitud>) TYPE <tipo>


TYPES <nombre> LIKE <variable>

Objetos de datos
Son unidades fsicas que ocupan espacio en memoria y que un programa ocupa en tiempo de ejecucin. Tiene asociado un tipo de dato

Variables Constantes Parmetros Campos smbolo (Punteros)

Declaracin
Variables

DATA <nombre>(<longitud>) TYPE <tipo> [VALUE <valor>] DATA <nombre> LIKE <variable>

Constantes Parmetros

CONSTANTS <nombre>(<longitud>) TYPE <tipo> VALUE <valor> PARAMETERS <nombre>(<longitud>) TYPE <tipo> [DEFAULT <valor>] FIELD-SYMBOLS <nombre> [TYPE <tipo>]

Campo Smbolo

Asignacin de valores
En la declaracin (Obligatorio en las constantes)
Despus de la declaracin
MOVE <valor> TO <campo>.
[COMPUTE] <campo> = <valor>. ADD <valor> TO <campo> SUBTRACT <valor> FROM <campo> MULTIPLY <campo> BY <valor> DIVIDE <campo> BY <valor> (+ - * / ** DIV y MOD) SQRT() EXP() LOG() SIN() COS() STRLEN() DATE - DATE = <numero de das>

Operando sobre los datos


Sentencias

Operadores Funciones Operando con fechas:

Interactuando con el usuario (Parmetros)

Salida por pantalla. La sentencia WRITE.


WRITE <[/p(l)]> <valor>,<valor> <opciones>
/: salto de lnea P: columna de posicin l: longitud de salida ULINE /p(l) Iconos Smbolos Podemos concatenar datos y literales

WRITE

Formatos de salida (WRITE)


Variacin:
Clusulas de WRITE LEFT-JUSTIFIED RIGHT-JUSTIFIED CENTERED

Variables numricas (F, P, I)


Declaracin DATA: fFloat TYPE F VALUE '98.7654321E2', pPacket TYPE P DECIMALS 2 VALUE 12.05, iInteger TYPE I VALUE 32. Siempre todos los decimales [R]

Los decimales declarados [Q]


Sin decimales [Z]

Formato (WRITE)
WRITE <variable F, P I> DECIMALS n WRITE <variable F P> NO DECIMALS WRITE <variable F P> ROUND WRITE <variable F> EXPONENT m DECIMALS n
Para un I, se aaden los decimales indicados con valor 0

Manipulacin de Datos (WRITE)


Manipulacin de partes de variables.

<campo>+<offset>(<longitud>) = <valor>
Presentacin de partes de variables WRITE <campo>+<offset>(<longitud>) Conversin de tipos WRITE <variable> TO <variable tipo C> WRITE <variable> TO <variable tipo C>

Salida por pantalla. Parmetros.


PARAMETERS <nombre>(<longitud>) TYPE <tipo> [DEFAULT <valor>]

Elementos de Textos Multi-idioma


Cabecera de listados y de columnas Smbolos de texto Seleccin de textos (parmetros)

Traduccin de elementos

Introducimos los textos en el idioma que hemos seleccionado

Ejercicio: Resta
Tenemos que crear un programa que solicite dos nmeros y nos muestre su diferencia

Campos Smbolo (Punteros)


Declaracin: FIELD-SYMBOLS: <F1>
(incluido <>)

variable
<F1>

Asignacin: ASSIGN variable TO <F1> Asignacin dinmica : ASSIGN (parmetro) TO <F1> Utilizamos una variable que no conocemos hasta el tiempo de ejecucin

rea de Memoria

parmetro

Nombre de variable <F1>

rea de Memoria

Elementos de programacin

Expresiones lgicas
Operadores Relacionales

Operadores Lgicos

Operadores de comparacin de cadenas (string comparison)

Estructuras de control de flujo


OPCIONES IF <condicin> ELSE IF <condicin> ELSE. ENDIF. ITERACIONES

Incondicionales

DO . EXIT ENDDO
DO n TIMES ENDDO

CASE <variable> WHEN <valor 1> . WHEN <valor n> WHEN OTHERS ENDCASE

Condicionadas

WHILE <condicin> ENDWHILE.

Bucles: anidamiento y control


Anidamiento: variable de control SY-INDEX Secuencias de control EXIT Salida del bucle CONTINUE Inicio del bucle ON CHANGE Cdigo siguiente (IF) CHECK Inicio del bucle (IF + CONTINUE)

Datos Estructurados
Estructuras

Tablas internas

Tablas del sistema

(Estndares, Z)

Estructuras
Declaracin

Campos. Nos referimos a ellos como <estructura>.<campo>

Valor de cada campo

TABLES <tabla del sistema>


DATA <nombre> LIKE <tabla del sistema> Sin Tipificar DATA: BEGIN OF <nombre>, <nombre campo> LIKE <campo tabla del sistema> END OF <nombre> TYPE: BEGIN OF <nombre tipo>, <nombre campo> TYPE <tipo campo tabla del sistema> END OF <nombre> DATA <nombre> TYPE <nombre tipo>

Definiendo un Tipo

Tablas Internas
Estndar Ordenadas Mapeadas
Con Cabecera Sin Cabecera
DATA: <Nombre tabla> [LIKE/TYPE] STANDARD TABLE

Clave

Implcita: Todos los campos C Explcita: Definida por el usuario WITH [UNIQUE/NON-UNIQUE] KEY

Tablas Internas con cabecera


Declaracin

Campos.
Carrid connid fldate price

Cabecera Registros

DATA: <Nombre tabla> LIKE STANDARD TABLE <tabla del sistema> WITH HEADER LINE. Sin Tipificar
DATA: BEGIN OF <nombre tabla> OCCORS 0, <nombre campo> LIKE <campo tabla del sistema> END OF <nombre tabla>

TYPE: BEGIN OF <nombre tipo>, (igual que en la estructura)

Definiendo un Tipo

DATA: <Nombre tabla> TYPE STANDARD TABLE <nombre tipo> WITH HEADER LINE.

Tablas Internas sin cabecera


Declaracin Sin Tipificar

Carrid

connid

fldate

price

Campos. rea de trabajo

Carrid

connid

fldate

price

Campos. Registros

DATA: <Nombre tabla> LIKE STANDARD TABLE <tabla del sistema>.

TYPE: BEGIN OF <nombre tipo>, (igual que en la estructura) Definiendo un Tipo DATA: <Nombre tabla> TYPE STANDARD TABLE <nombre tipo>.

Tablas del Sistema


Diccionario ABAP (SE11) Estructura Contenido
SPFLI

El men contextual en cualquier campo nos lleva al contenido de la tabla

OPEN SQL
Native SQL (Exec) ABAP Open SQL
SELECT
Acceso Single con una clave completamente cualificada Procesamiento secuencial (LOOP) con restricciones

Procesamiento secuencial (LOOP) sin restricciones.

SELECT campos INTO variables FROM tabla sistema WHERE condiciones.


Todos (*) Una lista

Variables Estructura Tabla interna

[ENDSELECT]

SELECT con variables y estructuras


SELECT campo1, , campo_n INTO (var1, var _n) FROM <tabla> ENDSELECT. SELECT campo1, , campo_n INTO (str.var1, str.var_n) FROM <tabla> ENDSELECT. SELECT campo1, campo2,, campoNn / * INTO CORRESPONDING FIELDS OF str FROM <tabla> ENDSELECT. La str tiene la estructura de la tabla SELECT * INTO str FROM <tabla> ENDSELECT. SELECT * FROM <tabla> ENDSELECT. Se omite INTO porque existe una str con el nombre y la estructura de la tabla

Carga de datos en TI con cabecera


usando TABLES SELECT * FROM <Tabla del sistema> (omitiendo INTO <str> creada con tables) MOVE <str> TO <tabla interna> APPEND <tabla interna> [SORTED BY <campo>] directamente en la cabecera SELECT <campos> INTO <tabla interna> FROM <Tabla del sistema> APPEND <tabla interna> [SORTED BY <campo>]

Carga de datos en TI sin cabecera


usando TABLES SELECT * FROM <Tabla del sistema> (omitiendo INTO <str> creada con tables) MOVE <str> TO <workarea> APPEND <workarea> TO <tabla interna> [SORTED BY <campo>] usando una estructura (workarea) como rea de trabajo SELECT <campos> INTO <workarea> FROM <Tabla del sistema> APPEND <workarea> TO <tabla interna> [SORTED BY <campo>]

Carga de datos en TI - Comparacin


Con cabecera: la cabecera es el buffer de lectura/escritura SELECT <campos> INTO <tabla interna> FROM <Tabla del sistema> APPEND <tabla interna> [SORTED BY <campo>]

Sin cabecera: una estructura (workarea) es el buffer de lectura/escritura


SELECT <campos> INTO <workarea> FROM <Tabla del sistema> APPEND <workarea> TO <tabla interna> [SORTED BY <campo>]

Salida datos de una TI


Recorremos la tabla presentando sus datos en un dispositivo (pantalla.) Con cabecera: la cabecera es el buffer de lectura/escritura LOOP AT <tabla interna> WRITE <tabla interna>-campo [afecta a la cabecera]

Sin cabecera: una estructura (workarea) es el buffer de lectura/escritura LOOP AT < tabla interna> INTO <workarea> WRITE <workarea>-campo

Procesamiento de Tablas Internas


Lectura de datos de la tabla interna LOOP AT <ti CC> READ TABLE <ti CC> {INDEX i} TI Buffer LOOP AT <ti SC> INTO <wa> READ TABLE <ti SC> INTO <wa> {INDEX i}

Escritura de datos en la tabla interna APPEND <ti CC> INSERT <ti CC> {INDEX i} MODIFY <ti CC> {INDEX i}

TI APPEND <wa> TO <ti SC>

Buffer

INSERT <wa> TO <ti SC> {INDEX i} MODIFY <ti SC> FROM <wa> {INDEX i}

Otras operaciones con TIs


Ordenacin

SORT<ti> BY <nombre campo> ASCENDING / DESCENDING


Acumulacin (en el SELECT) COLLECT<ti CC> Key: Campos no numricos Si no existe Key: APPEND Si existe Key: MODIFY

Acotacin de los bucles


LOOP AT <ti CC> FROM <x> TO <y> Registros concretos Nivel de control Informacin, edicin, borrado La variable SY-TABIX

Operaciones sobre un registro


READ TABLE <Nombre tabla> READ TABLE <Nombre tabla> INDEX <i>. READ TABLE <Nombre tabla> INTO <workarea> INDEX <i>. READ TABLE <Nombre tabla> WITH TABLE KEY <k1> = <v1> <kn> = <vn>. READ TABLE <Nombre tabla> INTO <workarea> WITH TABLE KEY <k1> = <v1> ... <kn> = <vn>. READ TABLE <Nombre tabla> WITH KEY = <valor>. READ TABLE <Nombre tabla> WITH KEY = <valor> BINARY SEARCH. READ TABLE <Nombre tabla> COMPARING <f1> <f2> . . . . READ TABLE <Nombre tabla> COMPARING ALL FIELDS. READ TABLE <Nombre tabla> TRANSPORTING <f1> <f2>... READ TABLE <Nombre tabla> TRANSPORTING NO FIELDS.

Niveles de control
LOOP AT <ti> {INTO <wa>}
AT FIRSTENDAT. AT NEW <campo>ENDAT. AT END OF <campo>ENDAT.

AT LAST..ENDAT.
ENDLOOP

Borrado de TIs

You might also like