Olá!
Hoje vou variar um pouquinho no assunto do post! Como o blog é muuuito variado, não vejo problemas, não é?
Então, bora colocar algo útil para aqueles que trabalham com Oracle EBS.
Atualmente existem muitos blogs muito bons sobre isso, como o http://eduardoschurtz.com/oracle, mas aqui estou apenas colocando de forma mais técnica algumas informações que são muito úteis para mim no dia a dia, já que trabalho todo dia com Oracle EBS. 😀
Buscar parâmetros do programa concorrente
Essa consulta retorna a lista de parâmetros de um programa concorrente cadastrado no EBS. Utilizei muito para montar os Repasses de Tarefas, que são documentos (word mesmo) criados para documentação dos programas que são cadastrados no EBS, como programas concorrentes, forms, executáveis, listas de valores, etc… Eu sei eu também acho meio antiquado, afinal pode-se criar instaladores através do FNDLOAD (Vou fazer um post sobre isso), mas muitos clientes ainda utilizam essa documentação.
Como no repasse de tarefas se fazia necessário colocar explicitamente todos os parâmetros e muitas vezes são muitos e muitos, criei essa consulta que facilita e muito a vida, afinal eu só executava, copiava e colava no documento, estava pronto!
Uma coisa que vi e que ele busca pelo descriptive_flexfield_name, não sei ainda qual e a relação com o programa concorrente mas busco esse cara na tela do EBS mesmo antes de executar essa consulta.
SELECT end_user_column_name parametro , (SELECT flex_value_set_name FROM fnd_flex_value_sets WHERE flex_value_set_id = a.flex_value_set_id) conjunto_valores , required_flag obrigatorio , display_flag exibido , display_size tamanho , form_left_prompt prompt , srw_param indicacao , DECODE(default_type , 'C', 'Constante' , 'S', 'Instrução SQL' , 'P', 'Perfil' , 'A', 'Segmento') tipo_default , default_value valor_default , a.* FROM fnd_descr_flex_col_usage_vl a WHERE (application_id = 706) -- ID da aplicacao AND (descriptive_flexfield_name = '$SRS$.WICDOL') ORDER BY column_seq_num
Verificar programas concorrentes que estão rodando
Esta consulta retorna a lista dos concorrentes em execução no momento. É possível consultar outras fases.
SELECT f.request_id ,u.user_name ,u.description ,p.user_concurrent_program_name ,f. request_date ,f.status_code ,f.phase_code ,f.actual_start_date ,f.actual_completion_date ,TRUNC((f.actual_completion_date - f.actual_start_date) * 24 * 60, 2) segundos ,f.argument_text ,f.resubmit_interval ,f.resubmit_interval_unit_code FROM fnd_concurrent_requests f, fnd_concurrent_programs_tl p, fnd_user u WHERE u.user_id = f.requested_by AND f.concurrent_program_id = p.concurrent_program_id AND p.language = 'PTB' AND f.status_code = 'R' ORDER BY f.actual_start_date DESC;
Ações com programas concorrentes
Abaixo algumas ações posíveis via SQL para modificar o status dos concorrentes.
Finalizar um concorrente
UPDATE fnd_concurrent_requests SET phase_code='C', status_code='X' WHERE request_id IN (127862155)
Resubmeter um concorrente
UPDATE fnd_concurrent_requests SET phase_code='P', status_code='I' WHERE request_id IN (127862031)
Alterar prioridade de um concorrente
UPDATE fnd_concurrent_requests SET priority = 47 WHERE request_id IN (81496150) AND xs34 phase_code = 'P' AND status_code = 'I' AND requested_by = 1262;
Buscar a descrição do Status da Ordem e da Linha da Ordem de Venda (FLOW_STATUS_CODE)
Já perdi muito tempo procurando isso, para saber quais os possíveis status da Ordem de Venda ou da Linha da Ordem de venda. Tá aí, fácil, fácil. Difícil é entender pra que servem cada um deles, afinal, são muitos!
SELECT * FROM oe_lookups a WHERE a.lookup_type = 'FLOW_STATUS' -- Header OR a.lookup_type = 'LINE_FLOW_STATUS' -- Linha
Buscar Lista de Valores onde a tabela é utilizada
Essa é uma consulta que sempre utilizo quando preciso encontrar uma lista de valores já pronta para algum parâmetro que irei utilizar num programa concorrente ou até mesmo para uma lista em um flexfield. O que a consulta faz é retornar quais as listas de valores que trazem informações de uma determinada tabela.
SELECT b.flex_value_set_name , a.application_table_name , a.value_column_name , a.value_column_type , a.value_column_size , a.id_column_name , a.id_column_type , a.id_column_size , a.meaning_column_name , a.meaning_column_type , a.meaning_column_size , a.additional_where_clause FROM FND_FLEX_VALIDATION_TABLES a , FND_FLEX_VALUE_SETS b WHERE a.flex_value_set_id = b.flex_value_set_id AND UPPER(APPLICATION_TABLE_NAME) LIKE '%GME_BATCH_HEADER%'
Por hoje é s s s s sóóó p p p p pe pee pessoal.
alguém conhece de MRA ?
Parabéns, muito bom, excelente
Bom dia.
Sobre alteração de Status utilizei a API abaixo, com isso evitando update direto na tabela
Exemplo:
IF fnd_concurrent.set_completion_status
( status => ‘WARNING’
, message => ‘log’
) THEN
fnd_file.put_line( which => fnd_file.log
, buff => ‘status to WARNING’);
END IF;
Perfeito Diego!
Muito útil! Obrigado!