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 (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.

26 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.

  8. RENATO MARQUES DOS SANTOS disse:

    Desculpa a ignorância, mas como faço para utilizar essa rotina? sou novo com o protheus. Obrigado.

  9. T.B disse:

    Olá, primeiramente parabéns pelo trabalho, ajuda muito quem esta começando com o ADVPL e Protheus!!

    Ao fazer as importações dos arquivos (04_se1_teste, 05_se2_teste) .csv, os mesmos estão dando esse retorno.

    Tipo: 05
    Usuí¡rio: Administrador
    Ambiente: —
    Data: 16/10/2020
    Hora: 16:32:16
    —-

    HELP: E2_NATUREZ
    Código da natureza. Utilizado para identificar a procedência dos títulos, permitindo a consolidação por este ítem e o controle orçamentário.

    Tabela SE2 16/10/2020 16:32:18
    No. Titulo – E2_NUM := CP0000001
    Tipo – E2_TIPO := PA
    Natureza – E2_NATUREZ := N000000TST < — Invalido Fornecedor – E2_FORNECE := 000001 Loja – E2_LOJA := 01 DT Emissao – E2_EMISSAO := 22/11/2015 Vencimento – E2_VENCTO := 26/11/2015 Vencto Real – E2_VENCREA := 26/11/2015 Vlr.Titulo – E2_VALOR := 100 Vencto Orig – E2_VENCORI := 26/11/2015 Vlr R$ – E2_VLCRUZ := 100 ——————————————————————————–

    • Dan_Atilio disse:

      Bom dia jovem, tudo bem?
      Verifique que ele esta acusando Inválido no campo E2_NATUREZ, isso pode ser:

      1. Natureza não existe no Protheus
      2. Validação de usuário no campo E2_NATUREZ feita com alguma User Function customizada
      3. Gatilhos que zeram ou alteram outros campos envolvendo o E2_NATUREZ

      O que eu recomendo fazer é, tentar criar manualmente esse título no Protheus, com o mesmo código, natureza, emissão, vencimentos, valor, etc.

  10. Requerente Alan disse:

    Boa tarde,

    Existe limite de colunas? estou usando um outro fonte seu (zQry2Excel) para gerar o CSV, utilizei um SELECT * FROM SF4, por exemplo. no arquivo gerado constam 295 colunas, porém neste fonte zCargaGen são apesentadas apenas 102 colunas, e o último campo é cortado. Poderia me ajudar?

  11. Caroline Pivoto disse:

    Bom dia!!
    Funciona para alteraçao dos dados do cadastro?

Deixe uma resposta para Dan_AtilioCancelar resposta

Terminal de Informação