如何基于MSEG中的最新BUDAT选择两个记录

2020-09-27 00:48发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)专家们。 我的内部表gt_ma...

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

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


专家们。

我的内部表gt_mara中有一组文章。 我想根据BUDAT(输入日期)从MSEG表中选择最近的两条数据记录,以确保GT_mara的所有条目具有良好的性能。

我可以使用MAX函数。 但是会返回单条记录。 但是我需要两个。

致谢

shefeek m k

5条回答
路亽曱_Ryan
2020-09-27 01:19

感谢您的回答。.仍然让我感到困惑,该怎么办..让我提供我的代码,我如何处理..请检查并给我更多性能的方法。 期望GT_mara是15000条记录,并且mseg中的每种材料都得到20000条记录。

--->首先选择mseg数据。

SELECT matnr bwart werks lgort umwrk shkzg budat_mkpf ebeln lifnr

从mseg到表gt_mseg中,用于gt_mara中的所有条目

matnr EQ gt_mara-matnr在哪里,并在so_werks和

中出现

bwart EQ'101'和lifnr NE空间。

----->选择最新的两个记录以进行比较。 如果相同的第一条记录更新为" SAME",则

----->如果不同,则将其更新为" DIFF"。 最后保留获得"相同"的记录。 删除其余全部。

排序gt_mseg由matnr budat降序。

清除lwa_mseg。

将gt_mseg循环播放到INTO gwa_mseg中。

lv_tabix = sy-tabix。

lwa_mseg_tmp = gwa_mseg。

在新的matnr。

lwa_mseg = lwa_mseg_tmp。

lv_count = 1。

gwa_mseg-compr ='SAME'。

从gwa_mseg修改gt_mseg索引lv_tabix TRANSPORTING compr。

ENDAT。

如果gwa_mseg-matnr = lwa_mseg-matnr。

如果lv_count =2。

如果lwa_mseg-umwrk = gwa_mseg-umwrk。

清除lv_count。

继续。

其他。

gwa_mseg-compr ='DIFF'。

lv_tabix = lv_tabix-1.

从gwa_mseg索引lv_tabix TRANSPORTING编译器修改gt_mseg。

清除lv_count。

继续。

ENDIF。

ENDIF。

如果lv_count = 1。

lv_count = 2。

ENDIF。

ENDIF。

ENDLOOP。

删除gt_mseg WHERE编译器<>'SAME'。

一周热门 更多>