DDK GUI
Parte 6
Tecnologia
1
Agenda
1 Parte
9 Nomenclatura
9 Estilos
Cadastro Simples
Cadastro Simples – Alteração
Cadastro Simples – Inclusão
Cadastro Complexo
Cadastro Complexo – Alteração
Pai x Filho – Atualiza Filho
Manutenção de Filhos
2
Agenda
Pai x Filho – Atualiza Ambos
Manutenção de Pais
Consulta Simples
Consulta Complexa
Consulta Relacionamento
Relatórios / Cálculos / Fechamentos
Parâmetros Únicos
Parâmetros Múltiplos
Formação
Formação sem Navegação
3
Agenda
Importação
Exportação
Pesquisa
Vá Para
Digitação Rápida
Painéis
Funções – Relatórios Relacionados
Funções – Consultas Relacionadas
Menu de Barra
4
Agenda
Parte 2
9 Construção
SmartQuery
SmartViewer – Padrão
SmartViewer – Sem Campos de Tabela
SmartViewer – Só com Campos Chave
Parte 3
CustomBrowser Inclui/Modifica
CustomBrowser Zoom Wizard
Vá Para
Pesquisa
5
Agenda
Cadastro Simples
Parte 4
Cadastro Simples Alteração
Cadastro Simples Inclusão
Cadastro Complexo
Cadastro Inclui/Modifica Filho
Cadastro Pai x Filho – Atualiza Filho
Cadastro Inclui/Modifica Pai
Cadastro Pai x Filho – Atualiza Ambos
Parte 5
Consulta Simples
6
Agenda
Consulta Complexa
Consulta Relacionamentos
Parâmetros Únicos
Formação
Parte 6
Relatórios
Importação
Exportação
CustomBrowser Digitação
Digitação Rápida
7
Agenda
Parte 7
9 Includes e Utilitários Padrão
UT_FIELD.I
UT-RTLBL.I
UT-RUN.I
UT-MSGS.P
IND01-10.I, IND11-50.I E IND51500.I
UT-TABLE.I
UT-LITER.I
UT-LIMIT.P
8
Agenda
UT-GLOB.I
I-FREEAC.I
UT-DIR.P
BTB917ZX.P
BTB917ZY.P
BTB917ZZ.P
UT-VRBIN.P
UT-FINFO.P
UT-CMDLN.P
9
Agenda
UT-OSVER.I
I-COUNTDS.I
UT-WIN.I
UT-TRACE.P
Parte 8
9 Validações
Validações de Tela
Validações Triggers de Dicionário
9 Mensagens
Regras para Criação de Mensagens
10
Agenda
Mensagens em Outros Idiomas
9 Procedures Reutilizáveis
9 Portabilidade de RCODES
9 Customizações
API - Application Program Interface
UPC - User Program Call
11
Relatórios
9
O relatório é constituído por dois programas:
O primeiro, com o nome do formato xxp/xx9999.w, é o que faz
a interface com o usuário apresentando todas as opções e
entradas de dados necessárias à geração do relatório;
O segundo programa, com nome de formato xxp/xx9999rp.p,
executa a geração do relatório propriamente dito, conforme os
parâmetros passados pelo primeiro programa.
12
Relatórios
1.
Em Arquivo | Novo, selecionar o estilo Window Relatórios;
13
Relatórios
9
Preparação do Relatório - Interface
1.
Verificar quais são as páginas que devem ser necessárias ao
programa. Se as cinco páginas forem necessárias
desconsiderar as tarefas 2, 3, 4 e 5.
Eliminar as frames das páginas desnecessárias com base na
tabela abaixo.
2.
14
Relatórios
3.
Eliminar ‘n’ imagens com as "orelhas" mais a direita, onde ‘n’ é o
número de páginas desnecessárias, renomeando as
remanescentes conforme a tabela abaixo:
Folder
Frame
Imagem
Preprocess
Seleção
f-pg-sel
im-pg-sel
PGSEL
Classificação
f-pg-cla
im-pg-cla
PGCLA
Parâmetros
f-pg-par
im-pg-par
PGPAR
Digitação
f-pg-dig
im-pg-dig
PGDIR
Impressão
f-pg-imp
im-pg-imp
PGIMP
15
Relatórios
4.
Em 'Definitions‘, limpar o conteúdo dos pré-processadores das
páginas desnecessárias, assim se está informando ao estilo
que estas páginas não existem no relatório. Exemplo, onde a
página de digitação não é necessária:
&GLOBAL-DEFINE
&GLOBAL-DEFINE
&GLOBAL-DEFINE
&GLOBAL-DEFINE
&GLOBAL-DEFINE
PGSEL
PGCLA
PGPAR
PGDIG
PGIMP
f-pg-sel
f-pg-cla
f-pg-par
f-pg-imp
16
Relatórios
5.
Se a página de seleção não existir, no 'Main-block' do
programa, corrigir a chamada do include i-rpmbl.i, adicionando
o nome da imagem associada à página que se deseja
apresentar como inicial, exemplo:
{include/i-rpmbl.i im-pg-par}
17
Relatórios
9
Página de Seleção
1.
Colocar os fill-in´s de inicial e final, para cada campo que
precisa de faixa. A sugestão é criar como 'Database Fields' e,
após, convertê-los para variáveis para obter automaticamente
os labels, formatos e tamanhos do dicionário de dados.
18
Relatórios
2.
Corrigir os 'initial values' das variáveis de inicial e final.
3.
Retirar possíveis queries que o AppBuilder automaticamente
queira associar à frame.
19
Relatórios
9
Página de Classificação
1.
Redefinir o 'list-items' do radio-set rs-classif , com as opções
de classificação de seu relatório;
2.
Se necessário, adicionar mais opções de classificação.
20
Relatórios
9
Página de Parâmetros
1.
Colocar as variáveis necessárias na representação desejada
(radio-set, toggle-box, fill-in), definindo label, formato, initial
e help para as mesmas.
21
Relatórios
2.
Caso seja necessário, implementar retângulos com label, estes
labels devem ser fill-in´s view-as text, e o seu valor deve ser
informado no seu initial e private-data. As propriedades
'Display' e 'Enable' devem ser retiradas.
22
Relatórios
9
Página de Digitação
1.
Em 'Definitions', corrigir a definição da temp-table de digitação
tt-digita inserindo os campos necessários;
2.
Em 'Section Editor', para o objeto browse br-digita, adaptar os
seguintes gatilhos para a nova definição da temp-table ttdigita e outras necessidades:
23
Relatórios
'Display': define os campos da temp-table a serem
apresentados e quais devem ficar habilitados;
'Row-entry': determina valores iniciais para os campos da
temp-table na inclusão de novas linhas, exceto quando se
trata da primeira linha do browse;
'Row-leave': salva as alterações feitas pelo usuário.
24
Relatórios
3.
Ainda em 'Section Editor', mas para os botões bt-inserir e btalterar, adaptar os seus gatilhos de 'Choose', na linha que
aplica um evento 'Entry', sobre o primeiro campo habilitado no
browse;
4.
Todas as validações do browse br-digita devem ser feitas na
procedure pi-executar no local indicado pelo comentário;
25
Relatórios
5.
Opcionalmente, os gatilhos de 'leave' (para atributos de
referência), 'f5' e 'mouse-select-dblclick' (para acionamento do
zoom), para as colunas do browse podem ser necessários.
(Para mais detalhes sobre esta técnica, ver Como implementar
Zoom e campos de referência para campos de chave
estrangeira.)
26
Relatórios
9
Página de Impressão
Na página de impressão não é necessário que se tenha
qualquer função adicional para o seu correto funcionamento.
Porém, se necessário, seguir a técnica Como implementar
Parâmetros de Impressão em Relatórios.
27
Relatórios
9
Gravação e Validação
1.
Em “Definitions”, implementar os campos de parâmetros e
seleção na definição da temp-table tt-param.
28
Relatórios
2.
Na procedure 'pi-executar', colocar as validações necessárias
às opções do usuário para execução do relatório no local
indicado pelo comentário, lembrando que elas devem
apresentar uma mensagem de erro cadastrada, posicionar na
página com problemas, colocando o focus no campo com
problemas.
29
Relatórios
if input frame f-pg-par i-nr-nivel > 19 then do:
run utp/ut-msgs.p (input "show",
input 73,
input " ").
apply 'mouse-select-click' to im-pg-par in frame frelat.
apply 'entry' to i-nr-nivel in frame f-pg-par.
return error.
end.
30
Relatórios
3.
Na procedure 'pi-executar', no local indicado pelo comentário,
colocar a lógica de gravação dos parâmetros e seleção na
temp-table tt-param.
4.
Ainda na procedure 'pi-executar', substituir na chamada do
include {include/i-rprun.i} a literal 'XXP/XX9999RP.P' pelo
programa que deve imprimir o relatório.
31
Relatórios
9
Relatórios no formato RTF
O template está preparado para gerar a saída do relatório no
formato RTF (Rich Text Format). Para isto, não é necessário
realizar nenhuma alteração no programa de interface.
Caso não deseje que o relatório possua esta funcionalidade,
basta seguir os procedimentos descritos abaixo para que o
programa funcione corretamente:
32
Relatórios
1.
Em definitions, deve-se alterar o valor do pré-processador RTF
para “NO”.
Ex: &GLOBAL-DEFINE RTF NO
2.
Na página de impressão(f-pg-imp), é necessário remover os
componentes referentes à funcionalidade de RTF. Os
componentes são: text-rtf, l-habilitaRtf, text-modelo-rtf, cmodelo-rtf, bt-modelo-rtf e rect-rtf.
33
Relatórios
3.
Reposicionar os componentes de execução de acordo com o
especificado a seguir: text-modo para column 1,14 e row
4,17, rect-9 para column 2,00 e row 4,46, e rs-execucao para
column 2,86 e row 4,83.
34
Relatórios
Também é possível passar, durante a inicialização do
programa, um arquivo de modelo padrão para o relatório.
Neste caso, o usuário não será obrigado a informar um modelo
manualmente. Para isto, basta incluir no Main Block do
programa, antes da chamada da procedure “enable_UI”, a
linha abaixo:
ASSIGN c-modelo-default =
SEARCH("<pasta>\<modelo.rtf>").
35
Relatórios
ASSIGN c-modelo-default =
SEARCH("<pasta>\<modelo.rtf>").
9
Onde:
<pasta> = sub-pasta na qual se encontra o arquivo de modelo
no propath
<modelo.rtf> = arquivo que contém o modelo no formato rtf
36
Relatórios
9
Programa RP.P do Relatório
O programa de execução do relatório (rp.p) é um programa
procedural sem qualquer tipo de interface com o usuário,
exceto pela própria impressão/visualização do relatório e pela
caixa de acompanhamento de execução (ut-acomp/ut-perc)
quando necessário.
37
Relatórios
Nenhum programa chamado a partir de um rp.p deve possuir
qualquer tipo de interface.
Todas as validações ou informações com necessidade de
intervenção do usuário devem ser tratadas pelo programa .w.
38
Relatórios
1.
Copiar a definição das temp-tables tt-param e tt-digita (esta
última se houver digitação) do programa de interface (.W)
para o programa que deve gerar o relatório (rp.p);
2.
Se a implementação for uma conversão de um programa
originário do MAGNUS:
1.
Retirar a chamada para o include {cdp/cd9000.i} e
substituir as seguintes chamadas:
39
Relatórios
Include Velho
Include Novo
Cdp\cd9500.i
Include\i-rpvar.i
Cdp\cd9500.fl
Include\i-rpcab.i
Cdp\cd9520.i
Include\i-rpout.i
Cdp\cd9540.i
Include\i-rpclo.i
40
Relatórios
2.
Caso haja opção de digitação, substituir, com base no
programa original, o work-file de digitação pela temp-table
tt-digita.
3.
Substituir, as variáveis de parâmetro, seleção e
classificação pelos respectivos campos da temp-table ttparam.
3.
Utilizar um stream padrão definido como STR-RP, para
impressão do relatório;
4.
Deve-se passar o parâmetro &stream com o nome da stream
para os includes i-rpcab.i, i-rpcb80, i-rpc256.i, i-rpout.i e irpclo.i.
41
Relatórios
{include/i-rpcab.i &stream = "str-rp"}
{include/i-rpcb80.i &stream = "str-rp"}
{include/i-rpc256.i &stream = "str-rp"}
{include/i-rpout.i &stream = "stream str-rp"}
{include/i-rpclo.i &stream = "stream str-rp"}.
4.
Nas seleções, ao invés de utilizar a palavra "à", para dar idéia
de faixa, substituí-la pelos caracteres "|< >|" semelhantes às
imagens utilizadas na tela de seleção, e que não necessitam
ser traduzidos.
42
Relatórios
5.
Todos os labels que não forem do dicionário de dados e que
apareçam no relatório devem ser tratados através dos includes
{utp/ut-liter.i}, {utp/ut-field.i} ou ainda {utp/ut-table.i}.
6.
Em todos os forms/frames de impressão deve-se colocar a
cláusula stream-io.
7.
Para utilizar a funcionalidade de impressão para arquivo RTF:
43
Relatórios
1.
Definir o pré-processador conforme abaixo:
&GLOBAL-DEFINE RTF YES
2.
Definir o pré-processador abaixo setando o tamanho da página:
&SCOPED-DEFINE pagesize N
N é o número de linhas por página e por
default seu valor é 42. Este número deve ser
ajustado para cada relatório conforme o
tamanho do modelo RTF que vai ser utilizado.
Caso este tamanho não esteja correto ocorrerá
problema na quebra da página.
44
Relatórios
3.
A definição da temp-table tt-param deve ser idêntica à
definição da mesma no programa de interface.
4.
Condicionar o VIEW das frames de cabeçalho/rodapé no
início do programa, para que, quando o destino for para
RTF, as mesmas não sejam apresentadas.
45
Relatórios
IF tt-param.l-habilitaRTF <> YES THEN DO:
VIEW STREAM str-rp FRAME f-cabec.
VIEW STREAM str-rp FRAME f-rodape.
END.
46
Relatórios
9
Laboratório
Seleção:
<variable Cust-Num>
Parâmetros: <variable Sales-Rep>
Classificação: Cust-Num
Name
47
Relatórios
Programa RP:
Campos:
Customer.Cust-Num
Customer.Name
Customer.Credit-Limit
Customer.Discount
Customer.Balance
Customer.Phone
Customer.Sales-rep
48
Importação
1.
Em Arquivo | Novo, selecionar o estilo Window
Importação/Exportação;
49
Importação
9
Preparação do programa
1.
Verificar quantas páginas são necessárias. As páginas de
layout, parâmetros e log são obrigatórias e somente a página
de seleção é opcional. Caso haja seleção, desconsiderar as
tarefas 2, 3 e 4.
2.
Eliminar a frame f-pg-sel.
50
Importação
3.
Eliminar a imagem im-pg-log e renomear as imagens:
im-pg-par > im-pg-log
im-pg-sel > im-pg-par
4.
Em 'Definitions' limpar o conteúdo dos preprocessadores PGSEL:
&GLOBAL-DEFINE PGLAY f-pg-lay
&GLOBAL-DEFINE PGSEL
&GLOBAL-DEFINE PGPAR f-pg-par
&GLOBAL-DEFINE PGLOG f-pg-log
51
Importação
5.
Se a página de seleção não existir, no 'Main-block' do
programa, corrigir a chamada do include i-immbl.i, passando
como parâmetro a imagem da página inicialmente;
{include/i-immbl.i im-pg-par}
52
Importação
9
Página de Layout
1.
No 'Main Block', existe a chamada para um include
denominado {include/i-imvrf.i}, que possui dois parâmetros.
Informar neste o nome do programa no formato XX9999 e a
versão do layout no formato 999 (o valor inicial da versão é
001). Exemplo:
{ include/i-imvrf.i &programa=CP0406 &versãolayout=001 }
53
Importação
2.
Criar um arquivo que contenha o layout de importação, nos
padrões do Produto Datasul EMS. Este arquivo tem o seguinte
nome e path:
LAYOUT/LOXX9999.001.
54
Importação
9
Página de Seleção
1.
Colocar os fill-in´s de inicial e final, para cada campo que
precisar de faixa. A sugestão é criá-los como 'Database Fields',
e após, convertê-los para variáveis para obter
automaticamente os labels, formatos e tamanhos do dicionário
de dados.
55
Importação
2.
Corrigir os 'initial values' das variáveis de inicial e final.
3.
Retirar possíveis queries que o AppBuilder automaticamente
queira associar à frame.
56
Importação
9
Página de Parâmetros
1.
Colocar as variáveis necessárias na representação desejada
(radio-set, toggle-box, fill-in), definindo label, formato, initial
e help para as mesmas.
2.
Caso seja necessário implementar retângulos com label, estes
labels devem ser fill-in´s view-as text, e o seu valor deve ser
informado no seu initial e private-data. As propriedades
'Display' e 'Enable' devem ser retiradas
57
Importação
3.
No on choose do bt-arquivo-entrada, pode ser adicionado um
terceiro parâmetro na include i-imarq.i , onde é possível
passar como parâmetro os filtros que serão utilizados na
sistem dialog. Se não for passado nada neste parâmetro a
include assumirá como padrão o tipo de arquivo *.lst e todos
os tipos de arquivos.
DO:
{include/i-imarq.i c-arquivo-entrada f-pg-par
"'*.XLS' '*.xls' , 'todos' '*.*'" }
END.
58
Importação
9
Página de Log
Não existem tarefas.
59
Importação
9
Gravação e Validação
1.
Em 'Definitions', implementar os campos de parâmetros e
seleção na definição da temp-table tt-param.
60
Importação
2.
Na procedure 'pi-executar', colocar as validações das páginas
de parâmetros e seleção, lembrando que elas devem
apresentar uma mensagem de erro cadastrada, posicionar na
página com problemas, colocando o focus no campo com
problemas.
61
Importação
if input frame f-pg-par i-nr-nivel > 19 then do:
run utp/ut-msgs.p (input "show",
input 73,
input " ").
apply 'mouse-select-click' to im-pg-par in frame frelat.
apply 'entry' to i-nr-nivel in frame f-pg-par.
return error.
end.
62
Importação
3.
Na procedure 'pi-executar', colocar a lógica de gravação dos
parâmetros e seleção na temp-table tt-param.
4.
Substituir na chamada do include {include/i-imrun.i} a literal
'XXP/XX9999RP.P' pelo programa que deve importar os
registros.
63
Importação
9
Programa RP.P de Importação
O programa de execução de importação (rp.p) é um programa
procedural sem qualquer tipo de interface com o usuário,
exceto pela caixa de acompanhamento de execução (utacomp/ut-perc) quando necessário.
64
Importação
Nenhum programa chamado a partir de um rp.p deve possuir
qualquer tipo de interface.
Todas as validações ou informações com necessidade de
intervenção do usuário devem ser tratadas pelo programa .w
que o chama.
65
Importação
1.
Definir uma stream para a importação, deixando a stream
padrão definido, como STR-RP para a impressão do log.
2.
Se a implementação for uma conversão de um programa
originário do MAGNUS:
1.
Retirar a chamada para o include {cdp/cd9000.i} e
substituir as seguintes chamadas:
66
Importação
Include Velho
Include Novo
Cdp\cd9500.i
Include\i-rpvar.i
Cdp\cd9500.fl
Include\i-rpcab.i
Cdp\cd9520.i
Include\i-rpout.i
Cdp\cd9540.i
Include\i-rpclo.i
67
Importação
2.
3.
Substituir, as variáveis de parâmetro, seleção e
classificação pelos respectivos campos da temp-table ttparam.
Na chamada do include i-rpout.i, passar o parâmetros
{&tofile}. Exemplo:
{include/i-rpout.i &tofile=tt-param.arq-destino}
68
Importação
4.
Todos os labels que não forem do dicionário de dados e que
apareçam no relatório devem ser tratados através dos includes
{utp/ut-liter.i}, {utp/ut-field.i} ou ainda {utp/ut-table.i}.
5.
Em todos os forms/frames de impressão, deve-se colocar a
cláusula stream-io.
69
Importação
6.
Nas seleções, ao invés de utilizar a palavra "à", para dar idéia
de faixa, substituí-la pelos caracteres "|< >|" semelhantes às
imagens utilizadas na tela de seleção, e que não necessitam
ser traduzidos.
70
Exportação
1.
Em Arquivo | Novo, selecionar o estilo Window
Importação/Exportação;
71
Exportação
9
Preparação do programa
1.
Verificar quantas páginas são necessárias. As páginas de
layout, parâmetros e log são obrigatórias e somente a página
de seleção é opcional. Caso haja seleção, desconsiderar as
tarefas 2, 3 e 4.
2.
Eliminar a frame f-pg-sel.
72
Exportação
3.
Eliminar a imagem im-pg-log e renomear as imagens:
im-pg-par > im-pg-log
im-pg-sel > im-pg-par
4.
Em 'Definitions' limpar o conteúdo dos preprocessadores
PGSEL:
&GLOBAL-DEFINE PGLAY f-pg-lay
&GLOBAL-DEFINE PGSEL
&GLOBAL-DEFINE PGPAR f-pg-par
&GLOBAL-DEFINE PGLOG f-pg-log
73
Exportação
5.
Se a página de seleção não existir, no 'Main-block' do
programa, corrigir a chamada do include i-immbl.i, passando
como parâmetro a imagem da página inicial , exemplo:
{include/i-immbl.i im-pg-par}
74
Exportação
9
Página de Layout
1.
No 'Main Block', existe a chamada para um include
denominado {include/i-imvrf.i}, que possui dois parâmetros,
informar neste o nome do programa no formato XX9999 e a
versão do layout no formato 999 (o valor inicial da versão é
001). Exemplo:
{ include/i-imvrf.i &programa=CP0406 &versãolayout=001 }
75
Exportação
2.
Criar um arquivo que contenha o layout de exportação, nos
padrões do Produto Datasul EMS. Este arquivo tem o seguinte
nome e path:
LAYOUT/LOXX9999.001.
76
Exportação
9
Página de Seleção
1.
Colocar os fill-in´s de inicial e final, para cada campo que
precisar de faixa. A sugestão é criá-los como 'Database Fields'
e, após, convertê-los para variáveis para obter
automaticamente os labels, formatos e tamanhos do dicionário
de dados.
77
Exportação
2.
Corrigir os 'initial values' das variáveis de inicial e final.
3.
Retirar possíveis queries que o AppBuilder automaticamente
queira associar à frame.
78
Exportação
9
Página de Parâmetros
1.
Colocar as variáveis necessárias na representação desejada
(radio-set, toggle-box, fill-in), definindo label, formato, initial
e help para as mesmas.
2.
Caso seja necessário implementar retângulos com label, estes
labels devem ser fill-in´s view-as text, e o seu valor deve ser
informado no seu initial e private-data. As propriedades
'Display' e 'Enable' devem ser retiradas
79
Exportação
3.
No on choose do bt-arquivo-entrada, pode ser adicionado um
terceiro parâmetro na include i-imarq.i , onde é possível passar
como parâmetro os filtros que serão utilizados na sistem dialog.
Se não for passado nada neste parâmetro a include assumirá
como padrão o tipo de arquivo *.lst e todos os tipos de
arquivos.
DO:
{include/i-imarq.i c-arquivo-entrada f-pg-par
"'*.XLS' '*.xls' , 'todos' '*.*'" }
END.
80
Exportação
9
Página de Log
1.
Remover o retângulo, o label e o radio-set com as opções
"Todos" e "Rejeitados".
2.
Mover todos os outros objetos desta frame para cima. Não
esquecer do botão "Configurar Impressora".
81
Exportação
9
Gravação e Validação
1.
Em 'Definitions', implementar os campos de parâmetros e
seleção na definição da temp-table tt-param.
82
Exportação
2.
Na procedure 'pi-executar', colocar as validações das páginas
de parâmetros e seleção, lembrando que elas devem
apresentar uma mensagem de erro cadastrada e posicionar na
página com problemas, colocando o focus no campo com
problemas.
83
Exportação
if input frame f-pg-par i-nr-nivel > 19 then do:
run utp/ut-msgs.p (input "show",
input 73,
input " ").
apply 'mouse-select-click' to im-pg-par in frame frelat.
apply 'entry' to i-nr-nivel in frame f-pg-par.
return error.
end.
84
Exportação
3.
Na procedure 'pi-executar', substituir o código de validação do
arquivo de entrada:
run utp/ut-vlarq.p
assign
file-info: file-name
(input frame
=
input frame
f-pg-par
c-arquivo-entrada).
f-pg-par c-arquivo-entrada.
if return-value
file-info:pathname
= "nok"
= then
? then
do:
do:
run utp/ut-msgs.p (input "show",
input
input326,
73,
input
inputc-arquivo-entrada).
"").
apply 'mouse-select-click' to
im-pg-par in frame f-import.
im-pg-log
apply 'entry' to c-arquivo-destino
c-arquivo-entrada
in frame f-pg-log.
f-pg-par.
return error.
end.
end.
85
Exportação
4.
Na procedure 'pi-executar', colocar a lógica de gravação dos
parâmetros e seleção na temp-table tt-param.
5.
Substituir, na chamada do include {include/i-imrun.i}, a literal
'XXP/XX9999RP.P' pelo programa que exportará os registros.
86
Exportação
9
Programa RP.P de Exportação
O programa de execução de exportação (rp.p) é um programa
procedural sem qualquer tipo de interface com o usuário,
exceto pela caixa de acompanhamento de execução (utacomp/ut-perc) quando necessário.
87
Exportação
Nenhum programa chamado a partir de um rp.p deve possuir
qualquer tipo de interface.
Todas as validações ou informações com necessidade de
intervenção do usuário devem ser tratadas pelo programa .w.
88
Exportação
1.
Definir uma stream para a exportação, deixando a stream
padrão definida como STR-RP para a impressão do log.
2.
Se a implementação for uma conversão de um programa
originário do MAGNUS:
1.
Retirar a chamada para o include {cdp/cd9000.i} e
substituir as seguintes chamadas:
89
Exportação
Include Velho
Include Novo
Cdp\cd9500.i
Include\i-rpvar.i
Cdp\cd9500.fl
Include\i-rpcab.i
Cdp\cd9520.i
Include\i-rpout.i
Cdp\cd9540.i
Include\i-rpclo.i
90
Exportação
2.
3.
Substituir as variáveis de parâmetro, seleção e classificação
pelos respectivos campos da temp-table tt-param.
Na chamada do include i-rpout.i, passar o parâmetros {&tofile}.
Exemplo:
{include/i-rpout.i &tofile=tt-param.arq-destino}
91
Exportação
4.
Todos os labels que não forem do dicionário de dados e que
apareçam no relatório devem ser tratados através dos includes
{utp/ut-liter.i}, {utp/ut-field.i} ou ainda {utp/ut-table.i}.
5.
Em todos os forms/frames de impressão, deve-se colocar a
cláusula stream-io.
92
Exportação
6.
Nas seleções, ao invés de utilizar a palavra "à", para dar idéia
de faixa, substituí-la pelos caracteres "|< >|" semelhantes às
imagens utilizadas na tela de seleção, e que não necessitam
ser traduzidos.
93
CustomBrowser Digitação
1.
Em Arquivo | Novo, selecionar o estilo CustomBrowser Digita;
94
CustomBrowser Digitação
2.
Alterar a definição da temp-table no bloco de definitions
conforme necessidade. Não eliminar o campo "line";
3.
Alterar a trigger de open_query, substituindo a cláusula <temptable> pelo nome da temp-table definida anteriormente;
95
CustomBrowser Digitação
4.
Alterar a trigger de display, substituindo as cláusulas
<campo1> <campo2> pelos campos que devem estar no
browse; após o comando enable substituir as cláusulas
<campo1> <campo2> pelos campos editáveis do browse;
96
CustomBrowser Digitação
5.
Alterar a pi-salva-rel para que esta possa gravar todos os
valores do browse. Não é necessário gravar o campo "line";
6.
Na chamada da pi-busca-valor, informar o nome das variáveis
que estão na viewer e das quais se deseja retornar o valor
para o browse. Os valores serão retornados por intermédio do
comando return-value, sendo que a lista retornada será
gravada numa variável e o usuário deve utilizar esta variável e
o comando ENTRY para trabalhar com estes valores;
97
CustomBrowser Digitação
7.
Colocar todas as validações na pi-salva-rel, validando assim os
valores informados no browse a cada inclusão de um novo
registro;
8.
Na pi-cria-registro deve ser feita a leitura dos registros da
temp-table e criados os registros na tabela física. Esta pi é
chamada no choose do botão OK;
9.
Salvar o browse com o nome definido para Browse de
Digitação Rápida.
98
Digitação Rápida
9 Pré-requisitos
CustomViewerDigita que atenda às necessidades
(CustomViewerDigita);
CustomBrowserDigita que atenda às necessidades
(CustomBrowserDigita).
99
Digitação Rápida
1.
Em Arquivo | Novo, selecionar o estilo Window Digitação Rapida;
100
Digitação Rápida
2.
Verificar se já existe uma CustomViewerDigita que atenda às
necessidades. Caso não exista, deve ser criada uma nova,
utilizando o estilo CustomViewerDigita, lembrando-se que a
única condição para esta viewer é a utilização de variáveis, e
não a utilização de DBFields;
3.
Instanciar a CustomViewerDigita na página 1 da
WindowDigitaçãoRápida;
101
Digitação Rápida
4.
Verificar se já existe um CustomBrowserDigita que atenda às
necessidades, caso não exista, deve ser criado um novo,
utilizando o estilo CustomBrowserDigita. Este browser deve
utilizar uma temp-table;
5.
Instanciar o CustomBrowserDigita na página 2 da
WindowDigitaçãoRápida;
102
Digitação Rápida
6.
Redimensionar a WindowDigitaçãoRápida de acordo com os
objetos que foram colocados nela;
7.
Salvar a WindowDigitaçãoRápida com o nome definido para
Janela Digitação Rápida;
103
Obrigada
Obrigada!
[email protected]
http://universidade.datasul.com.br
Este material é de propriedade da DATASUL S.A., sendo proibida a sua reprodução em qualquer meio, total ou
parcial, sem aprovação por escrito. Todos os direitos estão reservados. A informação contida aqui é confidencial
e não pode ser utilizada fora da empresa ou das franquias que fazem parte da nossa rede, não podendo ser
divulgada para clientes, parceiros ou outra empresa ou indivíduo sem o prévio consentimento de um diretor da
DATASUL S.A. As opiniões expressas aqui estão sujeitas a modificação sem aviso prévio.
104
Download

Datasul - 0406 - DDK-GUI