sexta-feira, 11 de março de 2011

Design de Aplicações - Parte 8

Variáveis

Na definição de variáveis é preciso ter o cuidado de evitar definir variáveis que podem ser locais como variáveis globais e reduzir ao máximo o número de variáveis. Algumas variáveis não podem ser evitadas como o ok_code, tableview’s e tabstrip’s.
Muitas vezes levo esta redução ao extremo e para além das que me são impostas apenas crio duas variáveis globais, uma para identificar o próprio documento, tipicamente uma instância da classe de execução e outra com os dados das telas. No nosso exemplo tenho apenas uma variável para a os dados de tela e execução:
dataw_data type t_data.
Esta variável está organizada de forma a conter toda a informação do programa com a seguinte estrutura (alguns campos foram removidos):
Variavel
1º nivel
2º nível
3º nível

w_data
title
action
Dados do título
refdoc
fullname
screens
All
nº de subtela activo
top
header
refdoc
items
Item
top
action
Dados da subtela topo
refdoc
werks
lgort
ref
ebeln
vbeln
mblnr
mjahr
header
budat
Dados da subtela de cabeçalho
bldat
xblnr
items[]
zeile
Dados da subtela de items
expand
matnr
maktx
menge
meins
werks
Lgort
charg
bwart
item
tabix
Dados da subtela de item
Item
equi[]
sernr
instance
Instância de execução
Portanto, a variável usa uma estrutura complexa para guardar a informação que é apresentada no ecran em determinado momento e ainda a referência para a instância da classe de execução. Esta instância há-de conter os dados reais.
Portanto, durante a execução do programa o evento PBO passa os dados da instância para os dados da tela e no evento PAI passa os dados modificados da tela para a instância.
Alguns campos como a descrição do material podem não existir na instância e são calculados para os dados da tela sempre que a chave, neste caso o código de material, é alterada.
É muito importante manter presente que as conversões de dados ocorrem logo após a introdução do dado pelo utilizador. Os dados têm de estar sempre em formato interno depois do input. Os campos da tela permitem associar a regra de conversão, logo não é preciso usá-la mais tarde.
O mesmo é válido para input por ficheiro, ou seja, após ler o ficheiro deve-se converter imediatamente os dados para formato interno.
Também não menos importante, o output deve ser sempre em formato externo e de acordo com as regras do utilizador.
Todos os campos de quantidade ou valor devem ter unidade de medida ou moeda. Essa unidade tem de ser apresentada claramente ao utilizador.

Elementos ALV

Os elementos ALV vieram trazer uma nova dimensão à forma de visualização de dados a à capacidade do utilizador intervir no que vê. No entanto nem sempre não são os mais indicados para a introdução de dados. Por exemplo, os campos editáveis dos ALV TreeView são de texto, não permitem o uso directo de rotinas de conversão nem o uso associado de unidades de medida ou moeda e o copy&paste para múltiplas células não funciona.
O ALV mais útil para aplicações é provavelmente o ALV Grid, sendo que se aproxima bastante do Tablecontrol, permitindo até em alguns casos um interface mais amigável. O ALV TreeView é útil por exemplo para listar documentos ou fluxos a processar.
É preciso um cuidado adicional na aplicação para estes elementos. Se a transacção for disponibilizada também por ITS então os componentes gráficos da tela não podem ser complexos. Entre os que não podem ser usados estão os ALV.

Sem comentários:

Enviar um comentário