Archivo

Posts Tagged ‘autorización’

SU53 – Obtener del BUFFER errores de autorización

Caso: se solicita obtener los errores de autorización del usuario, tal cual cuando se ejecuta la SU53.

Solución: No encontré una solución perfecta. De lo que pude investigar fue “simular” la SU53, obteniendo desde el BUFFER del usuario los resultados.

La SU53, al ser ejecutada, graba el último error de autorización en la tabla USR07. Pero sólo guarda el último, por lo cual una opción sería ejecutar un JOB (creándolo desde el mismo usuario) para obtener el buffer y así ir guardando cada X tiempo los errores de autorización leyéndolos desde el BUFFER, sin tener que ejecutar la SU53.

  1. Les paso esta nota que aclara un poco el tema: http://solveissue.com/note?id=1974803
  2. El programa en cuestión es el siguiente:
REPORT  zleer_su53.
 
DATA:   BEGIN OF usr07key,
          objct LIKE usr07-objct,
          fiel0 LIKE usr07-fiel0,
          fiel1 LIKE usr07-fiel0,
          fiel2 LIKE usr07-fiel0,
          fiel3 LIKE usr07-fiel0,
          fiel4 LIKE usr07-fiel0,
          fiel5 LIKE usr07-fiel0,
          fiel6 LIKE usr07-fiel0,
          fiel7 LIKE usr07-fiel0,
          fiel8 LIKE usr07-fiel0,
          fiel9 LIKE usr07-fiel0,
        END OF usr07key.
 
DATA:   BEGIN OF usr07val1,
          val01 LIKE usr07-val01,
          val02 LIKE usr07-val01,
          val03 LIKE usr07-val01,
          val04 LIKE usr07-val01,
          val05 LIKE usr07-val01,
          val06 LIKE usr07-val01,
        END OF usr07val1.
 
DATA:   BEGIN OF usr07val2,
          val07 LIKE usr07-val01,
          val08 LIKE usr07-val01,
          val09 LIKE usr07-val01,
          val10 LIKE usr07-val01,
        END OF usr07val2.
 
DATA:   g_buffer_method(10),
        usr07             TYPE usr07.
 
 
CALL 'C_SAPGPARAM'
     ID 'NAME' FIELD 'auth/new_buffering'
     ID 'VALUE' FIELD g_buffer_method.
 
GET PARAMETER ID 'XU1' FIELD usr07key.                      "#EC EXISTS
GET PARAMETER ID 'XU2' FIELD usr07val1.                     "#EC EXISTS
GET PARAMETER ID 'XU7' FIELD usr07val2.                     "#EC EXISTS
 
CLEAR usr07.
usr07-bname = sy-uname.
MOVE-CORRESPONDING usr07key  TO usr07.
MOVE-CORRESPONDING usr07val1 TO usr07.
MOVE-CORRESPONDING usr07val2 TO usr07.
 
MOVE sy-datum TO usr07-cdate.
MOVE sy-uzeit TO usr07-ctime.
 
WRITE / : usr07-bname.
WRITE / : usr07-objct.
WRITE / : usr07-fiel0.
WRITE / : usr07-fiel1.
WRITE / : usr07-VAL01.

3. También encontré una transacción ZSU53 que puede servirles, lo que hace es generar el error de autorización y muestra qué perfiles necesita el usuario para cumplir con dicha autorización:

http://www.sdn.sap.com/irj/scn/go/portal/prtroot/docs/library/uuid/202d833a-79ae-2c10-e4a7-d51218a7efb4?QuickLink=index&overridelayout=true&45629732722609

https://code.google.com/p/zsu53/

4. También encontré una BAPI que ejecuta en fondo la SU53 para obtener en un texto el resultado: http://searchsap.techtarget.com/tip/BAPI-to-retrieve-Check-Values-like-SU53-result