PIXNET Logo登入

oracle園地

跳到主文

這裡是到處搜括來的ORACLE技術及文章,也有自己發表的文章,希望大家可以互相討論! PS-若有侵權,請告知哦.

部落格全站分類:職場甘苦

  • 相簿
  • 部落格
  • 留言
  • 名片
  • 7月 29 週三 200917:41
  • 提交處理事務處理介面請求

--- 提交處理事務處理介面請求
l_request_id := FND_REQUEST.SUBMIT_REQUEST(
APPLICATION => 'INV',
PROGRAM => 'INCTCM'
);
IF ( l_request_id = 0 ) THEN
RAISE E_SUBMIT_FAILED;
RETURN;
ELSE
COMMIT;
L_REQUEST_FLAG := FND_CONCURRENT.WAIT_FOR_REQUEST(
REQUEST_ID => L_REQUEST_ID,
INTERVAL => 5,
MAX_WAIT => 0,
PHASE => L_PHASE,
STATUS => L_STATUS,
DEV_PHASE => L_DEV_PHASE,
DEV_STATUS => L_DEV_STATUS,
MESSAGE => L_MESSAGE
);
END IF;
COMMIT;
EXCEPTION
WHEN E_SUBMIT_FAILED THEN
ERRCODE := '1';
ERRMSG := '提交處理事務處理介面請求失敗!'||SUBSTR(SQLERRM,1,100);
FND_FILE.PUT_LINE(FND_FILE.LOG,ERRMSG);
ROLLBACK;
RETURN;
END;
今天關注到這個問題,將找到的資料收集在這裏:
1、關於fnd_request.submit_request的用法
fnd_request.submit_request的用法:
FND_REQUEST.SUBMIT_REQUEST 函數是用來提交一個請求的,它返回一個NUMBER值.具體調用如下
:result := fnd_request.submit_request(application CHAR, --AP模快
program CHAR, --應用程式
description CHAR, --請求說明(可選)
start_time CHAR, --RUN 時間(可選)
sub_request BOOLEAN, --立刻提交請求
argument1 CHAR, --參數1
argument2 CHAR, --參數2
argument3 CHAR, --參數3
argument4 CHAR, --參數4
argument5 CHAR, --參數5.......
argument100 CHAR);
英文說明(zt oracle) :
Parameters are as follows:
application - Short name of the application associated with the concurrent
request to be submitted.
program - Short name of the concurrent program (not the executable) for which
the request should be submitted.
description - Description of the request that is displayed in the Concurrent
Requests form (Optional.)
start_time - Time at which the request should start running, formatted as HH24:
MI or HH24:MI:SS (Optional.)
sub_request - Set to TRUE if the request is submitted from another request and
should be treated as a sub-request.
argument1...100 - Arguments for the concurrent request; up to 100
arguments are permitted. If submitted from Oracle Forms, you must specify all
100 arguments.
補充說明:
在用fnd_request.submit_request的時候,第五個參數用false,不要被參數名稱誤導;
這個函數有105個參數,前面五個定義請求本身,後面100個是傳遞給請求的具體參數,都是Char類型,
我們需要轉換,預設值是chr(0),代表這個參數不用傳遞給調用的請求;
在Package裏面調用只需要傳遞需要的參數個數,因為它有預設值指示結束;
在form裏面則不行,要寫滿105個,而且我們參數結束之後要用一個chr(0)來表示結束
例
fnd_request.submit_request('AR',
'SVAINEX_P',
'',
'',
FALSE,
:parameter.invoice_store,
chr(0),
'','','',
'','','','','','','','','','','','','','','','','','','','',
'','','','','','','','','','','','','','','','','','','','',
'','','','','','','','','','','','','','','','','','','','',
'','','','','','','','','','','','','','','','','','','','',
'','','','','','','','','','','','','','','');
2、Oracle Erp等待報表運行機制
主要是用到了Fnd_concurrent.wait_for_ruqest這個function.
Fnd_concurrent.wait_for_request返回Boolean值,主要參數如下:
function FND_CONCURRENT.WAIT_FOR_REQUEST
(request_id IN number default NULL, --請求ID
interval IN number default 60, --檢查時間間隔
max_wait IN number default 0, --最大等待時間
phase OUT varchar2,
status OUT varchar2,
dev_phase OUT varchar2, --請求運行階段
dev_status OUT varchar2, --各個階段狀態
message OUT varchar2 --運行完成後輸出資訊)
return boolean;
dev_phase有Pending,Running,Complete,Inactive等幾種,每種對應不同的Dev-Status,比如Complete階段後就有Normal,Error,Warning,Cancelled,Terminated等幾種狀態。
例如: l_request_status := Fnd_Concurrent.Wait_For_Request(l_request_id,
5,
0,
l_phase,
l_status,
l_dev_phase,
l_dev_status,
l_message);
IF l_request_status THEN
IF l_dev_status = 'NORMAL' THEN
NULL;
ELSE
Fnd_Message.Debug('請求運行不成功:'||l_dev_status);
RETURN;
END IF;
ELSE
Fnd_Message.Debug('請求未完成,無法查看報表內容!');
RETURN;
END IF;
Editor_Pkg.Report(l_request_id,'Y');
總結:FND_REQUEST.SUBMIT_REQUEST是一種通過後臺方式提交請教的方法,可以在pkg和form中使用,在form中使用要將參數寫全。 FND_CONCURRENT.WAIT_FOR_REQUEST是一個等待當前請求運行完畢的程式,可以利用這個等待當前的請求程式運行完畢再運行下面的程式。
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(15) 人氣(5,556)

  • 個人分類:Oracle Form
▲top
  • 3月 17 週二 200916:13
  • SET_BLOCK_PROPERTY - DEFAULT_WHERE應用

假設我們現在要查 員工編號在 1000~2000 之間,且姓王的員工
<查詢畫面>
Block Name : B_QUERY_FIND
Item Name : emp_name "
員工姓名" , emp_no_beg "員工編號起" , emp_no_end "員工編號迄"
<
主畫面>
Block Name : B_MAIN
Item Name : emp_name "
員工姓名" , emp_no "員工編號"
因為兩個 Block 的員工姓名資料是可以 maping 的,
在 B_MAIN 的 block level trigger : PRE-QUERY 中加上
copy( :B_QUERY_FIND.EMP_NAME , 'B_MAIN.EMP_NAME' );
如此不管在 :B_QUERY_FIND.EMP_NAME 打完整名稱,或以 % 來查詢都可以
因為員工編號的查詢條件是以區間來查詢,所以在  FIND Button 中處理
declare
   ls_where         varchar2(1000);
   ls_this_where    varchar2(1000);
begin
   if     :b_query_find.emp_no_beg is null
      and :b_query_find.emp_no_end is null
   then
      :parameter.g_query_find := 'FALSE';
      Fnd_Message.Set_Name('FND','You Must Enter Employee Number !!');
      Fnd_Message.Error;
   else
      ls_where := GET_BLOCK_PROPERTY('B_MAIN',DEFAULT_WHERE);
      if  ls_where is null
      then
         ls_this_where := '1=1 ';
      else
         ls_this_where := ls_where;
      end if;
      if    :b_query_find.emp_no_beg is not null
      then
         ls_this_where := ls_this_where||' and emp_no >= :b_query_find.emp_no_beg';
      end if;
      if    :b_query_find.emp_no_end is not null
      then
         ls_this_where := ls_this_where||' and emp_no <= :b_query_find.emp_no_end';
      end if;
      SET_BLOCK_PROPERTY(''B_MAIN',DEFAULT_WHERE,LS_THIS_WHERE);
      app_find.find('B_MAIN');
      SET_BLOCK_PROPERTY('B_MAIN',DEFAULT_WHERE,LS_WHERE);
   end if;
end;
:parameter.g_query_find := 'FALSE';
以此例而言 :
:B_QUERY_FIND.EMP_NAME := '
王%'
:B_QUERY_FIND.EMP_NO_BEG := '1000'
:B_QUERY_FIND.EMP_NO_END := '2000'
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(3,717)

  • 個人分類:Oracle Form
▲top
  • 3月 02 週一 200916:17
  • FORM 簡易開發流程(轉)

製作登入、資料登錄畫面,按鈕觸發:      
      When-Button-Pressed  
        要實現下面幾個功能。        1。保存功能   :   輸入資料以後,按此按鈕保存到對應變數裏。  
        2。消除功能   :   消除所有輸入,恢復到原始狀態  
        3。輸出功能   :   將此表輸出到C:\aaa  
        4。翻頁功能   :   pageup   翻到上個畫面,pagedown下個畫面。  
        5。數據登入   :   順序排列,比如輸入   D,B,C,A   登陸時候按照A,B,C,D   排列  
        6。條件判斷   :   比如A項必須填寫,否則彈出錯誤對話方塊;如果填寫B項,但是資料庫裏面沒有B,也彈出對話方塊。  
        7。可能出現的錯誤、問題和bug。  
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(9) 人氣(9,507)

  • 個人分類:Oracle Form
▲top
  • 2月 17 週二 200916:15
  • 查詢FORM中F11,F12按鈕功能的小探討

查詢FORM中F11,F12按鈕功能的小探討
     在咱們ERP系統中,F11和F12按鈕是大家經常使用的,它們給查詢工作帶來了很多方便。但是在開發的查詢FORM中若不做任何設置,F11和F12按鈕的作用就沒有完全體現出來了。
如當你輸入了查詢條件點擊“FIND”按鈕後得到了你想要的一些記錄,然後針對這些記錄我們想繼續進行相關條件的查詢(F11按鈕功能)或者想查詢記錄的數目(F12按鈕功能)。但如果未做任何設置,F11和F12功能將在查詢結果塊所在資料源的範圍內查詢而不是你輸入查詢條件查到的結果內查詢,這顯然沒有實現我們想要的功能。
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(1,837)

  • 個人分類:Oracle Form
▲top
  • 12月 17 週三 200816:47
  • D2K FORM 讀存檔

讀檔

PROCEDURE echo_file_contents IS
in_file Text_IO.File_Type;
linebuf VARCHAR2(1800);
filename VARCHAR2(30);
BEGIN
filename:=GET_FILE_NAME(’c:\temp\’, File_Filter=>’Text Files (*.txt)|*.txt|’);
in_file := Text_IO.Fopen(filename, ‘r’);
LOOP
Text_IO.Get_Line(in_file, linebuf);
:text_item5:=:text_item5||linebuf||chr(10);
END LOOP;
EXCEPTION
WHEN no_data_found THEN
Text_IO.Put_Line(’Closing the file…’);
Text_IO.Fclose(in_file);
END;


(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(7) 人氣(5,724)

  • 個人分類:Oracle Form
▲top
  • 9月 08 週一 200816:09
  • 在server run 修改D2K程式的步驟

 在server run 修改D2K程式的步驟 : 1.先將檔案上傳至ORACLE SERVER上
  例 : /oracle/testmgr1/cherpdv1appl/au/11.5.0/forms/US
   ps: 必須是fmb的檔案 2.在開始WINDOWS→執行→輸入CMD→畫面將打開DOS
  2.1 輸入Telnet 10.12.25.23
      ps: 10.12.25.23 為oracle主機檔案存放的ip位置,在此為例
  2.2 輸入登入的帳號及密碼
      ps: 登入oracle主機伺服器的帳密
  2.3 輸入檔案路徑
      cd $AU_TOP/forms/US
  2.4 輸入要compiler的檔名
      例 : tinvcom 檔名
      ps : tinvcom模組名稱
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(1,542)

  • 個人分類:Oracle Form
▲top
  • 9月 08 週一 200813:46
  • LOV在欄位上的應用

1.透過PL-SQL直接叫系統已設的LOV用法 :
 DECLARE
a_value_chosen BOOLEAN;
BEGIN
go_block('sis_registration');
enter_query(no_validate);
a_value_chosen := Show_Lov('lovreg');
IF NOT a_value_chosen THEN
Message('You have not selected a value.');
RAISE Form_Trigger_Failure;
else
execute_query;
END IF;
END;
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(1,750)

  • 個人分類:Oracle Form
▲top
  • 9月 08 週一 200813:39
  • Oracle ERP系統工具欄上ZOOM按鈕的開發

 在 ERP 標準 custom.pll 文件中,填寫下麵類似代碼:
FUNCTION zoom_available RETURN BOOLEAN IS
form_name  varchar2 ( 30 ) := name_in( 'system.current_form' );
 block_name varchar2 ( 30 ) := name_in( 'system.cursor_block' );
BEGIN
 if (form_name = 'WIPDJMDF' ) then
return TRUE ;
 elsif (form_name = 'POXSCASL' and block_name = 'ASL_SUPPLIERS' ) then
return TRUE ;
else
return FALSE ;
end if ;
 END zoom_available; 上段代碼表示我們在 form_name 為:“ WIPDJMDF ”,“ POXSCASL ”的時候 ZOOM 按鈕可用 ;
 然後在自己定義的 pll 文件中響應 ZOOM 按鈕:
procedure event(event_name varchar2 ) is
Form_Name  Varchar2 ( 30 ) := Name_In( 'system.current_form' );
Block_Name  Varchar2 ( 30 ) := Name_In( 'system.current_block' );
Item_Name  Varchar2 ( 30 ) := Name_In( 'system.current_item' );
Form_Status  Varchar2 ( 30 ) := Name_In( 'system.form_status' );
 l_Record_Status Varchar2 ( 30 ) := Name_In( 'system.record_status' );
v_Stage Varchar2 ( 1000 );
v_item_id number ;
V_vendor_name varchar2 ( 300 );
 Begin /*when form. instance*/
DEFAULT_VALUE( null , 'GLOBAL.XXUTS_MFG_REVISION_MPN' );  /* 全局參數 */
 if (event_name = 'ZOOM' and form_name = 'POXSCASL' ) then
v_item_id:=Name_In( 'ASL_ITEMS.ITEM_ID' );
 FND_FUNCTION. EXECUTE ( /* 調用另一 Form*/
function_name=> 'XXUTS_MFG_ITEM_REVISION' ,
 other_params => 'INVENTORY_ITEM_ID =' ||v_item_id);
End if ;
 If (form_name = 'POXSCASL' )  and (event_name = 'WHEN-NEW-ITEM-INSTANCE' ) THEN
if NAME_IN( 'GLOBAL.XXUTS_MFG_REVISION_MPN' ) is not null then
copy(name_in( 'global.XXUTS_MFG_REVISION_MPN' ), 'ASL_SUPPLIERS.PRIMARY_VENDOR_ITEM' );
COPY( null , 'global.XXUTS_MFG_REVISION_MPN' );
end if ;
end if ;
end event;
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(1,207)

  • 個人分類:Oracle Form
▲top
  • 6月 26 週四 200811:41
  • 如何判斷 execute_query 查詢結果是否有記錄?

如何判斷 execute_query 查詢結果是否有記錄? 
IF :SYSTEM.BLOCK_STATUS = 'NEW' THEN
  message('沒有查詢到所要的記錄!!!'); 
END IF;
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(2) 人氣(763)

  • 個人分類:Oracle Form
▲top
  • 6月 26 週四 200811:23
  • 在text檔裡,判斷多少筆數.

在text檔裡,判斷多少筆數.                                11111
                                22222
                                33333
                                44444 begin  
       text_io.get_line(v_in_file,v_linebuf);   
       exit when v_linebuf is null;  
       exception  
       when no_data_found then  
        text_io.fclose(v_in_file);  
           
      exit;         
    end;  
     v_total_count := v_total_count+1;  
  end loop;  
(繼續閱讀...)
文章標籤

oracleD2K 發表在 痞客邦 留言(0) 人氣(629)

  • 個人分類:Oracle Form
▲top
12»

部落格文章搜尋

近期文章

  • oracle table 查表sql
  • 提交處理事務處理介面請求
  • ORALCE開發集
  • 採購到入庫的全過程表
  • JAVA SCRIPT
  • DBA SQL
  • DBA 維護
  • JDeveloper 安裝教學(轉)
  • PO與收料 SQL
  • 其他常用表

文章彙整

文章分類

toggle Oracle Tools (3)
  • Oracle 工具安裝 (2)
  • Oracle Trigger (5)
  • Oracle Form (18)
toggle Oracle SQL (3)
  • ORACLE DBA 指令 (3)
  • Oracle PL/SQL (15)
  • Oracle SQL (15)
toggle ORACLE ERP (8)
  • 採購模組 (2)
  • 其它常用表結構 (1)
  • 工具下載 (1)
  • 財務模組 (1)
  • 製造模組 (2)
  • 庫存模組 (2)
  • 業務模組 (2)
  • 專業知識 (2)
toggle 教學影音檔 (1)
  • 教學影音檔 (12)
  • 其它應用 (1)
  • ORACLE INV (1)
  • 未分類文章 (1)

誰來我家

參觀人氣

  • 本日人氣:
  • 累積人氣:

姓名學