看板 C_Sharp 關於我們 聯絡資訊
大家好~ 我是弱弱的兼職程設 (本職是系統管理,會兼職是因為遇缺不補,只好硬著頭皮跳下來做... 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
pico2k: 要改SAP RFC讓它回傳你要的資料,所以... 06/15 10:00
RFC 段已經處理好了 :) ※ 編輯: aeolus0829 (211.20.129.1), 06/15/2016 10:07:08
ian90911: 直接把訊息放到label.text呢 06/15 13:00
ypsps: ajax? 06/15 15:35
ypsps: 還是我誤會題意XD 06/15 15:36
你應該.. 沒誤會,但... 我只是問要怎麼丟參數和接訊息.. ajax 會搞死我 Q_Q 雖然我是有在 cs 檔開頭看到 jquery 3.0 啦... 0rz ※ 編輯: aeolus0829 (211.20.129.1), 06/15/2016 16:01:50
ssccg: 你應該只是要把Server端的訊息放到轉出的html上吧? 06/15 17:23
ssccg: 那應該是不需要javascript,就二樓那個就好 06/15 17:23
ssccg: WebForm的作法就是把string值設給控制項,自然就會呈現出來 06/15 17:26
ssccg: 不用在UI(aspx、ascx)埋程式,只是原本沒控制項的話要加 06/15 17:32
aeolus0829: 我試試 06/16 10:56
真的可以! 原先是因為 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