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

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条回答
clasier
2020-08-27 22:07

谢谢。 我说使用SELECT而不是OPEN CURSOR在视觉上更加紧凑。

带有WHERE和向上行的OPEN CURSOR:

 OPEN CURSOR cur for SELECT * FROM(db_table)
     在哪里" <===添加它
     按主键订购
     最多100000行。
 做。
   将下一游标cur插入表包大小packsize。
   如果sy-subrc <> 0。
     出口。
   万一。
 ENDDO。
 CLOSE CURSOR当前。

在技术上与以下命令相同:

 SELECT * FROM(db_table)
     哪里哪里)
     按主键订购
     到表
     多达100000行。

两者之间在数据库方面没有明显的性能差异。 功能没有差异(当然会有一些差异,但是在我们当前的案例中没有使用它们。)

事实上,我确实没有在讨论您的确切问题,这只是一般信息。

p>

SELECT不太详细。 据了解,您因此选择SELECT。

一周热门 更多>