完全拒绝abap中的GET事件

完全拒绝abap中的GET事件,abap,Abap,我想知道在没有实际调用(或只调用一次)的情况下,事件会发生多少次 到目前为止,我知道如何获得迭代的总数:行((ldb_include)node_table[]),但这仅在调用了get时有效,如果调用了get,它将在node_table中迭代,如果它有8798237个条目,它们都将是PUT,但是由于我已经有了迭代次数(这就是我所需要的),我不想把所有的值都放进去 我可以使用退出GET,但它只会转到下一个迭代。。。目前,我不知道如何完全退出GET 我尝试过使用,但它会立即引发选择结束事件,这不是我的

我想知道在没有实际调用(或只调用一次)的情况下,事件会发生多少次

到目前为止,我知道如何获得迭代的总数:
行((ldb_include)node_table[])
,但这仅在调用了
get
时有效,如果调用了
get
,它将在node_table中迭代,如果它有8798237个条目,它们都将是
PUT
,但是由于我已经有了迭代次数(这就是我所需要的),我不想把所有的值都放进去

我可以使用退出
GET
,但它只会转到下一个迭代。。。目前,我不知道如何完全退出GET

我尝试过使用,但它会立即引发选择结束事件,这不是我的想法

at selection-screen output.
  "process the selection screen

start-of-selection.
  get <node_tab>
    "lv_total = lines( (ldb_include)node_table[] )
    "some sort of REJECT to all get events
  "continue processing the rest of the code, using the lv_total

end-of-selection.
  "display the output
选择屏幕输出时的
。
“处理选择屏幕
开始选择。
收到
“lv_总计=行((ldb_包括)节点_表[])
“某种拒绝所有get事件的方式
“使用lv_total继续处理代码的其余部分
选择结束。
“显示输出
我可以用这样的旗子来实现它

if first execution = abap_true. "process it
else reject <node_tab>.
如果第一次执行=abap\u true。”处理它
否则拒绝。

但是,在所有情况下,它都会迭代所有GET事件,这与这个想法背道而驰。我想了解是否有一种更聪明(可能更优雅)的方法只迭代第一个GET,而跳过所有其他GET。

这就像说有一个包含联接表的数据库视图,但不需要一个表,如何让程序读取视图,但告诉数据库不读取一个表

不可能

唯一的解决办法是复制和改编。就这么简单


当然,逻辑数据库已经过时很长一段时间了,所以更喜欢使用数据库联接或其他更好的方法。

我是否正确理解您使用的是逻辑数据库,但只想提取与选择条件匹配的第一条记录?使用select single编写自己的select语句或者最多选择1行不是更容易吗?的确,但是我想知道LDB将进行多少次迭代和优化select将进行多少次迭代之间的差异,获得get量的唯一方法是使用get语句,因为它触发LDB填充其内部表。因此,将发生的情况是,用户将选择optmized select,但无论如何,我都必须调用GET来获取LDB在其内部表中的行数,并将其与我的select返回的行数进行比较……要么这样,要么我将LDB select复制并粘贴到我的代码中,因此我始终可以同时执行这两项操作,但是LDB根据所使用的选择屏幕字段执行不同的选择。。。你看,关键是要知道LDB会处理多少次,但我认为如果不实际调用get,你无法做到这一点,如果你调用get,你将不得不检查它将带来的所有值。。。至少我是这么认为的。等一下,我会重写这个问题,我不清楚我还没弄清楚你为什么要麻烦LDB。在现代(ish)环境中,我还没有看到在人力资源模块之外使用一个好的工具,使用这个工具的唯一原因是因为它已经获得了授权。