Hola Luis,
Para permitir que los usuarios gestionen su desbloqueo de usuario en SAP a través de correo electrónico, puedes implementar una solución basada en SAP Workflow, SAP Business Workplace (SBWP) y una interfaz personalizada con un programa ABAP. Aquí te explico los pasos detallados para lograrlo.
Solución basada en Workflow y un programa ABAP
Esta solución permite que un usuario pueda solicitar su desbloqueo mediante un correo electrónico y que el sistema procese automáticamente la solicitud.
1. Configurar el Workflow en SAP (Opcional, si se quiere aprobación manual)
Si deseas un flujo de aprobación antes del desbloqueo, puedes configurar un Workflow de SAP que envíe una tarea al equipo de TI o a un administrador de seguridad.
1. Transacción SWDD: Crear un Workflowque escuche eventos cuando un usuario solicite desbloqueo.
2. Definir un Evento de Desbloqueo: Puedes usar un desarrollo ABAP para capturar solicitudes por correo.
3. Enviar la solicitud a un Administrador de Seguridad: Se puede hacer con una tarea de Workflow.
4. Desbloquear el usuario si es aprobado: Mediante un RFC o programa ABAP.
2. Crear un programa ABAP para gestionar el desbloqueo automático
Si deseas una solución sin intervención manual, puedes desarrollar un programa ABAP que lea los correos electrónicos y desbloquee al usuario si cumple ciertos criterios.
Pasos para desarrollar el programa
1. Leer correos electrónicos entrantes en SAP usando SOIN
• Se puede programar un Joben SAP para verificar correos electrónicos entrantes.
• SAP almacena los correos en la tabla SOOS (encabezados) y SOST (mensajes enviados y recibidos).
2. Identificar si el correo es una solicitud de desbloqueo
• Leer el contenido del correo.
• Extraer el usuario SAPdesde el cuerpo del mensaje.
3. Verificar si el usuario está bloqueado
• Utilizar la transacción SU01Do la tabla USR02.
• Revisar si el campo UFLAG = 64 (Usuario bloqueado).
4. Desbloquear al usuario si corresponde
• Usar la función estándar BAPI_USER_UNLOCK para desbloquearlo.
Ejemplo de Código ABAP
Este código desbloquea un usuario SAP si se recibe un correo con la solicitud.
REPORT z_desbloqueo_usuario.
DATA: lt_mails TYPE TABLE OF soos,
ls_mail TYPE soos,
lv_user TYPE sy-uname,
lv_subject TYPE string,
lv_body TYPE string.
* Leer correos entrantes
SELECT * FROM soos INTO TABLE lt_mails
WHERE obj_type = 'RAW'
AND obj_name LIKE 'SAP%'.
LOOP AT lt_mails INTO ls_mail.
* Leer el asunto del correo
lv_subject = ls_mail-obj_descr.
* Leer el cuerpo del correo (supongamos que el usuario está en la primera línea)
SELECT SINGLE obj_data INTO lv_body FROM sood WHERE obj_name = ls_mail-obj_name.
* Extraer usuario del mensaje
lv_user = lv_body(8). " Tomar los primeros 8 caracteres como usuario SAP
* Verificar si el usuario está bloqueado
DATA: lv_flag TYPE usr02-uflag.
SELECT SINGLE uflag INTO lv_flag FROM usr02 WHERE bname = lv_user.
IF lv_flag = 64. " Usuario bloqueado
CALL FUNCTION 'BAPI_USER_UNLOCK'
EXPORTING
username = lv_user.
COMMIT WORK.
WRITE: / 'Usuario', lv_user, 'desbloqueado correctamente.'.
ELSE.
WRITE: / 'El usuario', lv_user, 'no estaba bloqueado.'.
ENDIF.
ENDLOOP.
3. Automatizar el Proceso con un Job en SAP
Para que este programa se ejecute automáticamente:
1. Transacción SM36→ Crear un Jobque ejecute este programa cada 5 minutos.
2. Transacción SM37→ Monitorear la ejecución del Job.
4. Notificación Automática de Desbloqueo
Si deseas notificar al usuario una vez que su cuenta ha sido desbloqueada, puedes enviar un correo de confirmación utilizando la función SO_DOCUMENT_SEND_API1.
CALL FUNCTION 'SO_DOCUMENT_SEND_API1'
EXPORTING
document_data = lt_doc
put_in_outbox = 'X'
sender_address = 'soporte@sap.com'
sender_address_type = 'INT'
TABLES
object_content = lt_body
receivers = lt_receivers.
Conclusión
Esta solución permite que los usuarios puedan desbloquearse automáticamente enviando un correo. Además:
• Se puede agregar seguridad verificando el correo del remitente.
• Se puede solicitar validaciones adicionales antes de ejecutar BAPI_USER_UNLOCK.
• Se puede implementar un Workflow en caso de requerir una aprobación manual.
Si necesitas una solución más robusta con validaciones extra, dime y lo ajustamos a tu caso.
