Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Modulos de Sap PDF
Modulos de Sap PDF
Finanzas (FI)
FI Contabilidad
AA Activos Fijos
AP Deudores
AR Acreedores
GL Contabilidad General
LC Consolidación
SL Contabilidad Especial
CO Costes
ABC Control de Costes Basado en Actividades
OM Costes Operativos
PA Análisis de Rentabilidad
PC Costes de Productos
EC Controling Corporativo
EIS Sistema de Información
MC Consolidación
PLA Contabilidad de Centros de Beneficios
IM Inversiones
IM Inversiones de Capital
FA Medidas de Recursos Inmovilizados Tangibles
TR Tesorería
CM Caja
FM Presupuestos
TM Tesorería
MRM Riesgos
Recursos Humanos (HR)
PA Administración de personal
APP Candidatos
BEN Beneficios
EMP Empleados
INW Incentivos
PAY Nómina
TIM Gestión de Tiempos
TRV Gestión de Viajes
PD Modulo de desarrollo
OM Organización
PD Desarrollo de Personal
RPL Planificación y Reserva de Salas
SCM Seminarios y Convenciones
WFP Planificación del Trabajo
Logística (LO)
LO Logística
ECH Cambios de Ingeniería
EHS Medio Ambiente, Salud y Seguridad
LIS Información Logística
MD Datos Maestros
PR Previsiones
VC Configuración de Variantes
MM Materiales
CBP Planificación Basada en Consumo
EDI Intercambio Electrónico de datos
IM Inventario
IS Información
IV Facturas
POR Compras
WM Almacén
PM Mantenimiento de planta
EQM Equipos y Objetos Técnicos
IS Información de planta
PRM Mantenimiento Preventivo
PRO Proyectos de Mantenimiento
SMA Servicios
WOL Órdenes de Mantenimiento
PP Producción
ATO Ensamblaje
BD Datos Básicos
CRP Planificación de Capacidad
IS Información de Producción
KAB Kanbam / Just–in–time
MP Planificación Maestra
MRP Planificación de Necesidades de Material
PDC Recolección de Datos de Planta
PI Planificación de Producción para Industrias por Procesos
REM Fabricación Repetitiva
SFC Órdenes de Producción
SOP Ventas y Operaciones
PS Proyectos
APP Presupuestos
BD Datos Básicos
EXE Ejecución / Integración
IS Información de Proyectos
OPS Estructuras Operativas
PLN Planificación
QM Calidad
CA Certificados de Calidad
IM Inspecciones
PT Herramientas de Planificación
QC Control de Calidad
QN Notificaciones
SD Ventas y distribución
GF Funciones Generales
BIL Facturación
CAS Soporte a Ventas
EDI Intercambio de Datos
FTT Comercio Exterior
SIS Información de Ventas
MD Datos Maestros
SHP Envíos
SLS Ventas
TR Transporte
SAP R/3
En el proceso de elaboración de un pedido todos los documentos generados se guardan
en VBRK, VBRP, VBAK y VBAP.
Las transacciones de pedido son VA01 (crear), VA02 (modificar) y VA03 (visualizar).
La transacción SE11 se usa para crear, modificar y visualizar las tablas de diccionario.
La transacción SE16 sirve para ver los datos de una tabla. También podemos verlos
desde la SE11 si pulsamos sobre Contenido.
La transacción MM01 sirve para crear materiales. La transacción MM02 se usa para
modificar los materiales existentes. La transacción MM03 se utiliza para visualizar los
materiales del sistema.
La transacción SPRO nos nuestra las especificaciones de SAP.
La transacción ST05 nos muestra el TRACE–SQL, y sirve para grabar las consultas que
hace el estándar de SAP desde una transacción para, por ejemplo, ver que campos,
tablas o funciones utiliza.
La transacción AL11 nos sirve para ver todos los ficheros del servidor.
La función TH_POPUP se utiliza para mandar mensajes internos a cualquier usuario del
sistema SAP.
El botón Referencia de utilización sirve para visualizar todos los programas, clases,
tablas, etc., que usan o llaman esa tabla, programa, función, etc.
Los menús “Sistema” y “Ayuda” están en todos los sistemas ABAP y son siempre
iguales. El resto de menús pueden variar dependiendo de la máquina o la transacción.
QUERYS
Hay que dar 5 pasos:
1.- Usuarios
2.- Grupos de usuarios
3.- Información
4.- Fuente de datos
5.- Query
Desde la pantalla de selección Menú Sistema Status y desde Report nos mostrará
el código fuente de la consulta.
Las transacciones para hacer querys son: SQ01 para crear la Query, SQ02 para crear el
Infoset y SQ03 para crear grupos de usuarios.
INFOSET
Son las consultas (query) a medida.
En fuente de datos seleccionar Unión de tablas (si son varias tablas) o Lectura directa (si
es solo una tabla)
Crear nuevo grupo de campos y pulsar Detalles. Pestaña Detalle creamos nuestros
campos. Seleccionamos el tipo, longitud, etc. En la pestaña Coding introduciremos el
código y guardamos. Selecciona los campos en visualización y guardamos. Verificamos
y activamos el Infoset. Asignamos a un grupo de usuarios.
Seleccionamos la query creada y con el asistente que sale dando a siguiente
seleccionamos los campos que queremos mostrar. Pulsamos “lista básica”.
Para crear campos de una Query vamos al menú Tratar Campo local Crear
Campo de cálculo, donde le ponemos el tipo de campo y una formula. Pinchando sobre
“calculo complejo” podemos crear fórmulas complejas, con más de una condición.
CREAR USUARIOS
En la transacción SU01, se elige un usuario ya creado y se copia el perfil. Luego se
procede a las modificaciones.
ENTORNOS DE SAP
Desarrollo. Para programar y crear programas. Apenas tiene datos.
Test o Integración. No se puede programar. Para la fase de pruebas. Existen datos casi
reales.
Producción o Productivo. Fase de producción. No se puede programar. Hay datos
reales. Es el entorno de trabajo del cliente.
Las tablas internas son las que nosotros creamos y se ejecutan solo mientras se ejecuta
el programa. Las tablas de diccionario son las que están integradas en SAP, también las
Z que nosotros creamos.
Los parámetros son variables que esperan que se le faciliten datos. Se declaran con
PARAMETERS: nombre1, nombre 2… El nombre del parámetro no puede ser mayor
de 8 caracteres.
La instrucción TABLES se usa para definir las tablas de diccionario que se usarán en el
programa. Debe ponerse al principio del código.
Para definir una variable como fecha usaremos DATA: fecha LIKE SY-DATUM. El
valor de esta variable será la misma que la del sistema SAP.
La forma de llamar a los campos es: tabla–campo. Ejemplo: tabla SY–campo DATUM.
SY–SUBRC puede contener los valores 0 ó 4. 0 significa que la operación anterior ha
sido correcta, se ha realizado sin errores. 4 significa que algo ha fallado.
SY–TABIX contiene el número de línea o registro sobre el que se está trabajando
actualmente.
SY–INDEX contiene el número de repeticiones de un bucle, el número actual de
repetición del bucle.
SY–DBCNT contiene la cantidad de registros afectados por la última operación
procesada.
En las tablas, la cabecera muestra el registro en el que estamos. Todos los datos se
cargan en la cabecera, que contiene solo un registro, y es sobre la cabecera de la tabla
sobre la que trabajamos.
Una estructura es como una tabla pero de solo un registro, es solo cabecera.
Las tablas internas se definen con DATA: BEGIN OF nombre OCCURS n, .… END
OF nombre. Con el OCCURS nº definimos la memoria que queremos que tenga la tabla,
el número de registros que almacenará. Si ponemos OCCURS 0, se va reservando
memoria a medida que se llena la tabla.
Si queremos que nuestra tabla interna tenga todos los campos de una tabla de
diccionario pondremos INCLUDE STRUCTURE nombre_tabla. Ejemplo:
Para rellenar una tabla interna con los datos de la cabecera de otra tabla igualaremos los
campos y a continuación pondremos la instrucción APPEND TO tabla. Es aconsejable
que después de un APPEND se ponga un CLEAR tabla–campo.
Otra forma de copiar datos sería tabla2[] = tabla1[], pero deben tener la misma
estructura.
Para leer un registro de una tabla usaremos READTABLE. Debe ir bajo una condición
especificada con WHERE. Ejemplo: READTABLE tabla WHERE condición. Pondrá
en la cabecera de la tabla el primer registro que cumpla esa condición. Con
READTABLE tabla INDEX nº leeremos el registro n de la tabla. Ese número puede ser
un entero, una variable, sy–tabix, etc.
Para buscar datos dentro de las tablas podemos hacerlo con LOOP y una condición o
con la siguiente instrucción SQL: SELECT * FROM tabla WHERE condición …. END
SELECT. Si ponemos a continuación de las condiciones UP TO var ROWS solo
buscaremos en las var filas especificadas. Para llenar una tabla interna con esa búsqueda
utilizaremos: SELECT * FROM tabla INTO TABLE tabla_interna WHERE condición
…. END SELECT. Con esto machacamos todos los datos que contuviera la tabla
interna; si queremos que los datos se mantengan utilizaremos: SELECT * FROM tabla
APPENDING TABLE tabla_interna WHERE condición.
Si queremos seleccionar un registro para bloquearlo de posibles modificaciones
utilizaremos la instrucción: SELECT SINGLE FOR UPDATE * FROM tabla.
Mediante INSERT tabla FROM TABLE tabla_interna. introducimos datos desde una
tabla interna a una de diccionario.
CASE var1 …. WHEN …. WHEN OTHERS …. END CASE se usa en lugar del IF
siempre que se conocen las opciones. Es el Select …. End Select de VB.
Con LOOP AT tabla nos movemos por la tabla. Si ponemos LOOP AT tabla INTO
tabla_interna copiamos el contenido. Es equivalente a MOVE–CORRESPONDING.
Los SELECT–OPTIONS son parámetros pero con rango. Se usa como filtro para los
SELECT. Sintaxis: SELECT–OPTIONS nombre FOR tipo (tabla–campo). Si no
queremos pedir los datos al usuario pondríamos RANGES a continuación.
Los datos que contienen los SELECT–OPTIONS son:
SIGN I o E, incluye o exclude
OPTION EQ o BT. EQ si se introduce solo 1 valor, BT si se introducen los 2.
LOW Rango inferior
HIGH Rango superior
Con DEFAULT le pasamos un valor por defecto a una variable o parámetro. Con
DEFAULT ‘X’ activamos un CHECKBOX o RADIOBUTTON.
La instrucción MESSAGE xNNN (clase) WITH && o var1. Sirve para imprimir
mensajes de error. La x puede ser W (warning, continua la ejecución), E (Error, finaliza
la ejecución), I (ventana informativa emergente), A (Cancelación) o S (Continuación).
NNN indican el número del mensaje. Clase indica la tabla o archivos con los mensajes.
La instrucción SORT tabla BY campo1, campo2 la utilizaremos para ordenar una tabla
interna por esos campos. En las tablas internas que estén ordenadas ponemos utilizar las
siguientes instrucciones dentro de un bucle LOOP:
AT FIRST …. END AT. Sirve como tratamiento de ruptura de datos para el
primer registro de la tabla.
AT NEW ‘campo’ …. END AT. Sirve como tratamiento de ruptura de datos
para cada nuevo valor del campo. Desde el campo especificado hacia la derecha de la
tabla, todos los campos contendrán el valor “*”. Si queremos realizar operaciones con
esos datos debemos pasarlos antes a una estructura con el MOVE–CORRESPONDING.
AT END ‘campo’ …. END AT. Sirve como tratamiento de ruptura de datos para
cada fin del campo. Desde el campo especificado hacia la derecha de la tabla, todos los
campos contendrán el valor “*”. Si queremos realizar operaciones con esos datos
debemos pasarlos antes a una estructura con el MOVE–CORRESPONDING.
AT LAST …. END AT. Sirve como tratamiento de ruptura de datos para el
último registro de la tabla.
ON CHANGE ‘campo’ …. END ON. Sirve como tratamiento de ruptura de
datos para cada registro que cambie anterior al especificado.
La instrucción COLLECT suma o añade. Si encuentra un registro en la tabla interna
cuyos campos char son iguales, los campos de tipo de datos package, float o integer los
sumará. Si no encuentra ningún registro con campos char iguales añadirá un campo
nuevo.
La instrucción COMMIT WORK AND WAIT se utiliza para forzar a nuestro programa
a que espere hasta que se termine de actualizar la base de datos.
La instrucción UPLOAD sirve para subir datos desde el cliente a SAP o viceversa.
La instrucción DOWNLOAD sirve para bajar datos desde SAP al cliente.
Cuando insertamos una función en nuestro código salen comentadas las variables que
son opcionales.
Con la instrucción TYPES se utiliza para declarar nuestros propios tipos de datos.
La instrucción CONDENSE borra todos los espacios en blanco de una cadena dejando
uno. Si especificamos NO–GAPS los elimina todos.
Dentro del debug, el WatchPoint sirve para ver un dato concreto dentro de un bucle.
La instrucción DEFINE (que está en desuso) es igual que los PERFORM. Se suele
poner antes del START–OF–SELECTION. Ejemplo:
DEFINE nombre
CLEAR &var1, &var2, ….
REFRESH &var1, &var2, ….
END–OF–DEFINITION
Para usarlo utilizaremos la siguiente sintaxis: nombre tabla_interna.
TABLAS
La transacción SM30 sirve para introducir y actualizar los datos de una tabla de
diccionario.
Para crear una tabla usaremos la transacción SE11, especificaremos el nombre y
pulsamos Crear. Elegir la clase de la tabla y activar Permitir actualización (para poder
modificar los datos desde la SM30) en Atributos. En la pestaña Campos pondremos
todos los que consideremos, teniendo en cuenta que los campos clave deben ir todos
seguidos y al principio de la tabla. El campo mandante debe ser el primer campo. Para
especificar que un campo es clave pulsaremos Clv. Inic indica que el campo no puede
estar en blanco. En tipo de campo podemos buscar campos ya creados para usar en
nuestra tabla o crear el nuestro, si elegimos la opción Elemento datos / Tipo directo.
Cuando tengamos todos los campos guardamos la tabla y pinchamos sobre Opciones
técnicas; donde especificaremos la clase de datos y el número de registros máximo que
puede tener la tabla. A continuación Activaremos la tabla para que la podamos usar.
Si especificamos un campo para almacenar precios, debemos crear un campo moneda.
En tipo de campo pulsar F4 y poner WAERS. Debemos referenciar el campo precio al
campo moneda en la pestaña Campos moneda / cantidad. Siempre es preferible
especificar un campo dentro de nuestra tabla.
Debemos generar el actualizador de tablas (transacción SE55) para poder hacer
funcionar la SM30. En grupo de autorizaciones especificaremos quien puede acceder.
Por defecto, para que acceda todo el mundo poner &NC&. En grupo de funciones
especificaremos la misma tabla. En imágenes de actualización indicaremos el modo de
visualización, siendo un nivel para que todos los campos salgan en la misma pantalla.
Para generar el Número de imagen, si no lo sabemos, pincharemos sobre Buscar Nº
imágenes y Proponer. Grabaremos siempre en estándar.
Los Tipos de datos se crean también en la SE11. En caso de no utilizar Dominio, poner
Tipo instalado y especificar el tipo de datos. En Denominación de campo especificar
solo el Denominador de campo en todas las opciones (no es necesario poner longitud, lo
hace automáticamente SAP). Activamos el tipo de datos para poder utilizarlo en las
tablas.
Los Dominios también se crean en la SE11. Son tipos de datos creados por nosotros.
Especificamos el tipo de datos, los caracteres, decimales y la longitud de salida. En la
pestaña Ámbito de valores establecer los valores del dominio. Activar para poder usar.
Sólo se pueden utilizar dentro de un elemento de datos.
Para introducir datos manualmente dentro de una tabla vamos a Utilidades Contenido
de tabla Registrar entradas, dentro de la tabla.
BATCH–INPUT
La transacción SHDB es la grabadora de datos. La transacción SM35 también nos da
acceso a la grabadora de datos y más opciones para los juegos de datos.
Los Batch–input se utilizan para la carga masiva de datos desde archivos a tablas de
diccionario. Los BI pueden ser online (se ejecutan la momento) o de fondo
(programados para un momento determinado). Los BI de fondo pueden ser visibles (que
se vea lo que hace) o invisibles (que no se vean o que no se vean hasta que haya un
error). Las tablas internas en un BI deben ser siempre del formato BDCDATA.
Ejemplo: tabla_interna LIKE BDCDATA. Los campos deben crearse con LIKE y no
con INCLUDE STRUCTURE para que funcionen bien. Los BI tienen 3 pasos:
1.- Pasar los datos de un fichero (txt o Excel) a una tabla interna. El archivo debe
tener la misma estructura que la tabla, y los campos vendrán separados por una
tabulación.
2.- Hacer la grabación del juego de datos
3.- Pasar los datos de la tabla interna a la base de datos.
Abrir la grabadora, ponerle un nombre y la transacción que queremos grabar. A
continuación debemos realizar nosotros en esa transacción todos los pasos a realizar por
el BI pero solo para un registro. Cuando hayamos terminado pinchamos en guardar y
pulsamos F3 hasta que nos salga la pantalla de la grabación con el código para usar en
nuestro programa.
Los modos de visualización de un BI son A (vemos todos los procesos), N (no vemos
nada hasta el final) y E (no vemos nada hasta que ocurra un error).
Los procedimientos para pasar la tabla interna a la base de datos son:
PERFORM nombre_pantalla USING ‘programa’ ‘pantalla’ ‘X (sólo si es 1ª
pantalla’
PERFORM nombre_campo USING ‘campo_tabla’ campo_tabla_interna o
‘valor’
Estos procedimientos los utilizaremos por cada fichero que debamos subir.
Para poder salir de un BI ponemos ‘/BEND’ en el valor del campo.
En la función WS_UPLOAD en la opción Filetype podemos poner DAT (archivo de
datos tabulados), ASC (archivo ASCII), BIN (archivo binario), DBF (archivo DBASE),
IBM (ASCII con codepage) o WK1 (hoja de calculo).
Si tenemos que hacer cualquier modificación (crear campos, borrarlos, etc.) hay que
volver a hacer la grabación y modificar el código fuente.
Los juegos de datos son BI preparados para lanzarse en cualquier momento. El LOOP
debería ser:
LOOP AT tabla_interna
AT FIRST
PERFORM iniciarJuegoDatos función BDC_OPEN_GROUP
ENDAT
PERFORM tratarDatos Los perform pantalla y campos
PERFORM insertarDatos Función BDC_INSERT
AT LAST
PERFORM cerrarJuegoDatos Función BDC_CLOSE_GROUP
ENDAT
END LOOP
En la función BDC_OPEN_GROUP, Group es el nombre del juego de datos guardado,
Keep es para mantener guardado el juego o eliminarlo, User será ‘SY–UNAME’.
En la función BDC_INSERT, Tcode es la transacción a ejecutar, Dynprotab es la tabla
interna (batch2).
FUNCIONES
La transacción SE37 sirve para crear o modificar funciones.
Todas las funciones tienen los siguientes parámetros:
EXPORTING var = valor. Variables a exportar desde nuestro programa hacia la
función. En la función entran como Importing.
IMPORTING var = valor. Es un parámetro opcional. Variables que importa el
programa desde la función. En la función son los Exporting.
TABLES = tabla. Es un parámetro opcional. Tablas a tratar. Deben tener la
misma estructura en el programa que en la función. Suele ser la misma tabla.
EXCEPTIONS var = valor. Es un parámetro opcional. Son las excepciones o
errores.
En la transacción SE37 tenemos varias pestañas para cada función. En Import nos salen
todas las variables que importa y los atributos de esa variable. En Export salen todas las
variables que exporta la función. En Exception debemos definir todas las excepciones
que pueda tener la función.
Las instrucciones que van dentro de una función no llevan punto (.) al final. Solo se
pone el punto (.) al final de la función, como ultima instrucción.
En la función, la excepción se llama con RAISE nombre_excepcion. Devuelve un
código para poder tratarlo; este código esta definido en el programa en el apartado de
EXCEPTIONS en la llamada a la función. Para usar ese código se haría con IF SY–
SUBRC = valor_excepcion. Se puede poner como ultima excepción OTHERS = valor,
para poder utilizarlo en el caso de no tener contemplado el error. Los valores de la
excepción pueden ser cualquiera salvo 0.
FORMULARIOS (SAPSCRIPT)
Los formularios se crean, modifican o borran en la transacción SE71. Los formularios
se pueden crear con SAPSCRIPT o SMARTFORM. Los formularios se utilizan para
imprimir plantillas fijas.
Si queremos tener una vista preliminar del formulario iremos al menú Utilidades
Impresión test. Escogemos la impresora (normalmente la local) y a continuación en
Visualizar.
Para borrar líneas del editor hacemos doble clic sobre la línea a borrar y después en
Borrar.
Podemos crear una ventana con un logotipo. Para ello creamos la ventana y ponemos el
siguiente código: INCLUDE ’nombre_logo’ OBJECT TEXT ID SDVD PARAGRAPH
ST. A continuación debemos poner el tipo de la ventana a GRAPH (no antes, dado que
el modo GRAPH no deja escribir código)
Los logos se suben desde la transacción SE71, menú Entorno Gestión Gráfico.
Archivos en servidor doc. GRAPHICS. BMAP, especificamos el logo y el color, para
subirlo pulsaremos F5 y elegir la imagen .TIFF a subir.
AYUDAS DE BUSQUEDA
Se crean en la transacción SE11 pinchando sobre Ayuda de búsqueda. Seleccionar
simple y rellenar todos los datos de la pestaña Atributos.
En método de selección especificar la tabla para la que queremos la ayuda e ir
seleccionando los campos.
Si queremos que se muestre en la ayuda de búsqueda debemos marcarlo como “exp”.
En P.I. especificaremos la posición en la que aparecerá el campo. Si el campo lo hemos
marcado como EXP debemos especificar un número de posición.
En PosS especificaremos la posición en la ventana de dialogo. Puede estar vacío o
contener el mismo valor que P.I.
En V.S. especificamos si el campo se puede modificar o solo visualizar. Para que no se
pueda modificar debemos marcar esta opción.
Los tipos de diálogos pueden ser:
Dialogo dependiente.
Visualización de valores inmediata. Salen los valores del campo directamente.
Dialogo con limitaciones.
Si la ayuda de búsqueda es compuesta, pondremos una descripción, las ayudas simples
que contiene y asignaremos los parámetros a las ayudas simples.
MODULE POOL
Se crean en la transacción SE80.
TABLE CONTROL
Es un componente de un Module Pool.
Creamos una dynpro. Pulsamos dispos. y elegimos Table Control. Cogemos un campo
de entrada / salida y lo ponemos dentro del Table Control. Como nombre le ponemos el
campo de la tabla a la que va asociado y pulsamos “Enter” y a la pregunta que nos hace
le decimos que SI. Añadimos los campos que queramos y después con el campo de
texto ponemos el nombre de las columnas.
En el modulo TOP pondremos:
CONTROLS: nombre_table_control TYPEWIEW USING SCREEN ‘pantalla’.
En la pantalla del table control poner después del Module Status:
LOOP AT tabla_interna WITH CONTROL table_control CURSOR
table_control–CURRENT_LINE.
MODULE Pasar_Datos.
ENDLOOP
Y después del Process After Input:
LOOP AT tabla_interna
MODULE Grabar_Datos.
ENDLOOP
ORDENES DE TRANSPORTE
Se ven en las transacciones SE09 Y SE10.
Normalmente, los programas, tablas, etc., no se guardan en local. Se meten dentro de
una orden de transporte. Para ello al crearlo en el cuadro de dialogo introducir la orden
de desarrollo (que nos la proporciona el consultor) y pulsar en Grabar; saldrá una nueva
ventana pidiendo la orden de transporte (que también nos la proporciona el consultor).
Las órdenes de transporte deben pasarse en el orden de creación. Cada orden tiene
asignada una tarea.
Para liberar una orden de transporte, pulsar F9 y pulsar guardar. Saldría de ventana de
documentación.
Antes de liberar una orden hay que verificar la orden. Se hace en el menú Orden / Tarea
Verificación completa, elegir todos los pasos.