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] Batch change EDITIONABLE property.

Hello everyone. Hope you're doing well! Today, I have a simple case.   A test database had many database objects with the EDITIONABLE pr...