Abrindo tabelas do dicionário com a OpenSXs – Maratona AdvPL e TL++ 377

Nesse vídeo demonstraremos a utilização da função OpenSXs, que serve para abrir uma tabela do dicionário de dados (como a SX2, SX3, entre outras).

Abaixo o código fonte desenvolvido para o exemplo em vídeo acima:

//Bibliotecas
#Include "TOTVS.ch"

/*/{Protheus.doc} User Function zExe377
Realiza a abertura de alguma tabela do dicionário em um alias definido em uma variável
@type Function
@author Atilio
@since 28/03/2023
@obs 

    Função OpenSXs
    Parâmetros
        + Objeto que será atualizado enquanto é realizado a abertura da tabela
        + Objeto (arquivo) que será atualizado enquanto é realizado a abertura da tabela
        + Define se o processo poderá ser cancelado caso seja uma régua no objeto
        + Compatibilidade
        + Código da empresa
        + Nome do Alias que será usado
        + Nome da Tabela do dicionário
        + Objeto do tipo régua que será usado na tela
        + Define se será encerrado o processo caso não seja encontrado a tabela do dicionário
    Retorno
        Função não tem retorno

    **** Apoie nosso projeto, se inscreva em https://www.youtube.com/TerminalDeInformacao ****
/*/

User Function zExe377()
    Local aArea      := FWGetArea()
    Local cEmpresa   := ""
    Local cAliasSX   := ""
    Local cFiltro    := ""
    Local cMensagem  := ""
    
    //Define a empresa que vou buscar, o nome do alias que vou usar e o filtro que será aplicado
    cEmpresa := "99"
    cAliasSX := "SX3TST"
    cFiltro  := "X3_ARQUIVO $ 'SA1;SA2;' .And. Alltrim(X3_TIPO) == 'D'"

    //Faz a abertura da tabela do dicionário no alias que foi definido
    OpenSXs(NIL, NIL, NIL, NIL, cEmpresa, cAliasSX, "SX3", NIL, .F.)

    //Aplica o filtro no alias e posiciona no topo
    (cAliasSX)->(DbSetFilter({|| &(cFiltro)}, cFiltro))
    (cAliasSX)->(DbGoTop())

    //Percorre os dados e incrementa a mensagem
    While ! (cAliasSX)->(EoF())
        cMensagem += "+ " + (cAliasSX)->X3_CAMPO + " (" + (cAliasSX)->X3_TITULO + ")" + CRLF

        (cAliasSX)->(DbSkip())
    EndDo
    (cAliasSX)->(DbCloseArea())

    //Exibe a mensagem em tela
    cMensagem := "Campos do Tipo Data que foram encontrados: " + CRLF + cMensagem
    ShowLog(cMensagem)

    FWRestArea(aArea)
Return

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