2020-08-21 19:29发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
嗨,我有一个已排序的内部表,该表根据日期(DATUV)以降序排序。 从表中获取数据时,由于日期不同,我得到了多个重复记录。 我只想保留最新记录,并删除旧的重复记录。 请逻辑帮助我吗?
Shashwat Bharadwaj ,
如果我理解您的问题,您的意思是说,因为那里有多条记录 同一日期,您最近的条目不在顶部。 由于这些原因,您无法获取最新的记录。
下面是我的一些建议:
1)除了"日期"字段外,请检查是否还有其他字段 可以帮助您将最新的文章放在首位。 之后,您可以应用删除相邻的重复项。
2)另外,在使用"非关键"字段进行排序时,请使用STABLE BY关键字。 下面的代码可供参考。
按字段排序SO_IT_TAB。
此外,如果您可以让我们知道要获取的实际表的完整方案,我们将 能够更好地解决您的问题。 请帮助发布问题并提供足够的详细信息,这将有助于更快地解决问题。
问候!
在这里,您可以看到两个IDNRK 1000012和1000013。每个IDNRK都有两个日期。 在这里,我只希望显示具有最新日期的记录,而不是显示每个IDNRK的所有日期。
这是我正在编写的代码。
*从STKO和STPO表中获取数据。 SELECT stko〜stlty, stko〜stlnr, stko〜stlal, stko〜stkoz, stko〜bmein, stko〜bmeng, stko〜stlst, stpo〜stlkn, stpo〜stpoz, stpo〜datuv, stpo〜aennr, stpo〜idnrk, stpo〜posnr, stpo〜meins, stpo〜menge, stpo〜alpos, stpo〜ewahr, stpo〜clobk, stpo〜alpst, stpo〜alprf, stpo〜alpgr 从stko INNER JOIN stpo 开启stko〜stlty = stpo〜stlty AND stko〜stlnr = stpo〜stlnr 插入表@DATA(lt_stpo) 对于@lt_mast_temp中的所有条目 在哪里stko〜stlnr = @ lt_mast_temp-stlnr AND stko〜stlal = @ lt_mast_temp-stlal AND stko〜stlty IN @s_stlty AND stko〜stlst IN @s_stlst 和stko〜lkenz IN @s_lkenz 和stpo〜idnrk IN @s_idnrk 和stpo〜posnr IN @s_posnr。 如果sy-subrc = 0。 排序lt_stpo BY stlnr stlal。 万一。 万一。
如果表格已排序,则可以检查以下示例:
DATA(itab)=值tt_itab(FOR i = 1 THEN i + 1 UNTIL i> 100(date = sy-datum index = i))。 *最后输入: DATA( 行)=行(itab)。 DATA(最新条目)= itab [行]。 行=行-1. IF行>0。删除itab TO行 WHERE date = last_entry-date。 "如果您只想删除找到日期的行。 ENDIF。
此致
Andreas
我正在更新完整方案。 请提供您宝贵的意见。
嗨
这是一种非常古老的方法,(可能不好,如果您的数据量很大)。 ,这将起作用。
创建一些临时表以对其进行循环-并将最新的录音存储在决赛中。
it_stpo_temp [] = it_stpo []。 按idnrk datuv升序对it_stpo_temp进行排序。 按idnrk datuv升序对it_stpo进行排序。 move_flag =''。 以it_stpo_temp循环到wa_stpo_temp。 "获取由datuv排序的最后一条记录-因此将选择最大记录 在it_stpo循环到wa_stpo,其中idnrk = wa_stpo_temp-idnrl。 将对应的wa_stpo_temp移动到wa_stpo_final。 move_flag ='Y'。 结束循环。 如果move_flag ='Y'。 将wa_stpo_final附加到it_stpo_final。 万一。 move_flag =''。 结束循环。 " it_stpo_final [] ===是您的最终ittable
我正在更新整个方案。请提供您宝贵的意见。
最多设置5个标签!
Shashwat Bharadwaj ,
如果我理解您的问题,您的意思是说,因为那里有多条记录 同一日期,您最近的条目不在顶部。 由于这些原因,您无法获取最新的记录。
下面是我的一些建议:
1)除了"日期"字段外,请检查是否还有其他字段 可以帮助您将最新的文章放在首位。 之后,您可以应用删除相邻的重复项。
2)另外,在使用"非关键"字段进行排序时,请使用STABLE BY关键字。 下面的代码可供参考。
此外,如果您可以让我们知道要获取的实际表的完整方案,我们将 能够更好地解决您的问题。 请帮助发布问题并提供足够的详细信息,这将有助于更快地解决问题。
问候!
在这里,您可以看到两个IDNRK 1000012和1000013。每个IDNRK都有两个日期。 在这里,我只希望显示具有最新日期的记录,而不是显示每个IDNRK的所有日期。
这是我正在编写的代码。
如果表格已排序,则可以检查以下示例:
DATA(itab)=值tt_itab(FOR i = 1 THEN i + 1 UNTIL i> 100(date = sy-datum index = i))。
*最后输入:
DATA( 行)=行(itab)。
DATA(最新条目)= itab [行]。
行=行-1.
IF行>0。
删除itab TO行
WHERE date = last_entry-date。 "如果您只想删除找到日期的行。
ENDIF。
此致
Andreas
我正在更新完整方案。 请提供您宝贵的意见。
嗨
这是一种非常古老的方法,(可能不好,如果您的数据量很大)。 ,这将起作用。
创建一些临时表以对其进行循环-并将最新的录音存储在决赛中。
我正在更新整个方案。请提供您宝贵的意见。
一周热门 更多>