Sap alv формат что это

Три простых шага для написания ABAP отчета ALV

Белобродский Андрей Андреевич

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

В статье рассматривается процесс создания отчета с колонками: заказчик, дата отгрузки, номер накладной, номер счет фактуры и пункт отгрузки в «простых» шага:

В системе SAP ERP существует большое количество стандартных отчетов по продажам, производству, закупкам, однако, иногда требуется создать новый отчет под конкретные требования и задачи. Лучше всего для этого подходит язык программирования ABAP.

Разработку нового отчета можно осуществить в три «простых» шага:

Задача: создать отчет с колонками: заказчик, дата отгрузки, номер накладной, номер счет фактуры и пункт отгрузки.

Решение.

Шаг 1. На первом шаге через оператор REPORT определяем имя программы, через оператор TABLES таблицы, с которыми будем работать, через операторы SELECT-OPTIONS поля на экране выбора, которые должен будет указать пользователь, и через оператор TYPES и DATA описываем структуру нашего будущего отчета.

SELECT-OPTIONS:
fkdat FOR vbrk-fkdat,
vkorg FOR vbrk-vkorg,
vstel FOR likp-vstel,
kunag FOR vbrk-kunag.

TYPES: BEGIN OF t_journal,
kunag TYPE vbrk-kunag,
name1 TYPE kna1-name1,
ort01 TYPE kna1-ort01,
vbeln TYPE vbrk-vbeln,
vbelv TYPE vbfa-vbelv,
fkdat TYPE vbrk-fkdat,
netwr TYPE vbrk-netwr,
mwsbk TYPE vbrk-mwsbk,
vstel TYPE likp-vstel,
zz_fctor TYPE likp-zz_fctor,

DATA: journal TYPE TABLE OF t_journal WITH HEADER LINE,
wa_journal TYPE t_journal.

При запуске программы появится начальный экран с параметрами отчета (Рис.1)

Шаг 2. На этом шаге через оператор SELECT и SELECT SINGLE делаем выборку из таблиц базы данных. Предполагается, что разработчик знает таблицы, из которых нужно брать данные

Текст созданного запроса:

SELECT vbeln fkdat kunag netwr mwsbk FROM vbrk INTO CORRESPONDING FIELDS OF wa_journal WHERE fkdat IN fkdat AND vkorg IN vkorg AND kunag IN kunag AND fksto = » AND sfakn = ».
SELECT SINGLE vbelv FROM vbfa INTO wa_journal-vbelv WHERE vbeln = wa_journal-vbeln AND vbtyp_v = ‘J’.
SELECT SINGLE vstel FROM likp INTO wa_journal-vstel WHERE vbeln = wa_journal-vbelv AND vstel IN vstel.
SELECT SINGLE name1 ort01 FROM kna1 INTO (wa_journal-name1, wa_journal-ort01) WHERE kunnr = wa_journal-kunag.
wa_journal-netwr = wa_journal-netwr + wa_journal-mwsbk.
APPEND wa_journal TO journal.
ENDSELECT.

SORT journal BY fkdat kunag.

В результате работы запроса в табличке VBRK «увидим» неотсторнированные фактуры, в табличке VBFA по потоку документов ищем номер накладной, в табличке LIKP ищем пункт отгрузки, а в табличке KNA1 информацию о клиенте.

Шаг 3. На третьем шаге описываем названия колонок в конечном отчете, а также настраиваем переход в другой отчет.

DATA: ifc TYPE slis_t_fieldcat_alv.
DATA: xfc TYPE slis_fieldcat_alv.
DATA: repid TYPE sy-repid.

CLEAR xfc. REFRESH ifc.

CLEAR xfc.
xfc-reptext_ddic = ‘Покупатель’.
xfc-fieldname = ‘KUNAG’.
xfc-tabname = ‘JOURNAL’.
xfc-outputlen = ‘15’.
APPEND xfc TO ifc.

CLEAR xfc.
xfc-reptext_ddic = ‘Наименование’.
xfc-fieldname = ‘NAME1’.
xfc-tabname = ‘JOURNAL’.
xfc-outputlen = ‘45’.
APPEND xfc TO ifc.

CLEAR xfc.
xfc-reptext_ddic = ‘Город’.
xfc-fieldname = ‘ORT01’.
xfc-tabname = ‘JOURNAL’.
xfc-outputlen = ‘25’.

Если хотите прочитать статью полностью и оставить свои комментарии присоединяйтесь к sapland

У вас уже есть учетная запись?

Комментарий от Олег Башкатов 10 сентября 2013, 00:45

от HEADER LINE нужно уходить.
так советует Karl-Heinz Kühnhauser и Thorsten Franz в своих книгах.

вот пример двухуровневого ALV

Комментарий от Сергей Косяченко 10 сентября 2013, 11:07

1. Создаем структуру под поля экрана выборки.
2. Создаем структуру под вывод данных
3. Делаем выборку данных. Без всяких вложенных селектов и селект/енд_селект.
4. Выводим alv. Если только для просмотра, то:
cl_salv_table=>factory(
IMPORTING
r_salv_table = lr_salv_table
CHANGING
t_table = lt_alv ).

Комментарий от Сергей Косяченко 10 сентября 2013, 11:08

от HEADER LINE нужно уходить.
так советует Karl-Heinz Kühnhauser и Thorsten Franz в своих книгах.

вот пример двухуровневого ALV

Комментарий от Олег Башкатов 10 сентября 2013, 11:46

согласен.
ENDSELECT как-то опустил из виду.

Что Вы хотите, чтобы я переписывал коды с одного портала на другой?))
ссылку, где можно найти кусочки кода я привел; там есть в том числе и пример с классом cl_salv_table.

Комментарий от Сергей Косяченко 10 сентября 2013, 13:09

согласен.
ENDSELECT как-то опустил из виду.

Что Вы хотите, чтобы я переписывал коды с одного портала на другой?))
ссылку, где можно найти кусочки кода я привел; там есть в том числе и пример с классом cl_salv_table.

Комментарий от Николай Кронский 10 сентября 2013, 15:06

P.S.: Заранее приношу извинения за некоторую резкость суждения.

Комментарий от Олег Точенюк 10 сентября 2013, 17:39

P.S.: Заранее приношу извинения за некоторую резкость суждения.

Ну как бы внизу статьи уже все написано:

Белобродский Андрей Андреевич, к.э.н., руководитель отдела автоматизации ЗАО «АВС Фарбен», член Пользовательского Экспертного Совета SAP, автор статей по настройке и использованию SAP.

А в профиле есть уточнения:

Должность: Руководитель отдела автоматизации бизнес процессов
Стаж работы с SAP: 7 лет
Реализовано проектов SAP: Siemens Enterprise Networks, Nokia Siemens Networks, Siemens Healthcare, L’Oreal, Myllycoski, ABC Farben

Комментарий от Олег Точенюк 10 сентября 2013, 17:44

Ну как бы внизу статьи уже все написано:

Читайте также:  идеи отделки прихожей в частном доме

Белобродский Андрей Андреевич, к.э.н., руководитель отдела автоматизации ЗАО «АВС Фарбен», член Пользовательского Экспертного Совета SAP, автор статей по настройке и использованию SAP.

А в профиле есть уточнения:

Должность: Руководитель отдела автоматизации бизнес процессов
Стаж работы с SAP: 7 лет
Реализовано проектов SAP: Siemens Enterprise Networks, Nokia Siemens Networks, Siemens Healthcare, L’Oreal, Myllycoski, ABC Farben

Хотя каюсь, сам вот это вот:

CLEAR xfc.
xfc-reptext_ddic = ‘Сумма с НДС’.
xfc-fieldname = ‘NETWR’.
xfc-tabname = ‘JOURNAL’.
xfc-outputlen = ‘15’.
APPEND xfc TO ifc.

часто предпочитаю использованию какого-нить REUSE_ALV_FIELDCATALOG_MERGE или чего позабористее.

Комментарий от Олег Башкатов 10 сентября 2013, 21:55

ФМ или класс не суть важно. Кому как нравится. Но вот выборки, да и заполнение хардкодом выходной структуры. Хотя, лишь бы работало. Просто, утомительно все это на саппорте разгребать. После таких примеров.

Комментарий от Олег Точенюк 10 сентября 2013, 22:08

а вот тут ошибаетесь, на мой взгляд)))
объектный подход предпочтительней, ибо память лучше использует

PS: Вот же обещал себе, не комментировать вас. но извините не удержался.

Комментарий от Олег Точенюк 10 сентября 2013, 22:19

P.S.: Заранее приношу извинения за некоторую резкость суждения.

===
Субъективно, статья воспринимается как дискредитация деятельности людей, занимающихся разработкой на АВАР профессионально.
===
Пока ехал тут с работы, подумал, что на самом деле дискредитирует не эта статья. Андрей Белобродский не является сотрудником компании SAP и пишет в своей системе, на что имеет полное право. А вот что именно дискредитирует, так это люди которые пишут, то что называется решением для страны России или в Украине аддоном, вот это точно полная дискредитация, когда человек для проверки уникальности записей во внутренней таблице, созданной со ссылкой на структуру словаря данных с 83 кажется полями, не находит ничего лучше, чем создать создать для этой таблицы первичный ключ с перечислением всех этих полей. А потом когда другой разработчик добавляет в таблицу словаря новое поле, программа этого первого наивного чукотского мальчика начинает при определенных значениях валиться в дамп, при этом чтобы добиться исправления этой ошибки надо потратить месяц переписки.. а исправляется все это, да именно добавлением этих полей в первичный ключ. ну гениально решение. Или написание проверки в условии WHERE, для операции BETWEEN с условием BETWEEN AND и даже не удивляться что эта конструкция всегда возвращает sy-subrc = 4.

Комментарий от Александр Дублин 10 сентября 2013, 22:39

Источник

Sap alv формат что это

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

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

Что такое ALV

Специалист

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской

Почетный гуру

Зарегистрирован:
Ср, ноя 23 2005, 13:37
Сообщения: 1805
Откуда: ECC 6.0
Пол: Мужской

Гуру-модератор

Зарегистрирован:
Пн, окт 11 2004, 20:32
Сообщения: 2470
Пол: Мужской

_________________
— Может ли настоящий мастер кунг-фу получить по морде?
— Настоящий мастер может все!

Специалист

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской

Почетный гуру

Зарегистрирован:
Чт, авг 19 2004, 17:37
Сообщения: 1957
Откуда: Москва
Пол: Мужской

Почетный гуру

Зарегистрирован:
Пт, авг 04 2006, 20:56
Сообщения: 1005
Откуда: 37 МИКРОРАЙОН
Пол: Мужской

Можно и так, а лучше SE80 Package: SLIS.
Получишь все что надо и не надо.
А в обще-то инфа на http://help.sap.com/saphelp_46c/helpdata/en/0a/b552f7d30911d2b467006094192fe3/frameset.htm есть.
Ну а если по нормальному нада хотя бы на BC400 и SAPENJOI съездить!

Директор

Зарегистрирован:
Пн, авг 22 2005, 14:50
Сообщения: 1284
Откуда: с работы
Пол: Женский

ой, какие вы сегодня все нежные. Не иначе сказалось массовое поедание тортов в преддверии 8 марта.

полезно также
REUSE_ALV_FIELDCATALOG_MERGE

Функции смотреть через транзакцию se37 (транзакции вводятся в поле в левом верхнем углу спава от зеленого шарика с белой галочкой), хорошо бы стать курсором на имя функции и нажать кнопочку «where used» (желтый квадратик с тремя выходящими вправо синенькими стрелочками) и посмотреть примеры использования в чужих программах. Лучше смотреть те, которые начинаются на BCALV.

Специалист

Зарегистрирован:
Пт, янв 26 2007, 08:42
Сообщения: 175

Специалист

Зарегистрирован:
Ср, мар 07 2007, 11:58
Сообщения: 176
Откуда: Астана
Пол: Мужской

Младший специалист

Зарегистрирован:
Ср, ноя 10 2004, 17:44
Сообщения: 97
Откуда: Москва
Пол: Мужской

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

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

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

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

Логотип © 2006 Андрей Горшков
Поддержка: Кирилл Андреев, 2011-…

Источник

Sap alv формат что это

На вкладке методы добавим еще два метода.

В методе SHOW_DATA изменим тип параметра на changing и добавим такой же параметр в каждый метод.

Затем добавим следующий код в методы.

Когда классы созданы, создадим главную программу ZKRE_HW7.

Запустим на выполнение.

В зависимости от того какую радиокнопку выбрали будем получать следующий результат.

В ALV можно поиграться с панелью меню. Закомментируем в методе ALV класса zcl_kre_hw6_view_alv следующий код:

Запустим на выполнение и увидим результат где будет отсутствовать панель.

Вот таким образом в SAP можно организовать вывод информации через ALV не используюя спартанские обычные списки.

Обсуждения : 6 комментариев

Комментарии

Филипп

Спасибо Вам большое за весь ваш курс! Я прошёл его с начала до конца, очень много приобрёл навыков в программировании и вообще хоть как-то сориентировался в системе SAP =)

Спасибо за отзыв! Успехов в дальнейшем обучении 🙂

Александр

Здравствуйте!
Планируется ли продолжение?
Какие-то темы еще не освещены для уровеня Junior ABAP programmer?
Спасибо за курс.

Еще не хватает тем: Smart/PDF forms, Enhancement Spot, BADI, Web dynpro.

Виктор Кореньков

Чтобы оставить комментарий, необходимо Войти или Зарегистрироваться.

Источник

Русские Блоги

Использование ABAP ALV control и разработка отчетов по ALV

Использование контроля ALV и ALV
Элемент управления ALV (SAP List Viewer) является одним из наиболее часто используемых элементов управления в бизнесе SAP. В этой главе сначала представлен простой пример для отображения данных с использованием элемента управления ALV, а затем в качестве примера приводится мощность ALV. функция.
Основное содержание этой главы:
(1) Простой пример управления ALV

(2) ALV управляет экземпляром настраиваемого поля вывода

(3) Создать элемент управления ALV на экране

(4) Настройте кнопки панели инструментов управления ALV

(5) Обработка события двойного щелчка управления ALV

(6) Отредактируйте внутреннюю таблицу и обновите базу данных через элемент управления ALV

(7) Использование дерева ИВЛ

(8) Связанные параметры и атрибуты разработки отчета ALV

1. Простой пример управления ALV

DATA:WA_SCHOOL LIKE TABLE OF YTDSCHOOL WITH HEADER LINE.

SELECT * INTO TABLE WA_SCHOOL FROM YTDSCHOOL.

CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
I_STRUCTURE_NAME = ‘YTDSCHOOL’
TABLES
T_OUTTAB = WA_SCHOOL
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.

2. Примеры элементов управления ALV с пользовательскими полями вывода

* Библиотека классов, используемая ALV
TYPE-POOLS:SLIS.
* Описание одного столбца
DATA WA_ALV_FIELD TYPE SLIS_FIELDCAT_ALV.
* Столбец описывает внутреннюю таблицу. Составить список
DATA WA_ALV_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
* d Определите внутреннюю таблицу
DATA WA_SCHOOL LIKE TABLE OF YTDSCHOOL WITH HEADER LINE.
* Назначение внутренней таблицы
SELECT * INTO TABLE WA_SCHOOL FROM YTDSCHOOL.

* Определить поля с первого по четвертый
WA_ALV_FIELD-COL_POS = 1.
WA_ALV_FIELD-FIELDNAME = ‘YCT_ID’.
WA_ALV_FIELD-SELTEXT_M = ‘Городской номер’.
APPEND WA_ALV_FIELD TO WA_ALV_FIELDCAT.

WA_ALV_FIELD-COL_POS = 2.
WA_ALV_FIELD-FIELDNAME = ‘YSH_ID’.
WA_ALV_FIELD-SELTEXT_M = ‘Школьный идентификатор’.
APPEND WA_ALV_FIELD TO WA_ALV_FIELDCAT.

WA_ALV_FIELD-COL_POS = 3.
WA_ALV_FIELD-FIELDNAME = ‘YSH_NAME’.
WA_ALV_FIELD-SELTEXT_M = ‘название школы’.
APPEND WA_ALV_FIELD TO WA_ALV_FIELDCAT.

WA_ALV_FIELD-COL_POS = 4.
WA_ALV_FIELD-FIELDNAME = ‘YSH_ADDR’.
WA_ALV_FIELD-SELTEXT_M = ‘Адрес школы’.
APPEND WA_ALV_FIELD TO WA_ALV_FIELDCAT.

CALL FUNCTION ‘REUSE_ALV_LIST_DISPLAY’
EXPORTING
IT_FIELDCAT = WA_ALV_FIELDCAT
TABLES
T_OUTTAB = WA_SCHOOL.

3. Создайте элемент управления ALV на экране

Логический поток:

PROCESS BEFORE OUTPUT.
MODULE STATUS_0100.

PROCESS AFTER INPUT.
MODULE USER_COMMAND_0100.

Основная программа:

MODULE STATUS_0100 OUTPUT.
SET PF-STATUS ‘TESTSTA1’.
* Создать объект ALV, если окно еще не было создано
IF WA_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING
CONTAINER_NAME = WA_CONTAINER.

CREATE OBJECT ALV_GRID
EXPORTING
I_PARENT = WA_CUSTOM_CONTAINER.

CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = ‘YTDSCHOOL’
CHANGING
IT_OUTTAB = WA_SCHOOL.
ENDIF.
ENDMODULE.

MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN ‘EXIT’.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.

4. Кнопки панели инструментов для пользовательских элементов управления ALV

DATA: OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.

DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.

DATA: WA_SCHOOL TYPE TABLE OF YTDSCHOOL,
A_SCHOOL LIKE YTDSCHOOL.

SELECT * INTO TABLE WA_SCHOOL FROM YTDSCHOOL.

DATA:WA_CONTAINER TYPE SCRFNAME VALUE ‘ALVDATA’,
ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_TOOLBAR
FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
IMPORTING E_OBJECT E_INTERACTIVE,

HANDLE_USER_COMMAND
FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID
IMPORTING E_UCOMM.
ENDCLASS.

CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_TOOLBAR.
DATA:LS_TOOLBAR TYPE STB_BUTTON.
CLEAR LS_TOOLBAR-BUTN_TYPE.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
CLEAR LS_TOOLBAR.

MOVE ‘SHOW_DATA’ TO LS_TOOLBAR-FUNCTION.

MOVE ICON_PPE_VNODE TO LS_TOOLBAR-ICON.
MOVE ‘Отображение сведений о школе’ TOLS_TOOLBAR-QUICKINFO.
MOVE ‘Отображение сведений о школе’ TOLS_TOOLBAR-TEXT.
MOVE » TO LS_TOOLBAR-DISABLED.
APPEND LS_TOOLBAR TO E_OBJECT->MT_TOOLBAR.
ENDMETHOD.

METHOD HANDLE_USER_COMMAND.
DATA:LT_ROWS TYPE LVC_T_ROW.
CASE E_UCOMM.
WHEN ‘SHOW_DATA’.
CALL METHOD ALV_GRID->GET_SELECTED_ROWS
IMPORTING
ET_INDEX_ROWS = LT_ROWS.
CALL METHOD CL_GUI_CFW=>FLUSH.
IF SY-SUBRC = 0.
СООБЩЕНИЕ S005 (YMESS) С «Выбранной строкой».
PERFORM MESSDETA TABLES LT_ROWS.
ENDIF.
ENDCASE.
ENDMETHOD.
ENDCLASS.

MODULE STATUS_0100 OUTPUT.
SET PF-STATUS ‘TESTSTA1’.
IF WA_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = WA_CONTAINER.
CREATE OBJECT ALV_GRID
EXPORTING I_PARENT = WA_CUSTOM_CONTAINER.

CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = ‘YTDSCHOOL’
CHANGING
IT_OUTTAB = WA_SCHOOL.

CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_USER_COMMAND FOR ALV_GRID.

SET HANDLER EVENT_RECEIVER->HANDLE_TOOLBAR FOR ALV_GRID.
CALL METHOD ALV_GRID->SET_TOOLBAR_INTERACTIVE.
ENDIF.
ENDMODULE.

MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN ‘EXIT’.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.

FORM MESSDETA TABLES P_ET_INDEX_ROWS STRUCTURE LVC_S_ROW.
DATA:LS_SELECTED_LINE LIKE LVC_S_ROW,
LF_ROW_INDEX TYPE LVC_INDEX.
DATA:S1(200) TYPE C,
S2(3) TYPE C.
S2 = ‘-‘.

LOOP AT P_ET_INDEX_ROWS INTO LS_SELECTED_LINE.
LF_ROW_INDEX = LS_SELECTED_LINE-INDEX.
READ TABLE WA_SCHOOL INDEX LF_ROW_INDEX INTO A_SCHOOL.
S1 = «Выбрать содержимое строки».
CONCATENATE S1 A_SCHOOL-YSH_NAME A_SCHOOL-YSH_ADDR
INTO S1 SEPARATED BY S2.
MESSAGE I005(YMESS) WITH S1.
ENDLOOP.
ENDFORM.

5. Обрабатывать события двойного щелчка ALV

DATA:OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.
* Определите внутреннюю таблицу, переменные необходимо передавать без добавления HEADERLINE
DATA WA_SCHOOL TYPE TABLE OF YTDSCHOOL.
* Назначение внутренней таблицы
SELECT * INTO TABLE WA_SCHOOL FROM YTDSCHOOL.
* Определить пользовательский элемент управления окна, определить объект ALV
DATA:WA_CONTAINER TYPE SCRFNAME VALUE ‘ALVDATA’,
ALV_GRID TYPE REF TO CL_GUI_ALV_GRID,
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.
* Определить тип события
CLASS LCL_EVENT_RECEIVER DEFINITION DEFERRED.
* Определить событие
DATA EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
* Окно вызова напрямую
CALL SCREEN 100.

CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
HANDLE_DOUBLE_CLICK
FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID
IMPORTING E_ROW E_COLUMN.
ENDCLASS.

CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD HANDLE_DOUBLE_CLICK.
DATA:LI_SCHOOL LIKE LINE OF WA_SCHOOL.
READ TABLE WA_SCHOOL INDEX E_ROW-INDEX INTO LI_SCHOOL.
* Объединение информации, такой как строки и столбцы, в строку
DATA:S1(100) TYPE C.
* Строка CONCATENATE: имя столбца ‘E_ROW-INDEX’: ‘E_COLUMN-FIELDNAME INTO S1.
CONCATENATE S1 ‘SCHOOL NAME:’ LI_SCHOOL-YSH_NAME INTO S1.
CONCATENATE S1 ‘SCHOOL ADDR:’ LI_SCHOOL-YSH_ADDR INTO S1.
* Отображение информации о выбранных строках и столбцах в строке состояния
MESSAGE S208(00) WITH S1.
ENDMETHOD.
ENDCLASS.

MODULE STATUS_0100 OUTPUT.
SET PF-STATUS ‘TESTSTA1’.
* Создать объект ALV, если окно еще не было создано
IF WA_CUSTOM_CONTAINER IS INITIAL.
CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = WA_CONTAINER.
CREATE OBJECT ALV_GRID
EXPORTING I_PARENT = WA_CUSTOM_CONTAINER.
CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
I_STRUCTURE_NAME = ‘YTDSCHOOL’
CHANGING
IT_OUTTAB = WA_SCHOOL.
* Событие двойного щелчка для назначения объекта ALV
CREATE OBJECT EVENT_RECEIVER.
SET HANDLER EVENT_RECEIVER->HANDLE_DOUBLE_CLICK
FOR ALV_GRID.
ENDIF.
ENDMODULE.

MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN ‘EXIT’.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.

6. Отредактируйте внутреннюю таблицу и обновление базы данных через элемент управления ALV.

Процесс выглядит следующим образом:
(1) Установите элемент управления ALV для редактирования;
(2) обновить данные во внутренней таблице при выходе из экрана;
(3) Записать информацию об изменении данных элемента управления ALV и сохранить информацию удаленной строки элемента управления ALV во внутренней таблице;
(4) Во время вывода сравните удаленную строку с последней внутренней таблицей и удалите дублирующую строку;
(5) Обновите данные в таблице данных.

7. Использование ALV TREE

DATA: OK_CODE TYPE SY-UCOMM,
SAVE_OK TYPE SY-UCOMM.

DATA: GB_FIELDCAT TYPE LVC_T_FCAT.
DATA: GB_SORTFLD TYPE LVC_T_SORT.

DATA WA_SCHOOL TYPE TABLE OF YTDSCHOOL.

SELECT * INTO TABLE WA_SCHOOL FROM YTDSCHOOL.

DATA: WA_CONTAINER TYPE SCRFNAME VALUE ‘ALVDATA’,
ALV_GRID TYPE REF TO CL_GUI_ALV_TREE_SIMPLE,
WA_CUSTOM_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

MODULE STATUS_0100 OUTPUT.
SET PF-STATUS ‘TESTSTA1’.
IF WA_CUSTOM_CONTAINER IS INITIAL.
DATA LS_LIST_COMM TYPE SLIS_T_LISTHEADER.
DATA LS_ALIST_COMM TYPE SLIS_LISTHEADER.
LS_ALIST_COMM-TYP = ‘H’.
LS_ALIST_COMM-INFO = ‘MY ALV TREE Testing’.
APPEND LS_ALIST_COMM TO LS_LIST_COMM.

PERFORM BLDCAT.
PERFORM BLDSORTFLD.

CREATE OBJECT WA_CUSTOM_CONTAINER
EXPORTING CONTAINER_NAME = WA_CONTAINER.

CREATE OBJECT ALV_GRID
EXPORTING I_PARENT = WA_CUSTOM_CONTAINER.

CALL METHOD ALV_GRID->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IT_LIST_COMMENTARY = LS_LIST_COMM
I_STRUCTURE_NAME = ‘YTDSCHOOL’
CHANGING
IT_SORT = GB_SORTFLD
IT_FIELDCATALOG = GB_FIELDCAT
IT_OUTTAB = WA_SCHOOL.

CALL METHOD ALV_GRID->EXPAND_TREE
EXPORTING
I_LEVEL = 1.
ENDIF.
ENDMODULE.

MODULE USER_COMMAND_0100 INPUT.
SAVE_OK = OK_CODE.
CLEAR OK_CODE.
CASE SAVE_OK.
WHEN ‘EXIT’.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE.

FORM BLDCAT.
CALL FUNCTION ‘LVC_FIELDCATALOG_MERGE’
EXPORTING
I_STRUCTURE_NAME = ‘YTDSCHOOL’
CHANGING
CT_FIELDCAT = GB_FIELDCAT.

DATA LS_FLDCAT TYPE LVC_S_FCAT.
LOOP AT GB_FIELDCAT INTO LS_FLDCAT.
CASE LS_FLDCAT-FIELDNAME.
WHEN ‘YSH_NAME’ OR ‘YSH_ADDR’.
LS_FLDCAT-OUTPUTLEN = 15.
WHEN OTHERS.
LS_FLDCAT-NO_OUT = ‘X’.
ENDCASE.

MODIFY GB_FIELDCAT FROM LS_FLDCAT.
ENDLOOP.
ENDFORM.

FORM BLDSORTFLD.
DATA LS_SORTFLD TYPE LVC_S_SORT.

LS_SORTFLD-SPOS = 1.
LS_SORTFLD-FIELDNAME = ‘YCT_ID’.
LS_SORTFLD-UP = ‘X’.
LS_SORTFLD-SUBTOT = ‘X’.
APPEND LS_SORTFLD TO GB_SORTFLD.

LS_SORTFLD-SPOS = 2.
LS_SORTFLD-FIELDNAME = ‘YSH_ID’.
LS_SORTFLD-UP = ‘X’.
LS_SORTFLD-SUBTOT = ‘X’.
APPEND LS_SORTFLD TO GB_SORTFLD.

8. Связанные параметры и использование разработки отчета ALV

8.1 ALV(SAPПросмотр списка) ДаSAPОбычно используемые объекты управления списком отображения на экране, которые отображают данные путем передачи данных во внутренние таблицы;

Формат отображения ALV делится на два режима: Сетка и Список:

Режим сетки имеет функцию кнопок выбора столбцов, что позволяет пользователям напрямую выводить форматы, операция более гибкая;

Режим списка имеет фиксированный формат и применяется к более строгим стандартным отчетам.

Выходной ALVFunctionЕсть два:REUSE_ALV_GRID_DISPLAYиREUSE_ALV_GRID_DISPLAY_LVC

двафункцияВсе данные могут быть отображены в виде ALV, только некоторые мелкие детали отличаются.

Перед вызовом функции ALV необходимо ввести пул типов: TYPE-POOLS: SLIS.

8.2 Определение LAYOUT и FIELDCAT

Макет в основном используется для установки формата вывода ALV, который является опцией для вывода ALV;

Fieldcat в основном используется для определения структуры ALV, включая конкретные поля и атрибуты, такие как имя, тип, формат и т. Д. Это обязательный параметр для вывода ALV.

Перед вызовом ALV, вам нужно определить layout и fieldcat.

Среди них определение глобальных переменных, используемых двумя функциями ALV:

1) Глобальные переменные, используемые функцией REUSE_ALV_GRID_DISPLAY:

2) Глобальные переменные, используемые функцией REUSE_ALV_GRID_DISPLAY_LVC:

Тип макета REUSE_ALV_GRID_DISPLAY:slis_layout_alvТип Fieldcatslis_fieldcat_alv

Тип макета REUSE_ALV_GRID_DISPLAY_LVC:lvc_s_layoТип Fieldcatlvc_s_fcat

Среди них для‘SLIS_’В начале вы можете просмотреть его в пуле типов SLIS,‘LVC_’Начало можно в словаре данных (SE11) Вид.

Интеллектуальная рекомендация

Разработка Android NDK (1)

Источник

Читайте также:  как определить пол у месячных крысят
Развивающий портал