As surpreendentes verdades que nunca contaram a você sobre o Form Personalization

form-personalization-pic

Enfim, estou escrevendo sobre Form Personalization (FP para os íntimos)…

Será que é tarde?

Vou contar uma coisa pra você… Há muito tempo que penso em escrever sobre o Form Personalization.

E quando digo muito tempo, é muito tempo mesmo.

Desde o primeiro momento em que conheci esta ferramenta, fiquei simplesmente fascinado com todo o potencial que ela tinha e tudo o que eu poderia fazer com ela.

► Já baixou o eBook (Clique para baixar) com 11 incríveis usos para o EBS Personalization? São personalizações super úteis para Forms e WEB/OAF, todos com exemplos práticos. É Grátis!

Para um “fuçador” e alguém que sempre procura um meio de melhorar as coisas, aquilo era um prato cheio.

Testei a ferramenta de cabo a rabo, fiz de tudo nela.

Por isso, eu sempre quis compartilhar com os outros e falar do seu potencial.

Eu via que as pessoas não utilizavam nem 30% do que ela era capaz.

Mas sempre surgia algo para atrapalhar:

…alguma uma outra coisa para fazer…

…um pensamento que fazia eu acreditar que não era tão importante…

…um sentimento de procrastinação…

…ou simplesmente alguma crença limitante qualquer!

Pois bem, estamos em um momento onde o EBS já está com muitas telas WEB, cada vez mais temos menos telas desenvolvidas em forms.

Mas quer saber?

form-personalization-meme-table
Constantemente temos a convicção de que algo não é importante, que algo que pra você é tão simples e básico, não despertaria o interesse nos outros.

Mas o mundo não é assim. Pessoas têm visões e conhecimentos diferentes das coisas.

Vez ou outra um amigo ou conhecido me chama pra pedir ajuda, seja para coisas básicas, como coisas que eles nem sonham que é possível fazer.

E ainda tem as pessoas que estão começando com EBS.

Mas o fator mais importante para a minha decisão, é que aprendi que só existe um jeito de termos certeza de algo…

… que é:

Tentando!

Sem sombra de dúvidas este artigo será útil para alguém, então já me dou por satisfeito.

Nossa, que desabafo! 🙂

Agora chega de enrolação e vamos ao que interessa.

Como diria meu mentor Goffi:

BORA PRA ACTION!

Neste artigo você ficará sabendo sobre:

  • Como surgiu o Form Personalization
  • Form Personalization x CUSTOM.pll
  • Um passo-a-passo de como utilizar
  • Ele não é apenas para clientes e usuários, use a seu favor
  • Ele é muito mais que uma ferramenta para alterar nome de campos

Quer ver o Form Personalization com outros olhos?

Então continue lendo este artigo.

Como surgiu o Form Personalization

O Form Personalization (ou Forms Personalization) é um recurso do Oracle EBS que foi introduzido na release 11i com a finalidade de facilitar a personalização dos forms dentro do EBS.

Antes dele, se fosse necessário customizar um form, tínhamos três opções:

  1. Alterar diretamente o form nativo
  2. Criar uma cópia do form nativo e realizar as alterações nessa cópia
  3. Customizar a biblioteca CUSTOM.PLL

Vamos aos problemas de cada um deles:

1. Alterar diretamente o form nativo

Esta opção é a menos recomendada. Se você realizar alterações diretamente no form nativo, assim que uma melhoria disponibilizada via patch for aplicada no ambiente, todas as suas alterações serão perdidas.

A versão mais nova sobrescreverá a sua versão customizada.

2. Criar uma cópia do form nativo e realizar as alterações nessa cópia

Nesta segunda opção não temos o problema citado acima, já que o form nativo foi clonado e as alterações serão realizadas numa cópia.

Mas nessa opção teremos outro problema, o form ficará desatualizado. Assim que a Oracle disponibilizar um patch com melhorias, apenas o form nativo receberá as atualizações, só que ele não está mais sendo utilizado.

Uma solução seria monitorar essas atualizações e, quando ocorressem, replicá-las para o form customizado.

Trabalhoso, não acha?

3. Customizar a biblioteca CUSTOM.PLL

E a terceira opção é a melhor das três.

Nenhuma alteração é feita nos forms (tanto nativos como customizados).

Toda a programação é feita dentro da biblioteca CUSTOM.pll, que é uma biblioteca projetada pela Oracle exclusivamente para esse fim.

form-personalization-custom

Como todos os forms do EBS incorporam essa biblioteca automaticamente, qualquer alteração nela terá reflexo em todos os forms.

Mas nem tudo são flores.

Não é qualquer tipo de customização que pode ser realizada na CUSTOM.PLL.

Apenas alguns eventos podem ser customizados. Segundo o Oracle E-Business Suite Developer's Guide, a CUSTOM.pll recebe dois tipos de eventos, genéricos e específicos de cada produto.

Eventos genéricos são comuns para todos os forms do EBS, que são:

  • WHEN-FORM-NAVIGATE
  • WHEN-NEW-FORM-INSTANCE
  • WHEN-NEW-BLOCK-INSTANCE
  • WHEN-NEW-RECORD-INSTANCE
  • WHEN-NEW-ITEM-INSTANCE
  • WHEN-VALIDATE-RECORD
  • SPECIALn (onde n é um número de 1 até 45)
  • ZOOM
  • EXPORT
  • KEY-Fn (onde n é um número de 1 até 8)

Apesar da customização via CUSTOM.pll ser a melhor alternativa das três, ela também tem os seus problemas.

Como todos os forms são vinculados à ela, um pequeno descuido e uma implementação errada pode fazer com que todos os forms do EBS parem de funcionar.

Imagine isso em um ambiente de produção.

Já vi acontecer, a reação era mais ou menos essa:

form-personalization-custompll

Para facilitar esse cenário, a Oracle colocou em cena o Form Personalization.

Que surgiu com a tarefa de facilitar ainda mais essas customizações.

As possibilidades de personalização com ele são praticamente as mesmas via CUSTOM.pll, apenas com algumas restrições.

Mas a grande sacada do FP é maneira como as personalizações são desenvolvidas, liberadas e armazenadas.

Form Personalization x CUSTOM.pll

Vou listar as principais diferenças entre as duas, demonstrando as vantagens do FP e a razão pela qual a Oracle recomenda utilizar o FP sempre que possível.

Vamos lá?

Desenvolvimento

Para personalizar a CUSTOM.pll, só para começo de conversa, o responsável precisa ter conhecimentos de programação.

Como a personalização é realizada em um arquivo, é necessária a utilização da ferramenta Oracle Forms Builder, que é a mesma utilizada para desenvolver forms e bibliotecas.

Por isso, além da necessidade de ter a ferramenta instalada, precisa de conhecimento técnico e de programação para trabalhar com ela.

E não é só isso, como todas as customizações ficam concentradas em um único arquivo, apenas um desenvolvedor por vez pode realizar alterações.

No Form Personalization, você não precisa de nada disso.

A personalização é realizada diretamente dentro do EBS, em tempo de execução e não precisa de ferramenta externa.

E as personalizações não ficam em um arquivo, ficam armazenadas diretamente no banco de dados.

O conhecimento técnico necessário cai drasticamente, já que o FP tem uma interface própria que facilita muito a personalização.

Algumas personalizações mais simples podem ser feitas apenas com alguns cliques.

Liberação em produção (Deploy)

Depois de toda a codificação realizada na CUSTOM.pll, o arquivo deve ser colocado no servidor, substituindo a biblioteca existente.

Se algo der errado neste momento, dependendo do erro, os forms podem parar de funcionar.

Então é preciso correr e desfazer a operação.

No FP, como não é feito nada em arquivos, basta desabilitar a personalização que está com problemas, diretamente dentro do EBS.

Simples assim.

E como todas as personalizações ficam armazenadas em tabelas FND, para replicá-las em outros ambientes basta utilizar a ferramenta FNDLOAD.

Em um contexto geral, essas são as principais diferenças entre os meios de personalização e o motivo da existência do FP.

Agora que ele foi devidamente apresentado, farei um resumo da ferramenta.

Form Personalization: Um passo-a-passo de como utilizar

O FP nada mais é do que um próprio form.

Para acessá-lo, abra o form que você deseja personalizar e acesse o caminho abaixo pelo menu superior do EBS:

Help → Diagnostics → Custom Code → Personalize

A seguinte tela irá abrir (Utilizei como exemplo uma tela do INV):

OBS: Lembrando que para ter acesso ao FP, você precisa ter as seguintes profiles configuradas:

FND: Diagnostics (Yes)

Hide Diagnostics menu entry (No)

Componentes do cabeçalho

form-personalization-header

Uma visão geral de cada item da tela:

Seq

É a sequência em que a personalização será executada.

Description

Uma descrição para a personalização

Level

Temos duas opções: Form / Function

Todo form cadastrado no EBS precisa de uma função.

E essa função é associada ao menu da responsabilidade, para que o form possa ser chamado.

Para facilitar o entendimento, vou utilizar um exemplo:

Considere um form “X”:

Você quer ter a possibilidade de chamar esse form de duas responsabilidades diferentes e, em cada uma das chamadas, passar parâmetros diferentes.

Então você precisa criar duas funções, mas que chamam o mesmo form (o que vai mudar é o parâmetro da função).

Sendo assim, se quando você personalizar, escolher “Form” no Level, a personalização sempre vai ser executada para este form, independentemente da função escolhida, pois você personalizou o form diretamente, não a função.

Agora, se você entra em uma das duas responsabilidades, abre o form e personaliza no level “Function”, a personalização só vai ser executada para esta função que você está personalizando no momento.

Note que sempre que você abre a tela do FP, você tem o nome da função e o nome do form:

form-personalization-form-function

Enabled

Essa é fácil.

Esse checkbox habilita ou desabilita a personalização.

Se tiver qualquer problema com uma personalização, basta desmarcar esse flag.

Aba Condition

form-personalization-condition

Nesta aba você configura os eventos e objetos que receberão a personalização.

Assim como as condições para que a personalização seja executada.

Trigger Event

Aqui você define qual o evento que quer personalizar, os eventos padrões (que existem para todos os forms) são:

  • WHEN-NEW-FORM-INSTANCE (Quando o form abre)
  • WHEN-NEW-BLOCK-INSTANCE (Quando um bloco do form recebe o foco)
  • WHEN-NEW-RECORD-INSTANCE (Cada vez que um registro recebe o foco)
  • WHEN-NEW-ITEM-INSTANCE (Cada vez que um item recebe o foco)
  • WHEN-VALIDATE-RECORD (Toda vez que o foco sai de um registro que teve alterações)
  • MENU (1 ao 15) (Para criar itens no menu superior do EBS)
  • SPECIAL (1 ao 45) (Para definir ações para os itens de menu criados acima)
Nota
O que muita gente não sabe, é que é possível informar manualmente outros eventos aqui. Mas isso vai ficar para a próxima 😉

 

Trigger Object

É o objeto do form que receberá a personalização.

Vai depender do evento escolhido acima.

Ex.: Se você escolheu “WHEN-NEW-BLOCK-INSTANCE” (Evento de bloco), vai ter que informar o nome do bloco que desejará personalizar.

Condition

Uma condição que precisa ser verdadeira para que a personalização seja executada.

Ex.: Você deseja que uma determinada personalização só seja executada quando um campo da tela estiver preenchido.

Processing Mode

Você define como a personalização deve se comportar em modo pesquisa (F11):

Not in Enter-Query Mode: Não executar quando estiver no modo pesquisa
Only in Enter-Query Mode: Executar somente quando estiver em modo pesquisa
Both: Executar sempre, independentemente se está em modo pesquisa ou não

Context

form-personalization-context

Nessa parte você pode define os níveis de acesso para execução da personalização.

Level

Aqui você restringe em qual nível a personalização deve ser executada:

Industry
Site
Responsibility
User

Aba Actions

form-personalization-actions

Aqui você vai configurar as ações das suas personalizações, ou seja, o que elas vão fazer.

Seq

É a sequência em que a ação será executada.

Type

Tipo da ação, que pode ser:

  • Property: Define propriedades de objetos (Blocos, itens, canvas, janelas, etc)
  • Message: Mostra mensagens para o usuário
  • Builtin: Executa ações pré-determinadas
  • Menu: Habilita um item no menu superior do EBS

OBS: Os tipos serão explicados logo abaixo.

Description

Uma descrição para identificar a ação.

Language

Em qual idioma a ação deve ser executada.

Enabled

Habilita ou desabilita a ação.

Está gostando deste artigo?

Então informe seu e-mail abaixo para receber atualizações

Fique tranquilo, seu e-mail está completamente <strong>SEGURO</strong> conosco!

Tipos de Ações

Cada tipo de ação, tem configurações específicas. Abaixo vou explicar cada uma delas:

Tipo #1: Property

Quando queremos alterar a propriedade de algum objeto, temos que configurar o seguinte:

Object Type

É o tipo de objeto que queremos modificar, pode ser um item, bloco, canvas, janela, parâmetro, lista de valores, variável global, etc).

Target Object

É o nome do objeto que vamos modificar.

Property Name

É a propriedade que será alterada do objeto selecionado acima. Pode ser o conteúdo de um campo na tela, o prompt de uma janela, se um bloco vai permitir alterações ou não, etc.

Value

Aqui você informa qual o novo valor da propriedade que está alterando.

Se o novo valor for um conteúdo “fixo”, ou seja, apenas texto, basta informá-lo no campo “Value”.

Ex.: Na tela abaixo, vou preencher o campo “Description com o valor “Descrição Teste”:

form-personalization-description-null

Para realizar esta personalização, preciso informar:

  • O nome do bloco que o campo pertence e o nome do campo, no formato <BLOCO>.<CAMPO>
  • O novo valor que será preenchido no campo

Ficaria assim:

form-personalization-desc-change

Mas se for um conteúdo dinâmico, por exemplo, o conteúdo de um outro campo, você precisa utilizar o ‘=' antes do nome do campo.

Ex.: Vamos copiar o conteúdo do campo “Transaction Quantities” (Início) para o campo “Transaction Quantities” (Fim):

form-personalization-transaction

Ficaria assim:

form-personalization-dynamicO conteúdo dinâmico, também pode ser uma query:

form-personalization-dynamic-query

Tipo #2: Message

Se você precisa mostrar uma mensagem para o usuário, é só escolher o tipo de mensagem desejado e informar o texto.

Os tipos são:

Show

Mostra uma mensagem simples.

Hint

Mostra apenas uma mensagem na barra de status, no canto inferior esquerdo.

Error

Mostra uma mensagem personalizada para sinalizar um erro.

Warn

Como esta mensagem é utilizada para alertar o usuário, são mostrados dois botões: “OK” e “Cancel”.

Se o botão “OK” for pressionado, as ações que foram configuradas logo após essa mensagem serão executadas normalmente.

Se o botão “Cancel” for pressionando, nenhuma ação configurada após a mensagem é executada.

Veja como apareceria cada uma:

form-personalization-message

Existe ainda uma quinta opção, do tipo “Debug”.

Esse tipo de mensagem é utilizado para fins de debug e só aparecerá se o “Debug Mode” for diferente de “Off”:

form-personalization-message-debug

Tipo #3: Builtin

No tipo “Builtin” você consegue realizar algumas ações pré-definidas, como:

Launch a Function

Permite chamar uma função cadastrada no EBS, por exemplo, você pode chamar uma função que chama um form e ainda passar parâmetros para esse form.

GO_ITEM

Permite colocar o foco em algum campo da tela.

Launch a URL

Você pode abrir o browser em determinado site.

RAISE FORM_TRIGGER_FAILURE

Esse é um comando que “barra” o usuário de continuar a operação.

Você pode utilizar em conjunto com uma mensagem de erro, por exemplo:

Você cria uma personalização para validar o conteúdo de algum campo que foi digitado pelo usuário, se esse conteúdo não estiver de acordo com as regras que você definiu, você pode mostrar uma mensagem de erro e, logo em seguida, lançar um RAISE para impedir que o usuário continue.

Assim ele só conseguirá prosseguir até que informe um valor válido.

Create Record Group from Query

Toda lista de valores de um form, é baseada em um “RECORD GROUP”, que por sua vez é definida por uma query.

Logo, com uma personalização você pode alterar a query de uma lista de valores.

Imagine a seguinte situação: Existe uma tela com uma lista de valores que precisa de uma nova condição de filtro na query, você não precisa pedir para um desenvolvedor abrir o form e realizar a alteração, basta criar um novo “RECORD GROUP” com a nova query e associar com a lista de valores.

Tipo #4: Menu

Você pode adicionar um novo item de menu para o seu form e, com isso, você pode adicionar uma nova funcionalidade.

Exemplo:

Você quer criar um novo item de menu que inicie um concurrent:

form-personalization-message-menu-concurrent

A configuração acima apenas cria o item de menu, que ficará assim:

form-personalization-message-menu-conc-preview

Depois você precisa criar uma outra personalização, com o evento “SPECIAL” e a mesma numeração utilizada no menu acima, que no caso foi 10 (MENU10):

form-personalization-message-special

Então para essa personalização do tipo “SPECIAL”, é só criar a ação que execute o concurrent.

Bom, esse foi um passo-a-passo geral de utilização do Form Personalization.

Existem muitos outros recursos para mostrar, mas o artigo ficaria muito grande e achei melhor deixar para um próximo momento.

Form Personalization é para todos, use a seu favor

Creio que a maioria dos profissionais que trabalha com FP, utiliza-o apenas para atender demandas de projetos e requerimentos do cliente.

Bom, eu não. 🙂

Como mencionei no começo deste artigo, sempre gostei de melhorar as coisas e utilizar todos os recursos disponíveis para esses fins.

Vi no FP uma excelente oportunidade de fazer isso. Comecei a utilizá-lo para aumentar a performance do meu trabalho como consultor.

Ou seja, comecei a criar pequenos hacks no FP, aumentando a minha produtividade.

Quer saber como?

Vou citar três exemplos:

#1 Mostrando o ID das ordens de venda

Em vários clientes já precisei consultar o ID de uma ordem de venda (HEADER_ID) no OM com bastante frequência, então em vez de toda vez ter que consultar pelo “EXAMINE” ou via SQL diretamente no banco, criei uma personalização que reutilizasse o prompt do campo com o número da ordem para mostrar o ID.

Fiz a personalização no evento “WHEN-NEW-RECORD-INSTANCE” do bloco ORDER:

form-personalization-hack-om

Com isso, toda vez que eu navegava para um registro, o ID era mostrado diretamente na tela:

form-personalization-hack-om-preview

Levei apenas alguns minutos pra fazer, e o ganho de tempo foi enorme.

#2 Facilitando a procura da execução de concurrents

Esse já foi publicado aqui no blog, você pode conferir aqui.

Nele eu mostro como utilizei o prompt de um campo da tela (a mesma coisa da dica acima do ID do OM), para mostrar a descrição completa dos concurrents.

Como na ocasião eu executava muitos concurrents com nomes parecidos, ficava difícil conferir, já que o campo de descrição era pequeno e não aparecia o nome inteiro.

#3 Visualizando a saída de concurrents de outros usuários

Esse também já foi publicado aqui.

Quando estamos atuando em projetos, geralmente precisamos verificar a saída de concurrents executados pelo usuário ou até mesmo de outros consultores, para identificar problemas.

Por padrão, somente o responsável pela execução consegue visualizar a saída.

Então criei uma personalização para habilitar o botão, assim eu mesmo verificava rapidamente a saída dos concurrents. 🙂

Nota
Lembrando que eu sempre fazia isso apenas para o meu usuário, é só configurar o “Level”.

Ele é muito mais que uma ferramenta para alterar nome de campos

Como mostrei durante o artigo, o Form Personalization é muito poderoso.

São inúmeras as possibilidades para construir personalizações robustas, hacks super produtivos e melhorias nos forms existentes.

Isso que nem falei da utilização de variáveis globais, variáveis de sistema, execução dinâmica de procedures, condições avançadas…

… enfim, muita coisa!

Basta ter uma noção completa de todo o potencial da ferramenta, ver alguns exemplos e usar a criatividade.  💡

Concluindo: Como ir para um próximo nível

Nesse artigo abordei apenas uma pequena parte do Form Personalization, como mostro no meu treinamento completo, ele tem muitos recursos e funcionalidades a serem explorados.

E se gostou desse artigo, não deixe de compartilhar com seus amigos.

Forte abraço e até o próximo artigo.

38 Comentários


  1. Fala Eduado! Excelente iniciativa cara! Realmente o FP ajuda demais! e ainda tem chão até o Fusion chegar e entrar em todos os clientes…

    Aproveitando a deixa, ai vão algumas coisas que seria legal você incluir no teu material:
    -Chamada de outras telas, como os parâmetros (IDs) já preenchidos
    -Execução de concurrents em background com parâmetros preenchidos
    -Tratamento de mensagens e depuração
    -Usando o RECORD GROUP
    -Execução de SQLs e retorno em Mensagem
    acho que ta bom…rs

    abs! valeu!

    Responder

    1. Grande Soto! Blz man?

      Obrigado cara. O Forms velho de guerra ainda tem muito chão pela frente! 🙂

      Valeu pelas dicas, anotei todas aqui.

      Abração

      Responder

  2. Grande Schurtz! Parabéns pelo artigo e pela iniciativa. Ficou muito bom e muito didático! Com certeza será muito utilizado e vai ajudar os colegas de Oracle EBS. Abs

    Responder

  3. Excelente material e parabéns pela iniciativa!
    Utilizamos o FP para diversas rotinas, dentre elas executar
    programas customizados e exibição de seus retornos (através de variável global),
    soluções hibridas com alteração de parâmetros de calculo de imposto antes da
    execução do tax engine e para diversas validações necessárias aos requisitos de
    negocio, muitas delas com parâmetros recuperados de profiles custom que podem
    ser setadas em qualquer nível (Aplicação, Responsabilidade, usuário etc.).
    Trabalho com Oracle ha aproximadamente 8 anos e sempre utilizei essa ferramenta, penso
    como deveria ser difícil atender qualquer solicitação do cliente sem ela.

    Responder

    1. E aí Rodrigo, tudo bem?

      Muito obrigado pelas palavras!

      Perfeito Rodrigo. Ótimo insights para uso do FP. Show mesmo! Sempre bom saber de casos de uso assim, mais avançados. Com globais, parâmetros, variáveis de sistema, etc…. Dá pra fazer MUITA coisa…

      Obrigado por compartilhar!

      Se quiser compartilhar mais alguma coisa, fique à vontade.

      Abração

      Responder

  4. Parabéns pelo excelente artigo. Realmente o FP é uma mão na roda mesmo.

    Responder

  5. Excelente Eduardo. Sempre fui fã de FP, uso muito para facilitar a vida dos usuários, bloquear campos, alterar LOV de menus, etc… Mas a dica que deu, como ex. mostrar o ID da ordem, achei fantástica. Nunca olhei o FP de forma simples como esta e tão funcional hehehehe. Parabéns.

    Responder

  6. Eduardo muito Bom. Eu não sou muito tecnico (embora me defenda muito bem com sql). Ja pensei em usar uma vez consegui materioa de treinamento e tentei usar mas muitas muitas duvidas e com a falta de tempo acabei deixando pra lá .. É o tipo de ferramenta que vale a pena estudar . Mesmo para os consultores funcionais . Valeu obigado !!! Daniel SRoman

    Responder

    1. Daniel, tudo bem?

      Muito obrigado pelo seu feedback. É exatamente esse tipo de retorno que faz eu entender melhor o que as pessoas estão precisando, assim consigo redirecionar melhor o conteúdo a ser criado.

      SQL é fundamental, tanto para técnicos, como para funcionais. Até por isso disponibilizei o mini-curso gratuito de SQL aqui no blog.

      E sobre o FP, um dos seus diferenciais é justamente facilitar o uso por pessoas sem conhecimento técnico. Ele ajuda MUITO mesmo, vale a pena estudar.

      Mas entendo que tem muito material espalhando na Internet, leva muito tempo e se gasta muita energia para identificar o que é bom, o que não é… o que é válido, o que não é… etc…

      Enfim, estou pensando numa maneira de facilitar isso! Manterei vocês informados!

      Abs e muito obrigado pelo retorno.

      Responder

  7. Excelente post, meus parabéns! Bem didático e muito bem escrito!

    Responder


  8. Oi Eduardo. Boa tarde.

    Tinha te mandada uma pergunta na semana passada, mas não sei se ela foi postada corretamente, piois não está aparecendo aqui no chat.
    Por isso, volto a solicitar o HELP, esperando que eu não faça nenhuma bobagem dessa vez… 🙂

    Precisamos fazer criar uma personalização no EBS R11i, no forms de Transações do AR, para fazer insert em uma tabela customizada.
    Criei uma personalização de WHEN-NEW-RECORD-INSTANCE e em ações coloquei em Executar um Procedimento o seguinte argumento:
    insert into Table_X
    (context, context_key)
    values
    (‘ICMS PARTILHA’, ‘ || to_char(:tgw_header.TRX_NUMBER_MIR) || ‘_999’)

    Porém o campo :tgw_header.TRX_NUMBER_MIR ou :tgw_header.TRX_NUMBER não está trazendo nada…

    Será que estou fazendo certo? Poderia me ajudar?

    Desde já muito obrigado.

    Fernando Arcoverde

    Responder

    1. Bom dia Fernando, tudo bem?

      Acho que não foi postada, pois não recebi por aqui.

      Sobre a dúvida, vamos lá:

      Você está dizendo que no momento do INSERT, o campo :tgw_header.TRX_NUMBER_MIR está nulo?

      Tirando isso, o INSERT está funcionando? Pois o comando que você colocou aí está incompleto pra funcionar no “Executar um Procedimento”.

      E uma dúvida que fiquei: Você precisa inserir toda vez que navega até um registro? Usando essa trigger, toda vez que você navegar até um registro, ocorrerá o INSERT. É isso mesmo?

      Se der, me manda um print… (Pode ser pelo http://imgur.com/ se não tiver outro serviço de preferência).

      Abs

      Responder

      1. Eduardo, primeiramente muito obrigado pelo rápido retorno.Certamente fui eu que fiz bobagem na outra postagem… rsrsrs

        Bem sobre a personalização, quando eu substituo a variável por um numero fixo. ex: ‘123’, o insert funciona.
        O campo :tgw_header.TRX_NUMBER teoricamente NÃO está nulo, porque antes eu mando mostrar o conteudo de ${item.tgw_header.trx_number.value} e ele está preenchido
        E sobre inserir toda vez, a resposta é NÃO. O que preciso é quando entrar no registro ele dar o insert. se já existir não precisa fazer nada. seria algo como insert or update… rs

        O print que você está pedindo é exatamente de que???

        Abs

        Responder

        1. Gostaria de um print da tela do AR (com o registro preenchido) e também um da sua personalização (Apenas da aba de “Ações”), pra eu ver como você está fazendo.

          Aí você pode subir as imagens no http://imgur.com/ e só me mandar o link.

          Abs

          Responder

  9. Fernando, tudo bem?

    Desculpe a demora, mas estava em semana de lançamento do curso de personalization. Estava bem corrido.

    Bom, não se assuste com o código que vou mandar, mas tem que ser assim pra funcionar 🙂

    =’BEGIN
    insert into xx_teste_person_0001
    (context, context_key)
    values
    (”ICMS PARTILHA”’ || ‘, ”’ || :tgw_header.TRX_NUMBER || ‘_999”);
    END’

    Me avisa se deu certo.

    Abs

    Responder

    1. Eduardo, mais uma vez obrigado pelo retorno.

      Irei realizar o teste e te informo.

      Abs

      Responder

  10. Preciso criar uma personalização no form Shipping Transactions no campo Ship Method que caso o usuario queira alterar o Ship Method, só possa alterar para outro ship method da mesma “categoria”. Exemplo:

    Categoria CE:
    CE10
    CE20
    CE30

    Categoria AB:
    AB15
    AB25
    AB35

    Se ao consultar o Ship Method estiver com “CE10”, só podera trocar por outro da categoria CE (CE20 ou CE30). Ou se o Ship Method estiver “AB35”, só pode trocar por (AB15 ou AB25)

    Tentei sobrescrever a LOV baseado nos dois primeiros caracteres da categoria (AB ou CE) mas ainda resta o problema de quando traz CExx o usuário não pode trocar para ABxx

    Grato,
    Ricardo Cardoso.

    Responder

    1. Boa noite Ricardo, tudo bem?

      Então, olhando assim por cima, eu tentaria algo assim:

      1) Logo que entrar no registro, armazenar a categoria atual numa variável local

      2) No momento de validação do registro (WHEN-VALIDATE-RECORD), verificar se a nova categoria é igual à categoria armazenada previamente

      Acho que funciona, mas teria que testar.

      Abs
      Eduardo

      Responder

      1. Bom dia Eduardo, como vai?

        Em primeiro lugar, muito obrigado pela atenção.

        Não
        entendi muito bem como vou fazer para criar essa variável local nem
        como atribuir o valor inicial para ela. Tem algum exemplo?

        Novamente muito obrigado,
        Ricardo Cardoso

        Responder

          1. Boa tarde Eduardo!

            Com certeza você já ganhou mais um aluno para o seu curso. Funcionou PERFEITAMENTE!

            Muito obrigado mesmo.

            Ricardo Cardoso.


          2. Que bom que deu certo.

            Como digo sempre, o Personalization tem um potencial enorme, só precisa conhecer bem.

            Será um prazer tê-lo no curso.

            Abs
            Eduardo


  11. Excelente material e iniciativa, são poucos os que compartilham conhecimento. Abs

    Responder

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *