[問題] 讓網頁顯示錯誤訊息 (已解決)
大家好~
我是弱弱的兼職程設
(本職是系統管理,會兼職是因為遇缺不補,只好硬著頭皮跳下來做... Q_Q)
我遇到的問題是,無法把後端的錯誤訊息顯示到前端 (術語是這樣講嗎?)
要講清楚得先畫一下架構
一等一電子簽核系統(簡稱UOF,c# 寫的) -- SAP RFC(Remote Function Call) - DB
RFC 是在 sap 中用 ABAP 撰寫
畫面是這樣
https://dl.dropboxusercontent.com/u/6828634/bpm_po_form.png

運用 UOF 系統做 收貨,流程如下:
1. 在 UOF 點選 [讀取採購單資料]
2. 呼叫 RFC ,到 DB 取得採購單相關資料
3. 回傳資料到前端
UOF 端的程式架構不太懂,應該是 master page 架構,元件是這樣子
1. UOF 內建的東西 (master page ?)
2. 客製程式 po_receipt_i,寫成使用者控制項 (有 .ascx 和 .ascx.cs)
我希望按下 [讀取採購單資料] 時,能夠顯示錯誤訊息在網頁上
(錯誤訊息:在 sap 內檢查採購單的各種狀況,並以 string 的方式透過 RFC 傳回)
現在的問題是,[訊息] 區塊埋的錯誤檢核,基本上是用 javascript 檢查
採購單號是否空白
採購單號是不是數字
這些都是在網頁 (前端) 就可以直接檢查
但我的需求必須先將資料從 網頁 取出,送到 sap 檢查,若有錯誤再回傳訊息到 網頁
我想作法應該是
在訊息區塊埋一段 c# 程式,按下 [讀取採購單資料] 時一併觸發,回傳資料也是用
c# 接 (現在還看不懂要埋在哪邊,不過這只能試看看了)
Q 要怎麼用 javascript 去取得錯誤訊息.. = =a
應該會有人問為什麼不找廠商吧?因為態度太差所以翻臉了 (攤手)
然後上面也要不到預算找別人接手
其實這問題不是非解不可,只是身為IT看到會手癢 ... 0rz
古早以前曾經用 php + javascript 辦到類似的事情,所以作法的部份稍微有點頭緒
但我想直接問應該可以少繞很多路 (另一方面是現在沒太多時間可繞)
我已經做好會被罵的準備了 U_U
罵完還請給個方向或關鍵字讓我排除問題,謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 211.20.129.1
※ 文章網址: https://www.ptt.cc/bbs/C_Sharp/M.1465954925.A.199.html
→
06/15 10:00, , 1F
06/15 10:00, 1F
RFC 段已經處理好了 :)
※ 編輯: aeolus0829 (211.20.129.1), 06/15/2016 10:07:08
推
06/15 13:00, , 2F
06/15 13:00, 2F
推
06/15 15:35, , 3F
06/15 15:35, 3F
→
06/15 15:36, , 4F
06/15 15:36, 4F
你應該.. 沒誤會,但... 我只是問要怎麼丟參數和接訊息..
ajax 會搞死我 Q_Q
雖然我是有在 cs 檔開頭看到 jquery 3.0 啦... 0rz
※ 編輯: aeolus0829 (211.20.129.1), 06/15/2016 16:01:50
→
06/15 17:23, , 5F
06/15 17:23, 5F
→
06/15 17:23, , 6F
06/15 17:23, 6F
→
06/15 17:26, , 7F
06/15 17:26, 7F
→
06/15 17:32, , 8F
06/15 17:32, 8F
→
06/16 10:56, , 9F
06/16 10:56, 9F
真的可以!
原先是因為 po_reciept_i 有部份程式是引用 axl,但我找不到 axl 的程式碼在哪
axl.SapCon.PO_Receipt_get get = new axl.SapCon.PO_Receipt_get();
來回找了好幾次後,確定 PO_Receipt_get 是包在 axl.dll 裡,
所以看不懂為什麼 RFC 端明明有回傳訊息,但是網頁卻沒有顯示
後來用 ILSpy 反組譯 axl.dll 才發現...
axl.dll 裡根本沒有寫接收訊息的機制 (補個幹)
我把 axl.dll 看到的 class 及程式碼內容直接寫在 po_reciept_i.cs 裡面
然後補上訊息接收機制
this.ZMSG = logon.Retrun_String("ZMSG");
this.ZFLAG = logon.Retrun_String("ZFLAG");
再照二樓提醒的方式,直接把 RFC 回傳的訊息丟給 label 就可以了
string ZMSG = get.ZMSG;
string ZFLAG = get.ZFLAG;
if (ZFLAG == "E") warring.Text = ZMSG;
太開心了~ 這樣對 UOF 的架構又多了一些了解,以後能做的事就更多了
(但是我不能亂講) > <"
※ 編輯: aeolus0829 (211.20.129.1), 06/16/2016 14:30:31
C_Sharp 近期熱門文章
PTT數位生活區 即時熱門文章