.NET連接SAP系統專題:C#調用RFC中文亂碼解決辦法(十二)

       上週TW總公司的IT按照董事長的指示,但凡雜項請購單裏面內部訂單號如果沒有開立開發執行單的需做卡控,限制開單。於是TW IT就在系統畫面ME51N裏面做了用戶出口開發,如果系統檢測到內部訂單沒有開發執行單,則提示並不繼續往下。因爲TW那邊的卡控文字說明是繁體的,所以OA調用了RFC申請開立請購單之後就會返回這個錯誤信息,而且是亂碼,如下圖:

       

       看到這個亂碼我還以爲是出了什麼異常,因爲系統拋出異常類是:RfcCommunicationException,到處找原因,搞得滿頭包。後面只好到正式環境試着用OA的數據開立請購單試試,結果系統提示開發執行單不存在,這才知道原因所在,因此對這個亂碼感到很費勁,於是解決之。

       我們在調用RFC前的配置信息裏面可以規定編碼,如下紅字所示:      

       

public class MyBackendConfig : IDestinationConfiguration

{

public RfcConfigParameters GetParameters(String destinationName)

{

if ("PRD_000".Equals(destinationName))

{

RfcConfigParameters parms = new RfcConfigParameters();

parms.Add(RfcConfigParameters.AppServerHost, "192.168.1.3");

parms.Add(RfcConfigParameters.SystemNumber, "00");

parms.Add(RfcConfigParameters.User, "MENGXIN");

parms.Add(RfcConfigParameters.Password, "×××");

parms.Add(RfcConfigParameters.Client, "888");

parms.Add(RfcConfigParameters.Language, "ZH");

parms.Add(RfcConfigParameters.PoolSize, "5");

parms.Add(RfcConfigParameters.MaxPoolSize, "10");

parms.Add(RfcConfigParameters.IdleTimeout, "60");

parms.Add(RfcConfigParameters.Codepage, "8300");

return parms;

}

else return null;

}

public bool ChangeEventsSupported()

{

return false;

}

public event RfcDestinationManager.ConfigurationChangeHandler ConfigurationChanged;

}

 

       這樣規定了這個編碼爲8300(繁體),於是系統正確提示了信息:

       

       關於這個Codepage的代碼含義,如下表:       

       

        至此,亂碼問題完全解決~

       PS:.NET連接SAP系統專題 就到此結束了。歡迎各位朋友一起交流指正...

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章