虚拟LET表达式的还原

2020-09-13 10:28发布

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

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


 TYPES:类型ty_ekpo开头,
          werks TYPE werks_d,
          Menge TYPE bstmg,
        ty_ekpo的结尾,
        tt_ekpo带有默认键的ty_ekpo类型表。

 数据:lt_werks类型tt_ekpo。

 数据(lt_ekpo)=值tt_ekpo(
                         (werks = 1000 menge = CONV bstmg('100.50'))
                         (werks = 1000 menge = CONV bstmg(100))
                         (werks = 1001 menge = CONV bstmg('100.60'))
                         (werks = 1001 menge = CONV bstmg(100))
                         (werks = 1002 menge = CONV bstmg('100.70'))
                         (werks = 1002 menge = CONV bstmg(100))。

 BREAK-POINT。
 在lt_ekpo分配字段符号()上循环
                 GROUP BY(werks =  -werks)
                 上升
                 分配FIELD-SYMBOL()。

 **两个声明
 * DATA(lt_werks1)=值tt_ekpo(FOR M IN GROUP (m))。
 * lw_werks = REDUCE#(INIT r_wa TYPE ty_ekpo
 *用于lt_werks1
 *下一个r_wa-menge = r_wa-menge + wa-menge
 * r_wa-werks = wa-werks)。
 *附加lw_werks至lt_werks。

 * 减少
   DATA(lw_total)=减少ty_ekpo(
                      INIT r_total TYPE ty_ekpo
                      FOR WA VALUE tt_e​​kpo(FOR M IN组(m))
                      令x = wa IN
                      NEXT r_total-menge = wa-menge + r_total-menge
                      r_total-werks = wa-werks)。
   追加lw_total lt_werks。
 结局。

 cl_demo_output => display(lt_werks)。

在上面的示例中,我试图为每个植物添加数量。 无论我如何被迫使用LET表达式,它都与REDUCE运算符配合良好。 (变量'x'没有用)

为什么要添加LET:在调试REDUCE代码时,在" FOR m IN GROUP "语句之后,光标将转到" NEXT r_total-menge"语句,以防止我添加了LET语句

我们不能在没有LET的情况下实现这一目标。 请纠正我。

谢谢

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

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


 TYPES:类型ty_ekpo开头,
          werks TYPE werks_d,
          Menge TYPE bstmg,
        ty_ekpo的结尾,
        tt_ekpo带有默认键的ty_ekpo类型表。

 数据:lt_werks类型tt_ekpo。

 数据(lt_ekpo)=值tt_ekpo(
                         (werks = 1000 menge = CONV bstmg('100.50'))
                         (werks = 1000 menge = CONV bstmg(100))
                         (werks = 1001 menge = CONV bstmg('100.60'))
                         (werks = 1001 menge = CONV bstmg(100))
                         (werks = 1002 menge = CONV bstmg('100.70'))
                         (werks = 1002 menge = CONV bstmg(100))。

 BREAK-POINT。
 在lt_ekpo分配字段符号()上循环
                 GROUP BY(werks =  -werks)
                 上升
                 分配FIELD-SYMBOL()。

 **两个声明
 * DATA(lt_werks1)=值tt_ekpo(FOR M IN GROUP (m))。
 * lw_werks = REDUCE#(INIT r_wa TYPE ty_ekpo
 *用于lt_werks1
 *下一个r_wa-menge = r_wa-menge + wa-menge
 * r_wa-werks = wa-werks)。
 *附加lw_werks至lt_werks。

 * 减少
   DATA(lw_total)=减少ty_ekpo(
                      INIT r_total TYPE ty_ekpo
                      FOR WA VALUE tt_e​​kpo(FOR M IN组(m))
                      令x = wa IN
                      NEXT r_total-menge = wa-menge + r_total-menge
                      r_total-werks = wa-werks)。
   追加lw_total lt_werks。
 结局。

 cl_demo_output => display(lt_werks)。

在上面的示例中,我试图为每个植物添加数量。 无论我如何被迫使用LET表达式,它都与REDUCE运算符配合良好。 (变量'x'没有用)

为什么要添加LET:在调试REDUCE代码时,在" FOR m IN GROUP "语句之后,光标将转到" NEXT r_total-menge"语句,以防止我添加了LET语句

我们不能在没有LET的情况下实现这一目标。 请纠正我。

谢谢

付费偷看设置
发送
2条回答
Climb_Ma
1楼 · 2020-09-13 10:56.采纳回答

首先,我不明白您添加LET语句的原因,因为在没有LET的情况下,它仍然可以正确地对数据求和并具有与对两个语句部分相同的输出。

第二,我认为您不必使用FOR 2次,这可能很简单:

 DATA(LW_TOTAL)=减少TY_EKPO(
INIT R_TOTAL TYPE TY_EKPO
对于M组
下一个R_TOTAL-MENGE = M-MENGE + R_TOTAL-MENGE
R_TOTAL-WERKS = M-WERKS)。
APPEND LW_TOTAL到LT_WERKS。
Tong__Ming
2楼-- · 2020-09-13 10:54

谢谢

一周热门 更多>