今天,繼續在為富盛Sbo Add-on程式開發架構添加業務功能,豐富這個開發架構的内涵。主要實作了在原來的模态選擇對話框的基礎上加入了主資料和主業務明細界面的關聯功能,同時實作了對16個單據對象的模态選擇與主業務維護界面的關聯。
在Sbo-Addon開發中,使用模态對話框進行資料選擇,真的很不容易,在程式開發架構中終于成功添加主資料和系統業務的關鍵值選擇,接下來将加入對任意業務對象--包括自定義資料表和自定義業務對象的模态資料選擇功能。
盡管在Sbo Add-on中實作模态選擇很複雜,在富盛Sbo-Addon程式開發架構中卻隻需要非常簡單的幾個語句,就可以完全搞定。在此通過一個執行個體進行說明:
1、建立一個父視窗,用來測試單據對象的模态選擇功能。這個視窗可以使系統視窗、自定義視窗甚至是通過富盛Sbo Add-on程式開發架構的模态視窗派生的窗體。我在這裡就直接生成了一個新的窗體來進行測試,這個窗體的界面如下:

使用富盛Sbo Add-on程式開發架構實作這個見面,非常Easy,代碼如下:
//任何一個自定義窗體,都必須派生自富盛窗體基礎類,并且必須有如下的這個構造函數,或者在主程式中對此進行指派
public frmTestDocmentSelectForm(fsSboCommon fs)
{
fsSbo = fs;
}
//這是一個Add-on界面繪制的函數,窗體控件就是在此進行定義并添加到窗體之上的
public override int ShowForm(string strFormId, string strFormName)
string[] strName4DocmentModalForms =
{
"銷售發票", "銷售貸項憑證", "銷售發貨", "銷售退貨", "銷售訂單",
"采購發票", "采購貸項憑證", "采購交貨", "采購退貨", "采購訂單",
"銷售報價單", "其它入庫", "其它出庫", "倉庫轉儲", "生産訂單", "業務草稿"
};
if (ShowForm(strFormId, strFormName, 0, 300, 400, 200) == 1) return 1;
try
{
oForm.DataSources.UserDataSources.Add("docDs", SAPbouiCOM.BoDataType.dt_SHORT_TEXT, 10);
stMsg = fsSbo.AddStaticText2Form(ref oForm, "stMsg", "等待選擇...", 170, 10, 380, 20);
fsSbo.AddStaticText2Form(ref oForm, "stTitle", "請選擇", 30, 10, 60, 20);
oCombox = fsSbo.AddCombox2Form(ref oForm, "cbxDocSel", "", "docDs", 30, 80, 100, 20);
for (int i = 0; i < strName4DocmentModalForms.Length; i++)
oCombox.ValidValues.Add(strName4DocmentModalForms, i.ToString());
fsSbo.AddButton2Form(ref oForm, "btnQuery", "查詢", 70, 90, 120, 30);
}
catch (Exception ex)
fsSbo.ShowMsg(ex.Message);
oForm.Visible = true;
return base.ShowForm(strFormId, strFormName);
2、這個界面其實也很簡單,一個ComboBox元件用以提供單據對象選擇,選擇之後通過點選“查詢”按鈕,進入到單據對象選擇界面。實作這個功能隻需要幾句話--其實如果自己不進行新的界面繪制,要完成單據對象的查詢選擇,就這個簡單的幾個語句就OK了。
protected override bool DoPostItemEventItemPressed(ref SAPbouiCOM.ItemEvent pVal)
switch (pVal.ItemUID)
case "btnQuery": //查詢按鈕
nIndex = Convert.ToInt32(oCombox.Selected.Description); //獲得單據對象類型
fsSbo.SelectSboDocmentData(this, (fsSboCommon.fsSboSelectDocmentFormType)nIndex); //其實就這麼一句話就搞定了選擇視窗的建立
break;
return base.DoPostItemEventItemPressed(ref pVal);
比如,我選擇了“銷售發票”單據對象,點選“查詢”按鈕之後,就自動進入銷售發票單據對象選擇界面,如下圖:
3、單據對象查詢選擇界面還是應該花費一點筆墨來介紹一下的。這個界面由四部分組成,頂部是查詢條件錄入,中間兩部分分别是單據對象清單和指定單據的明細清單,單據清單和單據明細清單之間是關聯的,就是說選擇了單據清單中的某一行,其明細資訊就會顯示在下面的單據明細清單中。這的确很符合中國人的習慣。
事實上,頂端的查詢條件可以對期望的單據内容進行過濾,以便于查找。而很多時候,我們需要權限管理,并不是所有的單據内容都可以被操作人員所浏覽,這時候在打開界面的時候,可以通過傳遞參數進行控制。
在單據清單中,有Sbo中常見的黃色按鈕--業務關聯按鈕,盡管我們使用的是模态對話框,我們仍然支援這種深入查詢,點選關聯按鈕,就會到達業務關聯視窗,進而可以浏覽更加詳細的單據明細。并且,我們屏蔽了導覽列功能,進而為權限控制提供了保障。
4、點選選取按鈕,獲得選中的單據編号(docEntry),并且傳遞到指定的調用視窗。
5、如果調用窗體不是由富盛Sbo-Addon程式開發架構派生的,或者沒有指定調用父窗體,選取按鈕将自動失效,這個時候完成的不過是一個檢索窗體的功能。
本文轉自foresun 51CTO部落格,原文連結:http://blog.51cto.com/foresun/48779,如需轉載請自行聯系原作者