ABAP学习-代码笔记01(NEW)

*&---------------------------------------------------------------------*
*& Report ZMMD0001_TEST_DL
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT zmmd0001_test_dl.
**定义一个参数框input,默认值是ABC
PARAMETERS input(12) type c DEFAULT ''.
PARAMETERS input1(50) type c DEFAULT ''.
*---定义变量---*
DATA: zchar1(20) TYPE c,zchar2(20) TYPE c,zchar3(20) TYPE c,zchar4(20) TYPE c,
zdec1(10)  TYPE p DECIMALS 2 VALUE '22345.89'.
*---数据偏移赋值---*
zchar1 = input+0(1)."从第一位字符开始取值第一位字符+01*---日期和时间的偏转赋值---*
IF input1 = '日期'.
  DATA:lv_date1 LIKE SY-DATUM,lv_date2 LIKE SY-DATUM,lv_date3 LIKE SY-DATUM.
  lv_date1 = SY-DATUM.
  lv_date2 = lv_date1.
  lv_date2+6(2) = '30'.
  WRITE: lv_date1,/ lv_date2.
  ULINE.
ENDIF.

IF input = '日期变量'.
*---日期量变---*
WRITE:/'日期变量'.
SKIP 1.
WRITE SY-DATUM TO zchar1."带有日期格式
WRITE:/'wrie赋值:',zchar1.
MOVE SY-DATUM TO zchar2. "不带日期格式
WRITE:/'move赋值:',zchar2.
ELSEIF input = '小数变量'.
*---小数变量---*
WRITE:/'小数变量'.
SKIP 1.
WRITE zdec1 TO zchar3."带有数字格式
WRITE:/'wrie赋值:',zchar3.
MOVE zdec1 TO zchar4. "不带数字格式
WRITE:/'move赋值:',zchar4.
ELSEIF zchar1 = 'C'.
*----输出------*
input = input+1(*)."
WRITE: / '第二次练习:',input.
ELSEIF input = '复制'.
  DATA: BEGIN OF address,
    name(10) VALUE'查理韦德',
    zhiwu(10) VALUE'工程师',
    tel(12) VALUE'123456789123',
  END OF address.
  DATA: BEGIN OF name,
    name(10),
    zhiwu(10),
    tel(12),
  END OF name.
  MOVE-CORRESPONDING address TO name.
  WRITE:/ name,/ address-tel,/ name-tel.
ELSEIF input = '计算'.
  DATA: lv_num1 TYPE i VALUE 7,
        lv_num2 TYPE i VALUE 3,
        lv_num3 TYPE i .
  lv_num3 = lv_num1 / lv_num2."整除
  WRITE:/'7/3=',lv_num3.
  lv_num2 = lv_num1 DIV lv_num3."整除
  WRITE:/'7DIV3=',lv_num2.
   lv_num3 = lv_num1 MOD lv_num2."余除
  WRITE:/'7MOD3=',lv_num3.
ELSEIF input = '长度'and input1 IS NOT INITIAL."非空
  DATA: lv_numer_n(20) TYPE n VALUE '12345',"N类型定义位数,按照位数计算。
        lv_numer_i TYPE i.
  lv_numer_i = strlen( lv_numer_n )."只能获取C,N,D,T,STRING的长度
  WRITE:/'lv_numer字符长度为:',lv_numer_i.
  lv_numer_i = strlen( input1 )."获取input1字符长度。
  WRITE:/'input1字符为:',input1.
  WRITE:/'input1字符长度为:',lv_numer_i.
*---运算函数练习---*
ELSEIF input = '函数'.
  WRITE: '算术运算函数',/ ,/ ' ', SY-ULINE .
  DATA: n TYPE p DECIMALS 2,m TYPE p DECIMALS 2 VALUE '-5.55'.
  WRITE:'原值:', m .
  n = abs( m ). WRITE:/ 'ABS:' ,n."返回输入参数的绝对值
  n = sign( m ). WRITE:/ 'SIGN:' ,n."返回输入参数的符号
  n = ceil( m ). WRITE:/ 'CEIL:' ,n."返回输入参数的进位取整
  n = floor( m ). WRITE:/ 'FLOOR:' ,n."返回输入参数的退位取整
  n = trunc( m ). WRITE:/ 'TRUNC:' ,n."返回输入参数的整数部分
  n = frac( m ). WRITE:/ 'FRAC:' ,n."返回输入参数的小数部分
ULINE.
ELSE.
*---指针赋值---*
DATA:lv_name1 TYPE char10 VALUE 'duanyuechao',
     lv_name2 TYPE int2 VALUE 99.
FIELD-SYMBOLS <fs1>.
ASSIGN lv_name1 TO <fs1>.
WRITE:/ 'FS:',<fs1>,/ '名字:',lv_name1.
IF <fs1> is ASSIGNED.
   <fs1> = lv_name2.
ENDIF.
WRITE:/ 'FS:',<fs1>,/ '名字:',lv_name1,/ 'AGE:',lv_name2.
WRITE SY-ULINE.
DATA lv_name3(6) TYPE n."C->N->I,类型转换。
lv_name3 = lv_name1.
lv_name2 = lv_name3.
WRITE: lv_name1,/ lv_name2,/ lv_name3.
WRITE SY-ULINE.
WRITE: / '计算数值 :',lv_name2.
COMPUTE lv_name2 = lv_name2 + 10."计算函数,变量+10赋值给变量
WRITE: / '计算结果1:', lv_name2.
lv_name2 = lv_name2 + 10."直接计算
WRITE: / '计算结果2:', lv_name2.
ADD 10 TO lv_name2."ADD加法函数
WRITE: / '计算结果3:', lv_name2.
ULINE.
DATA: d TYPE i,s TYPE i,h TYPE i,t1 TYPE t VALUE '200000',t2 TYPE t VALUE '020000'.
d = t2 - t1.
s = d mod 86400.
h = s / 3600.
WRITE: '开始时间:',t1,'结束时间',t2,/ '差异:',d,'秒:',s,'时:',h.
*lv_name2 = '10'.
ENDIF.

**调用100的屏幕
"CALL SCREEN 100.
"SKIP TO LINE 10.
"POSITION 40.
**调用结束
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值