Генерация отчетов в SAP NetWeaver при помощи FastReport .NET – Часть 2 - печать выходных форм

08.05.2017

Первая часть статьи

Задача:

Разработать печатную форму заказа на поставку и присвоить ее виду документа “NB Стандартный заказ”.

Пример готового отчета:

1

 

Подготовка словаря данных.

Для печати ЗнП необходимо создать несколько структуру в АБАП словаре. Эти структуру будут использованы в источнике данных для отчета.

Запустите транзакцию SE11. Создайте и активируйте следующие объекты:

Структура ZZPO_ITEM_S

2

 

Тип таблицы ZZPO_ITEM_TT

3

 

Структура ZZPO_PARTNER_S

4

 

Структура ZZPO_DOC_S

5

 

Тип таблицы ZZPO_DOC_TT

6

 

Подготовка шаблона

Запустить транзакцию ZFR_RMAN.

Нажать на кнопку “New” и добавить новый отчет “ZPO_FR” с параметрами, как указано на скриншоте ниже.

7

Сохранить отчет.

 

После сохранения перейти в режим редактирования и нажать на кнопку “Designer”.

Система запросит тип таблицы для источника данных. Укажите  ZPO_DOC_TT.

8

 

После этого отобразиться дизайнер отчетов.

9

 

Конфигурация бендов.

Меню:Отчет->Настройка бендов.

  • Настройте (добавьте\удалите) бенды как представлено на скриншоте

10

 

Нажмите на кнопку “Close”.

  • Двойным нажатием нажмите на первый “Data” бэнд  и выберите “ITEMS” в качестве источника данных.

11

 

  • Нажмите на вложенных“Data” бэнд и выберите “SCHD” в качестве источника данных.

 
  • Расположение элементов отчета.
    • Растяните бэнд “Report Title”, поместите текстовые элементы из панели элементов  и впишите в них статические тексты. Перетяните поля из источника данных “MYDATASET”  на заголовок отчета.
    • Измените  бэнд“Page header”для отображения заголовка колонок позиций заказа( добавить статические текстовые элементы ).   
    • Измените бэнд “Data: ITEMS” –разместите в него поля из источника данных “ITEMS”
    • Измените бэнд “Data: SCHD” –разместите в него поля из источника данных “ SCHD ” .
    • На бэнд “Footer” поместите поля из источника данных “ITEMS” ([ITEMS.MENGE] и [ITEMS.MEINS]). 

     Готовый шаблон:

12

Если нажать на кнопку “preview”, то отобразиться практически пустой отчет. Это происходит из-за того, что не указаны тестовые данные для отчета.  Далее будет продемонстрировано, как сгенерировать тестовые данные.

 

Сохраните изменения  шаблона (нажмите на стандартную кнопку сохранения) и выйдите из дизайнера.

Теперь нажмите “Save” чтобы сохранить параметры отчета (в том числе и шаблон)  в базу данных.

13

 

Разработка программы печати и выполнение настроек

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

В ABAP Workbench создайте пул модулей ZZMM_FRPRINTING.

Добавьте подпрограмму “po_print_fr” со следующим кодом:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
*&---------------------------------------------------------------------*
*& Module Pool ZZMM_FRPRINTING
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
 
PROGRAM zzmm_frprinting.
TABLES: nast.
 
*&---------------------------------------------------------------------*
*& Form po_print_fr
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->ENT_RETCO text
* -->ENT_SCREEN text
*----------------------------------------------------------------------*
FORMpo_print_fr USING ent_retco ent_screen.
 
 DATA: lv_druvo LIKE t166k-druvo,
 ls_nast LIKE nast,
 lv_from_memory,
 ls_doc TYPE meein_purchase_doc_print,
 lt_ret TYPE bapiret2_t.
 
 DATA lo_fr TYPE REF TO zcl_frbase_report.
 
 DATA: ls_order TYPE zzpo_doc_s,
 lt_order TYPE zzpo_doc_tt,
 ls_item TYPE zzpo_item_s,
 ls_schd TYPE eket.
 
 FIELD-SYMBOLS: <fs1> TYPE ekpo,
 <fs2> TYPE eket.
 
 CLEARent_retco.
 
 IF nast-aende EQ space.
 lv_druvo = '1'.
 ELSE.
 lv_druvo = '2'.
 ENDIF.
 
 CALL FUNCTION 'ME_READ_PO_FOR_PRINTING'
 EXPORTING
 ix_nast = nast
 ix_screen = ent_screen
 IMPORTING
 ex_retco = ent_retco
 ex_nast = ls_nast
 doc = ls_doc
 CHANGING
 cx_druvo = lv_druvo
 cx_from_memory = lv_from_memory.
 
 CHECK ent_retco EQ 0.
 
 MOVE-CORRESPONDING ls_doc-xekko TO ls_order.
 
 SELECT SINGLE * INTO CORRESPONDING FIELDS OF ls_order-provdata
 FROM lfa1 WHERE lifnr = ls_order-lifnr.
 
 LOOP AT ls_doc-xekpo ASSIGNING <fs1>.
 
 CLEAR ls_item.
 MOVE-CORRESPONDING <fs1> TO ls_item.
 
 LOOP AT ls_doc-xeket ASSIGNING <fs2>.
 CLEAR ls_schd.
 CHECK <fs2>-ebelp = ls_item-ebelp.
 MOVE-CORRESPONDING <fs2> TO ls_schd.
 APPEND ls_schd TO ls_item-schd.
 ENDLOOP.
 
 APPEND ls_item TO ls_order-items.
 
 ENDLOOP.
 
 APPEND ls_order TO lt_order.
 
 CREATE OBJECT lo_fr
 EXPORTING
 iv_reportkey = 'ZPO_FR'.
 
 " use for production
 ent_retco = lo_fr->build_report( lt_order ).
 
**********************************************************************
**use for debugging\template correction
" DATA: lv_answer.
 
" lo_fr->set_mode( zcl_frbase_report=>mc_edit ).
" lo_fr->call_designer( lt_order ).
" CALL FUNCTION 'POPUP_TO_CONFIRM'
" EXPORTING
" text_question = 'update report template in DB?'
" IMPORTING
" answer = lv_answer.
" if lv_answer eq '1'.
" lo_fr->save_report( ).
" ENDIF.
**********************************************************************
 
 
ENDFORM. "po_print_fr

 

В коде производится вызов функции по получению данных ЗнП, маппинг данных на структуры данных и вызов метода ZCL_FRBASE_REPORT->BUILD_REPORT для генерации отчета. В случае, если необходимо отладить отчет с тестовыми данными, то необходимо закомментировать вызов метода “BUILD_REPORT”  и раскомментировать секцию программы ниже. 

Настройки

Вызовите транзакцию NACE  и добавьте новых вид выходного документа ZZFR для ЗнП. В качестве программы печати выберите ZZMM_FRPRINTING и подпрограмму PO_PRINT_FR. Укажите последовательность доступа 0001.

14

 

Новый вид выходного документа добавьте в схему выходных документов (например в  RMBEF1)

15

 

Создайте запись условия для ZZFR и вида ЗнП “NB”. 

16

 

Откройте следующий путь настроек: SPRO->Material Management->Purchasing->Messages->Output control->Message types->Define message types for Purchase order-> Fine-Tuned Control: Purchase Order.

Добавьте следующие записи для  ZZFR

17

 

Теперь можно открыть на редактирование существующий ЗнП или создать новый и вызвать функцию печати. Альтернативно можно вызвать печать заказа через транзакцию ME9F.

18

 

19

 

.NET FastReport Печать
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»