MA - Clase SAP - A

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 33

Martes 08 Noviembre

OT
Clase desarrollo = paquete
Paquete local ($TMP), para asegurarse que no pase de una instancia a otra, solo para pruebas.

SE10, ver las OT o prepararlas


Tipos: Customizing -> configuraciones
Workbench -> objetos
Status OT: Modificable -> liberado
Una OT modificable permite que la sigamos utilizando y agregándole mas cambios.
OT puede incluir Tareas asociadas (ots), generalmente cuando varias persona ven una misma OT.
Solo el Arquitecto puede crear OT, los demás las usan o modifican.
Ideal, manejar el concepto de Proyecto para crear las OTs para trabajos que se realicen en la empresa
Al crear una OT y presionar “objeto local”, el SAP forzara y creara la OT de forma local a pesar de que tiene un nombre de
paquete distinto de $TMP.

Las Notas OSS de SAP dicen “Reparación”, mis OTs siempre dicen “Desarr/Corrección”. SAP modifica programas estándar y el
origen de esas modificaciones es otro sistema SAP no el nuestro.
SNOTE, para implementar notas OSS, identifica pre-requisitos.
Cuando modificas un objeto estas modificaciones pasan a la tarea del usuario.
Puedo incluir objetos sin modificar en una OT (padre), como?
Cuando liberas una tarea, sus modificaciones pasan a la OT (padre) y ya pueden enviarse al otro ambiente.

ABAP Debugger
/h: cambiar a la modalidad de debugger, sale un mensaje en la barra de status
Luego ejecutado cualquier transacción y se ejecutara paso a paso (F5) / ejecuta la rutina (no línea por línea) (F6) / salir de la
rutina (si estamos dentro) (F7)
F8 y se ejecuta todo y veo el resultado, se desactiva el debugger

Watch point: condición para que el debugger pare. Otro caso para identificar en que línea se cae (por privilegios por ejemplo)
Breakpoint: usando SE38 ir a la línea y marcar, el programa parara en esa línea.
Stop externo: bapis, acceso desde otros programas

Al entrar a una variable (doble click) podemos ver el contenido de la variable y cambiarlo para que continue la ejecución con el
valor que le damos.
Watch point, luego de colocarlo, presionar F8 para que pare en la condición, una sentencia después de que se cumple la
condición.

Diccionario de datos (SE11)


Las tablas con códigos tienes sus tablas por idiomas
Objetos de bloqueo, se generan automáticamente, para uso exclusivo de un objeto por un usuario se puede bloquear un
objeto en particular.
Vista: programa que accede a las tablas para visualizar o modificar la data
Tipos de datos (dimensión): Match code, puede configurarse por usuario indicando favoritos
Tabla de valores, tabla de validación, rutina conversión (visualizar el dato)
Los números se guardan con 0s a la izquierda, los alfanuméricos con espacios en blanco a la derecha
Los Matchcodes standard y los índices segundarios de las tablas se pueden modificar con una OT
SM12: relación de bloqueos de tablas por usuario, si se elimina el registro a una tabla, ya no estará bloqueada y otro usuario
podrá modificar la data. Esta transacción debe estar bloqueada para todos.

Desde SE11, ver en que objetos se usa un objeto en particular, ( ) Referencia de utilización.

1
Miércoles 09 Noviembre
Una tabla creada en la base de datos no se puede ver en el diccionario de datos, si la creamos desde el diccionario de datos la
podemos ver en ambos.
BKPF -> tabla transparente, es física, está en BD,
BSEG -> tabla cluster, no se ve en la BD, usa tablas transparentes encriptados, extrae la información de estas tablas y se
muestra.
T03 -> tabla tipo C (customizing), pq es una tabla de configuración – clases de documento. Pide una OT cuando hacemos un
cambio. Se crea primero en la instancia DEV o QAs.
Elemento de dato (de un campo de una tabla) -> hereda los atributos de un dominio, información que describe el dato.
Se puede ampliar la estructura de una tabla estándar.
Un campo creado tiene valor nulo para los registros ya existentes, para los nuevos registros tendrá valor espacio “ ”, para que
SAP inicialice todos los registros con espacio “ ”debemos marcar el indicador con el valor No Nulo.
No es obligatorio crear un Elem. Dato para un campo, pero es lo más recomendable. A excepción de campos que se usen para
interfacear otros sistemas que se usen en un solo programa.
Opciones técnicas:
Categ.tamaño, es solo una referencia, no restringe nada. No es modificable.
Grabación de memoria intermedia (buffer), está en megas, si esta activada guarda la información en el buffer.
Forma de grabar …, si dice grabado completamente en MI, guarda en el buffer toda la información de la tabla no solo los
registros leídos.

Creación de una tabla (SE11)


La pk y el mandante tienen que ser los primeros campos de una tabla
Todo objeto WB a crear debe empezar con una Z (o una Y – no se usa mucho).
Si grabe un objeto como local y quiero corregirlo, puedo cambiar el paquete.
Al activar, graba y activa a la vez.
Se creo una tabla, un elemento de dato y un dominio.
(desde la SE11) invocamos con el icono ( SE16) y me llama (“crea” la primera vez que se use) un programa (código largo)
para visualizar la data.
Uso de un matchcode automático:
Vamos al dominio del elemento de datos (del campo que queremos asignar un matchcode), pestaña ámbito valores, al pie
colocamos el mismo nombre de la tabla.
(si realizamos el pto anterior) El marchcode por defecto muestra la columna correspondiente, podemos agregar columnas
adicionales a la lista de valores (como descripción)
Ubicar un matchcode en una tabla (vinculo), ir detalles, ayuda p. búsqueda p.tabla, obtenemos el modelo del matchcode.
Desde la SE11 podemos visualizar el matchcode – opción “ayuda p.busqueda”
Tipos: Ayuda de búsqueda compuesta, usa varias ayudas de búsqueda elemental (varios filtros)
Al grabar siempre pide el paquete, y luego la OT.
Objeto, Status nuevo -> activar -> status Activo
El último clic siempre tiene que ser “activar”
El flag de “imp” sirve para llamar al matchcode desde el campo con el flag marcado y también para llenar ese campo con el
registro elegido.
Un matchcode se puede adicionar por tabla, elemento de dato, campo o dominio.
Vistas (interfaz) de Actualización
Es para crear programas de mantenimiento de una tabla (SE11), opción vista, opción vista de actualización.
Pestañas tablas/cond.conexion, luego Cpo.Vista (fijar los campos para la vista), luego stat.actual (interaccion con la tabla)
Para crear el programa (desde la vista) -> Utilidades / Generador actualiz.tab.
Niveles = Dympros (ejem: 10, 20)
Al crear nos pide 2 veces el paquete y la OT por los valores ingresados en las indic. Técnicas y en las imágenes de actualización.
Opción Sistema / status -> nos dice por ejemplo la dympro en la que estamos.
Crear la transacción asociada a la vista (SE93).

La transacción SM30
Sirve para llamar a la vista o la tabla si en caso no tenemos una transacción asociada, botón actualizar (modo modificación).
Para crear la transacción: llamar a la SM30, con la vista, y que no salga la primera pantalla: campo transacción, check omitir
imagen inicial, marcar SAP GUI (las 3), agregar en la lista el nombre de la vista (viewname, nn vista), agregar en la lista el modo
invocación (update, X) modo modificación – el X es como el check.
BSEG -> tabla cluster:
Si esta así, por la SE16 o SE11 no se puede ingresar información

2
La tabla RFBLG si es una tabla física

BSEG: Al visualizarla SE16, el campo VARDATA contiene toda la data del registro encriptado, también tiene los campos llave y
un campo PAGENO ¿?
Si vemos la RFBLG por la SE16 vemos la data real sin encriptación con todos los campos como son.

3
Jueves 10 Noviembre
Creación de llaves foráneas (SE11)
Desde la modificación de una tabla (SE11), pestaña Ayuda p/verif.entr, ….
Vista de supresión, solo se visualizan algunos campos de una tabla (extensa).
Todo esto aplica para tablas transparente, no tablas cluster.
Creación de Vistas (SE11)

Funciones
BAPI = Es una referencia, debe tener como Forma de ejecución remota (configuración). La palabra BAPI en el nombre no
asegura esto, uno debe verificar.
SE38, visualizamos un grupo usando el prefijo SAPL + nombre del grupo de funciones
Al crear un grupo se crean 2 funciones automáticamente:
INCLUDE L + nombre del grupo + _TOP
““ + _UXX
TYPE -> Luego viene el Elemento de Dato
Crear elemento de datos (SE11), opción tipo de datos, opción elementos de datos
SY_SUBRC, variable SAP que devuelve la función, si es 0 ejecución exitosa, de lo contario ocurrió un error.
Si vota un dump, es porque el programa no está manejando el Error.

4
Viernes 11 Noviembre (David):
Creación de Reportes
ZPSD02 -> Estadística de venta por títulos -> ALB Estructurado, tiene cabeceras, datos filtros, fechas, hora, tiene barra
herramientas (sumatorias, ordenamiento, disposición, exportación), columnas de colores, celdas por colores, posicionar en
cada celda, permite hacer doble clic sobre las celdas y llamar otras ventanas (smartforms, transacciones), en las celdas muestra
matchcodes.
ZPP03 -> ALB Estructurado
ZPP12 -> ALB Objetos (más eficiente)
Otro tipo de reporte: Smartforms, formularios - ejemplo: facturas, guía de remisión.
ZPSD02 – analizando el reporte:

Doble clic en Report: entramos al código del programa (similar al SE18)

5
Visualizar los objetos ( )

Transacción: es el nombre de la transacción creada para llamar al programa. Se le puede crear más de una transacción a un
programa.
Dynpros: pantalla presentación – layout, si dice 1000 es creada por SAP por defecto, generalmente cuando se programa por
código.
Subrutinas: creadas para el reporte.
Eventos: disparadores ante una acción del usuario. Ejem: llamada a un smartforms.
Macros: para crear una especie de variable global para una rutina, una copia en memoria que pueda usar cualquier rutina del
programa.
Sentencia DEFINE.

Tipos: Son las estructuras (records, pueden tener varios campos), dependiendo de la declaración puede tener varios registros.
No se pueden usar directamente, sirven para declarar Tablas internas, siendo estas ultimas las que se usan en el programa. En
el código sentencia TYPE: BEGIN OF.

Campos (Variables): Lista de los campos creados por código o directamente en el nodo (si es así se genera el código de la
definición del campo). Se pueden crear variables de tipo tabla interna (TYPE STANDARD/SORTED/HASHED TABLE OF “NOMBRE
DE LA ESTRUCTURA - TIPO”) cuyo tipo es una Estructura. Sentencia DATA.

6
Estructuras Dict: son las tablas estándar y Z que se usan en el programa, en el código sentencia TABLES. No se inscriben las
tablas que se usan para declarar tipos de datos.

Se pueden crear múltiples tipos de datos (nodo Campos):


Workarea: Se declaran con LIKE (LINE OF nombre tabla interna / nombre estructura). Se usan como tablas temporales para
copiar el contenido de una tabla interna que se use en otro momento.

Field-Symbols: Punteros, <nombre del puntero> LIKE (LINE OF nombre tabla interna / nombre estructura). <nombre del
puntero> TYPE (nombre un campo / “nombre tabla – nombre campo” / elemento de dato) – apunta solo a una variable.

Campo: LIKE Sy-datum (=Syst-datum), Syst = Estructura del sistema que guarda la información de la sesión (fechas, horas,
usuario, etc).

Rangos (RANGES:) Una variable declarada como Ranges tiene atributos por defecto (sign, option, low, high), el valor es del tipo
declarado con FOR.

(*)ctrl+F: para buscar dentro del código.

Otro tipo de declaración (rango tipo tabla interna – varios registros):

Constants:

7
Creación de una Dympro (pantallas)
En el árbol, crear Dympro, luego click en el Layout.

En el Layout () para extraer campos de una tabla, generalmente para visualizar su información.
El bloque que vemos en código corresponde al icono Marco.

Parámetros de entrada:
Recomendación de David: los parámetros de entrada deben ingresarse por código.

Rango

(*)Mara: tabla maestro de materiales

Para modificar el texto por defecto que le da el SAP a los campos que uno va añadiendo a la Dympro.

Eventos, que deben crearse siempre (otra manera de manejar esto es con INCLUDES - preguntar):
INITIALIZATION
AT SELECTION-SCREEN

Siempre debe colocarse la sentencia INITIALIZATION, para inicializar nuestras variables con las variables del sistema.

8
Mostrar la pantalla de parámetros, luego colocamos AT SELECTION-SCREEN para dispara la pantalla de entrada de
parámetros:

Otros AT-SELECTION-SCREEN propios de este reporte (investigar después)

Entrada de parámetros (usuario), luego siempre debe venir START-OF-SELECTION, para que el programa entre en un modo de
espera (wait), donde el usuario ingrese los parámetros de entrada y ejecute el reporte (F8). Una vez ejecutado (F8) continuara
con la ejecución de las demás líneas del reporte (sentencias PERFORM) usando los parámetros ingresados. Si no colocamos
esta la línea el reporte no se ejecutara – no mostrara los resultados.

Layout de Salida del ALV (salida del reporte)


Para pintar los campos en los ALVs se usan datos de tipo estándar:

Luego en el código (líneas más abajo) iniciamos la rutina de presentación del reporte (salida) FORM alv_columnas, y usamos
estas variables:

Llenamos la data (previamente obtenida en tablas, variables, etc) en la variable declarada para visualizar los resultados:
posición, nombre del campo de la tabla (se cargo previamente), nombre de la tabla (se cargo previamente), cabecera de la
columna, color de fondo. Finalmente pintamos estos datos en el reporte usando la sentencia APPEND.

9
Lunes 14 de Noviembre 2011

Tanto los smartforms como los ALV usan una tabla interna con el contenido de los datos a mostrar, incluyen totales, cálculos,
etc.
Smartforms, recibe tabla interna llena a través de una función, del SE38 al formulario.

Estructura de la tabla interna – depende de cada reporte, cada campo es una columna de la ALV. Aquí es t_salida

Declaración de variables que usan este tipo (ESTRUCTURA)

(*) Otra forma: wa_salida LIKE ty_detalle

Llenado de variables:

PERFORM -> Llama a una rutina, que empieza en FORM / END FORM.

10
Una vez llena la tabla interna, ejecutar la rutina que presentara los datos en pantalla.

(*) averiguar diferencia entre CLEAR y REFRESH

Llenado de datos en la tabla de salida g_fieldcat (tipo tabla).

“seltext_m” -> lo que se pinta en la cabecera de cada columna

“fieldname” -> es la información que va a ser presentada en esa columna, se asigna una vez y el reporte carga toda la columna.

Se usa un loop para llenar las columnas en base a la lógica del reporte.

11
Averiguar que hace alv_fill_layout.
Alv_lineas_de_titulo, pinta la cabecera del reporte, incluye fecha y hora.
alv_carga_evento, para que se dispare y muestre la cabecera (perform anterior)
alv_desplegar, analizar y revisar que hace m_sort

Revisando la lógica de extracción de datos

Perform Carga_datos

(*)mkpf: tabla de cabecera de documentos de material, no esta la clase de movimiento, tampoco el material.

JOIN: FROM TABLA FOR ALL ENTRIES IN TABLA_INTERNA

(*)vbfa: tabla de flujo de documentos comerciales


Averiguar como funciona vbfa => vbtyp_n = ‘J’ y vbtyp_v = ‘C’ porque colocan esos valores

Si el SELECT anterior encontró algún registro (y no hubo error), continuar con el contenido del IF:

(*)mseg: tabla de segmento (detalle?) de documentos de material, aquí si esta la clase de movimiento y material.

Declaración de parámetro para rango de materiales (s_matnr):

Este campo tiene los atributos de la MARA (no es la tabla en si), como podemos ver en la ayuda de la pantalla:

Campo en el código ABAP: S_MATNR

12
Buscando movimientos de anulación de un movimiento, se hace haciendo referencia al documento original (padre) en la tabla
hija. La tabla hija guarda esto como referencia el movimiento padre al cual esta anulando.

T_mseg, posee todos los movimientos de venta, buscamos si estos tienen movimientos de anulación, esto tambien se guarda
en la tabla mseg:

Smbln = documento de material de movimiento padre (referencia)


Sjahr = ejercicio de movimiento padre (referencia)
Smblp = posición de movimiento padre (referencia)
Bwart = movimiento (en este caso de anulación)

(*) mara: tabla maestro de materiales


(*) t023t: tabla de grupos de artículo
(*) MAKT: tabla de descripción de material
(*) t247: tabla de meses, en SPRAS = ‘S’ para indicar que es en idioma español

Si hubo un error esta variable siempre devolverá un valor = 1

Mensaje en la barra de mensajes:

Type = ‘S’, es lo estándar


Display like ‘W’

READ TABLE

Transporting no fields

13
CHECK log_exp: Si log_exp es incorrecta culmina con la actual iteración del loop y continúa con la sgte.

 En particular, este check TERMINA la actual iteración del loop si el READ TABLE (sentencia anterior) lee algún registro (sy-
subrc = 0). Pasa a la sgte iteración del LOOP.
 Si la condicion se cumple (el READ TABLE no devuelve registros: sy-subrc <> 0) CONTINUA con las sgtes instrucciones del
LOOP.

Es decir, continúa con el LOOP (sentencia Perform) si el movimiento de venta (en cuestión) no tiene anulaciones. No toma en
cuentan los movimientos que tienen su correspondiente movimiento de anulación.

14
Martes 15 Noviembre (Jorge)

Ampliaciones:
Notas OSS: mejoras al SAP

Los user exists (Include _..._Z_) solicitan una clave, dado que se va a modificar el estándar.
Customer exit
BTE
BADI
Enhancement Business (add-ins)(puntos de ampliación): objetos dentro del sistema que están inactivos, listos para ser
utilizados por el cliente.
vtm?

Personalization: configuraciones hechas en el sistema propias del cliente relacionadas a roles y perfiles.

SE93: visualizar información de una transacción


SE18: ver todos los badys existentes en el sistema (usan objetos)
SE19: implementar un bady (activar) y vemos los badys que están implementados

Ejemplo Bady: XXXXXX “si esta activado se ejecuta cuando documento en moneda extranjera, el usuario no ingrese el tipo de
cambio”. Esta información la podemos encontrar en foros o documentación SAP.

Documentación SAP: www.sdn.sap.com


Sapass.metro.client.jp (uses exits)

S11: reutilización de objetos, clases, buscamos funciones en base a la tabla que guarda la información (ejemplo jerarquías)

SMOD: para ver o crear una ampliación dentro del sistema de tipo Customer exit. Ejemplo: VO5I0001

Vemos sus componentes (botón componentes) -> toda ampliación tiene 4 componentes
Tiene 03 user exits, deben trabajar las 3 en conjunto, no deberíamos activar solo alguna de ellas, pq por algo SAP las ha
empaquetado.

15
User Exit: Tiene por nombre EXIT_NombrePrograma_Correaltivo

Vemos el código del user-exit, para añadir funcionalidad a un User Exit se hace a través del INCLUDE (un include empieza
generalmente en ZXV)

Vamos al programa SAPLV05I (SE38), y buscamos donde se llama al user_exit.

Vamos al botón search usando CALL CUSTOMER

16
Encontramos (vemos que la 001 esta en varios programas)

Revisamos el primero 001 (doble click):

Doble clik en 001 y nos lleva a la ampliación que lo contiene:

17
Al revés, buscamos su ampliación en SMOD

Encontramos:

18
CMOD: Activar o desactivar Ampliaciones.
Una ampliación solo puede estar asignada a un proyecto.
Para que ya no funciones debemos desactivarla, no es necesario borrar el código.

Buscamos por Proyecto (ejem: ZFI):

Visualizamos:

Buscamos sus ampliaciones (asignación ampliación):

Vemos si esta activada (botón componentes), vemos si incluye exits.

El check en verde indica que esta activado.

19
Para buscar si un programa usa user_exits, ir a su programa, buscar CALL CUSTOMER, con ello encuentro el/los USER EXISTS
que tiene, luego voy a la CMOD y veo si tiene algun proyecto activado. Con esto compruebo si esta funcionando o no.

Para buscar objetos que usen otro objeto ir a Referencia de utilización, con ello puedo encontrar funciones, rutinas que puedo
necesitar para trabajar con ese objeto.

FILL EXIT?

20
Miércoles 16 Noviembre (Jorge)

Batch Input: ingreso masivo de datos a partir de un archivo secuencial.

SM35:
SU3
SE11

Tabla BDCData: tabla que existe en el sistema, entiende a partir de una estructura.

Vemos con la SE11

La estructura puede tener lo sgte:

BDC_CURSOR: campo donde debe aparecer el cursor


BDC_OKCODE: /carácter del enter

21
SU01: Información del usuario (antes de cambiar algunos atributos con el Batch input)

Luego de entrar el usuario, enter y pasamos a esta dympro:

Vamos a cambiar el valor de tratamiento, colocar un departamento.

22
SM35: creamos el modelo de grabación para la carga masiva.

Opción de grabación

Opción Grabación nueva, llenamos un nombre y el código de la transacción que queremos cargar en forma masiva (SU3):

23
Ingresar los datos, presionar el ENTER, luego grabar. Nos bota de la transacción y nos muestra una pantalla con la estructura de
con los datos que hemos ingresado. Grabamos.

Icono de
modificar

Se puede optimizar,
cambiar /00 por
=CHAN, eliminar todo
el segundo bloque.

Icono de
grabar

Grabamos: sale: salimos: , obtenemos:

Vemos que ya esta guardada.

Para probarla, seleccionamos el registro y presionamos , ejecutara paso a paso la estructura que hemos grabado,
finalmente si todo ok guardara el registro con los cambios. Procesar tiene una opción para procesar con debuging.

24
Para preparar el archivo de carga, tenemos que crear el fichero presionamos y lo buscamos con la AL11.

AL11: directorio de todas las carpetas del SAP, buscamos nuestro archivo (por defecto lo guarda en el DIR_HOME):

Filtramos en File Name con el nombre del archivo que hemos creado (fichero*)

Vemos el archivo (doble click)

25
Ahora creamos el Juego de datos (en la SM35), seleccionamos el registro y presionamos y presionamos

No se podrá ejecutar
hasta esa fecha

Esto genera un conjunto de datos (no lo ejecuta SAP), es como una foto con todos los pasos que SAP realizara con los datos
ingresados en el paso anterior.

Retrocedemos:

Lo ejecutamos , luego

26
Confirmamos los pasos y al final:

Podemos ver el resultado de lo procesado. Foto con el dympro que va a ser trabajado más adelante. Todo juego de datos bota
un Log.

FALTA

27
SM35, seleccionamos grabación y creamos el Programa correspondiente, botón

Obtenemos:

Confirmamos y colocamos titulo, tipo, status

28
Luego confirmamos la primera opción y aparece

Elegimos un paquete y grabamos

Nos solicita la OT

29
Creamos una nueva OT y grabamos

Vemos el programa con la SE38: ZSU01_9X_PROG, este programa será usado para la carga masiva.

30
Ejecutamos F8

El carácter “/” (campo INDICADOR NODATA del programa generado) al inicio de un campo en el archivo de carga, indica al
programa que no utilice este campo, es decir no será cargado. No hacerlo con campos llave.
Cambiamos algunos datos.

Se trabaja con el archivo creado anteriormente (formato creado por la estructura), para ello debemos transferirlo a nuestra PC
(en la ruta SAP no se puede modificar), lo modificamos y lo volvemos a transferir al servidor.

Jorge tuvo un problema con los caracteres al pasar el archivo a su PC, el SAP ya no lo reconoció.

31
CG3Z: Para transferir un archivo al servidor

32
Preguntas para Jorge:
Como añadir un objeto a una Ot sin modificarlo
Programas sin calculo de coma fija (algunos programas estándar)
Se puede hacer un join entre tablas internas, ejm: mkpf, mseg
Link para ver la Gama de ampliaciones posibles SAP
Puntos de ampliación?
Read table

33

También podría gustarte