Текущее время: Сб, авг 02 2025, 22:47

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


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

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


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

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