SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Несколько ALV GRID на одном экране



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP
View previous topic :: View next topic  
Author Message
klkuznetsov
Специалист
Специалист


Age: 47
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Mon Mar 14, 2011 6:42 pm    Post subject: Несколько ALV GRID на одном экране Reply with quote

Здравствуйте уважаемые коллеги!

Собственно я знаю как сделать 3 горизонтальных ALV на одном экране с помощью cl_gui_easy_splitter_container. И самое интересное что три ALV GRID горизонтальной ориентации т.е. одна над другой вывести получается. А вот три ALV GRID вертикальной ориентации вывести не получается вот пример как создаются три вертикальные ALV.

Code:

DATA :
      "ob_customa TYPE REF TO cl_gui_custom_container ,
      ob_split1a TYPE REF TO cl_gui_easy_splitter_container ,
      ob_split2a TYPE REF TO cl_gui_easy_splitter_container ,
      ob_split3a TYPE REF TO cl_gui_easy_splitter_container ,
      ob_grid1a  TYPE REF TO cl_gui_alv_grid ,
      ob_grid2a  TYPE REF TO cl_gui_alv_grid ,
      ob_grid3a  TYPE REF TO cl_gui_alv_grid .



<поSKIPано>



if ob_custom is not INITIAL.
    CALL METHOD ob_custom->free( ).
  endif.

  CREATE OBJECT ob_custom
    EXPORTING
      container_name = 'CONTAINER6'.

CREATE OBJECT ob_split1a
    EXPORTING
      parent      = ob_custom
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal."orientation_vertical.
  "    SASH_POSITION = 25.

CREATE OBJECT ob_split2a
    EXPORTING
      parent      = ob_split1a->bottom_right_container
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal.
 "     SASH_POSITION = 25.

CREATE OBJECT ob_split3a
    EXPORTING
      parent      = ob_split1a->bottom_right_container
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal.
  "   SASH_POSITION = 25.

 append cl_gui_alv_grid=>mc_fc_excl_all to lt_exclude. "удаление всех стандартных кнопок на экране

    CREATE OBJECT ob_grid1a
    EXPORTING
      i_parent = ob_split1a->top_left_container.

    CREATE OBJECT ob_grid2a
    EXPORTING
      i_parent = ob_split2a->top_left_container.

    CREATE OBJECT ob_grid3a
    EXPORTING
      i_parent = ob_split3a->top_left_container.
<поSKIPано вот ниже собственно приблизительно :) вывод на экран>

CALL METHOD ob_grid1a->set_table_for_first_display



Ну вот собственно так. В результате выводятся только две ALVшки. Куда девается третья ума не приложу Sad Помогите кто чем сможет.
Пример на форуме находил, но мне так не подходит ибо слишком сложно... для нашей задачи хватит и того что есть... Если невозможно таким образом вывести больше двух ALV на экран, так прямо и говорите...
Заранее спасибо.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Mon Mar 14, 2011 7:00 pm    Post subject: Reply with quote

Может здесь проблема?
Code:
CREATE OBJECT ob_split2a
    EXPORTING
      parent      = ob_split1a->bottom_right_container
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal.
 "     SASH_POSITION = 25.

CREATE OBJECT ob_split3a
    EXPORTING
      parent      = ob_split1a->bottom_right_container
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal.
  "   SASH_POSITION = 25.

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
klkuznetsov
Специалист
Специалист


Age: 47
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Tue Mar 15, 2011 10:20 am    Post subject: Reply with quote

Удав wrote:
Может здесь проблема?
Code:
CREATE OBJECT ob_split2a
    EXPORTING
      parent      = ob_split1a->bottom_right_container
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal.
 "     SASH_POSITION = 25.

CREATE OBJECT ob_split3a
    EXPORTING
      parent      = ob_split1a->bottom_right_container
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal.
  "   SASH_POSITION = 25.


Вполне возможно, что и здесь... Непонятно в чем проблема...
Back to top
View user's profile Send private message
John Doe
Модератор
Модератор


Age: 45
Joined: 05 Nov 2007
Posts: 725
Location: КраснАдар

PostPosted: Tue Mar 15, 2011 10:52 am    Post subject: Reply with quote

Вторую область расплитить и все. Пример можно посмотреть в ФМ SINWP_WORKPLACE_CREATE, подпрограмма splitter_control_create.
Это тразакция SBWP "Рабочее место", собственно.
Back to top
View user's profile Send private message Blog
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Tue Mar 15, 2011 11:06 am    Post subject: Reply with quote

klkuznetsov wrote:
Вполне возможно, что и здесь... Непонятно в чем проблема...

2 раза идет присвоение конейнеров одной и той же области - ob_split1a->bottom_right_container.
В результате объект ob_split2a не показывается на экране.
3-й сплиттер не нужен, для 3-х областей достаточно 2-х сплиттеров

Должно быть так:

Code:
CREATE OBJECT ob_split2a
    EXPORTING
      parent      = ob_split1a->bottom_right_container
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal.
 "     SASH_POSITION = 25.

" 3-й сплиттер не нужен, для 3-х областей достаточно 2-х сплиттеров
...
    CREATE OBJECT ob_grid1a
    EXPORTING
      i_parent = ob_split1a->top_left_container.

    CREATE OBJECT ob_grid2a
    EXPORTING
      i_parent = ob_split2a->top_left_container.

    CREATE OBJECT ob_grid3a
    EXPORTING
      i_parent = ob_split2a->bottom_right_container.


_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
klkuznetsov
Специалист
Специалист


Age: 47
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Tue Mar 15, 2011 2:56 pm    Post subject: Reply with quote

Удав wrote:
klkuznetsov wrote:
Вполне возможно, что и здесь... Непонятно в чем проблема...

2 раза идет присвоение конейнеров одной и той же области - ob_split1a->bottom_right_container.
В результате объект ob_split2a не показывается на экране.
3-й сплиттер не нужен, для 3-х областей достаточно 2-х сплиттеров

Должно быть так:

Code:
CREATE OBJECT ob_split2a
    EXPORTING
      parent      = ob_split1a->bottom_right_container
      orientation = cl_gui_easy_splitter_container=>orientation_horizontal.
 "     SASH_POSITION = 25.

" 3-й сплиттер не нужен, для 3-х областей достаточно 2-х сплиттеров
...
    CREATE OBJECT ob_grid1a
    EXPORTING
      i_parent = ob_split1a->top_left_container.

    CREATE OBJECT ob_grid2a
    EXPORTING
      i_parent = ob_split2a->top_left_container.

    CREATE OBJECT ob_grid3a
    EXPORTING
      i_parent = ob_split2a->bottom_right_container.



Большое спасибо за помощь! Все получилось!
Back to top
View user's profile Send private message
klkuznetsov
Специалист
Специалист


Age: 47
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Tue Mar 15, 2011 5:17 pm    Post subject: Reply with quote

Оказывается еще не все Smile Теперь в эти ALV-шки нужно вручную ввести данные и потом их сохранить, как навесить сохранение данных на кнопку SAVE которая находится в главной панели инструментов. Потому как к каждой ALV отдельно навешивать кнопку неохота да и пользователю неудобно будет.

Спасибо!
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Tue Mar 15, 2011 6:19 pm    Post subject: Reply with quote

Стреляйте консультанта Twisted Evil
Покажите ему транзакцию FB01, XD01, VA01 к примеру и объясните, что ввод данных должен осуществляться подокументно Wink

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
klkuznetsov
Специалист
Специалист


Age: 47
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Tue Mar 15, 2011 11:46 pm    Post subject: Reply with quote

Удав wrote:
Стреляйте консультанта Twisted Evil
Покажите ему транзакцию FB01, XD01, VA01 к примеру и объясните, что ввод данных должен осуществляться подокументно Wink


Хорошо Вам говорить, у вас в Москве может убийство консультанта дело обычное, а у нас за это содють Smile
Потому приходится делать то, что просят, да и придумать как-то сделать ввод по другому я не могу, объединить весь ввод в одну ALV-шку не получается т.к. все это разные признаки одного целого. Потому если в принципе невозможно сохранение сразу во всех ALV, то так и скажите, буду делать сохранение в каждой.
Back to top
View user's profile Send private message
Удав
Гуру
Гуру


Age: 48
Joined: 25 Jan 2008
Posts: 580
Location: Москва

PostPosted: Wed Mar 16, 2011 1:09 pm    Post subject: Reply with quote

Сохранение нескольких табличек естественно можно организовать.
См. транзакцию ABAPDOCU, раздел "Экраны - Обработка экранов - GUI-статусы на экранах ".
Перед сохранением данных необходимо вызывать метод CHECK_CHANGED_DATA для каждого из ALV

_________________
С уважением,
Удав.
Back to top
View user's profile Send private message
klkuznetsov
Специалист
Специалист


Age: 47
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Fri Mar 18, 2011 1:22 pm    Post subject: Reply with quote

Удав wrote:

Перед сохранением данных необходимо вызывать метод CHECK_CHANGED_DATA для каждого из ALV


Судя по названию, данный метод должен возвращать что-то если данные в ALV были изменены? Я так и не понял как он работает Sad
Back to top
View user's profile Send private message
Fami4
Специалист
Специалист


Age: 42
Joined: 04 Aug 2009
Posts: 62
Location: UA

PostPosted: Fri Mar 18, 2011 3:36 pm    Post subject: Reply with quote

Code:
...
when 'SAVE'.
CALL METHOD o_GRID->CHECK_CHANGED_DATA.
      PERFORM save_to_tab USING o_GRID.
endcase.
...


на сайте масса примеров, могли бы и сами посмотреть Wink
Back to top
View user's profile Send private message
Dmitriy
Аналитик
Аналитик


Age: 47
Joined: 14 Nov 2008
Posts: 300
Location: Russia

PostPosted: Sat Mar 19, 2011 12:58 pm    Post subject: Reply with quote

Fami4 wrote:
на сайте масса примеров, могли бы и сами посмотреть Wink

Fami4, с возвращением, кэп! Cool
Все рады, что вы остались в нашем бизнесе. А то возникали нехорошие мысли о том, что вы на Майдане за 50 гривен в день организовываете оплот новой украинской демократии. Rolling Eyes

_________________
ABAP/4 You
Back to top
View user's profile Send private message
klkuznetsov
Специалист
Специалист


Age: 47
Joined: 06 Aug 2010
Posts: 79
Location: Ukraine

PostPosted: Wed Mar 23, 2011 2:26 pm    Post subject: Reply with quote

Fami4 wrote:
Code:
...
when 'SAVE'.
CALL METHOD o_GRID->CHECK_CHANGED_DATA.
      PERFORM save_to_tab USING o_GRID.
endcase.
...


на сайте масса примеров, могли бы и сами посмотреть Wink


Да... мог бы, касательно сохранения. Данный код который Вы приводите в пример, вызывает save_to_tab только если o_grid был изменен?
Back to top
View user's profile Send private message
Fami4
Специалист
Специалист


Age: 42
Joined: 04 Aug 2009
Posts: 62
Location: UA

PostPosted: Thu Mar 24, 2011 6:49 pm    Post subject: Reply with quote

klkuznetsov wrote:

Данный код который Вы приводите в пример, вызывает save_to_tab только если o_grid был изменен?

в таком случае:
Code:
...
data: l_valid type c.
...
when 'SAVE'.
 CALL METHOD o_GRID->CHECK_CHANGED_DATA
       IMPORTING
          e_valid = l_valid.
     if l_valid is not initial.
      PERFORM save_to_tab USING o_GRID.           
     endif.
endcase.
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.