Global Sap

Embed Size (px)

Citation preview

  • MANUAL DE INTRODUCCIN A LA PROGRAMACIN EN SAP

    LENGUAJE ABAP

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 2 de 103

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 3 de 103

    TABLA, ELEMENTO DE DATOS Y DOMINIO DE DATOS, Cmo se relacionan?

    Una tabla es una estructura que almacena datos, un dominio es una norma que contiene la definicin de datos y el elemento de datos contiene la definicin de la etiqueta que tendr el campo cuando sea utilizado en algn reporte.

    Como norma general de SAP, y para evitar redundancia de datos, al crear una tabla en SAP, lo recomendable es vincular el campo a crear a un elemento de datos del diccionario., y el elemento de datos debe estar vinculado a un Dominio de Datos.

    Para resumir lo anterior, se presenta el siguiente esquema:

    Un campo de una tabla est asociado a un elemento de datos y a su vez un elemento de datos est asociado a un dominio de datos.

    Si al momento de crear una tabla se detectara que uno de estos objetos no existe, se puede crear, lo cual se describe a continuacin.

    Campo de tabla

    Elemento de Datos

    Dominio de Datos

    AdministratorResaltado

    AdministratorResaltado

    AdministratorResaltado

    AdministratorResaltado

    AdministratorResaltado

    AdministratorResaltado

    AdministratorResaltado

    AdministratorResaltado

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 4 de 103

    DOMINIO DE DATOS.

    Creacin de un dominio de datos.

    Para crear un Dominio de datos se debern realizar los siguientes pasos:

    Paso 1: 1.- Desde la pantalla principal de SAP, en la parte superior ingresar la

    transaccin SE11 y luego presionar Intro.

    A continuacin se describe el paso 2.

    Paso 2: Al hacer el paso anterior se desplegar la siguiente pantalla:

    1

    1

    2

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 5 de 103

    1. Domain:: Marcar la opcin Domain e ingresar el nombre del dominio a crear. 2. Create: Presionar el botn Create.

    Al hacerlo, se desplegar la siguiente pantalla:

    A continuacin se describe el paso 3.

    Paso 3: 1. Short text: corresponde a la descripcin del dominio, por ej: Cdigo de la

    pelcula, Nombre del cliente, etc.

    2. Data type: corresponde al tipo de datos, por ej: CHAR, DATS, CURR. Etc. Al hacer clic en la orilla derecha del recuadro se desplegar el listado de tipos de datos que existen en el sistema.

    No. Characters: nmero de caracteres que tendr el campo (el largo).

    Decimal places: nmero de decimales de entrada que admitir el campo.

    1

    2

    3

    4

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 6 de 103

    3. Output lenght: nmero de caracteres que se desplegarn en pantalla, (se desplegarn siempre y cuando el campo contenga datos).

    La opcin Lowercase, sirve para indicar si el campo admitir minsculas, si se marca admite Maysculas / Minsculas, sino slo admitir Maysculas.

    4. Value Ranges: Una vez completados los campos de pantalla indicados, y en caso que se desee que el tipo de datos despliegue posteriormente un listado de datos, por ej, si el dominio fuera para el cdigo de continente, se podra crear un listado con los continentes (en caso contrario saltar al paso 6). Dicho listado aparecer cuando el campo sea utilizado en algn reporte o formulario, para realizarlo se deber presionar la pestaa Value Ranges.

    Paso 4: Al realizar el paso anterior se desplegar la siguiente pantalla:

    1

    2

    AdministratorResaltado

    AdministratorResaltado

    AdministratorResaltado

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 7 de 103

    Donde:

    1. Fix val: En la columna Fix val, se ingresa el cdigo del campo, por ejemplo 001.

    Short text se ingresa el detalle o descripcin del campo, por ejemplo Oceana.

    Paso 5:

    2. Activate: Presionar el botn Activate ( ), de este modo el objeto a crear quedar en estado Activo en el diccionario de datos de SAP.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 8 de 103

    Paso 6:

    Al realizar el paso anterior, aparecer la siguiente ventana:

    Ac existen dos opciones:

    Opcin A: Guardar el objeto en una clase de desarrollo de SAP. Generalmente se utiliza esta opcin, dado que de esta forma se pueden transportar luego los objetos a otro sistema.

    Opcin B: Guardar el objeto en forma local. Esto se utiliza slo si se crearn objetos de prueba o testeo. Al hacerlo de esta forma, el objeto NO podr ser posteriormente transportado a otro sistema.

    Guardar: Cualquiera de las opciones antes mencionadas que se haya elegido, luego hay que guardar el objeto en el sistema, para ello se debe presionar el botn Guardar. Si se eligi la opcin A, aparecer la siguiente pantalla:

    Opcin A

    Opcin B Guardar

    Nombre del paquete de desarrollo

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 9 de 103

    En el cuadro sealado va el cdigo de la orden de transporte en la que quedar almacenado el objeto. Este cdigo se genera en forma automtica. Luego se presiona el botn Aceptar.

    Cdigo de la orden de transporte

    Botn Aceptar

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 10 de 103

    ELEMENTO DE DATOS Creacin de un elemento de datos.

    Para crear un Elemento de datos se deben realizar los siguientes pasos:

    Paso 1: Realizar el paso 1 descrito en el tem Pasos para la creacin de un dominio de datos.

    Paso 2: Al hacer el paso anterior se desplegar la siguiente pantalla:

    1.- Marcar la opcin Data type e ingresar el nombre del elemento de datos a crear.

    2.- Luego ingresar el nombre del Elemento de datos y finalmente presionar Create.

    Paso 3: Luego aparecer la siguiente pantalla, en este caso debemos:

    1.- Seleccionar el tem Data element, 2.- Luego hacer clic en el botn Enter.

    2

    1

    AdministratorResaltado

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 11 de 103

    Paso 4: Al realizar el paso anterior aparecer la siguiente pantalla, en donde

    debemos completar los campos:

    1

    2

    1

    2

    3

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 12 de 103

    Donde:

    1. Short text: corresponde a la descripcin del elemento de datos, por ej: Cdigo de la pelcula, Nombre del cliente, etc.

    2. Domain: corresponde al nombre del dominio al cul pertenecer el elemento de datos.

    3. Field Label: Una vez completados estos campos, se deber presionar la pestaa Field Label, realizado esto, aparecer la siguiente pantalla:

    Paso 5: 1. Lenght: Corresponde al largo que tendrn los campos asociados al elemento de datos, se expresa en nmeros. Por Ej., si el elemento corresponde al nombre de cliente el largo podra ser 30, si fuese la edad sera 3, etc. En los casilleros Short, Mdium, Long y Heading debe ir el mismo valor (nmero).

    2. Field label: Corresponde a la etiqueta del campo, (cuando se use este campo en algn report o interface, el nombre aparecer tal como se escriba ac,

    1 2

    3

    AdministratorResaltado

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 13 de 103

    por eso es importante escribir un nombre simple y claro del campo en cuestin), por ej. si el campo correspondiera al nombre del cliente podra ser Nombre_clie. . En los casilleros Short, Mdium, Long y Heading debe ir el mismo valor (texto), pero puede darse el caso de que el casillero Short no alcance para escribir la descripcin. En este caso se debe escribir una descripcin ms corta y en los dems se escribe una ms extensa.

    Paso 6: 3. Activate: Presionar el botn Activate ( ), de este modo el elemento de

    datos a crear quedar en estado Activo en el diccionario de datos de SAP.

    Paso 7: Realizar los pasos 5 y 6 descrito en el tem Creacin de un dominio de datos.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 14 de 103

    TABLAS Creacin de una tabla.

    Para crear una tabla se deben realizar los siguientes pasos (se describirn los pasos bsicos para llevar a cabo este proceso):

    Paso 1: Realizar el paso 1 descrito en el tem Pasos para la creacin de un dominio de datos.

    Paso 2: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Donde:

    1. Database table: Marcar la opcin Database table e ingresar el nombre de la tabla a crear.

    2. Create: Presionar el botn Create.

    2

    1

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 15 de 103

    Paso 3: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Donde:

    1. Short text: corresponde a la descripcin de la tabla, por ej: Clientes externos, Detalle de Facturas, etc.

    2. Delivery Class: corresponde a la clase que pertenecer la tabla, por general es A (tabla maestra y transaccin de datos).

    3. Data Browser/Table View Maint: corresponde a que tipo de acceso tendr la tabla, se recomienda dejarla con Display/Maintenance Allowed (Visualizacin/Mantencin permitida), con esto y una vez creada la tabla, se le pueden realizar modificaciones posteriores en caso de ser necesario.

    4. Fields: corresponde a los campos que contendr la tabla a crear.

    1

    2 3

    4

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 16 de 103

    Paso 4: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Donde:

    1. Field: corresponde al nombre del campo.

    2. Key: esta casilla debe seleccionarse en caso que el campo vaya a ser Primary Key (clave primaria, tambin a veces denominada llave), lo cul significa que este campo servir para identificar a un conjunto de datos de la tabla. Por ej, en el caso de un cliente podra ser el RUT, en caso de una factura podra ser el N de factura, etc.

    3. Data element: ac se debe sealar el elemento de datos al cul pertenecer el campo de la tabla a crear. Al hacer clic en este casillero, se habilita el icono con el cul se pueden buscar los elementos de datos existentes en el sistema, tambin se puede hacer una bsqueda por cadena, por ej si se sabe que el elemento deseado empieza por ZP, se escribe ZP* y luego se presiona el icono indicado. De esta forma se buscarn los elementos de datos cuyo nombre comiencen por ZP.

    1 2 3

    AdministratorResaltado

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 17 de 103

    Una vez que se han ingresado los campos de la tabla, sta debe ser activada en el sistema, para ello realizar el paso que se indica a continuacin:

    2. Technical Settings: Corresponde a las caractersticas tcnicas de la tabla y se deben completar los campos indicados a continuacin:

    Donde:

    2.1 Data class: corresponde a la clase de datos que contendr la tabla, por lo general es APPL0 (datos maestros).

    2.2 Size category: corresponde a la categora de tamao de la tabla.

    2.3 Log data changes: se sugiere marcar esta opcin para vaya que guardando en archivo de registro los cambios que se vayan efectuando a la tabla.

    3.13.2

    3.3

    3.43.5

    AdministratorResaltado

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 18 de 103

    2.4 Save: se debe presionar este botn para guardar las caractersticas tcnicas de la tabla, al hacerlo y si no existen errores, en la parte inferior de la pantalla debe aparecer el mensaje Saved (Guardado).

    2.5 Back: se debe presionar para volver a la pantalla anterior y continuar con el proceso de activacin de la tabla.

    4. Luego presionar el botn Activate ( ), de este modo el elemento de datos a crear quedar en estado Activo en el diccionario de datos de SAP.

    5. Luego ir al Men Utilities / Table maintenance generador, esto es para la generacin del dilogo de mantencin de la tabla, al hacerlo aparecer la siguiente pantalla.

    5.1 Authorization Group: es el grupo de autorizacin al cul pertenecer la tabla.

    5.1 5.2

    5.3 5.4

    AdministratorResaltado

    AdministratorResaltado

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 19 de 103

    5.2 Function group: es el grupo de funciones al cul pertenecer la tabla. Si no existe la funcin de grupo, se debe crear una, para ello revisar el tem Crear una funcin de grupo.

    5.3 Find Scr Numbers: este botn sirve para generar en forma automticamente los valores para el item Mant Screen No.

    5.4 Creacin: se debe presionar este botn para concluir la operacin de generacin del dilogo de mantencin de la tabla.

    Paso 5: Realizar el paso 6 descrito en el tem Creacin de un dominio de datos.

    Ejercicios

    Basndose en lo explicado en los tems Dominio de Datos, Elemento de Datos, y Creacin de una tabla, de este Documento, realizar los siguientes ejercicios:

    Ejercicio N 1. Crear tabla ZPELICULAS en SAP (SE11) con los campos requeridos, para cada campo crear su respectivo Elementos de Datos y Dominio.

    Field name Key Type Length Description PEL_ID X NUMC 10 Cdigo

    Pelcula PELTXT CHAR 40 Nombre

    Pelcula original

    AGNO NUMC 4 Ao DURACION NUMC 4 Duracin en

    minutos PAIS_ID CHAR 2 Pais de origen

    ( Cdigo Pais ISO )

    GENERO_ID NUMC 3 Cdigo gnero (Terror, Drama, etc.)

    DIRECTOR_ID NUMC 10 Cdigo director

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 20 de 103

    Para Gnero crear en el dominio, mbito de valores (Value Ranges)., con la siguiente lista:

    Cine de accin Cine de animacin Cine de aventuras Cine Blico Serie B Ciencia Ficcin Cine de autor Cine fantstico Cine negro Cine pornogrfico Comedia (cine) Comedia romntica Documental Drama Melodrama Cine histrico Intriga y suspense Cine musical Cine policiaco Cine de terror Western

    Ejercicio N 2.

    Crear tabla ZDIRECTORES con los siguientes campos

    Field name Key Type Length Description DIRECTOR_ID X NUMC 10 Cdigo director NOMBRE CHAR 60 Nombre Completo

    director NACION NUMC 2 Nacionalidad(Cdigo

    ISO pais) FEC_NAC DATS 8 Fecha nacimiento FEC_MUE DATS 8 Fecha Fallecimiento

    Crear Dominio y Elemento de datos respectivo para cada campo.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 21 de 103

    Ejercicio N 3.

    Crear tabla ZDVD con los siguientes campos

    Field name Key Type Length decimals Description DVD_ID X NUMC 10 Cdigo DVD PEL_ID X NUMC 10 Cdigo

    Pelcula PRECIO CURR 15 2 Precio

    Unitario DVD MONEDA cuky 5 Moneda STOCK DEC 5 0 Stock DVD ZONA numc 1 Zona DVD

    En Moneda usar elemento de datos WAERS. Para DVD_ID, PRECIO y STOCK, crear elemento de datos.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 22 de 103

    PROGRAMAS EN ABAP

    Creacin de un programa.

    A continuacin se describen los pasos para crear un simple programa en lenguaje ABAP en SAP.

    Paso 1: 1.- Desde la pantalla principal de SAP, en la parte superior ingresar la

    transaccin SE38 y luego presionar Intro.

    A continuacin se describe el paso 2.

    Paso 2: Al hacer el paso anterior se desplegar la siguiente pantalla:

    1

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 23 de 103

    1. Program: En esta casilla se debe ingresar el nombre del nuevo programa. Por norma, el nombre debe empezar por Z Y. Por Ej., ZPRIMER_PROGRAMA

    3. Create: Botn Create. Se debe presionar este botn una vez ingresado el nombre del programa.

    Paso 3: Al hacer el paso anterior se desplegar la siguiente pantalla:

    1 2

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 24 de 103

    1. Title: corresponde a la descripcin del programa, por ej.: Generacin de fichero con listado de clientes, Listado de Facturas pendientes, etc.

    2. Type:: corresponde al tipo de programa. Por lo general es Executable program (Programa ejecutable), pero tambin existe Module Pool, Include, entre otros. (estos tipos sern explicados ms adelante).

    3. Save: Botn Save (Guardar), se debe presionar para poder guardar el programa en el sistema.

    Paso 4: Al realizar el paso anterior, aparecer la siguiente ventana:

    1

    2

    3

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 25 de 103

    Ac existen dos opciones:

    Opcin A: Guardar el objeto en una clase de desarrollo de SAP. Generalmente se utiliza esta opcin, dado que de esta forma se pueden transportar luego los objetos a otro sistema. Si no aparece nada, se presiona el icono que est en la orilla izquierda, al hacerlo se desplegar la siguiente pantalla.

    Opcin B: Guardar el objeto en forma local. Al hacerlo de esta forma, el objeto NO podr ser posteriormente transportado a otro sistema (comunmente en las empresas los objetos deben ser transportados entre los diferentes ambientes existentes en ella, por ej: de Desarrollo al de Pruebas, y luego de ste ltimo a Productivo).

    Guardar: Cualquiera de las opciones antes mencionadas que se haya elegido, luego hay que guardar el objeto en el sistema, para ello se debe presionar el botn Guardar.

    Si se realiza lo indicado en la opcin A, aparecer la siguiente pantalla:

    Opcin A

    Opcin B Guardar

    Nombre del paquete

    Aceptar

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 26 de 103

    Luego, al presionar el botn Aceptar se desplegar la siguiente pantalla:

    Al presionar el botn Guardar aparecer la siguiente pantalla.

    En el cuadro sealado va el cdigo de la orden de transporte en la que quedar almacenado el objeto. Este cdigo se genera en forma automtica. Luego se presiona el botn Aceptar.

    Por cualquier duda acerca de los paquetes de desarrollo. Revisar el tem Creacin de un paquete de desarrollo (package).

    Al presionar el botn Aceptar aparecer la siguiente pantalla.

    Guardar

    Aceptar

    Cdigo orden de transporte

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 27 de 103

    Ac desarrollaremos el programa.

    El siguiente cdigo es una muestra bsica de cmo declarar variables, para luego imprimirlas en pantalla.

    REPORT ZPRIMER_PROGRAMA . DATA: NOMBRE(30) TYPE C, CARGO LIKE NOMBRE, EMPRESA LIKE NOMBRE, FECHA_NAC:TYPE D, EDAD TYPE I. NOMBRE = 'ALAN BRITO'. CARGO = 'DESARROLLADOR SAP'. EMPRESA = 'EMPRESA DESARROLLADORA DE SOFTWARE'. FECHA_NAC = '19781201'. EDAD = '30'. EDAD = EDAD + 5. WRITE: NOMBRE, CARGO, EMPRESA, FECHA_NAC,

    EDAD.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 28 de 103

    A continuacin se ve el cdigo mostrado anteriormente y los botones que ms se utilizan:

    Donde:

    Chequear: Se utiliza este botn para saber si la sintaxis del cdigo es correcta.

    Modificar: se utiliza este botn cuando se quiera modificar el cdigo fuente del programa.

    Modificar

    Procesar Activar

    Chequear

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 29 de 103

    Activar: su funcin es dejar en estado activo el programa en el sistema. Es importante que los programas sean activados antes de ejecutarlos o testearlos, ya que slo as, al momento de compilar, tomar los cambios que se hayan efectuado.

    Procesar: sirve para ejecutar compilar el programa.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 30 de 103

    Clusula SELECT

    La clusula SELECT nos permite seleccionar datos de una tabla. Ac hay unos ejemplos bsicos de seleccin de datos.

    Seleccionar todas las pelculas e imprimir cdigo y nombre:

    TABLES ZPELICULAS.

    SELECT * FROM ZPELICULAS . WRITE:/ ZPELICULAS-PEL_ID, ZPELICULAS-PELTXT. ENDSELECT.

    Lo anterior es equivalente a,

    Data wa_zpeliculas like zpeliculas.

    SELECT * into wa_zpeliculas FROM ZPELICULAS . WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT.

    Seleccionar todas las pelculas con pas origen Chile e imprimir cdigo y nombre:

    Data wa_zpeliculas like zpeliculas.

    SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID = CL. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT.

    Seleccionar todas las pelculas con pas origen Chile o Argentina e imprimir cdigo y nombre:

    Data wa_zpeliculas like zpeliculas.

    SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID = CL OR PAIS_ID EQ AR. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 31 de 103

    Operator Meaning =, EQ True, if the content of col is the same as the content of f. , NE True, if the content of col is different to the content of f. , GT True, if the content of col is greater than the content of f. =, GE True, if the content of col is greater than or equal to the content of f.

    Seleccionar todas las pelculas con pas origen Chile o Argentina cuya duracin no sea mayor a 120 minutos, e imprimir cdigo y nombre:

    Data wa_zpeliculas like zpeliculas.

    SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE ( PAIS_ID = CL OR PAIS_ID EQ AR ) AND DURACION

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 32 de 103

    TABLAS INTERNAS

    Las tablas internas permiten trabajar con los datos de una tabla de SAP en forma ms eficiente. En forma lgica se trabaja de la siguiente forma: los datos se encuentran en una tabla de SAP, y travs de cdigo se crea una tabla interna con los datos de la tabla de SAP. La tabla interna queda almacenada en memoria mientras el programa o reporte se est ejecutando. A continuacin veremos algunos ejemplos:

    Ejemplo N 1: Crear una tabla interna con campos de la tabla ZPELICULAS, se realizar

    de la siguiente forma:

    Data: begin of tb_pel occurs 0, Pel_id like zpeliculas-pel_id, Peltxt like zpeliculas-peltxt, End of tb_pel.

    Lo anterior es equivalente a:

    Data : begin of wa_pel, Pel_id like zpeliculas-pel_id, Peltxt like zpeliculas-peltxt, End of wa_pel.

    Data tb_pel like standard table of wa_pel with header line.

    Ejemplo N 2: Seleccionar todas las pelculas e imprimir cdigo y nombre:

    Data tb_zpeliculas like Standard table of zpeliculas with header line.

    SELECT * into table tb_zpeliculas FROM ZPELICULAS .

    Loop at tb_zpeliculas

    WRITE:/ tb_ZPELICULAS-PEL_ID, tb_ZPELICULAS-PELTXT. Endloop.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 33 de 103

    Seleccionar todas las pelculas e imprimir cdigo y nombre, creando una tabla interna y luego traspasando esa tabla interna a una estructura.

    Data tb_zpeliculas like Standard table of zpeliculas. Data wa like tb_zpeliculas.

    SELECT * into table tb_zpeliculas FROM ZPELICULAS .

    Loop at tb_zpeliculas into wa.

    WRITE:/ wa-PEL_ID, wa-PELTXT. Endloop.

    Ejemplo N 4: Seleccionando datos usando la clusula INTO CORRESPONDING FIELDS.

    Data : begin of wa_aux, Pel_id like zpeliculas-pel_id, Peltxt like zpeliculas-peltxt, End of wa_aux.

    Data tb_aux like standard table of wa_aux with header line.

    SELECT * into corresponding fields of table tb_aux FROM ZPELICULAS .

    Loop at tb_aux.

    WRITE:/ tb_aux-PEL_ID, tb_aux-PELTXT. Endloop.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 34 de 103

    PARAMETERS (Parmetros).

    Los Parameters sirven para obtener informacin de una tabla interna tabla maestra de SAP teniendo como referencia un valor ingresado por el usuario. Cmo funciona internamente?, el parmetro se vincula a un campo de tabla (a travs del cdigo fuente) y al momento de realizar la consulta, la bsqueda de datos se basa en el valor ingresado en pantalla por el usuario. A continuacin veremos un ejemplo:

    PARAMETERS p_pais like ZPELICULAS-pais_id.

    Data wa_zpeliculas like zpeliculas.

    SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID = p_pais. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT.

    OBS: En este ejemplo vemos un solo PARAMETERS, pero pueden ser agregados los que programador desee.

    Este cdigo debe ser insertado en un programa nuevo. Al compilarlo, y si no existen errores, en la pantalla debera aparecer lo siguiente:

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 35 de 103

    Otros valores que podemos incluir al usar PARAMETERS son los siguientes (estos valores son opcionales):

    OBLIGATORY: Indica si es obligatorio completar este campo.

    DEFAULT: Propone un valor por defecto.

    LOWER CASE: Indica si se permitir ingresar minsculas

    Al aplicarlo al cdigo, basndose en el ejemplo anterior sera lo siguiente:

    PARAMETERS: p_pais like ZPAISES-pais_id DEFAULT '120' LOWER CASE OBLIGATORY.

    Data wa_zpeliculas like zpeliculas.

    SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID = p_pais. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 36 de 103

    Al compilar debiera aparecer lo siguiente:

    Al presionar este botn, aparecer la ventana con el listado que ingresamos al momento de crear el dominio de datos.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 37 de 103

    SELECT-OPTIONS (Opciones de seleccin).

    Los SELECT-OPTIONS sirven para obtener informacin de una tabla interna tabla maestra de SAP teniendo como referencia uno varios valores ingresados por el usuario. Cmo funciona internamente?, el select-option se vincula a un campo de tabla (a travs del cdigo fuente) y al momento de realizar la consulta, la bsqueda de datos se basa en el valor ingresado en pantalla por el usuario. A continuacin veremos un ejemplo:

    SELECT-OPTIONS s_pais for ZPELICULAS-pais_id.

    Data wa_zpeliculas like zpeliculas.

    SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID IN s_pais. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT.

    OBS: En este ejemplo vemos un solo SELECT-OPTIONS, pero pueden ser agregados los que programador desee.

    Este cdigo debe ser insertado en un programa nuevo. Al compilarlo, y si no existen errores, en la pantalla debera aparecer lo siguiente:

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 38 de 103

    Otros valores que podemos incluir al usar SELECT-OPTIONS son los siguientes (estos valores son opcionales):

    OBLIGATORY: Indica si es obligatorio completar este campo.

    DEFAULT: Propone un valor por defecto.

    LOWER CASE: Indica si se permitir ingresar minsculas

    NO INTERVALS: Indica que no se utilizar un rango se valores (desde / hasta). Sin embargo se puede ingresar uno o varios valores por ejemplo un listado.

    Al aplicarlo al cdigo, basndose en el ejemplo anterior sera lo siguiente:

    SELECT-OPTIONS s_pais for ZPAISES-pais_id DEFAULT '120' LOWER CASE OBLIGATORY NO INTERVALS.

    Data wa_zpeliculas like zpeliculas.

    SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID IN s_pais. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 39 de 103

    Al compilar debiera aparecer lo siguiente:

    Al presionar este botn, aparecer la ventana para ingresar el listado de valores a utilizar en la bsqueda de datos.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 40 de 103

    MODULARIZACION

    La modularizacin bsicamente se trata de ir creando el programa y agrupando el cdigo en subrutinas, stas son llamadas a travs de la clusula Perform.

    Ejemplo N 1:

    Data tb_zpeliculas like Standard table of zpeliculas with header line.

    Perform leer_peliculas. Perform write_peliculas.

    Form leer_peliculas. SELECT * into table tb_zpeliculas FROM ZPELICULAS . Endform.

    Form write_peliculas. Loop at tb_zpeliculas

    WRITE:/ tb_ZPELICULAS-PEL_ID, tb_ZPELICULAS-PELTXT. Endloop. Endform.

    Ejemplo N 2: Ejemplo de subrutina con parmetros de entrada.

    Data tb_zpeliculas like Standard table of zpeliculas with header line.

    PARAMETERS p_pais like ZPELICULAS-pais_id.

    Perform leer_peliculas using p_pais. Perform write_peliculas.

    Form leer_peliculas using p_pais_de_entrada. SELECT * into table tb_zpeliculas FROM ZPELICULAS Where pais_id = p_pais_de_entrada. Endform.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 41 de 103

    Form write_peliculas. Loop at tb_zpeliculas

    WRITE:/ tb_ZPELICULAS-PEL_ID, tb_ZPELICULAS-PELTXT. Endloop. Endform.

    Ejemplo N 3 Ejemplo de subrutina con parmetros de entrada y salida

    Data tb_zpeliculas like Standard table of zpeliculas with header line. Data v_peltxt like ZPELICULAS-PELTXT.

    PARAMETERS p_id like ZPELICULAS-pel_id.

    Perform leer_peliculas using p_id changing v_peltxt. Perform write_peliculas using p_id V_peltxt..

    Form leer_peliculas using p_pel_id changing p_nombre_pel. SELECT single peltxt into p_nombre_pel FROM ZPELICULAS Where pel_id = p_pel_id. Endform.

    Form write_peliculas using p_pel_id P_nombre_pel.

    WRITE:/ p_PEL_ID, P_nombre_pel. Endform.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 42 de 103

    INCLUDES

    Los includes son programas que pueden ser llamados desde otros, la nica diferencia con lo explicado en el item Creacin de un programa es en el Paso 3, en donde el campo Type se debe seleccionar Include program, el resto es el mismo proceso.

    Ejemplo N 1:

    Se crearn los siguientes includes

    ZPELICULAS_TOP.: Para declarar variables ZPELICULAS_F01 : Para declarar subrutinas

    En el cdigo del Include ZPELICULAS_TOP se deber ir lo siguiente:

    *INCLUDE ZPELICULAS_TOP.

    Data tb_zpeliculas like Standard table of zpeliculas with header line. Data v_peltxt like ZPELICULAS-PELTXT.

    En el cdigo del Include ZPELICULAS_F01 se deber ir lo siguiente:

    *INCLUDE ZPELICULAS_F01

    Form leer_peliculas using p_pel_id changing p_nombre_pel. SELECT single peltxt into p_nombre_pel FROM ZPELICULAS Where pel_id = p_pel_id. Endform.

    Form write_peliculas using p_pel_id P_nombre_pel.

    WRITE:/ p_PEL_ID, P_nombre_pel. Endform.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 43 de 103

    Finalmente el cdigo del programa principal (se debe crear un programa de tipo Executable) deber quedar as:

    INCLUDE ZPELICULAS_TOP.

    PARAMETERS p_id like ZPELICULAS-pel_id.

    Perform leer_peliculas using p_id changing v_peltxt. Perform write_peliculas using p_id V_peltxt. INCLUDE ZPELICULAS_F01 .

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 44 de 103

    EVENTOS INITIALIZATION

    En este ejemplo se propondr el ao actual para la bsqueda de pelculas.

    PARAMETERS: p_agno like zpeliculas-agno. SELECT-OPTIONS s_pais for ZPELICULAS-pais_id.

    Data wa_zpeliculas like zpeliculas.

    INITIALIZATION. p_agno = sy-datum(4).

    START-OF-SELECTION. SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID IN s_pais AND agno = p_agno. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT. END-OF-SELECTION.

    En este ejemplo siempre se propondr el pas CL en la bsqueda.

    SELECT-OPTIONS s_pais for ZPELICULAS-pais_id.

    Data wa_zpeliculas like zpeliculas.

    INITIALIZATION. s_pais-sign = I s_pais-option = EQ. s_pais-low = CL. append s_pais.

    START-OF-SELECTION. SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID IN s_pais. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT. END-OF-SELECTION.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 45 de 103

    AT-SELECTION-SCREEN

    Validar datos en la pantalla inicial del reporte. En este ejemplo validamos que en parmetro pas este prohibido ingresar Argentina(AR).

    PARAMETERS p_pais like ZPELICULAS-pais_id.

    Data wa_zpeliculas like zpeliculas.

    AT-SELECTION-SCREEN.

    if p_pais = AR. Message E398(00) with Codigo de pais invlido. Endif.

    START-OF-SELECTION. SELECT * into wa_zpeliculas FROM ZPELICULAS WHERE PAIS_ID EQ p_pais. WRITE:/ wa_ZPELICULAS-PEL_ID, Wa_ZPELICULAS-PELTXT. ENDSELECT. END-OF-SELECTION.

    OBS: los mensajes estn en la tabla T100.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 46 de 103

    FUNCTIONS (Funciones) Definicin Una function se podra definir como un conjunto de instrucciones agrupadas que pueden ser llamadas desde uno o varios programas. Se utiliza para realizar diversas tareas.

    Ejercicio N 1:

    Crear funcin Z_LEER_PELICULA que dado un id de pelcula entregue el nombre. Entonces en el programa principal esta funcin se llamara:

    Cmo crear una funcin

    Paso 1: Ir a la transaccin SE37. Al hacerlo aparecer la siguiente pantalla:

    Luego presionar el botn Create.

    Crear

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 47 de 103

    Paso 2: Al realizar el paso anterior se desplegar la siguiente pantalla. Ac se deben completar los campos Function group y Short text:

    Una vez completados los campos se debe presionar el botn Save,

    Paso 3: Al hacerlo aparecer la siguiente pantalla:

    De acuerdo al cdigo ejemplo, se deben colocar en los campos.

    Se debe completar tal como se muestra en la figura y en base al cdigo para llamar a la funcin.

    Una vez completados los campos se presiona la pestaa Export.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 48 de 103

    Paso 4: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Se debe completar tal como se muestra en la figura y en base al cdigo para llamar a la funcin.

    Una vez completados los campos se presiona la pestaa Tables.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 49 de 103

    Paso 5: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Se debe completar tal como se muestra en la figura y en base al cdigo para llamar a la funcin. Fijarse en la lnea que sale la palabra PARAMETERS, en este caso la tabla a vincular es zpeliculas.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 50 de 103

    Paso 6: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Esta ventana aparece casi en blanco, lo que se muestra es como queda una vez insertado el cdigo En esta ventana debe ser insertado el siguiente cdigo (pinchar la pestaa Source Code):

    Guardar

    Activar

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 51 de 103

    Cdigo para llamar a la funcin

    Data tb_zpeliculas like Standard table of zpeliculas with header line. Data v_peltxt like ZPELICULAS-PELTXT.

    PARAMETERS p_id like ZPELICULAS-pel_id.

    Perform leer_peliculas using p_id changing v_peltxt. Perform write_peliculas using p_id V_peltxt..

    Form leer_peliculas using p_pel_id changing p_nombre_pel. * SELECT single peltxt into p_nombre_pel FROM ZPELICULAS * Where pel_id = p_pel_id.

    CALL FUNCTION Z_LEER_PELICULA EXPORTING PEL_ID = p_pel_id Ver el paso 3 IMPORTING PELTXT = p_nombre_pel EXCEPTIONS Not_ found = 1. If sy-subrc ne 0. Clear p_nombre_pel . Ver el paso 4 Endif.

    Endform.

    Form write_peliculas using p_pel_id P_nombre_pel.

    WRITE:/ p_PEL_ID, P_nombre_pel. Endform.

    Finalmente guardamos y activamos la funcin.

    TIPS: El campo que va en el EXPORTING de la funcin debe agregarse en la pestaa IMPORT (tal como en el Paso 3).

    TIPS: El campo que va en el IMPORTING de la funcin debe agregarse en la pestaa EXPORT (tal como en el Paso 4).

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 52 de 103

    Ejercicio N 1

    Crear funcin (SE37) Z_READ_DVD que dado un cdigo de DVD, como salida entregue:

    ID_DVD Nombre Pelcula Nombre Director Ao Pelcula Duracin en minutos Pas de origen Gnero Precio DVD Stock DVD

    Ejercicio N 2

    Crear funcin Z_READ_DVD_2 que dado un cdigo de DVD, como salida entregue estructura con siguientes campos. OBS: crear estructura ZQ_DVD con la SE11, para los campos usar las mismas definiciones que las tablas ZPELICULAS; ZDIRECTORES Y ZDVD

    Field name Key Type Length Description DVD_ID NUMC 10 PEL_ID NUMC 10 Cdigo

    Pelcula PELTXT CHAR 40 Nombre

    Pelcula original

    AGNO NUMC 4 Ao DURACION NUMC 4 Duracin en

    minutos PAIS_ID CHAR 2 Pais de

    origen ( Cdigo Pais ISO )

    GENERO_ID NUMC 3 Cdigo gnero (Terror, Drama, etc.)

    DIRECTOR_ID NUMC 10 Cdigo director

    NOMBRE

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 53 de 103

    PRECIO Precio Unitario DVD

    MONEDA Moneda STOCK Stock DVD

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 54 de 103

    PAQUETES DE DESARROLLO (Package). Creacin de un paquete de desarrollo.

    A continuacin se describen los pasos para crear una clase de desarrollo (package). Paso 1:

    1.- Desde la pantalla principal de SAP, en la parte superior ingresar la transaccin SE80 y luego presionar Intro.

    Paso 2: Al hacer el paso anterior se desplegar la siguiente pantalla:

    1

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 55 de 103

    Ac se debe hacer clic sobre con el botn derecho del Mouse, sobre el primer tem del listado Object Name / Create / Package

    Paso 3: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Donde:

    1

    1

    2

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 56 de 103

    1. Package: corresponde al nombre del paquete, por norma debe comenzar por Z Y.

    Short text: corresponde a la descripcin del paquete.

    Software Component: corresponde al componente de software, por lo general es HOME.

    2. Create: Se debe presionar este botn para crear el paquete.

    Paso 4: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Una orden de transporte sirve para ir guardando los objetos a medida que se vayan creando objetos tales como tablas, reportes, elementos de datos, etc. en el ambiente de Desarrollo. Luego una vez que las pruebas en ambiente de Desarrollo han finalizadas esa orden es transportada a otro ambiente (Productivo por ej)

    Esta ventana indica en que orden de transporte quedar almacenado el objeto a crear. En caso de que no existe una orden se deber crear, lo cul se explica a continuacin.

    Cdigo de la orden: Ac va el cdigo de la orden de transporte.

    Crear orden: se debe presionar este botn en que caso de que no exista una orden de transporte.

    Cdigo de la orden de transporte

    Crear orden

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 57 de 103

    Paso 5:

    Al hacer el paso anterior se desplegar la siguiente pantalla:

    1. Short description: corresponde al nombre del paquete, por norma debe comenzar por Z Y.

    2. Guardar: se debe presionar este botn para guardar los cambios.

    Paso 6: Al hacer el paso anterior se desplegar la siguiente pantalla:

    1

    2

    Aceptar

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 58 de 103

    Al presionar el botn Aceptar de desplegar la siguiente pantalla:

    Ac se presiona el botn Guardar, con esta accin quedar almacenado en el diccionario el paquete creado.

    Guardar

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 59 de 103

    FUNCIONES DE GRUPO Crear una funcin de grupo

    A continuacin se describen los pasos para crear una funcin de grupo.

    Paso 1: 1.- Desde la pantalla principal de SAP, en la parte superior ingresar la

    transaccin SE80 y luego presionar Intro.

    Paso 2: Al hacer el paso anterior se desplegar la siguiente pantalla:

    1

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 60 de 103

    Ac se debe hacer clic sobre con el botn derecho del Mouse, sobre el primer tem del listado Object Name / Create / Function Group

    Paso 3: Al hacer el paso anterior se desplegar la siguiente pantalla:

    Donde:

    Function group: corresponde al nombre del grupo de funcin.

    1

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 61 de 103

    Short text: corresponde a la descripcin del grupo de funcin.

    Person responsible: es el usuario que crear, en este caso, el grupo de funcin.

    Save: se debe presionar este botn para guardar el objeto a crear.

    Paso 4: Realizar el paso 6 descrito en el tem Creacin de un dominio de datos.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 62 de 103

    Reportes ALV

    Los reportes ALV bsicamente son un conjunto de datos obtenidos a partir de una consulta a una o ms tablas de datos. La salida es generada con un formato ms elegante que un reporte normal.

    A continuacin veremos algunos ejemplos:

    Ejemplo N 1

    report grid_edit. * type-pools: slis. * Data to be displayed data: gs_layout type slis_layout_alv. Data tb_zpeliculas type table of zpeliculas . PARAMETERS p_pais like ZPELICULAS-pais_id. *---------------------------------------------------------------------* * Selection

    SELECT * into table tb_zpeliculas FROM ZPELICULAS Where pais_id = p_pais. * Eingabebereit gs_layout-edit = 'X'. * Call ABAP List Viewer (ALV)

    call function 'REUSE_ALV_GRID_DISPLAY' exporting i_callback_program = sy-cprog i_callback_user_command = 'USER_COMMAND' i_structure_name = 'ZPELICULAS' is_layout = gs_layout tables t_outtab = tb_zpeliculas. form user_command using r_ucomm type sy-ucomm rs_selfield type slis_selfield. if r_ucomm = '&DATA_SAVE'. message i000(0k) with text-001. call function 'REUSE_ALV_LIST_DISPLAY' exporting i_structure_name = 'ZPELICULAS' tables t_outtab = tb_zpeliculas. endif. endform.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 63 de 103

    Ejemplo N 2

    report grid_edit. * type-pools: slis. * Data to be displayed data: gs_layout type slis_layout_alv, it_fieldcat type slis_t_fieldcat_alv with header line. *********************************** Data tb_zpeliculas type table of zpeliculas . PARAMETERS p_pais like ZPELICULAS-pais_id. *---------------------------------------------------------------------* * Selection

    SELECT * into table tb_zpeliculas FROM ZPELICULAS Where pais_id = p_pais_de_entrada. * Eingabebereit

    gs_layout-edit = 'X'. perform create_fieldcat. * Call ABAP List Viewer (ALV) call function 'REUSE_ALV_GRID_DISPLAY' exporting i_callback_program = sy-cprog is_layout = gs_layout it_fieldcat = it_fieldcat[] tables t_outtab = tb_zpeliculas. form create_fieldcat. * Esturctura SLIS_FIELDCAT_ALV * tabname : Nombre de la tabla * fieldname : Nombre del campo de la tabla interna * ref_tabname : Tabla de referencia SAP * ref_fieldname: Campo de referencia SAP (el campo fieldname toma * las caractersticas del campo ref_fieldname) * ddictxt : El texto del encabezado sera (S)hort (M)iddle (L)ong * reptext_ddic : Informacin del encabezado de la columna * seltext_l : Texto largo * seltext_m : Texto medio * seltext_s : Texto pequeo * outputlen : 18. (ancho de la columna) * hotspot : 'X'. (se activa mano de seleccin) * key : 'X'. (muestra la columna en color verde y queda * fija en scrolling) * key_sel : Hace que la clave no sea obligatoria * col_pos : Numero de la posicin de la columna * just : Justificacin de salida (R)ight (L)eft (C)ent. * do_sum : El campo ser sumado * currency : Moneda de calculo * no_zero : No muestra valores con 0

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 64 de 103

    * no_out : El campo no aparece en la salida del reporte it_fieldcat-fieldname = 'PEL_ID'. it_fieldcat-tabname = 'TB_ZPELICULAS'. it_fieldcat-ref_tabname = 'ZPELICULAS'. * it_fieldcat-seltext_l = 'XXX'. * it_fieldcat-seltext_m = 'XXX'. * it_fieldcat-seltext_s = 'XXX'. * it_fieldcat-reptext_ddic = 'XXX'. APPEND it_fieldcat. it_fieldcat-fieldname = 'PELTXT'. it_fieldcat-tabname = 'TB_ZPELICULAS'. it_fieldcat-ref_tabname = 'ZPELICULAS'. APPEND it_fieldcat. it_fieldcat-fieldname = 'AGNO'. it_fieldcat-tabname = 'TB_ZPELICULAS'. it_fieldcat-ref_tabname = 'ZPELICULAS'. APPEND it_fieldcat. it_fieldcat-fieldname = 'DURACION'. it_fieldcat-tabname = 'TB_ZPELICULAS'. it_fieldcat-ref_tabname = 'ZPELICULAS'. APPEND it_fieldcat. it_fieldcat-fieldname = 'PAIS_ID'. it_fieldcat-tabname = 'TB_ZPELICULAS'. it_fieldcat-ref_tabname = 'ZPELICULAS'. APPEND it_fieldcat. it_fieldcat-fieldname = 'GENERO_ID'. it_fieldcat-tabname = 'TB_ZPELICULAS'. it_fieldcat-ref_tabname = 'ZPELICULAS'. APPEND it_fieldcat. it_fieldcat-fieldname = 'DIRECTOR_ID'. it_fieldcat-tabname = 'TB_ZPELICULAS'. it_fieldcat-ref_tabname = 'ZPELICULAS'. APPEND it_fieldcat. endform.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 65 de 103

    Ejercicio N 1: Crear reporte ALV, dado nombre de pelcula y nombre de director (select-options), entregue el siguiente listado:

    DVD ID Nombre Pelcula original Ao Duracin en minutos Pas de origen Gnero Nombre director Precio Unitario DVD Moneda Stock DVD

    Hint: Crear tabla interna con la mismos campos que se exigen en la salida del reporte, despus crear el fieldcat con esos campos.

    Hint: buscar en la se38 programas BCALV*, que son ejemplos dados por SAP. Por ejemplo el

    BCALV_FULLSCREEN_DEMO Solucion: Tables: zpeliculas, Zdirectores. Data tb_dvd like Standard table of zdvd with header line. Select-options: s_dnombre for zdirectores-nombre, S_pnombre for zpeliculas-peltxt. Start-of-selection. . Form read_dvd. Data v_director_id like zdirectores-director_id. Data v_pel_id like zpeliculas-pel_id.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 66 de 103

    Select director_id into v_director_id from zdirectores Where nombre in s_dnombre. Select pel_id into v_pel_id from zpeliculas Where peltxt in s_pnombre And director_id = v_director_id. Select * into table tb_dvd from zdvd Where pel_id = v_pel_id. Endselect. Endselect. Endform.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 67 de 103

    DYNPROS

    Definicin Una dynpro se podra definir como un conjunto de elementos que tiene por

    finalidad obtener interfaces para que el usuario realice diversas operaciones tales como ingreso de datos a tablas del sistema, exportacin de datos a un fichero (archivo) local a un servidor externo, entre otras.

    Creacin de una dynpro

    Paso 1: Con la transaccin SE38 creamos programa tipo M (modulpool)

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 68 de 103

    Paso 2:

    Ir a la transaccin SE51

    Y creamos la dynpro, en este caso la 0200. OBS : el N es arbitrario.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 69 de 103

    Paso 3:

    1. Atributes: Se deben revisar los atributos de la Dynpro

    Disposicin: al presionar este botn se abrir una ventana donde podremos disear la pantalla de la dynpro. Al hacerlo se desplegar la siguiente pantalla:

    2 1

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 70 de 103

    A la izquierda est el listado de objetos que podemos agregar a una dynpro. En nuestro caso queremos agregar campos de entrada/salida para ingresar datos de directores.

    Objetos que se pueden agregar a la dynpro

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 71 de 103

    Para insertar un objeto en la dynpro, simplemente se hace clic en el objeto de la lista y luego se dibuja con el mouse sobre la pantalla.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 72 de 103

    Ahora agregaremos un texto, para describir el campo de entrada. Para ello agregamos campo de texto.

    Variable ABAP en que guardaremos valor de campo de entrada

    largo

    tipo

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 73 de 103

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 74 de 103

    Se debe utilizar el mismo procedimiento para crear los otros campos,

    Texto a desplegar

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 75 de 103

    Una vez que se han creado los campos, se debe presionar el botn Logic Process (Lgica del Proceso)

    Logic Process

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 76 de 103

    Al realizar el paso anterior, se desplegar la siguiente pantalla:

    Ac tenemos el PBO y en el PAI.

    En el PBO definiremos el status GUI, de la dynpro, y el titulo. Para ello definiremos el modulo STATUS_0200. Tip : basta con descomentar la lnea y hacer doble clic sobre Module y lo creas. En este caso lo crearemos dentro del mismo programa ZDIRECTORES, pero se estila crearlo en un include para modulos PBO.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 77 de 103

    *&---------------------------------------------------------------------* *& Module STATUS_0200 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* module STATUS_0200 output. SET PF-STATUS 'STATUS'. SET TITLEBAR 'T01'. endmodule. " STATUS_0200 OUTPUT

    Definimos un status gui STATUS y un Titulo T01. Tip: doble clic sobre cada lnea y directamente lo creamos.

    Al aparecer el mensaje, de debe hacer clic en SI.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 78 de 103

    Luego al hacer clic en Aceptar aparecer la siguiente pantalla:

    Grabamos y activamos. Volvemos a la dynpro, lgica. Creamos el ttulo, equivalentemente, con doble clic:

    Nombre del Status GUI

    Descripcin del Status GUI

    A los iconos le asignamos un nombre de comando: SAVE BACK CANC

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 79 de 103

    Al hacer el paso anterior aparecer la siguiente ventana:

    En campo Titulo le damos nombre y luego se presiona el botn Enter. Al hacerlo, volveremos a la ventana de la lgica del programa.

    En el PAI tenemos que traspasar los campos de entrada en la pantalla al programa principal. Para ello usamos la instruccin field para cada campo de entrada.

    Instruccin FIELD

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 80 de 103

    Cada comando que ejecutamos en la dynpro tiene que asignarse a una variable, para ello, nos vamos a Lista Elem.

    Lo definimos como OK_CODE. Ahora agregamos la variable en el codigo ABAP

    *&---------------------------------------------------------------------* *& Modulpool ZDIRECTORES *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* PROGRAM ZDIRECTORES. data ok_code like sy-ucomm.

    Ahora tenemos que definir que hacer por cada accin que existe dentro de la pantalla, para eso creamos el modulo USER_COMMAND_0200 (doble clic).

    OK_CODE es solo un nombre

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 81 de 103

    *&---------------------------------------------------------------------* *& Module USER_COMMAND_0200 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE user_command_0200 INPUT. DATA fcode LIKE ok_code. fcode = ok_code. CLEAR ok_code. CASE fcode. WHEN 'SAVE'. PERFORM grabar_director USING zdirectores. WHEN 'BACK'. LEAVE TO SCREEN 0. ENDCASE. ENDMODULE. " USER_COMMAND_0200 INPUT *&---------------------------------------------------------------------**& Form grabar_director *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->ZDIRECTORES text *----------------------------------------------------------------------* FORM grabar_director USING zdirectores STRUCTURE zdirectores. INSERT INTO zdirectores VALUES zdirectores. IF sy-subrc = 0. MESSAGE s000(fb) WITH 'Director ingresado con xito'. Clear zdirector. ELSE. MESSAGE e000(fb) WITH 'Error ingreso director'. ENDIF. ENDFORM. "grabar_director

    Si observan, utilizamos la variable ok_code para determinar que botn se presion. En este caso definimos que para el botn SAVE (ver status GUI), grabamos el director y en el caso de BACK salimos de la transaccin.

    Ahora hay que asignar una transaccin a la dynpro

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 82 de 103

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 83 de 103

    Nombre

    Cdigo

    Tipo

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 84 de 103

    Luego presionamos el botn Guardar y listo.

    Para probar, primero presionemos el botn indicado como Crear nueva sesin Ahora ejecutamos la transaccin, va comando, para ello nos posicionamos en la parte superior de la pantalla e ingresamos la transaccin.

    N de la Dynpro

    Guardar

    Crear nueva sesin

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 85 de 103

    Esta es la DYNPRO que fuimos creando paso a paso anteriormente.

    A travs de esta interfaz, podemos ir agregando datos a la tabla. Para grabarlos debemos presionar el botn Guardar de la barra de herramientas.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 86 de 103

    A continuacin se muestra el cdigo que debe ser inserto, para ello se debe volver a la ventana de la lgica del programa

    *&---------------------------------------------------------------------* *& Modulpool ZDIRECTORES *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* program zdirectores. data ok_code like sy-ucomm. data: begin of zdirectores, director_id(10) type c, nombre(10) type c, nacion(2) type n, fec_nac type d, fec_mue type d, end of zdirectores. *&---------------------------------------------------------------------* *& Module STATUS_0200 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* module status_0200 output. set pf-status 'STATUS'. set titlebar 'T01'. endmodule. " STATUS_0200 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0200 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* module user_command_0200 input. data fcode like ok_code. fcode = ok_code. clear ok_code. case fcode. when 'SAVE'. perform grabar_director using zdirectores. when 'BACK'. leave to screen 0. endcase. endmodule. " USER_COMMAND_0200 INPUT *&---------------------------------------------------------------------* *& Form grabar_director *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------*

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 87 de 103

    * -->ZDIRECTORES text *----------------------------------------------------------------------* form grabar_director using zdirectores structure zdirectores. INSERT INTO zdirectores VALUES zdirectores. if sy-subrc = 0. message s000(fb) with 'Director ingresado con xito'. clear zdirectores. else. message e000(fb) with 'Error ingreso director'. endif. endform. "grabar_director process before output. module status_0200. * process after input. field zdirectores-director_id. field zdirectores-nombre. field zdirectores-nacion. field zdirectores-fec_nac. field zdirectores-fec_mue. module user_command_0200.999

    Una vez inserto este cdigo, chequeamos si no existen errores, guardamos y estaramos en condiciones en usar la interfaz para ir agregando, en este caso, nuevos directores.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 88 de 103

    SMARTFORMS

    Ejercicio N 1.

    El jefe quiere el listado de los usuarios que hay en Sap y quiere imprimir la siguiente carta:

    Santiago, 23 de Enero del 2006

    LISTADO DE USUARIOS SAP

    Empresa GlobalSap consulting, tiene los siguientes usuarios registrados en SAP. (Antes se deber crear la tabla ZUSUARIOS con estos campos).

    Codigo Usuario Nombre JVASQUEZ Jaime Vazquez CRUIZ Cristian Ruiz GGONZALEZ German Gonzalez PTAPIA Pablo Tapia

    Solucin:

    Desde la ventana principal de SAP, escribimos la transaccin SMARTFORM, creamos el smartform y definimos la tabla de entrada usuarios

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 89 de 103

    En este ejemplo usaremos la ventana MAIN que se crea por defecto, acurdense que el concepto de MAIN es el mismo que en el de los SAPSCRIPT.

    A la ventana MAIN le definiremos un texto llamado HEADER para colocar el texto de cabecera de la tabla.

    1. Interface form.

    2. TABLAS

    3. Def. Tabla ZUSUARIOS

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 90 de 103

    Fjate en el botn Lista de campos, ah en el extremo inferior izquierdo, salen todos los campos visibles para programa smartform, para poner la fecha utilizaremos la variable de sistema DATE, fjate que esto es drag & drop.

    Crear texto, HEADER

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 91 de 103

    De ah simplemente le colocas el texto tal cual como en un editor.

    1. Lista de campos

    2. Lista de campos

    4. drag & drop

    3. variable de sistema DATE

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 92 de 103

    Ahora hay que definir la tabla para la impresin de los usuarios:

    Creamos tabla:

    Lo que hay que definir es lo siguiente, la cantidad de columnas que tendr,

    Vamos a details

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 93 de 103

    1. Details

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 94 de 103

    Ojo con esto

    Definimos las columnas, en este caso son 2, una para usuario y otra para nombre, ojo con los largos que tiene que ser igual al ancho de tabla.

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 95 de 103

    Para trabajar con la tabla tenemos que definir un work area, que definimos en definiciones globales

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 96 de 103

    Volvamos a la tabla

    1. Datos globales

    Work area para la tabla

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 97 de 103

    Fjarse que las tablas tienen reas para Cabecera: normalmente aqu definimos el nombre de las columnas. Principal: las lneas se imprimen aqu. Pie: Ejemplo, impresin de los totales

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 98 de 103

    Entonces creamos Entrada en tabla, y definimos el tipo de lnea

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 99 de 103

    Notar que en cada columna(CELL), ponemos un campo de la work area y eso es todo

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 100 de 103

    Para que esto tengo sentido, hay que crear el programa ABAP de impresin, en este caso el YTEST_SMART, en la rutina siguiente se imprime:

    *&---------------------------------------------------------------------* *& Form print_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* form print_data. data: *smartforms related func_module_name type rs38l_fnam, control_parameters type ssfctrlop, output_options type ssfcompop. data: pa_form LIKE ssfscreen-fname . pa_form = 'YTEST_SMART'. output_options-tdnewid = 'X'. output_options-tdimmed = 'X'. output_options-tddelete = 'X'. control_parameters-no_dialog = ' '. * determine the name of the generated function module for the SMartform CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = pa_form IMPORTING fm_name = func_module_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. * call the generated function module of the form CALL FUNCTION func_module_name EXPORTING control_parameters = control_parameters output_options = output_options user_settings = space TABLES usuarios = user_name_address_tab EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 my_exception = 5 OTHERS = 6. endform. "print_data

    Lo ejecutamos y podremos observar el formulario creado.

    OBS: Un smartform es una funcin(SE37), entonces ac le pasamos el nombre del smartform y te pasa el nombre de la funcion. El nombre es del estilo

    /1BCDWB/SF00000172

    Aca ejecutamos la llamada al smartform como una funcin, le pasamos los parmetros de impresin y la tabla USUARIOS para imprimir

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 101 de 103

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 102 de 103

    *&---------------------------------------------------------------------* *& Report YTEST_SMART *& *&---------------------------------------------------------------------* *& *& *&---------------------------------------------------------------------* REPORT YTEST_SMART. data USER_NAME_TAB like standard table of USUSERS. data USER_NAME_ADDRESS_TAB like standard table of USADDR3. start-of-selection. perform get_users. perform print_data. *&---------------------------------------------------------------------* *& Form get_users *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* form get_users. CALL FUNCTION 'SUSR_USER_ADDRESS_READ_ARRAY' EXPORTING ALL_USERS = 'X' * IMPORTING * RETURNCODE = TABLES USER_NAME_TAB = user_name_tab * USER_ADDRESS_TAB = USER_NAME_ADDRESS_TAB = user_name_address_tab * EXCEPTIONS * INTERNAL_ERROR = 1 * USER_NAME_TAB_IS_EMPTY = 2 * OTHERS = 3 . IF SY-SUBRC 0. * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF. endform. "get_users *&---------------------------------------------------------------------* *& Form print_data *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* form print_data. data: *smartforms related func_module_name type rs38l_fnam, control_parameters type ssfctrlop,

  • Introduccin a la programacin en SAP - Lenguaje ABAP

    Pgina 103 de 103

    output_options type ssfcompop. data: pa_form LIKE ssfscreen-fname . pa_form = 'YTEST_SMART'. output_options-tdnewid = 'X'. output_options-tdimmed = 'X'. output_options-tddelete = 'X'. control_parameters-no_dialog = ' '. * determine the name of the generated function module for the SMartform CALL FUNCTION 'SSF_FUNCTION_MODULE_NAME' EXPORTING formname = pa_form IMPORTING fm_name = func_module_name EXCEPTIONS no_form = 1 no_function_module = 2 OTHERS = 3. * call the generated function module of the form CALL FUNCTION func_module_name EXPORTING control_parameters = control_parameters output_options = output_options user_settings = space TABLES usuarios = user_name_address_tab EXCEPTIONS formatting_error = 1 internal_error = 2 send_error = 3 user_canceled = 4 my_exception = 5 OTHERS = 6. endform. "print_data