
ABAP程序详细介绍解读课件.ppt
91页ABAP程序介绍-李国庆Sap发展历史1972年,五名IBM的员工离开了IBM,在德国曼海母创建了SAP公司.SAP的第一个产品是一个自动化财务和交易程序.命名RF,就是后来的R/11979年,SAP推出用于大型机的R/2.1992年,SAP推出了著名的R/3.它建立在SAPBASIS平台的基础上,包括大家非常熟悉的SD,MM,FI,CO,PP.等模块.1996年,随着互联网的迅猛发展,SAP推出了支持Internet的新版R/33.1.1999年,SAP推出所谓的mySAPBusinessSuit.这其实又是新版的R/3,不过包含了CRM(CustomerRelationshipManagement)和SCM(SupplyChainManagement)产品.ERP的版本变为4.6C,到后来的4.7.2004年,推出mySAPERP2004,技术平台为SAPWAS6.4.2005年,推出mySAPERP2005,技术平台为SAPWAS7.0.SAPRelease版本之间的差异和关系版本4.6C以前是所谓传统的R3系统,建立在SAPBasis平台的基础上版本4.70以后,改为R3Enterprise,最大的变化是SAPWAS取代了传统的Basis平台,核心业务功能模块也作了划分;R3Enterprise之后改称为mySAPERP2004-ECC5.0,推出了NetWeaver2004-集成应用平台.2005第4季度开始mySAPERP2005-ECC6.0的准备,最大的变化将是全面转向ESA体系(基于消息机制的企业应用体系),并引入了新的功能模块,比如PLM和SRM.应用结构SAP的三层架构体系ABAP开发和运行环境的图例.可用的工具传输质量保证运行过程ABAPAdvancedBusinessApplicationProgramming的缩写,是SAPR/2,R/3版本时期唯一的系统开发工具.目前的版本是ABAP/4。
ABAP介绍ABAP是SAPERP主要的开发软件可以满足企业的特定的需要,对通过系统配置不能实现的功能进行二次开发可以进行各种类型的程序、界面、业务流程设计,如企业报表、企业单据、与第三方系统的接口等ABAP程序分类可执行程序:可分配事务代码直接运行:报表、事务模块化程序为其它程序提供模块化支持不能单独运行包括:功能模块,include程序内容报表基本语法内表操作ABAP数据库操作屏幕输出Smartforms报表程序以report开头不修改数据库而从数据库表格中读取并分析数据的程序结果通常是以列表的形式输出到屏幕或发送到打印机上分为普通报表和交互式报表普通报表程序输出结果格式固定,不能对其进行交互式操作;交互式报表程通过特定的触发事件,比如双击,菜单,按钮和功能键.可以对报表结果进行操作;报表程序结构ABAP是事件驱动的语言,程序的运行由事件引导由过程块组成程序架构事件关键字之间或事件关键字与form关键字之间的语句形成一个过程块form和endform之间的语句形成一个子程序,子程序在过程块中被调用报表程序组成全局申明过程块子程序类型、变量、屏幕一个事件发生时执行的模块优化程序的结构事件属于某一特定事件关键字的语句形成一个过程块原则上每个过程块块由各自的关键字为起始;事件块的结束标志为下一个事件块的关键字;事件块由ABAP运行时调用,其调用顺序固定,与程序编码顺序无关;缺省的事件块START-OF-SELECTION主要事件块关键字INITIALIZATIONATSELECTION-SCREENSTART-OF-SELECTIONTOP-OF-PAGEEND-OF-PAGEATLINE-SELECTIONATPFATUSER-COMMAND在选择屏幕显示前,对变量进行初始化赋值对选择屏幕的数据输入进行检查选择屏幕处理完后,数据的处理列表显示启动新页,页头的输出一页结束时,页尾的处理用户双击选中某行触发该事件当用户功能健时,触发该事件设置自定义的菜单事件块的简单处理过程事件块的简单处理过程:ABAP程序运行的时候,INITIALIZATION首先被调用;经过初始化的输入屏幕会显示在表示服务器;用户离开输入屏幕的时候,START-OF-SELCTION事件会被自动调用;结果数据会以列表的形式显示在第二个屏幕上;事件块的语法源代码中的事件块顺序不影响事件的执行顺序INITIALIZATION通常在此事件块中设定输入屏幕字段的初始值例如:例如: INITIALIZATION . P_DATE = 20030201 . 效果:效果: 输入屏幕的日期字段初始显示值为输入屏幕的日期字段初始显示值为2003年年2月月1日日事件块编码规则(1)ATSELECTION-SCREEN通常在此事件块中进行用户输入数据的合法性检查,发现错误则以消息的形式给出警示,直到用户输入正确的数值例如:例如: AT SELECTION-SCREEN . IF P_DATE = SPACE . MESSAGE E001 . ENDIF. 效果:效果: 如果字段如果字段P_DATE为空,则程序会用消息为空,则程序会用消息001“日期字段日期字段不能为空!不能为空!”来提示用户必须输入一个日期。
而且输入屏幕会等来提示用户必须输入一个日期而且输入屏幕会等待用户输入,知道该字段数值合法待用户输入,知道该字段数值合法事件块编码规则(2)START-OF-SELCTION通常在此事件中针对业务需求进行系统数据的查询例如:例如: start-of-selection . perform get_data_for_oil .效果:效果: 在输入屏幕用户按下执行按钮后,子程序在输入屏幕用户按下执行按钮后,子程序get_data_for_oil被执行,被执行, 在其中获得业务相关的数据存放到内表或者其它变量,这些数据在在其中获得业务相关的数据存放到内表或者其它变量,这些数据在END-OF-SELECTION事件块中被输出事件块中被输出事件块编码规则(3)END-OF-SELCTION通常在此事件中进行结果清单的输出例如:例如: end-of-selection . write : 23(1) sy-vline, 24(20) tab-gas_plan right-justified ,效果:效果: 数据以清单的形式输出数据以清单的形式输出事件块编码规则(4)事件块编码规则(5)ATLINE-SELECTION用于用户交互,当用户双击页面时,启动该事件.例如:例如: at line-selection. GET CURSOR FIELD l_field LINE l_line.效果:效果: 获取用户点击的行号和变量名获取用户点击的行号和变量名事件块编码规则(5)SETPF-STATUS设置用户自定义菜单AT-USER-COMMAND设置功能码的响应操作选择屏幕内容报表基本语法内表操作ABAP数据库操作屏幕输出Smartforms本小节包含内容数据类型定义选择屏幕基本数据操作WRITE语句控制语句数据类型定义一个简单的数据类型定义一个结构化的数据类型定义一个内表形式的数据类型ABAP数据类型1,TYPESTYPE|LIKE.2,TYPES()TYPE|LIKEDECIMALS.3,TYPES.4,TYPES:BEGINOF,.,.ENDOF.5,TYPESTYPE|LIKEOFWITH.TYPES语句格式通过系统标准类型定义通过数据库表字段定义自定义结构类型TYPES语句实例TYPES:numberTYPEi,lengthTYPEpDECIMALS2,code(3)TYPEc.TYPES:companyLIKEspfli-carrid.TYPES:BEGINOFaddress,nameTYPEsurname,street(30)TYPEc,cityTYPEspfli_type-cityfrom,ENDOFaddress.定义一个简单类型的变量定义一个结构化的数据对象定义一个内表DATA语句定义数据对象1,DATA.TYPE|LIKE.VALUE.2,DATA()TYPEDECIMALS.3,DATA.4,DATA:BEGINOF,.,.ENDOF.DATA语句格式DATA语句定义内表TYPES:BEGINOFstruct,number_1TYPEi,number_2TYPEpDECIMALS2,ENDOFstruct.DATA:wa_structTYPEstruct,numberLIKEwa_struct-number_2,dateLIKEsy-datum,timeTYPEt.DATA:BEGINOFw_data,number_3TYPEi,number_4TYPEpDECIMALS2,ENDOFw_data.DATA语句实例通过结构类型定义结构数据直接定义结构数据详细见SYST表SY-SUBRC:ReturncodeforABAPstatements(zeroifastatementisexecutedsuccessfully)SY-UNAME:logonnameoftheuserSY-REPID:CurrentABAPprogramSY-TCODE:currenttransactionSY-INDEX:NumberofthecurrentlooppassSY-DATUM系统日期SY-UZEIT系统时间预定义的数据对象CONSTANTS:cns_piTYPEPDECIMALS10VALUE3.1415926536,cns_flag(1)typecvalueX.CONSTANTS:BEGINOFmyaddress,name(20)TYPEcVALUEFredFlintstone,street(20)TYPEcVALUECaveAvenue,umberTYPEpVALUE11,postcode(5)TYPEnVALUE98765,city(20)TYPEcVALUEBedrock,ENDOFmyaddress.常量定义选择屏幕什么是选择屏幕选择屏幕是报表程序的一部分,通过设计选择屏幕以便交互输入字段值和选择标准。
在报表程序启动之后,用户在该屏幕中输入值选择屏幕的实现方法通过简单的语句创建字段、复选框、单选按钮,并设计屏幕布局通过PARAMETERS语句,使用户能够给变量分配值通过SELECT-OPTIONS语句,使用户能够确定变量的区域PARAMETERS语句SELECT-OPTIONS语句选择屏幕SELECTION-SCREENBEGINOFBLOCKWITHFRAMETITLEPARAMETERS:.SELECT-OPTIONS:.SELECTION-SCREENENDOFBLOCK.EXAMPLE:SELECTION-SCREENBEGINOFBLOCKRAD1WITHFRAMETITLETEXT-002.PARAMETERS:R1RADIOBUTTONGROUPGR1,R2RADIOBUTTONGROUPGR1,R3RADIOBUTTONGROUPGR1.SELECTION-SCREENENDOFBLOCKRAD1.SELECTION-SCREEN语法PARAMETERS()TYPE|LIKEDECIMALSDEFAULTOBLIGATORY.PARAMETERS.ASCHECKBOX.PARAMETERS.RADIOBUTTONGROUP.PARAMETERS语法EXAMPLE:PARAMETERSp_datumLIKEsy-datum.PARAMETERSp_checkboxTYPEcASCHECKBOX.PARAMETERSp_radioTYPECRADIOBUTTONGROUPradio1.SELECT-OPTIONS语法SELECT-OPTIONS FOR DEFAULT TO .SELECT-OPTIONS s_datum FOR sy-datum DEFAULT20070101 TO 20080101.PARAMETERS语法Wr。












