abap教程控制比较所有的字段类型_第1页
abap教程控制比较所有的字段类型_第2页
abap教程控制比较所有的字段类型_第3页
abap教程控制比较所有的字段类型_第4页
abap教程控制比较所有的字段类型_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

ABAP/4ABAP/4中流控制的概 编程逻辑表达 比较所有的字段类 比较字符串和数字 二进制位结构的比 检查字段是否属于某一范 检查选择条 组合几个逻辑表达 编程分支和循 使用IF的条件分 使用CASE的条件分 使用DO的无条件循 使用WHILE的条件循 终止循 ABAP/4ABAP/4ABAP/4程序流的和之间的差别在ABAP/4中流控制的概念(页63)中解释。(CFORTRAN等等)下列描ABAP/4(如,CFORTRANPASCAL),ABAP/4制程序流的标准关键字。这些关键字用于 (IF、 (DO、然而,ABAP/4内部控制外部控制 外部控制由引导。由ABAP/4程序(系统程序或用户程序)或者交互式用户输()ABAP/4句处理。这使得ABAP/4成为驱动编程语言,类似于的VisualBasic。时间和ABAP/4程序的连接由关键字提供。ABAP/4程序中的每个语句都属于特别的事件关键字。即使在程序中没有指定任何关键字,所有语句都自动归属于标准关键字(START-OF-SELECTION),与程序中语句的次序完全不相干所有属于某一特定关键字的语句形成一个处理块。处理块是一个在发生时提到的标准关键字定义的顺序处理。ABAP/4()ATLINE-SELECTIONATLINE-SELECTION.MOVE'X'TOFLAG.F2ATLINE-SELECTION和下一个事件关键字之间的所有语句将被处理关于外部控制的详细信息,如及其如何与ABAP/4程序相互作用的信息,参见通过控制ABAP/4程序流ABAP/4信息,参见ABAP/4程序布局(页2–6))。要控制ABAP/4辑相关语句块(这些组成控制结构。其中的每个语句块都执ABAP/4信息,参见ABAP/4程序布局(页2–6))。可以用IF、CASE、DO和WHILE使用条件控制程序中的内部流。要用指定条件,请使用比较数据字段的逻辑表达式,如下所示:....<F1><operator><F2>IF、CHECK和F1F2除上述比较之外,还可以执试以检查数据字段是否完全满足一定条件。可以使用这些测试:=<>除基本字段外,还可以将结构数据类型和上表中的运算符结合起来作为操作数。字见比较内表(页Error!Notavalidlink.)。(键入转换(页6–36)(类型F)F(P)P(D)(T)为类型D或T。不支持日期和时间字段之间的比较,这会导致程序中断。(C)(类型X),则系统将类型X的操作数转换为类型C。(C)(N)这两种操作数都转换为类型P。DATA:DATA: TYPEFVALUE TYPEPVALUE'50.00'DECIMALS2, TYPEIVALUE'30.00'.WRITE'Thefollowinglogicalexpressionsaretrue:'.IFF>=P.WRITE:/F,'>=',P.WRITE:/F,'<',P.IFIEQPWRITE:/I,'EQ',P.WRITE:/I,'NE',P.Thefollowinglogicalexpressionsare1.000000000000000E+02 30IF出来。如果逻辑表达式为假,则将相反表达式显示在屏幕上。因为除类型N和C算之一的比较时,操作数应该是类型N或C。CO

F1F2<F1>COSY-FDPOSF1SY-FDPOSF1F2符的偏移量。CNF1F2<F1>CNSY-FDPOS包含<F1F2,SY-FDPOS包含<F1>的长度。CAF1F2<F1>CASY-FDPOS包含<F1>中第一个也在<F2>中出现的字符的偏移量。如果为假,SY-FDPOS包含<F1>的长度。NAF1F2<F1>NASY-FDPOSF1度。如果为假,则SY-FDPOS包含<F1>中在<F2>内出现的第一个字符的偏移量。CSF1F2<F1>CS为真。忽略尾部空格并且比较不区分大小写。如果比较结果为真,则系统字段SY-FDPOS包含<F2>在<F1>中的偏移量。如果为假,SY-FDPOS包含<F1>的长度。NSF1F2<F1>NS不SY-FDPOS包含<F1SY-FDPOSF2F1CPF1F2<F1>CPF2>属于类型CF2 * 忽略尾部空格且比较SY-FDPOS在<F1,SY-FDPOSF1F2字符#指定 通配符"* #NPF1F2<F1>NP为真。在<F2CPSY-FDPOS包含<F1SY-FDPOSF2F1DATA:DATA:F1(5)TYPECVALUE<F1>,F2(5)TYPECVALUEIFF1<operator>WRITE:/'Comparisontrue,SY-FDPOS=',SY-FDPOS.WRITE:/'Comparisonfalse,SY-FDPOS=',SY-FDPOS.F1F2SY- 'ABCD真5 假2'ABCD真3'ABCD假5 真1 假5'ABAB 假0 真5 真1 假5 假1 真5真1假5假1真5要将逻辑表达式初始操作数第一字节的二进制位结构与第二操作数的进行比较,请使用下列操作符。O二进制位是Z二进制位是M1(类型X)其长度为一个字节且数字值直接与二进制位结构相关。O<hex1<f>1<f>OZ<hex1<f>0<f>ZMhex>1f>10<f>MDATA:CVALUEDATA:CVALUEHEXDECTYPEX,ITYPEI.HEXDEC=DO256I=IFCOIFCOWRITE:/HEXDEC,I.HEXDEC=HEXDEC+这里,使用运算符O将字符‘C‘0’与‘FF’(10进255)16HEXDEC10IHEXDECI期间,通过使用自动类型转换确定。如果比较结果为真,则在屏幕上显式 进制值。下表列出这些数的二进制位结构0123123CASCII67167BETWEEN....<F1>BETWEEN<F2>AND<F3>F1F2F3IF<F1>GE<F2>AND<F1>LEDATA:DATA:NUMBERTYPENUMBER=IFNUMBERBETWEEN3ANDFLAG=FLAG='这里,如果NUMBER37FLAGX”ISINITIAL....<f>ISINITIAL如果<f或结构化的()CLEAR<f>(重置缺省值(页6–10)。DATADATAFLAGVALUE'X'.IFFLAGISINITIAL.WRITE/'FlagisWRITE/'FlagisnotCLEARIFFLAGISWRITE/'FlagisWRITE/'Flagisnot这产生如下输出:FlagisnotinitialFlagisinitial.这里,DATAFLAGVALUE‘X’。执行CLEAR语句之后,将其重置为初始值。IN参数的逻辑...<f>IN<seltab><f>seltab>关于选择条件的详细信息,参见使用选择标准。通过使用逻辑连接运算符AND、OR和NOT_真,则表达式之间要用AND连接。 即为真,则表达式之间要用OR连接。 NOTNOT优先于AND,AND优先于ORABAP/4ABAP/4从左到右处理逻辑表达式。如果确定组件表达式之一是真或假,就不再执行就是将经常为比较放置在AND链的开头,而将费时的比较,如字符串查找放等DATA:F TYPEDATA:F TYPEFVALUE'100.00',N(3)TYPENVALUE'123',C(3)TYPECVALUE'456'.WRITE'Thefollowinglogicalexpressionistrue:'.IF(CLTN)AND(NGTF).WRITE:/'(',C,'lt',N,')ANDWRITE:/'(',C,'ge',N,')OR这产生如下输出:(456ge123)OR(123le1.000000000000000E+02IF上显示出来。如果为假,则屏幕上出现相反的表达式。可以在程序中定义条件和无条件分支和循环。为此,ABAP/4提供了几个在下列中描述的语句。IFIF语句允许依据条件将程序流转到特定的语句块中。该语句块包括IF语句及其后面的ELSEIF、ELSE或ENDIF之间的所有命令。IF<statementblock>ELSEIF<statementELSEIF<statement<statementblock>如果第一个条件是真,系统将执行所有语句直到第一个语句块结束,然后继续处理ENDIFELSEIFIFELSEIFIFELSEIF条件都为假,则执行ELSE开始的语句块。最后的语句块必须用ENDIF结束。要要 表达IF和ELSEIF语句中的条件,可以使用任何编程逻辑表达式(页ABAP/4允许无限地嵌套IF-ENDIF语句块,但是必须在相同的处理块中终止。换句话说,就是IF-ENDIF块不能包含 关键字。DATA:TEXT1(30)VALUE'Thisisthefirsttext',TEXT2(30)VALUE'Thisisthesecondtext',TEXT3(30)VALUE'Thisisthethirdtext',STRING(5)VALUE'eco'.IFTEXT1CSWRITE/'Condition1isELSEIFTEXT2CSWRITE/'Condition2isELSEIFTEXT3CSWRITE/'Condition3isWRITE/'NoconditionisCondition2isTEXT2CSSTRING“ecoTEXT2CASECASECASEWHEN<statementblock>WHEN<F2>.<statementblock>WHEN<F3>.<statementblock>WHEN...WHEN<statementblock>系统执行WHEN语句之后的语句块,如果<f>内容等于<fi>的内容,且继续处理ENDCASE语句后面的语句。如果<f>fi>的内容,则执行选项WHENOTHERS后面的语句块。最后的语句块必须用ENDCASE结束。CASEIFIF<f>=<statementblock>ELSEIF<f>=<F2>.<statementblock>ELSEIF<f>=<F3>.<statementblock>ELSEIF<f>=...<statementblock>ABAP/4CASEABAP/4CASEENDCASEIFENDIF但必须在同一处理块中终止。DATA:TEXT1VALUE'X',TEXT2VALUE'Y',TEXT3VALUE'Z',STRINGVALUECASEWHENWRITE:/'Stringis',WHENWRITE:/'Stringis',WHENWRITE:/'Stringis',WHENWRITE:/'Stringisnot',TEXT1,TEXT2,StringisnotXYWHENOTHERSSTRINGAX“Y”或“Z”,。DODODO[<n>TIMES][VARYING<f>FROM<F1>NEXT<statementblock>在发现EXIT、STOP或REJECTDO引导、ENDDO结束的语句块(参见终止循环(页63)。可以使用TIMES选项限制循环次数。<n>可以是文字或变量。如果<n>是0或负数,系统不执行该循环。SY-INDEXDODOTIMES含一个EXIT、STOP或REJECT语句,以便系统能够退出循环。DOWRITESY-IFSY-INDEX= 这里,处理3EXITDO12321232TIMESDO2WRITESY-INDEX.DO3WRITESY-INDEX.1232TIMESDO2WRITESY-INDEX.DO3WRITESY-INDEX.123段SY-INDEX记录每个循环各自的循环次数。F1F2>、<F3如果在DOF1F2>、<F3DOVARYINGDATA:BEGINOFWORD1(4)VALUE'This',WORD2(4)VALUE'is',WORD3(4)VALUE'a',WORD4(4)VALUE'loop',ENDOFTEXT.DATA:STRING1(4),DO4TIMESVARYINGSTRING1FROMTEXT-WORD1NEXTTEXT-WRITEIFSTRING1='is'.STRING1='was'.DO2TIMESVARYINGSTRING1FROMTEXT-WORD1NEXTTEXT-WORD3VARYINGSTRING2FROMTEXT-WORD2NEXTTEXT-WORD4.WRITE:STRING1,This Thiswas TEXT代表内存中四个等距字段序列。每次执行第一个DO循环时,都依次将其组件分配到STRING1中。如果STRING1包含“is”,则将其改变为“was”,而且自动将TEXT-WORD2改变为“was”。每次执行第二个DO循环时,将TEXT的组件传递给STRING1和STRING2。WHILEWHILEWHILE<condition>[VARY<f>FROM<F1>NEXT<statementblock>只要<condition>是真,或系统发现EXIT、STOP或REJECT语句,系统将继续执行由WHILE语句引导、ENDWHILE结束的语句块(参见终止循环(页63)。<condition68)系统字段SY-INDEX中包含已执行的循环次数。WHILEWHILEVARYDO循环的VARYING(DO条件循环(页77)<f>重新赋值。<F1>、<F2<F3将<F1>分配给<fF2>分配给<fWHILE语句中使用多个VARY选项。WHILE,WHILE为假,或者系统能够找到EXIT、STOP或REJECT语句退出循环。 TYPEIVALUE0,TYPEIVALUESTRING(30)TYPECVALUE'TestSTRL=STRLEN(STRING).WHILESTRINGNESPACE.WRITESTRING(1).LENGTH=SY-INDEX.SHIF

温馨提示

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

评论

0/150

提交评论