使用打开的游标下载数据块时出错

2020-08-27 22:07发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)嗨, 我想将数据块(每次10万...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

我想将数据块(每次10万条记录)下载到本地系统中。 在这里,我正在使用游标来做到这一点。 但是,只要系统要求用户更改或创建文件并导致转储,游标就会隐式关闭。

在第二次获取期间,我正在获取转储。 我尝试将光标与'WITH HOLD'一起使用以避免隐式关闭,但我一直遇到相同的错误。 有什么办法可以避免这种情况。

我的代码:

数据:lfa1的itab类型表,
 * lfa1的it2类型表,
  当前类型光标
  file_no TYPE i,
  c(1),
  路径TYPE字符串VALUE'F:\'。
  带有cur的OPEN CURSOR用于SELECT * FROM lfa1。
 做。
  在表itab包大小100000中获取下一个光标。
  如果sy-subrc ne 0。
  出口。
  万一。
  path ='F:\'。
  file_no = file_no + 1。
  c = file_no。
  CONCATENATE路径'file'c​​'.csv'INTO路径。
  通话功能'GUI_DOWNLOAD'
  出口
 * BIN_FILESIZE =
  FILENAME =路径
  桌子
  DATA_TAB = Itab。
 ENDDO。
 CLOSE CURSOR当前。

错误:

ABAP类别编程错误

运行时错误DBSQL_INVALID_CURSOR

除外。 CX_SY_OPEN_SQL_DB

未分配应用程序组件

短文本:光标已关闭或尚未打开。
6条回答
黑丝骑士
2020-08-27 22:23

嗨,Sandra Rossi,

我的意思是,我将使用您的建议在运行时定义一个where条件。

 DO。
   OPEN CURSOR cur FOR SELECT * FROM(db_table)ORDER BY PRIMARY KEY。
   不要在TIMES内下载_packages。  "以跳过已处理的记录
     在表 PACKAGE SIZE packsize中获取下一个光标。
   ENDDO。
  在表 PACKAGE SIZE packsize中获取下一个光标。"获取当前pkg 

当我的数据较少时,上面的代码也以相同的方式工作。 使用上面的代码,如果我尝试下载10万个打包大小为10万个记录的记录,则我必须获取65次而不是10次。 不幸的是,我要获取数百万个记录(在极少数情况下为数十亿个),这种方法将比您花费更多的时间。

我只是想说,您的方法更可行。

谢谢

一周热门 更多>