發表文章

目前顯示的是有「ERP二次開發」標籤的文章

Oracle EBS側錄背後SQL方式_確認某個UI對應程式及Form名稱

圖片
Information silo/ Information island 記得之前在公司通靈鼎新Workflow GP過程也是十分艱難,畢竟無對外程式介面可以介接。 使用SQL Profiler來側錄鼎新ERP 底層SQL_通靈的過程 T-SQL筆記36_如何側錄軟體背後執行的SQL 不像 Tiptop 可能還多少有提供程式介面能做二次開發。 最近在研究Oracle EBS如何得知某一個介面底層查詢邏輯、介面程式檔案位置諸如此類問題。 話說Oracle EBS 一整包68G下載解壓到安裝真的有夠久.... Oracle ENS中有所謂「列表值」 (LOV, List of values) Step1.Help  --> About Oracle Applications. 可確認Form Name、Form Path、登入使用者名稱 Step2.對於UI 輸入篩選條件並點擊“查找”按鈕 Step3.打開連接到EBS資料庫模式的資料庫Session後,執行下面的SQL。 檢索由特定用戶名稱在module名稱包含 特定表單名稱的會話中執行的上一個SQL語句。 SELECT ( SELECT to_char(sql_fulltext) FROM v $ sqlarea WHERE sql_id = ses.prev_sql_id) FROM v $ session ses, v $ sqlarea sq WHERE ses.module LIKE '%&form_name%' AND client_identifier = '&user_name' AND sq.sql_id(+) = ses.sql_id; 這部分子查詢 SELECT (SELECT to_char(sql_fulltext) FROM v$sqlarea WHERE sql_id = ses.prev_sql_id) 從v$sqlarea視圖中檢索sql_fulltext,並將其轉換為字符串,對應於ses.prev_sql_id的SQL語句。 sql_fulltext包含SQL語句的全文。 sql_id是SQL語句的標識符。 v$session是一個包含當前會話信息的視圖。 v$sqlarea是一個性能視圖,提供當前...

.net 串接SAP RFC進行二次開發方式

圖片
https://devopzone.net/sap/how-to-use-sap-nco-3-connector-net-4-visual-studio-2013/ 想到以前公司用的鼎新ERP Workflow GP版 沒有提供給公司內部IT 二次開發的彈性 任何系統客製化都必須要再給鼎新顧問再收錢 除非改購買新版本有提供開發介接的API 但針對有歷史包袱 一堆單據資料都用舊版本的ERP系統 這類升級移轉多少會帶來很多反彈聲浪跟許多時間成本 加上人力那時少 有專案時程壓力下也不太可能採取這方案 那時候只能跟主管同事透過每天 沒日沒夜地加班熬到晚上10點出公司,大概持續將近3個月長吧。 UI盲測觀察SQL Server資料庫進行資料比對跟我們自己程式寫入的對不對 沒花錢也沒顧問支援情況下要想辦法瞭解系統背後邏輯 後來真不是辦法只能網路上瘋狂找學習資料 XDD  畢竟也是第一次接觸ERP甚至連操作沒操作過就要直接做二次開發 後來只能想辦法通靈啦 使用SQL Profiler來側錄鼎新ERP 底層SQL_通靈的過程 T-SQL筆記36_如何側錄軟體背後執行的SQL 所幸如今待的公司規模大一些 該請的顧問費不會省....XD 還有SAP 竟然針對二次開發提供諸多豐富的API和套件 像是SAP BAPI (Business Application Programming Interface) 跟ABAP 先稍微筆記後續有空再來研究 .net connector 3.0 https://support.sap.com/en/product/connectors/msnet.html?anchorId=section_698553638 https://support.sap.com/en/product/connectors.html?anchorId=section 主要需加入參考2個 dll 分別是 "sapnco.dll"  "sapnco_utils.dll" Ref: How-to Use SAP NCo 3 Connector with .Net 4 in Visual Studio 2013 https://devopzone.net/sap/how-to-use-sap-nco-3-connector-net-4-visu...

使用SQL Profiler來側錄鼎新ERP 底層SQL_通靈的過程

圖片
  鼎新ERP模組的資料表欄位 充斥著諸多要通靈才會知道的欄位定義 許多公司因為想節省每年要繳的授權費(每開通5人40萬,10人就80萬) 都會要懂ERP模組的工程師來進行二次開發,想當然是個艱苦的通靈過程 = =||| 所幸偷偷查一些網路資源多少還是能查到有人佛心提供的 ERP資料庫schema 跟一些稍微還能作為參考的pdf手冊 這裡稍微分享一下通靈的過程 通常ERP系統模組充斥很多的欄位 單頭通常雙主Key 單別 與 單號 單身則通常是3個PK 單別 , 單號 , 序號 以報價單單頭  COPTA 跟 報價單單身 COPTB 為例 很多張資料表都類似此種一對多關聯設計 而有些介面上挑選欄位 底層SQL撈取方式 會是類似有這類關鍵字 在SQL Profiler可鎖定 RPC:Completed的 Event Class 起初的TextData會有 這段側錄到的SQL exec sp_executesql N'SELECT * FROM ADMMI WHERE MI001=@P1 AND MI002=@P2 ',N'@P1 nvarchar(5),@P2 nvarchar(2)',N'CMSMQ',N'01' 這裡  MI003產生的SQL 看起來是大概的邏輯 但沒辦法直接做執行 --MAINSELECT Select DISTINCT MQ001,MQ002 from $$CMSMQ CMSMQ Left join $$CMSMU as CMSMU on MQ001=MU001 Where MQ003=:MQ003 and (( MU003=:USRID and MQ029='Y' ) or MQ029='N' ) --ORDER MQ001 --RETURN MQ001,MQ002 --DISPLAY 單別;單據名稱 --SEARCH MQ001 --DISPLAY_ENG Doc. Type;Doc. Name --DISPLAY_VIET Loại CT;Tên CT --DISPLAY_CHS 单别;单据名称 這裡可稍微擷取到比較關鍵的table name來做識別 CMSMQ (各系統單據設定檔) 再往下追可以捕捉...

T-SQL筆記36_如何側錄軟體背後執行的SQL

圖片
  TSQL指令 1 2 3 4 5 6 7 SELECT top 10 t.[ text ], s.last_execution_time FROM sys.dm_exec_cached_plans AS p INNER JOIN sys.dm_exec_query_stats AS s ON p.plan_handle = s.plan_handle CROSS APPLY sys.dm_exec_sql_text(p.plan_handle) AS t WHERE t.[ text ] LIKE N '%查詢語句關鍵字%' ORDER BY s.last_execution_time DESC ;