+ Sapforum.Biz » Инструменты » ABAP - Инструментальные средстваТема:
|- ALV Grid не показывается на подэкране закладки




Автор Тема: ALV Grid не показывается на подэкране закладки  (Прочитано 15263 раз)

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

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Всем добрый день.

Хочу поместить на подэкран в закладке ALV Grid. Для основного экрана создан элемент tabstrip, созданы области подэкранов, созданы сами подэкраны, логика для них и для основного экрана. Делаю как обычно - создание контейнера, потом самого грида, потом set_table_for_first_display. Но ничего не выводится на подэкран! Вообще ничего.

Может кто сталкивался с такой ситуацией.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Создание ALV Grid выполняется в PBO подэкрана. Сейчас попробовал с помощью аналогичного кода создать ALV Grid на основном экране - все создается.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Хочу поместить на подэкран в закладке ALV Grid. Для основного экрана создан элемент tabstrip, созданы области подэкранов, созданы сами подэкраны, логика для них и для основного экрана. Делаю как обычно - создание контейнера, потом самого грида, потом set_table_for_first_display. Но ничего не выводится на подэкран! Вообще ничего.
Делал и не раз, и не один даже грид на подэкране размещал а до 4, а вообще в целом на кажется закладках шести было штук 20 гридов и все работало. Вопрос первый, контейнер создался? Есть подозрение что контейнер не создан на подэкране, т.е. при создании связка подэкрана с элементом контейнера не правильно определена.

You are not allowed to view links. Register or Login
Может кто сталкивался с такой ситуацией.
Нет, у меня все работало.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Логика основного (5001) экрана:

Код: You are not allowed to view links. Register or Login
process before output.
  module pbo_5001.
  call subscreen ss_5010 including sy-repid '5010'.
  call subscreen ss_5020 including sy-repid '5020'.

process after input.
  module pai_exit_5001 at exit-command.
  module pai_5001.
  call subscreen ss_5010.
  call subscreen ss_5020.

Логика подэкрана (5010)6

Код: You are not allowed to view links. Register or Login
process before output.
  module pbo_5010.

process after input.
  module pai_5010.

Модуль pbo_5010:

Код: You are not allowed to view links. Register or Login
module pbo_5010 output.
  call method gcl_screen_5010->pbo.
endmodule.                 " PBO_5010  OUTPUT

Метод pbo:

Код: You are not allowed to view links. Register or Login
  method pbo.

    data:
      ls_layout type lvc_s_layo.

    ls_layout-zebra = 'X'.
    ls_layout-cwidth_opt = 'X'.
    ls_layout-no_totline = 'X'.
    ls_layout-no_toolbar = 'X'.

    if me->screen eq '5010' and g_custom_cont_1 is initial.

      call method build_fieldcat.


      create object g_custom_cont_1
        exporting
          container_name              = 'ALV_GRID_5010'
          repid                       = sy-repid
          dynnr                       = sy-dynnr
        exceptions
          cntl_error                  = 1
          cntl_system_error           = 2
          create_error                = 3
          lifetime_error              = 4
          lifetime_dynpro_dynpro_link = 5
          others                      = 6.

      create object g_alv_grid_1
        exporting
          i_parent          = g_custom_cont_1
        exceptions
          error_cntl_create = 1
          error_cntl_init   = 2
          error_cntl_link   = 3
          error_dp_create   = 4
          others            = 5.

      call method g_alv_grid_1->set_table_for_first_display
        exporting
          is_layout                     = ls_layout
        changing
          it_outtab                     = gt_screen_tab_1[]
          it_fieldcatalog               = me->fieldcat[]
        exceptions
          invalid_parameter_combination = 1
          program_error                 = 2
          too_many_lines                = 3
          others                        = 4.

    endif.

Описание переменных:

Код: You are not allowed to view links. Register or Login
data: g_custom_cont_1 type ref to cl_gui_custom_container,
      g_alv_grid_1 type ref to cl_gui_alv_grid.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Посмотрел scn.sap.com - там всё по этому образу и подобию сделано.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Пробовал без классов, вставить код непосредственно в модуль pbo_5010, помещал его в pbo основного экрана - без толку. Может какое обновление надо делать?

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Посмотрел scn.sap.com - там всё по этому образу и подобию сделано.
Вот тут вот проверьте контейнер создан и еще проверьте на подэкране элемент контейнера так же называется ALV_GRID_5010? Там же связка идет через это имя элемента на подэкране.
Код: You are not allowed to view links. Register or Login
      create object g_custom_cont_1
        exporting
          container_name              = 'ALV_GRID_5010'
          repid                       = sy-repid
          dynnr                       = sy-dynnr
        exceptions
          cntl_error                  = 1
          cntl_system_error           = 2
          create_error                = 3
          lifetime_error              = 4
          lifetime_dynpro_dynpro_link = 5
          others                      = 6.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Создаётся, sy-subrc во всех вызовах 0, имя задано верно.

Оффлайн Uukrul

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

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
You are not allowed to view links. Register or Login
Создаётся, sy-subrc во всех вызовах 0, имя задано верно.
Можно показать экраны картинками с именами элементов?

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: ALV Grid не показывается на подэкране закладки
« Ответ #10 : Июль 10, 2013, 01:34:35 pm »
Скрины экранов.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: ALV Grid не показывается на подэкране закладки
« Ответ #11 : Июль 10, 2013, 01:55:40 pm »
Фух. Разобрался. При создании контейнера нужно указывать не номер подэкрана, на котором он расположен, а номер основного экрана, в данном случае правильно указывать 5001.

:-)

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: ALV Grid не показывается на подэкране закладки
« Ответ #12 : Июль 10, 2013, 03:07:09 pm »
Ну я всегда вот так объявлял контейнеры (т.е. без указания программы и экрана):
Код: You are not allowed to view links. Register or Login
  create object ref_container_0250
    exporting
      container_name              = 'CONTROL_0250'
    exceptions
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5
      others                      = 6.
Поэтому с такой проблемой никогда похоже и не сталкивался.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: ALV Grid не показывается на подэкране закладки
« Ответ #13 : Июль 22, 2013, 05:13:53 pm »
Всем добрый вечер.

Ещё одна проблема с ALV Grid в подэкране - не видно стандартную панель инструментов ALV. Как её вернуть? Вот такой код заведует созданием объектов:

Код: You are not allowed to view links. Register or Login
      call method me->build_fieldcat.


      create object gr_custom_cont_1
        exporting
          container_name = 'ALV_GRID_5010'
          repid          = sy-repid
          dynnr          = '5001'.

      create object gr_alv_grid_1
        exporting
          i_parent = gr_custom_cont_1.

      call method gr_alv_grid_1->set_table_for_first_display
        exporting
          is_layout       = ls_layout
        changing
          it_outtab       = gt_screen_tab_1[]
          it_fieldcatalog = me->fieldcat[].

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: ALV Grid не показывается на подэкране закладки
« Ответ #14 : Июль 23, 2013, 02:41:55 am »
You are not allowed to view links. Register or Login
Ещё одна проблема с ALV Grid в подэкране - не видно стандартную панель инструментов ALV. Как её вернуть? Вот такой код заведует созданием объектов:
Ну никогда с такой проблемой не сталкивался, но может попробуешь вызвать создание всего набора так:
Код: You are not allowed to view links. Register or Login
      create object gr_custom_cont_1
        exporting
          container_name = 'ALV_GRID_5010'.
Ну контейнер же уже на каком-то экране размещен, зачем принудительно программу и экран еще передавать? Что-то есть мысль что он появляется не там где надо из-за такого вызова. Я по своим программам посмотрел, нигде явно программу и экран не задают при создании контейнера, всегда хватало типа такого объявления:
Код: You are not allowed to view links. Register or Login
  create object ref_container_0200
    exporting
      container_name              = 'CONTROL_0200'
    exceptions
      cntl_error                  = 1
      cntl_system_error           = 2
      create_error                = 3
      lifetime_error              = 4
      lifetime_dynpro_dynpro_link = 5
      others                      = 6.
  if sy-subrc <> 0. message a001 with 'REF_CONTAINER_0200'. endif.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: ALV Grid не показывается на подэкране закладки
« Ответ #15 : Июль 23, 2013, 08:36:47 am »
Попробовал без указания имени программы и номера экрана. Безрезультатно.

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: ALV Grid не показывается на подэкране закладки
« Ответ #16 : Июль 23, 2013, 08:42:30 am »
Ну в общем как всегда — стоит только спросить :)
Код: You are not allowed to view links. Register or Login
*    ls_layout-no_toolbar = 'X'.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: ALV Grid не показывается на подэкране закладки
« Ответ #17 : Июль 23, 2013, 10:27:26 am »
You are not allowed to view links. Register or Login
Ну в общем как всегда — стоит только спросить :)
Код: You are not allowed to view links. Register or Login
*    ls_layout-no_toolbar = 'X'.
Ну ты лейаут не показывал, так что это было бы сложно предположить  8)

Оффлайн A.

  • Newbie
  • *
  • Сообщений: 110
  • Reputation Power: 0
  • A. has no influence.
  • YearsYearsYearsYearsYearsYearsYearsYearsYears
Re: ALV Grid не показывается на подэкране закладки
« Ответ #18 : Август 07, 2013, 05:30:38 pm »
Всем добрый вечер.

Сделал кнопку, которая в LOOP AT SCREEN скрывает некоторые поля. Ниже этих полей находится ALV Grid. При сокрытии элементов область, занятая ALV Grid, при полноэкранном режиме, не растягивается на полный экран, а просто поднимается вверх, образуя под собой пустое место.

Можно как-либо сделать так, чтобы при сокрытии полей ALV Gird также заново перерисовывался на все свободное место экрана?


Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: ALV Grid не показывается на подэкране закладки
« Ответ #19 : Август 13, 2013, 11:45:29 pm »
You are not allowed to view links. Register or Login
Можно как-либо сделать так, чтобы при сокрытии полей ALV Gird также заново перерисовывался на все свободное место экрана?
Поменять местами наверное, т..е. поля поставить вверху на ALV. тогда при их скрытии должно занять все пространство. Как вариант поиграться с размещением полей и ALVтаблицы, на разных подэкранах.

Оффлайн Uukrul

  • SAP ECC 6.0 Ehp(*)
  • Administrator
  • Epic Member
  • *****
  • Сообщений: 3 696
  • Reputation Power: 2
  • Uukrul barely matters.Uukrul barely matters.
  • Пол: Мужской
  • YearsYearsYearsYearsYearsYearsYearsYearsYearsYearsYears
    • Sapforum.BIZ
Re: ALV Grid не показывается на подэкране закладки
« Ответ #20 : Сентябрь 02, 2013, 10:03:08 am »
You are not allowed to view links. Register or Login
Можно как-либо сделать так, чтобы при сокрытии полей ALV Gird также заново перерисовывался на все свободное место экрана?
В общем тут пришлось самому нечто похоже делать, когда внизу есть ALV и надо чтобы верхняя таблица перерисовывалась на весь экран, когда ALV-таблица скрывается. В общем это все можно реализовать, только нужно использовать для вывода ALV-таблицы динамический контейнер, кода приблизительно такой:
Код: You are not allowed to view links. Register or Login
DATA:
      ref_container_0550    type ref to cl_gui_docking_container,
      ref_alv_0550          type ref to cl_gui_alv_grid.

  create object ref_container_0550
    exporting
      side   = cl_gui_docking_container=>dock_at_bottom
      ratio  = 50
    exceptions
      others = 1.

  create object ref_alv_0550
    exporting
      i_parent = ref_container_0550.

* Формирование каталога полей для таблицы
*
* -------------------

  call method ref_alv_0550->set_table_for_first_display
    exporting
      is_layout       = gs_layout
      is_variant      = gs_variant
    changing
      it_sort         = gt_sort
      it_fieldcatalog = gt_fldcat
      it_outtab       = gt_eban_list.
Ну и далее для скрытия таблицы вызвать:
Код: You are not allowed to view links. Register or Login
call method ref_container_0550->free.