Relatório de acesso e menus por usuários

Prezados,

É possível obter uma relação do que cada usuário acessa no Protheus? Se sim que funções vocês recomendam utilizar para obter tais informações?

Luciano, o que você deseja saber exatamente? Um usuário tem diversos tipos de acessos.

@Daniel Preciso saber quais rotinas cada usuário acesso de forma resumida, a principio estou me virando com o relatório que o configurador oferece, mas a quantidade de informações mesmo filtrando o dados é bem grande. Não preciso de todas aquelas informações.

@Luciano, é mais fácil fazer isso por ADVPL. É uma opção para você? Se sim, eu compartilho aqui um código fonte. Estamos falando dos menus e módulos que o usuário acessa, correto?

Abrhaão, por favor se possível poderia me enviar por gentileza. Agradeço.

Olá Luciano, segue uma Query que pode te auxiliar.

SELECT M_ID,
       I_ID,
       I_TP_MENU,
       I_ITEMID,
       I_FATHER,
       F_FUNCTION,
       I_STATUS,
       I_ORDER,
       I_TABLES,
       I_ACCESS,
       I_DEFAULT,
       I_RESNAME,
       I_TYPE,
       I_OWNER,
       F_DEFAULT ,
       I_MODULE,
       I18N1.N_DESC N_PT,
       I18N2.N_DESC N_ES,
       I18N3.N_DESC N_EN,
       KW1.K_DESC K_PT,
       KW2.K_DESC K_ES,
       KW3.K_DESC K_EN
FROM MPMENU_MENU MPN
INNER JOIN MPMENU_ITEM MPI ON I_ID_MENU = M_ID
AND MPI.D_E_L_E_T_ = ' '
LEFT JOIN MPMENU_FUNCTION MPF ON F_ID = I_ID_FUNC
AND MPF.D_E_L_E_T_ = ' '
INNER JOIN MPMENU_I18N I18N1 ON I18N1.N_PAREN_ID = I_ID
AND I18N1.N_LANG = '1'
AND I18N1.D_E_L_E_T_ = ' '
INNER JOIN MPMENU_I18N I18N2 ON I18N2.N_PAREN_ID = I_ID
AND I18N2.N_LANG = '2'
AND I18N2.D_E_L_E_T_ = ' '
INNER JOIN MPMENU_I18N I18N3 ON I18N3.N_PAREN_ID = I_ID
AND I18N3.N_LANG = '3'
AND I18N3.D_E_L_E_T_ = ' '
LEFT JOIN MPMENU_KEY_WORDS KW1 ON KW1.K_ID_ITEM = I_ID
AND KW1.K_LANG = '1'
AND KW1.D_E_L_E_T_ = ' '
LEFT JOIN MPMENU_KEY_WORDS KW2 ON KW2.K_ID_ITEM = I_ID
AND KW2.K_LANG = '2'
AND KW2.D_E_L_E_T_ = ' '
LEFT JOIN MPMENU_KEY_WORDS KW3 ON KW3.K_ID_ITEM = I_ID
AND KW3.K_LANG = '3'
AND KW3.D_E_L_E_T_ = ' '
WHERE M_ID in
    (SELECT I_ID_MENU
     FROM MPMENU_ITEM
     WHERE I_ID_MENU in
         (SELECT TRIM(UPPER(MDL.GR__ARQMENU)) AS MOD_ARQ
          FROM SYS_USR USR
          INNER JOIN SYS_GRP_GROUP GRP ON GRP.GR__ID = USR.USR_ID
          AND GRP.D_E_L_E_T_ = ' '
          INNER JOIN SYS_GRP_MODULE MDL ON MDL.GR__ID = GRP.GR__ID
          AND MDL.D_E_L_E_T_ = ' '
          WHERE USR.D_E_L_E_T_ = ' '
            AND MDL.GR__ACESSO = 'T' --SOMENTE ACESSO HABILITADO = T
AND USR.USR_ID = '000000' --PASSAR CODIGO DO USUÁRIO DESEJADO
AND GR__ARQMENU <> '')
     GROUP BY I_ID_MENU)
  AND MPN.D_E_L_E_T_ = ' '
  AND F_FUNCTION IS NOT NULL
  ORDER  BY F_FUNCTION,I_ORDER