TEC1401.Report開發技術總結
第一章使用PLSQL開發HTML報表
使用PLSQL儲存過程準備好資料來源,並控制輸出的邏輯,最後生成帶HTML標籤的文字輸出,再通過在EBS中設定報表的輸出格式為HTML。
如果熟悉Web前端的設計和開發,我感覺用這種方法很方便。
完全將報表開發轉變成Web開發了,報表的靈活行被無限放大了。
開發示例:
使用PLSQL開發HTML樣式的銷售訂單報表,並通過javascript將資料匯出到Excel中
CREATE OR REPLACE PACKAGE CUX_WX_OMRPT01 IS -- Author : ALLEN -- Created : 2014/5/16 10:46:31 -- Purpose : EBS REPORT TRAINING PROCEDURE MAIN(ERRBUF OUT VARCHAR2, RETCODE OUT VARCHAR2, P_ORDER_FROM IN VARCHAR2, P_ORDER_TO IN VARCHAR2); END CUX_WX_OMRPT01; / CREATE OR REPLACE PACKAGE BODY CUX_WX_OMRPT01 -- Author : ALLEN -- Created : 2014/5/16 10:46:31 -- Purpose : EBS REPORT TRAINING IS c_sprt VARCHAR2(2) := ','; --ouput log PROCEDURE WRITE_LOG(p_log VARCHAR2) IS BEGIN FND_FILE.PUT_LINE(FND_FILE.LOG, p_log); EXCEPTION WHEN OTHERS THEN NULL; END WRITE_LOG; --output content PROCEDURE WRITE_OUTPUT(p_content VARCHAR2) IS BEGIN FND_FILE.PUT_LINE(FND_FILE.OUTPUT, p_content); EXCEPTION WHEN OTHERS THEN NULL; END WRITE_OUTPUT; --BEGIN PROCEDURE MAIN(ERRBUF OUT VARCHAR2, RETCODE OUT VARCHAR2, P_ORDER_FROM IN VARCHAR2, P_ORDER_TO IN VARCHAR2) IS CURSOR getdata_header_cur(p_order_from VARCHAR2, p_order_to VARCHAR2) IS SELECT oh.order_number, --訂單頭 訂單號碼 ot.name, --訂單頭 訂單型別 party.party_name, --訂單頭 客戶名稱 cust.account_number, --訂單頭 客戶程式碼 oh.header_id FROM oe_order_headers_all oh, hz_cust_accounts cust, hz_parties party, oe_transaction_types_tl ot WHERE cust.party_id = party.party_id AND oh.sold_to_org_id = cust.cust_account_id AND oh.order_type_id = ot.transaction_type_id AND ot.language = userenv('LANG') AND oh.org_id = fnd_profile.VALUE('ORG_ID') AND oh.order_number between p_order_from and p_order_to ORDER BY oh.order_number; CURSOR getdata_line_cur(p_header_id NUMBER) IS SELECT ol.line_number || '.' || ol.shipment_number || decode(ol.component_number, null, null, '.') || ol.component_number line_num, --訂單行 行號 ship_from_org.organization_code, --訂單行 倉庫程式碼 ol.ordered_item, --訂單行 商品型號 ol.ordered_quantity, --訂單行 數量 ol.unit_selling_price, --訂單行 銷售單價 ol.ordered_quantity * ol.unit_selling_price amount, --訂單行 銷售金額 ol.flow_status_code, --訂單行 訂單狀態 ol.shipping_method_code --訂單行 發運方法 FROM oe_order_lines_all ol, mtl_parameters ship_from_org WHERE ol.header_id = p_header_id AND ol.ship_from_org_id=ship_from_org.organization_id(+) ORDER BY ol.line_number; BEGIN -- Parameter Log WRITE_LOG('****************************************'); WRITE_LOG('*** Parameter List ***'); WRITE_LOG('****************************************'); WRITE_LOG('P_ORDER_FROM = ' || P_ORDER_FROM); WRITE_LOG('P_ORDER_TO = ' || P_ORDER_TO); WRITE_LOG('****************************************'); --HTML FORMAT start WRITE_OUTPUT('<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html" /> <title>PLSQL生成HTML報表</title> <script type="text/javascript" language="javascript"> function PrintTableToExcel(objTab) { try { var xls = new ActiveXObject( "Excel.Application" ); } catch(e) { alert("要列印該表,您必須安裝Excel電子表格軟體,同時瀏覽器須使用“ActiveX 控制元件”,您的瀏覽器須允許執行控制元件。 請點選【幫助】瞭解瀏覽器設定方法!"); return false; } xls.visible = true; var xlBook = xls.Workbooks.Add; var xlsheet = xlBook.Worksheets(1); var x = 1; var y = 1; for (var i = 0; i < objTab.rows.length; i++) { y = 1; for (var j = 0; j < objTab.rows[i].cells.length; j++) { xlsheet.Cells(x, y).Value = objTab.rows[i].cells[j].innerHTML; xlsheet.Cells(x, y).Borders.LineStyle = 1; y++; } x++; } xlsheet.Columns.AutoFit; //自動適應大小 return; } </script> </head> <body>'); WRITE_OUTPUT('<input type="button" value="匯出至Excel" onclick=PrintTableToExcel(test) />'); WRITE_OUTPUT('<table id="test">'); FOR getdata_header_rec IN getdata_header_cur(P_ORDER_FROM,P_ORDER_TO) LOOP WRITE_OUTPUT('<tr>'); WRITE_OUTPUT('<th colspan="2">訂單號碼:' || getdata_header_rec.order_number || '</th>'); WRITE_OUTPUT('<th colspan="2">訂單型別:' || getdata_header_rec.name || '</th>'); WRITE_OUTPUT('<th colspan="2">客戶名稱:' || getdata_header_rec.party_name || '</th>'); WRITE_OUTPUT('<th colspan="2">客戶程式碼:' || getdata_header_rec.account_number || '</th>'); WRITE_OUTPUT('</tr>'); WRITE_OUTPUT('<tr> <td>行號</td><td>倉庫程式碼</td> <td>商品型號</td><td>數量</td> <td>銷售單價</td><td>銷售金額</td> <td>訂單狀態</td><td>發運方法</td></tr>'); FOR getdata_line_rec IN getdata_line_cur(getdata_header_rec.header_id) LOOP WRITE_OUTPUT('<tr>'); WRITE_OUTPUT('<td>' || getdata_line_rec.line_num || '</td>'); WRITE_OUTPUT('<td>' || getdata_line_rec.organization_code || '</td>'); WRITE_OUTPUT('<td>' || getdata_line_rec.ordered_item || '</td>'); WRITE_OUTPUT('<td>' || getdata_line_rec.ordered_quantity || '</td>'); WRITE_OUTPUT('<td>' || getdata_line_rec.unit_selling_price || '</td>'); WRITE_OUTPUT('<td>' || getdata_line_rec.amount || '</td>'); WRITE_OUTPUT('<td>' || getdata_line_rec.flow_status_code || '</td>'); WRITE_OUTPUT('<td>' || getdata_line_rec.shipping_method_code || '</td>'); WRITE_OUTPUT('</tr>'); END LOOP; WRITE_OUTPUT('<tr></tr>'); END LOOP; WRITE_OUTPUT('</table>'); WRITE_OUTPUT('</body></html>'); --HTML FORMAT end EXCEPTION WHEN OTHERS THEN ERRBUF := SQLERRM; RETCODE := SQLCODE; END MAIN; BEGIN NULL; END CUX_WX_OMRPT01;
1)定義可執行併發程式
l職責:系統管理員(或應用開發者)
l選單:併發->程式->可執行
可執行和簡稱:一般為package名。
應用產品:選擇相應的開發環境。
執行方法:選擇PL/SQL儲存過程。
執行檔名:指定呼叫package的程式入口,一般是MAIN方法,注意寫法。
2)定義併發程式
l職責:系統管理員(或應用開發者)
l選單:併發->程式->定義
程式:一般為報表名稱。
簡稱:一般同可執行的名稱。
應用產品:與可執行的設定保持一致。
說明:輸入該報表的詳細說明。
可執行:選擇之前定義好的可執行程式。
格式:報表輸出格式設定,選擇HTML。
如果報表有輸入引數,則點選【引數】按鈕進行設定:
序號:引數次序。一般以10為間隔設定,方便以後按次序再新增新的引數。
引數: 一般與報表中的引數名一致。
說明:引數說明資訊。
值集:選擇合適的值集名稱。
提示:引數的顯示標籤。
變數:必須與package程式入口中的引數的引數名一致。(也可以省略)
1)查詢相應職責的請求組
職責:系統管理員
選單:安全性->職責->定義
2)將定義好的Report加入請求組
職責:系統管理員
選單:安全性->職責->請求
查詢出相應的請求組。
如果該請求組包含了Report註冊時使用的應用,可以不用專門將Report加入到該請求組;
否則需要將併發程式新增到該請求組。
注意新增應用和併發程式的型別區別。
3)測試Report
切換至相應的職責,選擇請求,輸入引數後提交。
相關推薦
TEC1401.Report開發技術總結
第一章使用PLSQL開發HTML報表 使用PLSQL儲存過程準備好資料來源,並控制輸出的邏輯,最後生成帶HTML標籤的文字輸出,再通過在EBS中設定報表的輸出格式為HTML。 如果熟悉Web前端的設計和開發,我感覺用這種方法很方便。 完全將報表開發轉變成Web開發了,報表
Java開發技術總結:異常
很多人學習Java,為了追求快速上手工作,還沒學好Java技術基礎,就開始著手框架的學習,殊不知本末倒置會讓自己的未來堪憂! 對於Java技術學習,重點還是要放在基礎知識上面,今天給大家分享的Java基礎技術知識總結是:異常! 程式中出現的不正常的情況我們稱之為"異常"。在執行時出現了不正常的情況,程式將
零基礎學習web開發技術總結分享
研究 無奈 defined attr 以及 同學 動效 add 執行 1、 opacity與RGBA 對元素進行透明度的設置時,經常用到的有opacity與background -color:rgba(),但兩者有所不同;對比:rgba()和opacity都能實現透明效果,
我的Java開發技術總結
做了Java已經多年,深深感覺軟體開發這門工程學發展迅速,各種技術層出不窮,現在Java系統開發比起10多年前容易不少。有太多太多的各種工具來幫助保證質量,幫助快速開發部署。程式設計師可以更多的關注在業務邏輯的程式碼開發,而不是構建,部署。在不同的工作環境和工作
[SAP ABAP開發技術總結]ABAP調優——Open SQL優化
,因為SQL條件的的執行一般是按這個順序來執行的,將條件放在最開始執行,則可過濾掉大部資料;但要注意Left Outer Join,是否可以將ON中的條件移動到Where從句則要考慮(如果真能放在Where從句中,則應該使用Inner Join,而非Left Outer Join,因為Where條件會過濾掉哪
微信開發技術總結
1、獲取OPENID的方法 步驟:【1】獲取code【2】獲取openid 仔細閱讀微信介面文件,可以發現,獲取opendi需要兩個介面 https://open.weixin.qq.com/
iOS中 加強日誌輸出 開發技術總結
對於那些做後端開發的工程師來說,看LOG解Bug應該是理所當然的事,但我接觸到的移動應用開發的工程師裡面,很多人並沒有這個意識,查Bug時總是一遍一遍的試圖重現,試圖除錯,特別是對一些不太容易重現的B
H5牛牛源碼開發APP技術總結
pat 頁面 page 文件夾 blog pack hone 微信瀏覽器 ext Q1446595067官網:h5.haozibbs.com或http:\\www.aqbaa.cn在H5頁面打開APP的方法一般有兩種,在IOS 9以前,一般使用的技術是URL Scheme。
OPPO Android開發技術面總結
今天早上參加了深圳OPPO開發工程師的技術面試,總的來說面試過程不是很順利。面試官並沒有問一些很深奧的底層原理,基本都是一些Java基礎以及Android四大元件內的基礎,但是我自身在開發過程中並沒有很重視這些理論基礎,導致很多知識點都忘記了。整個面試過程
專案開發常用技術總結
最近整理了一些開發中常用的技術,分享一下個人的心得,如有不對之處,歡迎指出。 目錄 1.shiro許可權控制在專案中的使用 1.jsp頁面匯入shiro標籤庫 <%@taglib prefix="shiro" uri=
Java開發專案例項中的技術總結
一:前端的請求引數如下圖所示: 此時後臺的處理方法為:直接使用request接受這個引數,通過JSON工具類轉換成對應的物件即可獲取對應的值,這種後臺處理的方式適用於上圖中的Query String Parameters 二:前端的請求引數如下所示:與上圖不同的是,請求的引數
【《Real-Time Rendering 3rd》 提煉總結】(九) 第十章 · 遊戲開發中基於影象的渲染技術總結
毛星雲,網路ID「淺墨」,90後,熱愛遊戲開發、遊戲引擎、計算機圖形、實時渲染等技術,就職於騰訊互娛。 微軟最有價值專家 著作《Windows遊戲程式設計之從零開始》、《OpenCV3程式設計入門》 碩士就讀於南京航空航天大學航天學院(2013級碩士研究生),已於2016年三月畢業。本科
實際開發過程中使用的的技術總結
過程 mybatis 總結 語法 行數據 pri 進行 mysq bit 1.開發使用Java技術進行a.基礎的語法是必須的2.數據庫采用MySQLa.數據庫的SQL語法是必須的b.存儲過程c.定時任務執行3.框架使用SpringBoot作為基礎框架4.在框架基礎上使用JP
2020年度總結 | 葡萄城軟體開發技術回顧
本文由葡萄城技術團隊原創並首發 轉載請註明出處:葡萄城官網,葡萄城為開發者提供專業的開發工具、解決方案和服務,賦能開發者。 2020年是不平凡的一年,雖然疫情為整個社會都帶來了巨大的衝擊,但IT技術人們卻從未停止過創新和發展的步伐。 葡萄城是全球領先的軟體開發技術提供商。在專注軟體開發技術的
java_web項目開發經驗總結(一)
從數據 簡單 處理 開發 事務 傳輸 記錄 承載 基礎上 web項目就像一個動態的記事本,功能很強大,你最初的項目功能調研越給力,項目所能發揮的作用也就越給力。這是因為web網絡的強聯系性,大家都可以通過訪問到自己想要訪問的頁面,頁面裏既可以承載信息,也可以承載做事情的
轉Web開發的發展史---Web開發技術的演變
即使 包括 另一個 dlink 演變 取數據 等待 php 概念 轉自:http://blog.csdn.net/zzzkk2009/article/details/9849431 在接下來的幾個月時間裏,我打算寫一系列關於完整web開發的文章。這第一篇文章雖然有所
前端常用技術總結
.get 不能 function span 喜歡 錯誤 ble tips sta 背景:公司需要開發一些前端界面,基於bootstrap. 總結下自己在使用中常用, 又經常忘記的tips 1.以前寫ajax喜歡巴拉巴拉, 老代碼直接貼過來用 $.ajax({
最詳細的 Android Toolbar 開發實踐總結(轉)
activity resource listener nba flat xmlns mat https ons 轉自:http://www.codeceo.com/article/android-toolbar-develop.html 過年前發了一篇介紹 Transluc
H5遊戲開發技術的發展進程
android 遊戲開發 pc瀏覽器 編程語言 遊戲平臺 首先,手機上最常用的兩個瀏覽器Android Chrome和iOS Safari默認支持WebGL。隨著這一飛躍式地發展,PC瀏覽器和手機都支持硬件圖形加速,而這是Web成為可行性遊戲平臺的必要條件。同時,這也使Flash、Silv
考研學生應該知道:研究方向和開發技術
應用 計算機軟件 blog 科研 移動應用 設計 嵌入 targe ack 我自己的一位大二學生,由參加ACM不安心。後來體會了應用的核心在算法,能在競賽中坐住了。但如今,又有新問題了。 【來信】 賀老師,我想問一下,假設打算考研,在這四年裏僅僅搞算法不搞應用,或者說