Текущее время: Пн, июл 21 2025, 00:51

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 2 ] 
Автор Сообщение
 Заголовок сообщения: ALV пытаюсь запихнуть в класс.
СообщениеДобавлено: Пт, июл 27 2007, 15:41 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, авг 02 2006, 15:26
Сообщения: 97
Решил для себя сделать такую весщь.

Сделать класс для работы с ALV гридом.
Чтобы на каждом экране не писать много кода, не создавать кучу переменных а обьявить класс присвоить имя и и все будет работать.

Вообщем сделал. Работает даже.
но только работает 1й вызов. после отработки PAI я теряю грид на экране из класса. Вернее он есть но с ним уже работать не могу.

Подумав, логично получается. получается что в PBO я при каждом вызове экрана крейчу класс и он уже как бы новый. А алв на экране остается от старого класса. и не должно работать!!!

Привожу пример класса.



Code:
CLASS ALV_DISPLAY DEFINITION.
PUBLIC SECTION.
      " переменные класса.
      DATA  gr_alvgrid TYPE REF TO cl_gui_alv_grid.
      DATA  alvname TYPE scrfname.             " Тут обязательно указать название ALV на экране.
      DATA  gr_container TYPE REF TO cl_gui_custom_container.
      DATA  gt_fieldcat TYPE lvc_t_fcat.
      DATA  gs_layout TYPE lvc_s_layo.
      DATA  wa_catalog TYPE lvc_s_fcat.
      DATA  StructureName TYPE DD02L-TABNAME .
      DATA  Title type STRING VALUE 'ALV TITLE'.
      DATA  CONTEXT_MENU_CODE TYPE STRING.

* методы.
METHODS: INITIALIZE_ALV.  "выполнить 1 раз для инициализации ALV на экране.
METHODS: REFRESH EXPORTING tblName TYPE TABLE.         " вывод данных на экран.
METHODS: SET_CONTEXT_MENU.
  .......... тут еще много методов есть но они не важны сейчас.

  PRIVATE SECTION.
ENDCLASS.



CLASS  ALV_DISPLAY  IMPLEMENTATION.

METHOD INITIALIZE_ALV.
  CREATE OBJECT  gr_container
       EXPORTING
         container_name =  alvname
       EXCEPTIONS
          cntl_error         =    1
          cntl_system_error  =    2
          create_error       =    3
          lifetime_error     =    4
          lifetime_dynpro_dynpro_link = 5
          others             =     6 .

CREATE OBJECT  gr_alvgrid
      EXPORTING
          i_parent =  gr_container
      EXCEPTIONS
          error_cntl_create    =  1
          error_cntl_init      =  2
          error_cntl_link      =  3
          error_dp_create      =  4
          others               =  5 .

CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
     EXPORTING
     i_structure_name = StructureName
CHANGING
     ct_fieldcat =  gt_fieldcat[] .

* данные лайяута по умолчанию. если надо меняйте. лайаут в паблик секции.
  gs_layout-zebra = 'X'.
  gs_layout-CWIDTH_OPT = 'X'.
  gs_layout-SEL_MODE = 'A'.
  gs_layout-grid_title = Title.
  gs_layout-smalltitle = 'X'.
ENDMETHOD.
******************************************************************************
METHOD REFRESH.
  " Запустили на экран грид.
   CALL METHOD  gr_alvgrid->set_table_for_first_display
       EXPORTING
           is_layout       =  gs_layout
           i_save          = 'A'
       CHANGING
           it_fieldcatalog =  gt_fieldcat
           it_outtab       =  tblName[].
ENDMETHOD.
ENDCLASS.


пример вызова на экране.


Code:
CREATE OBJECT ALV_01.
ALV_01->alvname = 'ALV0001'.
ALV_01->StructureName = 'MyStructure'.
CALL METHOD ALV_01->INITIALIZE_ALV.
CALL METHOD ALV_01->REFRESH IMPORTING  tblName = mytable[].

.....  [различные действия]



и главное что все работает.
но до первого рефреша.

Логически я четко понимаю почему не работает.
Хотелось бы придумать как его заставить работать.

Не хотелось бы при каждом экране методом копирования переносить пачку кода. Хочется сделать код минимальным и читстым.

Ваши советы?

_________________
Теперь я программлю на ABAP/4... правда пока еще только учусь.
Но я очень скучаю по С#


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июл 27 2007, 15:50 
Младший специалист
Младший специалист

Зарегистрирован:
Ср, авг 02 2006, 15:26
Сообщения: 97
вопрос решен. стормозил я.. пятница :oops:

_________________
Теперь я программлю на ABAP/4... правда пока еще только учусь.
Но я очень скучаю по С#


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

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


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

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


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

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