在 Oracle EBS R12.2 中,要將一個 Report(並行程式 / Concurrent Program)設定給特定的 職責(Responsibility)使用,核心邏輯是將該程式加入到該職責所綁定的 要求群組(Request Group) 中。
完整Report對Responsibility的設定步驟:
第一步:查詢職責所使用的「要求群組」
- 登入 EBS,切換至 System Administrator(系統管理員)職責。
- 點選路徑:Security > Responsibility > Define。
- 按下快捷鍵
F11進入查詢模式,在 Responsibility Name 輸入你想設定的職責名稱(例如:Application Developer),再按Ctrl + F11進行查詢。 - 找到該職責後,注意右下角的 Request Group 區塊,記下 Name(名稱)與 Application(應用程式名稱)。
第二步:將 Report 加入該「要求群組」
- 在 System Administrator 職責下,點選路徑:Security > Responsibility > Request。
- 按下
F11,在 Group 輸入剛剛記下的要求群組名稱,在 Application 輸入對應的應用程式,按Ctrl + F11查詢出來。 - 查詢出該群組後,將游標點擊到下方的 Requests 清單表格中。
- 點選上方工具列的
+(New) 新增一筆資料:- Type (類型):選擇 Program(並行程式)。
- Name (名稱):輸入或開窗選擇(LOV)你的 Report 名稱(Concurrent Program 的 User Program Name)。
- Application (應用程式):系統會自動帶出該 Report 所屬的應用程式。
- 點選工具列的 Save (儲存) 圖示,或按下
Ctrl + S存檔。

第三步:驗證設定
- 切換至剛剛設定的 目標職責。
- 點選路徑:View > Requests > Submit a New Request。
- 選擇 Single Request,在 Name 的開窗(LOV)中查詢,確認是否已經可以看到並執行該 Report。
限制特定使用者(User)才能執行該 Report
EBS 的權限控管通常「到職責(Responsibility)為止」,無法直接在 Request Group 裡指定某個 User。要達到「只有特定 User 能跑」的目的,業界通常有以下兩種做法:
做法 A:利用「Form Function Security」(標準且最推薦)
這是最優雅的作法,不用額外建立職責,直接把報表包成一個選單功能(Function),再透過 Menu 排除或包含。
- 建立 Function:
- 路徑:
System Administrator > Application > Function - Description 頁籤: Function 名稱輸入
XX_MY_REPORT,User Function Name 輸入好辨識的名稱。 - Properties 頁籤: Type 選擇
SUBMIT_REQUEST。 - Form 頁籤: 留空。
- Web HTML / Parameters 頁籤: 在 Parameters 欄位輸入:
CONCURRENT_PROGRAM_NAME="你的程式代碼" PROGRAM_APPL_SHORT_NAME="你的應用產品縮寫"。
- 路徑:
- 掛載至選單: 將這個 Function 掛到該使用者專屬的 Menu 中,或者掛在共用 Menu,但利用 Responsibility Exclusions 功能,把不允許執行的職責排除掉。
做法 B:在 Concurrent Program 中寫客製化檢核(最直覺、開發常用)
如果不想動到 Menu 設定,可以直接在報表的執行檔(例如:PL/SQL 預存程序或 Report 的 Before Report Trigger)中加入程式碼,強行檢查目前的登入 User。
範例邏輯
PLSQL
-- 在程式初始化時檢核
IF FND_GLOBAL.USER_NAME NOT IN ('USER1', 'USER2') THEN
-- 拋出錯誤訊息,並將 Concurrent 狀態設為 Error
FND_MESSAGE.SET_NAME('FND', 'FND_GENERIC_MESSAGE');
FND_MESSAGE.SET_TOKEN('MESSAGE', '您沒有權限執行此報表!');
APP_EXCEPTION.RAISE_EXCEPTION;
END IF;設定 Report 的參數預設值(Default Value)
參數預設值是在 Concurrent Program 的參數畫面中設定:
- 進入設定畫面:
- 路徑:
System Administrator > Concurrent > Program
- 路徑:
- 找到您的報表: 按
F11輸入報表名稱後Ctrl + F11查詢。 - 進入參數設定: 點選下方的 Parameters 按鈕。
- 設定預設值: 點選你想設定的參數,找到右下角的 Default Value 區塊:
- Default Type(預設類型):
Constant(常數):直接寫死一個值(例如:100或Y)。Current Date/Current Time:自動帶入當天日期或時間。SQL Statement:透過 SQL 動態抓取(例如:抓取當前使用者的預設庫存組織:SELECT organization_code FROM ...)。Profile:帶入系統設定值(例如:$PROFILE$.ORG_ID帶入目前 OU 的 ID)。
- Default Value(預設值): 根據你選的 Type,輸入對應的數值或 SQL 語法。
- Default Type(預設類型):
- 存檔 (Ctrl + S)
處理 Report 執行後輸出格式(PDF/Excel)
設定輸出格式取決於您的報表開發技術(是傳統的 Oracle Report .rdf 還是 BI Publisher / XML Publisher)。
1. 如果是 BI Publisher (XMLP) 報表(最常見)
如果您的報表是透過 BI Publisher 掛載 RTF 樣板產出的:
- 預設 PDF / Excel:
- 切換至職責:XML Publisher Administrator。
- 導航路徑:
Templates,查詢您的報表樣板(Template)。 - 在 Template 詳細畫面中,找到 Default Output Type,將其修改為
PDF或Excel。
- 允許使用者送出時自己選:
在提交請求(Submit Request)畫面中,點選 Options…(選項) 按鈕,在 Format 欄位使用者可以自由切換 PDF、Excel、HTML 等。
2. 如果是傳統 Oracle Report (RDF)
傳統報表如果想直接輸出成 Excel,通常需要透過 Concurrent Program 本身的設定調整:
- 路徑:
System Administrator > Concurrent > Program。 - 查詢到該報表後,在主畫面找到 Output 區塊。
- Format(格式):
- 若要輸出成網頁/Excel 可讀格式,通常會選
HTML。 - 若是配合特殊工具(如 Text/CSV 轉 Excel),則選
Text。 - 注意:傳統 RDF 報表無法在這裡直接選取「PDF」,若要轉 PDF 通常必須走 XML Publisher 重新綁定樣板。
- 若要輸出成網頁/Excel 可讀格式,通常會選




