Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 按倒排日期对ALV网格排序_Sorting_Grid_Abap_Alv_Invert - Fatal编程技术网

Sorting 按倒排日期对ALV网格排序

Sorting 按倒排日期对ALV网格排序,sorting,grid,abap,alv,invert,Sorting,Grid,Abap,Alv,Invert,我需要将TCURR表输出到ALV网格中。一切都进行得很顺利,但当用户按“有效起始日期”(GDATU)对表进行排序时,奇怪的事情发生了。 按升序排序与按降序排序相同,反之亦然。这是因为字段GDATU包含反向格式的日期,并且具有域GDATU_INV和转换例程INVDT,该转换例程可动态转换日期。ALV网格正确显示日期,但排序是按倒排的日期进行的 我是这样解决的: 我声明了类似于TCURR的表结构,并将GDATU\u INV域替换为简单的DATUM 我把颠倒的日期转换成了通常的日期 我把转换后的日期填

我需要将TCURR表输出到ALV网格中。一切都进行得很顺利,但当用户按“有效起始日期”(
GDATU
)对表进行排序时,奇怪的事情发生了。 按升序排序与按降序排序相同,反之亦然。这是因为字段
GDATU
包含反向格式的日期,并且具有域
GDATU_INV
和转换例程
INVDT
,该转换例程可动态转换日期。ALV网格正确显示日期,但排序是按倒排的日期进行的

我是这样解决的:

  • 我声明了类似于
    TCURR
    的表结构,并将
    GDATU\u INV
    域替换为简单的
    DATUM
  • 我把颠倒的日期转换成了通常的日期
  • 我把转换后的日期填在桌子上
  • 根据我写入的
    TCURR
    结构,通过FM
    LVC\u FIELDCATALOG\u MERGE
    生成字段目录后
  • 凸度,
    参考表格,
    数据类型,
    域名

    GDATU行值的字段

    '',
    '',
    “DATS”,
    分别为“基准”


    有没有更有效、更简单的解决方案?

    您应该能够在
    LVC\u FIELDCATALOG\u MERGE
    中使用新结构,而不是使用TCURR,这意味着您不必在事后覆盖字段目录中的设置。但这是一件很小的事情

    我认为您别无选择,只能使用具有数据元素的结构,该数据元素的行为符合您的需要

    不过,一定要研究一下简单的ALV类。(
    CL\u SALV*
    )它们有很好的文档记录,比现在过时的ALV功能模块更易于使用。(尤其是生成字段目录的麻烦要少得多)