29 октября 2010 г.

ABAP: добавление своей кнопки в TOOLBAR SELECTION-SCREEN

Один из способов добавить свою кнопку в toolbar на SELECTION-SCREEN. 

*--------------------------------------------------------------*
* Объявляем специальную системную 
* структуру для работы с экраном
  TABLES: sscrfields.
* Объявляем структуру которую будем 
* использовать для формирования текстов для кнопок
  DATA: functxt TYPE smp_dyntxt.


  SELECT-OPTIONS...
  PARAMETERS...
* Активируем кнопку номер 1
  SELECTION-SCREEN FUNCTION KEY 1.

* в этом событии создаем кнопку и записываем 
* ее в sscrfields
  AT SELECTION-SCREEN OUTPUT.
    functxt-icon_id = icon_create.
    functxt-quickinfo = 'Создать'.
    functxt-icon_text = 'Создать'.
    MOVE funcxt TO sscrfields-functxt_01.

* Обрабатываем реакцию на нажатие кнопки  
  AT SELECTION-SCREEN.
    CASE sscrfields-ucomm.
      WHEN 'FC01'.
      "тут происходит что-то важное
      "и тут
      "и еще немного тут
    ENDCASE.
*--------------------------------------------------------------*

В результате получится что-то в этом духе:


Подробнее...

25 октября 2010 г.

ABAP: Всплывающие подсказки к значениям в ALV GRID

Для этого надо заполнить таблицу типа ALV_T_QINF. В ней для каждого значения которому необходима подсказка заполнить поля:
  TYPE   - тип,
  VALUE  - значение,
  TEXT   - текст подсказки.
 

Тип берется из констант класса cl_salv_tooltip:
- C_TYPE_ICON,
- C_TYPE_SYMBOL,
- C_TYPE_COLOR,
- C_TYPE_EXCEPTION,
- C_TYPE_TREE_STYLE.

Потом необходимо передать эту таблицу в методе SET_TABLE_FOR_FIRST_DISPLAY во входном параметре IT_EXCEPT_QINFO.

Пример:

   DATA: l_t_qinf TYPE ALV_T_QINF.
   DATA: l_s_qinf TYPE ALV_S_QINF.

   l_s_qinf-TYPE  = cl_salv_tooltip=>C_TYPE_ICON.
   l_s_qinf-VALUE = ICON_HISTORY.
   l_s_qinf-TEXT  = 'Есть ПП'.

   APPEND l_s_qinf TO l_t_qinf.

   CALL METHOD my_alv_grid->SET_TABLE_FOR_FIRST_DISPLAY
     EXPORTING
       IS_LAYOUT       = my_alv_layo
       IS_VARIANT      = my_alv_vari
       I_SAVE          = 'A'
       IT_EXCEPT_QINFO = l_t_qinf
     CHANGING
       IT_OUTTAB       = my_alv_it[]
       IT_FIELDCATALOG = my_alv_fcat.
Подробнее...

14 октября 2010 г.

ABAP: Установка позиции вертикального скролла в ALV GRID

  DATA: LS_COL_INFO TYPE LVC_S_COL,
        LS_ROW_INFO TYPE LVC_S_ROW.
 
* Получаем информацию о текущей позиции скролла
  CALL METHOD req_grid->GET_SCROLL_INFO_VIA_ID
    IMPORTING
      ES_ROW_INFO = LS_ROW_INFO
      ES_COL_INFO = LS_COL_INFO.

* нужно для того чтобы не вываливалось в дамп 
* после вызова предыдущего метода
  CALL METHOD CL_GUI_CFW=>FLUSH
  EXCEPTIONS
    CNTL_SYSTEM_ERROR = 1
    CNTL_ERROR        = 2.
 
* Указываем индекс нужной нам строки
  LS_ROW_INFO-INDEX = lv_index.
 
* Устанавливаем скролл в нужную позицию
  CALL METHOD req_grid->SET_SCROLL_INFO_VIA_ID
    EXPORTING
      IS_ROW_INFO = LS_ROW_INFO
      IS_COL_INFO = LS_COL_INFO.
 
* нужно для того чтобы не вываливалось в дамп 
* после вызова предыдущего метода
  CALL METHOD CL_GUI_CFW=>FLUSH
  EXCEPTIONS
    CNTL_SYSTEM_ERROR = 1
    CNTL_ERROR        = 2. 
Подробнее...