-
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