Текущее время: Пн, сен 15 2025, 02:38

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 13 ] 
Автор Сообщение
 Заголовок сообщения: Программно установить (выбрать из существующих) формат (layout) ALV
СообщениеДобавлено: Ср, июл 02 2008, 10:58 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
Господа, как програмно задать (выбрать из существующих) формат АЛВ, т.е. аналогично тому как это бы сделал юзверь

Чувствую что очень просто, но не нашел ни в репозитарии, ни в поиске.
Помогите!


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Ср, июл 02 2008, 11:03 
Специалист
Специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 22 2006, 11:14
Сообщения: 136
как-то вроде так
Code:
parameters: pa_varnt LIKE disvariant-variant.

at selection-screen on value-request for pa_varnt.

DATA: l_exit(1)  TYPE c,
        var type disvariant.

  IF sy-ucomm EQ 'GET'.
    EXIT.
  ENDIF.

  var-report = sy-cprog.
  var-variant = pp_varnt.

  CALL FUNCTION 'LVC_VARIANT_SAVE_LOAD'
    CHANGING
      CS_VARIANT      = var
    EXCEPTIONS
      NOT_FOUND       = 1
      WRONG_INPUT     = 2
      FC_NOT_COMPLETE = 3
      OTHERS          = 4.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  else.
    pp_varnt = var-variant.
  ENDIF.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 07:38 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
А как узнать формат, который был выбран последним (тот что в списке форматов зелененьким выделен)?

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 07:59 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
пошел_погулять написал(а):
как-то вроде так
Code:
parameters: pa_varnt LIKE disvariant-variant.

at selection-screen on value-request for pa_varnt.

DATA: l_exit(1)  TYPE c,
        var type disvariant.

  IF sy-ucomm EQ 'GET'.
    EXIT.
  ENDIF.

  var-report = sy-cprog.
  var-variant = pp_varnt.

  CALL FUNCTION 'LVC_VARIANT_SAVE_LOAD'
    CHANGING
      CS_VARIANT      = var
    EXCEPTIONS
      NOT_FOUND       = 1
      WRONG_INPUT     = 2
      FC_NOT_COMPLETE = 3
      OTHERS          = 4.
  IF SY-SUBRC <> 0.
    MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
            WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  else.
    pp_varnt = var-variant.
  ENDIF.


Имелась ввиду установка формата без каких-либо диалогов, т.е. чтобы после выполнения неких действий мы имели АЛВ некоего заданного формата (без какого либо участия юзверя)

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 08:04 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
lynx_oemk написал(а):
А как узнать формат, который был выбран последним (тот что в списке форматов зелененьким выделен)?

Зелененький - это не последний, это вариант по-умолчанию. Быстро узнать - простой селект в таблицу LTDXD "Варианты просмотра по умолчанию" с ключом REPORT = имя_вашей_программы.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 08:06 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
lynx_oemk написал(а):
Имелась ввиду установка формата без каких-либо диалогов, т.е. чтобы после выполнения неких действий мы имели АЛВ некоего заданного формата (без какого либо участия юзверя)

Заполните параметр IS_VARIANT названием требуемого варианта при вызове метода SET_TABLE_FOR_FIRST_DISPLAY или ФМ REUSE_ALV_GRID_DISPLAY*.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 08:12 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
John Doe написал:
lynx_oemk написал(а):
А как узнать формат, который был выбран последним (тот что в списке форматов зелененьким выделен)?

Зелененький - это не последний, это вариант по-умолчанию. Быстро узнать - простой селект в таблицу LTDXD "Варианты просмотра по умолчанию" с ключом REPORT = имя_вашей_программы.

Значит я не прав по поводу зелененького, но мне нужен именно последний, а не по умолчанию.

Например АЛВ 1-й раз отображается с вариантом вар1, затем юзер его меняет сам на вар2, затем на вар3, затем нажимет кнопку и в обработчике этой кнопки мне нужно получить последний вариант, т.е. вар3

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 08:15 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
John Doe написал:
lynx_oemk написал(а):
Имелась ввиду установка формата без каких-либо диалогов, т.е. чтобы после выполнения неких действий мы имели АЛВ некоего заданного формата (без какого либо участия юзверя)

Заполните параметр IS_VARIANT названием требуемого варианта при вызове метода SET_TABLE_FOR_FIRST_DISPLAY или ФМ REUSE_ALV_GRID_DISPLAY*.

Формат надо установить не сначала, а уже в процессе работы программы, например по нажатию кнопки

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 08:24 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
lynx_oemk написал(а):
Например АЛВ 1-й раз отображается с вариантом вар1, затем юзер его меняет сам на вар2, затем на вар3, затем нажимет кнопку и в обработчике этой кнопки мне нужно получить последний вариант, т.е. вар3

Метод GET_VARIANT класса CL_GUI_ALV_GRID.

PS: не занимайтесь самолечением, т.е. не стоит изобретать велосипед. Для установки варианта в момент работы существует стандартный функционал. И ничего страшного, что приходится делать это ручками.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 09:19 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
John Doe написал:
lynx_oemk написал(а):
А как узнать формат, который был выбран последним (тот что в списке форматов зелененьким выделен)?

Зелененький - это не последний, это вариант по-умолчанию. Быстро узнать - простой селект в таблицу LTDXD "Варианты просмотра по умолчанию" с ключом REPORT = имя_вашей_программы.

Зелененький - это текущий вариант, т.е. выбранный последним, а формат по умолчанию - это формат с зеленой галочкой в поле "предварительная настройка"

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 12:30 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
Всем спасибо за помощь, но таким способом (малой кровью) проблема не решилась. Поэтому излагаю суть проблемы - может удастся устранить причину проблемы.

1) Есть 2 АЛВ списка. (списки различны по сути - поэтому не могут быть представлены с помощью разл.форматов одного АЛВ).
Оба списка реализованы с пом. REUSE_ALV_GRID_DISPLAY
2) Список 1 отображается сразу с некоторым форматом 1
3) Юзер выбирает формат 2
4) Юзер нажимает кнопку, по этой кнопке вновь вызывается REUSE_ALV_GRID_DISPLAY для отображения списка 2.
5) Возвращаемся из списка 2 (кнопкой "назад"), там по прежнему формат 2
6) НО!!! при разворачивании свернутых промежуточных сумм, оказывается, что отдельные строки не те что должны быть (((
7) т.е. как будто строки промежут.сумм правильные, а их подчиненные строки не соответствуют формат 2

ЗЫ: если заново выбрать формат 2, то все будет корректно.

Сильно отладкой не загонялся, может кто знает

Видимо, проблема в том, что одной функцией вызываются 2 разных АЛВ

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 12:59 
Старший специалист
Старший специалист

Зарегистрирован:
Пн, авг 28 2006, 11:24
Сообщения: 292
Пол: Мужской
John Doe написал:
lynx_oemk написал(а):
Заполните параметр IS_VARIANT названием требуемого варианта при вызове метода SET_TABLE_FOR_FIRST_DISPLAY или ФМ REUSE_ALV_GRID_DISPLAY*.



Для параметра IS_VARIANT заполните REPORT и HANDLE - уникальным значением для каждого грида в программе. Тогда изменение формата одного грида не поменяет формат для другого.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 04 2008, 14:47 
Специалист
Специалист

Зарегистрирован:
Ср, июл 02 2008, 09:49
Сообщения: 110
Откуда: Старый Оскол
Rokhay написал:
John Doe написал:
lynx_oemk написал(а):
Заполните параметр IS_VARIANT названием требуемого варианта при вызове метода SET_TABLE_FOR_FIRST_DISPLAY или ФМ REUSE_ALV_GRID_DISPLAY*.



Для параметра IS_VARIANT заполните REPORT и HANDLE - уникальным значением для каждого грида в программе. Тогда изменение формата одного грида не поменяет формат для другого.

Не сработало, все равно глючит (((

ЗЫ и кстати второй грид юзается без форматов

_________________
Кенни мне больше не нравится, он совсем перестал общаться (c) Cartman, South Park


Принять этот ответ
Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 13 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot]


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB