上周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系統專題 就到此結束了。歡迎各位朋友一起交流指正...