Carga Dados Genéricos no Protheus

Olá pessoal…

Recentemente, criei uma ferramenta de carga dados genéricos para o Protheus, utilizando ExecAuto, sendo possível importar os principais cadastros do Protheus.
Os cadastros que a rotina tem compatibilidade para importação são:

       01 - MATA070 - SA6 - Bancos
       02 - MATA030 - SA1 - Clientes
       03 - MATA360 - SE4 - Condição de Pagamento
       04 - FINA040 - SE1 - Contas a Receber
       05 - FINA050 - SE2 - Contas a Pagar
       06 - MATA020 - SA2 - Fornecedores
       07 - FINA010 - SED - Naturezas
       08 - MATA010 - SB1 - Produtos
       09 - MATA220 - SB9 - Saldo Inicial
       10 - MATA080 - SF4 - TES (Tipo de Entrada e Saída)
       11 - MATA230 - SF5 - Tipo Movimentação
       12 - MATA050 - SA4 - Transportadoras
       13 - OMSA060 - DA3 - Veículos
       14 - MATA040 - SA3 - Vendedores

Ao abrir a rotina é mostrado uma tela de log de explicação.

Tela de Log ao iniciar a rotina

Tela de Log ao iniciar a rotina

Após isso, será aberto a tela inicial, onde é preenchido o arquivo, o tipo da importação e qual é o caracter de separação.

Tela principal da rotina

Tela principal da rotina

No combo, é possível definir qual é o tipo de importação que será executada.

Opções de Importação

Opções de Importação

Ao clicar no botão Camp.Obrig., é gerado um arquivo com a extensão txt ou csv, com os campos obrigatórios encontrados na SX3 (mas sempre é bom conferir os campos enviados para a importação).

Arquivo gerado de exemplo

Arquivo gerado de exemplo

Ao clicar em Importar, será primeiro carregado as informações de cabeçalho da importação (primeira linha do arquivo), sendo que se tiver campos especiais como LINPOS, AUTDELETA, é possível editar o tipo do campo (Caracter, Numérico, Lógico, Data ou Memo). É possível definir também, se o campo chave da tabela, será importado como o arquivo, ou se irá usar a sequência atual do Protheus (SXE/SXF). E se for enviado o campo filial para o layout, é possível definir se será usado a filial contida no arquivo de layout, ou se será usado a filial atual no Protheus (FWxFilial).

Tela de parametrização para importação

Tela de parametrização para importação

Após a importação, se aconteceu algum erro, é mostrado uma tela de erro, contendo o número da linha e o nome do arquivo de log (gravado no diretório temporário do sistema operacional).

Tela de erros de importação

Tela de erros de importação

Se for clicado no Vis.Erro, é aberto o arquivo de log.

Visualizando o log

Visualizando o log

Se quiserem fazer o download do código fonte e dos exemplos, basta acessar meu GitHub, depois clicar em Projetos > Carga Dados Genérico.

Obs.: Para dados numéricos com casas decimais, o separador deve ser ‘.’. Por exemplo 5.20;
Obs. 2: Para dados do tipo Data, utilize o padrão YYYYMMDD ou DD/MM/YYYY.
Obs. 3: No final das linhas, não deve ter o caracter de separação (como por exemplo, o ‘;’).

Caso queira fazer o download do .prw, clique aqui.

Vídeo tutorial de como usar:



Bom pessoal, por hoje é só.
Abraços e até a próxima.

Dan_Atilio
Analista e desenvolvedor de sistemas. Técnico em Informática pelo CTI da Unesp. Graduado em Banco de Dados pela Fatec Bauru. Entusiasta de soluções Open Source e blogueiro nas horas vagas.

16 Responses

  1. Leonardo disse:

    Obrigado por compartilhar. Muito útil isso, vai ajudar bastante gente em migrações… tornando-as mais simples, rápidas e seguras!

    Muito bom Daniel!

    Novamente obrigado!

    Leonardo

  2. André Couto disse:

    Boa tarde Atilio.
    Compilei o fonte para avaliar , mas me deparei com um erro na importação dos dados. segue:
    THREAD ERROR ([268], andre.couto, SPON4783) 14/12/2015 15:19:08
    variable does not exist NMODULO on FCONFIRM(ZCARGAGEN.PRW) 27/11/2015 22:37:20 line : 195

    [TOTVS build: 7.00.131227A-20150911 NG]
    Called from FCONFIRM(ZCARGAGEN.PRW) 27/11/2015 22:37:20 line : 195
    Called from {||fConfirm(1)}(ZCARGAGEN.PRW) 27/11/2015 22:37:20
    Called from { || FWSetShowKeys( .F. ), Eval( bAction, @lEnd ),lEnd := .t. , FWSetShowKeys( .T. ), oDlgModal:Deactivate() }(MSPROCES.PRW) 15/05/2015 11:54:38

    • Dan_Atilio disse:

      Boa noite André, tudo bem?
      Você executou diretamente no início do smartclient, ou entrou pelo fórmulas acessando algum menu?
      A variável nModulo é uma variável padrão do Protheus que é criada quando o usuário loga em algum módulo, como por exemplo, ao abrir o SIGAMDI, e depois entrar no Estoque / Custos, a variável nModulo será igual a 4.
      Fico no aguardo.
      Abraços.

  3. Sandro disse:

    Cara Muito Show a ferramenta, Parabéns! (Vou testar)

  4. Ótima essa rotina, mesmo sendo antiga ainda é muito útil.

    Queria sugerir melhorias como novos cadastro e melhorar performance como a mudança da Processa pra MsnewProcess que é mais rápida.

  5. José Claus disse:

    Cara, a rotina funciona perfeitamente, parabéns de verdade!
    Muito útil, valeu!!!

  6. decilio disse:

    Parabéns pela Rotina, está me ajudando bastante. troquei alguns execautos como por exemplo movimentos internos. mas fiquei com uma duvida. essa sua rotina dá para adaptar para cadastros modelo2?

  7. Rone disse:

    Parabéns Dan pela iniciativa de criar videos fica bem mais claro e fácil o entendimento. Abs.

Deixe uma resposta