zoukankan      html  css  js  c++  java
  • 数据的输出与数值传递

    1.数据的基本输出

          通过关键字"WRITE"的声明,能够实现数据对象的输出,并能够实现输出对象的长度、输出位置及格式等属性的控制。与变量定义一样,WRITE可以同时输出多个数据对象,对于不同的对象可以通过反斜杠”/”换行输出。

    例如:

    DATAWORD(16VALUE '0123456789ABCDEF'.
    DATATYPE VALUE 123.
    WRITE WORD.           "单独输出一个变量
    WRITE:/ WORD,
          / N.            "换行输出两个变量
    WRITE AT (10WORD.   "输出变量的前10位‘0123456789’
    WRITE AT /5(10WORD"从第5格开始输出变量的前10位‘56789ABCDE’

    2.数据的格式化输出

    2.1 NO-ZERO : 若输出对象为N或C类型,将前面的0取代为空格

    DATA STR(10TYPE C.
    STR '000123456'.
    WRITE STR.            "输出:000123456
    WRITE / STR NO-ZERO.  "输出:   123456

    2.2 NO-SIGN:对于I、P或F类型,前面都会有一个标识符号,在实际输出中占用一位但不显示,使用该语法其前面的符号不会输出

    DATA STR(10TYPE P.
    STR '123456789'.
    WRITE STR.           "输出:123,456,789
    WRITE / STR NO-SIGN"输出:123,456,789

    2.3 NO-GROUPING:对于I或P类型,省略千分号符号。

    DATA NOWDATE TYPE P.
    NOWDATE '20130730'.
    WRITE NOWDATE.                 "输出:20,130,730
    WRITE / NOWDATE NO-SIGN.       "输出:20,130,730
    WRITE / NOWDATE NO-GROUPING.   "输出:20130730

    2.4 DD/MM/YY、MM/DD/YY、DD/MM/YYYY、MM/DD/YYYY、DDMMYY、MMDDYY、YYMMDD :定义日期输出格式。

    DATA:NOWDATE TYPE D.
    NOWDATE '20130730'.
    WRITE / NOWDATE.            "输出:20130730
    WRITE / NOWDATE DD/MM/YY.   "输出:13/07/30
    WRITE / NOWDATE MM/DD/YY.   "输出:13/07/30
    WRITE / NOWDATE DD/MM/YYYY"输出:2013/07/30
    WRITE / NOWDATE MM/DD/YYYY"输出:2013/07/30
    WRITE / NOWDATE DDMMYY.     "输出:130730
    WRITE / NOWDATE MMDDYY.     "输出:130730
    WRITE / NOWDATE YYMMDD.     "输出:130730

    2.5 CURRENCY w:使货币字段按格式输出,w代表货币单位。维护表TCURX中货币类型时有效。

    DATA SALES TYPE P.
    SALES 93860.
    WRITE / SALES CURRENCY 'DEM' ROUND DECIMALS 2."输出:9.39 (四舍五入)WRITE / SALES CURRENCY 'ITL' ROUND DECIMALS 2."输出:938.60

     2.6 DECIMALS d:控制输出数值小数位.

    DATA:TYPE DECIMALS VALUE '1.267',
         Y TYPE VALUE '125.456E2'.

    WRITE:DECIMALS 0"输出结果:1
          / DECIMALS 2"输出结果:1.27
          / DECIMALS 5"输出结果:1.26700
          / Y DECIMALS 0"输出结果:1E+04
          / Y DECIMALS 1"输出结果:1.3E+04
          / Y DECIMALS 5"输出结果:1.25456E+04
          / Y DECIMALS 20."输出结果:1.2545600000000000E+04

    2.7 +<offset>(<length>):字符串按某一偏移量进行输出,即可以截取字符串中的一段。

    DATA:X(10TYPE VALUE 'ABCDEFGHIJ'.
    WRITE:/ X+0(10),"輸出:ABCDEFGHIJ
          / X+0(5)"輸出:ABCDE
          / X+1(9)"輸出:BCDEFGHIJ
          / X+5(3)"輸出:FGH

    2.8 EXPONENT <n1> DECIMALS <n2> :对于浮点型数值,输出采用科学记数法。

    DATATYPE VALUE '1023456987886'.
    WRITEEXPONENT 0"输出:1023456,987,886
           / EXPONENT 3, "输出:1023456,987,886
           / EXPONENT 9, "输出:1023456,987,886
           / DECIMALS 4. "输出:*3456987886.0000

    2.9  ROUND r: 移除数值左边或右边的r位数据.

    DATA:TYPE DECIMALS VALUE '12493.97'.
    WRITE:ROUND -2,"輸出:1,249,397.00
          / ROUND 0"輸出:12,493.97
          / ROUND 2"輸出:124.94
          / ROUND 5"輸出:0.12

    2.10  TIME ZONE tz:实现不同时区的时间转换.

    DATA:S_TST TYPE TIMESTAMP.
    S_TST 20130731063015.

    WRITE:S_TST TIME ZONE 'UTC+12',        "輸出:2013/07/31 18:30:15
        /S_TST TIME ZONE 'UTC+12'DD/MM/YY."輸出:13/07/31 18:30:15

    2.11 USING EDIT MASK mask:输出数据自定义格式。

    DATA TIME TYPE VALUE '143020'.
    WRITE /(8TIME USING EDIT MASK  '__:__:__'.  "输出:14:30:20
    WRITE /(5TIME USING EDIT MASK  '_:_:_'.     "输出:1:4:3

    2.12  UNDER g:参照上一行输出位置并列输出,只对WRITE 语法有效。

    WRITE:/10 'NAME'(001)15'RoomNo'62'Age'(002).
    WRITE:'SANLLY' UNDER 'NAME'(001),
            '4.2'    UNDER 'RoomNO',
            '20'     UNDER 'Age'(002).

    输出结果: Name               RoomNo             Age

                   SANLLY              4.2                  20

    2.13  NO-GAP :去除输出值间的空格,该语法只对WRITE语句有效。

    WRITE:'A'NO-GAP,'B'NO-GAP,'C'."输出:ABC
    WRITE:/'A','B','C'.             "输出:A B C

    2.14 输出数据对齐方式的设置:

    LEFT-JUSTIFIED(向左对齐)、

    RIGHT-JUSTIFIED(向右对齐)、

    CENTERED(居中对齐)


    DATACOUNT TYPE VALUE 100.
    WRITE/5 'The total count is',COUNT LEFT-JUSTIFIED.
    WRITE/5 'The total count is',COUNT RIGHT-JUSTIFIED.
    WRITE/5 'The total count is',COUNT CENTERED.

    不同的数据类型都会有各自默认的对齐方式。各基本数据默认输出对齐方式如下表所示:

     C=LEFT-JUSTIFIED  I=RIGHT-JUSTIFIED  P=RIGHT-JUSTIFIED  F=RIGHT-JUSTIFIED
     N=LEFT-JUSTIFIED  D=LEFT-JUSTITIED  T=LEFT-JUSTIFIED  X=LEFT-JUSTIFIED

    3.數据的赋值

        对变量的赋值是程序的常用操作之一,ABAP通常的赋值语句是MOVE或赋值运算符”=“,还可以通过WRITE语句实现将源字段的值赋值给目标变量,源字段可为常量或变量等数据对象。语法定义如下:

        MOVE <value> TO <field>.

        <field> = <value or expression>.

        这两种方式是完全等价的,另外,通过WRITE语名可以实现字符类型数值传递而不会输出该值。

        WRITE  <vaule> TO  <field>.

         WRITE赋值只可以在字符类型对象中赋值,否则系统会出错。      

         数据赋值还可以使用源字段的偏移量。下例实现在源字段中取偏移量赋值给目标变量,其语法定义及实例如下:

          <field>+<offset>(<length>) = <value>.

    例如:

    DATA TYPE VALUE 186.
    DATATYPE I.
    MOVE TO B.
    WRITE/ A,"输出:186
           / B."输出:186

    再如:

    DATAWORD1(18TYPE VALUE '0123456789ABCDEFGH',
          WORD2 LIKE WORD1.

    MOVE WORD1+10(5TO WORD2.
    WRITE/ WORD1,"輸出:0123456789ABCDEFGH
           / WORD2."輸出:ABCDE

    4.通过指针实现数据的赋值.

      与上面赋值方式不同,字段符号(FIELD SYMBOLS)不是直接对变量赋值,而是通过指针给变量分配源字段的内存地址。指针对象通过语名FIELD-SYMBOLS加上尖括号“<>”来定义,用语句ASSIGN来分配数值。

    DATA:NUMBER TYPE VALUE 12.
    FIELD-SYMBOLS:<F1>,
               <F2> TYPE I,
               <F3> LIKE NUMBER.

    ASSIGN:NUMBER TO <F1>,
           NUMBER TO <F2>,
           NUMBER TO <F3>.

    5.数据类型的转换

       在不同的数据对象之间赋值时,系统会自动进行类型转换,转换过程遵照固定规则进行,

    例如将一个C类型数据赋值给N类型的对象,只有数字字符被传递,其他字符则被忽略。

    DATA:TEXT(10TYPE VALUE 'ABC1234567',
         NUM(10TYPE N,
         INT TYPE I.

    NUM TEXT.
    INT NUM.

    WRITE:NUM,"0001234567
        / INT."1,234,567

       变量ttext赋值给tnum时,ABC被转换为000,当tnum赋值给tint时,默认取其整数部分。需要注意的是,C类型不能直接赋值给I,如果上例语句中写与tint=ttext,系统将报错提示数据类型转换错误。

          ABAP中还可以使用以下语法实现数据间赋值:

          MOVE A TO B.      

          WRITE A TO B.

         不同进制之间的转换可以参考如下方法:

    DATA:CHR TYPE C.

     FIELD-SYMBOLS:<FS> TYPE X"定义一个十六进制的指针类型
                  <FC> TYPE C.
    CHR 'A'.
    ASSIGN CHR TO <FS> CASTING.  "将字符转换为十六进制
    <FS> <FS> + 1.
    ASSIGN <FS> TO <FC> CASTING"将十六进制的指针对象转换为字符指针对象
    MOVE <FC> TO CHR.            "将指针变量赋值到字符变量

  • 相关阅读:
    网络规划和布线
    网络编程
    NoSQL 非关系数据库
    OpenCV
    首页
    C++关键字
    TCP/IP 详解7 Ping指令
    TCP详解 (1)
    GRE封装解封装过程
    GRE tunnel
  • 原文地址:https://www.cnblogs.com/sanlly/p/3227948.html
Copyright © 2011-2022 走看看