*&---------------------------------------------------------------------*
*& 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)."从第一位字符开始取值第一位字符+0(1)
*---日期和时间的偏转赋值---*
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.
**调用结束
ABAP学习-代码笔记01(NEW)
于 2024-03-14 16:33:10 首次发布