Na montagem de leiautes genéricos é possível definir quais campos serão importados, sendo que os campos obrigatórios sempre deverão constar no leiaute, seja como uma posição no arquivo ou como uma fórmula pré-definida. Ao abrir a tela principal, é exibido um browser com todos os leiautes definidos. Em Outras Ações, há opção Manutenção de Layouts. Image Added Informações |
---|
| Delimitadores no Arquivo texto:O sistema realiza a importação das tabelas a partir da leitura de um arquivo de texto delimitado por pipes ("|"). Sequência:O campo Sequência será utilizado para ordenar as importações durante o processamento. Ele é gerado automaticamente e poderá ser alterado a qualquer momento. Tabela ≠ Modelo Os leiautes com origem em um Modelo e os leiautes com origem em uma Tabela de sistema são cadastros distintos na tabela GPETABGEN. Assim, é possível configurar o modelo de Funções e também configurar a tabela SRJ (Funções) de forma diferente. Ao final estará disponível para utilização 2 leiautes distintos. Modelo No primeiro acesso à rotina RHIMPGEN, os modelos de leiaute padrão serão criados automaticamente. Esses leiautes disponíveis no campo "Modelo" são referentes aos modelos de importação com posições pré-definidas e não podem ser alteradas. |
A rotina de Manutenção de Layouts possui 2 opções de utilização: - Seleção de uma Tabela para definição do leiaute.
Ao selecionar uma tabela, se já existir um leiaute previamente cadastrado, ele é carregado para alteração. Do contrário um novo leiaute genérico baseado na ordem dos campos no dicionário de dados (SX3) é gerado. Na grid é exibido Campo, Título (nome do campo), Tipo (C- caracter, N- numérico, D- Data, L- lógico, M- memo), Obrigatório (se é obrigatório informar campo no Protheus), Posição (a posição no arquivo texto, que é inicialmente baseado na ordem do SX3) e Fórmula (detalhes mais abaixo). Dos campos da grid será possível apenas alterar a posição e a fórmula. Não é permitido inclusão de novas campos ao leiaute. No cabeçalho, é possível alterar a Descrição (carregado o nome da tabela no SX2 por padrão), o Nome do Arquivo de importação, a Sequência de execução, e o De-Para automático (detalhes mais abaixo). Image Added
Todo campo obrigatório deve possuir uma posição válida (diferente de ZERO) ou uma fórmula definida. Por exemplo, se a Empresa é a mesma e não existe informação nela no arquivo, a posição pode ser 0 (ZERO), e na Fórmula deve ser informado um valor para o campo: "T1". Em resumo, deve ser informado a posição apenas de campos que efetivamente existem no arquivo texto, os demais devem ficar com a posição "0" (ZERO). No campo fórmula podem ser utilizadas Strings, Funções Protheus e Funções de Usuário.
2. Seleção de um Modelo de importação padrão. Ao selecionar o modelo desejado os campos Descrição, Nome do Arquivo e Sequência presentes no cabeçalho serão carregados. Qualquer alteração realizada previamente e salva será carregada. No grid, serão carregados os campos do leiaute. Quando utilizada a opção Modelo, será possível alterar apenas o campo Fórmula no grid. Não é permitido inclusão de novas campos ao leiaute. No cabeçalho os campos Descrição, Nome do Arquivo, Sequência e De-Para Automático são abertos para alteração. Caso tenha sido realizada alguma alteração anterior no cadastro do modelo, estas serão carregadas. Image Added De-Para Automático De-Para automático está disponível apenas para algumas tabelas/modelos. Ao habilitá-lo, ele será utilizado apenas para o campo chave principal da tabela, realizando a busca do código identificador (De) a ser importado na tabela de De-Para, caso não encontre o registro na tabela, será gerado um novo código (Para) a partir da numeração automática da tabela importada e também gravado a relação entre os códigos na tabela de De-Para. Quando esta opção estiver desativada, será realizada a busca do relacionamento na tabela de De-Para, porém caso não encontre registro será realizada a tentativa de gravação com o próprio valor proveniente do arquivo texto, passando pela validação do sistema (tamanho do campo, conteúdo, relacionamento com outras tabelas). ExemploNo leiaute de importação dos Sindicatos foi definido que seria feito o De/Para automático: Image Added Após a importação do arquivo de Sindicatos, o De/Para foi gerado de maneira automática: Image Added Durante a importação do arquivo de funcionários, que continha o valor original do Sindicato, o sistema busca o valor da chave externa e preenche o campo RA_SINDICA com valor cadastrado na chave interna: Image Added Image Added
Gerar Arquivo Texto de exemplo: No cabeçalho, há disponível um botão que possibilita a geração de um exemplo de arquivo texto baseado no leiaute carregado em tela. Assim como a opção de Gerar XML, esta opção visa facilitar a configuração/geração do arquivo de importação. Image Added
Fórmulas Para cada campo presente no leiaute, é possível configurar uma fórmula para tratar o conteúdo a ser gravado no sistema. As fórmulas podem ser uma string com valor fixo (sempre entre aspas), referência para um campo existente no Protheus, chamada de funções internas do Protheus ou chamada de funções de usuário executadas via RdMake. Foram disponibilizadas 2 funções de usuário para o auxílio da gravação dos campos Período ( U_Periodo() - retorna o período do registro ) e Processo ( U_Processo() - retorna o código do processo do funcionário do registro/linha atual). Exemplo 01: O campo Empresa não está presente no arquivo (posição = zero) e possui uma Fórmula de usuário para retornar o valor a ser gravado no campo. O campo Filial também não está presente no arquivo (posição = zero) e possui uma string com valor fixo para gravação do conteúdo. Assim, todos os registros serão gravados com o conteúdo "D MG 01" no campo QB_FILIAL. Image Added Exemplo 02: O campo Cod. Processo não está presente no arquivo (posição = zero) e possui chamada para a função U_Processo(). Desta forma, a cada linha processada, será verificado e retornado o código do Processo referente ao funcionário do registro (PC_MAT - posição 3) O campo Periodo não está presente no arquivo (posição = zero) e possui chamada para a função U_Periodo(). Desta forma, a cada linha processada será verificado e retornado o código do Período referente ao registro importado baseando no campo data do lançamento (neste caso PC_DATA - posição 4). O campo Número Pagto não está presente no arquivo (posição = zero) e possui um conteúdo fixo informado. Assim, em todos os registros o campo PC_NUMPAG será gravado com conteúdo "01". Os campos Centro de Custo, Departamento, Posto, Função e Turno não estão presentes no arquivo (posição = zero) e estão referenciados aos campos do cadastro de Funcionários que armazenam as mesmas informações. Assim, para cada campo, será consultado o valor presente no cadastro do funcionário do registro e gravará o conteúdo lido no referente campo da tabela alvo. O campo Sequencia não está presente no arquivo (posição = zero) e possui chamada para a função Protheus Posicione(tabela, ordem, chave de busca, campo de retorno). Esta função irá retornar o conteúdo presente no campo PJ_SEMANA. Image Added Dica |
---|
title | Variáveis de Manipulação do Arquivo |
---|
| A fim de flexibilizar e facilitar a manipulação dos dados do arquivo no momento da importação, está disponível para uso 3 variáveis que fazem referência aos dados do arquivo. Essas variáveis podem ser utilizadas como parâmetros nas chamadas das funções presentes no campo Fórmula. - aCampos: matriz que guarda todos os campos utilizados no leiaute. Cada índice da matriz guarda um campo e é composto por sete posições, sendo elas:
- Nome do campo
- Posição na linha
- Fórmula do campo
- De/Para
- Posição reservada
- Tipo do campo
- Ordem.
- aLinha: vetor que armazena todos os valores da linha atual.
- nPos: armazena o índice do campo atual dentro de aCampos. Dessa forma para se acessar o campo que está sendo processado atualmente basta utilizar aCampos[nPos].
Exemplo 01:No cadastro de Bancos do Protheus, as informações de Número da Conta e Dígito são armazenadas em campos separados. Isso não é comum em todos os sistemas. Caso o arquivo a ser importado possua essas informações unificadas em apenas um campo, é possível fazer o tratamento da informação via fórmula no leiaute sem haver necessidade de alteração do arquivo. No caso deste cenário, os campos A6_NUMCON e A6_DVCTA serão referenciados à mesma coluna do arquivo (5) no campo Posição, e no campo Fórmula realiza-se o tratamento da informação lida. Como demonstra a figura abaixo, a referência aLinha[aCampos[nPos,2]] carrega o dado presente na posição atual (nPos = 5) da linha que está sendo lida. No campo A6_NUMCON a função Right() indica que será carregado neste campo somente os 4 primeiros caracteres da coluna lida. Já no campo A6_DVCTA a função Left() indica que será carregado neste campo somente os últimos 2 caracteres da coluna lida. Image AddedExemplo 02:Caso algum campo possua tamanho menor ao tamanho do campo no Protheus, é possível realizar um tratamento para completar o tamanho do campo com certo caractere a fim do preenchimento completo do campo. No exemplo abaixo, imagine que o campo Matrícula possua 4 caracteres no sistema anterior e, no Protheus temos o campo Matrícula com 6 caracteres. Caso não deseje gerar as matrícula por De-Para automático, pode-se realizar uma tratamento no próprio campo para completar com zeros (0) à esquerda a fim de ter o conteúdo totalmente preenchido. Com uso da função Protheus StrZero() completa-se a cadeia de caracteres lida na coluna do campo Matrícula (aLinha[aCampos[nPos,2]]). Image Added |
|