用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函¡¥数ºy  
        string RETURNStr = myfun.GetString("R_SUBRC");  
        MessageBox.Show(RETURNStr);  

执行结果:

Paste_Image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,458评论 4 363
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,454评论 1 294
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,171评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,062评论 0 207
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,440评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,661评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,906评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,609评论 0 200
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,379评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,600评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,085评论 1 261
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,409评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,072评论 3 237
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,088评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,860评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,704评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,608评论 2 270

推荐阅读更多精彩内容

  • 【2017年最新】☞ iOS面试题及答案 设计模式是什么? 你知道哪些设计模式,并简要叙述? 设计模式是一种编码经...
    紫色冰雨阅读 563评论 0 1
  • MVC 具有什么样的优势,各个模块之间怎么通信,比如点击 Button 后 怎么通知 Model?[iOS] MV...
    Lost_693d阅读 138评论 0 1
  • 酷暑的余威还在,已是过渡 天渐凉,心不躁 丰收的期盼日浓 不得已的守旧,最是无奈 程序化的陈词烂调 无以触及季节的...
    橘子sandglass阅读 182评论 0 0
  • 这是在OC中利用数组和字典的相互套用解析的,附一张思维图。
    Miss_差不多阅读 720评论 0 0
  • 1 小时候,妈妈指着律政佳人里面的白骨精曹颖对KK说,做个学霸长大后就可以变成这个样子。于是,她努力地学习,以一种...
    bnngoo冰狗阅读 143评论 0 0