流控制

作者: 扇动蝴蝶的翅膀 | 来源:发表于2019-04-10 23:33 被阅读0次

    1. 比较符

    1.  =              等于
    2.  <>  或  ><     不等于
    3.  <              小于
    4.  <=            小于等于
    5.  >              大于
    6.  >=            大于等于
    7. and             并且
    8. or               或
    9. not              非
    

    2. 条件语句

    1. IF语句

    语法:
      IF    <条件1>.
            <语句1>.
      ELSEIF     <条件2>.
                 <语句2>.
                 …..
       ELSE.
             <else语句>.
      ENDIF.
    

    用户名/密码登录的例子

    REPORT ZABAP1903_07YUJUC06.
    PARAMETERS: user(15) type c,
                pass(15) type c.
    DATA: info_a(20) type c VALUE '登录成功',
          info_b(20) type c VALUE '用户名或密码错误',
          info_c(20) type c VALUE '用户名或密码为空',
          user_a(15) type c VALUE 'lipenjua',
          pass_a(15) type c VALUE '000000'.
    TRANSLATE  user_a  TO  UPPER  CASE.   "将其用户名转换成大写
    IF user = user_a and pass = pass_a.
      WRITE:/ info_a.
      ELSEIF user = '' or pass = ''.
        WRITE:/ info_c.
      ELSE.
        WRITE:/ info_b.
    ENDIF.
    

    在每个判断语句之后要加上语句结束符“ . ”。
    2. CASE语句

     语法: 
      CASE  <变量f>.
         WHEN <值1>.
              <语句1>
         WHEN <值2>.
              <语句2>
                 ….
          WHEN OTHERS.
             <others 语句>
      ENDCASE.
    

    计算每月的天数例子

    *能被4整出且不能被400整出或能被400整出的是闰年。
    PARAMETERS: year TYPE i,
                month TYPE i.
    CASE month.
      WHEN 2.
        IF year mod 4 = 0 and year mod 100 <> 0 or year mod 400 = 0 .
          WRITE:/ '29'.
        ELSE.
            WRITE:/ '28'.
        ENDIF.
       WHEN 4 or 6 or 9 or 11.
          WRITE:/ '30'.
       WHEN 1 or 3 or 5 or 7 or 8 or 10 or 12.
          WRITE:/ '31'.
       WHEN OTHERS.
         WRITE:/ '月份输入有误'.
    ENDCASE.
    

    3. 循环语句

    1. 计数循环语句

     语法: 
      DO  [n TIMES]  [VARYING  <f>  FROM  <start>  TO  <end>].
           <循环语句块>
      ENDDO.
    
    选项n TIMES:循环n次
    选项VARYING  <f>  FROM  <start>  TO  <end>:从start循环到end,将当前循环的值赋值给f
    

    累加求和的例子1

    REPORT ZABAP1903_07DO.
    DATA: sum type i value 0.
    DO 3 TIMES.
      sum = sum + sy-index.  "sy-index:用来记录循环的次数或者索引的
    ENDDO.
    WRITE:/ sum.
    

    累加求和的例子2

     DO  VARYING  I  FROM 1  TO  10.
        S = S + I.
     ENDDO.
        WRITE: / ,'1+2+3+…+10'=,S
    

    2. 条件循环

     语法:'
     WHILE  <条件>.
         <循环语句块>
     ENDWHILE
    

    求1000以内的水仙花数例子

     *水仙花数:是一个三位数其各位数字的立方和等于该数本身。例如:3^3 + 7^3+ 0^3 = 370
     *1000以内的水仙花数
    
    DATA: num type i value 100,
          g_num type i,
          s_num type i,
          b_num type i.
    
    WHILE num < 1000 and num >= 100.
      b_num = num div 100.
      s_num = num mod 100 div 10.
      g_num = num mod 100 mod 10.
    
      IF num = b_num ** 3 + s_num ** 3 + g_num ** 3.
      WRITE:/ num.
      ENDIF.
      num = num + 1.
    ENDWHILE.
    

    3. 内表循环

    语法:
    LOOP AT <iTab> [ASSIGNING <fs>|INTO <wa>] [WHERE <条件>].
        <循环语句块>
    ENDLOOP.
    用于内表数据条目的循环,详细内容在内表一节叙述
    

    4. 循环控制语句

    1. CONTINUE: 跳至循环的下一次

     Example:
    DO  3  TIMES.
       IF  SY-INDEX = 2.
         CONTINUE.
       ENDIF.
       WRITE: / SY-INDEX. 
    ENDDO.
    
    执行结果:
                 1
                 3
    

    2. CHECK <条件>
    CHECK 之后条件成立才继续往下执行循环

    Example:
    DO  5  TIMES.
      CHECK  SY-INDEX  BETWEEN  2  AND  4.
      WRITE  /  SY-INDEX.
    ENDDO.
    执行结果:2
             3
             4
    

    3. EXIT:跳离循环语句

     Example:
    DO  10  TIMES.
        IF  SY-INDEX = 4.
           EXIT.
        ENDIF
        WRITE / SY-INDEX.
    ENDDO.
    执行结果:1
             2
             3
    
    

    5. 无穷循环

     语法:  
    DO .
      <语句块>
    ENDDO.
    
    无穷循环必须配合 EXIT语句来执行
    
    

    相关文章

      网友评论

        本文标题:流控制

        本文链接:https://www.haomeiwen.com/subject/qkxfiqtx.html