Текущее время: Вт, июл 29 2025, 17:45

Часовой пояс: 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 часа


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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