quarta-feira, 18 de agosto de 2010

Como recompilar um form ?

Boa tarde jovens amigos !!! Macebos companheiros...

Hoje segue um dica bem simples, porém bastante usada pelos nossos destemidos amigos ATG's desse mundão por ai.

Imagine a cena: Um desenvolvedor ou mesmo um analista chega para vocẽ, mestre ATG e solicita: "Bom dia sábio ATG, recompila o form X lá na Produção para mim, por favor. O form já está no seu e-mail !!!". Obviamente o pedido vem com aquela cara de cachorro que caiu da mudança que por um segundo você até acredita na sinceridade do distinto quando te chama de sábio não é :)

Continuando... Na primeira vez que me pediram isso eu pensei: "O que é que eu tenho a ver com isso? Quer recompilar form faz você que é desenvolvedor, seu @#&*$# !!!".

Claro que ele faria isso se ele tivesse acesso direto ao servidor de produção, mas se sua empresa for minimamente organizada isso não vai acontecer. Dessa forma, fica a cargo do bom e velho ATG fazer isso. E isso é bem simples conforme abaixo:

1) Acessar o servidor de aplicação
ssh mario@servidor
su - appsprod

2) Ir até o diretório para compilação do form
cd $AU_TOP/forms/

onde:
NLS => PTB ou US (no meu caso que tenho somente as duas linguagens instaladas).

3) Se for um form que já existe e está sendo alterado, faça uma cópia antes apenas para desencargo de consciência.
cp .fmb .fmb-

4) Recompilar o form
f60gen .fmb userid=apps/ compile_all=yes

Importante: Após este processo, é criado um arquivo com o mesmo nome do form, porém com a extensão fmx.

5) Mover o arquivo de extensão fmx para a pasta de destino - fazer uma cópia do fmx anterior antes, também somente por desencargo.
cd $_TOP/forms/

Onde:
MODULO_TOP => TOP do módulo a que pertence o form (AR, AP, RI, etc)
NLS => PTB ou US

6) Refazer a operação para a outra Language, se necessário.

E pronto, jovem mancebo. O form já está recompilado, a sua fama de mestre dos magos está garantida e quem sabe até aquele chocolate que o pessoal usa para te subornar de vez em quando possa estar lá na sua mesa.

Simples e fácil.

Abraço
Mario

sexta-feira, 13 de agosto de 2010

O SysAdmin não se loga mais? Alteraram a MO: Operation Unit? O que fazer ?

Bom dia Jovens Mancebos

Como tem passado? Espero que bem... Por aqui a correria de sempre...

Hoje, vamos falar de uma pequena dica, mas de um valor inestimável.

Durante o projeto de implantação do EBS aqui na empresa, o valor de uma profile foi alterado para nulo em nível de site, impossibilitando até o SysAdmin se logar à aplicação. No nosso caso estamos trabalhando em Multi-Org.

O erro apresentado é o seguinte - Daqueles bem legais e explicativos do EBS:
Error Page
You have encountered an unexpected error. Please contact the System Administrator for assistance.
Click here for exception details.

Quer saber qual é a profile?
É a MO: Operating Unit. Ela não deve ter o seu valor alterado para NULL jamais em nível de site.

Como sou brasileiro e não desisto jamais, após recuperar o meu ambiente fiz o que está descrito abaixo para evitar o problema:
1) Um backup do valor atual da profile na base de dados:
CREATE TABLE ou_profile_site_value_MARIO as
SELECT * FROM fnd_profile_option_values
WHERE PROFILE_OPTION_ID = 1991
AND APPLICATION_ID =0
AND level_id = 10001;

2) Baseado no Note 393560.1, criei o seguinte Form Personalization para bloquear a alteração:
- Login to the application as SYSADMIN
- Responsibility : System Administrator
- Function: Profiles --> System
- Selecione no menu: Help --> Diagnostics --> Custom Code --> Personalize
- Create a new Rule

Na aba Condition, acrescentar:
- Seq : 10
- Description : MO: Operating Unit
- Level : Function
- Enabled : Check

- Especificar a condição:
- Trigger Event : WHEN-VALIDATE-RECORD
- Trigger Object : PROFILE_VALUES
-Condition : :PROFILE_VALUES.PROFILE_OPTION_NAME = 'ORG_ID' AND :PROFILE_VALUES.SITE_VISIBLE_VALUE IS NULL
- Processing Mode : Not in Enter-Query Mode

Veja a figura abaixo:




Na aba "Actions", acrescentar:
- Seq : 10
- Type : Message
- Description : MO: Operating Unit
- Language : All
- Enabled : Check
- Message Type : Error
- Message Text : You must specify a profile option value at Site level for the profile option 'MO: Operating Unit'.

Veja a figura abaixo:


Salvar o FP. Ir até a tela de profiles e tentar alterar o valor. Neste momento vale a pena uma pequena oração para garantir :)

Se tudo correr bem, a mensagem abaixo será apresentada.


E uma dica final: É uma boa manter os seguintes notes sempre à mão:
Note 387581.1 (How to Restore System Profile 'MO: Operating Unit' When it Has Been Set to Blank).
Note 393560.1 (How To Prevent the Profile Option MO: Operating Unit being set to NULL at Site Level?)

Abraço jovens
Mario

Postagem em destaque

[ORACLE] Embedding ONNX model for Vector Search tests with Oracle Database 23ai

Hello, everyone. How's it going? Today, I'm going to show you how to load an ONNX model into the Oracle 23ai database for your vecto...