ABAP学习之—SMARTFORM_第1页
ABAP学习之—SMARTFORM_第2页
ABAP学习之—SMARTFORM_第3页
ABAP学习之—SMARTFORM_第4页
ABAP学习之—SMARTFORM_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

1、1ABAP学习之SMARTFORM2008年7月28号V1.02前言 总结了一下SmartForm的知识,和大家一起共享,也希望以后大家能够共同丰富这个PPT的内容。 本次讲解建立在大家都掌握SmartForm开发的基本知识的基础之上。3目录 我们主要通过SmartForm的开发流程逐次讲解: 1.如何通过表单打印类型来判断SmartForm的设计方式 2.如何选择SmartForm与程序的接口方式 3.Report中编程和SmartForm中编程的区别 4.SmartForm中常用的小技巧41.如何通过表单类型来判断SmartForm的设计方式 常见的几种表单打印类型分为l套打 例如:发票的

2、打印l非套打 1)有固定的格式,对其中的字数和行数都有严格的规定。 例如:发票凭证的打印 2)只用按照一定的格式即可。 例如:工资单信息的打印 在这里,我们主要判断是使用模板,还是表来实现主数据的循环显示。52.如何选择SmartForm与程序的接口方式 在SAP的ABAP编程中,一般开发过程都是在Report程序中取出所有需要的数据,将数据进行相应的处理以后保存到输出内表中,再打印内表中的数据,但是SmartForms是一个独立的外部Function Module,对于程序内部定义的内表数据不能直接传递,需要定义外部的数据结构Structure或者使用标准的表结构,如果程序变更,需要传递的数

3、据发生变化,那么该Sturcture也需要修改,这是SmartForms中不方便的地方。6 2.如何选择SmartForm与程序的接口方式l2.1通过读取数据库数据 用SE11创建结构,通过设置SmartForm中的全局设置=表格借口=表,来使用。l2.2通过指针 不用在SE11中创建结构,需要在SmartForm中的全局设置=全局定义=类型 中定义。必须与Report中传输的内表结构一致。l2.3通过读取内存数据 1)在全局设置=表格借口=导入 中定义内表数据句柄。 2)不用在SE11中创建结构,需要在SmartForm中的全局设置=全局定义=类型 中定义。必须与Report中传输的内表结构

4、一致。72.1通过读取数据库数据l结构:ZSDSM0001l表单:ZSDSM0002 l程序:ZSDSM000182.1通过读取数据库数据92.1通过读取数据库数据102.1通过读取数据库数据112.1通过读取数据库数据122.1通过读取数据库数据l行格式固定。132.1通过读取数据库数据系统:KF1参考Smartform:ZSDSM0001参考程序:YFIF0007_1142.2通过指针 这种方法是通过在Smartform中建立指针,让其指向程序中的内表或工作区,从而实现不需要建立结构、不需要导入导出参数或内表,Smartform即可展示程序中数据的效果。152.2通过指针 我们通常根据业务

5、需求,会在程序中使用TYPE构建用于Smartform展示的内表或工作区,然后通过 CALL FUNCTION FNAME EXPORTING TABLES 向Smartform传入参数,在Smartform中通过全局设置表格接口定义接收参数。 使用指针,我们仍然需要在Smartform中定义参数,不过是在全局设置全局定义中进行设置。162.2通过指针 步骤一步骤一:我们需要在全局定义的类型选项卡中进项设置,这里把我们程序中定义的TYPE直接复制过来就行了,如图:直接直接复制复制程序程序中的中的type定义定义172.2通过指针 步骤二步骤二:在全局定义的全局数据选项卡中定义Smartform

6、中使用的内表和工作区变量,参考的类型就是步骤一中定义的类型。 定义内表使用TYPE TABLE OF 定义 工作区使用TYPE 如图: 182.2通过指针 步骤三步骤三:在全局定义的初始化选项卡中定义指针指向程序中的内表或工作区。 首先:在输入参数填入步骤二中定义的内表和工作区变量名称。如图: 192.2通过指针然后在下面的文本框中加入如下代码: *定义变量 DATA: HEADER(50),BODY(50). *定义指针 FIELD-SYMBOLS: TYPE ANY, TYPE ANY. *将程序中的工作区和内表赋值给变量 HEADER = (YFIF0007_1)GWA_HEADER.B

7、ODY = (YFIF0007_1)GIT_BODY. *将变量赋给指针 ASSIGN (HEADER) TO .ASSIGN (BODY) TO . *将指针赋给在全局数据中定义的内表和工作区变量 GW_HEADER = .GT_BODY = . 202.2通过指针那程序中需要做何事情吗?看这个调用Smartform的FUNCTION: CALL FUNCTION FNAME * EXPORTING *TABLES EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 OTHER

8、S = 5. 答案是:什么都不用做,注释掉EXPORTING和TABLES,我们不需要他们了。212.2通过指针系统:KF1参考Smartform:YFISM0001_1参考程序:YFIF0007_1222.3通过读取内存数据 我们是在Report程序中进行取数逻辑,然后想办法将数据传递到SMARTFORMS中。我们知道在SAP中可以将一个对象Export到内存中的,我们就可以根据一个类似于句柄的字符串再次取出该数据,传送一个字符串到SmartForms中是没有任何问题的,所以我们只需要Export内表到内存中,将句柄传递到SmartForms中,在SmartForms中首先定义完全相同类型的

9、内表,再将数据Import到内表中即可完全恢复数据,这样就完成的数据的传递工作。 232.3通过读取内存数据事例程序:*&-*& Report ZFS_TEST001*&*&-* 创建日期 : 2008/07/29 * 创建人 : DuanYulan * 功能说明 : 通过调用内存才实现参数的传递 *-* 变更履历 * 变更日期 变更者 管理序号 变更内容 * YYYY/MM/DD CG X.XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX *-*REPORT ZFS_TEST001.INCLUDE ZINC_SF_HELPER.“创建内表在

10、内存中的句柄的程序 DATA:GIT_OUTPUT_H TYPE TABLE OF SCARR,传入SmartForm的头数据 GWA_OUTPUT_H LIKE LINE OF GIT_OUTPUT_H, GIT_OUTPUT_D TYPE TABLE OF SFLIGHT,传入SmartForm的明细数据 GWA_OUTPUT_D LIKE LINE OF GIT_OUTPUT_D.242.3通过读取内存数据DATA:HEADERNAME TYPE CHAR18,头内表句柄 ITEMSNAME TYPE CHAR18,明细内表句柄 GC_CARRID TYPE S_CARR_ID.查询条件

11、SELECT-OPTIONS:S_CARRID FOR GC_CARRID.START-OF-SELECTION. PERFORM FRM_GETDATA.输出数据的查询 在句柄中加上服务器当前时间作为句柄名称,防止多人同时使用该程序,导致句柄名称相同 CONCATENATE ZFSTEST001HD SY-UZEIT INTO HEADERNAME. CONCATENATE ZFSTEST001IT SY-UZEIT INTO ITEMSNAME. 存输出表单表头数据的内表 SAVEBUFFER GIT_OUTPUT_H HEADERNAME. 保存输出数据明细的内表,与表头数据有关联字段

12、SAVEBUFFER GIT_OUTPUT_D ITEMSNAME. PERFORM FRM_OUTPUT_TO_SMARTFORM. 调用完毕以后,删除数据 CLEARBUFFER HEADERNAME. CLEARBUFFER ITEMSNAME.END-OF-SELECTION. 252.3通过读取内存数据*&-*&FormFRM_OUTPUT_TO_SMARTFORM*&-*输出到smartform打印*-*FORM FRM_OUTPUT_TO_SMARTFORM . SMARTFORMS DATA:OPTIONS TYPE SSFCOMPOP. DATA:FM_NAME TYPE R

13、S38L_FNAM, S_OUTPUT_OPTIONS TYPE SSFCOMPOP, CONTROL TYPE SSFCTRLOP. S_OUTPUT_OPTIONS-TDDEST = LP01. SMARTFORMS初始化定义 CONTROL-NO_DIALOG = . CONTROL-PREVIEW = . CONTROL-NO_OPEN = X. CONTROL-NO_CLOSE = X. CALL FUNCTION SSF_FUNCTION_MODULE_NAME EXPORTING FORMNAME = ZSF_TEST003 IMPORTING FM_NAME = FM_NAME

14、 EXCEPTIONS NO_FORM = 1 NO_FUNCTION_MODULE = 2 OTHERS = 3. 262.3通过读取内存数据CALL FUNCTION SSF_OPEN EXPORTING CONTROL_PARAMETERS = CONTROL EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 OTHERS = 5. CALL FUNCTION FM_NAME打印会计凭证 EXPORTING PTR_HEADER = HEADERNAME PTR_ITEM

15、S = ITEMSNAME CONTROL_PARAMETERS = CONTROL OUTPUT_OPTIONS = S_OUTPUT_OPTIONS USER_SETTINGS = EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 USER_CANCELED = 4 OTHERS = 5.272.3通过读取内存数据 CALL FUNCTION SSF_CLOSE EXCEPTIONS FORMATTING_ERROR = 1 INTERNAL_ERROR = 2 SEND_ERROR = 3 OTHERS =

16、 4.ENDFORM. FRM_OUTPUT_TO_SMARTFO *&-*& Form FRM_GETDATA*&-* 通过查询条件得到查询信息*-*FORM FRM_GETDATA . 获取数据 SELECT * FROM SCARR INTO CORRESPONDING FIELDS OF TABLE GIT_OUTPUT_H WHERE CARRID IN S_CARRID. SELECT * FROM SFLIGHT INTO CORRESPONDING FIELDS OF TABLE GIT_OUTPUT_D WHERE CARRID IN S_CARRID.ENDFORM. FR

17、M_GETDATA 282.3通过读取内存数据以下是在Report程序中Import和Export的Include的程序:*&-*& 包括 ZINC_SF_HELPER*&-* 创建日期 : 2008/07/29 * 创建人 : DuanYulan * 功能说明 : 通过调用内存才实现参数的传递 *-* 变更履历 * 变更日期 变更者 管理序号 变更内容 * YYYY/MM/DD CG X.XXXXXXXXXX XXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXX *-* TYPES BUFFER_ID(80) TYPE C.DATA WA_INDX TYPE IND

18、X.DEFINE SAVEBUFFER.定义存入内存的句柄 PERFORM SAVE_TO_BUFFER USING &1 &2.END-OF-DEFINITION.DEFINE CLEARBUFFER.清空内存 PERFORM CLEAR_BUFFER USING &1.END-OF-DEFINITION. 292.3通过读取内存数据*&-*& Form save_to_buffer*&-* 定义存入内存的句柄*-*FORM SAVE_TO_BUFFER USING T TYPE TABLE TYPEID TYPE C. WA_INDX-AEDAT = SY-DATUM. WA_INDX-USERA = SY-UNAME. WA_INDX-PGMID = SY-REPID. EXPORT T TO DATABASE INDX(HK) ID TYPEID FROM WA_INDX.ENDFORM. Save_To_Buffer *&-*& Form clear_buffer*&-* 清空内存*-*FORM CLEAR_BUFFER USING BUFFID TYPE C. DELETE FROM DATABASE INDX(HK) ID BUFFID.ENDFORM.

温馨提示

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

评论

0/150

提交评论