• Error in module RSQL of the database interface
  • error key: RFC_ERROR_SYSTEM_FAILURE
  • dbtran ERROR (set_input_da_spec): statement too big[dbtran.c#4854]
  • marker count = 18655 > max. marker count = 16000 [dbtran.c#4854]
  • sap note:13607

【Problem】EP在开发机测试没问题,发布到生产机后执行查询出现了该问题:

这里写图片描述
错误信息:
Error in module RSQL of the database interface, error key: RFC_ERROR_SYSTEM_FAILURE

你可以先尝试过以下操作:
1、检查、测试RFC,并把相关的请求传输到生产环境;
2、在NWDS中Reimport RFC,重新发布工程(注意生产环境发布的操作和开发机的不一样);
3、重启EP;
若仍然未解决问题,请往下看。

通过传输码ST22查看ABAP运行时错误日志
这里写图片描述
双击对应错误的日志,进入Runtime Error Long Text界面,里面有详细的错误报告。

我摘取部分的错误信息:

Kategorie(范畴): ABAP Programming Error
Laufzeitfehler(运行时错误): DBIF_RSQL_INVALID_RSQL
Ausnahme(异常) : CX_SY_OPEN_SQL_DB
ABAP Programm: SAPLZEWM_RFC2

【Kurztext】 (德文,意思是范畴)
Error in module RSQL of the database interface

【发生了什么】
Error in the ABAP Application Program
The current ABAP program “SAPLZEWM_RFC2” had to be terminated because it has come across a statement that unfortunately cannot be executed.

【错误分析】
An exception occurred that is explained in detail below.

The exception, which is assigned to class ‘CX_SY_OPEN_SQL_DB’, was not caught in procedure “ZTM_RFC_YSQSD_GETORDER_V2” (FUNCTION)”, nor was it propagated by a RAISING clause.

Since the caller of the procedure could not have anticipated that the exception would occur, the current program is terminated.

The reason for the exception is:
The SQL statement generated from the SAP Open SQL statement violates a restriction imposed by the underlying database system of the ABAP system.

Possible error causes:
o The maximum size of an SQL statement was exceeded.
o The statement contains too many input variables.
o The input data requires more space than is available.
o …

You can generally find details in the system log (SM21) and in the developer trace of the relevant work process (ST11).

1、在ABAP的Select语句中,当在WHERE子句使用range table时,range table的类型超出了数据库的限制的最大值(这个最大值由DB决定)

2、源码位置在错误信息上面已经有列出了:
这里写图片描述

1、查找SAP Note:13607,下面截取note的内容
这里写图片描述
这里写图片描述 这里写图片描述

2、于是我修改我的代码:

DATA r_so LIKE RANGE OF vbak-vbeln WITH HEADER LINE. ”原句:DATA r_so FOR vbak-vbeln.
DATA lines LIKE LINE OF r_so.”添加的
DESCRIBE TABLE r_so LINES lines.”添加的
IF lines EQ 0.”添加的
    SELECT
      vbak~vbeln AS vbeln
      adrc~name1 AS name1 
      vbpa~kunnr AS kunnr
      vbpa~parvw AS parvw
      adrc~city1 AS city1
      FROM vbpa
      INNER JOIN vbak ON vbak~vbeln EQ vbpa~vbeln
      INNER JOIN adrc ON vbpa~adrnr EQ adrc~addrnumber
      INTO CORRESPONDING FIELDS OF TABLE gt_display_vbpa_ag
      WHERE adrc~name1 IN r_shippername 
        AND vbpa~kunnr IN r_shipper     
        AND vbpa~parvw EQ 'AG'.
ELSE.”添加的
    TRY.”添加的
      SELECT
         vbak~vbeln AS vbeln
         adrc~name1 AS name1
         vbpa~kunnr AS kunnr
         vbpa~parvw AS parvw
         adrc~city1 AS city1
         FROM vbpa
         INNER JOIN vbak ON vbak~vbeln EQ vbpa~vbeln
         INNER JOIN adrc ON vbpa~adrnr EQ adrc~addrnumber
         INTO CORRESPONDING FIELDS OF TABLE gt_display_vbpa_ag
         FOR ALL ENTRIES IN r_so ”添加的
         WHERE vbak~vbeln EQ r_so-low
           AND adrc~name1 IN r_shippername 
           AND vbpa~kunnr IN r_shipper     
           AND vbpa~parvw EQ 'AG'.
   CATCH cx_sy_open_sql_db.”添加的
   ENDTRY.”添加的
ENDIF.”添加的

3、修改过RFC后,在WD4J那里需要重新导入Model
这里写图片描述

4、重新把request传输到生产环境,重新发布到EP。问题已解决

总结一下解决SAP问题的思路

1、不做伸手党,不要一出错就问人,一定要阅读错误信息,分析出可能出错的部分,是RFC出错还是WD4J出错;
2、通过Tcode ST22 或 ST11 或 sm21可以查看错误信息;
3、关于搜索引擎:

关键词Error in module RSQL of the database interfaceerror key: RFC_ERROR_SYSTEM_FAILUREdbtran ERROR (set_input_da_spec): statement too big[dbtran.c#4854] marker count = 1865
1、用./bin/spark-shell启动spark时遇到异常:java.net.BindException: Can't assign requested address: Service 'sparkDriver' failed after 16 retries! 解决方法:add export SPARK_LOCAL_IP="127.0.0.1" to spark-env....
Python连接SQL Server——报错InterfaceError: Connection to the database failed for an unknown reason解决办法
    pymssql:用于SQL Server 数据库的连接,安装Anaconda时默认并没有安装此模块,可使用 pip install pymssql安装;   pyodbc:也可用于SQL Server数据库的连接,但除此之外,还可用于Oracle,Excel, MySql等,安装Anaconda时默认已安装。 利用pymssql连接本地数据库:     连接数据库使用c...
SAP的R/3系统与Java平台一样有着许多类似的技术理念,以及同样广泛的企业级用户,但是它们完全是两个不同的世界。当用户面临流程或者数据整合方面的需求的时候,就迫切需要一种高效的方式,在R/3系统和Java平台之间实时地交换数据。基于这样的需求,SAP提供了一套高效的基于RFC的ABAP和Java进程间通讯组件:SAP Java Connector(JCo)。 本文将介绍JCo组件的架构,配置,基本使用方法以及调试,同时还将讨论如何对RFC方式调用的ABAP函数进行远程调试。 JCo库提供..
当使用CNVCF_CCE_RFC_READ_TABLE通用函数取SAP表数据的时候,如果JCoFunction  function这个里面不对ROWCOUNT限制的话,一旦表数据过大就会造成以下错误: com.sap.conn.jco.JCoException: (104) JCO_ERROR_SYSTEM_FAILURE: No more storage space available for...
直接上Example: IF ip_loaddate_from IS INITIAL AND ip_loaddate_to IS INITIAL. CONCATENATE sy-datum(6) '01' INTO r_loaddate-low. ”获取当前月的第一天 CALL FUNCTION 'BKK_GET_MONTH_LASTDAY' ”获取当前月的
传输步骤: 1. 把在开发机中修改的内容放到传输请求中(在修改的时候就会提示的);release(释放)该传输请求; 通过T-code SE10进入传输组织界面选择可修改的请求,按F9进行释放 - 从最底层的子目录开始释放,一直释放到根目录 - 务必要确保你要释放的内容没有bug把这个请求传输到测试机或生产机中 通过T-code STMS 进入传输管理系统,点击输入概览(小卡车图
检查时间有效性 TIME_CHECK_PLAUSIBILITYDATA:m_time LIKE sy-uzeit VALUE '260000'. CALL FUNCTION 'TIME_CHECK_PLAUSIBILITY' EXPORTING time = m_time EXCEPTIONS plausibility_check_f
出现"you have an error in your SQL syntax; check the manual"错误通常是由于SQL语法错误导致的。在这种情况下,你需要仔细检查你的SQL语句是否有语法错误,并确保它符合你正在使用的MySQL服务器版本的语法要求。可能的原因包括缺少逗号、括号不匹配、引号未正确闭合等等。 如果你已经确认你的SQL语句没有语法错误,但仍然遇到这个错误,那么可能是其他问题导致的。你可以尝试以下解决方法: - 检查你的数据库连接是否正确,包括用户名、密码、主机和端口等信息。 - 确保你正在使用的MySQL服务器版本与你的代码兼容。 - 检查你是否有足够的权限执行该SQL语句。 如果以上方法都没有解决问题,可能需要更详细的错误信息来进行排查。你可以尝试查看MySQL服务器的错误日志或运行时错误信息来获取更多的上下文信息。 解决description The server encountered an internal error that prevented it from fulfilling this reques 32559 解决java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException younger��: 亲测无效 一直是2.5 解决java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException wo41chuan_luan_ma: 这个文件怎么找啊 解决java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException qq_41737790: 本来就是2.5