循环更快?

2020-08-27 11:26发布

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

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


你好

是否有一种方法可以使循环更快或以更快的速度替换循环? 我知道"所有条目",但是如果两个字段不兼容怎么办?

 SELECT rqposname RQIDENT
 进入表t_output
 来自tsp01
 在哪里rqposname EQ lv_email。

 在t_output ASSIGNING FIELD-SYMBOL()处循环。
 选择单作业名程序名变体listident
 INTO(-职位名称,-程序名称,-变体, -listident)
 来自tbtcp
 在哪里listident EQ  -rqident
 AND listident NE'0'。
 ENDLOOP。

即使t_output中只有" 1300"行,这也需要几分钟。

有什么提示吗?

谢谢。

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

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


你好

是否有一种方法可以使循环更快或以更快的速度替换循环? 我知道"所有条目",但是如果两个字段不兼容怎么办?

 SELECT rqposname RQIDENT
 进入表t_output
 来自tsp01
 在哪里rqposname EQ lv_email。

 在t_output ASSIGNING FIELD-SYMBOL()处循环。
 选择单作业名程序名变体listident
 INTO(-职位名称,-程序名称,-变体, -listident)
 来自tbtcp
 在哪里listident EQ  -rqident
 AND listident NE'0'。
 ENDLOOP。

即使t_output中只有" 1300"行,这也需要几分钟。

有什么提示吗?

谢谢。

付费偷看设置
发送
11条回答
CJones
1楼 · 2020-08-27 12:01.采纳回答

可能像下面的线程中那样加入吗?

选择加入问题

最诚挚的问候

帕勃罗

追夢秋陽
2楼-- · 2020-08-27 12:00

是的

但是不幸的是listident和rqident不是同一类型。

hongfeng1314
3楼-- · 2020-08-27 12:04

我知道"对于所有条目",但是如果两个字段不兼容怎么办?

为什么不键入内部表以便它们兼容?

小c菟菟
4楼-- · 2020-08-27 11:52

AndreaClöß值得将其转换为答案!

渐行渐远_HoldOn
5楼-- · 2020-08-27 12:07

两张CDS!

第一:

定义视图ztbtcp
   从tbtcp中选择
 {
   将(listident转换为abap.int4)转换为listident,
   变体
   姓
   职位名称
 } 

第二:

定义视图zoutput
    从tsp01中选择
     左外连接ztbtcp
     在tsp01.rqident = ztbtcp.listident
 {
 rqposname,
 listident,
 变体
 姓
 职位名称
 }
 其中listident <> 0
 

如果在输出结构中需要更多字段,请在第二个CDS中定义它们。

亦是此间程序员
6楼-- · 2020-08-27 12:08

尝试将内部表定义为哈希表。 尝试做同样的事情,它将很快

数据IT_TAB类型的散列表,带有唯一键carrid的Scarr

wang628962
7楼-- · 2020-08-27 12:04

你好Nils Bla

如果不是CDS视图,则可以使用以下代码作为解决方案。

 TYPES:BEGIN OF ty_tsp01,
          rqposname TYPE tsp01-rqposname,
          rqident TYPE tbtcp-listident,
        结束于ty_tsp01。

 数据:lv_email TYPE tsp01-rqposname,
       ls_tsp01 TYPE ty_tsp01,
       lt_tsp01 ty_tsp01的类型标准表。

 SELECT rqposname,rqident
 来自tsp01
 在哪里rqposname EQ @lv_email
 插入表@DATA(t_tsp01)。
 如果sy-subrc EQ 0。
   按rqident排序t_tsp01。
   循环t_tsp01 INTO DATA(ls_temp)。
     清除:ls_tsp01。
     ls_tsp01-rqposname = ls_temp-rqposname。
     ls_tsp01-rqident = ls_temp-rqident。
     附加ls_tsp01至lt_tsp01。
   结局。
 万一。

 选择工作名称,
        姓
        变体
        Listident
 来自tbtcp
 对于@ lt_tsp01中的所有条目
 在哪里listident = @ lt_tsp01-rqident和
       listident NE 0
 插入表@DATA(t_tbtcp)。
 如果sy-subrc EQ 0。
   SORT t_tbtcp BY listident。
 ENDIF。

致谢!

一周热门 更多>