Abap 如何在SAP中洗牌/随机化内部表

Abap 如何在SAP中洗牌/随机化内部表,abap,internal-tables,Abap,Internal Tables,我的ABAP报告中有一个由字符串组成的内部表。现在我想洗牌该表中的项目,即随机化它们在表中的顺序 是否有任何ABAP内置模块或功能模块可用于实现这一点,或者我必须手动将表随机化?因此,从评论中,我会使用类似的方法(警告:这是伪代码,不是解决方案…如果有人想将其扩展为“真实代码”请随便做,我很乐意投你正确答案的票,我只是想帮你。) 您是如何填充表格的?如果是通过SQL实现的,只需将ORDER BY排除在等式之外,如果使用类似APPEND的方法,只需通过“INSERT INDEX rnd”(其中rn

我的ABAP报告中有一个由字符串组成的内部表。现在我想洗牌该表中的项目,即随机化它们在表中的顺序


是否有任何ABAP内置模块或功能模块可用于实现这一点,或者我必须手动将表随机化?

因此,从评论中,我会使用类似的方法(警告:这是伪代码,不是解决方案…如果有人想将其扩展为“真实代码”请随便做,我很乐意投你正确答案的票,我只是想帮你。)


您是如何填充表格的?如果是通过SQL实现的,只需将ORDER BY排除在等式之外,如果使用类似APPEND的方法,只需通过“INSERT INDEX rnd”(其中rnd是一个随机数<行(tab)),对函数组F052进行修改,其中有一些函数模块,用于创建不同类型的随机数(int,p)。(我认为您必须首先调用FM RANDOM_INITIALIZE(同一个函数组)。)最简单的方法是在内部表中有一个整数类型的字段,为其分配一个随机数(大约在1到10000之间),并按此字段对内部表进行排序。这并不完美(从统计随机性的角度来看,但可以做到。(我想知道这背后的业务需求是什么…)@VXLozano数据确实来自一个数据库表。但仅仅忽略按排序是不够的,因为在大多数情况下,记录的顺序仍然相同。@JozsefSzikszai对于记录:业务要求是我有一个必须执行某些任务的用户列表,但分配用户的顺序是一样的。@JozsefSzikszai每天的任务应该是不同的。
data: init_table, final_table, line, newindex.

SELECT INTO TABLE init_table.

LOOP AT init_table INTO line.
  newindex = random_function( lines( final_table ) + 1 ).
  INSERT line INTO final_table INDEX newindex.
ENDLOOP.