首页 > 解决方案 > 编译器错误在循环 SQL 中选择单个计数

问题描述

我做了一个表格,其中添加了材料编号,材料文本等(selected_materials)。现在我想用这个表创建一个循环,以便在EKPO表中计算材料编号被提及的频率,以便以后使用它。

对于下面的代码,编译器说这WHERE <selected_material>-matnr是无效的,即使WRITE: ... <selected_material>-matnr = ...是有效的。

  LOOP AT selected_materials ASSIGNING <selected_material>.

    DATA: lv_count TYPE i.

    SELECT SINGLE COUNT(*)
      From Ekpo 
      INTO lv_count 
      WHERE <selected_material>-matnr = Ekpo-matnr.

    WRITE: <selected_material>-maktx, <selected_material>-matnr, <selected_material>-meins, <selected_material>-msehl, <selected_material>-ekpo_count.
    NEW-LINE.

  ENDLOOP.

标签: loopsselectcountabap

解决方案


你的WHERE情况不正确,应该是这样的:

SELECT COUNT( * )
  FROM ekpo 
  INTO lv_count 
  WHERE matnr EQ <selected_material>-matnr.

请注意SINGLE也被删除,因为(我猜)问题是,EKPO材料编号有多少条目(SELECT COUNT( * )...)而不是,如果至少有一个(SELECT SINGLE COUNT( * )...)

还有一件事:在 中WRITE,您显示字段:-ekpo_count,但在SELECT COUNT( * )lv_count 中使用。


推荐阅读