about SCRIPT.doc_第1页
about SCRIPT.doc_第2页
about SCRIPT.doc_第3页
about SCRIPT.doc_第4页
about SCRIPT.doc_第5页
已阅读5页,还剩87页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

关于SCRIPT 的教程表格绘制1. 格式绘制器的操作 格式绘制器附:文本元素中可以使用的常用命令2. 插图的操作,include的命令简单介绍 插入图形3. 代码的编写 关于代码4介绍一个详细的示例 示例分析5. 我该如何开始动手作 可以参考的一般制作流程格式绘制器1在图1.1输入SE71,回车图1.12在图2.1就可以创建你所要做的SCRIPT,在表格栏中输入你所要创建的SCRIPT的名称 图2.13然后点击创建进入编辑模式(图2.2)图2.21)点击“页数”按钮,进入到页编辑窗口(图2.3.1)图2.3.1后续页不是必须的,如果格式都只有一种,建议使用,如果多于一种,则不建议写,而是根据程序的 end from 和 start from 或者 格式绘制器中 new-page 命令来控制,数据超过长度,没有定义可以显示的页面,将不会显示,提示 from 的有关错误 。2)添加新页(图2.3.2)图2.3.24在图2.3中输入页的名称,选中相应页,点击“页窗口”按钮进入图2.41)添加视窗(图2.4.1)2)编辑视窗(图2.4.2)图2.4.25在图2.3中点击右键选择创建元素创建5个窗体,分别命名为BOTTOM,HEAD_LFTHEAD_RIT,MAIN,GRID,然后点击页窗体按钮进入图2.4 ,方法同上。图2.56然后点击段落格式按钮进入段落格式编辑(图2.6)1)新建图2.6.12)标准设置图2.6.23)字体设置图2.6.34)记录设置图2.6.45)完成后的样子图2.6.57在图2.6中输入段落的名字相应位置和字体大小等参数,然后点击“页窗体”按钮回到也窗口编辑模式(图2.4),右键点击MAIN窗体选中文本元素,进入图2.7方法见前图2.4.2 图2.78BOX 语句,画框线在图2.7中输入你所要输出的字符串,可以使用你刚刚定义好的段落格式,然后返回上一画面,选中GRID窗体右键选择文本元素,进入图2.8在这里输入BOX,这是用来画表格的边框,在语句前要加 :/ 表示命令语句在设置了段落格式后,可以引用不同的格式 来显示每行的格式。符号用你所起的格式名字。如果1行显示不下,可以换一行再写,不过前面的符号要为空,表示连续的行具体的其他用法可以点击后面的选项钮察看。输出效果如图2.9通过测试打印,可以察看效果,不过要注意,如果加了文本元素,则显示会不正常,不过不要着急,用程序中调用就不会有问题了。所以在写之前,必须先不加文本元素符号,直接输出察看格式。图2.99表格输入完后,返回到上一页,右键点击HEAD_LFT选中文本元素,进入图2.10 ,继续编辑其他的视窗。图2.10插入图形10在这个窗体中需要显示一张图片,需要用到BITMAP1)在导航条中输入se78出现如下画面2)选择本地的图片,并键入名称和类型3)然后进入se71的对应script之后4)右键文本元素5)选择图形之后6)成功后的效果如下11设置页面默认格式12以上步骤基本问成一个SCRIPT的制作,点击保存,激活即可1)保存2)激活在script中可以使用的命令除了上面提到过的命令语句 box , include 等等之外。一般常用的语句还有 : 1. if eles endif . 判断语句2. case endcase . 选择3. bottom endbottom . 置于窗口尾部4. new page 新开一个页窗口5. perform endperform 调用子程序功能和程序中的都一样,可以根据需要来选择,但是一般还是通过代码来控制比较的方便。关于代码一、(步骤)1 输入 SE38 ,进入 ABAP/4 编辑器2 输入程序名称,点击创建,显示输入信息框,输入相应的信息。3 进入编辑界面。4SET TITLEBAR 创建窗口标题激活窗口标题,结果如下5创建PROFROM ,选择当前的程序,打勾激活会自动生成代码段6CALL FUNCTION 用法调用函数输入函数名称,显示可输入的信息,输入必要的参数7其他的函数同样方法。用的函数:OPEN_FORMSTART_FORMEND_FORMWRITE_FORMCLOSE_FORM8.函数中的输入字段1)OPEN_FORM2)START_FORM3)输出数据示例显示多条记录窗口名称示例分析1 要求:该公司需要打印合同,文本样式有2种,中文的和英文的,每种各式的文本的抬头,尾部说明都是不一样的。如果1页显示不下,需要换页,抬头和尾部说明及签字,都分别在首页和尾页显示一次。中间的页要将数据往上移。由于在A4纸上显示的内容较多,要减少空行,和字体大小。 订单可以输入范围,进行查找,每个订单有多个物料号,1个订单显示完成后,要将该订单的所有的物料的物料描述取出显示。2 分析:由于可能出现多页,就会有3种情况,仅1页可以显示完的,仅2页可以显示完的,3页及以上的。这样出现的页窗口就会有4个,由于中英文的格式又不会相同,所以要翻倍。还有就是要算上显示物料描述的页。 页窗口有这么多,但其实分析下来,总共的窗口只有头、尾和主数据(中英文的各1份)加上显示物料描述的2 各窗口。共8个。MAIN窗口只允许有1个,必须有1个。所以共7个窗口。每个页中窗口大小可以分别调整,其中的文本元素可以分别根据需要调用。下面我根据做的步骤来讲解一下。一、 格式绘制器。(画表格的样式)1 首先键入SE71进入编辑页面2 进入格式编辑界面3 定义页数(页数要一张张的创建)第1页(国外订单样式,包含头和尾的,用于单页显示的数据)4 指定该页用到的窗口5 设置页窗口格式,指定窗体各部分大小6 回到页数,继续设置页数(国内订单,包含头和尾的,用于单页显示的数据)7 指定STOCK2的窗口8 指定STOCK2的页窗口9 点击页数,返回继续创建提示:如果不指定下1页,当数据超过1页,又没有手动换页的时候,系统在执行的时候会报出错误,并且终止运行,不显示数据。10 窗口已经创建,用原来的,不需要指定。下一步我们来指定页窗口11 接着用同样的方法依次添加余下的页数,12 同样的方法设置页窗口每个窗口根据显示数据的需要,来进行设置各包含窗口的长度13 窗口设置完毕,根据数据来设置每行的字体,显示的位置,尽量找到规律,取名字要容易记的创建新的格式(以行为单位)标准:设置标题格式(居中)字体:设置字体的格式(该行整行的格式)记录:设置数据在每行中显示的位置说明:数字 ,是位置的标示,分别给与其一个标示的位置。表示位置,该字段表示窗口的最左端起始的位置,后一个不能比前一个小。另外要判断字体在上面的长度,如果过长,数字会不符合格式。调整,判断再此位置显示的文字对齐格式。提示:用尺在纸上划出样子,量出数的距离,赋予对齐格式,给与一些量的时候的技巧。LEFT写的是该字段格的左边线位置,RIGHT写的是该字段格的右边线的位置,CENTER是该字段最中间的位置。14 接着我们可以根据表格样式,填入一些固定的字段,需要从数据库中取数的,可以先用固定合理长度的字符代替,进行测试,效果满意后,再取出程序中的字段。其实可以修改的事实上只有窗口,所以也可以直接选窗口进行修改。提示:由于很多表格要划线,所以从页窗口进入,可以方便的知道每个窗体的长度。15 HEAD窗口(英文报表样式)说明:HEAD1是用于显示英语文本格式的抬头,由于不管多少页只在首页显示1次,所以划线的长度固定。 HEAD1_H 用于显示物料描述的标题16 MAIN窗口(所有的公用)说明:该部分包含的内容比较多,用到的格式也多,每个页面都要调用到它。这里做一下简单说明,具体的使用情况看程序中的代码ITEM_HEAD 部分是每张纸的首行都是行标题项目。但是因为首页、中页、尾页的显示位置和线的长度都不一样,所以要细分。RATE 该部分计算总价,由于换了格式,有几个用不到了。没有删掉,见谅。PAGE 该部分显示页数DATA 该部分是用于显示物料描述信息的LINE 由于多页显示有特殊情况,就是2页显示不下,但是第3页是空白,这样的话,由于程序问题,只能人为的在第3 页加线,利于美观。17 BOTTOM窗口(英文报表样式)说明:MENO1 显示尾部信息 PAGE1 显示页数(当前页数和总页数) NAME1 签字栏 MENO1_B PAGE1_B NAME1_B 该3个字段是为了显示不在末尾,不要求显示尾部说明和签字栏的,但是却要显示页数的情况。为了保证格式每页相同,每个页的头、尾窗口长度都相同,数据区域不同,使其重叠,所以在显示尾部说明和签字栏的相同的位置留了空白。 BOTTOM 命令,在窗口最底部显示18 HEAD2窗口(中文报表样式)说明:同英文的格式,只是显示的内容不同 HEAD2 用于显示中文表格样式的抬头信息 HEAD2_H 用于显示中文样式物料描述的信息19 BOTTOM2窗口(中文报表样式)说明:MENO2 显示尾部信息 PAGE2 显示页数(当前页数和总页数) NAME2 签字栏 MENO2_B PAGE2_B NAME2_B 该3个字段是为了显示不在末尾,不要求显示尾部说明和签字栏的,但是却要显示页数的情况。为了保证格式每页相同,每个页的头、尾窗口长度都相同,数据区域不同,使其重叠,所以在显示尾部说明和签字栏的相同的位置留了空白。20 DISCH窗口(物料描述的标题和数据)说明:分别对应中英文的格式DISCHAND 中文的样式DISCHAND1 英文的样式21 DISCB窗口(物料描述的页数)说明:显示页数,中文和英文的格式都是一样的。显示物料描述的信息22 基本上就是这些步骤,在写代码前,运行测试打印看看效果。最好是不加文本元素前就进行测试(/E)二、 程序代码。(进行逻辑控制)*&-*& PROGRAM NAME: 天津 - 国内、国外合同样式 *& TRANSACTION : Report ZMR_CONTRACT *& *& *& DATE COMMENT NAME *&-*& 2004/09/30 *& *&-*REPORT ZMR_CONTRACT NO STANDARD PAGE HEADING .*&-* TABLE DECLARATION*&-*TABLES: EKKO, 采购凭证抬头表 EKPO, 采购凭证项目表 EKET, 计划协议计划行 MAKT, 物料描述 LFA1, 供应商主数据 (一般地区) T024, 采购组 TLINE, SAPscript: 文字行 T001. 公司代码*&-* STRUCTURE DECLARATION*&-* 采购订单抬头数据DATA: BEGIN OF W_MESS, EBELN LIKE EKKO-EBELN, 采购订单号 LIFNR LIKE EKKO-LIFNR, 供应商编号 BUKRS LIKE EKKO-BUKRS, 采购公司 VERKF LIKE EKKO-VERKF, 销售员 EKGRP LIKE EKKO-EKGRP, 采购组 NAME1 LIKE LFA1-NAME1, 卖方公司信息1 NAME2 LIKE LFA1-NAME2, 卖方公司信息2 STREET LIKE ADRC-STREET, 卖方公司地址 TEL_NUMBER LIKE ADRC-TEL_NUMBER, 卖方公司电话 FAX_NUMBER LIKE ADRC-FAX_NUMBER, 卖方公司传真 BUTXT LIKE T001-BUTXT, 买方公司名称 STREETM LIKE ADRC-STREET, 买方公司地址 TEL_NUMBERM LIKE ADRC-TEL_NUMBER, 买方公司电话 FAX_NUMBERM LIKE ADRC-FAX_NUMBER, 买方公司传真 ZTERM LIKE EKKO-ZTERM, 付款条件 LTEXT LIKE TCURT-LTEXT, 货币名称(中文) WAERS LIKE EKKO-WAERS, 货币名称(英文缩写) EKNAM LIKE T024-EKNAM, 采购组名字 LANGU LIKE ADRC-LANGU, 语言 INCO1 LIKE EKKO-INCO1, 国际贸易条件1 INCO2 LIKE EKKO-INCO2, 国际贸易条件2END OF W_MESS.* 采购订单明细数据DATA: BEGIN OF W_STOCK, EBELN LIKE EKKO-EBELN, 采购订单号 EBELP LIKE EKPO-EBELP, 行号 MATNR LIKE EKPO-MATNR, 物料编号 MAKTX LIKE MAKT-MAKTX, 物料描述 EINDT LIKE EKET-EINDT, 交货日期 MENGE LIKE EKPO-MENGE, 数量 MEINS LIKE EKPO-MEINS, 单位 MSEH6 LIKE T006A-MSEH6, 订单描述 NETWR LIKE EKPO-NETPR, 净价 PEINH LIKE EKPO-PEINH, 每 HJ LIKE EKPO-NETWR, 合计END OF W_STOCK.* 物料长文本描述DATA: BEGIN OF W_TEXT, TDFORMAT TYPE TLINE-TDFORMAT, 标记列 TDLINE TYPE TLINE-TDLINE, 文本行END OF W_TEXT.* 物料长文本结构DATA: BEGIN OF W_MM_TEXT, STRING(60000) TYPE C, 长文本 MATNR LIKE EKPO-MATNR, 物料编号 EBELP LIKE EKPO-EBELP, 行号 LANGU LIKE ADRC-LANGU, 语言 EBELN LIKE EKKO-EBELN, 采购订单号END OF W_MM_TEXT.* 采购凭证号DATA: BEGIN OF W_EBELN, EBELN LIKE EKKO-EBELN, 采购凭证END OF W_EBELN.*&-* INTERNAL TABLE DECLARATION*&-*DATA: I_STOCK LIKE W_STOCK OCCURS 0, 内表,存储物料数据 I_STOCK1 LIKE W_STOCK OCCURS 0, 内表,存储物料数据 I_MESS LIKE W_MESS OCCURS 0 , 内表,存储抬头信息 I_TEXT LIKE W_TEXT OCCURS 0 , 内表,存储抬头信息 I_EBELN LIKE W_EBELN OCCURS 0 , 采购凭证号 I_MM_TEXT LIKE W_MM_TEXT OCCURS 0,存储物料描述的信息 I_MM_TEXT2 LIKE W_MM_TEXT OCCURS 0.存储物料描述的信息*&-* CONSTANT DECLARATION*&-*&-* VARIANT DECLARATION*&-*DATA: V_AMOUNT(10) TYPE P DECIMALS 2, 计算合计的总额 V_PAGE(3) TYPE P DECIMALS 0, 当前页数 V_CPAGE(3) TYPE P DECIMALS 0, 总计页数 V_NUM TYPE I, 计算取出的数据数 V_MNUM TYPE I, 临时存储余数运 算的值,判断是否换页 V_CNUM TYPE I, 取出当前的记录数, 用于判断是否新的记录 V_ANUM TYPE I, 数据的总的条数 V_TXT1(20) TYPE C, 截取物料描述的前20个字段 V_TXT2(20) TYPE C, 截取物料描述的后20个字段 V_MATER_DES(40) TYPE C, 临时存储字段物料编号的数值 V_MENGE(6) TYPE P DECIMALS 1, 临时存储字段数量 V_NETWR(6) TYPE P DECIMALS 2, 临时存储字段净价 V_HJ(10) TYPE P DECIMALS 2, 临时存储字段总价 V_PEINH(4) TYPE C , 临时存储净价每的单位 V_LEN TYPE I VALUE 20, 截取字段的长度为20 V_LINE TYPE I, 显示物料描述信息的行数 V_WPAGE(3) TYPE P VALUE 1, 显示物料描述用到的页数 V_WCPAGE(3) TYPE P , 显示物料描述用到的总计页数 P_LAN TYPE C VALUE 1.*&-* PARAMETER DECLARATION*&-*SELECTION-SCREEN SKIP.SELECTION-SCREEN BEGIN OF BLOCK BLOCK1 WITH FRAME TITLE B_TITLE.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT (12) TEXT-001. 供应商SELECTION-SCREEN POSITION 33.SELECT-OPTIONS: P_LIFNR FOR EKKO-LIFNR .SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT (12) TEXT-002. 采购订单SELECTION-SCREEN POSITION 33.SELECT-OPTIONS: P_EBELN FOR EKKO-EBELN .SELECTION-SCREEN END OF LINE.SELECTION-SCREEN BEGIN OF LINE.SELECTION-SCREEN COMMENT (12) TEXT-003. 交货日期SELECTION-SCREEN POSITION 33.SELECT-OPTIONS: P_EINDT FOR EKET-EINDT.SELECTION-SCREEN END OF LINE.*SELECTION-SCREEN BEGIN OF LINE.*SELECTION-SCREEN COMMENT (12) TEXT-004. 合同文本样式*SELECTION-SCREEN POSITION 36.*PARAMETERS:P_LAN(1) TYPE C OBLIGATORY DEFAULT 1.*选择语言,1为中文,国内的.2为中英文的,国外的*SELECTION-SCREEN END OF LINE.SELECTION-SCREEN END OF BLOCK BLOCK1.*&-* INITIALIZATION*&-*INITIALIZATION.B_TITLE = 输入查询条件.*&-* AT SELECTION-SCREEN*&-*AT SELECTION-SCREEN.*&-* MAIN PROGRAM*&-*START-OF-SELECTION.* 取出数据 PERFORM GET_DATA.* 显示数据 PERFORM SHOW_DATA.*&-*& Form GET_DATA*&-* 取得数据*-*FORM GET_DATA . DATA: L_TXZ01 LIKE EKPO-TXZ01. 物料描述* 取出数据 SELECT EBELN 采购订单号 LIFNR 供应商编号 BUKRS 采购公司 VERKF 销售员 EKGRP 采购组 WAERS 货币代号 ZTERM 付款条件 INCO1 国际贸易条件1 INCO2 国际贸易条件2 INTO (W_MESS-EBELN, 采购订单号 W_MESS-LIFNR, 供应商编号 W_MESS-BUKRS, 采购公司 W_MESS-VERKF, 销售员 W_MESS-EKGRP, 采购组 W_MESS-WAERS, 货币代号 W_MESS-ZTERM, 付款条件 W_MESS-INCO1, 国际贸易条件1 W_MESS-INCO2 国际贸易条件2 ) FROM EKKO 采购订单抬头 WHERE LIFNR IN P_LIFNR 供应商 AND EBELN IN P_EBELN. 采购订单* 取得供应商明细数据 SELECT SINGLE BNAME1 供应商名字 BNAME2 供应商名字 BSTREET 供应商地址 BTEL_NUMBER 供应商电话 BFAX_NUMBER 供应商传真 BLANGU 语言 INTO (W_MESS-NAME1, 供应商名字 W_MESS-NAME2, 供应商名字 W_MESS-STREET, 供应商地址 W_MESS-TEL_NUMBER, 供应商电话 W_MESS-FAX_NUMBER, 供应商传真 W_MESS-LANGU 语言 ) FROM LFA1 AS A JOIN ADRC AS B ON AADRNR = BADDRNUMBER WHERE LIFNR = W_MESS-LIFNR.* 取得买方明细数据 SELECT SINGLE ABUTXT 买方名字 BSTREET 买方地址 BTEL_NUMBER 买方电话 BFAX_NUMBER 买方传真 INTO (W_MESS-BUTXT, 买方名字 W_MESS-STREETM, 买方地址 W_MESS-TEL_NUMBERM, 买方电话 W_MESS-FAX_NUMBERM 买方传真 ) FROM T001 AS A JOIN ADRC AS B ON AADRNR = BADDRNUMBER WHERE BUKRS = W_MESS-BUKRS.* 取得货币名称 SELECT SINGLE LTEXT INTO W_MESS-LTEXT FROM TCURT AS A JOIN EKKO AS B ON AWAERS = BWAERS WHERE BEBELN = W_MESS-EBELN.* 取得采购组 SELECT SINGLE EKNAM INTO W_MESS-EKNAM FROM T024 WHERE EKGRP = W_MESS-EKGRP.* 取得明细数据 SELECT AEBELN 采购订单号 AEBELP 行项目 AMATNR 物料编号 BEINDT 交货日期 AMENGE 数量 AMEINS 单位 ANETPR 净价 APEINH 每 ATXZ01 物料描述 INTO (W_STOCK-EBELN, 采购订单号 W_STOCK-EBELP, 行项目 W_STOCK-MATNR, 物料编号 W_STOCK-EINDT, 交货日期 W_STOCK-MENGE, 数量 W_STOCK-MEINS, 单位 W_STOCK-NETWR, 净价 W_STOCK-PEINH, 每 L_TXZ01 物料描述 ) FROM EKPO AS A JOIN EKET AS B ON AEBELN = BEBELN AND AEBELP = BEBELP WHERE BEINDT IN P_EINDT 交货日期 AND AEBELN = W_MESS-EBELN. 采购订单号 IF W_MESS-LANGU = 1 AND W_STOCK-MATNR SPACE.* 取得物料描述 SELECT SINGLE MAKTX 物料名称 INTO W_STOCK-MAKTX FROM MAKT WHERE MATNR = W_STOCK-MATNR. 物料编号 ELSE.* 取得物料描述 W_STOCK-MAKTX = L_TXZ01 . 物料描述 ENDIF.* 取得单位描述 SELECT SINGLE MSEH6 INTO W_STOCK-MSEH6 FROM T006A WHERE MSEHI = W_STOCK-MEINS AND SPRAS = SY-LANGU. CONDENSE W_STOCK-MEINS.* 取得物料长文本描述 PERFORM GET_LONG_TEXT. W_EBELN-EBELN = W_MESS-EBELN. COLLECT W_EBELN INTO I_EBELN. APPEND W_STOCK TO I_STOCK. COLLECT W_MESS INTO I_MESS. ENDSELECT. ENDSELECT.ENDFORM. GET_DATA*&-*& Form GET_LONG_TEXT*&-* 取得物料长文本

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论