Разработать печатную форму заказа на поставку и присвоить ее виду документа “NB Стандартный заказ”.
Пример готового отчета:
Для печати ЗнП необходимо создать несколько структуру в АБАП словаре. Эти структуру будут использованы в источнике данных для отчета.
Запустите транзакцию SE11. Создайте и активируйте следующие объекты:
Структура ZZPO_ITEM_S
Тип таблицы ZZPO_ITEM_TT
Структура ZZPO_PARTNER_S
Структура ZZPO_DOC_S
Тип таблицы ZZPO_DOC_TT
Запустить транзакцию ZFR_RMAN.
Нажать на кнопку “New” и добавить новый отчет “ZPO_FR” с параметрами, как указано на скриншоте ниже.
Сохранить отчет.
После сохранения перейти в режим редактирования и нажать на кнопку “Designer”.
Система запросит тип таблицы для источника данных. Укажите ZPO_DOC_TT.
После этого отобразиться дизайнер отчетов.
Меню:Отчет->Настройка бендов.
Нажмите на кнопку “Close”.
Нажмите на вложенных“Data” бэнд и выберите “SCHD” в качестве источника данных.
Руководство пользователя и разработчика может быть найден по следующей ссылке: https://www.fast-report.com/ru/product/fast-report-net/documentation/
Готовый шаблон:
Если нажать на кнопку “preview”, то отобразиться практически пустой отчет. Это происходит из-за того, что не указаны тестовые данные для отчета. Далее будет продемонстрировано, как сгенерировать тестовые данные.
Сохраните изменения шаблона (нажмите на стандартную кнопку сохранения) и выйдите из дизайнера.
Теперь нажмите “Save” чтобы сохранить параметры отчета (в том числе и шаблон) в базу данных.
Нам необходимо разработать программу\подпрограмму для возможности вызова печати из выходных документов заказа на поставку.
В 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.
Новый вид выходного документа добавьте в схему выходных документов (например в RMBEF1)
Создайте запись условия для ZZFR и вида ЗнП “NB”.
Откройте следующий путь настроек: SPRO->Material Management->Purchasing->Messages->Output control->Message types->Define message types for Purchase order-> Fine-Tuned Control: Purchase Order.
Добавьте следующие записи для ZZFR
Теперь можно открыть на редактирование существующий ЗнП или создать новый и вызвать функцию печати. Альтернативно можно вызвать печать заказа через транзакцию ME9F.