СОЗДАНИЕ ОТЧЕТНЫХ ФОРМ НА DOI
- 30.08.2017 5:24:00
- В Учебные пособия
- 0 Комментариев
Приведем пример, того как можно позволять пользователям заполнять отчетные формы и, например, затем отправлять заполненные формы своим коллегам для печати и подписи.
Для этого будем использовать технологию DOI(Document office integration).
Для начала нужно подготовить отчетную форму. В файле должны быть обозначены ссылки на текст, так как показано на рисунках ниже:
Рис.1
Рис.2 .
Рис.3
Рис.4
Рис.5
В свойствах также должен быть создан параметр.
Загрузим формуляр в SMW0 под именем ZDOI_TEST.
Теперь создаем в системе тестовую программу.
*&---------------------------------------------------------------------*
*& Report ZDOI_TEST
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zdoi_test.
TYPE-POOLS: cndp.
DATA: gv_tmpid TYPE char40 VALUE 'ZDOI_TEST',
gv_url TYPE cndp_url,
gt_field TYPE soi_form_list,
gs_field LIKE LINE OF gt_field,
go_container TYPE REF TO cl_gui_custom_container,
go_control TYPE REF TO i_oi_container_control,
go_document TYPE REF TO i_oi_document_proxy,
go_form TYPE REF TO i_oi_form,
gv_code TYPE syucomm.
INCLUDE zdoi_test_status_9001o01.
START-OF-SELECTION.
CALL FUNCTION 'DP_PUBLISH_WWW_URL'
EXPORTING
objid = gv_tmpid
lifetime = cndp_lifetime_transaction
IMPORTING
url = gv_url
EXCEPTIONS
OTHERS = 4.
gs_field-type = 'T'.
gs_field-name = 'p1'.
gs_field-number = '1'.
gs_field-value = 'Value from ABAP'.
APPEND gs_field TO gt_field.
CALL SCREEN 9001.
READ TABLE gt_field INTO gs_field INDEX 1.
WRITE: 'This is new value: ', gs_field-value.
На 9001 экране расположим контейнер для отображения DOI.
В PBO/PAI напишем следующий код:
PROCESS BEFORE OUTPUT.
MODULE status_9001.
*
PROCESS AFTER INPUT.
MODULE user_command_9001.
*&---------------------------------------------------------------------*
*& Module STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
DATA: lv_str TYPE string,
ls_field LIKE LINE OF gt_field.
SET PF-STATUS '9001'.
CHECK go_control IS NOT BOUND.
CALL METHOD c_oi_container_control_creator=>get_container_control
IMPORTING
control = go_control.
CREATE OBJECT go_container
EXPORTING
container_name = 'DOI_CONTAINER'.
CALL METHOD go_control->init_control
EXPORTING
inplace_enabled = 'X'
inplace_scroll_documents = 'X'
inplace_show_toolbars = space
register_on_close_event = 'X'
register_on_custom_event = 'X'
r3_application_name = 'DOI'
parent = go_container
no_flush = 'X'
EXCEPTIONS
OTHERS = 2.
CALL METHOD go_control->get_document_proxy
EXPORTING
document_type = space
register_container = 'X'
no_flush = 'X'
IMPORTING
document_proxy = go_document.
CALL METHOD go_document->open_document
EXPORTING
open_inplace = 'X'
document_url = gv_url
no_flush = 'X'.
CALL METHOD go_document->get_form_interface
EXPORTING
no_flush = 'X'
IMPORTING
f_interface = go_form.
IF gt_field IS NOT INITIAL.
CALL METHOD go_form->set_data
EXPORTING
fields = gt_field
clear = space
no_flush = 'X'.
ENDIF.
CALL METHOD go_form->protect
EXPORTING
protect = 'X'
no_flush = 'X'.
cl_gui_cfw=>flush( ).
ENDMODULE. " STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
CALL METHOD go_form->get_data
EXPORTING
all = 'X'
IMPORTING
fields = gt_field.
CASE gv_code.
WHEN 'BACK'.
LEAVE TO SCREEN 0.
ENDCASE.
" close document
CALL METHOD go_document->close_document( ).
CALL METHOD go_control->destroy_control( ).
CALL METHOD go_container->free( ).
CLEAR: go_form, go_document, go_control, go_container.
ENDMODULE. " USER_COMMAND_9001 INPUT
В двух словах логика заключается в создании контейнера DOI и отображения формуляра. По умолчанию на экран в переменную P1 выводится слово 'Value from ABAP'. Затем вводя любое слово в отчетной форме и выходе из неё функционал считывает эту переменную и выводит её значение на экран.
Таким образом, можно создать функционал для сохранения значений формуляра и выводить заполненные формы в дальнейшем.
Рис.6
Рис.7
Полезные ссылки по теме:
ПРОДВИНУТЫЕ ТЕХНОЛОГИИ ВЫВОДА В WORD И EXCEL
Вам может быть интересно
Оставить комментарий
Подпишитесь на рассылку статей.
Не волнуйтесь, мы не spam
0 Комментариев