博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2016.6.16_GUI_DOWNLOAD函数生成word & html
阅读量:4344 次
发布时间:2019-06-07

本文共 8217 字,大约阅读时间需要 27 分钟。

转自:

http://blog.csdn.net/wren2004/article/details/5708947

http://www.itpub.net/thread-1008220-1-1.html

 

今天看到一个程序是从报表按钮点击,生成一个word到本地。word中有表格,还有报表里的一些参数,

同事讨论说只见过下载成excel样式的,还没见过word的。然后就百度了一下,发现了上面的地址。

这段代码原本是将一个简单的表格样式写成html格式(原文好像说是xml格式),然后用GUI_DOWNLOAD函数加后缀名

强行下载到本地,所以在函数中将后缀名改成什么格式,就显示成什么格式。

doc-->word格式

html-->网页显示

原本代码中的表格内容是写死的,和html文件内容放在一起,abap里是用宏加进内表的,宏里面好像没法打断点,

那段html文本我尝试打断,想将其中的表格内容换成变量显示,然后失败了,只能一行一行append才能加变量。

代码如下(注释部分为源代码,表格里面的内容写死了)可以直接运行.

REPORT YZTEST.DATA: BEGIN OF WA_HTML,       ZHTML(255),     END OF WA_HTML,GT_HTML LIKE TABLE OF WA_HTML.********************************************************************************************DEFINE APPD_HTML.**  WA_HTML-ZHTML = &1.*  APPEND WA_HTML TO GT_HTML.*  CLEAR WA_HTML.*END-OF-DEFINITION.***APPD_HTML: '
',* '
',* '
',* '
',* '
',* '
',* '
',* '
',* '
',* '
',* '
',* '
',* '
',* '
1111111111 2222222222
1111111111 2222222222
1111111111 2222222222
'.********************************************************************************************WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.WA_HTML-ZHTML = '
'.APPEND WA_HTML TO GT_HTML.CLEAR WA_HTML.CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD EXPORTING FILENAME = 'C:\Users\xabap01\Downloads\a.doc' CHANGING DATA_TAB = GT_HTML.IF SY-SUBRC EQ 0. WRITE 'OK'. CALL FUNCTION 'CALL_INTERNET_ADRESS' EXPORTING PI_ADRESS = 'C:\Users\xabap01\Downloads\a.doc' EXCEPTIONS NO_INPUT_DATA = 1 OTHERS = 2.ELSE. WRITE 'ER'.ENDIF.
'.APPEND WA_HTML TO GT_HTML.WA_HTML-ZHTML = '1-1'. "<<------------can change to variableAPPEND WA_HTML TO GT_HTML.WA_HTML-ZHTML = ' 2222222222
1111111111 2222222222
1111111111 2222222222

 

GUI_DOWNLOAD比较万能,这个似乎什么格式放上去都能原样down下来。

但是这样去生成一个word感觉很业余,比较专业的方法是用ole实现:

*--Include for OLE-enabling definitionsINCLUDE OLE2INCL .*--Global variables*--Variables to hold OLE object and entity handlesDATA GS_WORD TYPE OLE2_OBJECT . "OLE object handleDATA GS_DOCUMENTS TYPE OLE2_OBJECT . "DocumentsDATA GS_ACTDOC TYPE OLE2_OBJECT . "Active documentDATA GS_APPLICATION TYPE OLE2_OBJECT . "ApplicationDATA GS_OPTIONS TYPE OLE2_OBJECT . "Application optionsDATA GS_ACTWIN TYPE OLE2_OBJECT . "Active windowDATA GS_ACTPAN TYPE OLE2_OBJECT . "Active paneDATA GS_VIEW TYPE OLE2_OBJECT . "ViewDATA GS_SELECTION TYPE OLE2_OBJECT . "SelectionDATA GS_FONT TYPE OLE2_OBJECT . "FontDATA GS_PARFORMAT TYPE OLE2_OBJECT . "Paragraph formatDATA GS_TABLES TYPE OLE2_OBJECT . "TablesDATA GS_RANGE TYPE OLE2_OBJECT . "Range handle for various rangesDATA GS_TABLE TYPE OLE2_OBJECT . "One tableDATA GS_TABLE_BORDER TYPE OLE2_OBJECT . "Table borderDATA GS_CELL TYPE OLE2_OBJECT . "One cell of a tableDATA GS_PARAGRAPH TYPE OLE2_OBJECT . "ParagraphDATA GV_POS(5) TYPE N . "Position information for tableCREATE OBJECT GS_WORD 'WORD.APPLICATION' .IF SY-SUBRC NE 0.  MESSAGE S000(SU) WITH 'Error while creating OLE object!'.  LEAVE PROGRAM .ENDIF .*--Setting object's visibility propertySET PROPERTY OF GS_WORD 'Visible' = '1' .*--Opening a new documentGET PROPERTY OF GS_WORD 'Documents' = GS_DOCUMENTS .CALL METHOD OF GS_DOCUMENTS 'Add' .*--Getting active document handleGET PROPERTY OF GS_WORD 'ActiveDocument' = GS_ACTDOC .*--Getting applications handleGET PROPERTY OF GS_ACTDOC 'Application' = GS_APPLICATION .*--Setting the measurement unitGET PROPERTY OF GS_APPLICATION 'Options' = GS_OPTIONS .SET PROPERTY OF GS_OPTIONS 'MeasurementUnit' = '1' . "CM*--Getting handle for the selection which is here the character at the*--cursor positionGET PROPERTY OF GS_APPLICATION 'Selection' = GS_SELECTION .GET PROPERTY OF GS_SELECTION 'Font' = GS_FONT .GET PROPERTY OF GS_SELECTION 'ParagraphFormat' = GS_PARFORMAT .*--Setting font attributesSET PROPERTY OF GS_FONT 'Name' = 'Arial' .SET PROPERTY OF GS_FONT 'Size' = '10' .SET PROPERTY OF GS_FONT 'Bold' = '1' . "Not boldSET PROPERTY OF GS_FONT 'Italic' = '1' . "ItalicSET PROPERTY OF GS_FONT 'Underline' = '0' . "Not underlined*--Setting paragraph format attributeSET PROPERTY OF GS_PARFORMAT 'Alignment' = '1' . "Right-justifiedCALL METHOD OF GS_SELECTION 'TypeText'  EXPORTING  #1 = 'This is my first of OLE example!'.*--Setting the view to the main document again*SET PROPERTY OF GS_VIEW 'SeekView' = '0' . "Main document viewCALL METHOD OF GS_SELECTION 'TypeParagraph' .*--Reseting font attributes for the titleSET PROPERTY OF GS_FONT 'Name' = 'Times New Roman' .SET PROPERTY OF GS_FONT 'Size' = '16' .SET PROPERTY OF GS_FONT 'Bold' = '1' . "BoldSET PROPERTY OF GS_FONT 'Italic' = '0' . "Not ItalicSET PROPERTY OF GS_FONT 'Underline' = '0' . "Not underlined*--Setting paragraph format attributeSET PROPERTY OF GS_PARFORMAT 'Alignment' = '1' . "CenteredCALL METHOD OF GS_SELECTION 'TypeText'  EXPORTING  #1 = TEXT-000.*--Advancing cursor to the new lineCALL METHOD OF GS_SELECTION 'TypeParagraph' .*--Getting entity handles for the entities on the wayGET PROPERTY OF GS_ACTDOC 'Tables' = GS_TABLES .GET PROPERTY OF GS_SELECTION 'Range' = GS_RANGE .*--Adding a table with 3 rows and 2 columnsCALL METHOD OF GS_TABLES 'Add' = GS_TABLEEXPORTING#1 = GS_RANGE " Handle for range entity#2 = '3' "Number of rows#3 = '2'. "Number of columns*--Setting border attribute for the tableGET PROPERTY OF GS_TABLE 'Borders' = GS_TABLE_BORDER .SET PROPERTY OF GS_TABLE_BORDER 'Enable' = '1' . "With border*--Filling the table with dummy data*--Reseting font attributes for table contentSET PROPERTY OF GS_FONT 'Name' = 'Garamond' .SET PROPERTY OF GS_FONT 'Size' = '11' .SET PROPERTY OF GS_FONT 'Bold' = '0' . "Not boldSET PROPERTY OF GS_FONT 'Italic' = '0' . "Not ItalicSET PROPERTY OF GS_FONT 'Underline' = '0' . "Not underlined*--Getting cell coordinatesCALL METHOD OF GS_TABLE 'Cell'EXPORTING#1 = '1' "first row#2 = '1'. "first column*--Getting the range handle to write the textGET PROPERTY OF GS_CELL 'Range' = GS_RANGE .*--Filling the cellSET PROPERTY OF GS_RANGE 'Text' = 'Venkatesh Appikonda' .*--Getting cell coordinatesCALL METHOD OF GS_TABLE 'Cell' = GS_CELLEXPORTING#1 = '3' "third row#2 = '2'. "second column*--Getting the range handle to write the textGET PROPERTY OF GS_CELL 'Range' = GS_RANGE .*--Filling the cellSET PROPERTY OF GS_RANGE 'Text' = 'this is ole example' .*--Advancing the cursor to the end of the tableGET PROPERTY OF GS_TABLE 'Range' = GS_RANGE .GET PROPERTY OF GS_RANGE 'End' = GV_POS .SET PROPERTY OF GS_RANGE 'Start' = GV_POS .CALL METHOD OF GS_RANGE 'Select' .*--Skip some linesDO 10 TIMES .  CALL METHOD OF GS_SELECTION 'TypeParagraph' .ENDDO.*--Reseting font attributes for ordinary textSET PROPERTY OF GS_FONT 'Name' = 'Times New Roman' .SET PROPERTY OF GS_FONT 'Size' = '12' .SET PROPERTY OF GS_FONT 'Bold' = '0' . "Not boldSET PROPERTY OF GS_FONT 'Italic' = '0' . "Not ItalicSET PROPERTY OF GS_FONT 'Underline' = '0' . "Not underlined*--Setting paragraph format attributeSET PROPERTY OF GS_PARFORMAT 'Alignment' = '3' . "Justified*--Indent the paragraph onceGET PROPERTY OF GS_SELECTION 'Paragraphs' = GS_PARAGRAPH .CALL METHOD OF GS_PARAGRAPH 'Indent' .CALL METHOD OF GS_SELECTION 'TypeText'  EXPORTING  #1 = TEXT-002.FREE OBJECT GS_WORD .

 

....这个看上去略麻烦,等有空仔细研究了再更新吧。

转载于:https://www.cnblogs.com/fieldcatalog/p/5590845.html

你可能感兴趣的文章
jmeter的JVM参数设置
查看>>
POJ1789 Truck History【最小生成树】【终于AC了】
查看>>
python基础09_文件操作
查看>>
mvn install selenium依赖包
查看>>
关于SQL的相关笔记【长期更新,只发一帖】
查看>>
linux awk命令详解
查看>>
android:id="@+id/button1" 与 android:id="@id/button1" 区别 @string
查看>>
手把手玩转win8开发系列课程(11)
查看>>
Linux Namespace : User
查看>>
交换两个整形变量的数值
查看>>
Linux----常用操作
查看>>
sequence
查看>>
Delphi错误:Stack overflow的解决方法
查看>>
一篇很全面的freemarker教程
查看>>
取消chrome(谷歌浏览器)浏览器下最小字体限制
查看>>
模板方法模式
查看>>
什么是ECC内存?
查看>>
使用Visual Studio 2013进行UI自动化测试
查看>>
13-集体照
查看>>
读了曾国藩家书,,心态逐渐平和起来。搞技术的如果缺乏信念的指引,生活会很乏味无聊!...
查看>>