Exemplo de query que busca rotinas em um Menu do Protheus

No artigo de hoje, vamos demonstrar em como fazer uma query, para consultar informações de uma rotina nos menus do Protheus.

Supondo que você precisa encontrar em que menu está determinada rotina, como podemos fazer isso através de uma query?

Pois bem, as tabelas que vamos usar aqui serão as seguintes:

  • MPMENU_MENU – Cadastro de Menus
  • MPMENU_ITEM – Itens do Menu
  • MPMENU_FUNCTION – Função vinculada ao Item
  • MPMENU_I18N – Opções do Menu e Opções do Item

 

Com isso, por exemplo, vou pesquisar pela função MATA010, e ela vai me trazer uma lista dos módulos onde está esse cadastro, conforme print abaixo:

Exemplo do resultado da query pesquisando por MATA010

 

E abaixo a query montada de exemplo:

SELECT
    M_NAME AS MODULO_NOME,
    M_MODULE AS MODULO_COD,
    I_TABLES AS TABELAS,
    F_FUNCTION AS FUNCAO,
    DADOS_MENU.N_DESC AS SUBMENU_NOME,
    DADOS_ITEM.N_DESC AS ROTINA_NOME
FROM
    MPMENU_MENU MENU
    INNER JOIN MPMENU_ITEM ITEM ON (
        ITEM.I_ID_MENU = MENU.M_ID
        AND ITEM.D_E_L_E_T_ = ' '
    )
    INNER JOIN MPMENU_FUNCTION FUNC ON (
        FUNC.F_ID = ITEM.I_ID_FUNC
        AND FUNC.D_E_L_E_T_ = ' '
    )
    INNER JOIN MPMENU_I18N DADOS_MENU ON (
        DADOS_MENU.N_PAREN_ID = ITEM.I_FATHER
        AND DADOS_MENU.N_LANG = '1'
        AND DADOS_MENU.D_E_L_E_T_ = ' '
    )
    INNER JOIN MPMENU_I18N DADOS_ITEM ON (
        DADOS_ITEM.N_PAREN_ID = ITEM.I_ID
        AND DADOS_ITEM.N_LANG = '1'
        AND DADOS_ITEM.D_E_L_E_T_ = ' '
    )
WHERE
    MENU.D_E_L_E_T_ = ' '
    AND F_FUNCTION LIKE '%MATA010%'
ORDER BY
    MODULO_COD

Bom pessoal, por hoje é só.

Abraços e até a próxima.

Dan (Daniel Atilio)
Cristão de ramificação protestante. Especialista em Engenharia de Software pela FIB, graduado em Banco de Dados pela FATEC Bauru e técnico em informática pelo CTI da Unesp. Entusiasta de soluções Open Source e blogueiro nas horas vagas. Autor e mantenedor do portal Terminal de Informação.

Deixe uma resposta

Terminal de Informação