0

我正在编写一份报告,其中包含允许用户访问新页面的操作。在这个新页面中,必须显示存储在应用程序服务器上的 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.

请建议我该如何处理?

4

3 回答 3

0

要在 Web Dynpro ABAP 页面中显示 PDF 文件,

  • InteractiveForm控件添加到视图
  • 将pdfSource属性绑定到包含 PDF 内容的 Context 节点
  • 将 PDF 文件加载到上下文节点

这是一个带有屏幕截图的示例

于 2016-07-07T00:30:55.430 回答
0

有几种方法可以实现这一点:

  • 使用FileDownload元素并在上下文元素的 Supply 方法中执行上述操作。这可能是实现这一点的最简单方法,但它可能具有文件不显示,而是提供下载的缺点。值得一试,因为它很容易实现。
  • 创建一个新的 ICF 服务(不是 WebDynpro 应用程序!),它将在请求时返回具有适当 MIME 类型的 PDF 文件。然后,使用该服务的 URL 打开一个新的浏览器窗口
  • 和以前一样,但使用IFrame 元素就地显示 PDF 文件。请注意,不鼓励使用此元素(尽管可能只是为了将客户推向 EP...?)。
于 2016-06-27T07:20:02.687 回答
0

好吧,我和同事解决了我的问题,谢谢我只需要在 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.
于 2016-07-08T07:42:04.947 回答