RFC_READ_TABLE 是SAP系统自带的RFC函数,用于读取SAP数据库表的结构和数据。使用方法如下:

IMPORTING
QUERY_TABLE:读取的表名
DELIMITER:输出字段(DATA参数)之间的分隔符
NO_DATA:输入’X’时,不向传出表DATA输出数据
ROWSKIP:输出的第一条数据的行号(从0开始)
ROWCOUNT:从ROWSKIP开始,一共输出的数据行数(0代表所有数据)

TABLE
OPTIONS:表查询条件,比如SKA1表,KTOPL = 'Z900’表示查收Z900账目表的会计科目数据,留空 代表所有数据。
FIELDS:输出的表字段,留空代表输出所有字段。
DATA:输出的数据记录。

假设我们要读取 Z900 账目表有所有会计科目,只需要输出 KTOPL (账目表)和 SAKNR (会计科目)两个字段
------------------------------------------------

Public Sub Read_Table_SKA1()
Dim functions As SAPFunctionsOCX.SAPFunctions
Dim options As SAPTableFactoryCtrl.Table
Dim fields As SAPTableFactoryCtrl.Table
Dim data As SAPTableFactoryCtrl.Table

Call Logon

Set functions = New SAPFunctions
Set functions.Connection = sapConnection

Dim fm As SAPFunctionsOCX.Function
Set fm = functions.Add("RFC_READ_TABLE")

fm.Exports("QUERY_TABLE").Value = "SKA1" ' 要查询的表
fm.Exports("DELIMITER").Value = "," ' Data表要存储的数据以逗号分割

Set options = fm.Tables("OPTIONS")
Set fields = fm.Tables("FIELDS")
Set data = fm.Tables("DATA")

' 以下是表参数填充的方法
' options表参数限定要选择的数据
options.FreeTable
options.AppendRow
options(1, "TEXT") = " KTOPL = 'Z900' " '第一行列名为TEXT的列增加选择条件

' fields表参数限定要输出的列,如果不限定
' 默认输出所有列
' 我只想输出KTOPL和SAKNR两列
fields.FreeTable
fields.AppendRow
fields(1, "FIELDNAME") = "KTOPL"

fields.AppendRow
fields(2, "FIELDNAME") = "SAKNR"

fm.Call
' 如果有Exception , 说明有错误产生
If fm.Exception <> "" Then
Debug.Print fm.Exception
Exit Sub
End If

' 将DATA输出到立即窗口
Dim row As SAPTableFactoryCtrl.row
Dim col As SAPTableFactoryCtrl.Column

' 按行读取,DATA表只有一列
For Each row In data.Rows
Debug.Print row.Value("WA")
Next

Call Logoff
End Sub

------------------------------------------------

表填充的方法:
填充第一行第一列: sometable(1, 1) = “XXX”
或者根据列名:sometable(1, “FIELDNAME”) = “XXX”
因为table有一个RowCount属性,我们总是可以将RowCount用于代码中,增加灵活性。比如上面的代码可以写成:
------------------------------------------------

fields.FreeTable
fields.AppendRow
fields(fields.RowCount, "FIELDNAME") = "KTOPL"

fields.AppendRow
fields(fields.RowCount, "FIELDNAME") = "SAKNR"

------------------------------------------------

文章来源:https://blog.csdn.net/stone0823/article/details/50329257

SAP之RFC_READ_TABLE的更多相关文章

  1. 纯干货 C# 通过 RFC_READ_TABLE 读取 SAP TABLE

    SAP系统又称企业管理解决方案,是全球企业管理软件与解决方案的技术领袖,同时也是市场领导者.通过其应用软件.服务与支持,SAP持续不断向全球各行业企业提供全面的企业级管理软件解决方案. 在实际开发过程 ...

  2. SAP接口编程 之 JCo3.0系列(03) : Table参数

    Table参数作为export parameter BAPI_COMPANYCODE_GETDETAIL是一个适合演示的函数,没有import paramter参数,调用后COMPANYCODE_GE ...

  3. SAP创建XML 文件

    TYPES: BEGIN OF xml_line_type, data(256) TYPE x, END OF xml_line_type, xml_tab_type TYPE TABLE OF xm ...

  4. SAP CRM 性能小技巧

    导言 本页面打算收集SAP CRM实施中可以用于避免性能问题的注意事项,重要的事项会由图标标识. 如果你有其他的技巧想要说出来,别犹豫! 性能注意事项 通用 缓存读取类访问,特别是在性能关键的地方,比 ...

  5. SAP CRM 树视图(TREE VIEW)

    树视图可以用于表示数据的层次. 例如:SAP CRM中的组织结构数据可以表示为树视图. 在SAP CRM Web UI的术语当中,没有像表视图(table view)或者表单视图(form view) ...

  6. SAP CRM 显示消息/在消息中进行导航

    向用户展示消息,在任何软件中都是十分重要的. 在SAP CRM WEB UI中展示消息,不是一项很难的任务,只需要创建消息并在之后调用方法来显示它 消息类和消息号: 我在SE91中创建了如下的消息类和 ...

  7. BPM与 SAP & Oracle EBS集成解决方案分享

    一.需求分析 SAP和Oracle EBS都是作为全球顶级的的ERP产 品,得到了众多客户的青睐.然而由于系统庞大.价格昂贵以及定位不同,客户在实施过程中经常会面临以下困惑: 1.SAP如何实现&qu ...

  8. 【SAP业务模式】之ICS(四):组织单元的配置

    SAP的ICS业务后台配置主要有以下几个配置点: 1.组织单元的配置(公司代码.销售组织.工厂.采购组织等): 2.主数据的部分: 3.订单和开票的定价过程: 4.开票输出类型: 5.公司间发票的配置 ...

  9. 【SAP业务模式】之ICS(三):前台操作

    本片博文开始讲解SAP前台是如何实现ICS业务模式的. 一.VA01开立销售订单 我这里为了方便,创建了一个订单类型ZMIV作为公司间销售的订单类型,其实公司间销售订单跟标准的销售订单是一致的.同时, ...

随机推荐

  1. 数据库Oracle字符处理函数

    练习字符处理函数(数据库表都是从1开始),我们用到一张"伪表" dual: dual 表:dual 是一张只有一个字段,一行记录的表.dual 表也称之为'伪表',因为他不存储主题 ...

  2. 分布式监控告警平台Centreon快速使用

    一. Centreon概述 Centreon是一款功能强大的分布式IT监控系统,它通过第三方组件可以实现对网络.操作系统和应用程序的监控:首先,它是开源的,我们可以免费使用它:其次,它的底层采用nag ...

  3. MooseFS 分布式存储

    一.MooseFS介绍 MooseFS主要由管理服务器(master).元日志服务器(Metalogger).数据存储服务器(chunkserver)构成. 管理服务器:主要作用是管理数据存储服务器, ...

  4. 适用于带fifo接口的存储器和显示器测试模块封装 挑战cb

    cb说完美是没有极限的,对此我表示赞同,自从用了cb的板子,玩开cmos,fpga,sdram,vga等. 不断涌现的是,双端口sdram,四端口sdram,各式各样的封装,但是大同小异,但总是有些不 ...

  5. Python 3 对象关系映射(ORM)

    ORM 对象关系映射 Object Relational Mapping 表 ---> 类 字段 ---> 属性 记录 ---> 对象 # mysql_client.py impor ...

  6. MySQL 表记录查询小练习

    表记录查询小练习 查看岗位是teacher的员工姓名.年龄 查看岗位是teacher且年龄大于26岁的员工姓名.年龄 查看岗位是teacher且薪资在12000-16000范围内的员工姓名.年龄.薪资 ...

  7. Docker私有仓库搭建与界面化管理

    一.关于Registry 官方的Docker hub是一个用于管理公共镜像的好地方,我们可以在上面找到我们想要的镜像,也可以把我们自己的镜像推送上去. 但是有时候我们的使用场景需要我们拥有一个私有的镜 ...

  8. Java中接口和抽象类的区别?

    抽象类 抽象类必须用 abstract 修饰,子类必须实现抽象类中的抽象方法,如果有未实现的,那么子类也必须用 abstract 修饰.抽象类默认的权限修饰符为 public,可以定义为 public ...

  9. 面试连环炮系列(二十):TCP的滑动窗口协议是什么

    TCP的滑动窗口协议是什么 滑动窗口协议,用于网络数据传输时的流量控制,以避免拥塞的发生.该协议允许发送方在停止并等待确认前发送多个数据分组.由于发送方不必每发一个分组就停下来等待确认,因此该协议可以 ...

  10. C# 利用AForge进行摄像头信息采集

    概述 AForge.NET是一个专门为开发者和研究者基于C#框架设计的,提供了不同的类库和关于类库的资源,还有很多应用程序例子,包括计算机视觉与人工智能,图像处理,神经网络,遗传算法,机器学习,机器人 ...