Como configurar o MILE para importação de Contatos (TMKA070), incluindo os dados de endereço e telefone
Produto: | Microsiga Protheus® |
Versões: | Superiores a 12.1.23 |
Ocorrência: | Como configurar o layout do MILE para importar os dados dos Contatos (SU5), incluindo também o Endereço (AGA) e Telefone (AGB)? |
Ambiente: | Padrão |
Passo a passo: | Para realizar a importação dos dados na rotina de Contatos (TMKA070) incluindo o endereço e telefone utilizando o MILE, será necessário algumas configurações adicionais, pois atualmente a estrutura do MILE não permite realizar a importação utilizando simplesmente a configuração de canais. Basicamente o MILE funciona da seguinte forma: para cada canal criado, será enviado sequencialmente para a rotina em questão um array como um parâmetro. Então se temos 2 canais (1 Master e 1 Detail), ao realizar a chamada da MsExecAuto da rotina, será enviado da seguinte forma: FuncaoXXX(vetor[1], vetor[2], 3) Se tivermos 3 canais , será desta forma: FuncaoXXX(vetor[1], vetor[2],vetor[3], 3) E assim por diante. Visto isso, temos uma incompatibilidade de uso para a inclusão dos dados de Endereço (AGA) e de Telefone (AGB), pois na rotina TMKA070 os parâmetros que recebem estes dados estão na terceira e quarta posição. Veja os parâmetros recebidos pela rotina TMKA070 via rotina automática: TMKA070( aRotAuto, nOpc, xAutoAGA, xAutoAGB, xPrefSU5 ) onde: aRotAuto - Array - Dados do cabeçalho do contato (SU5) nOpc - Numérico - Opção da rotina a ser executada xAutoAGA - Array - Informações de endereço do contato (AGA) xAutoAGB - Array - Informações de telefone do contato (AGB) xPrefSU5 - Lógico - Modo de compatibilidade Neste caso, precisamos enviar o vetor do canal Master (SU5) como primeiro parâmetro (aRotAuto) e os vetores dos canais Detail (AGA e AGB) como terceiro e quarto parâmetro (xAutoAGA e xAutoAGB). Vamos precisar manipular o array de canais criado peloMILEatravés de uma UserFunction. Exemplo da função de Pré Execução Neste exemplo o tratamento foi feito para importar um endereço e um telefone para cada contato. O MILE pode ser adaptado e customizado conforme as necessidades dos clientes. Para maiores detalhes, veja a documentação: MILE - Model Integrator Layout Engine User Function TK070TST(Interface, aInfos, aLayOut, aSaidas) /* Interface - Lógico - .T. se está sendo executado com interface / .F. se está sendo executado sem interface aInfos - Array - Vetor com informações adicionais como linha inicial e final lida, nome do arquivo etc. aLayOut - Array - Informações das definições do layout. aSaidas - Array - Estrutura do vetor sobre dados de saída */ Local aNewVet := Array(5) //Cria um array com a quantidade de parâmetros utilizadas na execauto Local nOpcx := 3 Local nX := 0 Local aAGA := {} Local aAGB := {} Local aTel := {} Local aEnd := {} //Separa os dados dos canais para serem enviados para a execauto For nX := 1 To Len(aSaidas[2][4][1]) If "AGA_" $ aSaidas[2][4][1][nX][1] aAdd(aAGA,{ aSaidas[2][4][1][nX][1], aSaidas[2][4][1][nX][2], aSaidas[2][4][1][nX][3] }) ElseIf "AGB_" $ aSaidas[2][4][1][nX][1] aAdd(aAGB,{ aSaidas[2][4][1][nX][1], aSaidas[2][4][1][nX][2], aSaidas[2][4][1][nX][3] }) EndIf Next nX aAdd(aEnd, aAGA) aAdd(aTel, aAGB) //Carregamos os dados nas posições corretas da execauto aNewVet[1] := aClone(aSaidas[1][4][1]) //aRotAuto aNewVet[2] := {nOpcx} //nOpc aNewVet[3] := aClone(aEnd) //xAutoAGA aNewVet[4] := aClone(aTel) //xAutoAGB aNewVet[5] := {} //xPrefSU5 Return aClone(aNewVet) A função acima deverá ser compilada no repositório antes da configuração do layout. Configuração do Layout 1) Informações gerais. 2) Formatação do arquivo. 3) Tratamentos e Validações. 4) Adapters de Rotina Automática. 5) Definição dos Canais. Criar um canal B (DETAIL) para receber os dados de endereço (CANAL AGA). Criar um canal C (DETAIL) para receber os dados de telefone (CANAL AGB). Exemplo do Arquivo de Importação Neste exemplo iremos importar dois Contatos com um endereço e um telefone, conforme a customização do rdmake de exemplo. Download do exemplo do layout (XML) e do arquivo de importação
Para efetuar a importação de Contatos através do MILE, a rotina de Cadastro de Contatos - TMKA070 deverá estar com a data igual ou superior à 19/11/2020. |
Observações: |
|