在 Webdyn Pro ABAP 中显示来自应用程序服务器的 PDF
Display PDF from application server in Webdyn Pro ABAP
我正在处理一份报告,其中包含允许用户访问新页面的操作。在这个新页面中,必须显示存储在应用程序服务器上的pdf。
在 PDF 视图中,我创建了一个与我的上下文链接的交互式表单 (PDF_DATA-PDF : xstring)
gv_filepath = '/tmp/test.pdf'.
" Open the file in binary mode
OPEN DATASET gv_filepath FOR INPUT IN BINARY MODE.
IF sy-subrc = 0.
READ DATASET gv_filepath INTO gv_filedata.
IF sy-subrc = 0.
CLOSE DATASET gv_filepath. "Close the file
" Convert the file from hex-string to Binary format
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = gv_filedata
IMPORTING
output_length = gv_filesize
TABLES
binary_tab = gt_bin_data.
在这里,我不知道该怎么办....
lo_node = wd_context->get_child_node( 'PDF_DATA' ).
lo_node->set_attribute( name = 'PDF' value = ?).
wd_comp_controller->gestion_affichage( ).
ENDIF.
ENDIF.
请建议我该如何处理?
有几种方法可以实现:
- 使用 FileDownload 元素并在上下文元素的 Supply 方法中执行上述操作。这可能是实现它的最简单方法,但它可能有一个缺点,即文件不显示,而是提供下载。值得一试,因为它很容易实现。
- 创建一个新的 ICF 服务(不是 WebDynpro 应用程序!),它会在请求时 return 具有适当 MIME 类型的 PDF 文件。然后,open a new browser window with the URL of that service.
- 和以前一样,但使用 IFrame element 就地显示 PDF 文件。请注意,不鼓励使用此元素(尽管可能只是为了将客户推向 EP...?)。
要在 Web Dynpro ABAP 页面中显示 PDF 文件,
- 将 InteractiveForm 控件添加到视图
- 将 pdfSource 属性 绑定到包含 PDF 内容的上下文节点
- 将 PDF 文件加载到 上下文节点
这是一个 example 的屏幕截图
嗯,我和同事解决了我的问题,谢谢
我只需要在 OPEN DATASET
之后添加以下代码
CLEAR l_len.
CLEAR l_data_tab.
DO.
READ DATASET gv_filepath INTO l_data actual LENGTH l_len.
IF sy-subrc <> 0.
IF l_len > 0.
file_size = file_size + l_len.
APPEND l_data to l_data_tab.
ENDIF.
EXIT.
ENDIF.
file_size = file_size + l_len.
APPEND l_data to l_data_tab.
ENDDO.
我正在处理一份报告,其中包含允许用户访问新页面的操作。在这个新页面中,必须显示存储在应用程序服务器上的pdf。
在 PDF 视图中,我创建了一个与我的上下文链接的交互式表单 (PDF_DATA-PDF : xstring)
gv_filepath = '/tmp/test.pdf'.
" Open the file in binary mode
OPEN DATASET gv_filepath FOR INPUT IN BINARY MODE.
IF sy-subrc = 0.
READ DATASET gv_filepath INTO gv_filedata.
IF sy-subrc = 0.
CLOSE DATASET gv_filepath. "Close the file
" Convert the file from hex-string to Binary format
CALL FUNCTION 'SCMS_XSTRING_TO_BINARY'
EXPORTING
buffer = gv_filedata
IMPORTING
output_length = gv_filesize
TABLES
binary_tab = gt_bin_data.
在这里,我不知道该怎么办....
lo_node = wd_context->get_child_node( 'PDF_DATA' ).
lo_node->set_attribute( name = 'PDF' value = ?).
wd_comp_controller->gestion_affichage( ).
ENDIF.
ENDIF.
请建议我该如何处理?
有几种方法可以实现:
- 使用 FileDownload 元素并在上下文元素的 Supply 方法中执行上述操作。这可能是实现它的最简单方法,但它可能有一个缺点,即文件不显示,而是提供下载。值得一试,因为它很容易实现。
- 创建一个新的 ICF 服务(不是 WebDynpro 应用程序!),它会在请求时 return 具有适当 MIME 类型的 PDF 文件。然后,open a new browser window with the URL of that service.
- 和以前一样,但使用 IFrame element 就地显示 PDF 文件。请注意,不鼓励使用此元素(尽管可能只是为了将客户推向 EP...?)。
要在 Web Dynpro ABAP 页面中显示 PDF 文件,
- 将 InteractiveForm 控件添加到视图
- 将 pdfSource 属性 绑定到包含 PDF 内容的上下文节点
- 将 PDF 文件加载到 上下文节点
这是一个 example 的屏幕截图
嗯,我和同事解决了我的问题,谢谢 我只需要在 OPEN DATASET
之后添加以下代码 CLEAR l_len.
CLEAR l_data_tab.
DO.
READ DATASET gv_filepath INTO l_data actual LENGTH l_len.
IF sy-subrc <> 0.
IF l_len > 0.
file_size = file_size + l_len.
APPEND l_data to l_data_tab.
ENDIF.
EXIT.
ENDIF.
file_size = file_size + l_len.
APPEND l_data to l_data_tab.
ENDDO.