Fazer upload de arquivo no Oracle EBS R11

Perguntas relacionadas a questões técnicas do Oracle EBS. Criação de Concorrentes, Value Sets, Alerts, Forms Personalizations, Configurações, etc
  

Mensagemem Sex, 11 Out 2013 10:49 am

Bom dia Pessoal.

Preciso desenvolver uma customização no Oracle EBS R11 que importa um arquivo da maquina local para dentro da aplicação. Alguém pode me indicar uma maneira pratica e tranquila de se resolver esse problema? Fico no aguardo;

Obrigado
elton.souza

Mensagemem Sex, 11 Out 2013 11:21 am

Acredito que a maneira mais fácil de fazer isso é utilizar os Attachments.
Repare que existe um Clip na toolbar.
http://crmweba.wgresorts.com/wiki/image ... hments.pdf
e
http://docs.oracle.com/cd/E18727_01/doc ... 458262.htm

Ali serve pra você anexar coisas.
É possível criar um programa que permita anexos.
Na minha opinião, é a maneira mais fácil.

O arquivo vai ficar disponível na fnd_lobs;

Existem algumas packages, api pra cuidar disso:
Código: Selecionar todos
fnd_attached_documents_pkg
fnd_webattch.add_attachment


Eu tenho aqui um programa que faz o contrário do que você precisa:
Ele pega os arquivos de um diretório no servidor e CRIA uma linha nos attachments de um item de inventário.
(no caso, é a figura do item de inventário). Vou postar aqui, talvez ajude.
Código: Selecionar todos
declare
  l_blob blob := EMPTY_BLOB();
  l_bfile bfile;
  l_rowid varchar2(50);
  l_attac_doc_id number;
  l_document_id number;
  l_user_id number := fnd_global.user_id;
  l_media_id number;
  l_file_id number;
  lv_exists number:=0;
  lv_name varchar2(100);
  lv_dir varchar2(100);
  v_access_id   NUMBER;
  x_access_id   NUMBER;
  v_file_id     NUMBER;
  x_file_id     NUMBER;
  x_errbuf      VARCHAR2 (200);
  v_filename VARCHAR2 (200);
begin
-- fnd_global.apps_initialize (1318, 20420, 1);

   for C in (select attribute2, SEGMENT1, INVENTORY_ITEM_ID from MTL_SYSTEM_ITEMS_B
             where segment1 = '0060527'
             and organization_id = 84) loop
             
     l_bfile := bfilename( 'DIR_PICTURES', nvl(c.attribute2,c.segment1)||'.jpg'); 
     LV_EXISTS := DBMS_LOB.FILEEXISTS(L_BFILE);
     DBMS_LOB.FILEGETNAME(L_BFILE, LV_DIR, LV_NAME);

      if LV_EXISTS = 1 then   
          --
          L_ROWID := null;
          --   
          select APPLSYS.FND_ATTACHED_DOCUMENTS_S.NEXTVAL
            into L_ATTAC_DOC_ID
            from DUAL;
          --
          l_document_id := null;
          L_MEDIA_ID := null;
          V_ACCESS_ID := FND_GFM.AUTHORIZE (null);
          X_ACCESS_ID := V_ACCESS_ID;
          --           
          fnd_attached_documents_pkg.insert_row(l_rowid,
                                     l_attac_doc_id,
                                     l_document_id,
                                     sysdate,
                                     l_user_id,
                                     sysdate,
                                     l_user_id,
                                     null,                          -- last update login
                                     999,                            -- seq num
                                     'MTL_SYSTEM_ITEMS',
                                     null,                          --column1
                                     '84', --pk1_value
                                     to_char(c.inventory_item_id),
                                     null,null,null,           -- pk*_value
                                     'N',                           -- Automatic Added
                                     null,null,null,null,
                                     null,null,null,null,
                                     null,null,null,null,
                                     null,null,null,null,
                                     null,null,null,null,                               
                                     --
                                     6,             -- DATATYPE_ID
                                     1,             -- CATEGORY_ID       
                                     1,             -- secutity_type
                                     84,          -- security_id
                                     'Y',           -- publish_flag
                                     null,
                                     null,
                                     'O', -- usage type
                                     'PTB',
                                     null,
                                     lv_name, -- FILENAME
                                     l_media_id,
                                     null,null,null,null,
                                     null,null,null,null,
                                     null,null,null,null,
                                     null,null,null,null,
                                     'N',
                                     null,
                                     null );                               
                                     --
                                     delete FND_LOBS_DOCUMENT
                                     where name = lv_name;
                                    --
                                     insert into fnd_lobs (file_id, file_name, file_content_type, file_data,
                                                           LANGUAGE, ORACLE_CHARSET, FILE_FORMAT)
                                     values (l_media_id, lv_name, 'image/jpeg', EMPTY_BLOB(), 'PTB','WE8MSWIN1252','binary' )
                                     returning FILE_DATA into L_BLOB;
                           
                          --
                          DBMS_LOB.FILEOPEN( L_BFILE );
                          DBMS_LOB.LOADFROMFILE( L_BLOB, L_BFILE, DBMS_LOB.GETLENGTH( L_BFILE ) );
                          DBMS_LOB.FILECLOSE( L_BFILE ); 
                         
               commit;
         else
           rollback;
        end if;
    end loop;
end;
/






Talvez tenha como fazer uma coisa totalmente customizada em Java (OAF), mas acredito que é bem pior.
dr_gori
Localização: Seattle, WA, USA

Thomas F. G

Mensagemem Seg, 14 Out 2013 3:42 pm

Amigo, boa tarde. Tudo bem?

Então é seguinte, o que você me explicou já me deu uma luz porém vi que é possível fazer isso com o OPEN DIALOG, ou seja, abrindo uma caixa de dialogo no windons, só que pesquisando na net encontrei umas soluções e o código está dando um erro nessa Trigger (WHEN-CUSTOM-ITEM-EVENT) no Forms 6 falando que é preciso declarar ela, verificando eu vi que não tem essa trigger na lista de Triggers do Item. Você sabe me dizer se tenho que instalar alguma Lib ou algo do tipo?

Obrigado e fico no aguardo.

Abraços
elton.souza

Mensagemem Seg, 14 Out 2013 4:23 pm

Eu acho que essa é uma trigger customizado. (não é padrão). O EBS tem isso.
Você ta usando um Template do EBS pra criar esse form?
dr_gori
Localização: Seattle, WA, USA

Thomas F. G

Mensagemem Ter, 15 Out 2013 8:43 am

Olá bom dia. Sim eu usei um tamplate do EBS para criar esse forms. Porém essa funcionalidade de fazer o Open Dialog do arquivo para dentro do EBS eu verifiquei que no modulo HR no cadastro de Pessoas é possível fazer isso quando vai cadastrar a foto do funcionario. Pensando nisso eu peguei esse forms do modulo do HR no servidor de aplicação e estou tentando fazer a mesma coisa no meu forms seguindo a mesma ideia, porém está dando esse erro muito estrando a trigger deve ser declarada. Você tem ideia?

Obrigado
elton.souza

Mensagemem Ter, 15 Out 2013 8:54 am

Você sabe me dizer se no módulo do HR ele abre uma tela FORMS pra fazer o upload ?
Normalmente pra fazer esse tipo de coisa é disparada uma tela JAVA. (como no caso dos anexos)
dr_gori
Localização: Seattle, WA, USA

Thomas F. G

Mensagemem Ter, 15 Out 2013 9:20 am

O processo no HR ocorre como no anexo: É um forms que se abre. E eu preciso fazer exatamente isso no meu forms customizado.
Anexos
print.jpg
Open Dialog no HR
elton.souza

Mensagemem Ter, 15 Out 2013 9:57 am

Eu nunca tinha visto uma tela assim no EBS. Sempre achei que TODO upload de arquivos era feito por telas java. (Vivendo e aprendendo! :-) )

Então, parece que esse programa usa a WEBUTIL. (que é a nova D2KWUTIL).
Eu acho que o jeito é olhar o que tem dentro desse botão, ver mesmo se usam a WEBUTIL. (sempre achei que ela não era instalada no EBS). Depois me passa o nome desse programa, fiquei curioso. Vou abrir ele aqui!

Se for o caso, aqui tem um exemplo de UPLOAD utilizando WEBUTIL. (mas acho que não é o caso).
https://sites.google.com/site/craigsora ... into-forms
dr_gori
Localização: Seattle, WA, USA

Thomas F. G

Mensagemem Ter, 15 Out 2013 10:12 am

Então amigo, pois é no EBS R12 é através de telas java mesmo, mas no EBS R11 não tem essa funcionalidade. A funcionalidade é do jeito que te mostrei no anexo. Eu tinha lido algo ar respeito desse Web Ultil mesmo, porém n consegui entender muito bem o que é e como instalar.... você conseguiria me dar uma explicação mais detalhada sobre isso?

Obrigado
elton.souza


  • Veja também
    Respostas
    ExibiÇões
    Última mensagem


Voltar para EBS Técnico

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante