Você está na página 1de 75

MILE Model Integrator Layout Engine

Capacitao Interna

Manual MILE

1.

O que o MILE? ................................................................................................................................................................ 2

1.1. Conceito bsico da ferramenta .......................................................................................................................................... 2


1.2. O que um Canal .............................................................................................................................................................. 2
1.3. O que uma Unidade de Informao ................................................................................................................................ 2
1.4. O que um Adapter .......................................................................................................................................................... 2
1.5. O que um Layout ............................................................................................................................................................ 2
1.6. Composio do layout ....................................................................................................................................................... 2
1.6.1. Geral ................................................................................................................................................................................. 2
1.6.2. Formatao do Arquivo ..................................................................................................................................................... 2
1.6.3. Tratamentos e validaes.................................................................................................................................................. 2
1.6.4. Adapters de Rotina Automtica ........................................................................................................................................ 2
1.6.5. Adapters em MVC ............................................................................................................................................................. 2
1.6.6. Canais................................................................................................................................................................................ 2
1.6.7. Detalhes do Canal ............................................................................................................................................................. 2
1.6.8. Sadas ................................................................................................................................................................................ 2
1.6.9. Campos ............................................................................................................................................................................. 2
1.6.10.

Variveis .................................................................................................................................................................. 2

1.6.11.

Aes relacionadas ................................................................................................................................................... 2

1.6.12.

Campo Pr Execuo ................................................................................................................................................ 2

1.6.13.

Campo Ps Execuo ................................................................................................................................................ 2

1.6.14.

Campo Trat. Dados ................................................................................................................................................... 2

1.6.15.

Campo Valid. Operao ............................................................................................................................................ 2

1.7. Limites da ferramenta ....................................................................................................................................................... 2


2.

Funcionalidades especiais cadastro de layouts .................................................................................................................. 2

2.1. Layouts Exportar ............................................................................................................................................................... 2


2.2. Layouts Importar ............................................................................................................................................................... 2
2.3. Processar TXT .................................................................................................................................................................... 2
2.4. LOG ................................................................................................................................................................................... 2
2.5. Ativar/Desativar ................................................................................................................................................................ 2
2.6. Documentao .................................................................................................................................................................. 2
3.

LOG de Processamento ..................................................................................................................................................... 2

4.

Integrao com o Browse .................................................................................................................................................. 2

5.

Caractersticas das exportaes ........................................................................................................................................ 2

6.

Utilizao da ferramenta diretamente em aplicaes AdvPL ............................................................................................. 2

6.1. Exemplo de uso da ferramenta diretamente em aplicaes AdvPL ................................................................................... 2


6.2. Mtodos da Classe FWMILE .............................................................................................................................................. 2
6.2.1. Mtodo New() ................................................................................................................................................................... 2

Verso 1.0

Manual MILE

6.2.2. Mtodo Activate() ............................................................................................................................................................. 2


6.2.3. Mtodo Deactivate() ......................................................................................................................................................... 2
6.2.4. Mtodo HasInterface() ...................................................................................................................................................... 2
6.2.5. Mtodo IsActive() .............................................................................................................................................................. 2
6.2.6. Mtodo IsSimulation() ...................................................................................................................................................... 2
6.2.7. Mtodo ClassName() ......................................................................................................................................................... 2
6.2.8. Mtodo SetLayout() .......................................................................................................................................................... 2
6.2.9. Mtodo SetLogGeneration() .............................................................................................................................................. 2
6.2.10.

Mtodo SetLogApplication() .................................................................................................................................... 2

6.2.11.

Mtodo SetSimulation() ........................................................................................................................................... 2

6.2.12.

Mtodo SetTXTFile() ................................................................................................................................................ 2

6.2.13.

Mtodo SetInterface() .............................................................................................................................................. 2

6.2.14.

Mtodo SetInitLine() ................................................................................................................................................ 2

6.2.15.

Mtodo SetOperation() ............................................................................................................................................ 2

6.2.16.

Mtodo SetAlias() .................................................................................................................................................... 2

6.2.17.

Mtodo Error() ......................................................................................................................................................... 2

6.2.18.

Mtodo GetError() ................................................................................................................................................... 2

6.2.19.

Mtodo GetLayout()................................................................................................................................................. 2

6.2.20.

Mtodo GetOperation() ........................................................................................................................................... 2

6.2.21.

Mtodo GetTXTFile() ................................................................................................................................................ 2

6.2.22.

Mtodo CanActivate() .............................................................................................................................................. 2

6.2.23.

Mtodo Import() ...................................................................................................................................................... 2

6.2.24.

Mtodo Export()....................................................................................................................................................... 2

6.2.25.

Mtodo Dialog() ....................................................................................................................................................... 2

6.2.26.

Mtodo MakeLog()................................................................................................................................................... 2

6.2.27.

Mtodo GetIDOperation() ........................................................................................................................................ 2

7.

Agendando importaes ................................................................................................................................................... 2

8.

Exemplificando alguns os Layouts ..................................................................................................................................... 2

8.1. Layout de importao simples sem canal .......................................................................................................................... 2


8.2. Layout de importao com 2 canais MASTER - DETAIL ...................................................................................................... 2
8.3. Layout de importao 2 canais para 1 sada ...................................................................................................................... 2
8.4. Layout de importao com ocorrncia nica-nica ........................................................................................................... 2
8.5. Layout de importao com uso de variveis ...................................................................................................................... 2
9.

Trabalhando com uma funo especfica........................................................................................................................... 2

Verso 1.0

Manual MILE

1. O que o MILE?
O MILE o acrnimo para Model Integrator Layout Engine. O intuito desta ferramenta facilitar a
importao/exportao de dados para o sistema atravs do uso de rotinas automticas (MSExecAuto) e/ou rotinas
desenvolvidas em MVC utilizando arquivos em formato texto (TXT).

1.1.

Conceito bsico da ferramenta

A ideia bsica mapear as informaes que sero importadas ou exportadas em um layout (veja o tem Erro!

Fonte de referncia no encontrada. - Erro! Fonte de referncia no encontrada.). Esse layout


trabalha no conceito de canais (veja o tem Erro! Fonte de referncia no encontrada. - Erro! Fonte de

referncia no encontrada.), feita a leitura do arquivo texto e atravs do layout enviasse os dados para
serem processados pelo adapter ( veja tem Erro! Fonte de referncia no encontrada. - Erro! Fonte de
referncia no encontrada. )

1.2.

O que um Canal

O canal pode ser utilizado para definir que informaes esto sendo trabalhadas, por exemplo, em uma importao
de pedido de vendas h informaes de cabealho e de tens, as informaes que compem o cabealho podem
estar em um canal e as de tens em outro canal.
Exemplo:
|01|000001|20121005|000001|01|20|
|02|P0000002|10.00|502|
|02|P0000002|3.00|502|
|02|P0000002|120.00|502|
Neste exemplo o canal 01, (no comeo da linha) poderia ser o cabealho e o 02 os tens.
O canal uma informao que deve constar no arquivo texto e que define uma separao ou tipagem para os dados
que esto sendo trabalhados.
Um layout pode possuir um, vrios ou nenhum canal.

Verso 1.0

Manual MILE

1.3.

O que uma Unidade de Informao

Dentro de um arquivo texto iremos importar/exportar vrias informaes, mas cada layout se refere a um contexto
(notas, pedidos, clientes, etc.). Dentro de cada contexto, cada conjunto de informaes uma unidade de
informao.
Por exemplo, em um arquivo de pedidos de venda podem existir vrios pedidos com vrios canais, mas vamos
importar/exportar 1 pedido a cada vez, nessa idia, cada pedido uma unidade de informao. Se vamos importar
clientes, cada um dos clientes que ser importado (independente de quantos canais tenha o layout) ser uma
unidade de informao e assim por diante.

1.4.

O que um Adapter

Adapter a aplicao responsvel por processar as informaes que foram obtidas a partir do arquivo texto.

1.5.

O que um Layout

Layout a configurao que permite, ao se ler um arquivo texto, identificar os dados contidos naquele arquivo e
fazer o seu relacionamento com as informaes dos adapters.

Verso 1.0

Manual MILE

1.6.

Composio do layout

Um layout pode ser configurado atravs da aplicao de manuteno de layouts (CFGA600) que se encontra no
mdulo do Configurador (SIGACFG) nas opes Ambiente / Aceleradores / MILE / Layouts
A seguir detalhamos a composio de um layout.

1.6.1. Geral
Contm dados gerais do layout.

Verso 1.0

Manual MILE

Possui os campos:
Layout: Cdigo do Layout
Descrio: Descrio do layout
Tipo de Adapter: Tipo de Adapter. Veja tem Erro! Fonte de referncia no encontrada. - Erro! Fonte de
referncia no encontrada.

1=MSExecAuto - Tratamento por rotina automtica (MSExecAuto) (a rotina deve possuir esta caracterstica)

2=MVC - Tratamento por rotina em MVC

3=Funo - Tratamento por funo especfica. Neste caso os dados sero lidos pela ferramenta e passados
para funo. Para mais detalhes veja tem 9 - Trabalhando com uma funo especfica.

Adapter: Nome do Adapter.


Quando o tipo de adapter :

MSExecAuto: Informa-se o nome da funo de rotina automtica (MSExecAuto).

MVC: Informa-se nome do FONTE (.pr?) que contm o modelo de dados (MODELDEF).

Funo: Informa-se o nome da funo que ir receber os dados lidos

Tabela principal: Alias da tabela principal utilizada na importao. A rea corrente apontada para este alias antes
de se efetuar a importao.
Ordem: Ordem da tabela principal utilizada na importao. A ordem da tabela principal apontada para esta ordem
antes de se efetuar a importao.
Verso do Layout: Verso do layout. Campo livre para informar a verso do layout.
ATENO: No h controle de versionamento, este apenas um campo livre para controle manual da verso.

1.6.2. Formatao do Arquivo


Contm dados sobre o formato do arquivo texto.

Verso 1.0

Manual MILE

Possui os campos:
Arquivo TXT: Formato do arquivo texto

1=Fixo: Dados com largura fixa

2=Separador:- Dados usam algum separador entre si

Separador: Se o formato do arquivo texto for por separador, informar o caracter separador utilizado. Os caracter
aceitos so:
| Pipe
; Ponto-e-vrgula
, Vrgula
/ Barra
- Trao
Tab Tabulao ( Chr(9) )
ATENO: Se os dados contiverem algum dos smbolos dos separadores, os mesmo no sero importados
corretamente.
Separador Inicial: Quando o layout possui separadores, define se o layout possui um separador inicial em suas
linhas.
Separador Final: Quando o layout possui separadores, define se o layout possui um separador final em suas linhas.
Origem do Canal: Posio de onde est a informao de canal do layout.
Quando o formato do TXT largura fixa informa-se a posio inicial e final separadas por um trao. Ex. 0001-0005.
Quando o formato do TXT por separador informa-se a posio da informao. Ex. 0001, isso significa que o canal
o 1 campo da linha.
Quando no h canais informar 0000-0000 ou 0000 conforme o formato.
Formato Data: Formato dos campos de data.
1=dd/mm/aa

Dia, ms e ano.

2=aaaammdd Ano, ms e dia

Ex. 01/05/12 ou 01/05/2012


Ex. 20120501

Verso 1.0

Manual MILE

Separador Decimal: Tipo de separador de casas decimais dos dados numricos.


1=Ponto

Ex. 12345.67

2=Vrgula

Ex. 12345,67

ATENO: Se o tipo de separador de casas decimais no estiver correto, os dados no sero importados
corretamente. Se os dados possurem separadores de milhares, isto deve ser tratado no prprio layout utilizando o
campo Execuo.
Entrada MultiCanal: Informa se o arquivo texto possui vrios canais .

1.6.3. Tratamentos e validaes

Contm os nomes de funes especficas que podem ser definidas para tratamentos pontuais dos dados lidos.

Possui os campos:
Pr Execuo: Nome da funo que ser executada antes da execuo do adapter. Para maiores informaes veja o
tem Erro! Fonte de referncia no encontrada. - Erro! Fonte de referncia no encontrada.
Ps Execuo: Nome da funo que ser executada aps da execuo do adapter. Para maiores informaes veja o
tem Erro! Fonte de referncia no encontrada. - Erro! Fonte de referncia no encontrada.
Trat. Dados: Nome da funo que ser executada para tratamento dos dados. Para maiores informaes veja o tem

Erro! Fonte de referncia no encontrada. - Erro! Fonte de referncia no encontrada.


Valid. Operao: Nome da funo para validao da operao. Para maiores informaes veja o tem Erro! Fonte

de referncia no encontrada. - Erro! Fonte de referncia no encontrada.

Verso 1.0

Manual MILE

1.6.4. Adapters de Rotina Automtica

Contm definies de caractersticas especficas para adapters que so uma rotina automtica (MSExecAuto).

Possui os campos:
Tipo MSExecAuto: Se o tipo de adapter for uma rotina automtica (MSExecAuto), informar o modelo do rotina
automtica. So suportados 3 modelos:
1=Modelo 1 (Tabela simples)
2=Modelo 2 (1 Tabela com cabealho/tens)
3=Modelo 3 (2 Tabelas diferentes cabealho/tens)
Outros modelos no so suportados.
Detalhes Opcional: Quando o adapter uma rotina automtica (MSExecAuto), define se os detalhes dessa rotina
automtica so opcionais. Este campo deve ser preenchido conforme cada rotina automtica, pois algumas aceitam
esta caracterstica e outras no.
IMPORTANTE: A operao executada para adapters de rotina automtica (MSExecAuto) sempre ser apenas
INCLUSO.

1.6.5. Adapters em MVC

Contm definies de caractersticas especficas para adapters em MVC.

Possui os campos:
Operaes Importao: Para adapters em MVC, define quais operaes sero consideradas na importao.
Apenas Incluso: Todos dados sempre sero tratados como uma nova incluso.
Incluso/Alterao: Ser verificada a chave nica do modelo e determinado se o dado uma incluso ou alterao,
se a chave no for encontrada ser uma incluso, se for encontrada, ser uma alterao.

10

Verso 1.0

Manual MILE

Mtodo de Alterao: Define o mtodo para efetuar as alteraes.


Alterao Direta: Os dados sero alterados diretamente no modelo.
Excluir/Incluir: feita a excluso dos dados pelo adapter em MVC e em seguida uma nova incluso.

1.6.6. Canais

Faz a manuteno dos canais. Mesmo quando o arquivo texto (TXT) no possuir canais, dever ser criado um canal
fictcio com qualquer cdigo.

Boto Incluir: Inclui um novo canal.


Boto Alterar: Alterar o cdigo de um canal
Boto Excluir: Exclui um canal e todos os outros que estiverem abaixo dele.

1.6.7. Detalhes do Canal

Contm dados sobre o canal.

Verso 1.0

11

Manual MILE

Possui os campos:
Canal: Cdigo do canal
Descrio: Descritivo do canal
ID Sada: Identifica o destino dos dados.
Se o tipo de adapter for rotina automtica (MSExecAuto), deve ser MASTER ou DETAIL conforme o modelo do rotina
automtica (Modelo 1 apenas MASTER, demais MASTER/DETAIL).
Se o tipo de adapter for MVC deve ser um dos IDs dos componentes do modelo de dados.
Se o tipo de adapter for Funo deve ser MASTER ou DETAIL similarmente a rotina automtica (MSExecAuto)
Ocorrncia: Ocorrncia do canal no layout. Para uma unidade de informao (1 cadastro, 1 pedido, 1 nota, etc.)
informa a ocorrncia do canal.
1=nica: O canal ocorre apenas 1 vez para cada unidade de informao ( veja tem Erro! Fonte de referncia

no encontrada. - Erro! Fonte de referncia no encontrada. ).


N=Vrias: O canal ocorre vrias vezes para cada unidade de informao ( veja tem Erro! Fonte de referncia

no encontrada. - Erro! Fonte de referncia no encontrada. ).


Ex.: Em um pedido de vendas o canal de cabealho ocorre 1 vez e o canal de tens ocorre vrias vezes, isso para cada
pedido.
Obs.: Sempre pensar nas ocorrncias em uma unidade de informao (1 pedido, 1 nota, etc.)
Ps Execuo: Funo executada aps a leitura dos dados do canal.

1.6.8. Sadas

Componente visual que exibe o relacionamento entre do canal com o destino. As pastas azuis so os nveis no
destino e as amarelas os canais vinculados a eles.
12

Verso 1.0

Manual MILE

1.6.9. Campos

Contm dados sobre os campos do layout.

Possui os campos:
Seq.: Sequncia dos campos.
Obs. Na importao para uma rotina automtica (MSExecAuto) os campos so ordenados conforme o dicionrio de
campos (SX3).
Campo: Nome do campo.
Descrio: Descrio do campo
Tipo: Tipo do campo, s informar se o campo no constar do dicionrio, como por exemplo, campos adicionais de
rotina automtica (MSExecAuto) (AUTBANCO, AUTBAIXA, etc. )
Origem Dado: Posio onde est o dado na linha do arquivo texto.
Quando o formato do arquivo texto largura fixa informa-se a posio inicial e final separadas por um trao. Ex.
0001-0005.
Quando o formato do arquivo texto por separador informa-se a posio da informao. Ex. 0001, isso significa que
o dado o 1 campo da linha, e assim por diante.

Verso 1.0

13

Manual MILE

Quando o dado no vem diretamente do arquivo texto (vem de varivel ou valor fixo) usar 0000-0000 ou 0000
conforme o formato.
Obs: Se o dado vir de mais de um lugar da linha do arquivo texto, pode-se informar as vrias origens separadas por
um ponto-e-vrgula (;), por exemplo, 0001-0005;0008-0010 significa que contedo das posies 1 a 5 e de 8 a 10 da
linha do arquivo texto faro a composio do dado. O mesmo se aplica se o formato for por separadores, por
exemplo, 0001;0005 isso significa que contedo do 1 e do 5 campos da linha do arquivo texto faro a composio
do dado.
Execuo: Funo executada para tratamento do dado lido. Recebe como parmetros as variveis xA at xZ
conforme a quantidade de origens. Por exemplo, se a origem est definida como 0001-0005, o dado lido passado
na varivel xA, se est como 0001-0005;0008-0010 o dado lido de 0001-0005 passado na varivel xA e o lido de
0008-0010 na varivel xB e assim por diante. O retorno desta execuo ser enviado para o campo ao invs de
diretamente o dado lido.
Um exemplo:
Upper( xA )
Preenchendo o campo desta forma, indica que o dado lido (xA) ser usado na funo UPPER() e o resultado ser
enviado ao campo correspondente.

Condio: Condio para importao/exportao de um campo. Pode-se definir uma expresso AdvPL ou funo
que retornando verdadeiro (.T.) o dado ser enviado ao campo e retornando falso (.F.) o dado no ser enviado.
Recebe como parmetro o dado lido e j tratado pelo que est definido em EXECUO, se houver.
Observao: Observaes que se deseja fazer.
Boto Acima: Move um campo uma sequncia acima.
Boto Abaixo: Move um campo uma sequncia abaixo.
Boto Campos: Se o tipo do adapter for uma rotina automtica (MSExecAuto), preenche o layout com os campos da
tabela principal informada. Se o tipo do adapter for MVC preenche com os campos da estrutura do componente do
modelo de dados definido no ID de Sada.
Boto Incio: Move um campo para primeira sequncia.
Boto Final: Move um campo para ltima sequncia.

14

Verso 1.0

Manual MILE

1.6.10. Variveis

Contm dados sobre as variveis que podem ser criadas para uso no layout. Essas variveis sero criadas em
memria no decorrer da importao/exportao. Elas sero criadas no momento em que feita a leitura do canal
onde ela foi definida. As variveis so preenchidas na sequncia que foram definidas.
Por exemplo, a varivel cXPTO foi criada no canal X, e dever ser preenchida com um informao do canal, quando o
canal X for lido a varivel cXPTO ser preenchida com o contedo determinado.
Essas variveis so criadas com o escopo PRIVATE.

Possui os campos:
Seq.: Sequncia dos variveis.
Varivel: Nome do varivel.
Tipo: Tipo da varivel.
Origem Dado: Posio onde est o dado na linha do arquivo texto.
Quando o formato do arquivo texto largura fixa informa-se a posio inicial e final separadas por um trao. Ex.
0001-0005.
Quando o formato do arquivo texto por separador informa-se a posio da informao. Ex. 0001, isso significa que
o dado o 1 campo da linha, e assim por diante.
Quando o dado no vem diretamente do arquivo texto ( valor fixo) usar 0000-0000 ou 0000 conforme o formato.
Obs.: Se o dado vir de mais de um lugar da linha do arquivo texto, pode-se informar as vrias origens separadas por
um ponto-e-vrgula (;), por exemplo, 0001-0005;0008-0010 significa que contedo das posies 1 a 5 e de 8 a 10 da
linha do arquivo texto faro a composio do dado. O mesmo se aplica se o formato for por separadores, por
exemplo, 0001;0005 isso significa que contedo do 1 e do 5 campos da linha do arquivo texto faro a composio
do dado.
Verso 1.0

15

Manual MILE

Execuo: Funo executada para tratamento do dado lido. Recebe como parmetros as variveis xA at xZ
conforme a quantidade de origens. Por exemplo, se a origem est definida como 0001-0005, o dado lido passado
na varivel xA, se est como 0001-0005;0008-0010 o dado lido de 0001-0005 passado na varivel xA e o lido de
0008-0010 na varivel xB e assim por diante. O retorno desta execuo ser enviado para a varivel ao invs de
diretamente o dado lido.
Condio: Condio para preenchimento de uma varivel. Pode-se definir uma expresso AdvPL ou funo que
retornando verdadeiro (.T.) o dado ser enviado a varivel e retornando falso (.F.) o dado no ser enviado. Recebe
como parmetro o dado lido e j tratado pelo que est definido em EXECUO, se houver.
Observao: Observaes que se deseja fazer.
Boto Acima: Move um varivel uma sequncia acima.
Boto Abaixo: Move um varivel uma sequncia abaixo.
Boto Incio: Move uma varivel para primeira sequncia.
Boto Final: Move uma varivel para ltima sequncia.

1.6.11. Aes relacionadas

Na opo Aes Relacionadas existem a seguintes funcionalidades:

Criar de MVC: Quando se vai criar um novo layout para importao ou exportao utilizando um adapter em
MVC esta funcionalidade serve para j preencher o layout com a estrutura do modelo de dados com seus
componentes e campos. Onde:
Fonte MVC: Nome do FONTE (.pr?) que contm o modelo de dados (MODELDEF)
Sobrepor os dados: Indica que os dados do layout sero descartados e recriados com os do modelo de dados
do adapter em MVC
Incluir no canal atual: Indica que os dados criados a partir do MVC sero colocados a partir do canal
posicionado.

16

Verso 1.0

Manual MILE

1.6.12. Campo Pr Execuo

Neste campo pode-se informar uma funo que ser executada antes da execuo do adapter (FUNCTION ou USER
FUNCTION) e pode ser usada para manipular os dados que sero enviados ao adapter. Para funo informada so
passados alguns parmetros e esperado um retorno especfico.
Se for uma USER FUNCTION, os parmetros so passados via PARAMIXB. Exemplificando:
USER FUNCTION XPTO()
Local aParam := PARAMIXB
Se for uma FUNCTION os parmetros so passados diretamente como parmetros da prpria funo, portanto, a
funo deve estar no formato abaixo para que consiga receber os parmetros.
FUNCTION XPTO( param1, param2, param3, param4, param5 )
A funo receber como parmetros:
[1] .T. se est sendo executado com interface / .F. se est sendo executado sem interface
[2]

Vetor

com

informaes

adicionais.

Veja

.
[3] Informaes

das

definies

do

layout.

Veja

Para adapters de rotina automtica (MSExecAuto)


[4] Dados de Sada. Veja Erro! Fonte de referncia no encontrada.
[5] Vetores

Verso 1.0

de

rotina

automtica

17

(MSExecAuto).

Veja

Manual MILE

Para adapters em MVC


[4] Modelo de dados preenchido.
O retorno esperado da funo dever ser:
Se o adapter for rotina automtica (MSExecAuto), o retorno deve ser um array no formato:
Adapters de rotina automtica (MSExecAuto) Modelo 1:
[1] Dados dos campos
[1][x][1]

Campo

[1][x][2]

Contedo

[1][x][3]

NIL

Onde:
[x] Varia para cada campo
[2] Vazio

Adapters de rotina automtica (MSExecAuto) Modelo 2 e Modelo 3


[1] Dados dos campos de cabealho
[1][x][1]

Campo

[1][x][2]

Contedo

[1][x][3]

NIL

Onde:
[x] Varia para cada campo
[2] Dados dos campos de tens
[2][x][1][y][1]

Campo

[2][x][1][y][2]

Contedo

[2][x][1][y][3]

NIL

Onde:
[x] Varia para cada linha

18

Verso 1.0

Manual MILE

[y] Varia para cada campo

Se o adapter for em MVC:


O retorno deve ser um objeto do modelo de dados do adapter (oModel )
O retorno desta funo ser usado na execuo do adapter.

Verso 1.0

19

Manual MILE

1.6.13. Campo Ps Execuo

Neste campo pode-se informar uma funo que ser executada aps da execuo do adapter (FUNCTION ou USER
FUNCTION) e pode ser usada para algum tratamento adicional. Para funo informada so passados alguns
parmetros e no esperado um retorno especfico.
Se for uma USER FUNCTION, os parmetros so passados via PARAMIXB. Exemplificando:
USER FUNCTION XPTO()
Local aParam := PARAMIXB
Se for uma FUNCTION os parmetros so passados diretamente como parmetros da prpria funo, portanto, a
funo deve estar no formato abaixo para que consiga receber os parmetros.
FUNCTION XPTO( param1, param2, param3, param4, param5 )
A funo receber como parmetros:
[1] .T. se est sendo executado com interface / .F. se est sendo executado sem interface
[2]

Vetor

com

[3] Informaes

das

informaes

definies

adicionais.

do

layout.

Veja

Veja

Para adapters de rotina automtica (MSExecAuto)


[4] Dados de Sada. Veja Erro! Fonte de referncia no encontrada.
[5] Erro na rotina automtica (MSExecAuto), Se .T. ocorreu um erro impedindo a importao / .F. a
importao foi realizada
Para adapters MVC
[4] Modelo de dados preenchido.

20

Verso 1.0

Manual MILE

[5] Se .T. ocorreu um erro impedindo a importao / .F. a importao foi realizada

No h retorno esperado.

Verso 1.0

21

Manual MILE

1.6.14. Campo Trat. Dados

Neste campo pode-se informar uma funo para tratamentos dos dados (FUNCTION ou USER FUNCTION). Para
funo informada so passados alguns parmetros e esperado um retorno especfico.
Se for uma USER FUNCTION, os parmetros so passados via PARAMIXB. Exemplificando:
USER FUNCTION XPTO()
Local aParam := PARAMIXB
Se for uma FUNCTION os parmetros so passados diretamente como parmetros da prpria funo, portanto, a
funo deve estar no formato abaixo para que consiga receber os parmetros.
FUNCTION XPTO( param1, param2, param3, param4 )
A funo receber como parmetros:
[1] .T. se est sendo executado com interface / .F. se est sendo executado sem interface
[2]

Vetor

[3] Vetor

com

com

informaes

informaes

das

adicionais.

definies

do

Veja

layout.

Veja

Se o adapter rotina automtica (MSExecAuto):


[4] Vetor com dados de sada. Veja Erro! Fonte de referncia no encontrada.
Se o adapter for em MVC:
[4] Modelo de dados preenchido.
O Retorno esperado da funo dever ser:
Se o adapter for rotina automtica (MSExecAuto), o retorno deve ser um array no formato:
Adapters de rotina automtica (MSExecAuto) Modelo 1:
22

Verso 1.0

Manual MILE

[1] Dados dos campos


[1][x][1]

Campo

[1][x][2]

Contedo

[1][x][3]

NIL

Onde:
[x] Varia para cada campo
[2] Vazio
Adapters de rotina automtica (MSExecAuto) Modelo 2 e Modelo 3:
[1] Dados dos campos de cabealho
[1][x][1]

Campo

[1][x][2]

Contedo

[1][x][3]

NIL

Onde:
[x] Varia para cada campo
[2] Dados dos campos de tens
[2][x][1][y][1] Campo
[2][x][1][y][2] Contedo
[2][x][1][y][3] NIL
Onde:
[x] Varia para cada linha
[y] Varia para cada campo

Se o adapter for em MVC:


O retorno deve ser um objeto do modelo de dados do adapter (Model)

Verso 1.0

23

Manual MILE

1.6.15. Campo Valid. Operao

Neste campo pode-se informar uma funo para validao da operao (FUNCTION ou USER FUNCTION). Para
funo informada so passados alguns parmetros e esperado um retorno especfico. Se o retorno for verdadeiro
(.T.) executada a importao daquela unidade de informao, se o retorno for falso (.F.) no executada a
importao.
Se for uma USER FUNCTION, os parmetros so passados via PARAMIXB. Exemplificando:
USER FUNCTION XPTO()
Local aParam := PARAMIXB
Se for uma FUNCTION os parmetros so passados diretamente como parmetros da prpria funo, portanto, a
funo deve estar no formato abaixo para que consiga receber os parmetros.
FUNCTION XPTO( param1, param2, param3, param4, param5 )
A funo receber como parmetros:
[1] .T. se est sendo executado com interface / .F. se est sendo executado sem interface
[2]

Vetor

com

[3] Informaes

informaes

das

definies

adicionais.

do

layout.

Veja

Veja

Para adapters de rotina automtica (MSExecAuto)


[4] Dados de Sada. Veja Erro! Fonte de referncia no encontrada.
[5] Vetores

de

rotina

automtica

24

(MSExecAuto).

Veja

Verso 1.0

Manual MILE

Para adapters em MVC


[4] Modelo de dados preenchido.
O retorno desta funo dever ser .T. Continua com a importao da unidade de informao / .F. no executa a
importao da unidade de informao

1.7.

Limites da ferramenta

Para os adapters que so uma rotina automtica (MSExecAuto), so suportados apenas os que possuem a
estruturao de Modelo1, Modelo2 e Modelo3.

Para os adapters que so rotina automtica (MSExecAuto), so realizadas apenas operaes de INCLUSO.

Para os adapters que so uma funo especfica s suportada na sada uma estrutura de cabealho (MASTER) /
tem (DETAIL).

Exportaes so realizadas somente para adapters em MVC e baseadas no modelo de dados do mesmo.

Para importaes, o tamanho mximo de uma linha do arquivo texto de 1022 caracteres.

O final de linha determinado pelos caracteres CR e LF ( Chr(13) / Chr(10) ou em hexadecimal 0D / 0A )

A ferramenta no tem controle de versionamento para os layouts. Apesar de ter um campo verso, ele apenas
um campo livre para controle manual da verso.

Disponvel para da linha de produtos Microsiga Protheus 2011 a partir do release 11.80

2. Funcionalidades especiais cadastro de layouts


A aplicao de manuteno de layouts (CFGA600) que se encontra no mdulo do Configurador (SIGACFG) nas opes
Ambiente / Aceleradores / MILE / Layouts, possui algumas funcionalidades especiais.

2.1.

Layouts Exportar

Esta funcionalidade permite exportar um layout criado dentro da ferramenta. gerado um arquivo XML que contm

Verso 1.0

25

Manual MILE

o layout. Essa funcionalidade til para ser fazer cpias de segurana de um layout ou transport-lo de um
ambiente/servidor para outro.

2.2.

Layouts Importar

Esta funcionalidade permite importar um layout que anteriormente foi exportado pela funcionalidade Exportar.
Caso o layout a ser importado j exista, ele no ser sobreposto.

26

Verso 1.0

Manual MILE

2.3.

Processar TXT

Esta funcionalidade permite processar um arquivo texto utilizando o layout que est posicionado no Browse.

2.4.

LOG

Esta funcionalidade um facilitador para visualizao da rotina de log da ferramenta. So exibidas as ocorrncias de
log do layout posicionado no Browse. Veja o tem 3 - LOG de Processamento.
Ao ser selecionada, esta opo apresentar uma tela com as opes de visualizao, onde:
Somente a ltima operao: Apresenta os LOGs da ltima operao, se no houver, apresentar uma tela vazia.
Somente a ltima operao com LOGs: Apresenta os LOGs da ltima operao que gerou algum LOG.
Todos os LOGs do layout: Apresenta todos os LOGs daquele layout.

2.5.

Ativar/Desativar

Esta funcionalidade ativa ou desativa um layout. Um layout desativado no poder ser usado em uma importao ou
exportao.

2.6.

Documentao

Esta funcionalidade gera um relatrio que documenta o layout posicionado no Browse.

Verso 1.0

27

Manual MILE

3. LOG de Processamento
Ao ser executada uma importao ou exportao podem ocorrer erros ou advertncias tanto referentes regra de
negcio do contexto que se est trabalhando (clientes, pedidos, etc.) como uma possvel m construo do adapter
que ocasione erros fatais.
Essas ocorrncias so registradas em uma tabela de LOGs. Para cada erro registrada uma ocorrncia
individualmente.
Elas podem ser visualizadas na aplicao Log de Processamento (CFGA650) que se encontra em no mdulo do
Configurador (SIGACFG) nas opes Ambiente / Aceleradores / MILE / Log de Processamento

A ocorrncia de LOG possui:


ID: ID nico da ocorrncia
Adapter: Adapter que estava sendo utilizado no processamento.
Arquivo: Nome do arquivo texto que estava sendo processado

28

Verso 1.0

Manual MILE

Layout: Layout que estava sendo utilizado no processamento.


Descrio: Descrio do Layout usado no processamento
Data: Data da ocorrncia
Hora: Hora da ocorrncia
Tipo: Tipo de ocorrncia
0 = Mensagem
1 = Aviso
2 = Erro
Ocorrncia: Mensagem de erro gerada.
Usurio: Usurio logado no momento da ocorrncia
Nome do Usurio: Nome do usurio
Complemento: Mensagem complementar, se existir.
Origem: Indica as linha inicial e final lidas do arquivo texto que estavam sendo processadas
ID Operao: ID da Operao importao ou exportao. Por exemplo, se estamos importando um arquivo texto
com 10 clientes e 4 desses clientes geram um problema, cada ocorrncia ter um ID, mas todos eles tero o
mesmo ID de Operao. O ID da Operao s mudar quando h um novo processamento, seja de
importao ou exportao.
XML Associado ao LOG: XML que contm os dados enviados ao adapter.

importante frisar que a ferramenta apenas registra as ocorrncias, as mensagens e seus contedos vm
diretamente dos adapters, assim, quanto mais clara e precisa a mensagem estiver criada no adapter, desta mesma
forma ela ser registrada.

Verso 1.0

29

Manual MILE

4. Integrao com o Browse


Existe uma integrao da ferramenta com o Browse das rotinas do sistema que permite que ao ser cadastrado um
layout para uma determinada rotina do sistema (adapter) automaticamente o Browse apresentar uma opo a
mais em seu menu que permitir fazer a importao ou exportao utilizando este layout.
Por exemplo, imaginemos a criao de um layout para a importao de produtos, no sistema a aplicao que faz isso
a MATA010 que possui o tratamento para rotina automtica (MSExecAuto).
Fazemos a criao do layout:

Aps a criao do layout ao entrarmos na tela da aplicao de Cadastro De Produtos, j estar disponibilizada uma
opo para importao em OPES / IMPORTAR.

30

Verso 1.0

Manual MILE

Ao clicar em IMPORTAR apresentada uma tela com os layouts disponveis para aquela rotina (adapter)

Verso 1.0

31

Manual MILE

Nesta tela o usurio que possui acesso aplicao de Cadastro de Produtos poder fazer a importao de um
arquivo texto utilizando o layout criado.

32

Verso 1.0

Manual MILE

Nesta tela tambm poder ser visualizado o layout, impressa a documentao ou visualizado os LOGs gerados.
Se a aplicao for em MVC aparecero mais algumas opes:

Verso 1.0

33

Manual MILE

Sero apresentadas as opes de Visualizar, Incluir, Alterar, Excluir, Copiar, Documentao e LOG.
Eventualmente o administrador do sistema poder alterar essas permisses atravs do Cadastro de Privilgios do
sistema.
IMPORTANTE: Como no possvel identificar se uma rotina est ou no preparada para trabalhar como rotina
automtica (MSExecAuto), se for cadastrado um layout para uma rotina que no possua esta caracterstica, ser
apresentada a opo de IMPORTAR, porm, essa opo gerar erro ao ser executada.

34

Verso 1.0

Manual MILE

5. Caractersticas das exportaes


As exportaes sero realizadas somente para adapters em MVC e baseadas no modelo de dados do mesmo.
Se o componente do modelo for um formulrio (FORMFIELD) ser gerada uma linha no arquivo de texto de
exportao.
Se o componente do modelo for um grid (FORMGRID) ser gerada uma linha para cada linha do grid no arquivo de
texto de exportao.
O layout de exportao referencia o alias da tabela que ser exportada, se houver um filtro aplicado a esta tabela,
este filtro ser respeitado.

6. Utilizao da ferramenta diretamente em aplicaes AdvPL


Uma das caractersticas da ferramenta poder ser utilizada diretamente em outras aplicaes AdvPL. Isto permite
seu uso em processos mais complexos onde a importao ou exportao de um arquivo texto seja uma das etapas.
A configurao do layout ainda se dar pela aplicao de manuteno de layout (veja tem Erro! Fonte de

referncia no encontrada. - Erro! Fonte de referncia no encontrada.), mas o processos de


importao ou exportao ser por cdigo AdvPL.
Os logs gerados no processo sero gravados na tabela logs de podero ser visualizadas na aplicao de Log de
Processamento (veja tem 3 - LOG de Processamento).

Devemos proceder da seguinte maneira:


Estanciamos a classe do FWMILE, atravs do mtodo New()
Ex. oFWMILE := FWMILE():New()

Definimos o layout que ser utilizado atravs do mtodo SetLayout(). O mesmo j deve ter sido criado
anteriormente para que possa ser utilizado.
Ex. oFWMILE:SetLayout( TESTE )

Verso 1.0

35

Manual MILE

Definimos qual o arquivo texto a ser processado atravs do mtodo SetTXTFile().


oFWMILE:SetTXTFile( arquivo.txt )

Ativamos a classe, e a partir deste momento poderemos executar as operaes de importao.


oFWMILE:Activate()

Se o layout de importao para se executar o processo utilizamos o mtodo Import() se for uma exportao o
mtodo Export()
oFWMILE:Import()

Para identificar se houve algum erro no processo utilizado o mtodo Error()


oFWMILE:Error()

Ao final devemos desativar a classe.


oFWMILE:DeActivate()

6.1.

Exemplo de uso da ferramenta diretamente em aplicaes AdvPL

Function MILETest()
Local aArquivos := { "arquivo1.txt", "arquivo2.txt", "arquivo3.txt" }
Local cLayout

:= "TESTE"

Local nX

:= 0

Local oFWMILE
oFWMILE := FWMILE():New()
For nX := 1 To Len( aArquivos )
oFWMILE:SetLayout( cLayout )
oFWMILE:SetTXTFile( aArquivos[nX] )
If oFWMILE:Activate()

36

Verso 1.0

Manual MILE

oFWMILE:Import()
If oFWMILE:Error()
ApMsgInfo( I18N( "Processamento terminado. Arquivo #1.", ;
{ aArquivos[nX] } ) )
Else
ApMsgStop( I18N( "Processamento terminado. Arquivo #1." ;
"Houve erros no processamento. Verifique as ocorrncias no LOG.", ;
{ aArquivos[nX] } ) )
EndIf
oFWMILE:Deactivate()
Else
ApMsgStop( I18N( "Problemas para importar. " + oFWMILE:GetError(), {} ) )
EndIf
Next
Return NIL

6.2.

Mtodos da Classe FWMILE

A seguir relacionamos os principais mtodos da classe FWMILE. Consulte sempre o TDN sobre atualizaes.

6.2.1. Mtodo New()

Construtor da classe
Sintaxe:
New( lOpenTable )

Parmetros:
lOpenTable Efetua ou no a abertura das tabelas da classe

Verso 1.0

37

Manual MILE

Retorno:
No h retorno esperado (NIL)

6.2.2. Mtodo Activate()

Ativao da classe
Sintaxe
Activate()

Retorno:
.T. Se a classe foi ativada e .F. caso contrrio

6.2.3. Mtodo Deactivate()

Desativa a classe
Sintaxe:
Deactivate()

Retorno:
No h retorno esperado (NIL)

38

Verso 1.0

Manual MILE

6.2.4. Mtodo HasInterface()

Informa se a esta usando interface


Sintaxe:
HasInterface()

Retorno:
.T. Se ha interface e .F. caso contrrio

6.2.5. Mtodo IsActive()

Informa se a classe esta ativa


Sintaxe:
IsActive()

Retorno:
.T. Se a classe est ativada e .F. caso contrrio

6.2.6. Mtodo IsSimulation()

Informa se est configurado para simular o processamento. Apenas para adapters em MVC
Sintaxe:
IsSimulation()

Verso 1.0

39

Manual MILE

Retorno:
.T. Se a classe est configurado como simulao e .F. caso contrrio

6.2.7. Mtodo ClassName()

Nome da classe
Sintaxe:
ClassName()

Retorno:
Nome da Classe

6.2.8. Mtodo SetLayout()

Define o layout a ser utilizado


Sintaxe:
SetLayout( cLayout )

Parmetros:
cLayout Nome do layout que ser usado no processamento

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

40

Verso 1.0

Manual MILE

6.2.9. Mtodo SetLogGeneration()

Define a geracao de LOG


Sintaxe:
SetLogGeneration( lLogAuto )

Parmetros:
lLogAuto .T. Gerar o LOG e .F. no gerar

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

6.2.10. Mtodo SetLogApplication()

Define a rotina geracao de LOG


Sintaxe:
SetLogApplication( bLogApplication )

Parmetros:
bLogApplication

Bloco de codigo com a funcao responsavel pela gerao do LOG

Exemplo:
oFWMILE:SetLogApplication( { |oObj, xParam| SuaFuncao( oObj, xParam ) } )

Verso 1.0

41

Manual MILE

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

6.2.11. Mtodo SetSimulation()

Define se para apenas simular o processamento. Apenas para adapters em MVC.


Sintaxe:
SetSimulation( lSimulation )

Parmetros:
lSimulation Define se ser uma simulao ou no

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

6.2.12. Mtodo SetTXTFile()

Define qual o arquivo texto a ser processado


Sintaxe:
SetTXTFile( cTXTFile )

Parmetros:
cTXTFile Nome do arquivo texto a ser processado

42

Verso 1.0

Manual MILE

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

6.2.13. Mtodo SetInterface()

Define se haver interface


Sintaxe:
SetInterface( lHasInterface )

Parmetros:
lHasInterface

.T. Define o processo possui interface e e .F. caso contrrio

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

6.2.14. Mtodo SetInitLine()

Define qual a linha inicial do arquivo texto para processamento


Sintaxe:
SetInitLine( nInitialLine )

Parmetros:
nInitialLine Numero da linha

Verso 1.0

43

Manual MILE

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

6.2.15. Mtodo SetOperation()

Define qual a operacao (Importao/Exportao)


Sintaxe:
SetOperation( cOperation )

Parmetros:
cOperation Operao. Que pode ser:
1=Importao #DEFINE MILE_IMPORT
2=Exportao #DEFINE MILE_EXPORT

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

6.2.16. Mtodo SetAlias()

Define qual a alias para exportao


Sintaxe:
Mtodo SetAlias( cAlias )

Parmetros:
cAlias Nome do Alias para exportao

44

Verso 1.0

Manual MILE

Retorno:
.T. Se a definio foi executada com sucesso e .F. caso contrrio

6.2.17. Mtodo Error()

Informa se houve erro


Sintaxe:
Error()

Retorno:
.T. Se houve erro e .F. caso contrrio

6.2.18. Mtodo GetError()

Obtm a ultima mensagem de erro


Sintaxe:
GetError()
Retorno: Ultima mensagem de erro

6.2.19. Mtodo GetLayout()

Obtm o codigo do layout definido


Sintaxe:
GetLayout()

Verso 1.0

45

Manual MILE

Retorno:
Codigo do Layout

6.2.20. Mtodo GetOperation()

Obtm a operacao
Sintaxe:
GetOperation()

Retorno:
Codigo da operacao
1=Importao #DEFINE MILE_IMPORT
2=Exportao #DEFINE MILE_EXPORT

6.2.21. Mtodo GetTXTFile()

Obtm o nome do arquivo texto definido


Sintaxe:
GetTXTFile()

Retorno:
Nome do arquivo texto definido

46

Verso 1.0

Manual MILE

6.2.22. Mtodo CanActivate()

Verifica se a classe pode ser ativada


Sintaxe:
CanActivate()

Retorno:
.T. Se a classe pode ser ativada e .F. caso contrrio

6.2.23. Mtodo Import()

Executa o bloco de importao definido


Sintaxe:
Import()

Retorno:
No h retorno esperado (NIL)

6.2.24. Mtodo Export()

Executa o bloco de exportao definido


Sintaxe:
Export()

Retorno:
Verso 1.0

47

Manual MILE

No h retorno esperado (NIL)

6.2.25. Mtodo Dialog()

Executa o bloco de DIALOG definido


Sintaxe:
Dialog( cAdapter )

Parmetros:
cAdapter

Codigo do Adapter

Retorno:
No h retorno esperado (NIL)

6.2.26. Mtodo MakeLog()

Executa rotina de LOG


Sintaxe:
MakeLog( xParam1, xParam2, xParam3, xParam4, xParam5 )

Parmetros:
xParam1 Parmetro repassado para a rotina de LOG
xParam2 Parmetro repassado para a rotina de LOG
xParam3 Parmetro repassado para a rotina de LOG
xParam4 Parmetro repassado para a rotina de LOG

48

Verso 1.0

Manual MILE

xParam5 Parmetro repassado para a rotina de LOG

Retorno:
No h retorno esperado (NIL)

6.2.27. Mtodo GetIDOperation()

Obtm o ID da Operao
Sintaxe:
GetIDOperation()

Retorno:
ID da Operao

Verso 1.0

49

Manual MILE

7. Agendando importaes

A ferramenta tambm permite a execuo de importaes de forma agendada atravs da ferramenta Scheduler do
sistema (para maiores informaes veja a documentao do Scheduler). Para isso cadastra-se no Scheduler a
aplicao MILESCHIMP para a empresa/filial que se deseja executar as importaes.
A idia bsica processar os arquivos texto de uma pasta utilizando um determinado layout.

A aplicao MILESCHIMP recebe como parmetros:


Layout de Importao: Cdigo do layout de importao que ser utilizado no processamento dos arquivos texto.
Pasta dos Arquivos: Pasta onde esto os arquivos a serem processados. Sero processados todos os arquivos da
pasta conforme a mscara informada.
Mascar dos Arquivos: Mscara do nome dos arquivos texto a serem processados. Pode ser usado o caracter
curinga * (asterisco), por exemplo: *.TXT, apenas os arquivos que atendam a mscara sero processados.

50

Verso 1.0

Manual MILE

Ser criada na pasta onde se encontram os arquivos texto uma subpasta com o nome \processed. Os arquivos que
forem processados sero movidos para esta subpasta.
Os logs gerados no processo sero gravados na tabela logs de podero ser visualizadas na aplicao de Log de
Processamento (veja tem 3 - LOG de Processamento).

Verso 1.0

51

Manual MILE

8. Exemplificando alguns os Layouts

A seguir mostraremos alguns exemplos de layout

8.1.

Layout de importao simples sem canal

Imaginemos a importao do cadastro de produtos de um arquivo texto por separadores e sem canais. Cada linha
ser um produto a ser importado.
|000001|PRODUTO TESTE 1|PA|UN|01|
|000002|PRODUTO TESTE 2|PA|UN|01|
|000003|PRODUTO TESTE 3|PA|UN|01|

Neste layout:
1 Posio o Cdigo do Produto
2 Posio a Descrio
3 Posio o Tipo
4 Posio a Unidade de Medida
5 Posio o Local Padro

Para criar o layout, como pontos importantes temos:

Cadastramos 0000 no campo Origem do Canal, pois no h canais:

Colocamos NO no campo Entrada MultiCanal

52

Verso 1.0

Manual MILE

Apesar de no haver canais criamos um canal fictcio com qualquer cdigo:

Colocamos o campo Ocorrncia como nica

Como no h canais, cadastramos os campos a partir da 1 posio.

E proceder com o resto do cadastramento do layout

Verso 1.0

53

Manual MILE

8.2.

Layout de importao com 2 canais MASTER - DETAIL

Imaginemos a importao de pedidos de vendas. Cada pedido possui informaes que so pertinentes ao cabealho
(MASTER) do pedido e outras pertinentes aos tens (DETAIL)
No arquivo texto, para separar as informaes de cabealho (MASTER) e tens (DETAIL) e preciso que cada uma
esteja em um canal diferente. Por exemplo,
|A|000001|000001|00|F|001|
|B|000001|10.00|502|
|B|000002|20.00|502|
|A|000001|000002|00|F|001|
|B|000003|10.00|502|
|A|000001|000003|00|F|001|
|B|000001|12.00|502|
|B|000003|50.00|502|

Neste arquivo temos os dados do cabealho no canal A (1 posio) e o tens no canal B.


Neste layout:
Canal A cabealho (MASTER)
1 Posio o Canal
2 Posio a Numero do Pedido
3 Posio o Cliente
4 Posio a Loja
5 Posio o Tipo
6 Posio a Condio de Pagamento

Canal B tens (DETAIL)


1 Posio o Canal
2 Posio o Cdigo do Produto
3 Posio a Quantidade
4 Posio a Tipo Entrada/Sada

54

Verso 1.0

Manual MILE

Para criar o layout, como pontos importantes temos:

Cadastramos 0001 no campo Origem do Canal, pois os canais esto na 1 posio:

Colocamos SIM no campo Entrada MultiCanal

Definimos o modelo do MSExecAuto, no caso, modelo 3

Cadastramos os 2 canais

O Canal A o cabealho, ento como ID Sada definimos MASTER

Colocamos o campo Ocorrncia como nica

Verso 1.0

55

Manual MILE

Como h canais, cadastramos os campos a partir da 2 posio.

O Canal B so os tens, ento como ID Sada definimos DETAIL

Colocamos o campo Ocorrncia como Vrias, pois para cada pedidos existem vrias linhas do canal B ( uma
para cada tem)

Como h canais, cadastramos os campos a partir da 2 posio.

E proceder com o resto do cadastramento do layout

56

Verso 1.0

Manual MILE

8.3.

Layout de importao 2 canais para 1 sada

Imaginemos a importao do cadastro de produtos de um arquivo texto por separadores onde existem 2 canais (A e
B), onde A tem alguns dados do produto e B outros. Assim a juno dos dados do canal A com o canal B geraro 1
produto, ento temos 2 canais na entrada que vo convergir para uma sada (MASTER)
|A|000001|PRODUTO TESTE 1|
|B|PA|UN|01|
|A|000002|PRODUTO TESTE 2|
|B|PA|UN|01|
|A|000003|PRODUTO TESTE 3|
|B|PA|UN|01|

Neste layout:
Para o canal A:
1 Posio o Canal
2 Posio o Cdigo do Produto
3 Posio a Descrio

Para o canal B:
1 Posio o Canal
2 Posio o Tipo
3 Posio a Unidade de Medida
4 Posio o Local Padro

Para criar o layout, como pontos importantes temos:

Cadastramos 0001 no campo Origem do Canal, pois os canais esto na 1 posio:

Colocamos SIM no campo Entrada MultiCanal

Verso 1.0

57

Manual MILE

Cadastramos os 2 canais

Para o Canal A definimos como ID Sada definimos MASTER

Colocamos o campo Ocorrncia como nica, pois ele ocorre 1 vez para cada unidade de informao (produto)

Como h canais, cadastramos os campos a partir da 2 posio.

Para o Canal B definimos como ID Sada definimos MASTER tambm, pois os dados dele vo para a mesma
sada

58

Verso 1.0

Manual MILE

Colocamos o campo Ocorrncia como nica, pois ele ocorre 1 vez para cada unidade de informao (produto)

Como h canais, cadastramos os campos a partir da 2 posio.

E proceder com o resto do cadastramento do layout

8.4.

Layout de importao com ocorrncia nica-nica

Imaginemos um arquivo texto para importao de cadastro de bancos, onde h 1 canal para definir os dados do
banco, um canal para se definir os dados da agncia e um outro para se definir os da conta corrente, com o
agravante que o canal do banco pode possuir vrios canais de agncia e este, por sua vez, pode possuir vrios canais
de conta corrente. Por exemplo:
|BC|341|ITAU|
|AG|0001|AGNCIA 001|
|CC|111111|CONTA 1|
|CC|222111|CONTA 2|
|AG|0002|AGNCIA 002|
|CC|222112|CONTA 3|
|AG|0003|AGNCIA 003|
|CC|333111|CONTA 4|
|CC|333113|CONTA 5|

Verso 1.0

59

Manual MILE

A 1 posio o canal, ento temos BC como o canal do banco, AG como o canal de agncia e CC como o canal de
conta corrente. Percebam que o canal BC ocorreu apenas uma vez e temos canais AG com um ou dois canais CC.
O cadastro de bancos uma rotina automtica (MSExecAuto) de modelo1, ou seja, todas as informaes vo ter que
convergir para uma nica sada.
E o agravante neste layout que estruturalmente ele se assemelha a um modelo3, pois poderamos,
hipoteticamente, dizer que o canal de banco seria o cabealho (MASTER) e os tens (DETAIL),
Para se processar este arquivo texto, definiremos no layout a ocorrncia de cada canal como NICA, desta forma a
ferramenta proceder da seguinte maneira:

Ir ler a 1 linha, que um canal BC

Ir ler a prxima linha do arquivo texto, como a ocorrncia de BC nica, se o canal da linha lida for BC, ela
entender que so novas informaes e tentar importar as informaes j lidas antes de seguir.

Mas o prximo canal AG, ento ele continua a leitura.

Ir ler a prxima linha do arquivo texto, como a ocorrncia de AG tambm nica, se o canal da linha lida
for BC ou AG, ela entender que so novas informaes e tentar importar as informaes j lidas antes de
seguir.

Mas o prximo canal CC, ento ele continua a leitura.

Ir ler a prxima linha do arquivo texto, como a ocorrncia de CC tambm nica, se o canal da linha lida for
BC ou AG ou CC, ela entender que so novas informaes e tentar importar as informaes j lidas antes
de seguir.

O prximo canal CC, a ferramenta entender que so novas informaes e tentar importar as
informaes j lidas antes de seguir e comear o ciclo novamente.

Neste temos layout:


Para o canal BC:
1 Posio o Canal
2 Posio o Cdigo do Banco
3 Posio a Nome do Banco

Para o canal AG:


1 Posio o Canal
60

Verso 1.0

Manual MILE

2 Posio o Cdigo da Agncia


3 Posio a Nome da Agncia

Para o canal CC:


1 Posio o Canal
2 Posio a Nmero da Conta
3 Posio a Nome da Conta

Para criar o layout, como pontos importantes temos:

Cadastramos 0001 no campo Origem do Canal, pois os canais esto na 1 posio:

Colocamos SIM no campo Entrada MultiCanal

Cadastramos os 3 Canais

Para o Canal BC definimos como ID Sada definimos MASTER

Verso 1.0

61

Manual MILE

Colocamos o campo Ocorrncia como nica, pois ele ocorre 1 vez para cada unidade de informao (banco)

Como h canais, cadastramos os campos a partir da 2 posio.

Para o Canal AG definimos como ID Sada definimos MASTER tambm, pois os dados dele vo para a mesma
sada

Colocamos o campo Ocorrncia como nica, pois ele ocorre 1 vez para cada unidade de informao (banco)

Como h canais, cadastramos os campos a partir da 2 posio.

62

Verso 1.0

Manual MILE

Para o Canal CC definimos como ID Sada definimos MASTER tambm, pois os dados dele vo para a mesma
sada

Colocamos o campo Ocorrncia como nica, pois ele ocorre 1 vez para cada unidade de informao (banco)

Como h canais, cadastramos os campos a partir da 2 posio.

E proceder com o resto do cadastramento do layout

Verso 1.0

63

Manual MILE

8.5.

Layout de importao com uso de variveis

Imaginemos a importao de pedidos de vendas. Cada pedido possui informaes que so pertinentes ao cabealho
(MASTER) do pedido e outras pertinentes aos tens (DETAIL)
No arquivo texto, para separar as informaes de cabealho (MASTER) e tens (DETAIL) e preciso que cada uma
esteja em um canal diferente, porm, a informao com relao ao Tipo de Entrada/Sada ao invs de vir no canal
dos tens vem no canal do cabealho.

O problema desta situao que essa informao no tem um

correspondente no cabealho, uma informao pertinente ao tem, ao ler o canal de cabealho teramos que
armazenar esse dado em algum lugar para que pudssemos us-lo nos tens.
Este um caso, onde o uso de variveis indicado. A idia que ao ler o canal do cabealho a informao de Tipo de
Entrada/Sada seja armazenada em uma varivel ao invs de algum campo e posteriormente essa varivel ser usada
nos tens
Por exemplo, o arquivo texto seria:
|A|000001|000001|00|F|001|502|
|B|000001|10.00|
|B|000002|20.00|
|A|000001|000002|00|F|001|502|
|B|000003|10.00|
|A|000001|000003|00|F|001|502|
|B|000001|12.00|
|B|000003|50.00|
Neste arquivo temos os dados do cabealho no canal A (1 posio) e o tens no canal B.
Neste layout:
Canal A cabealho (MASTER)
1 Posio o Canal
2 Posio a Numero do Pedido
3 Posio o Cliente
4 Posio a Loja
5 Posio o Tipo
6 Posio a Condio de Pagamento
7 Posio a Tipo Entrada/Sada
64

Verso 1.0

Manual MILE

Canal B tens (DETAIL)


1 Posio o Canal
2 Posio o Cdigo do Produto
3 Posio a Quantidade

Para criar o layout, como pontos importantes temos:

Cadastramos 0001 no campo Origem do Canal, pois os canais esto na 1 posio:

Colocamos SIM no campo Entrada MultiCanal

Definimos o modelo do MSExecAuto, no caso, modelo 3

Cadastramos o 2 Canais

O Canal A o cabealho, ento como ID Sada definimos MASTER

Verso 1.0

65

Manual MILE

Colocamos o campo Ocorrncia como nica

Como h canais, cadastramos os campos a partir da 2 posio.

Cadastramos a varivel que ir armazenar o Tipo de Entrada/Sada. Por exemplo, criaremos a varivel MEMTES,
que receber o campo lido do arquivo texto. Assim quando o canal A for lido, essa varivel ser criada.

O Canal B so os tens, ento como ID Sada definimos DETAIL

Colocamos o campo Ocorrncia como Vrias, pois para cada pedidos existem vrias linhas do canal B ( uma para
cada tem)

66

Verso 1.0

Manual MILE

Como h canais, cadastramos os campos a partir da 2 posio e o campo de Tipo de Entrada/Sada ao invs
de vir do texto vir da varivel MEMTES. Para isso usamos o campo EXECUO (veja tem Erro! Fonte de

referncia no encontrada. - Erro! Fonte de referncia no encontrada.).

E proceder com o resto do cadastramento do layout

9. Trabalhando com uma funo especfica

Na ferramenta ainda h possibilidade de alm de trabalhar com adapters em rotina automtica (MSExecAuto) ou em
MVC, se utilize uma funo especfica para tratar os dados. Ela poder ser uma FUNCTION ou USER FUNCTION .
Essa funo ser a responsvel por fazer todos os tratamentos e persistncias que os dados necessitarem, bem
como gerar ocorrncias no LOG se for preciso.
A ferramenta far a leituras dos dados os passar atravs de parmetros para a funo. Ser passada uma unidade
de informao de cada vez ( veja o tem Erro! Fonte de referncia no encontrada. - Erro! Fonte de

referncia no encontrada.)
S suportada na sada uma estrutura de MASTER/DETAIL. O arquivo texto at pode possuir mais de um canal,
porm, estes devem convergir para essa estrutura.
Se for uma USER FUNCTION, os parmetros so passados via PARAMIXB. Exemplificando:
USER FUNCTION XPTO()
Local aParam := PARAMIXB
Se for uma FUNCTION os parmetros so passados diretamente como parmetros da prpria funo, portanto, a
funo deve estar no formato abaixo para que consiga receber os parmetros.

Verso 1.0

67

Manual MILE

FUNCTION XPTO( param1, param2, param3, param4 )

68

Verso 1.0

Manual MILE

A funo receber como parmetros:


[1] .T. se est sendo executado com interface / .F. se est sendo executado sem interface
[2]

Verso 1.0

Vetor com informaes adicionais. Veja

69

Manual MILE

[3] Informaes

das

definies

do

layout.

Veja

[4] Dados de Sada. Veja Erro! Fonte de referncia no encontrada.

70

Verso 1.0

Manual MILE

Apndice A Estrutura do vetor sobre dados adicionais

[2]

Vetor com informaes adicionais.


[2][1] Linha inicial lida no arquivo texto
[2][2] Linha final lida no arquivo texto
[2][3] nome do arquivo texto sendo processado

Verso 1.0

71

Manual MILE

Apndice B Estrutura do vetor sobre dados do layout

[3]

Informaes das definies do layout


[3][1] Dados Gerais
[3][1][1]

Cdigo

DEFINE XZ1LAYOUT

[3][1][2]

Tipo de adapter

DEFINE XZ1TYPE

[3][1][3]

Adapter

DEFINE XZ1ADAPT

[3][1][4]

Formato do arquivo texto

[3][1][5]

Separador

DEFINE XZ1SEPARA

[3][1][6]

Tipo MSExecAuto

DEFINE XZ1TYPEXA

[3][1][7]

Separador Inicial

DEFINE XZ1SEPINI

[3][1][8]

Separador Final

DEFINE XZ1SEPFIN

[3][1][8]

Tabela Principal

DEFINE XZ1TABLE

[3][1][10]

Ordem Tab. Principal

DEFINE XZ1ORDER

[3][1][11]

Descrio

DEFINE XZ1DESC

[3][1][12]

Origem do Canal

DEFINE XZ1SOURCE

[3][1][13]

Funo Pr Execuo

DEFINE XZ1PRE

[3][1][14]

Funo Ps Execuo

DEFINE XZ1POS

[3][1][15]

Funo de Tratamento dos dados DEFINE XZ1TDATA

[3][1][16]

Tipo Data

DEFINE XZ1TIPDAT

[3][1][17]

Entrada Multicanal

DEFINE XZ1EMULTC

[3][1][18]

Detalhes Opcional

DEFINE XZ1DETOPC

[3][1][19]

Importao/Exportao

DEFINE XZ1IMPEXP

[3][1][20]

Separador Decimal

DEFINE XZ1DECSEP

[3][1][21]

Operaes Importao

DEFINE XZ1MVCOPT

DEFINE XZ1STRUCT

72

Verso 1.0

Manual MILE

[3][1][22]

Mtodo de Alterao

DEFINE XZ1MVCMET

[3][1][23]

Funo de Validao da Operao DEFINE XZ1CANDO

[3][2] Dados dos Canais


[3][2][x][1] Canal

DEFINE XZ2CHANEL

[3][2][x][2] Canal Superior

DEFINE XZ2SUPER

[3][2][x][3] Descrio

DEFINE XZ2DESC

[3][2][x][4] ID Sada

DEFINE XZ2IDOUT

[3][2][x][5] Ocorrncias

DEFINE XZ2OCCURS

[3][2][x][6] Funo de Ps Execuo

DEFINE XZ2POS

[3][2][x][7] Campos

DEFINE XZ2XZ4

[3][2][x][7][y][1]

Campo

DEFINE XZ4FIELD

[3][2][x][7][y][2]

Tipo

DEFINE XZ4TYPFLD

[3][2][x][7][y][3]

Tamanho

DEFINE XZ4SIZFLD

[3][2][x][7][y][4]

Decimal

DEFINE XZ4DECFLD

[3][2][x][7][y][5]

Origem

DEFINE XZ4SOURCE

[3][2][x][7][y][6]

Execuo

DEFINE XZ4EXEC

[3][2][x][7][y][7]

Condio

DEFINE XZ4COND

[3][2][x][8]

Variveis

DEFINE XZ2XZ5

[3][2][x][8][z][1]

Varivel

DEFINE XZ5FIELD

[3][2][x][8][z][2]

Tipo

DEFINE XZ5TYPFLD

[3][2][x][8][z][3]

Tamanho

DEFINE XZ5SIZFLD

[3][2][x][8][z][4]

Decimal

DEFINE XZ5DECFLD

[3][2][x][8][z][5]

Origem

DEFINE XZ5SOURCE

[3][2][x][8][z][6]

Execuo

DEFINE XZ5EXEC

[3][2][x][8][z][7]

Condio

DEFINE XZ5COND

Onde:

Verso 1.0

73

Manual MILE

[x] Varia para cada Canal


[y] Varia para cada Campo definido de cada Canal
[z] Varia para cada Varivel definida de cada Canal

Apndice C Estrutura do vetor sobre dados de sada

[4]

Dados de Sada. Erro! Fonte de referncia no encontrada.


[4][x][1] Id de Sada
[4][x][2] Controle interno. No manipular.
[4][x][3] Controle interno. No manipular.
[4][x][4] Dados de Sada
[4][x][4][y][1] Campo
[4][x][4][y][2] Contedo
[4][x][4][y][3] NIL
Onde:
[x] Varia para cada ID de Sada
[y] Varia para cada Campo
[4][x][5] Controle interno. No manipular

74

Verso 1.0

Manual MILE

Apndice D Estrutura do Vetor de dados para Rotina Automtica (MSExecAuto)

Para rotina automtica (MSExecAuto) Modelo 1


[5][1] Dados dos campos
[5][1][x][1]

Campo

[5][1][x][2]

Contedo

[5][1][x][3]

NIL

Onde:
[x] Varia para cada campo
[5][2] Vazio

Para rotina automtica (MSExecAuto) Modelo 2 e 3


[5][1] Dados dos campos de cabealho
[5][1][x][1]

Campo

[5][1][x][2]

Contedo

[5][x][3]

NIL

Onde:
[x] Varia para cada campo
[5][2] Dados dos campos de tens
[5][2][x][1][y][1]

Campo

[5][2][x][1][y][2]

Contedo

[5][2][x][1][y][3]

NIL

Onde:
[x] Varia para cada linha
[y] Varia para cada campo

Verso 1.0

75