Restringir el acceso a SAP durante mantenimiento

A veces cuando necesitamos hacer tareas de upgrade o mantenimiento en SAP es necesario que solo determinados usuarios se pueda logear al sistema. Para esto una de las formas en que podemos deshabilitar los ingresos al sistema es de la siguiente forma.

Ingresamos a la transacción SECPOL.

Creamos una nueva Security Policy:

Hacemos click en “New Entries”

Ingresamos un texto y la descripción y hacemos click en guardar.

Seleccionamos la entrada que creamos y hacemos doble click en “Attributes”.

Creamos una nueva entrada.

Ingresamos los siguientes valores:

SERVER_LOGON_PRIVILEGE en name y el valor 1 en Attribute Value.

Damos click a guardar.

Próximo paso es asignarle esta Policy a los usuarios que queremos que PUEDAN logearse al sistema.

Para esto vamos a la transacción SU01 e ingresamos al usuario en modo modificación.

En el tab “Logon Data” en el campo Security Policy le asignamos la Policy que creamos y guardamos.

Por último, debemos ir a la transacción RZ11 y buscar el parámetro:

login/server_logon_restriction

A este parámetro debemos asignarle el valor 1 para que no se pueden logear los usuarios que no tengan esta Policy.

Nos aparecerá la siguiente pantalla:

Hacemos click en “Change Value”

Ingresamos 1 en “New value” y guardamos.

En este momento si algún usuario intenta ingresar le aparecerá el siguiente mensaje.

Para volver a habilitar el ingreso, simplemente volvemos a la RZ11 y seteamos el valor del parametro a 0.

IDOCs Change Pointers

Los Change Pointers de IDOCs, se usan para generar IDOCs que luego mediante un programa se enviaran cuando se modifica algún registro, en este caso por ejemplo características.

El primer paso es activar los Change Pointers de la transacción BD61. Para hacer esto tildamos el checkbox (si no esta tildado ya) y guardamos.

El 2do paso es activar los Change Pointers para el Message Type desde la transacción BD50. En el caso que no este el que necesitamos lo podemos agregar. Hay que acordarse de tildarle el checkbox de activo y guardar.

El 3er paso es definir los registros para el Change Pointer de la transacción BD52.

Ingresamos el Message Type y hacemos click en OK.

En la próxima pantalla nos aparecerá para elegir los campos que cuando se modifique hara que se active el Change Pointer, los ingresamos y guardamos.

El 4to paso es configurar la WE20 tanto en el sistema de origen como en el destino, en el caso que no este configurada.

Sistema Origen:

Agregamos el message type y basic type, por ejemplo:

Y en el sistema destino, hacemos lo mismo para la WE20, pero al ser de inbound se usa un process code.

El paso 5, es la configuración del modelo de distribución en la transacción BD64.

Primero se crea un modelo:

Y luego se agrega un message type:

Debería verse de la siguiente forma:

Para probar si todo funciona OK para este caso vamos en el SAP de origen a la transacción CT04 y creamos una característica.

Completamos los datos:

Al darle guardar nos aparecerá un mensaje similar al siguiente

Si vamos a la tabla BDCP2, de ahi podemos ver los cambios que están pendiente de change pointers. La columna process indica los que fueron procesados.

Para procesar los cambios es necesario correr un programa ABAP, que normalmente estaría corriendo como JOB, pero también se puede correr a mano. El programa es el RBDMIDOC. En el mismo, en la pantalla de selección debemos especificarle el Message Type a procesar.

Al ejecutarlo nos debería mostrar mensajes similares a los siguientes:

Si volvemos a consultar la tabla BDCP2, ahora vemos que el registro que antes estaba vació ahora tiene una X.

Si consultamos la WE02 para ver los IDOCs de salida vemos lo siguiente:

Si ahora vamos al sistema destino ala transacción CT04, deberíamos ver el mismo registro que dimos de alta, también podemos verificar la WE02 para ver IDOCs de entrada.

Creacion de un mandante en SAP

Nos logeamos con el usuario SAP*

Vamos a la TRX SSC4 y agregamos una nueva entrada:

Completamos los siguientes datos según nuestra necesidad:

Grabamos.

Vamos a la TRX SCCLN y la ejecutamos como test.

Nos muestra el resultado:

Si esta todo bien entonces podemos ejecutarlo sin modo test.

Si al ejecutarlo nos da el siguiente error:

Puede ser que haya quedado un registro en la tabla LMSEMAPHORE, de alguna ejecución anterior que no termino, podemos borrarlo de la tabla y volver a ejecutarlo o buscar la ejecución previa y terminarla.

Ver nota: https://launchpad.support.sap.com/#/notes/2705038

Finalmente nos dará un resumen como el siguiente:

Mientras no haya errores debería estar todo bien.

Finalmente ya nos podemos logear en el nuevo mandante con nuestro usuario.

Generador de tablas de mantenimiento

El generador de tablas de mantenimiento o del ingles Table Maintenance Generator, sirve para crear vistas de actualización de tablas, las cuales son servirán entre otras cosas para ingresar datos a nuestras tablas en el sistema.

Lo primero que tenemos que tener es una tabla transparente. Para nuestro ejemplo usaremos la siguiente.

El próximo paso es la creación de la vista de actualización en si, para esto vamos al siguiente menu.

Nos aparecerá la siguiente ventana

El primer paso es ingresar el grupo de autorización, esto nos servirá para restringir el acceso, para nuestro caso, como no necesitamos esto ingresamos &NC&, que significa, Sin grupo de autorización.

En function group, ingresamos el nombre que le vamos a dar al Function Group, una vista de actualization de tabla, básicamente por detrás es un grupo de función, yo por lo general uso el mismo nombre que de la tabla. En este caso ZAEROLINEAS.

En Maintenance Type, tenemos dos opciones:
1) One step: Nuestra vista de actualización de tabla constara de solo una pantalla
2) Two step: Nuestra vista de actualización de tabla constara de dos pantallas.
Para este caso seleccionaremos One Step.

Siguiente, hacemos click en Find Scr. Number(s)

Automáticamente nos completara lo siguiente

Finalmente hacemos click en la Hoja blanca

Nos pedirá ingresar un paquete o objeto local, en el caso que seleccionemos paquete también nos pedirá una orden de transporte.

Cuando termine, nos debería mostrar el siguiente mensaje.

A este punto ya tenemos la vista de actualización de tabla creada, si vamos a la transacción SM30 podemos usarla.

Aca ingresamos el nombre de nuestra vista de actualización de tabla y dependiendo de que queremos hacer, podemos hacer click en Display o Maintain. Para continuar con nuestro ejemplo, le hacemos click en Maintain.

Nos debería aparecer una pantalla similar a la siguiente.

Al hacer click en New Entries se nos habilitara la opción de ingresar datos.
Si nos posicionamos en la celda Airline (La primera), vemos que nos da la opción de seleccionar un Match Code.

Sin embargo, si nos paramos en la siguiente columna, vemos que no nos muestra el icono para seleccionar un valor.

Hay varias formas de agregar el Match Code, pero la mas simple en mi opinion. es buscar un Search Help que ya exista para ese campo.
En este caso por ejemplo, Sabemos que el nombre de la aerolínea se guarda en la tabla SCARR, entonces lo que podríamos hacer, es ir a la transacción SE11 a la parte de Search Help y buscar algo similar a *SCARR*

Hacemos click en el Match Code o apretamos F4 (Que es un atajo) y vemos que automáticamente nos completa el campo a H_SCARR, si con este valor seleccionado le damos click a display. Vemos que esta ayuda de búsqueda, contiene los campos que queremos.

Ya con este nombre, entonces volvemos a la SE11 a nuestra tabla, y vamos a la solapa Input/Help Check

Nos paramos en la linea del campo a la que queremos agregarle el Match Code en la vista de mantenimiento y hacemos click en el botón “Search Help” (Tenemos que estar en modo edición).

Nos aparecerá la siguiente pantalla donde ingresamos la ayuda de búsqueda que encontramos en el paso anterior.

En la siguiente pantalla verificamos que los campos de la ayuda de búsqueda coincidan con los de nuestra tabla y hacemos click en Copy.

Nuestra tabla ahora debería verse algo similar a lo siguiente.

Ahora debemos activar nuestra tabla haciendo click en el botón de activar.
Con la tabla activa, ahora debemos regenerar nuestra vista de actualización de tablas, dado que si ingresamos ahora, podemos ver que no cambio nada.

Para regenerarla, debemos volver al menu.

Una buena practica, antes de regenerar nuestra vista de actualización de tabla, es revisar si esta tiene eventos. Los eventos son acciones que podemos realizar en ciertos momentos en nuestra vista de actualización, como por ejemplo para validar los datos ingresados. Si nosotros borramos la vista de actualización de tabla corremos el riesgo de borrar los eventos también, por lo cual nos conviene hacernos un backup por las dudas. Para esto vamos al siguiente menu.

Si nos aparece vació, como en el ejemplo de abajo, entonces la podemos regenerar tranquilamente.

En el caso de que haya algún evento, debemos entrar al mismo y copiarnos el código, haciendo click en el botón que aparecerá en la columna “Editor” de la captura de arriba.

Para regenerar nuestra vista, simplemente hay que hacer click en el siguiente botón.

Nos aparecerá la siguiente ventana con opciones a seleccionar de lo que queremos borrar. Si sabemos en que sección se encuentra lo que modificamos podemos seleccionar específicamente una. Para este caso seleccionamos todas.

Ahora volveremos a la pantalla donde debemos volver a generar la vista de actualización al igual que lo hicimos la primera ves.

Con nuestra vista de actualización regenerada, podemos volver a la SM30 (Por las dudas se recomienda salir de la transacción y volver a entrar si no salieron ya) e ingresar de nuevo a nuestro objeto.

Al ingresar de nuevo e ir a agregar una nueva entrada podemos ver que ahora nos aparece el Match Code.

Tambien podemos ver que si seleccionamos un valor del nuevo Match Code automáticamente nos llena el primero de la tabla.

Por ultimo, supongamos que por alguna razón, queremos que el campo Airline URL quede griseado, para hacer esto, primero tenemos que volver a la SE11 a nuestra tabla e ir de nuevo al Table Maintenance Generator. Y vamos al menu Environment–>Modification–>Maintenance Screen.

Nos aparecerá la siguiente pantalla en la que hacemos doble click en la screen a modificar.

Esto nos llevara al screen painter, en donde hacemos click en el botón Layout.

Se nos abrirá la siguiente ventana. En donde vemos los campos que se muestran en la pantalla de la vista de actualización de tablas.

Hacemos doble click en el campo marcado en la captura de arriba y se nos debería abrir otra ventana, en donde debemos des-tildar la opción Input Field, en el tab Program, para hacer que este campo sea NO editable.

Podemos ver que el campo se encuentra griseado, hacemos click en activar y back.

Si ahora volvemos a la transacción SM30 e ingresamos de nuevo para agregar un valor nuevo a nuestra tabla, veremos que el campo se encuentra griseado. (Es posible que tengan que salir y volver a entrar a la SM30 si ya la tenían abierta).



Customizando la pantalla de logeo de SAP GUI

Al logearnos en un sistema SAP por lo general vemos una pantalla como la siguiente:

En la sección marcada de amarillo, podemos especificarle información al usuario, por ejemplo, los mandantes del sistema disponibles.

Para customizar estos textos, lo que tenemos que hacer es ir a la transacción SE61.

Hacemos click en el match-code de Document Class y seleccionamos lo siguiente:

Finalmente ingresamos ZLOGIN_SCREEN_INFO, si no existe lo creamos, y hacemos click en CHANGE.

Nos aparecerá una pantalla como la siguiente (si tenemos el editor viejo activo) donde podemos modificar el texto que se muestra.