chamar API via Forms

Perguntas relacionadas a questões técnicas do Oracle EBS. Criação de Concorrentes, Value Sets, Alerts, Forms Personalizations, Configurações, etc
Responder
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

bom dia Pessoal,
desenvolvi um Forms customizado para o EBS e estou tentando fazer uma chamada a uma APi de ajuste de estoques.

Quando faço a chamada através de um programa concorrente, funciona normalmente.

Mas quando faço a chamada via Forms, ocorre o erro:

Selecionar tudo

User-Defined Exception na Embalagem GMIGAPI Procedimento G_Inventory_Post
Tem algum segredinho ai para chamar via Forms ???

Coloquei uma triger no botão do forms para chamar a procedure assim:

Selecionar tudo

PCN_PROCESSA_INVENTARIO(:REGISTRO);
O cabeçalho da procedure é assim:

Selecionar tudo

PROCEDURE PCN_PROCESSA_INVENTARIO (p_registro  IN   number)
.......


obrigado,
Marlon
paulochagas
Moderador
Moderador
Mensagens: 86
Registrado em: Qua, 15 Mar 2006 2:46 pm
Localização: São Paulo - SP
Paulo Chagas Filho
__________________

Analista Funcional / Desenvolvedor Oracle EBS
MSN - paulochagas@hotmail.com
Gtalk - pachafi@gmail.com
Skype - paulochagas

E ai cara beleza?

Pode postar o erro completo?
me parece que a API que você tentar chamar é a GMIGAPI.Inventory_Posting(). Mas não está muito claro.

Esse forms é executado a partir do EBS, com o usuario APPS?
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

Tenho um Forms que roda fora do Applications. Estou conectando este form com o usuario do APPS.
Está ocorrendo o erro:

Selecionar tudo

User-Defined Exception na Embalagem GMIGAPI Procedimento G_Inventory_Post
Coloquei uma triger no botão do forms para chamar a procedure assim:

Selecionar tudo

PCN_PROCESSA_INVENTARIO(:REGISTRO);


O cabeçalho da procedure é assim:

Selecionar tudo

PROCEDURE PCN_PROCESSA_INVENTARIO (p_registro  IN   number)

       -- executa api MOVIMENTAÇAO IMEDIATA

         l_qty_rec.trans_type           := 2;  --- tipo 2 ajuste

         l_qty_rec.item_no              :=reg.produto;

         l_qty_rec.from_whse_code       :=reg.deposito;

         l_qty_rec.to_whse_code         :=reg.deposito;

         l_qty_rec.item_um              :=reg.unidade;

         l_qty_rec.item_um2             :=reg.unidade;

         l_qty_rec.lot_no               :=v_lot_no;   ----reg.lote;

         l_qty_rec.from_location        :=reg.endereco;

         l_qty_rec.to_location          :=reg.endereco;

         l_qty_rec.trans_qty            := (V_ALOCAR * -1);

         l_qty_rec.co_code              :='PCN';

         l_qty_rec.orgn_code            :='ERE';

         l_qty_rec.trans_date           := sysdate;

         l_qty_rec.reason_code          :='POST';

--         l_qty_rec.move_entire_quantity :='Y';

         l_qty_rec.lot_status           :=reg.status_lote;

         l_qty_rec.attribute1           :='11';  --- motivo 11 (Diferença no estoque - Contagem) para registro no flexfield

         l_qty_rec.attribute2           :='Ajuste Ref. Contagem de Inventario nr: '|| reg.registro;  --- para registro no flexfield2 (Detalhamento do Ajuste)

         l_qty_rec.user_name            :='FAUSTO.CITOLIN';

 

         GMIPAPI.Inventory_Posting ( p_api_version      => 3.0, --apps.GMIGUTL.API_VERSION,

                                                              p_init_msg_list    => FND_API.G_TRUE,

                                                              p_commit           => FND_API.G_TRUE,

                                                              p_validation_level => FND_API.G_VALID_LEVEL_FULL,

                                                              p_qty_rec          => l_qty_rec,

                       x_ic_jrnl_mst_row  => L_ic_jrnl_mst_row,

                       x_ic_adjs_jnl_row1 => L_ic_adjs_jnl_row1,

                       x_ic_adjs_jnl_row2 => L_ic_adjs_jnl_row2,

                       x_return_status    => pr_return_status,

                                                              x_msg_count        => pr_message_count,

                                                              x_msg_data         => pr_message_data);
paulochagas
Moderador
Moderador
Mensagens: 86
Registrado em: Qua, 15 Mar 2006 2:46 pm
Localização: São Paulo - SP
Paulo Chagas Filho
__________________

Analista Funcional / Desenvolvedor Oracle EBS
MSN - paulochagas@hotmail.com
Gtalk - pachafi@gmail.com
Skype - paulochagas

Acho que entendi o problema
você tem que rodar a inicialização de contexto
Coloca isso logo após o begin da tua procedure:

Selecionar tudo

APPS.FND_GLOBAL.APPS_INITIALIZE(v_user_id  -- USER_ID
                               ,v_RESP_id -- RESP_ID
                               ,v_RESP_APPL_id); -- RESP_APPL_ID

Onde:
v_user_id = ID do usuario do APPS que você usa para disparar o concurrent.
v_RESP_id = ID da responsabilidade usada para disparar o concurrent.
v_RESP_APPL_id = ID da aplicação associada a responsabilidade.
marlonpasquali
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 248
Registrado em: Sex, 06 Fev 2009 3:02 pm
Localização: ERECHIM - RS

beleza Paulo,
Era isso mesmo.
Muito obrigado pela ajuda.

Marlon
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 3 visitantes