1. 程式人生 > >TEC1401.Report開發技術總結

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選單:併發->程式->可執行

clip_image002

可執行和簡稱:一般為package名。

應用產品:選擇相應的開發環境。

執行方法:選擇PL/SQL儲存過程。

執行檔名:指定呼叫package的程式入口,一般是MAIN方法,注意寫法。

2)定義併發程式

l職責:系統管理員(或應用開發者)

l選單:併發->程式->定義

clip_image004

程式:一般為報表名稱。

簡稱:一般同可執行的名稱。

應用產品:與可執行的設定保持一致。

說明:輸入該報表的詳細說明。

可執行:選擇之前定義好的可執行程式。

格式:報表輸出格式設定,選擇HTML

如果報表有輸入引數,則點選【引數】按鈕進行設定:

clip_image006

序號:引數次序。一般以10為間隔設定,方便以後按次序再新增新的引數。

引數: 一般與報表中的引數名一致。

說明:引數說明資訊。

值集:選擇合適的值集名稱。

提示:引數的顯示標籤。

變數:必須與package程式入口中的引數的引數名一致。(也可以省略)

1)查詢相應職責的請求組

職責:系統管理員

選單:安全性->職責->定義

clip_image008

2)將定義好的Report加入請求組

職責:系統管理員

選單:安全性->職責->請求

clip_image010

查詢出相應的請求組。

如果該請求組包含了Report註冊時使用的應用,可以不用專門將Report加入到該請求組;

否則需要將併發程式新增到該請求組。

注意新增應用和併發程式的型別區別。

3)測試Report

切換至相應的職責,選擇請求,輸入引數後提交。

clip_image012

相關推薦

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不安心。後來體會了應用的核心在算法,能在競賽中坐住了。但如今,又有新問題了。  【來信】  賀老師,我想問一下,假設打算考研,在這四年裏僅僅搞算法不搞應用,或者說