ASP.net 将Table做为参数传入SAP函数

本文详细介绍了如何在ASP.NET中将一个Table对象作为参数传递到SAP函数中,涵盖了输入参数的准备及调用过程。
public static DataTable SetTable(string functionName, Hashtable inputParame,string tableName)

    { 

        DataTable dt = null;
        if (functionName == "" || functionName == null)
        {
            dt = null;
        }
        else
        {
            RfcDestination dest = GetRfcDestination();
            RfcRepository rfcrep = dest.Repository;
            IRfcFunction myfun = null;
            myfun = rfcrep.CreateFunction(functionName);
            myfun.Invoke(dest);
            myfun = rfcrep.CreateFunction(functionName);
            if (inputParame.Count > 0)
            {
                foreach (DictionaryEntry de in inputParame)
                {
                    if (de.Key.ToString().Trim() != "IT_BANK")
                    {
                        if (de.Value != null)
                        {
                            IRfcTable t_items = myfun.GetTable(de.Key.ToString().Trim());
                            t_items.Insert();
                            Hashtable htValue = (Hashtable)de.Value;
                            foreach (DictionaryEntry de_item in htValue)
                            {
                                t_items.CurrentRow.SetValue(de_item.Key.ToString().Trim(), de_item.Value.ToString().Trim());
                            }
                            myfun.SetValue(de.Key.ToString().Trim(), t_items);
                        }
                    }
                    else
                    {
                        if (de.Value != null)
                        {
                            IRfcTable t_items = myfun.GetTable(de.Key.ToString().Trim());
                            ArrayList list = (ArrayList)de.Value;
                            for (int i = 0; i < list.Count; i++)
                            {
                                t_items.Insert();
                                IT_Bank it = (IT_Bank)list[i];
                                t_items.CurrentRow.SetValue("BANKS", it.BANKS);
                                t_items.CurrentRow.SetValue("BANKL", it.BANKL);
                                t_items.CurrentRow.SetValue("BANKN", it.BANKN);
                                t_items.CurrentRow.SetValue("KOINH", it.KOINH);
                                t_items.CurrentRow.SetValue("BKREF", it.BKREF);
                                t_items.CurrentRow.SetValue("BKONT", it.BKONT);
                            }
                            myfun.SetValue(de.Key.ToString().Trim(), t_items);
                        }
                    }
                }
            }
            myfun.Invoke(dest);
            IRfcTable myrfcTable = null;
            if (tableName != "" || tableName != null)
            {
                myrfcTable = myfun.GetTable(tableName);//rfc server function 返回值table结构名称
            }
            if (myrfcTable != null)
            {
                dt = new DataTable();
                int liElement = 0;
                for (liElement = 0; liElement < myrfcTable.ElementCount; liElement++)
                {
                    RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
                    dt.Columns.Add(metadata.Name);//循环创建列
                }
                foreach (IRfcStructure dr in myrfcTable)//循环table结构表
                {
                    DataRow row = dt.NewRow();//创建新行
                    for (liElement = 0; liElement < myrfcTable.ElementCount; liElement++)
                    {
                        RfcElementMetadata metadata = myrfcTable.GetElementMetadata(liElement);
                        row[metadata.Name] = dr.GetString(metadata.Name).Trim();
                    }
                    dt.Rows.Add(row);
                }
            }
        }
        return dt;

    }


inputParame传入的参数包含需要传入SAP的表名及表的数据


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值