1、/10/101ABAP/4培训Sap及abap概述第1页/10/102ABAP TrainingSAP及ABAP/4 Overview系统开发语言创建企业报表应用事务开发商用文档设计第2页/10/103SAP介绍ERP巨人SAP:创建于1972年,ERP思想提倡者,ERP领域中处于领导地位,全球最优异企业管理软件供给商SAP:System,Application and Products in Data Processing,即数据处理系统、应用和产品第3页/10/104SAP R/3一体化ERP系统客户客户客户客户/服务器服务器服务器服务器FIFI财务会计财务会计财务会计财务会计COCO财务
2、控制财务控制财务控制财务控制TR司库司库PSPS项目管理项目管理项目管理项目管理WFWF工作流程管理工作流程管理工作流程管理工作流程管理ISIS行业处理方案行业处理方案行业处理方案行业处理方案MMMM物料管理物料管理物料管理物料管理HRHR人事管理人事管理人事管理人事管理SDSD销售与分销销售与分销销售与分销销售与分销PPPP生产计划生产计划生产计划生产计划QMQM质量管理质量管理质量管理质量管理PMPM工厂维护工厂维护工厂维护工厂维护后勤系统后勤系统财务系统财务系统人力资源人力资源客户及工业部门客户及工业部门特殊要求特殊要求第4页/10/105SAP新业务模块和组件CRM用户关系管理SCM供
3、给链管理BW商业信息仓库APO高级计划与优化(Advanced Planner and Optimizer)第5页/10/106R/3主要业务模块介绍生产计划控制物料管理销售与分销财务会计管理会计人力资源第6页/10/107SAP其它业务模块跨应用组件(CA,Cross-Application Compo-nents)基础系统组件(BC,Basis Components)品质管理(QM,Quality Management)资产管理(AM,Assets Management)第7页/10/108 SAP 业务流程业务流程S&D 销售订单 PP主生产计划物料需求计划采购订单库存管理生产执行开票运
4、输生产订单发票校验成本财务 MMCO/FI第8页/10/109ERP实施步骤总体规划,分步实施教育和培训原形测试数据准备系统开发模拟运行切换第9页/10/1010SAP实施结构设计实施过程中需要多少个R/3系统需要多少个Client,详细任务是什么各个集团将怎样分布在不一样系统中通常将“开发”、“质量控制(测试)”、“产品”分别置于三个不一样系统不一样集团中第10页/10/1011开发过程中标准制订制订命名规则:自定制全部对象应该以“Z”或“Y”开头;防止命名冲突界面格调指南:应与SAP标准保持一致文档维护:项目文档:项目设计、实施进度等最终用户文档:对象说明、程序说明等技术说明文档:程序代码
5、说明、程序规格等修订列表维护:对全部对象修改清单对象模块化、在线文档标准等第11页/10/1012ABAP TrainingSAP及ABAP/4 Overview系统开发语言创建企业报表应用事务开发商用文档设计第12页/10/1013R/3开发平台介绍R/3体系结构R/3仓库与开发平台系统开发工具第一个ABAP程序ABAP数据字典介绍第13页/10/1014R/3逻辑体系结构逻辑上分为显示层、应用层、数据库层数据库层:主要业务数据及开发过程中程序和元数据经过关系数据库管理系统进行操作;应用层:从数据层提取数据进行处理或者存放新数据显示层:SAPGUI,系统和用户间接口,用户经过该层访问系统应用
6、、输入新数据并接收工作过程处理结果第14页/10/1015R/3仓库R/3仓库储存全部SAP系统开发过程中对象,这些对象也被称之为仓库对象:ABAP程序数据库表结构定义系统数据类型仓库对象不是企业业务数据,而是系统内部数据,与Client无关仓库对象要从R/3系统传入另一R/3系统,需要开发类别辅助第15页/10/1016开发类别仓库对象创建时,需要指定所属开发类别仓库对象在R/3仓库中按照开发类别分类,这些对象集合形成组织单元即为开发类别开发类别开发类别主要功效是对仓库对象进行管理(目录管理及传输控制管理等)开发类别中所包含仓库对象能够经过对象浏览器(SE80)查看和维护开发类是ABAP工作
7、台对象,其修改经过Transport Organizer统计,开发类别开发类别是其本身第16页/10/1017ABAP工作台工具介绍(1)对象导航器:Object Navigator,经过开发类别组织R/3对象浏览及维护程序编辑器:ABAP Editor,编辑ABAP程序代码数据建模器:Data modeler,业务数据建模工具数据字典:ABAP Dictionary,定义系统数据类型及数据库对象简单报表创建器:ABAP Query第17页/10/1018ABAP工作台工具介绍(2)函数创建器:Function Builder,创建功效模块类创建器:Class Builder,创建ABAP类及
8、方法等面向对象元素菜单绘制器:Menu Painter,用于创建屏幕标题、菜单、工具栏中元素及功效设定屏幕绘制器:Screen Painter,用于创建SAP标准屏幕工作台管理器:Workbench Organizer,用于管理修改请求第18页/10/1019对象导航器ABAP工作台众多开发工具中心入口,可对各种R/3仓库对象进行维护,详细见下列图事务码:SE80包含导航区域、对象浏览及工具区域三大块导航区域:对象列表选择及名称输入区域对象列表:对象列表机上下文菜单(context menu)工具区域:ABAP工作台工具、工具栏、菜单、标准工具栏、应用工具栏及从属窗口等第19页/10/1020
9、ABAP对象导航器图例导航区域工具区域对象列表从属窗口第20页/10/1021ABAP编辑器路径事务码SE38第21页/10/1022Abap程序及相关介绍ABAP advanced business application programming 是“高级商业应用编程”缩写“Hello World”程序系统程序实例:ABAPDOCU、DWDM第22页/10/1023ABAP(DDIC)数据字典介绍数据字典:定义和管理数据元素及数据库元素中心工具,全部数据库表结构及系统全局数据类型等都需要在其中创建并维护功效:自定义系统共用数据类型(基本类型、结构和表)定义数据库对象结构(数据库表、视图和索引
10、等)进行屏幕字段格式化、编辑,比如F1和F4帮助事务码:SE11第23页/10/1024ABAP TrainingSAP及ABAP/4 Overview系统开发语言创建企业报表应用事务开发商用文档设计第24页/10/1025企业报表类型静态报表交互式报表第25页/10/1026报表格式XXXXXX(企业文本)库存分析报表页 数:XXX工厂代码:XXXX会计年度:XXXX会计期间:XX库存总价:XXXX.XX(货币码)报表生成者:XXXXXXXX物料类型物料号码物料描述库存地点非限制使用库存限制使用库存库存单位价格总价(货币码)HALB100-100GG-25000144.000 1138.00
11、0 PC196.37¥232,109.34008810.000 10.000 PC196.37¥3,927.40sum54.0001143.000PC196.37¥236,036.74sumxxxxx.xxxxxxxxx.xxx Xxxxx.xx¥xxxxxxx.xx签字:_签字:_签字:_第26页/10/1027报表格式第27页/10/1028ABAP TrainingSAP及ABAP/4 Overview系统开发语言创建企业报表应用事务开发商用文档设计第28页/10/1029对话编程介绍事务是实施 与用户对话 程序。在 经典对话 中,用户可 以在系统显 示屏幕上 输入或请求 信息。作为 对
12、用户输入 或请求响 应,程序执 行适当动 作:转到下 一个屏幕,显示输出或 更改数据库。SAP 系统中每 个对话都是 由动态程序 控制。动 态程序包含 一个屏幕和 它流逻辑 而且准确控 制一个对话 步骤。流逻 辑决定在显 示屏幕前(输出前 PBO 处理)和接 收到用户在 屏幕上制作 条目后(输入后 PAI 处理)进行 处理。第29页/10/1030ABAP TrainingSAP及ABAP/4 Overview系统开发语言创建企业报表应用事务开发商用文档设计第30页/10/1031主要工具SMART FORMSSCRIPT第31页/10/1032ABAP基础ABAP语言概述数据定义基本数据操作
13、结构控制处理字符数据使用内表动态数据对象模块化技术错误处理程序调试第32页/10/1033ABAP程序结构ABAP是一个事件驱动语言,包含:数据定义:整个程序中可见全局数据类型和数据对象处理块(Processing blocks):ABAP程序主要结构单元,除数据定义和申明语句外全部ABAP语句都必须隶属于某一个处理块ABAP程序基本结构以下列图所表示:程序内部全局数据定义对话模块事件块子程序等ABAP程序第33页/10/1034处理块类型事件块(Event blocks):事件关键字开头,至下一事件关键字出现(或程序结束),无事件结束关键字报表事件:Initialization,Start-
14、of-selection列表事件:At-line-selection屏幕事件(对话事件):Process before output,process after input对话模块(Dialog Modules):有开始和结束关键字,用于事务程序设计,隶属于对话事件,在对话事件块中调用过程(Procedure):有开始和结束关键字,独立程序单元,包含功效模块和子程序、ABAP对象类方法第34页/10/1035ABAP处理块调用范例REPORT z_processing_blocks.DATA:text1(20)TYPE c VALUE Basic List:,text2(20)TYPE c V
15、ALUE Secondary List:.*Processing block1:Event block-Start-of-selectionSTART-OF-SELECTION.DO 5 TIMES.PERFORM frm_output_line USING sy-index.ENDDO.*Processing block2:Event block-at line-selectionAT LINE-SELECTION.WRITE:/text2,sy-lsind.*Processing block3:Procedure-subroutine frm_output-lineFORM frm_out
16、put_line USING p_index.WRITE:/text1,sy-lsind,Value:,p_index.ENDFORM.第35页/10/1036ABAP处理块调用范例运行结果第36页/10/1037程序类型设定程序类型包含应用程序类型和其它程序类型,在创建程序时在程序属性中设定,以下列图所表示:第37页/10/1038应用程序类型可执行程序(Executable Program):创建报表,由Report关键字引导,可包含屏幕,可包含除功效模块外全部处理块,可直接在ABAP编辑器中运行,类型代码为1。对应为报表程序模块池(Module Pool):由Program关键字引导,包
17、含自定义屏幕和对话模块,必须经过事务码运行,类型代码M。对应为事务程序(也叫对话程序、动态程序)第38页/10/1039其它程序类型不可直接运行,可为ABAP程序提供模块化单元,包含:功效组(Function Group):由Function-pool语句引导,包含一个或多个功效模块,类型代码为F类库(Class Pool):由Class-pool语句引导,类型代码K接口库(Interface Pool):由Interface-pool语句引导,类型代码J子程序池(Subroutine pools):由Program语句引导,类型代码S,包含子程序代码或类方法类型组(Type groups):
18、由Type-pool语句引导,在数据字典中定义,无类型代码包含程序(Include Program):不需要语句引导,类型代码I,只是代码复用,可直接插入其它程序中,成为该程序一部分第39页/10/1040ABAP语言概述程序结构程序类型程序元素语句格式程序运行内存管理第40页/10/1041程序元素类型ABAP元素:在ABAP编辑器中维护元素屏幕元素:经过屏幕绘制器维护元素GUI元素:经过菜单绘制器维护元素第41页/10/1042程序元素源代码(source code)变式(Variants):与选择屏幕相关,用于存放输入数据选择值,方便重复调用该程序时重复输入数据文本元素(Text ele
19、ments):存放于文本池中文本,包含文本符号、选择文本、列表标题等文档(Documentation):写给用户说明,用于解释程序功效、使用方法等文本元素和文档均含有语言相关性,能够由系统翻译工具进行翻译 第42页/10/1043文本元素维护界面第43页/10/1044屏幕元素SAP标准屏幕(Screen):多用于SAP事务程序设计,包含屏幕布局(Layout)和流逻辑(Flow Logic)选择屏幕(Selection Screen):多用于报表程序中接收用户输入报表选择标准,可经过ABAP语句控制其输出格式传统列表屏幕(Lists):只包含列表输出区域,伸出内容经过write和uline等
20、ABAP语句生成第44页/10/1045GUI元素为屏幕一个组成部分,但设计时独立于屏幕存在,各种屏幕都能够独立分配GUI包含屏幕上方菜单、标准工具栏、应用工具栏以及功效键和功效代码等GUI元素在程序调用时分为状态(GUI status)和标题(GUI Title)两部分第45页/10/1046ABAP语句结构以一个ABAP语句关键字引导,句号结束ABAP语句中还能够含附加项和操作元素各关键字、选项、操作数之间应最少保留一空格范例:Report z_simple_program.Data Text(20)VALUE Simple program.Start-of-selection.WRITE
21、 text.第46页/10/1047ABAP语句类型(1)申明语句:用于数据元素定义和申明(如变量)DATA,PARAMETER,TABLES,TYPES模块化语句:用于定义运行时处理代码块,分为事件关键字语句和过程定义关键字语句事件关键字包含:AT-SELECTION-SCREEN,START-OF-SELECTION,AT USER-COMMAND过程定义关键字包含:FORM/ENDFORM,FUNCTION/ENDFUNCTION,MODULE/ENDMODULE控制语句:以条件控制程序处理块内部程序流程IF/ENDIF,WHILE/ENDWHILE,CASE/ENDCASE第47页/1
22、0/1048ABAP语句类型(2)调用语句:用于调用已定义好处理块PERFORM,CALL,SUMBIT,LEAVE TO操作语句:用于程序内部数据操作或输出WRITE,MOVE,ADD以及运算符等数据库语句:用于数据库操作,含Open SQL和Native SQL两种第48页/10/1049语句链关键字“:”和“,”能够把连续使用相同关键字引导语句连接在一起,以简化代码,如:WRITE:text1,text2.等价于WRITE text1.WRITE text2.第49页/10/1050注释“*”,在行开头使用,可注释该行“”,单个双引号,可注释该行中其后文字,以下所表示*This whol
23、e line is commentsWRITE text.“Contents behinds this is comments第50页/10/1051程序调用直接运行:在事务SE38或SA38中直接运行经过系统目录或者在命令域中输入事务代码运行内部调用:事务代码调用:LEAVE TO TRANSACTION,CALL TRANSACTION(调用返回)SUBMIT,SUBMIT AND RETURN(调用返回)第51页/10/1052程序结束自动结束:程序完全运行,自动结束强制结束:经过LEAVE PROGRAM.语句能够在任意点结束程序第52页/10/1053内存管理(1)运行时内存管理与用
24、户对话相关(同一个用户和系统进行最多六个SAP GUI对话),包含SAP内存和ABAP内存两部分主对话:又称外部对话,用户登录SAP之后,即开始和应用服务器之间主对话,各对话间无联络内部对话:在主对话中运行可执行程序或者模块池程序,开始内部对话调用序列:调用不返回,新程序内部对话代替原程序内存,并删除原程序内存;调用返回时,生成程序调用序列,生成堆栈,调用结束时,恢复上一级程序内存状态第53页/10/1054内存管理(2)ABAP内存:主对话内部有一个ABAP内存区域,在该对话内部,可经过EXPORT TO和IMPORT FROM MEMORY在内存堆栈之间进行数据传递,以队列方式存放SAP内
25、存:全部对话都能够访问内存区域,可在SAP各对话间共享,经过SET PARAMETER和GET PARAMETER访问装载程序:调用或执行程序时,程序实例被装载到ABAP内存,第一个被装载程序为主程序;程序装载,触发LOAD-OF-PROGRAM事件对象创建:创建对象(CREATE OBJECT),类实例被装载到内部对话,该内部对话中程序及对象都能够使用该类实例第54页/10/1055ABAP基础ABAP语言概述数据定义基本数据操作结构控制处理字符数据使用内表动态数据对象模块化技术错误处理第55页/10/1056数据定义与宣告语句DATA:用于定义变量以及内表、工作区间TYPE:定义类型TAB
26、LES:宣告某一个系统中表或者结构,方便于程序中使用,同时创建表工作区间CONSTANTS:定义一个常量Parameters、selection-options第56页/10/1057数据对象生存周期:程序运行期保留:存放于数据库或者输出到文件范例:DATA txt1(15)TYPE c VALUE Data Object.初始值类型为字符串存放长度15个字节第57页/10/1058数据类型体系基本类型(Element Types)分为固定长度和可变长度两种固定长度(C、N、T、D、I、P、F、X)可变长度 String、XString复杂类型结构类型:结构体表类型:内表引用类型:基于基本数据
27、定义参考变量数据参考变量对象第58页/10/1059基本类型固定长度数据类型初始值说明示例CSPACE文本字符串NameN000.0数字文本01234T000000时间150028D00000000日期1231I0整型345F0浮点数5E+04P0压缩数123,456,789.000X0十六进制数3A第59页/10/1060基本类型可变长度String:字符串,如A StringXString:十六进制字符串,如A3FF第60页/10/1061补充文本文字最 长可达 255 个字符。如 果某文本文 字包含引号,必须重复 引号,以使 系统能够将 内容识别为 文本文字而 不是文字 结尾。新压缩类型
28、P在系统中存放时所占内存空间只有同长度浮点数、整数二分之一数字字符N,实际上是一个字符串,不过其中字符只能是数字。假如给该类型变量赋值不足与定义长度,系统会自动在左边补零第61页/10/1062确定数据对象属性DESCRIBE语法格式:DESCRIBE FIELD f LENGTH TYPE t COMPONENTS n OUTPUT-LENGTH o DECMIALS d EDIT MASK m HELP-ID h变量:LENGTH,对象长度TYPE,对象类型OUTPUT-LENGT,确定输出长度DECIMALS,确定P类型数据对象小数位长度EDIT MASK确定在数据字典中定义转换例程HE
29、LP-ID确定数据字典中定义F1帮助信息第62页/10/1063其它定义方式Data A like B.Emp:Data:matnr like mara-matnr,date like sy-datum.第63页/10/1064ABAP基础ABAP语言概述数据定义基本数据操作结构控制处理字符数据使用内表动态数据对象模块化技术错误处理程序调试第64页/10/1065基本数据操作数据赋值MOVE:把源字段值赋给目标变量,如MOVE source TO destination.等价于Destination=source.注意事项:源对象和目标完全兼容(类型,长度等),则赋值过程中结果不变不完全兼容但
30、能够进行类型转换,按固定转换规则转换不兼容且不能转换,则不能赋值,提醒语法错误或者编译过程中有错误,不然会出现运行时错误第65页/10/1066基本数据操作结构体赋值两个结构体组件结构完全一致,能够直接赋值,如stur1=stur2两结构体组件结构不完全一致,但有部分组件有对应关系,可逐一组件赋值或者使用move-corresponding stru1 to stru2.语句赋值第66页/10/1067基本数据操作初始值设定将已经赋值变量值晴空,恢复为初始状态,采取clear语句,如:clear g_var1.Clear基本数据类型:初始值依据数据类型定Clear结构体类型:逐层、逐一组件拆分
31、按上一规则执行Clear内表,去除内表表头数据语句为:clear it_test.;去除内表标题数据语句为:clear it_test.或者refresh it_test.引用类型数据:恢复初始状态,不指向任何数据对象第67页/10/1068数值运算算术预算语句运算数学表示式语句关键字语句加法n=x+y.ADD y TO x.减法n=x-y.SUBTRACT y FROM x.乘法n=x*y.MULTIPLY x By y.除法n=x/y.DIVIDE x BY y.整除n=x DIV y.取余n=x MOD y.幂n=x*y.第68页/10/1069数值运算算术预算标准运算后赋值时需要注意类
32、型转换各种数学表示式共存时注意优先级除法/整除运算时要注意除数不能为0运算符号及括号都是ABAP关键字,前后都需要有空格使用P类型进行计算时,程序属性Fixed Pointed arithmetic没有选中话,运算时会被看成整数类型进行处理两个结构体同名字段也能够整体进行算术运算,语句为ADD-CORRESPONDING,前缀和运算关键字一样第69页/10/1070数值运算任意类型参数数学函数函数名称说明ABS(X)返回输入参数绝对值SIGN(X)返回输入参数符号,正数返回1,0返回0,负数返回-1TRUNC(X)返回输入参数整数部分FRAC(X)返回输入参数小数部分CEIL(X)返回大于输入
33、参数最小整数值FLOOR(X)返回小于输入参数最大整数值第70页/10/1071数值运算浮点数类型数学函数函数名称说明Cos,Sin,Tan三角函数Acos,Asin,Atan反三角函数Cosh,Sinh,Tanh双曲函数Exp底数为e(2.7182818285)幂函数Log/Log10底数为e/10对数SQRT平方根第71页/10/1072数值运算时间日期运算系统将日期时间先转换为数值类型,依据这两种特殊类型进行合理增减,以下所表示DATA:seconds TYPE i,hours TYPE i,time1 TYPE t VALUE 100000,time2 TYPE t VALUE 080
34、000.seconds=time1-time2.hours=seconds/3600.WRITE:/Seconds between time1 and time2:,seconds,/Hours between time1 and time2:,hours.第72页/10/1073数据输出基本输出格式数据输出及格式化语句:WRITE,ULINE,FORMAT,SKIP.基本输出语法以下:WRITE/f.ULINE.FORMAT color .SKIP n.第73页/10/1074基本数据类型默认输出模式数据类型输出长度对齐方式C变量长度左对齐N变量长度左对齐T6左对齐D8左对齐F2*变量长度右
35、对齐I11右对齐P2*变量长度(+1个小数位)右对齐第74页/10/1075格式化输出(write语句)语法格式:write f.详细格式化选项请参考F1帮助在用户主统计中,能够设置输出时显示日期分隔符、小数点字符和千分符等选项,进入方式为:任意一SAP屏幕菜单System-User Profile-Own data第75页/10/1076逻辑表示式基本格式:f1 f2 通用逻辑表示式列表运算符意义EQ或=等于NE或或不等于LT或小于LE或大于GE或=大于等于第76页/10/1077逻辑表示式特殊操作符IS INITIAL:检验变量是否是初始值BETWEEN:检验对象值是否属于特定范围之间:f
36、1 between f2 and f3 IN:用于检验数据对象内容是否遵从某个选择表逻辑条件选择表:一个特殊内表,每一行包含一个特定逻辑条件,DATA seltab like range of f.组合逻辑表示式:AND,OR,NOT,以下IF(A LT N)and (N GT F).第77页/10/1078逻辑表示式比较两种类型数据兼容类型:不需要做转换,按照通常比较方式进行不兼容类型:可转换则先转换,转换规则:操作数之一为F类型,则其它操作数转为F类型操作数无F类型,之一为P类型,则其它操作数转为P类型无F,P类型,之一为T或D类型,其它操作数转为T或D类型无F,P,T,D类型,之一为C类
37、型且其它为X类型,X类型转为C类型操作数之一为C类型,其它为N类型,则两种类型均转换为P类型比较结构化数据:可转换,则逐一组件比较;若不可转换,则先转为C类型在比较比较内表:首先决定于行数,若行数相同,则逐行逐一组件进行比较;假如使用等于之外操作副,则系统找到不对等组件即停顿比较并返回结果第78页/10/1079ABAP基础ABAP语言概述数据定义基本数据操作结构控制处理字符数据使用内表动态数据对象模块化技术错误处理程序调试第79页/10/1080结构控制程序处理块内部代码由以下三种结构组织次序结构:程序次序执行分支结构:依据不一样条件执行不一样语句块循环结构:重复执行某个语句块在ABAP中,
38、控制结构都是在程序处理块内部,作用范围不能超出一个处理块,所以称为处理块内部块内部控制第80页/10/1081分支控制包含两种分支控制条件分支语句:IF/ENDIFIf conditions.elseif conditions.Endif.CASE/ENDCASECASE f.when f1 or f2 or when when others.Endcase.第81页/10/1082循环控制无条件循环无条件循环,使用DO语句实现DO n times.ENDDO.N用于控制循环次数,能够是数字或者变量假如N为0或者负数,则不进入该循环;假如不限定N值,则需要用EXIT(推出当前循环),STOP或
39、REJECT等语句强制结束循环,防止死循环系统变量SY-INDEX为已经处理过循环次数值,DO循环能够嵌套,SY-INDEX为当前循环次数第82页/10/1083无条件循环范例REPORT z_do_loop.DATA:out_index TYPE i,in_index TYPE i.DO 2 TIMES.out_index=sy-index.WRITE:/out_index.SKIP.DO 3 TIMES.in_index=sy-index.WRITE:out_index NO-GAP,-NO-GAP,in_index LEFT-JUSTIFIED.ENDDO.SKIP.ENDDO.第83页
40、/10/1084条件循环使用WHILE语句实现,进入循环之前,先检验语句中逻辑表示式值,假如为真,执行后面语句;当逻辑值不再为真或者执行到中止语句时,结束循环,语句格式以下:WHILE.ENDWHILE.SY-INDEX包含已执行循环次数,能够嵌套循环,要防止死循环问题,普通需要在程序中修改逻辑表示式某变量值,确保一定次数后语句条件为假,不然语句块中必须含有循环中止语句第84页/10/1085条件循环语句范例REPORT z_while_loop.DATA:g_lenth TYPE i,g_str01(30)TYPE c VALUE Beijing.WHILE g_str01 NE space
41、.g_lenth=sy-index.SHIFT g_str01.ENDWHILE.skip 5.WRITE:/Length of g_str01:,g_lenth.注释:该程序确定字符串有效长度,每次执行循环时,将字符串左移一位,直到其仅包含空格为止第85页/10/1086循环中止无条件循环:设定循环次数实现中止条件循环:在循环过程中修改逻辑表示式中变量值,使条件语句为假强制结束循环语句CONTINUE用于无条件中止当前循环,运行该语句后跳过当前语句块全部生于语句执行但并非结束循环,而是开始下一轮循环或条件判断CHECK用于有条件中止当前循环,与CONTINUE语句类似EXIT,无条件中止循环
42、,系统退出当前循环,继续执行当前循环后面代码,嵌套循环时执行上一级循环STOP、REJECT,退出循环并无条件结束程序第86页/10/1087循环中止范例REPORT z_terminate_loop.DO 4 TIMES.IF sy-index=2.CONTINUE.ENDIF.WRITE sy-index.ENDDO.SKIP.DO 4 TIMES.CHECK sy-index BETWEEN 2 AND 3.WRITE sy-index.ENDDO.SKIP.DO 4 TIMES.IF sy-index=3.EXIT.ENDIF.WRITE sy-index.ENDDO.第87页/10/
43、1088ABAP基础ABAP语言概述数据定义基本数据操作结构控制处理字符数据使用内表动态数据对象模块化技术错误处理程序调试第88页/10/1089处理字符数据字符数据操作连接字符串拆分字符串查找字符串替换字符串内容确定字符串长度其它操作语句字符串比较定位操作字符串第89页/10/1090字符数据操作连接字符串语句关键字:CONCATENATE concatenate s1 sn into s_dest separated by sep连接字符串s1sn并将结果赋给字符串s_destseparated by用于指定一个字符(串)作为分隔符假如连接字符串后总长度超出目标字符串长度,则把结果截断后赋
44、值;一旦出现截断情况,sy-subrc为4,不然为0为了防止截断,能够把目标字符串定义为string类型第90页/10/1091连接字符串范例REPORT z_string_concatenate.data:g_s1(9)type c value Firstname,g_s2(10)type c value Secondname,g_s3(20)type c,g_sp(1)type c value.concatenate g_s1 g_s2 into g_s3.write/g_s3.concatenate g_s1 g_s2 into g_s3 separated by g_sp.write/
45、g_s3.第91页/10/1092字符数据操作拆分使用SPLIT语句可将字符串拆分未多个小串split source at sep into s1 sn.在源字符串中搜索分隔符(sep),并依据该分隔符把源串拆分为多个小串并放到目标字串s1sn中子串中不包含分隔符与连接语句类似,假如目标字串长度不够会进行截断,且sy-subrc为4,不然为0假如源串拆分字串数量多于目标字串数量,则源串最终剩下部分包含其后分隔符都将写入最终一个字串。可采取内表来防止这种情况第92页/10/1093字符串拆分范例REPORT z_string_split.DATA:text TYPE string,itab TY
46、PE TABLE OF string.text=ABAP is a programming language.SPLIT text AT space INTO TABLE itab.LOOP AT itab INTO text.WRITE/text.ENDLOOP.第93页/10/1094字符数据操作查找字串使用search语句:search c for str.在变量C中茶中字符串str,假如找到,sy-subrc返回0,sy-fdpos返回变量C中该字符串位置(从左算起字符偏移量),不然将sy-subrc返回4字符串str,能够使用通配符*,也能够设定保留或者忽略str末尾空格,以下所表示
47、:str,搜索str并忽略尾部空格.str.,搜索str不忽略尾部空格*str,搜索以str结尾单词str*,搜索以str开头单词注意:单词是指以符号(空格,标点符号,其它字符)分隔字串第94页/10/1095查找字符串范例REPORT z_string_search.DATA g_str(30)TYPE c VALUE This is a test sentence.WRITE:/Searched,SY-SUBRC,SY-FDPOS.SEARCH g_str FOR X.WRITE:/X,sy-subrc UNDER SY-SUBRC,sy-fdpos UNDER SY-FDPOS.SEAR
48、CH g_str FOR e.WRITE:/e,sy-subrc UNDER SY-SUBRC,sy-fdpos UNDER SY-FDPOS.SEARCH g_str FOR.e.WRITE:/.e.,sy-subrc UNDER SY-SUBRC,sy-fdpos UNDER SY-FDPOS.SEARCH g_str FOR*e.WRITE:/*e,sy-subrc UNDER SY-SUBRC,sy-fdpos UNDER SY-FDPOS.SEARCH g_str FOR s*.WRITE:/s*,sy-subrc UNDER SY-SUBRC,sy-fdpos UNDER SY-F
49、DPOS.第95页/10/1096字符数据操作替换字符串内容用其它字符串替换字段一些部分,使用replace str1 with str2 into s_dest length l先对字段s_dest进行搜索,发觉字串str1即用str2替换第一次出现部分假如指定length,则只搜索前L个字节假如SY-SUBRC返回为0,则找到并替换成功,不然为进行任何替换第96页/10/1097替换字符串范例REPORT z_string_replace.DATA name TYPE string.name=Michael-Cheong.WRITE:/not replaced:,name.WHILE sy
50、-subrc=0.REPLACE-WITH INTO name.ENDWHILE.WRITE:/replaced:,name.第97页/10/1098字符数据操作确定字串长度字符串长度:从首字符开始到最终一个非空字符长度,即不包含结尾空格,使用:n=STRLEN(str).将操作数str作为字符数据类型处理,不考虑其实际类型,也不进行转换,范比如下:REPORT z_strlen.DATA:text(24)type c VALUE ABAP Language,len TYPE i.Len=strlen(text).Write:/Length of,text,is,len.第98页/10/109