+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средства » SE24 - Построитель объектов (Модератор: Dmitriy)Тема:
|- CL_SALV_TABLE - Класс для быстрого вывода ALV-таблицы на экран




Автор Тема: CL_SALV_TABLE - Класс для быстрого вывода ALV-таблицы на экран  (Прочитано 122930 раз)

0 Пользователей и 2 Гостей просматривают эту тему.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 685
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Тут случайно надо было получить выделенные строки из этой таблицы, вроде как сначала все просто

Код: You are not allowed to view links. Register or Login
DATA: gc_selection TYPE REF TO cl_salv_selections.
DATA: lt_rows      TYPE salv_t_row.

* Получаем объект обработки выделения и задаем выделение множества строк
gc_selection = gc_alv_table->get_selections( ).
gc_selection->set_selection_mode( cl_salv_selections=>multiple ).

* Далее по коду, для получения выделенных строк, нужно сделать следующее
* 1. Обязательно вызвать общий метод обновления данных
gc_alv_table->get_metadata( ).

* 2. Только после этого вызвать метод получения строк, иначе результат будет нулевой.
lt_rows[] = gc_selection->get_selected_rows( ).

Оффлайн Kastain

  • Newbie
  • *
  • Сообщений: 3
  • Reputation Power: 0
  • Kastain has no influence.
  • Пол: Мужской
  • YearsYears
Да без get_metadata не работает.
Я вот так написал получение строк.
 
Код: You are not allowed to view links. Register or Login
gc_selections->get_selected_rows( RECEIVING value  = lt_rows ).
« Последнее редактирование: Февраль 11, 2016, 09:33:49 am от Kastain »

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 685
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Да без get_metadata не работает.
Я вот так написал получение строк.
 
Код: You are not allowed to view links. Register or Login
gc_selections->get_selected_rows( RECEIVING value  = lt_rows ).
Ну твоя строка с моей: lt_rows[] = gc_selection->get_selected_rows( ) идентичны, тут как говорится кому как удобно, некоторые например еще так пишут: CALL METHOD gc_selections->get_selected_rows( RECEIVING value  = lt_rows ). и тоже будет работать. Кстати можно и так написать  lt_rows = gc_selection->get_selected_rows( ), т.е. не ставить квадратные скобки после lt_rows. Я их ставлю, чтобы наглядно было видно, что возвращается таблица результатов, а не структура. В общем тут как кому удобно так и оформляет текст. В новых ядрах можно вообще так написать:

LOOP AT gc_selection->get_selected_rows( ) INTO data(ls_rows).
  <Обработка выбранных строк>.
ENDLOOP.

Оффлайн JohnHurricane

  • Newbie
  • *
  • Сообщений: 2
  • Reputation Power: 0
  • JohnHurricane has no influence.
  • Пол: Мужской
  • YearsYears
Коллеги, добрый день.
Помогите, пожалуйста, разобраться в этом классе с методами SET_DECIMALS_COLUMN и SET_DECIMALS. Требуется сформатировать вывод под определенное количество десятичных знаков в одном из столбцов таблицы.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 685
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Помогите, пожалуйста, разобраться в этом классе с методами SET_DECIMALS_COLUMN и SET_DECIMALS. Требуется сформатировать вывод под определенное количество десятичных знаков в одном из столбцов таблицы.
Ну оно теоретически будет работать только для полей которые не ссылаются на единицы измерения. Т.е. если у вас там поле количество и оно ссылочное на единицу измерения, то эти методы работать кажется не будут.

Оффлайн JohnHurricane

  • Newbie
  • *
  • Сообщений: 2
  • Reputation Power: 0
  • JohnHurricane has no influence.
  • Пол: Мужской
  • YearsYears
You are not allowed to view links. Register or Login
Ну оно теоретически будет работать только для полей которые не ссылаются на единицы измерения. Т.е. если у вас там поле количество и оно ссылочное на единицу измерения, то эти методы работать кажется не будут.

Тип поля ATFLV - не ссылочное и без ЕИ, просто с плавающей запятой. Почему-то все равно складывается впечатление, что методы не хотят работать. Вы не пробовали с ними работать?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 685
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Тип поля ATFLV - не ссылочное и без ЕИ, просто с плавающей запятой. Почему-то все равно складывается впечатление, что методы не хотят работать. Вы не пробовали с ними работать?
Ну если честно то проще конечно задать такую вещь через правильное определение поля в словаре данных, а этот тип у вас с плавающей точкой, так что если я правильно понимаю то, что вы хотите сделать, то попробуйте сделать так:
Код: You are not allowed to view links. Register or Login
DATA: BEGIN OF gt_mkpf OCCURS 10,
      sel(1) TYPE c,
      amount TYPE atflv.
        INCLUDE STRUCTURE mkpf.
DATA: my_field(5) TYPE c,

* Получим каталог полей таблицы
  gc_columns = gc_alv_table->get_columns( ).

* Получим поле по имени
  gc_colwork->set_decimals( '5.2' ).
  gc_colwork->set_edit_mask( '_____' ).

* Вывести ALV-таблицу на экран
  gc_alv_table->display( ).