ABAP学习之—SMARTFORM学习教程.pptx
《ABAP学习之—SMARTFORM学习教程.pptx》由会员分享,可在线阅读,更多相关《ABAP学习之—SMARTFORM学习教程.pptx(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1前言 总结了一下SmartForm的知识,和大家一起共享,也希望以后大家能够共同丰富这个PPT的内容。本次讲解建立在大家都掌握SmartForm开发的基本知识的基础之上。第1页/共36页2目录我们主要通过SmartForm的开发流程逐次讲解:1.如何通过表单打印类型来判断SmartForm的设计方式 2.如何选择SmartForm与程序的接口方式中编程和SmartForm中编程的区别中常用的小技巧第2页/共36页31.如何通过表单类型来判断SmartForm的设计方式常见的几种表单打印类型分为套打例如:发票的打印非套打1)有固定的格式,对其中的字数和行数都有严格的规定。例如:发票凭证的打印2
2、)只用按照一定的格式即可。例如:工资单信息的打印在这里,我们主要判断是使用模板,还是表来实现主数据的循环显示。第3页/共36页42.2.如何选择SmartFormSmartForm与程序的接口方式 在SAP的ABAP编程中,一般开发过程都是在Report程序中取出所有需要的数据,将数据进行相应的处理以后保存到输出内表中,再打印内表中的数据,但是SmartForms是一个独立的外部Function Module,对于程序内部定义的内表数据不能直接传递,需要定义外部的数据结构Structure或者使用标准的表结构,如果程序变更,需要传递的数据发生变化,那么该Sturcture也需要修改,这是Sma
3、rtForms中不方便的地方。第4页/共36页52.2.如何选择SmartFormSmartForm与程序的接口方式通过读取数据库数据用SE11创建结构,通过设置SmartForm中的全局设置=表格借口=表,来使用。通过指针不用在SE11中创建结构,需要在SmartForm中的全局设置=全局定义=类型中定义。必须与Report中传输的内表结构一致。通过读取内存数据1)在全局设置=表格借口=导入中定义内表数据句柄。2)不用在SE11中创建结构,需要在SmartForm中的全局设置=全局定义=类型中定义。必须与Report中传输的内表结构一致。第5页/共36页6通过读取数据库数据结构:ZSDSM0
4、001表单:ZSDSM0002 程序:ZSDSM0001第6页/共36页7通过读取数据库数据第7页/共36页8通过读取数据库数据第8页/共36页9通过读取数据库数据第9页/共36页10通过读取数据库数据第10页/共36页11通过读取数据库数据行格式固定。第11页/共36页12通过读取数据库数据系统:KF1参考Smartform:ZSDSM0001参考程序:YFIF0007_1第12页/共36页13通过指针这种方法是通过在Smartform中建立指针,让其指向程序中的内表或工作区,从而实现不需要建立结构、不需要导入导出参数或内表,Smartform即可展示程序中数据的效果。第13页/共36页14
5、通过指针我们通常根据业务需求,会在程序中使用TYPE构建用于Smartform展示的内表或工作区,然后通过CALLFUNCTIONFNAMEEXPORTINGTABLES向Smartform传入参数,在Smartform中通过全局设置表格接口定义接收参数。使用指针,我们仍然需要在Smartform中定义参数,不过是在全局设置全局定义中进行设置。第14页/共36页15通过指针步骤一:我们需要在全局定义的类型选项卡中进项设置,这里把我们程序中定义的TYPE直接复制过来就行了,如图:直接复制程序中的type定义第15页/共36页16通过指针步骤二:在全局定义的全局数据选项卡中定义Smartform中
6、使用的内表和工作区变量,参考的类型就是步骤一中定义的类型。定义内表使用TYPETABLEOF定义工作区使用TYPE如图:第16页/共36页17通过指针步骤三:在全局定义的初始化选项卡中定义指针指向程序中的内表或工作区。首先:在输入参数填入步骤二中定义的内表和工作区变量名称。如图:第17页/共36页18通过指针然后在下面的文本框中加入如下代码:*定义变量DATA:HEADER(50),BODY(50).*定义指针FIELD-SYMBOLS:TYPEANY,TYPEANY.*将程序中的工作区和内表赋值给变量HEADER=(YFIF0007_1)GWA_HEADER.BODY=(YFIF0007_1
7、)GIT_BODY.*将变量赋给指针ASSIGN(HEADER)TO.ASSIGN(BODY)TO.*将指针赋给在全局数据中定义的内表和工作区变量GW_HEADER=.GT_BODY=.第18页/共36页19通过指针那程序中需要做何事情吗?看这个调用Smartform的FUNCTION:CALLFUNCTIONFNAME*EXPORTING*TABLESEXCEPTIONSFORMATTING_ERROR=1INTERNAL_ERROR=2SEND_ERROR=3USER_CANCELED=4OTHERS=5.答案是:什么都不用做,注释掉EXPORTING和TABLES,我们不需要他们了。第1
8、9页/共36页20通过指针系统:KF1参考Smartform:YFISM0001_1参考程序:YFIF0007_1第20页/共36页21通过读取内存数据我们是在Report程序中进行取数逻辑,然后想办法将数据传递到SMARTFORMS中。我们知道在SAP中可以将一个对象Export到内存中的,我们就可以根据一个类似于句柄的字符串再次取出该数据,传送一个字符串到SmartForms中是没有任何问题的,所以我们只需要Export内表到内存中,将句柄传递到SmartForms中,在SmartForms中首先定义完全相同类型的内表,再将数据Import到内表中即可完全恢复数据,这样就完成的数据的传递工
9、作。第21页/共36页22通过读取内存数据事例程序:*&-*&ReportZFS_TEST001*&*&-*创建日期:2008/07/29*创建人:DuanYulan*功能说明:通过调用内存才实现参数的传递*-*变更履历*变更日期变更者管理序号变更内容*YYYY/MM/DDCGX.XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*-*REPORTZFS_TEST001.INCLUDEZINC_SF_HELPER.“创建内表在内存中的句柄的程序DATA:GIT_OUTPUT_HTYPETABLEOFSCARR,传入SmartForm的头数据GWA_
10、OUTPUT_HLIKELINEOFGIT_OUTPUT_H,GIT_OUTPUT_DTYPETABLEOFSFLIGHT,传入SmartForm的明细数据GWA_OUTPUT_DLIKELINEOFGIT_OUTPUT_D.第22页/共36页23通过读取内存数据DATA:HEADERNAMETYPECHAR18,头内表句柄ITEMSNAMETYPECHAR18,明细内表句柄GC_CARRIDTYPES_CARR_ID.查询条件SELECT-OPTIONS:S_CARRIDFORGC_CARRID.START-OF-SELECTION.PERFORMFRM_GETDATA.输出数据的查询在句柄
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ABAP 学习 SMARTFORM 教程
限制150内