Текущее время: Сб, июл 19 2025, 23:39

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


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


ВНИМАНИЕ!

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



Начать новую тему Ответить на тему  [ Сообщений: 40 ]  На страницу 1, 2, 3  След.
Автор Сообщение
 Заголовок сообщения: документация к REUSE_ALV_GRID*
СообщениеДобавлено: Чт, июн 01 2006, 09:14 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, апр 18 2005, 08:24
Сообщения: 94
Откуда: Санкт-Петербург
Пол: Женский
Всем доброго времени суток :)
Читала форумы найденные поиском на тему REUSE_ALV_GRID_DISPLAY и очень часто большие специалисты посылают на документацию к данному ФМ и его расширенному аналогу REUSE_ALV_GRID_DISPLAY_LVC. А что делать, если документации нет совсем или она в таком виде:

FU REUSE_ALV_GRID_DISPLAY
____________________________________________________
КрТекст
Output of a simple list (single-line)

Functionality
The function module outputs an internal table with whatever structure in the form of a formatted single- oder multi-line list.


Process:

Passing an internal table with the set of information to be output
Passing a structure with general layout specifications for list layout
Passing a field catalog in the form of an internal table
The field catalog describes the fields to be output in the list.

Notes
All interactions performed on the list refer directly to the internal output table. Sorting the list, for example, also involves a resorting of the internal output table passed (since it was passed by reference).
An important factor determining the usability of the tool or of various generic functions (totals, subtotals) is the expected amount of data to be displayed.
The application is responsible for critically testing this aspect and consider it when it comes to decision-making.

Параметры
I_INTERFACE_CHECK
I_BYPASSING_BUFFER
I_BUFFER_ACTIVE
I_CALLBACK_PROGRAM
I_CALLBACK_PF_STATUS_SET
I_CALLBACK_USER_COMMAND
I_CALLBACK_TOP_OF_PAGE
I_CALLBACK_HTML_TOP_OF_PAGE
I_CALLBACK_HTML_END_OF_LIST
I_STRUCTURE_NAME
I_BACKGROUND_ID
I_GRID_TITLE
I_GRID_SETTINGS
IS_LAYOUT
IT_FIELDCAT
IT_EXCLUDING
IT_SPECIAL_GROUPS
IT_SORT
IT_FILTER
IS_SEL_HIDE
I_DEFAULT
I_SAVE
IS_VARIANT
IT_EVENTS
IT_EVENT_EXIT
IS_PRINT
IS_REPREP_ID
I_SCREEN_START_COLUMN
I_SCREEN_START_LINE
I_SCREEN_END_COLUMN
I_SCREEN_END_LINE
IT_ALV_GRAPHICS
IT_HYPERLINK
IT_ADD_FIELDCAT
IT_EXCEPT_QINFO
I_HTML_HEIGHT_TOP
I_HTML_HEIGHT_END
E_EXIT_CAUSED_BY_CALLER
ES_EXIT_CAUSED_BY_USER
T_OUTTAB

Особые ситуации
PROGRAM_ERROR

Группа функций
SLVC_FULLSCREEN


Думаете отсюда можно почерпнуть много полезной информации? Я вот ничего полезного не вижу :( Может есть где полная документация к данным ФМ в Инете? На форумах много информации узнала, но все равно общей картины никакой. В примерах SAP, на мой взгляд, очень много лишнего... Может, это только на мой взгляд :)
Очень полезный ФМ, разобраться бы в нем еще :?

Всем заранее спасибо.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 09:46 
Директор
Директор
Аватара пользователя

Зарегистрирован:
Ср, сен 22 2004, 08:42
Сообщения: 1079
Откуда: Москва
Пол: Мужской
Для начала можно зайти в систему на английском, есть много примеров в пакете slis.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 10:12 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Посмотрите SE83 - там примеры есть.
А вообще вы привели полный список параметров, в построителе функций можно посмотреть тип и краткое описание к каждому из них, а также вид параметра (импорт/экспорт).
Ну и если уж совсем лень смотреть в системе - есть гугль:
http://www.google.ru/search?hl=ru&ie=windows-1251&q=alv+grid+control&btnG=%CF%EE%E8%F1%EA+%E2+Google&lr= третья ссылка сверху - то что вы ищите.

Спустя 4 месяца - уже первая !!! 8)


Последний раз редактировалось John Doe Ср, окт 25 2006, 19:21, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 10:50 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, апр 18 2005, 08:24
Сообщения: 94
Откуда: Санкт-Петербург
Пол: Женский
Спасибо за гугль и за идею зайти в систему на англ. :) Почему-то второе мне в голову вообще не приходило :oops:
По поводу моей лени: примеров куча, а толку никакого... Делаю как в примере - и ничерта не получается... Чуть ли не один в один как в примере, а все равно ничего не выводится... Шайтан :shock:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Чт, июн 01 2006, 11:08 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Так не бывает - один в один и не выходит. :shock:

Самый простой вариант (по шагам):

* Type-pool of ALV
TYPE-POOLS: SLIS.

1. Объявление данных для построения выводной экранной формы

DATA: YOUR_FIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV,
REP_ID LIKE SY-CPROG,
V_FIELDCAT LIKE LINE OF YOUR_FIELDCATALOG,
v_POSNR TYPE I.

2. Объявление собственных данных
DATA: ......

3. Выборка из таблицы БД во внутреннюю таблицу
SELECT ......

4. Построение филдкаталога

CLEAR V_FIELDCAT.

V_POSNR = V_POSNR + 1.
V_FIELDCAT-JUST = 'L'. "ВЫРАВНИВАНИЕ ЛЕВО-ПРАВО-ЦЕНТР
V_FIELDCAT-FIELDNAME = 'НАЗВАНИЕ ПОЛЯ ТВОЕЙ ВНУТРЕННЕЙ ТАБЛИЦЫ'.
V_FIELDCAT-SELTEXT_L = 'НАЗВАНИЕ НА ЭКРАНЕ '.
V_FIELDCAT-OUTPUTLEN = 5. "ШИРИНА ПОЛЯ НА ЭКРАНЕ
V_FIELDCAT-COL_POS = V_POSNR.
APPEND V_FIELDCAT TO YOUR_FIELDCATALOG.

CLEAR V_FIELDCAT.

V_POSNR = V_POSNR + 1.
V_FIELDCAT-JUST = 'L'.
V_FIELDCAT-FIELDNAME = 'GSBER'. "НАПРИМЕР БИЗНЕС-СФЕРА
V_FIELDCAT-SELTEXT_L = 'Наименование МРО(ПУ)'.
V_FIELDCAT-OUTPUTLEN = 22.
V_FIELDCAT-COL_POS = V_POSNR.
APPEND V_FIELDCAT TO YOUR_FIELDCATALOG.

..........

5. Вывод на экран

MOVE SY-CPROG TO REP_ID.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = REP_ID
IT_FIELDCAT = YOUR_FIELDCATALOG
I_GRID_TITLE = STR "ЗАГОЛОВОК ТАБЛИЦЫ
TABLES
T_OUTTAB = ITAB "ТВОЯ ВНУТРЕННЯЯ ТАБЛИЦА
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.

Все должно получится.... Я так думаю.


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 07:37 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, апр 18 2005, 08:24
Сообщения: 94
Откуда: Санкт-Петербург
Пол: Женский
John Doe, огромное спасибо :D Люблю, когда все по полочкам... У маня запарки с филдкаталогом... Неужели его нужно всегда вот так ручками заполнять??? Т.е. если у меня внутренняя таблица из 100 полей - я их все должна посредством APPEND вставить в таблицу филдкаталога? А что тогда делает ФМ REUSE_ALV_FIELDCATALOG_MERGE?

Code:
 

DATA: BEGIN OF itab OCCURS 10,
        z_nam_pp(4),
        z_matnr   TYPE eban-matnr,
        z_maktx   TYPE makt-maktx,
        z_mseht   TYPE t006a-mseht,
        z_preis   TYPE eban-preis,
        z_menng   TYPE eban-menge,
        z_gswrt   TYPE eban-zzgswrt,
        z_lfdat(8),
        z_banfn   TYPE eban-banfn,
        z_bnfpo   TYPE eban-bnfpo,
        z_werks   TYPE eban-werks,
        z_lgort   TYPE eban-lgort,
        z_prim(10),
      END OF itab.

FORM f01_set_fcat CHANGING ct_fcat TYPE slis_t_fieldcat_alv.

  DATA: ls_fcat TYPE slis_fieldcat_alv.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               = sy-repid
*     i_internal_tabname           =
      i_structure_name             = 'ITAB'
*     I_CLIENT_NEVER_DISPLAY       = 'X'
      i_inclname                   = 'ZMM_110_01_TOP'
    CHANGING
      ct_fieldcat                  = ct_fcat
    EXCEPTIONS
      inconsistent_interface       = 1
      program_error                = 2
      OTHERS                       = 3.
  IF sy-subrc NE 0.
    MESSAGE e200(zmm) WITH sy-subrc.
  ENDIF.

  CLEAR ls_fcat.
  READ TABLE ct_fcat INTO ls_fcat WITH KEY fieldname = 'Z_NAM_PP'.
  IF sy-subrc EQ 0.
    ls_fcat-seltext_l = 'Номер по порядку'. " long key word
    ls_fcat-seltext_m = 'Номер по порядку'. " middle key word
    ls_fcat-seltext_s = '№ п/п'.            " short key word
    APPEND ls_fcat TO ct_fcat.
  ENDIF.
ENDFORM.

FORM ALV.
*** Установка подложки для грида
  PERFORM f01_set_layo   CHANGING layout_alv.
*** Заполнение каталога полей
  PERFORM f01_set_fcat   CHANGING lct_fieldcat.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
      i_callback_program                = sy-repid
     i_callback_pf_status_set          = 'SETPF'
     i_callback_user_command           = 'USERCOMM '
     i_callback_top_of_page            = 'TOP_OF_PAGE '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*     i_structure_name                  = 'ITAB'
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
     is_layout                         = layout_alv
     it_fieldcat                       = lct_fieldcat
     i_save                            = 'A'
    TABLES
      t_outtab                          = itab[]
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
ENDFORM.

Почему у меня не выводится таблица??? Данные есть, т.е. внутренняя таблица заполняется, а в ALV не то что данных, а даже пустой структуры нет :( Выводится два каких-то поля: КЛЮЧ и ФУНКЦКОМП и все...


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 08:03 
Гуру-эксперт
Гуру-эксперт
Аватара пользователя

Зарегистрирован:
Ср, ноя 03 2004, 14:51
Сообщения: 1912
Откуда: КраснАдар
Пол: Мужской
Точно не уверен, но 'REUSE_ALV_FIELDCATALOG_MERGE' кажется работает только с внешними структурами. Попробуйте объявить структуру в SE11. У меня эта проблема решилась только так :cry:
Параметер i_structure_name = 'your_se11_structure_like_itab' .


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 08:07 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
не только
работает и с внутренними таблицами
тут на форуме было уже это


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 08:08 
Почетный гуру
Почетный гуру
Аватара пользователя

Зарегистрирован:
Сб, сен 25 2004, 16:30
Сообщения: 1368
Откуда: Москва
Пол: Мужской
Аня, вот так передавать sy-repid нельзя:
Code:
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               = sy-repid
      .....

нужно через локальную переменную:
Code:
  l_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               = l_repid
      .....


Во-вторых, 'ITAB' нужно передавать в параметр i_internal_tabname, а не i_structure_name:
Code:
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               = sy-repid
*     i_internal_tabname           =
      i_structure_name             = 'ITAB'


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

_________________
С уважением, Сергей Королев


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 08:11 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:44
Сообщения: 305
Откуда: Жайрем -> Астана
John Doe написал:
Точно не уверен, но 'REUSE_ALV_FIELDCATALOG_MERGE' кажется работает только с внешними структурами. Попробуйте объявить структуру в SE11. У меня эта проблема решилась только так :cry:
Параметер i_structure_name = 'your_se11_structure_like_itab' .


i_inclname задает имя программы где объявлена таблица
попоробуйте так:
Code:
  data : l_repid type sy-repid.

  l_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               = l_repid
      i_internal_tabname           = 'ITAB'
*     I_CLIENT_NEVER_DISPLAY       = 'X'
      i_inclname                   = l_repid
    CHANGING
      ct_fieldcat                  = ct_fcat
    EXCEPTIONS
      inconsistent_interface       = 1
      program_error                = 2
      OTHERS                       = 3.

или явно задайте i_inclname= 'ZMM_110_01_TOP' если объявлена в инклуде каком-то


Последний раз редактировалось flipper Пт, июн 02 2006, 08:24, всего редактировалось 1 раз.

Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 08:13 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:44
Сообщения: 305
Откуда: Жайрем -> Астана
опередили :wink:


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 08:43 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, апр 18 2005, 08:24
Сообщения: 94
Откуда: Санкт-Петербург
Пол: Женский
flipper, сделала, как Вы посоветовали... Теперь вообще выходит ошибка inconsistent_interface. (я сделала, чтобы выходил мэседж на эксепшенсы).
Все, сил моих больше нет! :cry: Я хотела как лучше, не загромождать ABAP-словарь лишними структурами и таблицами, а получилось еще хуже... Буду использовать внешнюю структуру! Так хоть нормально всю табличку выводит, без запарок :evil:


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 08:46 
Специалист
Специалист

Зарегистрирован:
Чт, авг 19 2004, 07:31
Сообщения: 234
Откуда: Нижнекамск
дело хозяйское

однако со внутренними таблицами тоже работает нормально


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 09:07 
Старший специалист
Старший специалист
Аватара пользователя

Зарегистрирован:
Вт, авг 17 2004, 12:44
Сообщения: 305
Откуда: Жайрем -> Астана
AnnaEremenko написала:
flipper, сделала, как Вы посоветовали... Теперь вообще выходит ошибка inconsistent_interface. (я сделала, чтобы выходил мэседж на эксепшенсы).

покажите код вызова ФМ, что-то странно...вроде всегда работало нормально
а этот exception выходит кажется если вместе с i_structure_name пусты i_program_name или i_internal_tabname...


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения:
СообщениеДобавлено: Пт, июн 02 2006, 09:18 
Младший специалист
Младший специалист
Аватара пользователя

Зарегистрирован:
Пн, апр 18 2005, 08:24
Сообщения: 94
Откуда: Санкт-Петербург
Пол: Женский
С ошибкой разобралась: забыла переменной prog присвоит sy-repid :oops: Но легче не стало... теперь вылетаю в дамп с ошибкой NO_FIELDCATALOG_AVAILABLE

Code:
FORM f01_set_fcat CHANGING lct_fieldcat TYPE slis_t_fieldcat_alv.

  DATA: ls_fcat TYPE slis_fieldcat_alv.

  CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
    EXPORTING
      i_program_name               = progr
      i_internal_tabname           = 'ITAB'
      i_inclname                   = 'ZMM_110_01_TOP'
    CHANGING
      ct_fieldcat                  = lct_fieldcat
    EXCEPTIONS
      inconsistent_interface       = 1
      program_error                = 2
      OTHERS                       = 3.
  IF sy-subrc NE 0.
    MESSAGE e200(zmm) WITH sy-subrc.
  ENDIF.

  CLEAR ls_fcat.
  READ TABLE lct_fieldcat INTO ls_fcat WITH KEY fieldname = 'Z_NAM_PP'.
  IF sy-subrc EQ 0.
    ls_fcat-seltext_l = 'Номер по порядку'. " long key word
    ls_fcat-seltext_m = 'Номер по порядку'. " middle key word
    ls_fcat-seltext_s = '№ п/п'.            " short key word
    APPEND ls_fcat TO lct_fieldcat.
  ENDIF.

ENDFORM.

  progr = sy-repid.

  PERFORM f01_set_fcat CHANGING lct_fieldcat.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
   EXPORTING
     i_callback_program                = progr
     i_callback_pf_status_set          = 'SETPF'
     i_callback_user_command           = 'USERCOMM '
*     i_callback_top_of_page            = 'TOP_OF_PAGE '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*     i_structure_name                  = 'ZMM_110_01'
*   I_BACKGROUND_ID                   = ' '
*   I_GRID_TITLE                      =
*   I_GRID_SETTINGS                   =
     is_layout                         = layout_alv
     it_fieldcat                       = lct_fieldcat
     i_save                            = 'A'
    TABLES
      t_outtab                          = itab[]
* EXCEPTIONS
*   PROGRAM_ERROR                     = 1
*   OTHERS                            = 2
            .
  IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


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

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


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

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


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

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