在FOR循环表达式中添加CHECK或CONTINUE

2020-08-17 20:42发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尝试。 et_agen...

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

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


尝试。
     et_agents = VALUE#(基础et_agents
                          在l_agents中使用ls_agent
                  LET check = NEW zcl_te_pos_deleg(CONV#(ls_agent-objid)
                               )-> is_within_limit(CONV#(iv_amount))
                  在
                   (COND#(当check = abap_true时
                             然后对应#(ls_agent)
                             其他抛出恢复zcx_swf_no_agent_found()
                           )
                   )
                       )。
 取消缠绕之前捕获zcx_swf_no_agent_found。
   恢复。
 ENDTRY。

 在表_行为INITIAL的地方删除et_agents。" <-我想避免这样做
 

问题在于,在引发异常并将其恢复后,在处理下一个IT_AGENTS迭代之前,在表ET_AGENTS中附加了空行。

FOR LOOP表达式中是否有一种方法像CHECK或CONTINUE语句一样,就像在传统的LOOP/ENDLOOP语句中一样?

谢谢

So田。

3条回答
哎,真难
2020-08-17 21:20

不存在(自7.53起)。

NB:在您的情况下,您可以使用以下技巧作为变通方法, 在每个循环中,将内部表的行添加为0或1行(语法未经验证;您可能需要定义内部表的实际完整类型而不是#):

 IN
  (COND的行为#(当check = abap_true时
                     然后值#((对应#(ls_agent)))" 1行
                     ELSE VALUE#()" 0行
                     ))

还有一些愚蠢的解决方法,我不想提及。

一周热门 更多>