如何从内部表中获取特定条目的计数?

2020-09-03 01:54发布

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

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


专家们。

我有一个内部表,称为ivtbfinko。 在这里,我可以得到如下记录:-

1000

1000

1000

2000

2000

3000。

使用describe stmt,我们可以在此内部表中获取总记录。 但是我需要记录3000的计数,在本例中为1。

因此,如果计数为1 。 我需要从其他内部表(ivtbfhazu)中读取数据。

如果计数大于1。 我只需要从这个内部表(ivtbfinko)中读取。

有什么建议吗?

我希望我清楚。

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

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


专家们。

我有一个内部表,称为ivtbfinko。 在这里,我可以得到如下记录:-

1000

1000

1000

2000

2000

3000。

使用describe stmt,我们可以在此内部表中获取总记录。 但是我需要记录3000的计数,在本例中为1。

因此,如果计数为1 。 我需要从其他内部表(ivtbfhazu)中读取数据。

如果计数大于1。 我只需要从这个内部表(ivtbfinko)中读取。

有什么建议吗?

我希望我清楚。

付费偷看设置
发送
8条回答
能不能别闹
1楼 · 2020-09-03 02:15.采纳回答

嗨,

如果您知道要搜索的值,则对内部表进行排序,读取value = 3000的表,您将获得sy-tabix。

现在说

 排序it_tab升序。
 将表it_tab读入wa_tab索引sy-tabix,其中field1 ='3000'。

 从sy-tabix在it_tab循环到wa_tab。
   如果wa_tab-field1 ='3000'。
     计数=计数+ 1。
  其他。
   出口。
 结束循环。

 如果算NE 1。
  "逻辑
 其他
  "逻辑
 万一。

 
SAP小菜
2楼-- · 2020-09-03 02:22

当然您知道运行时的值。 它是经过硬编码的,是由用户填充的输入字段,还是来自功能模块/方法。

能不能别闹
3楼-- · 2020-09-03 02:21

为什么不简单地在表中循环并计算字段= 3000的整数,例如 这个

 数据计数器类型i。

 在itab处循环,其中field ='3000'。
   加1即可。
 结束循环。

 如果计数器> 1。
  ..
 其他。
   ..
 万一。
 

致谢

Marcin

bbpeas
4楼-- · 2020-09-03 02:18

我不知道运行时的值是多少。 我在这里仅以3000为例。

任何建议?

您也可以动态确定条件。

 在itab处循环(field ='此处需要检查一些动态值')。
   ..."在此计算条目数
 结束循环。
 

致谢

Marcin

葫芦娃快救爷爷
5楼-- · 2020-09-03 02:22

这是一个非常简单的要求:..

 数据:itab的开头出现0,
        f1(10)类型c,
        Itab结束。
 数据:lv_cnt类型i,
        lv_key(10)输入c。

        lv_key ='3000'。  "您的运行时密钥将lv_key输入此变量并执行该过程

        itab-f1 ='1000'。 附加itab。
        itab-f1 ='1000'。 附加itab。
        itab-f1 ='1000'。 附加itab。
        itab-f1 ='2000'。 附加itab。
        itab-f1 ='2000'。 附加itab。
        itab-f1 ='3000'。 附加itab。

        按f1排序itab。
        清除lv_cnt。

        在itab循环播放。
        如果itab-f1 = lv_key。
        将1加到lv_cnt。
        万一。

        结束循环。

        写:/lv_cnt。
        如果lv_cnt eq 1。
 *阅读..
        其他。
 *阅读..
        万一。

 

br,

Vijay

葫芦娃快救爷爷
6楼-- · 2020-09-03 02:25

您可以像下面这样:

将it_tab升序排序。

使用键field1 ='ANY VALUE'将表it_tab读入wa_tab。

如果sy-subrc ='0'。

lv_tabix = sy_tabix + 1。

将表it_tab读入wa_tab索引lv_tabix。

如果wa_tab-field1 ='3000'。

***您有超过3000的行

否则。

***您只有一行。

endif。

最好的问候

Yossi Rozenberg

zhangjiyang1323
7楼-- · 2020-09-03 02:29
使用对iwa_ivtbfinko- 进行排序。

 在ivtbfinko循环到。
 在新的上。
 计数器= 0。
  = wa_ivtbfinko- 。
 Endat。

 如果wa_ivtbfinko-  = 。
 计数器=计数器+ 1。
 万一。

 在的末尾。
 如果计数器GT 1。
 <在此处进行必要的动作>
 万一。  "等等.....
 Endat。
 结束循环。

field_name表示列名

wrk_field表示类似wa_ivtbfinko- 的变量。

编辑:SENTINEL于2010年3月16日上午10:36

一周热门 更多>