前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SAP ABAP 数据库表的数据传输(包括跨客户端)

SAP ABAP 数据库表的数据传输(包括跨客户端)

作者头像
matinal
发布2023-10-12 17:19:07
5790
发布2023-10-12 17:19:07
举报
文章被收录于专栏:SAP Technical

在功能开发完成后,需要使用一些测试数据来进行测试,有时可能需要将一些比较新的生产数据复制到测试系统,为了完成数据表的复制,需要使用一些SAP标准的BAPI来完成。 BAPI:RFC_READ_TABLE

代码语言:javascript
复制
DATA: SO_OPTION TYPE TABLE OF rfc_db_opt WITH HEADER LINE,
      SO_FIELDS TYPE TABLE OF rfc_db_fld,
      WA_FIELDS TYPE rfc_db_fld,
      SO_DATA TYPE TABLE OF tab512,
      WA_SO_DATA TYPE tab512.
DATA: T_FIELDS TYPE TABLE OF DDSHSELOPT WITH HEADER LINE.
DATA: LV_WHERE TYPE STRING.
"Screen Define"
PARAMETERS: p_table TYPE dd02l-tabname DEFAULT 'RSEG'.
PARAMETERS: p_dest TYPE rfcdes-rfcdest.
"Begin Business"
START-OF-SELECTION.
REFRESH:T_RSEG1,I_WHERE,I_FIELDS.
CLEAR T_FIELDS.
T_FIELDS-SHLPFIELD = 'BELNR'.
T_FIELDS-SIGN      = 'I'.
T_FIELDS-OPTION    = 'BT'.
T_FIELDS-LOW       = '5100000009'.
T_FIELDS-HIGH      = '5100000019'.
APPEND T_FIELDS.
* Convert selopt into string               *
CALL FUNCTION 'F4_CONV_SELOPT_TO_WHERECLAUSE'
*   EXPORTING
*     GEN_ALIAS_NAMES       = ' '
*     ESCAPE_ALLOWED        = ' '
  IMPORTING
    WHERE_CLAUSE          = LV_WHERE
  TABLES
    SELOPT_TAB            = T_FIELDS.
SO_OPTIONS-TEXT = LV_WHERE.
APPEND SO_OPTIONS.
REFRESH T_FIELDS.
CLEAR T_FIELDS.
T_FIELDS-SHLPFIELD = 'GJAHR'.
T_FIELDS-SIGN      = 'I'.
T_FIELDS-OPTION    = 'EQ'.
T_FIELDS-LOW       = '2020'.
APPEND T_FIELDS.
CLEAR LV_WHERE.
* Convert selopt into string               *
CALL FUNCTION 'F4_CONV_SELOPT_TO_WHERECLAUSE'
*   EXPORTING
*     GEN_ALIAS_NAMES       = ' '
*     ESCAPE_ALLOWED        = ' '
  IMPORTING
    WHERE_CLAUSE          = LV_WHERE
  TABLES
    SELOPT_TAB            = T_FIELDS.
CLEAR T_WHERE.
SO_OPTIONS-TEXT(3) = 'AND'.
SO_OPTIONS-TEXT+4  = LV_WHERE.
APPEND SO_OPTIONS.
CALL FUNCTION 'RFC_READ_TABLE' DESTINATION p_dest
  EXPORTING
    query_table                = p_table
*   DELIMITER                  = ' '
*   NO_DATA                    = ' '
*   ROWSKIPS                   = 0
*   ROWCOUNT                   = 0
  TABLES
    OPTIONS                    = SO_OPTIONS
    fields                     = SO_FIELDS
    data                       = SO_DATA
* EXCEPTIONS
*   TABLE_NOT_AVAILABLE        = 1
*   TABLE_WITHOUT_DATA         = 2
*   OPTION_NOT_VALID           = 3
*   FIELD_NOT_VALID            = 4
*   NOT_AUTHORIZED             = 5
*   DATA_BUFFER_EXCEEDED       = 6
*   OTHERS                     = 7
            .
IF sy-subrc <> 0.
  MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
  MODIFY (p_table) FROM TABLE SO_DATA.
  IF sy-subrc = 0.
    COMMIT WORK AND WAIT.
  ENDIF.
ENDIF.

跨 Client 获取数据: RFC_READ_TABLE 获取其它 Client 的数据时,需要增加 DESTINATION dest_client 选项。

dest_client:SM59 中维护的远端功能呼叫目的地

BAPI:RFC_READ_TABLE 使用限制 行数限制:RFC_READ_TABLE的行数限制为512个字符;也就是说,每行数据不能超过 512 个字符 OPTION 保留查询条件: 查询的长度限制为 75 个字符

Float:RFC_READ_TABLE 不返回任何包含 Float 数据类型的字段 数据量太大:600,000 多个条目将导致 SYSTEM FAILURE 或 PAGE ALLOC FAILED 错误。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档