对内表中满足条件的某些列进行排序

问题描述 投票:0回答:2

我有一张内部桌子

我想这样显示它:

.

请注意,只有 a1 的日期按降序排序。所以我想知道是否有一种方法可以只对属于 a1 的日期进行排序,而让其他日期保持不变。

我是初学者,所以如果答案很容易理解,我会很感激

abap
2个回答
0
投票

也可以对内部表字段进行降序排序:

SORT itab
     BY cust_id
        prod_id
        sale_date DESCENDING.

https://help.sap.com/doc/abapdocu_752_index_htm/7.52/en-US/abapsort_itab.htm


0
投票

您可以使用 LOOP/GROUP 方法对表进行排序 在将其发送到 ALV (不是工作示例):

LOOP AT itab ASSIGNING FIELD-SYMBOL(<line>) GROUP BY ( key1 = <line>-cust_id key2 = <line>-prod_id ) ASCENDINGdd ASSIGNING FIELD-SYMBOL(<grp1>). LOOP AT GROUP <grp1> ASSIGNING FIELD-SYMBOL(<member>). members = VALUE #( BASE members ( <member> ) ). ENDLOOP. IF <grp1>-prod_id = 'A1'. SORT members BY sale_date DESCENDING. ELSE. SORT members BY sale_date ASCENDING. ENDIF. APPEND LINES OF members TO it_final. ENDLOOP.

    第一个循环:按 cust_id/prod_id 升序排序。
  • 第二个循环:获取组中的所有成员,并根据需要排序,然后追加到最终表中。
参考:

https://help.sap.com/doc/abapdocu_latest_index_htm/latest/en-US/index.htm?file=abaploop_at_itab_group_by.htm

© www.soinside.com 2019 - 2024. All rights reserved.