Tabla de Contenidos

Aprendiendo SAP

En este apartado voy a ir poniendo mi aprendizaje personal con SAP.

¿Que es SAP?

SAP son las siglas de Systems, Applications, Products in Data Processing. Es un sistema informático basado en módulos integrados, que abarca prácticamente todos los aspectos de la administración empresarial y que se adapta a todas las necesidades de una empresa. Está creado para abarcar todos los sectores del negocio. El lenguaje de programación que usa SAP es el ABAP y es muy parecido al SQL.

¿Qué son los módulos SAP?

El sistema SAP está compuesto de una serie de áreas funcionales o módulos, que responden de forma completa, y en tiempo real, a los procesos operativos de las compañías. Aunque pueden ser agrupados en tres grandes áreas (financiera, logística y de recursos humanos), funcionan de un modo integrado, dado que existe una conexión natural entre los diferentes procesos.

En el área financiera, el módulo FI proporciona una visión completa de las funciones contables y financieras, e incluye un amplio sistema de información y de generación de reportes para facilitar la toma de decisiones. El módulo CO (Controlling) se utiliza para representar la estructura de costos y los factores que tienen influencia, lo que genéricamente se conoce como contabilidad interna de las compañías. Otros módulos son IM (Gestión de inversiones) y TR (Tesorería).

En el área logística, el módulo LO brinda las herramientas e informes necesarios para analizar y gestionar el estado de la logística de la compañía y realizar previsiones en la cadena de suministros. El módulo MM (Gestión de materiales) comprende todas las actividades con la adquisición y control de los inventarios, en tanto PM (Mantenimiento) se encarga de los sistemas de control de plantas y PP (Planificación y de la producción) engloba las diferentes tareas y metodologías utilizadas en el proceso mismo de la producción, SD (Ventas y distribución) es el módulo comercial.

El módulo de Recursos Humanos (HR) incluye todos los procesos necesarios para controlar y gestionar de una manera eficaz las necesidades de recursos humanos de las empresas: desde la gestión de candidatos hasta la elaboración del desarrollo del personal, así como el control de tiempos. Sus componentes abarcan el soporte total para la administración de salarios y nóminas, modelos de turnos, planificación de trabajo, gestión de viajes, entre otros.

El módulo de Gestión de Relaciones con los Clientes nos sirve para administrar todos nuestros contactos con nuestros clientes mediante un registro de cualquier actividad que hubiéremos entablado con el mismo. Si el cliente nos llamó para consultarnos, esto queda registrado en la base de datos, si llamamos nosotros al cliente para ofrecerle un producto esto queda registrado, si a raíz de ese llamado el cliente realizó una compra esto también queda registrado.

Además de los módulos estrictamente funcionales existe una arquitectura técnica -denominada SAP Netweaver- con sus correspondientes módulos técnicos que se enumeran a continuación:

ERP

El sistema ERP está compuesto de una serie de módulos funcionales que responden de forma completa a los procesos operativos de las empresas.

CA-Cross Application (Aplicación Cruzada, aplicable a todos los módulos de SAP)

FI-Financial Accounting (Contabilidad financiera)

La contabilidad financiera sigue unos requerimientos legales, ya que es la que se presenta a personas externas a la empresa.

CO-Controlling (Contabilidad Analítica)

El Controlling ayuda en la gestión de la empresa. Es por tanto de uso interno.

IM-Capital Investment Management (Gestión de Inversión y su Capitalización)

Permite el control y seguimiento de proyectos de inversión. Gestiona la planificación, presupuesto, contabilizaciones reales y capitalización de la inversión.

EC-Enterprise Controlling (Control de Empresa)

TR-Treasury. (Tesorería)

PS-Project System (Sistema de Proyectos)

LO-Logistics General. Logística General

HR-Human Resources (Recursos Humanos)

HR-PA Personnel Administration (Administración de Personal)

SAP Landscape

Ambientes que componen un sistema SAP

sap-landscape.jpg

Implementando SAP

Administrando SAP - Basis

Cuando hablamos de SAP Basis, nos referimos a la capa de base de las aplicaciones SAP, el consultor Basis se encarga de instalar la plataforma SAP y los módulos requeridos.

Optimización del sistema SAP

GNU/Linux

Podemos ver la nota referida a configuración de páginas grandes memoria : Hugepages. Si utilizamos VMware, posiblemente necesitemos tambien cambiar el planificador de disco de la máquina virtual.

Acerca de SuSE LiNUX y SAP

1999First Linux certified for SAP software
2006First operating system certified for SAP Adaptive Computing Controller (ACC)
Selected operating system for use with SAP BWA
SAP's Linux/UNIX software development platform
2007First virtualization (Xen) validated for SAP
First joint seamless and integrated Linux support through SAP Solution Manager
2008Co-development of SUSE Installation Wizard for faster deployment of SAP and SUSE software
Selected operating system for use with SAP Business ByDesign
SAP Pinnacle Award 2008 Winner
2009Selected operating system for use with SAP HANA
SAP Pinnacle Award 2009 Finalist
2010Four validated high availability best practices for SAP environment
First Linux supported on Amazon Web Services
2011Availability of SUSE Linux Enterprise Server for SAP Applications, the most optimized operating system for SAP workload with built-in high availability, faster deployment, page cache management, enterprise support services
2012Distribution of ClamSAP (anti-virus connector to ClamAV) with SUSE Linux Enterprise Server for SAP Applications
First Linux distributor to certify High Availability solution for integration with SAP NetWeaver
2013SUSE ads new channel program for SAP Business One HANA

In summary, SUSE Linux Enterprise is:

Novedades de SuSE SP2 para SAP
Referencias
Notas KB SuSE
Virtual SLES11SP1 shows bad IO performance when accessing raw disks
https://www.suse.com/support/kb/doc.php?id=7009616
Low Disk Space Conditions on SUSE
https://www.suse.com/support/kb/doc.php?id=7002723
CIFS mount does not return the proper file system rights
https://www.suse.com/support/kb/doc.php?id=7010756
Notas KB VMware
Configurar discos para utilizar adaptadores VMware Paravirtual SCSI (PVSCSI) (2033061)
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=2033061
Setting the number of cores per CPU in a virtual machine (1010184)
http://kb.vmware.com/selfservice/microsites/search.do?cmd=displayKC&externalId=1010184
Notas SAP
1672954 - Oracle 11g: Usage of hugepages on Linux
1122388 - Linux: VMware vSphere configuration guidelines
Notas Oracle
http://docs.oracle.com/cd/E37670_01/E37355/html/ol_config_hugepages.html
https://metalink.oracle.com/metalink/plsqlf?p=130:14:2414882707157355558::::p14_database_id,p14_docid,p14_show_header,p14_show_help,p14_black_frame,p14_font:NOT,401749.1,1,0,1,helvetica

Monitoreo del sistema SAP

Capas de análisis

Aspectos generales a tener en cuenta a la hora de implementar un monitoreo integral de un sistema SAP

Hardware
Sistema Operativo
Base de datos
SAP - Basis
SAP - Aplicaciones

Checklist Diario

Transacciones generales
ABAP Stack Checks
  1. Check process overview(SM50)
  2. Check overall system process overview(SM66)
  3. Check application servers status(SM51)
  4. Check for any pending locks (SM12)
  5. Check for Dumps in the system(ST22)
  6. Check System log for any errors(SM21)
  7. Check for any hanged updates or update status(SM13)
  8. Check for excessive swapping (ST02)
  9. Check for critical job status like backup,updatestats,checkdb etc(DB13)
  10. Check for longrunning/failed jobs status(SM37)
  11. Check database alertlogs and performance(ST04)
  12. Check spool job status (SP01)
  13. Check cache status (sxi_cache) for PI System
  14. Check SLD functionality(SLDCHECK)
  15. Check SXI_MONITOR for PI system
  16. Check for Database locks(DB01)
Java Stack Checks
  1. Check java portal accessibility using link
  2. Check server0 log for java system for critical errors
  3. Check accessibility of management console
  4. Check server node status
  5. Check default trace for critical java errors
  6. Check java reports for memoryconsumption/swapping Os level checks
  7. Check filesystems usage (shouldb be <80%)
  8. Check for swap space using topas etc
  9. Check for work directory log files at oslevel for errors

Computing Center Management System - CCMS

Algunas cosas que podemos monitorear con el CCMS de SAP :

Nagios SAP CCMS

Para poder ver algunas cosas de monitoreo de SAP desde Nagios por medio de CCMS podemos referirnos a los tips de Nagios.

Permitir uso del usuario SAP*

Uso permitido del usuario SAP* para tareas de configuración: en todas las instalaciones Sap existe un usuario SAP* (mientras no este creado como tal a propósito), que tiene la contraseña por defecto PASS y todas las autorizaciones disponibles (SAP_ALL). Esto es un agujero de seguridad grave que Sap soluciono con el parámetro login/no_automatic_user_sapstar. Por defecto, el parámetro vale 1 e impide utilizar este usuario. Para poder activarlo, habrá que poner el valor 0. Lo lógico es activarlo para tareas de configuración, y una vez terminado el proceso, volver a desactivarlo. Este usuario es HARDCODED.

Ordenes de Transporte

Las Órdenes de Transporte se utilizan para implementar modificaciones del ambiente de desarrollo DEV a los sistemas de calidad QAS y productivos PRD. También podemos implementar modificaciones externas generadas en otros landscapes de sistemas SAP.

Para acceder al sistema de transportes de SAP, deberemos entrar al sistema SAP que necesitamos y ejecutar la transacción STMS.

Importar una Orden de Transporte desde un sistema externo

Se puede dar el caso de que nos envíen ordenes de transporte de un desarrollo externo para importarlas en nuestro sistema de desarrollo DEV.

La convención standard de SAP para estos archivos es R<6 digitos>.<sistema fuente> y K<6 digitos>.<sistema fuente> (El sistema fuente es el nombre del sistema del cual proviene el transporte)

K902506.SAP es un Cofile – no contiene muchos datos, son los atributos del archivo data. Clases de objeto, comandos o tipo de información.

R902506.SAP es el Datafile – Contiene los datos del Transporte – Son los cambios que van a ser aplicados al sistema.

Deberemos ingresar al sistema de desarrollo en el cual queremos importar los archivos dentro del directorio /usr/sap/tran o D:\usr\sap\trans (según el sistema operativo)

Dentro del la transacción STMS deberemos ingresar a la opción (dependiendo del idioma)

Agregar el transporte ej SAPK902506 Donde DEV es la extension del archivo y el resto es el nombre del archivo.

SE10 - Transport Organizer

Mediante estra transacción podemos transportar una orden de un ambiente a otro y ver su histórico

Componentes del sistema SAP

SAP Gateway

SAP NetWeaver Gateway es una tecnología que proporciona una forma sencilla de conectar dispositivos, entornos y plataformas de software de SAP en base a los estándares del mercado. Permite el desarrollo de soluciones en cualquier interfaz de usuario llevando el entorno SAP a otros entornos como los sociales y de de colaboración, dispositivos móviles y tabletas y aplicaciones de Internet. Ofrece conectividad a aplicaciones SAP utilizando cualquier lenguaje de programación o modelo, sin necesidad de conocimientos de SAP mediante el aprovechamiento de los servicios REST y protocolos OData / ATOM.

Notas principales que afectan el servicio

Nota de seguridad de conexiones

Base de datos HANA

Apartado : SAP HANA

Base de datos Oracle

Manejo de Backup y Restores

Hay un apartado acerca de la configuración de backups online de SAP en el manual de administración de backups con Tivoli TSM, donde se indica la configuración necesaria a implementar.

Backup de datos

brbackup -u / -c force -t online -m all -p initSID.sap -a -c force -p initSID.sap -sd

Restore de datos

Examples of BRRESTORE Runs Locate the document in its SAP Library structure

Chequeando consistecia

Estadisticas

Update the Oracle database statistics with BRCONNECT as follows:

Administrando Oracle

Archivos de LOGS

Hay un script script filtrador de Logs para parsear los resultados del alert.log de Oracle y enviarlos por email.

alert.log

$ORACLE_BASE/admin/$ORACLE_SID/bdump/alert_$ORACLE_SID.log
$ORACLE_BASE/admin/$ORACLE_SID/background/alert_$ORACLE_SID.log
$ORACLE_BASE/saptrace/background/alert_$ORACLE_SID.log

listener.log

$ORACLE_BASE/network/log/listener.log
Modificación de parámetros Oracle
sqlplus "/ as sysdba"
ALTER system SET sga_max_size=12G scope=spfile;
ALTER system SET db_cache_size=8G scope=spfile;
ALTER system SET shared_pool_size=2G scope=spfile;
SQL> SHOW parameters log_archive_max_processes;
log_archive_max_processes INTEGER 4
 
SQL> ALTER system SET log_archive_max_processes=1;
System altered.
 
SQL> ALTER system SET log_archive_max_processes=4;
System altered.
SQL> SHOW parameter db_writer_processes
NAME                                 TYPE        VALUE
------------------------------------ ----------- -------
db_writer_processes                  INTEGER     1
 
SQL> ALTER system SET db_writer_processes=2 scope=spfile sid='*';
 
System altered.

si nos da un error como este :

SQL> ALTER system SET db_writer_processes=2 scope=spfile sid='*';
ALTER system SET db_writer_processes=2 scope=spfile sid='*'
*
ERROR at line 1:
ORA-32001: WRITE TO SPFILE requested but no SPFILE specified at startup
SQL> SHOW parameter spfile 
 
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string
 
SQL> CREATE spfile FROM pfile;
 
File created.
 
SQL> 
 
SQL> shutdown IMMEDIATE
 
SQL> startup
 
SQL> SHOW parameter spfile 
 
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
spfile				     string	 /oracle/SID/102_64/dbs/spfileSID.ora
 
SQL> ALTER system SET db_writer_processes=2 scope=spfile sid='*';
SQL> SHOW parameter block_size;
 
NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
db_block_size			     INTEGER	 8192
SQL> 
Indices de la base Oracle de SAP exportados en CSV
indices.sql
SET serveroutput ON SIZE unlimited 
DECLARE 
texto            varchar2(2000); 
indice_anterior  varchar2(30) := 'XXXXXXXXXX'; 
BEGIN 
DBMS_OUTPUT.ENABLE (buffer_size => NULL); 
 FOR c1 IN (SELECT TABLE_NAME,index_name,column_name FROM dba_ind_columns WHERE index_owner = 'SAPSR3' AND index_name 
             NOT LIKE '%~0' ORDER BY TABLE_NAME,index_name,column_position) loop 
      IF c1.index_name <> indice_anterior THEN 
          IF indice_anterior = 'XXXXXXXXXX' THEN 
              indice_anterior := c1.index_name; 
              texto := c1.table_name||';'||c1.index_name||';'||c1.column_name||';'; 
          ELSE 
              dbms_output.put_line(texto); 
              texto := c1.table_name||';'||c1.index_name||';'||c1.column_name||';'; 
              indice_anterior := c1.index_name; 
          END IF; 
      ELSE 
          texto := texto||c1.column_name||';'; 
      END IF; 
   END loop; 
 dbms_output.put_line(texto); 
END; 
/ 
Status de las cuentas de usuario
SELECT username, account_status FROM dba_users;
Desbloquear/Bloquear cuenta de usuario
ALTER USER SAPSR3 account LOCK;
ALTER USER SAPSR3 account UNLOCK;
SELECT COUNT(*) FROM SAPSR3.SNAP  WHERE ROWNUM <= 5;

Administrando SAP - Funcional

El área funcional de SAP es la que se encarga de parametrizar el sistema SAP instalado de acuerdo a lo que se requiera. Igualmente vamos a separar en otro apartado lo que se refiere a desarrollo y programación en ABAP

Apertura y cierre de mandante

Administración de JOBS

TBTCO Tabla de resumen del estado de jobs

TBTCP Resumen step de un job de fondo

Creación de JOBS de Fondo

Un JOB o proceso de fondo en SAP se compone de estas propiedades principales :

Para comenzar a la creación de nuestro proceso de fondo, deremos utilizar la Trx. SM36.

Utilizando SAP

Como conectar el SAPgui desde Linux

java -jar PlatinGUI-Linux-700.jar
~/SAPClients/SAPGUI7.00/bin$ ./guilogon
To create servers, touch at new and go to "advanced".

Ejemplo:

Para el servidor 10.1.1.6 con el system number 01:

conn=/H/10.1.1.6/S/3201

Command line

Para el servidor 10.1.1.6 conel system number 01:

~/SAPClients/SAPGUI7.00/bin$ ./sapgui /H/10.1.1.6/S/3201
saplogon.ini en Windows

El archivo se guarda en C:\Users\USUARIO\AppData\Roaming\SAP\Common

saplogon.ini en Linux

/home/usuario/.SAPGUI/connections

Ejemplo sin logon balance

SID:conn=/M/190.1.1.19/S/3600/G/Empresa&expert=true

Ejemplo con logon balance

SID [Empresa]:conn=/M/190.1.1.19/S/3600/G/Empresa&expert=true

Script para obtener datos del sistema

SAP Note 618104 - “sapsysinfo” - Compiling system information on Linux

Actualización de servidor SAP

Actualización del Kernel de SAP

Para realizar esta tarea sea el sistema operativo que fuere, debemos tener todo el sistema SAP R3 bajo y en lo posible para evitar complicaciones la base de datos también.

Instrucciones para actualizar el Kernel de SAP en Windows

Instrucciones para actualizar el Kernel de SAP en Linux

Ejemplo del Kernel de SAP 701 al Kernel de SAP 720_REL

Primero deberemor limpiar el directorio exe donde estan los binarios principales de SAP

rm -rf /sapmnt/<SID>/exe
cd /sapmnt/<SID>/exe

Luego dentro de ese directorio deberemos descomprimir los paquetes SAR de SAP

SAPCAR -xvf SAPEXEDB_100-10011223.SAR 
SAPCAR -xvf SAPEXE_100-10011224.SAR 
SAPCAR -xvf DBATL720O10_33-10007263.SAR

Luego de eso deberemos ejecutar la orden sapcpe para que SAP tome las configuraciones del Kernel nuevo :

Asignamos permisos de sap

chown -R <SID>adm:sapsys /sapmnt/<SID>/exe
sapcpe pf=/usr/sap/<SID>/SYS/profile/<SID>_DVEBMGS00_<hostname>
sapcpe pf=/usr/sap/<SID>/SYS/profile/START_DVEBMGS00_<hostname>

Y luego como usuario root ejecutamos el script saproot.sh :

cd /sapmnt/<SID>/exe
./oraroot.sh <SID>
./saproot.sh <SID>

Post Actualización

Para verificar errores o ver mas info de debug deberemos ejecutar :

R3trans -d
disp+work -V

Luego de la actualización del Kernel recordemos que las transacciones en SAP tardaran bastante en ejecutar ya que deberan ser compiladas para una primera ejecución.

Administración del motor de Java de PORTAL

Panel de administración de procesos

/usr/sap/<SID>/<INSTANCIA>/j2ee/os_libs/# jcmon pf=/usr/sap/<SID>/SYS/profile/<SID>_<INSTANCIA>_<hostname>

Aplicar un deploy

Dentro de /usr/sap/<SID>/<INSTANCIA>/SDM/program/inBox, colocar los archivos (usualmente *.ear). Luego ejecutar /usr/sap/<SID>/<INSTANCIA>/SDM/program/RemoteGui.sh.

Seleccionar : Deployment→Carpeta SCAs/SDAs for Deployment→(botón derecho)→Add SCA/SDA(Server Side File Browser)→Elegir paquete→Proceder Next→Start deploy→Confirm

Reset de contraseña SDM

Si perdemos la contraseña la podemos resetear de la siguiente forma

Debemos bajar el servicio SDM y ejecutar

/usr/sap/<SID>/<INSTANCIA>/SDM/program/inBox/sdm.sh changepassword “sdmhome=/usr/sap/<SID>/<INSTANCIA>/SDM/program” “newpassword=Password123”

Actualización del Sistema Operativo de SAP

En nuestro caso, si por ejemplo usamos SuSE Linux como Sistema Operativo para la implementación de SAP, podemos seguir este simple procedimiento para su actualización.

Notas SAP

Export / Import de Tablas de SAP

Ejemplo Destinos RFC

R3trans -w exp_rfc.log rfc_export

rfc_export

Export
File=rfc_dump
Select * from rfcattrib
Select * from rfcdes
Select * from rfcdoc

R3trans -w imp_rfc.log rfc_import

rfc_import

import
file = 'rfc_dump'
client = 200

Renombrar un sistema SAP

En algunas ocasiones, debemos modificar un sistema SAP, ya sea por una separación o modificación del negocio que lo utiliza etc.

Relevamiento

Antes de migrar el sistema, deberemos verificar

Modificaciones

Identificador de Base de Datos Oracle

Algunas formas de recuperación requieren que la base de datos se inicie y acceda como montada. Para poner la base de datos en modo de montaje, deberemos inicia de la siguiente manera :

SQL> startup mount

Si ya se ha iniciado la instancia de la base de datos con la opción de inicio nomount, se puede cambiar el nomount para montar la base utilizando el comando alter database :

SQL> alter database mount;

DBNEWID es una utilidad de la base de datos para poder cambiar el identificador interno de dicha base de datos (DBID) y el nombre de base de datos (DBNAME) para una base de datos operativa.

# nid target=/ setname=yes dbname=<NEWDBID>

DBNEWID: Release 12.1.0.2.0 - Production on Tue May 29 14:50:57 2018

Copyright (c) 1982, 2014, Oracle and/or its affiliates.  All rights reserved.

Connected to database <OLDDBID> (DBID=497546318)

Connected to server version 12.1.0

Control Files in database:
    /oracle/<OLDDBID>/origlogA/cntrl/cntrl<OLDDBID>.dbf
    /oracle/<OLDDBID>/origlogB/cntrl/cntrl<OLDDBID>.dbf
    /oracle/<OLDDBID>/sapdata1/cntrl/cntrl<OLDDBID>.dbf

Change database name of database <OLBDBID> to <NEWDBID>? (Y/[N]) => Y

Proceeding with operation
Changing database name from <OLDDBID> to <NEWDBID>
    Control File /oracle/<OLDDBID>/origlogA/cntrl/cntrl<OLDDBID>.dbf - modified
    Control File /oracle/<OLDDBID>/origlogB/cntrl/cntrl<OLDDBID>.dbf - modified
    Control File /oracle/<OLDDBID>/sapdata1/cntrl/cntrl<OLDDBID>.dbf - modified
    Datafile /oracle/<OLDDBID>/sapdata1/system_1/system.data - wrote new name
    Datafile /oracle/<OLDDBID>/sapdata7/undo_1/undo.data - wrote new name
    Datafile /oracle/<OLDDBID>/sapdata1/sysaux_1/sysaux.data - wrote new name
...
# orapwd file=$ORACLE_HOME/dbs/orapw<SID> password=<PASSWORD>
SQL> STARTUP NOMOUNT
 
SQL> CREATE SPFILE='/oracle/<NEWSID>/12102/dbs/spfile<NEWSID>.ora' FROM 	PFILE='/oracle/<NEWSID>/12102/dbs/init<NEWSID>.ora';
 
File created.
 
SQL> ALTER SYSTEM SET DB_NAME=<NEWSID> SCOPE=spfile;
 
System altered.
 
SQL> startup OPEN
 
SQL> ALTER DATABASE RENAME global_name TO <NEWSID>.WORLD;
 
SQL> UPDATE global_name SET global_name = '<NEWSID>';
 
SQL> commit ;
 
SQL> STARTUP NOMOUNT
 
SQL> ALTER SYSTEM SET DB_NAME=<NEWSID> SCOPE=spfile;
 
System altered.
 
SQL> ALTER system SET instance_name=<NEWSID> scope=spfile;
 
SQL> startup
 
SQL> CREATE pfile FROM spfile;
 
File created.
Iniciando la Base de Datos
SQL> startup
ORA-32004: obsolete or deprecated parameter(s) specified for RDBMS instance
ORACLE instance started.

Total System Global Area 6.8719E+10 bytes
Fixed Size		    5304248 bytes
Variable Size		 2.8857E+10 bytes
Database Buffers	 3.9728E+10 bytes
Redo Buffers		  128913408 bytes
ORA-00205: error in identifying control file, check alert log for more info

alert_<NEWSID>.log

ALTER DATABASE MOUNT
Tue May 29 15:27:57 2018
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/<NEWSID>/sapdata1/cntrl/cntrl<NEWSID>.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/<NEWSID>/origlogB/cntrl/cntrl<NEWSID>.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3
ORA-00210: cannot open the specified control file
ORA-00202: control file: '/oracle/<NEWSID>/origlogA/cntrl/cntrl<NEWSID>.dbf'
ORA-27037: unable to obtain file status
Linux-x86_64 Error: 2: No such file or directory
Additional information: 3

Renombramos los control file de cntrl<OLDSID>.dbf hacia cntrl<NEWSID>.dbf y luego iniciamos la base de datos

Conectividad interna

Deberemos modificar el nombre del host de nuestro servidor, para que se adapte al SID que necesitamos y también deberemos ajustar su resolución local en el archivo /etc/hosts.

También deberemos agregar el servicio en el archivos /etc/services

sapms<SID>	3600/tcp	# SAP System Message Server Port

Perfiles de usuarios de sistema

En el HOME del usuario administrador de SAP y del HOME del usuario administrador de la base de datos (en nuestro caso Oracle), usualmente dicho usuario tiene la siguiente nomenclatura :

Estos archivos suelen encontrarse con el mismo nombre en los directorios HOME de dichos usuarios

Archivos con variables de entorno de la shell del usuario :

Archivos con variables de entorno para la ejecución de la base de datos :

Archivos con variables de entorno del motor JAVA de SAP :

Archivos con variables de entorno para la ejecución de SAP :

Perfiles de SAP : /sapmnt/<SID>/profile

Perfiles de Oracle para SAP : /sapmnt/<SID>/profile/oracle

Configuración del Listener :

Variables de configuración de Oracle para SAP :

Podemos hacer un cambio brusco y rápido de los valores de configuración del viejo <SID> hacia el nuevo <SID> :

# sed -i -e 's/<SIDVIEJO>/<SIDNUEVO>/g' *
# sed -i -e 's/<sidviejo>/<sidnuevo>/g' *

Iniciando SAP

Posteriormente a modificar la configuración de los prefiles de Oracle, iniciamos el Listener

# lsnrctl start

LSNRCTL for Linux: Version 12.1.0.2.0 - Production on 29-MAY-2018 15:31:47

Copyright (c) 1991, 2014, Oracle.  All rights reserved.

Starting /oracle/<NEWSID>/12102/bin/tnslsnr: please wait...

TNSLSNR for Linux: Version 12.1.0.2.0 - Production
System parameter file is /oracle/<NEWSID>/12102/network/admin/listener.ora
Log messages written to /oracle/<NEWSID>/saptrace/diag/tnslsnr/<NEWHOSTNAME>/listener/alert/log.xml
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=<NEWSID>.WORLD)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=<NEWSID>)))
Listening on: (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<NEWFQDN>)(PORT=1527)))

Connecting to (ADDRESS=(PROTOCOL=IPC)(KEY=<NEWSID>.WORLD))
STATUS of the LISTENER
------------------------
Alias                     LISTENER
Version                   TNSLSNR for Linux: Version 12.1.0.2.0 - Production
Start Date                29-MAY-2018 15:31:50
Uptime                    0 days 0 hr. 0 min. 0 sec
Trace Level               off
Security                  ON: Local OS Authentication
SNMP                      OFF
Listener Parameter File   /oracle/<NEWSID>/12102/network/admin/listener.ora
Listener Log File         /oracle/<NEWSID>/saptrace/diag/tnslsnr/<NEWHOSTNAME>/listener/alert/log.xml
Listening Endpoints Summary...
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=<NEWSID>.WORLD)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=ipc)(KEY=<NEWSID>)))
  (DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=<NEWFQDN>)(PORT=1527)))
Services Summary...
Service "<NEWSID>" has 1 instance(s).
  Instance "<NEWSID>", status UNKNOWN, has 1 handler(s) for this service...
The command completed successfully

Revisar /usr/sap y mover el directorio de <OLDSID> hacia <NEWSID>

Modificar los enlaces hacia los ejecutables de SAP en el directorio /usr/sap/<NEWSID>/DVEBMGS00/work

De la siguiente forma :

ln -s /usr/sap/<NEWSID>/DVEBMGS00/exe/rslgcoll 		co.sap<NEWSID>_DVEBMGS00 
ln -s /usr/sap/<NEWSID>/DVEBMGS00/exe/disp+work 	dw.sap<NEWSID>_DVEBMGS00
ln -s /usr/sap/<NEWSID>/DVEBMGS00/exe/igswd_mt 		ig.sap<NEWSID>_DVEBMGS00
ln -s /usr/sap/<NEWSID>/DVEBMGS00/exe/msg_server 	ms.sap<NEWSID>_DVEBMGS00
ln -s /usr/sap/<NEWSID>/DVEBMGS00/exe/rslgsend 		se.sap<NEWSID>_DVEBMGS00

Modificar los enlaces global y profile /usr/sap/<NEWSID>/SYS :

Como :

ln -s /sapmnt/<NEWSID>/global
ln -s /sapmnt/<NEWSID>/profile

Modificar los enlaces /usr/sap/<NEWSID>/SYS/exe :

Como :

ln -s /sapmnt/<NEWSID>/exe dbg
ln -s /sapmnt/<NEWSID>/exe/nuc
ln -s /usr/sap/<NEWSID>/SYS/exe/dbg run
ln -s /sapmnt/<NEWSID>/exe/uc

Revisar la ruta de SSFS (Secure Storage in File System) :

RSEC_SSFS_DATAPATH=/usr/sap/<NEWSID>/SYS/global/security/rsecssfs/data
RSEC_SSFS_KEYPATH=/usr/sap/<NEWSID>/SYS/global/security/rsecssfs/key

Renombrar SSFS_<OLDSID>.DAT como SSFS_<NEWSID>.DAT

Reset de usuario SAP* :

SQL> SELECT UFLAG, BNAME, MANDT FROM SAPSR3.USR02 WHERE BNAME='SAP*';
 
SQL> DELETE FROM SAPSR3.USR02 WHERE BNAME='SAP*' AND MANDT=000;

SAP Profile <NEWSID>_DVEBMGS00_<NEWHOSTNAME> :

login/no_automatic_user_sapstar=0
# startsap
Checking <NEWSID> Database
Database is running
-------------------------------------------
Starting Startup Agent sapstartsrv
OK
Instance Service on host <NEWHOSTNAME> started
-------------------------------------------
starting SAP Instance DVEBMGS00
Startup-Log is written to /home/<NEWSID>adm/startsap_DVEBMGS00.log
-------------------------------------------
/usr/sap/<NEWSID>/DVEBMGS00/exe/sapcontrol -prot NI_HTTP -nr 00 -function Start
Instance on host <NEWHOSTNAME> started

Luego dentro de SAP, deberemos cambiar el nombre lógico por medio de la Trx. BDLS o del programa RBDLS2LS. Luego rearmamos el landscape de SAP con los equipos de DEV y QA. Para después rearmar sistema de transporte.

Clonación de un sistema SAP

Problemas comunes

Analizando problemas de ejecución poco descriptivos

Muchas veces en SAP nos topamos con problemas poco descriptivos, para analizarlos deberemos analizar principalmente estos achivos de log dentro del directorio work :

Windows → <Drive>:\usr\sap\<Sys-ID>\DVEBMGS<Sys-Nr>\Work

Linux → /usr/sap/Sys-ID/DVEBMGS<Sys-Nr>/work

Y para analizar mas a fondo, si tenemos SAP corriendo sobre GNU/Linux podemos hacer uso de la herramienta strace.

Referencias útiles :

Unknown webmethod: WaitforServiceStarted

sapcpe pf=/usr/sap/<SID>/SYS/profile/<SID>_DVEBMGS00_<hostname>
sapcpe pf=/usr/sap/<SID>/SYS/profile/START_DVEBMGS00_<hostname>

Note 1069225 - NO HW ID RECEIVED BY MSSG SERVER

Symptom

After you upgrade to 7.00, you can no longer log on to the ABAP system. The system issues an error message on the logon screen to tell you this. Reason and Prerequisites

There is a conflict with the port numbers. These parameters are valuated as follows:

rslg/collect_daemon/listen_port   39xx
rslg/collect_daemon/talk_port     40xx
rdisp/msserv_internal             39xx

Solution

Delete these from the default profile to ensure that the system uses the default values 14xx and 15xx.

If these ports are already used by other programs, choose unused port numbers.

- See more at: http://www.stechno.net/sap-notes.html?view=sapnote&id=1069225#sthash.0nPTQ8aF.dpuf

Registrar programa RFC

nohup rfcexec -a PROG_TRANSPOR -g server_host -x sapgw00 &

http://wiki.scn.sap.com/wiki/display/ABAPConn/CPIC+Return+Code+679+-+Transaction+Program+not+Registered

Convertir un certificado PFX a PSE

sapgenpse import_p12 -p  Certificado.pse Certificado.pfx

WebDynPro - 503 Service Unavailable

http://hostsap:50000/webdynpro/dispatcher/sap.com/bi~plan~blablabla1/Modeler

Si tenemos un error como este :

503   Service Unavailable

  SAP WebAS Engine is starting...

If this state does not change within a few minutes,
please contact your system administrator.
Check the recommendations in SAP Notes: 943498, 764417

Message: Dispatcher running but no server connected!

  Details: 	

  No details available

Lo primero que debemos revisar son los archivos de Log en /usr/sap/<SID>/<InstNo>/j2ee/cluster/server0/log

Si vemos dentro del trace un error como este :

"Start of UME Service Failed". Technical details: User is locked. Please notify the person responsible

Deberemos revisar desde ABAP que los usuarios

Esten correctos. Si queremos podemos resetearle la contraseña al usuario SAPJSF Ademas deberemos ejecutar la configtool /usr/sap/<SID>/<InstNo>/j2ee/configtool y actualizar alli la contraseña del usuario del servicio UME

Luego de eso por medio de jcmon pf=/usr/sap/<SID>/<InstNo>/<SID>_<InstNo>_<hostname>, podremos arrancar el proceso server0

Si nos da un error como el de abajo, deberemos referinos a la SAP Note 971249 - JMSServerSecurityException thrown accessing JMS resources

 {0}#1#javax.jms.JMSSecurityException: You do not have permissions: action create_queue and instance ALL.
	at com.sap.jms.protocol.notification.ServerExceptionResponse.getException(ServerExceptionResponse.java:231)
	at com.sap.jms.client.session.Session.checkReceivedPacket(Session.java:2598)
	at com.sap.jms.client.session.Session.createQueue(Session.java:2425)
	at com.sap.ip.collaboration.core.api.rtmf.core.RTMFMessaging$JMSPolling.startRunning(RTMFMessaging.java:1244)
	at com.sap.ip.collaboration.core.api.rtmf.core.RTMFMessaging$JMSPolling.run(RTMFMessaging.java:1182)
	at java.lang.Thread.run(Thread.java:770)

FIXME Como TIP de como analizar podemos leer la SAP Note 764417 - Information for troubleshooting of the SAP J2EE Engine 6.40

Acceso a un Webservice HTTPS con un certificado autofirmado

Ejemplo del caso un proovedor puede ser privado o una agencia Gubernamental modificó un certificado SSL en su servicio web que necesitamos para ejecutar nuestros procesos de negocio.

Modificaron su certificado SSL (el cual todavia era válido ) por otro certificado autofirmado el cual por lo tanto no es válido y ninguna librería de SSL por lógica - NO LO VÁLIDA.

ANTERIOR CERTIFICADO

CERTIFICADO DEL DIA DE HOY

Deberemos hacer uso de esta opcion icm/HTTPS/verify_client con un valor 0 dentro del profile de SAP por medio de la Trx. RZ11

https://help.sap.com/saphelp_nw70/helpdata/en/0d/88153a1a5b4c2de10000000a114084/content.htm

Agregando funcionalidades y oscuridades

Oscuridad : Librerias extra para SAP

SAP Note 1644499 - Database connectivity from Linux to SQL Server

Se copia esta librería dbmssslib.so.gz a /usr/sap/<SID>/DVEBMGS00/exe/

Luego de esto se ejeucuta :

# odbcinst -u -d -n "SQL Server Native Client 11.0"
# odbcinst -i -d -f template.ini

Luego de esta ejecución deberia quedar un contenido como este en /etc/odbcinst.ini

[ODBC Driver 11 for SQL Server]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2260.0
Threading=1
UsageCount=1
 
[SQL Server Native Client 11.0]
Description=Microsoft ODBC Driver 11 for SQL Server
Driver=/opt/microsoft/msodbcsql/lib64/libmsodbcsql-11.0.so.2260.0
Threading=1
UsageCount=5

template.ini.gz

Instalacion de Cliente SQL Server

El ODBC de Microsoft se puede instalar en :

/opt/microsoft/msodbcsql/

Microsoft® ODBC Driver 11 for SQL Server® - SUSE Linux Community Technology Preview - http://www.microsoft.com/en-us/download/details.aspx?id=34687

./build_dm.sh --prefix=/opt/microsoft/msodbcsql/

./install.sh install

Y el paquete unixODBC esta instalado en :

/usr/local/unixodbc/

ftp://ftp.unixodbc.org/pub/unixODBC/

ln -s /usr/local/unixodbc/bin/* /usr/local/bin

Nota

Como el cliente de SAP depende de una version mas vieja de unixODBC que la que esta soportada por el ODBC de Microsoft, debemos instalar los paquetes de la version anterior, ejemplo en SuSE :

unixODBC-2.2.12-198.17.x86_64.rpm
unixODBC-32bit-2.2.12-198.17.x86_64.rpm
unixODBC-devel-2.2.12-198.17.x86_64.rpm
unixODBC-devel-32bit-2.2.12-198.17.x86_64.rpm
/usr/bin/odbcinst -u -d -n "SQL Server Native Client 11.0"
/usr/bin/odbcinst -i -d -f template.ini

Para testear la conexion podemos hacerlo desde la transacción DB02.

:!: En caso de que tengamos problemas deberemos ver los archivos de los dev_w* que se encuentran dentro de /usr/sap/<SID>/DVEBMGS00/work

Convert saplogon.ini file to connections file for SAPGUI Java

sapguiinitosapcconverter.jar.gz

java -jar [complete path to SapGuiIniToSapcConverter.jar] [path to source saplogon.ini file] [path to target connections file]

/home/scayuqueo/.SAPGUI/connections

Ref.: http://scn.sap.com/people/mike.schernbeck2/blog/2011/01/03/convert-saplogonini-file-to-connections-file-for-sapgui-java

Referencias