Генерация отчетов в 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]). 

 Руководство пользователя и разработчика  может быть найден по следующей ссылке: https://www.fast-report.com/ru/product/fast-report-net/documentation/

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

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

 

20 ноября 2024

Локализация и смена языков в FastReport VCL

FastReport VCL поддерживает 40 языков для локализации интерфейса и позволяет изменять язык на лету через меню или код, без перекомпиляции.
1 ноября 2024

Новые возможности редактора отчетов FastReport VCL

Рассматриваем новые возможности редактора отчетов: выносные линии, подсветка пересекающихся объектов, обновлённые деревья отчетов и данных.
30 октября 2024

Использование стилей при создании отчетов в FastReport VCL

В статье подробно рассматривается одна из новых возможностей FastReport VCL – применение стилей и страниц стилей.