调用SAP RFC如何传递一个内表参数

搞SAP,ABAP开发的时候,内表是最常用的,SAP中的内表功能强大,相当于C#中的Datatable和数组;C#中无法定义SAP中的内表,那么如何将一个内表传进给SAP呢?
1.先调用RFC,获取一个空的内表结构;
//登录SAP
RfcConfigParameters parameters = GetRfcLoginParameters();//获取登录参数
RfcDestination rd = RfcDestinationManager.GetDestination(parameters);
RfcRepository repo = rd.Repository;

IRfcFunction f = repo.CreateFunction("ZGET_BU_WORKDAY_LOG"); //调用函数名
//首次调用,获取返回的 内表
f.Invoke(rd); //执行函数
IRfcTable itb = f.GetTable("T_ZBO5");


2.获取到内表结构后,往里面填充内容;
//往内表中填充数据
for (int i = 0; i < dt.Rows.Count; i++)
{
itb.Insert();
itb.CurrentRow.SetValue("BU", dt.Rows[i]["BU"].ToString());
itb.CurrentRow.SetValue("DL", dt.Rows[i]["DL"].ToString());
itb.CurrentRow.SetValue("ZDATE", Convert.ToDateTime(dt.Rows[i]["DATE"].ToString()).ToString("yyyy-MM-dd"));
itb.CurrentRow.SetValue("SJSB", dt.Rows[i]["SJSB"].ToString());
itb.CurrentRow.SetValue("PSJB", dt.Rows[i]["PSJB"].ToString());
itb.CurrentRow.SetValue("ZMJB", dt.Rows[i]["ZMJB"].ToString());
itb.CurrentRow.SetValue("FDJB", dt.Rows[i]["FDJB"].ToString());
itb.CurrentRow.SetValue("QJ", dt.Rows[i]["QJ"].ToString());
itb.CurrentRow.SetValue("GSJ", dt.Rows[i]["GSJ"].ToString());
itb.CurrentRow.SetValue("BJ", dt.Rows[i]["BJ"].ToString());
itb.CurrentRow.SetValue("FJ", dt.Rows[i]["FJ"].ToString());

}

3.再次调用RFC,将内表传递进去。

//传递内表参数,执行RFC
f = repo.CreateFunction("ZGET_BU_WORKDAY_LOG"); //调用函数名
f.SetValue(0, itb);
f.Invoke(rd);

注:如果使用智遥工作流自带的接口,可以更方便的调用。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值