2013-05-16 5 views
1

Мне нужно было вывести таблицу TCURR в сетку ALV. Все пошло нормально, но когда пользователь сортирует таблицу по «действительной с» дате (GDATU), произошли странные вещи. Сортировка в порядке возрастания ведет себя как сортировка в порядке убывания и наоборот. Это связано с тем, что поле GDATU содержит дату в инвертированном формате и имеет домен GDATU_INV с процедурой преобразования INVDT, которая преобразует дату на лету. Сетка ALV корректно отображает дату, но сортировка выполняется с помощью инвертированных дат.Сортировка сетки ALV инвертированной датой

Я решил так:

  1. Я объявил структуру таблицы, аналогичную TCURR и заменить домен GDATU_INV с простым DATUM.
  2. я преобразовал перевернутые даты в обычный,
  3. Я заполнил мою таблицу с преобразованными датами
  4. После создания каталога поля через FM LVC_FIELDCATALOG_MERGE согласно TCURR структуре Пишет

CONVEXIT,
REF_TABLE,
DATATYPE,
DOMNAME

Поля GDATU линии значения

'',
'',
'DATS',
'Datum' соответственно.

Есть ли более эффективное и простое решение этой проблемы?

ответ

2

Вы должны использовать свою новую структуру в LVC_FIELDCATALOG_MERGE, вместо использования TCURR, что означало бы, что вам не придется перезаписывать настройки в каталоге полей после факта. Но это довольно мелочь.

Я не думаю, что у вас был выбор, кроме как использовать структуру с элементом данных, который ведет себя так, как вам нужно.

Изучите классы простого ALV. (CL_SALV*) Они хорошо документированы и намного проще в использовании, чем теперь устаревшие функциональные модули ALV. (В частности, создание каталога полей - это намного меньше хлопот).

 Смежные вопросы

  • Нет связанных вопросов^_^