1

我正在使用 ABAP 和 OpenSQL,我认为我正在运行 7.5 版,但我对此不太确定。

我尝试ORDER BY在我的SELECT. 我的问题是首先显示大写字母而不是小写字母,如下所示:

A B C D E F... a b c d e f- 但我当然想要这样:A a B b C c D d E e F f ...

我试过用ORDER BY UPPER( column2 )and来解决它ORDER BY LOWER( column2 ),但我总是收到以下错误(与 lower 相同):

未知的列名“UPPER(column2)”。直到运行时,您才能指定字段列表。

这是我的代码:

SELECT * FROM <database table>
  WHERE column1 = @inputParameter
  ORDER BY column2
  INTO CORRESPONDING FIELDS OF TABLE @export_structure
4

3 回答 3

1

或者您可以使用以下命令在 ABAP 层上对结果进行排序:

SORT export_structure BY column2 AS TEXT.

添加的AS TEXT根据当前语言环境的字母排序规则进行排序。ORDER BY不幸的是,它在 a 的子句中不可用SELECT

该解决方案在非常旧的版本上也应该可以正常工作。

于 2021-12-02T11:16:10.807 回答
0

当您的系统在版本 7.51 或更高版本上时,您可以使用WITH ... SELECT.

WITH 
  +tmp AS ( 
    SELECT name_first,
           UPPER( name_first ) AS name_first_upper 
    FROM adrp 
    WHERE persnumber = @inputParameter )
  SELECT name_first FROM +tmp
    ORDER BY name_first_upper
    INTO TABLE @DATA(lt_data).

WITH-Keyword允许您定义一个或多个“临时”SELECT,然后对这些 SELECT 的结果集执行 SELECT 查询。

于 2021-12-02T10:26:00.650 回答
0

我不认为Order by 支持功能,即使有一些动态功能可用。Docu 说它仅限于列语法。至少从 7.51 开始。

SAP 7.51 按文档选择订单

于 2021-12-02T01:40:46.700 回答