Jueves, 08 Mayo 2014 00:00

Cambio de usuario a través de un servicio web

Escrito por 
Valora este artículo
(0 votos)

En este artículo realizaremos un ejemplo de cambio de usuario, utilizaremos un servicio web con un usuario y dentro de la función RFC, utilizaremos otro usuario con permisos y roles diferentes para nuestras necesidades de ejecución. Para ello necesitaremos un usuario de servicio, con permisos para consumir servicios web, y un usuario de diálogo con las autorizaciones que necesitemos, luego dentro del módulo de función realizaremos el cambio de uno por otro a través de la función SUSR_INTERNET_USERSWITCH.

La principal diferencia respecto a usar el servicio con un usuario de comunicación, es que al usuario de servicio no tenemos que asignarle ningún permiso, ya que sólo se utilizará para consumirlo, y durante la ejecución se cambiará por un usuario autorizado. Por contra un usuario de comunicación nunca tiene acceso al sistema de diálogo (SAP GUI), mientras que el usuario de diálogo si.

 

En el ejemplo que se muestra a continuación se ha montado un servicio web a través una función RFC, siguiendo los pasos de anteriores entradas de este blog. El servicio consiste en devolver el identificador de usuario utilizado en el sistema SAP almacenado en la variable de sistema SY-UNAME, despues de realizar el cambio de usuario.

 


FUNCTION Z_USUARIOS .
*"----------------------------------------------------------------------
*"*"Interfase local
*"  EXPORTING
*"     VALUE(O_USER) LIKE  SY-UNAME
*"  EXCEPTIONS
*"      ERROR
*"----------------------------------------------------------------------

  DATA: username 		LIKE  bapibname-bapibname,
        password 		TYPE bapipwd,
        password_state 	TYPE xupwdstate,
        new_username 	TYPE ususername,
        error_table 	TYPE TABLE OF bapiret2.

* Datos del usuario al que se hará el cambio
  username = 'ZUSUARIO_DIALOGO'.
  password = 'password'.

* Cambio de usuario de servicio por usuario de diálogo
  CALL FUNCTION 'SUSR_INTERNET_USERSWITCH'
    EXPORTING
*     alias                       = username
      username                    = username
      password                    = password
    IMPORTING
      bname_after_switch          = new_username
      pwdstate                    = password_state
*     PWD_CHANGE_SSO              =
    TABLES
      return                      = error_table
    EXCEPTIONS
      current_user_not_servicetyp = 1
      more_than_one_mode          = 2
      internal_error              = 3
      OTHERS                      = 4.
  IF sy-subrc <> 0.
* Implement suitable error handling here
  ENDIF.

  o_user = sy-uname.

ENDFUNCTION.

 

Visto 55009 veces Modificado por última vez en Sábado, 19 Septiembre 2015 12:53

Artículos relacionados (por etiqueta)

2552 comentarios

Deja un comentario

Asegúrate de llenar la información requerida marcada con (*). No está permitido el código HTML. Tu dirección de correo NO será publicada.