您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > SAP的ABAP4语言中文培训教材第一部分第七章 控制 ABAP4 程序流
SAPAG第七章:错误!使用“开始”选项卡将Heading1应用于要在此处显示的文字。7–17–1ÕÂ7:控制ABAP/4程序流概览内容ABAP/4中流控制的概念......................................................................................................8–19编程逻辑表达式....................................................................................................................8–19比较所有的字段类型.........................................................................................................8–20比较字符串和数字串.........................................................................................................8–21二进制位结构的比较.........................................................................................................8–23检查字段是否属于某一范围............................................................................................8–25检查初始值.........................................................................................................................8–25检查选择条件...................................................................................................................8–26组合几个逻辑表达式.........................................................................................................8–26编程分支和循环....................................................................................................................8–27使用IF的条件分支...........................................................................................................8–27使用CASE的条件分支....................................................................................................8–28使用DO的无条件循环...................................................................................................8–29使用WHILE的条件循环...................................................................................................8–31终止循环............................................................................................................................8–32要根据一定条件执行程序组件,或要将重复语句序列组合在循环中,可以使用ABAP/4提供的用于控制程序流的标准关键字。ABAP/4也包含重要的附加特征。ABAP/4程序流可以内部控制和外部控制。ABAP/4程序流的内部控制和外部控制之间的差别在ABAP/4中流控制的概念(页8–19)中解释。本节主要讨论内部流控制。为此,可使用其他编程语言(例如,C、FORTRAN、PASCAL等等)中熟悉的标准控制关键字。下列主题描述ABAP/4中流控制的概念与其他高级编程语言一样(如,C、FORTRAN和PASCAL等等),ABAP/4提供也用于控制程序流的标准关键字。这些关键字用于_分支(IF、CASE)_循环(DO、WHILE)然而,ABAP/4与其他编程语言不同之处在于其具有程序流的内部控制和外部控制。_内部控制由上述标准关键字引导。在程序代码中对其进行定义。_外部控制由事件引导。事件由ABAP/4程序(系统程序或用户程序)或者交互式用户输入(例如,使用鼠标在屏幕上单击)生成。系统不必按ABAP/4程序中列出的顺序对进行语句处理。这使得ABAP/4成为事件驱动编程语言,类似于Microsoft的VisualBasic。时间事件和ABAP/4程序的连接由事件关键字提供。ABAP/4程序中的每个语句都属于特别的事件关键字。即使在程序中没有指定任何事件关键字,所有语句都自动归属于标准事件关键字(START-OF-SELECTION),与程序中事件语句的次序完全不相干。SAPAG第七章:错误!使用“开始”选项卡将Heading1应用于要在此处显示的文字。7–27–2所有属于某一特定事件关键字的语句形成一个处理块。处理块是一个在事件发生时执行的模块。处理块内的程序流依赖于内部控制。系统按顺序处理语句,或按照前面提到的标准关键字定义的顺序处理。ABAP/4程序常规结构如下:假设当用户选择一行后,生成列表且提供一些细分设备的报表程序必须作出反应(详细信息,参见交互列表)。需要为该事件处理的代码必须插入事件关键字ATLINE-SELECTION之后。ATLINE-SELECTION.MOVE'X'TOFLAG......无论何时用户通过单击鼠标或按F2键在列表中选择一个项目时,ATLINE-SELECTION和下一个事件关键字之间的所有语句将被处理关于外部控制的详细信息,如事件及其如何与ABAP/4程序相互作用的信息,参见C通过事件控制ABAP/4程序流。该节说明如何使用外部控制控制处理块内的程序流。要控制ABAP/4程序中的内部流,请遵循结构化编程原则并将程序模块划分为单个逻辑相关语句块(这些组成控制结构)。其中的每个语句块都执行主任务的一部分。要使程序易于阅读,应该缩排控制结构中的语句块。出于布局需要,可以使用ABAP/4编辑器功能“编辑-插入语句...”和“程序-整齐打印程序”(详细信息,参见ABAP/4程序布局(页2–6))。可以用IF、CASE、DO和WHILE之类的关键字控制处理块中不同语句之间的程序流。这些语句允许编制条件和无条件的分支和循环。条件使用逻辑表达式,可以是真,也可以为假。编程逻辑表达式使用条件控制程序中的内部流。要用公式指定条件,请使用比较数据字段的逻辑表达式,如下所示:语法....F1operatorF2...该表达式比较两个字段。可能为真,也可能为假。在带关键字IF、CHECK和WHILE的条件语句中使用逻辑表达式。根据操作数F1和F2的数据类型,可以使用不同的逻辑运算符。允许进行:除上述比较之外,还可以执行测试以检查数据字段是否完全满足一定条件。可以使用这些测试:另外,可以将几个逻辑表达式组合为一个简单逻辑表达式。SAPAG第七章:错误!使用“开始”选项卡将Heading1应用于要在此处显示的文字。7–37–3比较所有的字段类型要比较所有的字段类型,可以在逻辑表达式中使用下列运算符:运算符含义EQ等于=等于NE不等于不等于不等于LT小于小于LE小于等于=小于等于GT大于大于GE大于等于=大于等于操作数可以是数据库字段、内部字段、文字或常数。除基本字段外,还可以将结构数据类型和上表中的运算符结合起来作为操作数。字段串逐个组件进行比较,嵌套的结构分为基本的字段。关于比较内表的详细信息,参见比较内表(页Error!Notavalidlink.)。如果有意义,可以对不同数据类型的字段进行比较。如果字段可转换,就可以进行比较。在比较之前,系统将按照下列层次规则执行自动类型转换(参见键入转换(页6–36)):1.如果操作数之一是浮点数(类型F),则系统将其它操作数转换为类型F。2.如果操作数之一是压缩字段(类型P),则系统将其它操作数转换为类型P。3.如果操作数之一是日期字段(类型D)或时间字段(类型T),则系统将其它操作数转换为类型D或T。不支持日期和时间字段之间的比较,这会导致程序中断。4.如果操作数之一是字符字段(类型C)且其它操作数是十六进制字段(类型X),则系统将类型X的操作数转换为类型C。5.如果操作数之一是字符字段(类型C),其它操作数为数字字段(类型N),则系统将这两种操作数都转换为类型P。DATA:FTYPEFVALUE'100.00',PTYPEPVALUE'50.00'DECIMALS2,ITYPEIVALUE'30.00'.WRITE'Thefollowinglogicalexpressionsaretrue:'.IFF=P.WRITE:/F,'=',P.SAPAG第七章:错误!使用“开始”选项卡将Heading1应用于要在此处显示的文字。7–47–4ELSE.WRITE:/F,'',P.ENDIF.IFIEQP.WRITE:/I,'EQ',P.ELSE.WRITE:/I,'NE',P.ENDIF.这生成如下输出:Thefollowinglogicalexpressionsaretrue:1.000000000000000E+02=50.0030NE50.00这里,在IF语句中使用两个逻辑表达式。如果逻辑表达式为真,则屏幕上显示出来。如果逻辑表达式为假,则将相反表达式显示在屏幕上。比较字符串和数字串要比较字符串(类型C)和数字文本(类型N),可以在逻辑表达式中使用下列运算符。运算符含义CO仅包含CN不仅包含CA包含任何NA不包含任何CS包含字符串NS不包含字符串CP包含模式NP不包含模式因为除类型N和C外,系统不能执行任何其它类型转换,所以,在进行包含这些运算之一的比较时,操作数应该是类型N或C。运算符的功能如下:CO(仅包含)如果F1仅包含F2中的字符,则逻辑表达式F1COF2为真。该比较区分大小写,并包括尾部空格。如果比较结果为真,则系统字段SY-FDPOS包括F1的长度。如果为假,则SY-FDPOS包含F1中第一个未在F2内出现的字符的偏移量。CN(不仅包含)如果F1还包含F2之外的其他字符,则逻辑表达式SAPAG第七章:错误!使用“开始”选项卡将Heading1应用于要在此处显示的文字。7–57–5F1CNF2为真。该比较区分大小写,并包括尾部空格。如果比较结果为真,则系统字段SY-FDPOS包含F1中第一个未同时在F2中出现的字符的偏移量。如果为假,SY-FDPOS包含F1的长度。CA(包含任何)如果F1至少包含F2的一个字符,则逻辑表达式F1CAF2为真。该比较区分大小写。如果比较结果
本文标题:SAP的ABAP4语言中文培训教材第一部分第七章 控制 ABAP4 程序流
链接地址:https://www.777doc.com/doc-15665 .html