Académique Documents
Professionnel Documents
Culture Documents
Included Applications
o Applications for Governance, Risk, and Compliance (GRC)
o Applications for Performance Management
o SAP Enterprise Resource Planning (SAP ERP)
o SAP Customer Relationship Management (SAP CRM)
o SAP Supplier Relationship Management (SAP SRM)
o SAP Supply Chain Management (SAP SCM)
o SAP Product Lifecycle Management (SAP PLM)
o Banks, . Healthcare, Universities and research institutes, Internal & external security, Public sector, Insurance, Service
industry,Wholesale, Retail, Logistics service providers, Media industry, Telecommunications, Utilities industry,
Automobile industry, Construction industry, engineering, construction and operations, High tech and electronics
industry, Consumer products industry, Aerospace and space industry, Mechanical engineering,etc.
Technology platform is designed for the flexible, step-by-step and efficient introduction of important IT processes in companies. Is also
the technical basis for the forward-looking, service-oriented architecture for business applications (SOA).
Reducing the amount of manual work required. SAP NetWeaver is based on a technology using industry standards and can be
enhanced with popular development tools such as Java 2 Platform, Enterprise Edition (J2EE), Microsoft .NET and IBM WebSphere.
IT practices enable you to reach your company's goals. The aim of the IT scenarios is to help you as a customer, partner or service
provider with the installation, configuration and operation of SAP NetWeaver and the implementation of your defined IT scenarios.
UNIT 2: NAVIGATION
This software component can consist of a group of processes (such as a SAP Web Application Server) and is then called a
server for that service. Software components that use a service are called clients. At the same time, clients can also be servers
for other specific services.
For sap system:
o Presentation processes (for example, for displaying screens)
o Application processes (for example, for executing application programs)
o Database processes (for example, for managing and organizing database data)
Cuando instalas tienes q decidir como distribuir los procesos con el hardeware q tienes.Hay varios tipos:
o In single-tier configurations, todos los procesos se ejecutan en la misma pc.(sap on a laptop)
o Two-tier: se usa otro servidor solamente para los procesos de presentación o graficos. Es lo usual y puede mantener
el performance pero si excede el limite de usuarios puede generarse un cuello de botella entonces es mejor tener un
3er nivel.
o 3 niveles: cada proceso tiene su propio host.
Tipos de SAP Netwear AS:
o AS ABAP system
o AS Java System
o AS Abap+Java system
Una característica de SN AS es que las tablas abap, programas y aplicciones están en el esquema ABAP de la BD.
AS ABAP architecture:
o The central instance se reconoce porque the message server and the enqueue work corre aqui. Sirve para la
comunicación interna y para saber cual sistema esta disponible. Otras instancias se llaman dialog instance.
o Gateway: conecta 2 sistemas diferentes
o Servidor de mensaje: es el que hace el balanceo de carga.
o NO SE DEBE HACER TABLA INTERNA DE UNA TABLA BUFFEREADA.
o SM50, SM51:
AS JAVA Arquitecture:
o El central instance se reconoce cuando el Software Deployment Manager (SDM) corre aquí. El message service y el
enqueue service corre en el central service instance.
AS ABAP+JAVA Arquitecture:
o ICM: internet communication manager, es el que decide quien atiende el requerimiento.
o JCo: SAP Java Connector, permite la comunicación de ambos ambientes.
o La data esta separada en su respective esquema de datos.
Cuando accedes por el sap gui, los requerimientos son procesados por el ABAP RE(runtime Environment) y si es via browser
podría ser atendido por el JAVA RE o ABAP RE, según el tipo de requerimiento.
Processing user request by sap gui: se hace a traves de los 3 niveles: presentacion(sap gui), aplicación (abap dispatcher y
buffer) y el database level.
Sm50: para ver los workprocess. Los tipos de workprocess: dialog, background, lock, update(up1(critico), up2(no critico)),
spool.
Wp de dialogo: en linea, si se quiere actualizar se apoya en el wp lock. Se maneja por los usuarios. Y los background por los
jobs
Tener al menos 2 wp de dialogo y 2 de background.
Wp update solo actualiza BD.
El servidor de mensajes mantiene la conexión entre los dispatcher de cada servidor de aplicaciones.
Un servidor de aplicaciones solo puede tener 1 dispatcher.
Gateway: puede conectar diferentes sistemas.
ICM: para comunicar por web servidores de aplicación que pueden ser abap y java.
AS ABAP Process:
AS JAVA Processes:
TRANSACTIONAL PROCESSING IN AS ABAP: Caracteristicas principales(ACID): Atomic, Consist, Isolated, Durable. Multiplexing:
trabaja con diferentes work process.
Processing Dialog Requests
Database Transactions and ABAP Transactions
Siempre que hay un pai o un pbo hay un db transaction y el abap transaction es todo el proceso completo.
Relación entre transaccion de BD y SAP transaccion: work process must start a new database transaction for each dialog step.
Sap system tiene su propio administrador de bloqueo, es implementada usando el enqueue work process. Existe una lock table
in the main memory.
Diferentes modos de bloqueo:
Write locks (lock mode Exclusive): data can be edited only by one user.
Read locks (lock mode Shared): several users can have read access to the locked data at the same time.
Enhanced write locks
Optimistic locks
Administrar bloqueos sm12. Eliminar bloqueo por sesison sm04
En sap la actualización es asíncrona, es decir se va guardando la data y al finalizar recién se hace el commit definitivo.
Funciona asi:
o El programa bloquea la data para otros usuarios.
o Si tiene permiso para modificar la data el usuario puede modificarla por la sap transaction.
o Escribe los cambios en las tablas VB*
o Para terminar, cuando el usuario poner guardar recién se hace el commit work.
o Basada en la información q lanza después del commit, se lee el log.
o Luego se graban las tablas objetivos y se borran las tablas VB*, si es ocurrió un error se deja como estaba y en las
tablas VB* la data se marca como defectuosa.
o Se resetean los bloqueos.
Tipos:
o V1 update: time-critical-primary
o V2 update:non.time critical-secondary.
Own spolol : sp02
Background processing
Sm36: jobs
Processing web request: ICM(Internet communication manager)
tecnologias interfaz usadas en SAP ALE: Application Link Enabling, BAPI: Business Application Programming Interface,
CPI-C: Common Program Interface Communication, EDI: Electronic Data Interchange, HTTP: HyperText Transfer Protocol, LU
6.2: Logical Unit Type 6.2, RFC: Remote Function Call, OLE: Object Linking and Embedding, SMTP: Simple Mail Transfer
Protocol, SOAP: Simple Object Access Protocol, TCP/IP: Transmission Control Protocol / Internet Protocol, XML: Extensible
Markup Language
RFC: interface protocol based on CPI-C or TCP/IP. Simplifica el proceso de comunicacion entre 2 sistemas diferentes.
Administrar rfc: se37 y configuración de de conexiones RFC: SM59
Trusted RFC
BApi: son modulos de funciones especializadas, pueden ser accedidos por RFC interface, y creados y administrados por
Function Builder(se37). Representa los métodos de los BO.Sirve para conectar con programas externos, con internet, etc. Esta
definida en BOR como método en sap business object.
Lee el BOR(business object repository): BAPI, para activar un BOR: SWO1.
Web services: sap netweaver es su plataforma de desarrollo. Es un servicio que provee un program interface, esta disponible
via internet protocols. Son funciones individuales de una aplicación directamente disponible.
Basic estándar son implementados:
XML: extensible markup language
SOAP: simple object Access protocol, protocol que puedes usar para llamar a los web services en sistemas distribuidos. Usa
HTTP para transportar el protocolo
UDDI: Universal Description, Discovery and Integration, es un directorio de servicios y it’s provided by soap interface.
WSDL: Web service description Language, es un meta lenguaje para describir los WS, las funciones, parámetros, códigos de
retorno son son descritos en una forma legible por maquina
Outline of a web service
SNW AS(Sap netweaver aplication server) sigue el principio de cliente/servidor, es escalable y consta de 3 niveles:
o Database level, la data es administrada con la ayuda de una RDBMS
o Aplication server level, donde corre los abap programs
o Presentation level, contiene el user interface donde cada uno puede acceder al programa, ingresar data o recibirla.
Normalmente un programa no se compone de un solo bloque sino de varias unidades, eso se conoce como Modularizacion.
El repositorio consiste en todos los objetos de desarrollos(programas, funciones, tablas, etc) Tu puedes tener objetos SAPy
objetos del cliente. En cuestión de base de datos es independiente al cliente que se aplique.
El repositorio es dividida según los modulos o componentes. Todo objeto que se crea debe ser asignado a un paquete.
El object navigator: incluye todas las herramientas para crear o editar los objetos del repositorio. Por ejm: abap editor, abap
dictionary, screen painter, menú painter, etc.
6.2 Developing Programs and Organizing Developments
Todos los proyectos de desarrollo se llevan a cabo en el sistema de desarrollo, los obj. Se crean y editan luego son
transportados por medio de los change request al siguiente sistema. Dentro del change request se crean tareas.
Las ventajas son que cada empleado va a saber que actividades ha realizado. Un obj. Puedes ser procesado por todos los
empleados pero para eso se crea una tarea por cada uno dentro del mismo request.
Creacion de un paquete.
Creacion de un programa:
o The activation of an object includes the following functions:
Saving the object as an inactive version
Syntax or consistency check of the inactive version
Overwriting the previously active version with the inactive version (only after a successful check)
Generating the relevant runtime object for later executions, if the object is a program.
Creacion de programas
Modularization unit es una parte del programa en el cual una parte de la funcionalidad es encapsulada para que puedas
utilizarlo las veces que quieras. Es más transparente y facil de mantener.
Local Modularization: Subrutinas y Metodos en clases locales
Global Modularization: modulos de funciones y métodos en clases globales
Data encapsulation: la data no debe ser cambiada directamente por el programa call.
El numero total de parámetros en una unidad de modularizacion se llama interface or signature(importing, exporting y
changing parameters)
Tiene los parámetros: import, export, changing y exceptions. Import: puede haber opcionales es decir puede o no recibir valor.
Export: siempre son opcionales.
Cuando llamas a una función después de otra del mismo modulo de funciones no necesitas cargar de nuevo el modulo ni las
variables.
Toda bapi o RFC no maneja excepciones, pero debe manejarse por una tabla de mensajes.
Tienen la opción de traspaso de valores, es decir es una copia y no debería cambiar el valor del programa que llama.
Business object and BAPIS:
o BOR(Business Object Repository) es una clase de las tablas SAP y las bapis(business aplication programming
interface) son los métodos que permiten acceder a la data.Son funciones que pueden llamar remotamente desde otro
sistema.
o Ejemplos: getlist, getdetail, additem, removeitem, create, change, delete, cancel.
o TX: BAPI
La diferencia es que cuando usas funciones dentro de un programa, esa funcion puede ser llamada desde fuera pero en las
clases solo los métodos públicos puedes ser llamados desde fuera; los métodos privados solo se llaman dentro del mismo
programa como las subrutinas.
Otra diferencia es que con las funciones solo puedes crear una instancia y con los métodos puedes crear las que quieras.
Cada instancia puede tener diferentes valores del atributo. CREATE OBEJCT.
Los static attributes solo tienen un valor en todo el programa.
Clase => método
Handling Classic Exceptions
cl_bc400_compute=>get_power
EXPORTING
iv_base = pa_int1
iv_power = pa_int2
IMPORTING
ev_result = gv_result
EXCEPTIONS
POWER_VALUE_TOO_HIGH = 1
RESULT_VALUE_TOO_HIGH = 2.
CASE sy-subrc.
WHEN 0.
WRITE gv_result.
WHEN 1.
WRITE 'Max Value for Power is 4'.
WHEN 2.
WRITE 'Result value was too high'.
ENDCASE.
TRY.
cl_bc400_compute=>get_power
EXPORTING
iv_base = pa_int1
iv_power = pa_int2
IMPORTING
ev_result = gv_result.
WRITE gv_result.
CATCH cx_bc400_power_too_high .
WRITE 'Max Value for Power is 4'.
CATCH cx_bc400_result_too_high .
WRITE 'Result value was too high'.
ENDTRY.
8.5 Modularization with Methods of Local Classes (Preview)
La diferencia entre clase global y local, es que la primera puede mantenerse con el Class Builder y las locales son creadas
directamente desde el programa principal.
Tiene 2 bloques: definition and implementation of the class
Los input parameters pueden ser opcionales poniendo en la declaración OPTIONAL o DEFAULT.
9.1 Working with Structures: Hay 2 maneras de crear, dentro del programa y en el abap dictionary.
9.2 Using internal tables: Se usan para: retener data de tablas o archivos que se van a procesar, para mostrar data, o para alimentar
funciones o métodos.
Cuando una table entry es accesada especificando el row number se llama index Access y cuando es accesada por key
value se llama key Access.
Standard Table: index y key Access pueden usarse. Debes usar este tipo si usas mas el index para accede a la tabla.
Sorted Table: index y key Access pueden usarse. Debes usar este tipo si usas mas el key para accede a la tabla y necesitas q
la data automáticamente se ordene por la key.
Hashed Table: solo key Access puede usarse. Debes usar este tipo si tienes una tabla con bastante data y si solo vas a
accesar por la key.
Para la declaracion de table: DATA: gt_tabla TYPE TABLE OF st_tabla. Los valores por default son:
o Table type: Standard (default)
o Uniqueness of key: Non-unique (only option for a standard table)
o Table key: Default key (All non-numeric table fields are key fields)
Modos de acceso:
Append solo para standard tables.
Procesar set de data:
With standard tables, this content is appended, in sorted tables, the row is inserted in the right place with reference to the key
fields, and in hashed tables it is inserted according to a hash algorithm.
El numero de row e un Loop es sy-tabix.
Sorted table es mejor para hacer loops y hashed tables para hacer read table.
En un sort si no se especifica siempre es ascending por default.
Refresh = clear a una tabla sin cabecera.
Diferencia entre Refresh y Free: los 2 limpian totalmente la tabla pero el primero conserva la parte de la memoria asignada.
There are four types of reuse components that encapsulate database accesses:
o Logical databases = data retrieval programs that read data from tables that belong together Hierarchically.
o Function Modules = subroutines stored in the function library of the SAP system with encapsulated functions, such as
reading from hierarchically related tables)
o BAPIs = Methods of Business Objects with read function
o Methods of global clases
SY-DBCNT contains the number of records read en un select.
Array Fetch es la tecnica cuando se hace un select se guardan los datos en una table interna con INTO TABLE. El transporte
de data es en bloque y no de row by row como en el caso de SELECT, ENDSELECT.
Se pueden crear secondary indexes para realizar búsquedas con campos q no son clave.
La data se llena primero desde el buffer pero si se necesita la mas reciente es con bypass the buffer pero debe evitarse.
Cuando se requiere acceder a 2 tablas para mejorar performance se debe utilizar JOIN.
Tienes que especificar 3 cosas para un TABLE JOIN:
o Join tables
o Join conditions
o Join columns
En vez de hacer join puede crearse vistas en el diccionario.
Ejm: MODIFY et_flights FROM ls_flight INDEX sy-tabix TRANSPORTING percentage.
Does the client limitation have to be specified in the WHERE clause of a SELECT statement if the database table to be read
has the client field? Answer: No; if the client limitation is missing, only records of the executing client are read - that is, the client
in which the program is called.
Las Brechas en la final del índice (es decir, los campos más a la derecha) son menos críticos
que las brechas en el principio
Si no se usa bien las llaves primarias puede empeorar el performance porque se hace un scan total a la tabla.
Es mejor indicar cuales campos exactamente necesitan en el select.
En el select con array fetch la data es transferida en bloques de 32k.
Si quieres realizar operaciones es mejor usarlas en el select como SUM, AVG, COUNT; AX; MIN.
Es mejor utilizar JOIN y VIEWs en vez de los select anidados.
Para buscar funciones donde se usen vistas es
por la Tx: SE84, SE81.
TABPAGES control:
La evaluación de los datos ingresados se hace en el AT SELECTION-SCREEN. Si un error ocurre todos los parámetros están
habilitados para ingreso de datos.
ON <f> ó <seltab> : si un error ocurre solo estos campos estarán habilitados para ingreso de datos.
ON BLOCK: sirve para evaluar un juego de datos que esta en un grupo. Si un error ocurre, todos los campos dentro del grupo
estarán habilitados para input.
ON END OF <seltab>: evento pertenece al PAI para multiples selecciones(rango).
Variantes: las variantes pueden transportarse, un usuario puede crear cualquier cantidad, y estas variantes solo son validas
para el mismo programa, no pueden ser compartidas con otros.
Se puede proteger una variante de cambios no autorizados, seleccionando como Only Display in Catalog, entonces solo será
accesado por abap developers.
El sy-ucomm = sscrfields-ucomm.
Hide => screen-active = 0, Show => screen-active =
1, screen-input = 1.
Se puede cambiar los campos haciendo el LOOP
AT SCREN.
UNIT 13: PROGRAMS CALLS AND DATA STORAGE MANAGEMENT
Leave to transaction: termina una transacción para empezar otra, es como /N<tx>.
Con el Call transaction: insertas una transacción y la otra permanece en pausa.
Diferencia entre sesion interna y externa, es que cada ventana de sap gui es una sesión externa y puedes abrir hasta 6
simultaneamente. La sesión interna es dividida en sesiones internas(en una pila) que pueden ser máximo 9.
Grupo de programas: cuando se crea una nueva sesión interna, siempre se crear el programa principal del grupo, se pueden
crear cualquier numero de programas dentro de la misma sesión.
Todos los programas dentro de un grupo comparten las mismas tablas declaradas. Y cuando se usa un call screen llama a los
screen del programa principal.
Cuando llamas a funciones o métodos de una clase o grupo de funciones que no ha sido llamado antes, se carga en un grupo
de programas adicional dentro de la misma sesión interna. Caso contrario a cuando se llama subrutinas del mismo programa,
ahí solo se llama a la subrutina y sigue siendo del mismo grupo de programas de la misma sesión interna.
Modos de traspasar data de un programa a otro.
Lo anterior es usando el submit, pero usando el call transaction puedes pasar una tabla interna, por ejm cuando hacemos un
batc-input.(arriba derecha)
Sap Memory: los valores en el sap memory duran hasta que la sesión del usuario es finalizada. Todas las sesiones externas
de un usuario tienen acceso a esta memoria.
Se usa el SET PARAMETER ID y GET PARAMETER ID…FIELD ….
En el abap dictionary se define el nombre de parámetro que debe tener el elemento de datos y con ese ID se seteo u obtiene el
dato.
Abap Memory: los valores son almacenados dentro de cada sesión externa. Es usada para intercambiar datos entre cualquier
de las sesiones internas de la misma sesión externa.
Para inicializar el abap memory se pone /i.
Se usa el EXPORT … TO MEMORY ID , IMPORT … TO MEMORY ID, y para liberar la memoria: FREE MEMORY ID.
Cuando haces un call transaction usas el abap memory.
Se usa el code inspector para chequear tus programas en performance, seguridad y errores semánticos.
Performance:
o Are indexes used for database access?
o Have any SELECT statements been embedded in loops?
Security
o Are other clients accessed within the program?
o Are dynamic elements used in the SELECT statement?
Typical semantic errors
o Is the sy-subrc checked after each AUTHORITY-CHECK statement?
o Is a client actually specified in the CLIENT SPECIFIED statement?
o Are several type E (error) messages sent consecutively?
Al final recives una lista de errores o warnings.
Si no quieres que salga como error o warning una línea del código al final se debe agregar “#EC
El code inspector también se puede ejcutar llamando a la tx SCI. Donde hay 3 cosas que puedes verificar: Variantes, Object
sets, inspections(si necesitas guardar el resultado de la inspection o también si quieres hacerlo en fondo).
Check categories:
o General Checks: contain data formatting, such as the list of table names from SELECT statements.
o Performance Checks: contain checks for performance and resource usage, such as:
analysis of the WHERE condition for SELECT / UPDATE and DELETE
SELECT statements that bypass the table buffer
low-performance access to internal tables
o Security Checks: contain checks of critical statements, cross-client queries and insufficient authority checks.
o Syntax Check/Generation: contain the ABAP syntax check, an extended program check, and generation.
o Programming Conventions: contain checks of naming conventions.
o Search Functions: contain searches for tokens (words) and statements in ABAP source code.