用NCO調用RFC

需要的工具:
開發工具:Microsoft Visual Studio 2010 C#環境
NCO3.0:sapnco30dotnet40P_8-20007347.zip(VS2010環境下必須這個版本)
可到此下載:http://download.csdn.net/detail/szlaptop/4635144
數據庫:ORACLE10g

示例目的:將Oracle的某表數據通過RFC插入SAP自建表。

第一步:在SAP里自建表
進入SAP界面:使用T- CODE:SE11 打開建表界面:表名為:ZCHANNEL_MESSAG

Paste_Image.png

自建如下表:(詳細建表過程略),針對自身業務,命名關鍵字段。



第二步:針對自建表ZCHANNEL_MESSAG創建RFC。
使用T- CODE:SE37 打開建RFC界面:命名為:ZCHANNEL_RFC_MESSAGE


RFC如下表:(建立RFC詳細過程略),在TABLE參數里設置IT_CHANNELLIKE 剛才自建的表ZCHANNEL_MESSAG。

Paste_Image.png

在EXPORT里設置出參R_SUBRC.

Paste_Image.png

在SOURCE CODE里寫代碼:


[csharp] view plain copy

IF IT_CHANNEL[] IS NOT INITIAL.
MODIFY ZCHANNEL_MESSAG FROM TABLE IT_CHANNEL[].
IF SY-SUBRC = 0.
R_SUBRC = 'OK'.
ENDIF.
ENDIF.
ENDFUNCTION.

到此在SAP這邊的工作已經就緒。

第三步:接下來,我們在oracle10g下建表WW_TRANS:與SAP自建表字段對應。

[sql] view plain copy

create table WW_TRANS
(
WW_TXDATE VARCHAR2(50),
WW_PLUID VARCHAR2(50),
WW_QTYSOLD VARCHAR2(1000),
WW_AMOUNT VARCHAR2(50),
WW_TELEPHONE VARCHAR2(50)
)

第四步:剩下的都在VS2010下完成:

打開VS2010新建一個WINDOWS窗體應用程序:WindowsFormsApplication2

Paste_Image.png

拖動一個按鈕控件到主窗體:

Paste_Image.png

在解決方案資源管理器,引用里引用NCO3.0的sapnco.dll和sapnco_utils

Paste_Image.png

右擊項目名稱WindowsFormsApplication2,點擊“屬性”,打開屬性面板:將目標框架里默認的.NET Framework 4 Client Profile 改為:.NET Framework 4。(很重要)

Paste_Image.png

在解決方案資源管理器里打開配置文件APP.CONFIG,配置如下:

Paste_Image.png

[html] view plain copy

<?xmlversionxmlversion="1.0"?>
<configuration>
<configSections>
<sectionGroupnamesectionGroupname="SAP.Middleware.Connector">
<sectionGroupnamesectionGroupname="ClientSettings">
<sectionnamesectionname="DestinationConfiguration"type="SAP.Middleware.Connector.RfcDestinationConfiguration,sapnco"/>
</sectionGroup>
</sectionGroup>
</configSections>

<SAP.Middleware.Connector>  
    <ClientSettings>  
        <DestinationConfiguration>  
            <destinations>  
                <addNAMEaddNAME="DEV"USER="WUWEI"PASSWD="WUWEI"CLIENT="500"  
                     LANG="EN"ASHOST="198.16.0.66"SYSNR="00"  
                     MAX_POOL_SIZE="10"IDLE_TIMEOUT="10"/>  
            </destinations>  
        </DestinationConfiguration>  
    </ClientSettings>  
</SAP.Middleware.Connector>  

<startup>  
    <supportedRuntimeversionsupportedRuntimeversion="v4.0"sku=".NETFramework,Version=v4.0"/>  
</startup>  

</configuration>

雙擊剛拖動的Button1按鈕進入代碼編輯器:
手工引用:using SAP.Middleware.Connector;

Paste_Image.png

因為使用的是oracle數據庫,所以也必須引用oracle10g的System.Data.OracleClient.dll,只要安裝了oracle10g客戶端
usingSystem.Data.OracleClient;

Paste_Image.png

接下來看代碼:

[csharp] view plain copy

OracleDataReader reader = sqlCmd.ExecuteReader();
//讀¨¢取¨?配?置?文?件t信?息?é,ê?建?§立¢?é與??SAP連¢?接¨?
RfcDestination SapRfcDestination = RfcDestinationManager.GetDestination("DEV");

        RfcRepository SapRfcRepository =SapRfcDestination.Repository;  
        // Create and invhuoke function moduleZCHANNEL_RFC_MESSAGE  
        IRfcFunction myfun =SapRfcRepository.CreateFunction("ZCHANNEL_RFC_MESSAGE");  

        // Set some input values for the structure.  
        IRfcStructure import = null;  
        IRfcTable table = myfun.GetTable("IT_CHANNEL");  
        while (reader.Read())  
        {  
            import = SapRfcRepository.GetStructureMetadata("ZCHANNEL_MESSAG").CreateStructure();  
            import.SetValue("WW_TXDATE",reader.GetString(0));  
            import.SetValue("WW_PLUID",reader.GetString(1));  
            import.SetValue("WW_QTYSOLD",reader.GetString(2));  
            import.SetValue("WW_AMOUNT",reader.GetString(3));  
            import.SetValue("WW_TELEPHONE",reader.GetString(4));  
            table.Insert(import);  
        }  
        myfun.Invoke(SapRfcDestination); //執??行D函?¥數oy  
        string RETURNStr = myfun.GetString("R_SUBRC");  
        MessageBox.Show(RETURNStr);  

執行結果:

Paste_Image.png
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,732評論 6 539
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,214評論 3 426
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,781評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,588評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,315評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,699評論 1 327
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,698評論 3 446
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,882評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,441評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,189評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,388評論 1 372
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,933評論 5 363
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,613評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,023評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,310評論 1 293
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,112評論 3 398
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,334評論 2 377

推薦閱讀更多精彩內容

  • 【2017年最新】? iOS面試題及答案 設計模式是什么? 你知道哪些設計模式,并簡要敘述? 設計模式是一種編碼經...
    紫色冰雨閱讀 619評論 0 1
  • MVC 具有什么樣的優勢,各個模塊之間怎么通信,比如點擊 Button 后 怎么通知 Model?[iOS] MV...
    Lost_693d閱讀 157評論 0 1
  • 酷暑的余威還在,已是過渡 天漸涼,心不躁 豐收的期盼日濃 不得已的守舊,最是無奈 程序化的陳詞爛調 無以觸及季節的...
    橘子sandglass閱讀 195評論 0 0
  • 這是在OC中利用數組和字典的相互套用解析的,附一張思維圖。
    Miss_差不多閱讀 785評論 0 0
  • 1 小時候,媽媽指著律政佳人里面的白骨精曹穎對KK說,做個學霸長大后就可以變成這個樣子。于是,她努力地學習,以一種...
    bnngoo冰狗閱讀 173評論 0 0