SAP ABAP打开并显示PDF文件(转载)
需求:将网银系统共享文件夹中的银行回单PDF文件显示在SAP中。
思路:根据特定字段找到PDF文件的路径,拼接成完整的URL,然后使用单独的程序展现出来,这个程序可以被其他报表调用,作为一个公共的PDF展现工具,也可以增加其他类型文档的展示逻辑。
代码及实现参考:
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 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
*&---------------------------------------------------------------------* *& Report ZDISPPDF *& *&---------------------------------------------------------------------* *& www.developerpages.gr *& *&---------------------------------------------------------------------* REPORT ZDISPPDF. data : lt_data TYPE TABLE OF x255. data : wa_line type x255. data: lo_docking_container type ref to cl_gui_docking_container. data: lo_html TYPE REF TO cl_gui_html_viewer. DATA: lv_url TYPE char255. data: ok_code(20). PARAMETERS fname TYPE string. * Read PDF File PERFORM read_file. * Display to screen PERFORM display_pdf. *&---------------------------------------------------------------------* *& Form read_file *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM read_file. OPEN DATASET fname for INPUT in BINARY MODE. if sy-subrc = 0. do. read DATASET fname INTO wa_line. if sy-subrc = 0. append wa_line to lt_data. else. append wa_line to lt_data. exit. endif. enddo. endif. ENDFORM. "read_file *&---------------------------------------------------------------------* *& Form display_pdf *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM display_pdf. if not lt_data is INITIAL. call screen 100. else. write :/ 'No data to display'. endif. endform. "display_pdf *&---------------------------------------------------------------------* *& Module STATUS_0100 OUTPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE STATUS_0100 OUTPUT. SET PF-STATUS 'MAIN'. clear ok_code. IF NOT ( lo_docking_container IS INITIAL ). CALL METHOD lo_docking_container->free EXCEPTIONS cntl_error = 1 cntl_system_error = 2 OTHERS = 3. endif. IF NOT ( lo_html IS INITIAL ). CALL METHOD lo_html->free EXCEPTIONS cntl_error = 1 cntl_system_error = 2 OTHERS = 3. endif. create object lo_docking_container EXPORTING repid = sy-repid dynnr = sy-dynnr extension = 5000. CREATE OBJECT lo_html EXPORTING parent = lo_docking_container. * * Load the HTML lo_html->load_data( exporting type = `application` subtype = `pdf` IMPORTING assigned_url = lv_url CHANGING data_table = lt_data EXCEPTIONS dp_invalid_parameter = 1 dp_error_general = 2 cntl_error = 3 OTHERS = 4 ). * Show it lo_html->show_url( url = lv_url in_place = 'X' ). ENDMODULE. " STATUS_0100 OUTPUT *&---------------------------------------------------------------------* *& Module USER_COMMAND_0100 INPUT *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* MODULE USER_COMMAND_0100 INPUT. CASE sy-ucomm. WHEN 'BACK' or 'EXIT' or 'CANC'. IF NOT ( lo_docking_container IS INITIAL ). CALL METHOD lo_docking_container->free EXCEPTIONS cntl_error = 1 cntl_system_error = 2 OTHERS = 3. endif. IF NOT ( lo_html IS INITIAL ). CALL METHOD lo_html->free EXCEPTIONS cntl_error = 1 cntl_system_error = 2 OTHERS = 3. endif. LEAVE SCREEN. ENDCASE. ENDMODULE. " USER_COMMAND_0100 INPUT |
screen 100 :
status MAIN:
My example :
原文参考:http://www.developerpages.gr/index.php/en/desktop-development-2/abap/114-open-and-display-pdf-file-with-sap-abap
如若转载,请注明出处:https://www.gavindong.com/3880.html