按倒排日期对ALV网格进行排序
问题描述:
我需要将TCURR表格输出到ALV网格中。一切都很顺利,但当用户根据“有效日期”(GDATU
)排序表时发生了奇怪的事情。 按升序排序表现为按降序排序,反之亦然。这是因为GDATU
字段包含反向格式的日期,并且具有域0123',其中转换例程INVDT
在运行中转换日期。 ALV网格正确显示日期,但排序是通过倒排日期完成的。按倒排日期对ALV网格进行排序
我解决了它这样的:
- 我宣布类似
TCURR
表结构和更换GDATU_INV
域与简单DATUM
。 - 我转换倒日期,常使用的
- 我填充我的表与所述转换后的日期
- 根据
TCURR
结构写到
CONVEXIT,
REF_TABLE通过FM LVC_FIELDCATALOG_MERGE
生成字段目录后,
DATATYPE,
DOMNAME
所述GDATU线的字段的值
'',
'',
'DATS',
'分别DATUM'。
是否有更高效和简单的解决方案来解决这个问题?
答
您应该可以在LVC_FIELDCATALOG_MERGE
中使用您的新结构,而不是使用TCURR,这意味着事实之后您不必覆盖字段目录中的设置。但这是一件很小的事情。
我不认为你有任何选择,只能使用一个数据元素的行为,你需要它的方式。尽管如此,请仔细研究简单的ALV类。 (CL_SALV*
)它们有很好的文档记录,比现在过时的ALV功能模块更容易使用。 (特别是生成字段目录的麻烦少很多)。