启动例行ABAB

2020-09-03 16:54发布

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

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


大家好,

在启动例程中,我正在尝试使用较小的ABAP语法。 (请参见下面的屏幕截图):

在启动例程中,我想删除所有具有0"生产MT和0生产案例的行,但是我不想删除那些仍具有计划生产数量的行。换句话说,在下面的屏幕快照中,我不 t想要删除以黄色和绿色突出显示的行,但是我想删除所有未以黄色和绿色突出显示的行(无论非突出显示行的计划生产量如何)

如果我编写这样的启动例程语法:

在/BIC/生产MT <='0'和/BIC/生产案例<='0'

的情况下删除SOURCE_PACKAGE

然后还将删除已计划生产的黄色和绿色行。

ABAP或BW专家可以帮助我形成逻辑吗?

我会很感激的。

谢谢

(23.9 kB)

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

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


大家好,

在启动例程中,我正在尝试使用较小的ABAP语法。 (请参见下面的屏幕截图):

在启动例程中,我想删除所有具有0"生产MT和0生产案例的行,但是我不想删除那些仍具有计划生产数量的行。换句话说,在下面的屏幕快照中,我不 t想要删除以黄色和绿色突出显示的行,但是我想删除所有未以黄色和绿色突出显示的行(无论非突出显示行的计划生产量如何)

如果我编写这样的启动例程语法:

在/BIC/生产MT <='0'和/BIC/生产案例<='0'

的情况下删除SOURCE_PACKAGE

然后还将删除已计划生产的黄色和绿色行。

ABAP或BW专家可以帮助我形成逻辑吗?

我会很感激的。

谢谢

(23.9 kB)
付费偷看设置
发送
9条回答
软件心理学工程师
1楼-- · 2020-09-03 17:07

嗨,

正如Kaleeem所说,您的要求可能更加精确。 我认为以下逻辑应该起作用:

  1. 将SOURCE_PACKAGE复制到临时表中,例如source_temp。
  2. 按来源,材料, P.MT 降序排列P.case降序排列。
  3. 通过比较上述4个字段,从source_temp中删除adj dups。 和P.cases(如果有)的话,这应为每个期间保留1条记录,每行1行。

    li>
  4. 然后在source_temp循环并删除SOURCE_PACKAGE,如果同时 P.MT ,则其中period = source_temp-period和material = source_temp-material。 &P.cases <= 0。
渐行渐远_HoldOn
2楼-- · 2020-09-03 17:23

为什么您不希望删除黄色的第二行/中间行和绿色的第三行/最后一行,尽管它有0个生产MT和0个生产案例? 也没有计划的生产量。

这是否意味着您不希望删除生产MT或生产案例不为零的"会计期间"?

换句话说,您只想删除具有零生产MT和零生产案例的会计期间。

这是您要遵循的会计期间,而不仅仅是行。

请澄清。

当学会了学习
3楼-- · 2020-09-03 17:31

嗨,

如果我正确理解了您想要删除所有具有0个生产MT和0个生产案例的行,以及"那些具有零计划生产数量的行"的方法。

如果是上述情况,并且below语句已经对您有用(但它还会删除已计划生产的黄色和绿色行)。

在/BIC/生产MT <='0'和/BIC/生产案例<='0'

的情况下删除SOURCE_PACKAGE

然后为什么不在上面的语句中添加第三个条件以仅在计划生产为零(AND/BIC/计划生产<='0')时删除行。

因此,您的完整声明应为:

在/BIC/生产MT <='0'和

处删除源_包

/BIC/生产案例<='0'AND

/BIC/计划生产<='0'。

谢谢。

me_for_i
4楼-- · 2020-09-03 17:26

我认为您可以将这些条件放入过滤器中,而不必使用例程。

葫芦娃快救爷爷
5楼-- · 2020-09-03 17:25

从您的上一个解释中,我认为您应该将您的分组 首先通过您的欲望字段对source_package进行获取,并将您想要的记录获取到一个新的本地表中进行处理。 我的伪代码,例如:

 LOOP AT source_package INTO DATA(source)GROUP BY(period = source-period
                                                     计划=源计划
                                                     机器=源机器
                                                     材料=原材料
                                                     大小= GROUP SIZE)。
   如果大小= 1。
     LOOP AT GROUP源INTO DATA(mem)。
       检查mem-actual_prod> 0或mem-actual_prod_mt> 0。
       将mem附加到final_data。
     结局。
   其他。
     final_data = VALUE#(BASE final_data FOR mem IN GROUP源在哪里(Actual_prod> 0或
                                                                           actual_prod_mt> 0或
                                                                           planned_prod> 0)(mem))。
   万一。
 ENDLOOP。
Baoming ROSE
6楼-- · 2020-09-03 17:04

您在上面提到

"第8行和第9行属于同一会计期间,同一工厂,同一台机器,并且最重要的是同一物料,因此,如果删除第9行,则将无法计算生产率。"

第17和18行也是如此:

第17行和第18行属于同一会计期间,同一工厂,同一台机器,尤其是同一物料。 但是,您将在这里删除第18行。怎么会这样?

您还提到了生产率的计算方式:实际产量/计划产量* 24

但是在实际生产列中,一切都为零。 你能再澄清一下吗?

谢谢!

一周热门 更多>