Flexfield - Conjunto de Validações Oracle R12
Tipos de validações especiais e emparelhamento
Muitas pessoas parecem pensar que
nos tipos de validações ESPECIAL e PAR só
podem ser usados em conjuntos de
validação. No entanto, você também pode criar seus próprios conjuntos de
validação. E essas opções são muito boas.
Validação ESPECIAL
Validação especial é utilizado
para fornecer a funcionalidade FlexField para um único valor. O que isto significa
é que você pode ter, por exemplo, um parâmetro para um programa concorrente que
será preenchido com um valor FlexField chave , ou um intervalo de valores de FlexField.
Vamos voltar para a chave
Flexfield. Sabemos que eles são combinações de valores de segmento diferentes
que são armazenadas em uma tabela de combinação separada.
Quando você quiser enviar uma
combinação de teclas – FlexField, como um parâmetro para um programa
concorrente, você pode codificar sua própria validação para os valores separados.
Mas estará faltando a funcionalidade legal que lhe dá pop-ups, uma validação
sobre a combinação resultante e, se necessário o valor de ID para a combinação
FlexField .
Isso
é possível com um tipo de validação 'Especial'.
Com a validação Especial , você será
capaz de entrar em um ou mais valores de
segmento para um FlexField chave. Para inserir esses valores de segmento, 3
saídas de usuário poderão ser utilizadas: . São eles: ' POPID ' , 'VALID' e '
LOADID '.
POPID é
usado para permitir que o usuário digite o valor no segmento FlexField . É
chamado quando o usuário entra no campo de valor do segmento . Com este usuário
saída, você decide quais valores de segmento deverão ser exibidos, e como eles
devem ser exibidos.
VALID é
chamado quando o usuário sai do valor do segmento , ou confirma a combinação do
FlexField escolhido. É validado o valor inserido contra os valores existentes
na tabela de chave FlexField .
LOADID é
opcional, e pode ser usado para escolher quais informações serão retornadas
como valor no FlexField. Isso pode ser os segmentos concatenados, ou o valor de
ID para a combinação FlexField ou valores de segmento.
A estas 3 saídas de usuário pode
ser atribuído a três "eventos" . Há mais eventos possíveis, mas eles ainda
não estão em uso, ou a sua utilização ainda não é suportada. Por isso, só vai
usar 'Validar', 'Editar' e 'Load'.
Parece complicado, até agora? Não
se preocupe isso não é uma validação fácil. Mas nós vamos construir alguns
exemplos para dar uma ideia. Primeiro vamos começar com a construção de uma validação
muito fácil. Essa combinação de código será construída em nosso FlexField Chave.
Nós usaremos um programa concorrente Test
Flex Validation para ver nossas diferentes opções.
Este programa baseia-se no
seguinte procedimento:
CREATE OR REPLACE PROCEDURE XXX_TEST_FLEXFIELD_PARAMS
( errbuf out varchar2
, retcode out varchar2
, p_flex in varchar2
, p_flex2 in varchar2 := ‘XXX’
, p_flex3 in varchar2 := ‘XXX’
, p_flex4 in varchar2 := ‘XXX’
, p_flex5 in varchar2 := ‘XXX’
) IS
BEGIN
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex2);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex3);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex4);
FND_FILE.PUT_LINE(FND_FILE.OUTPUT,p_flex5);
END;
Isso só vai demonstrar o valor do
parâmetro para a saída do pedido. Para usar Flexfield como parâmetros para
programas concorrentes, é preciso definir um valor definido com base neles.
Vamos começar com as
configurações mais básicas para introduzir uma combinação de FlexField. Para este artigo, usamos o FlexField contábil,
com o código 'GL #' e ID-num '101 '.
Neste caso, temos a seguinte
definição:
Então o que isso significa?
A primeira caixa é para o evento
de edição. Este será acionado quando o usuário insere o cursor no campo com
este conjunto de valores.
FND POPID Esta é a saída de usuário para abrir uma tela FlexField ,
e permitir que o usuário insira os valores FlexField .
CODE = " GL #" Este é o código para o FlexField chave que
iremos utilizar .
APPL_SHORT_NAME = " SQLGL " O nome abreviado também
pertence à aplicação do FlexField. Junto
com 'Código ' , este irá identificar o próprio FlexField .
NUM = "101" - Número de identificação para a estrutura
FlexField . Se você tiver apenas uma única estrutura FlexField , é opcional .
Para flexfields habilitados para várias estruturas , você precisa digitar o id.
VALIDATE="PARTIAL" - A
validação pode
ser ' Nenhum', ' Parcial ' ou ' Completa
' . Nenhum significa que a
combinação não é válida. Parcial
significa que os segmentos separados são validados, a validação não existe se a
combinação não existir. Completa
significa que os segmentos e combinação serão verificados, e se um novo valor é
inserido, ele será inserido na tabela do FlexField Chave.
SEG = " : ! VALUE " Este é o campo do forms que será
utilizado para armazenar o valor de um dos segmentos.
A segunda caixa é para o evento 'Validação‘. Este código será chamado
quando o usuário navega para fora do campo, ou quando apresentar toda a combinação.
Agora, vamos definir este valor
como um parâmetro para o nosso programa concorrente, podemos ver como a
validação funciona:
Agora, quando executar o
programa, temos esse pop-up:
Temos toda a funcionalidade do
FlexField Chave. Podemos usar o botão 'Combination' para procurar combinações
existentes. Todos os segmentos separados serão validados, de acordo com a
combinação final.
Quando apresentar um valor para o
nosso programa, ele mostrará os segmentos concatenados como o valor do nosso
parâmetro:
Agora vamos ver mais algumas
características desta validação. Por exemplo, se quisermos ter o valor do id dessa
combinação. (CODE_COMBINATION_ID no nosso caso, uma vez que usamos a Flexfield
contábil).
Para conseguir isso, precisamos
adicionar a saída do usuário, LOADID:
O evento 'Load' terá a combinação-id da tabela FlexField. Isso só é possível
para o 'VALIDATE = "FULL"’,
uma vez que irá validar toda a combinação. Também precisamos definir o ID = ": ID". Isto irá
preencher a: coluna ID com o valor ID da combinação.
Finalmente, foi adicionado o 'DINSERT = "N"', porque nós
não queremos permitir a inserção de novas combinações de código a partir deste
conjunto de valores. (E VALIDATE = "FULL" por padrão insere novas
combinações na coluna DO FlexField).
Agora, quando rodamos o
concorrente, vemos que o valor do parâmetro é o code_combination_id em vez dos
segmentos concatenados:
Com estas saídas de usuário, é
também possível selecionar apenas certo número de segmentos, em vez de todo o
conjunto. Para isso, retire o 'Load' 'LOADID' novamente.
Então, nós adicionamos um
'DISPLAY = "x" "para" Editar "e saídas de usuário'
Validate '. O parâmetro "display" é inadimplente para 'todos'. Mas
você também pode especificar segmentos separados pelo seu número de sequência
ou nomes. Em nosso caso, apresentar os dois primeiros segmentos:
Agora, quando executar o programa
concorrente, temos um pop-up para apenas os primeiros dois valores:
Uma característica muito
interessante é o uso de uma cláusula WHERE com os valores combinados. Considere
o seguinte 'Enter' código:
FND POPID
CODE="GL#"
NUM="101"
APPL_SHORT_NAME="SQLGL"
VALIDATE="FULL"
TITLE="Special Validation
Key"
ID=":!ID"
SEG=":!VALUE"
DESC=":!MEANING"
WHERE="segment2
not like '1%' "
A cláusula "where" nos
impede de escolher combinações que têm um segment2 começando com '1 '. Quando
executar o nosso programa concorrente com isso, e escolher as combinações:
Não há Dpt começando com 1.
Quando acrescentamos a cláusula
"where" para o evento de validação, ele nos impede de entrar com os
valores manualmente:
O último recurso que vamos olhar
é o uso de uma validação PL/SQL através das rotinas de validação especiais. Ao
utilizar o PLSQL user-exit, podemos chamar um bloco PL / SQL anônimo em evento
nosso 'Validação'. Eu criei um valor definido com a seguinte função para o
evento 'Validação':
FND PLSQL " declare
v_value varchar2( 10 ) := :!value ;
v_sum number;
v_valid boolean;
begin
v_sum:=0;
for i in 1..length(v_value)
loop
v_sum :=v_sum+(length(v_value)+1-i)*substr(v_value,i,1);
end loop;
if mod(v_sum,11)=0 then
v_valid := TRUE;
else
v_valid:=FALSE;
end if;
if not v_valid then
fnd_message.set_name('FND','FND_GENERIC_MESSAGE' );
fnd_message.set_token('MESSAGE','This is not a
valid bank account');
fnd_message.raise_error;
end if;
END;
"
Este procedimento PL/SQL valida
um (holandês) número de conta bancária. Se ele precisa passar no teste, uma
mensagem será exibida. Isso lhe dá possibilidades quase ilimitadas para a
validação dos dados introduzidos.
Como você pode ver, é apenas um
evento de 'Validar'. Porque nós não precisamos de nenhuma funcionalidade
especial para inserir os dados. Podemos limitar a entrada de números somente na
página principal 'conjunto de validação.
Agora, quando usamos esse valor
definido para o nosso programa concorrente, só podemos entrar contas bancárias
holandesas válidos:
E
A lista de parâmetros para o
usuário sair é mais do que isso . Portanto, não vamos estar passando por todas
as possibilidades . Você pode verificar o Guia Developers eo guia Flexfield
para uma lista completa de opções. ( Você notou o título FlexField que eu furtivamente
no pop -up ? Tente encontrar a opção para isso! ).
Por favor, tente as diferentes
opções para si mesmo, e perceber as possibilidades de validação especial.
Par Validação.
Enquanto isso, vamos continuar
com a validação "par" . A validação par é muito parecido com a
validação "especial" . Ele utiliza o mesmo tipo de saídas de
utilizador , mas desta vez , uma gama de valores de segmento ou combinações é
selecionado.
Vamos primeiro criar uma gama do
segmento de conta. Em vez de usar POPID e válido , usamos POPIDR e VALIDAR . A
versão R de o usuário sai - criar automaticamente um intervalo.
Claro que precisamos de dois
parâmetros para definir o intervalo . No entanto , precisamos de apenas um
conjunto de validação.
Eu criei o conjunto de validação
' XXX_PAIR_VAL ' . Entrei apenas a edição e validar os eventos :
O próximo passo é definir os
parâmetros para tanto o valor de baixa e alta. Ambos os parâmetros têm o
conjunto de validação 'XXX_PAIR_VAL'.
Agora, quando executar o
programa, podemos introduzir um intervalo. Isto inclui a validação de que o
valor elevado é efetivamente maior ou igual ao valor baixo.
Claro que o programa concorrente
receberá os valores para dois parâmetros.
Quando usamos a validação
completa, podemos introduzir um intervalo da combinação conta todo. Note-se que
não podemos usar a validação COMPLETO para o par-validação. Porque isso
significaria o uso da combinação-id da tabela FlexField e com base na
combinação-id você não pode construir um intervalo.
Então, só podemos usar PARCIAL e
NONE para a validação. Por essa mesma razão, eu ainda não tinha um motivo para
usar um evento de carregamento para validação PAIR. No entanto, é permitido o
uso de um.
Eu criei uma validação PAIR para
toda a gama de contabilidade da seguinte forma:
Quando usado no programa
concorrente, ele vai realmente permitir-nos introduzir um intervalo de todos os
segmentos:
É isso aí pessoal... até o próximo post!
Nenhum comentário:
Postar um comentário