ABAP学习笔记

Posted on 2008-01-16 14:41  东倒西歪  阅读(560)  评论(0)    收藏  举报

*&---------------------------------------------------------------------*
*& Report  ZSTUDY
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZSTUDY.

 

*data type
*Type    Length   Range       Initial Value  Description
*C        1     1-65535Byte    Space
*D        8       8Byte       ‘00000000’
*F        8       8Byte          0
*I         4     between -2^31 and 2^31-1   0
*N        1     1-65535Byte   ‘00…0’
*P        8      1-16Byte        0        Packed
*T        6       6Byte       ‘000000’
*X        1     1-65535Byte    X’00’


*define variable
*name type length structure
data: count type i.
data: string(10) type c.

*define constant
constants PI type p decimals 5 value '3.14159'.
write PI."value is '3.14159'
*constants PIT type p decimals 5 value '3.141594'.
*write PIT."value is '3.14159'
*constants PI type p decimals 5 value '3.141596'.
*write PI."value is '3.14160'

*system data
*space
skip 1.
write '--space :'.
write SPACE.
write '---'.
skip.
*SY-SUBRC
write 'the value of the system return is:'.
write SY-SUBRC."if program run wine ,return 0
skip.
*SY-UNAME
write 'the logon id is:'.
write SY-UNAME.
skip.
*SY-DATUM ststem datetime
write 'the system date is :'.
write SY-DATUM.
skip.
*SY-UZEIT
write 'the system time is :'.
write SY-UZEIT.
skip.
*SY-TCODE
write 'the key name is:'.
write SY-TCODE.
skip.
*type
types: begin of product,
                pid type i,
                pname(100) type c,
       end of product.
data : prodcuttest type product.
data :userid type product-pid.
data :username like sy-uname.
*like
data :uname like sy-uname.
data :utime like sy-datum.

*data
data : begin of producttype,
                ptid type i,
                ptname(100) type c,
       end of producttype.
*constants
constants: cname(10) type c value 'constants'.
write cname.
skip.
*statics
*the "statics" statement can only be used in forms,functions,and class-moethods.
*statics sname type i.
*i=10.
*write i.
*tables
  "define tables that be used.
*tables mara.
*select * from mara.
*write: /'the select value'.
*write:/4 mara-MANDT,mara-MATNR.
*endselect.
skip.
data:number type i value '12345678',
str(50) type c value 'abcdefghijklmnopqrst'.
write:(5) number ,/(6) str.

*skip
skip.
skip 10.
*skip to line 5.
*include
INCLUDE  <SYMBOL>.
INCLUDE  <ICON>.

WRITE: / 'Phone Symbol:' ,SYM_PHONE  AS  SYMBOL.
WRITE: / 'Alarm Icon:' ,  ICON_ALARM  AS  ICON.

*dd/mm/yyyy
skip.
data:dtime type i value '112030'.

write dtime USING  EDIT  MASK '__:__:__'.
skip.
write dtime using edit mask '$___:___'.


*check box
data : flag1 type c value 'a',
       flag2 type c value 'b'.
       write:/'check flag1:', flag1 as icon.
       write:/'check flag2:', flag2 as icon.
       write:/'check flag1:', flag1 as line.
       write:/'check flag2:', flag2 as line.
       write:/'check flag1:', flag1 as symbol.
       write:/'check flag2:', flag2 as symbol.
       write:/'check flag1:', flag1 as checkbox.
       write:/'check flag2:', flag2 as checkbox.
*icon line symbol checkbox
skip.
*Processing Data
*Assign Value MOVE  <F1>  TO  <F2>
data:dstr(20) type c value 'abcdefghijklmn',
dstr2(20) type c.
move dstr to dstr2.
write: dstr2.

skip.
*Offset
dstr2 = dstr+3(10).
write:dstr2."value is 'defghijklm'

skip.
*Field String MOVE –CORRESPONDING  <Strings1>  TO  <String2>.

DATA: BEGIN  OF  ADDRESS,
        FIRSTNAME(10)  VALUE  'LULU',
        LASTNAME(10)  VALUE 'CHOU',
        TEL(12)  VALUE  '4660570',
        END  OF  ADDRESS.
DATA:BEGIN  OF  NAME,
       FIRSTNAME(10),
       LASTNAME(10),
       E_MAIL(30),
       END  OF  NAME.
MOVE-CORRESPONDING  ADDRESS  TO  NAME.

skip.
*variable CALL BY VALUE :WRITE  (<f>)  TO  <g>
DATA: dNAME(20)  VALUE  'SOURCE',
     SOURCE(10)  VALUE  'LILY',
     TARGET(10).

WRITE  (dNAME)  TO  TARGET.
WRITE  /  TARGET.

skip.
*clear CLEAR  <f>


*if...elseif...else endif

*constants:inumber type i value 1.
data : inumber type i value 1.
write inumber.
if inumber = 0.
write:'the value is ',inumber.
elseif inumber = 1.
write:'i am crazy'.
elseif inumber = 2.
write:'i am tom'.
else.
write:'i am wangyoubo'.
endif.

skip.
*case<f> .when<v1>.Statement1.when<v2>.Statement2.....when<vn>.Statementn.when others.Statement. endcase.
case inumber.
when 0.
write:'i am 0'.
when 1.
write:'i am 1'.
when 2.
write:'i am 2'.
when others.
write:'i am other number'.
endcase.


*do
*DO  [n TIMES]  [VARYING  <f>  FROM  <start>  TO  <end>.
*          <loop block>
*       ENDDO.
SKIP.
DO 3 TIMES .
WRITE : 'HELLO WORLD !'.
ENDDO .
*data : s type i.
*DATA : I TYPE I.
*DO  VARYING  inumber  FROM 0 TO 10.
*                   s = s + I.
*ENDDO.
*                WRITE: / ,'1+2+3+…+10=',S

*WHILE  <Condition>.<Statement Block> ENDWHILE
SKIP.
DATA : WC TYPE I  VALUE 0.
DATA : SUM TYPE I VALUE 0.
WHILE WC <= 100.
SUM = SUM + WC .
WC = WC + 1.
ENDWHILE.
WRITE:'0+1+2+3+......+100=',SUM.
WRITE SY-SUBRC.
SKIP.
*CONTINUE
DO 3 TIMES .
IF SY-INDEX = 2 .
WRITE : 'I AM TOO TWO !'.
CONTINUE.
ENDIF.
WRITE : SY-INDEX.
ENDDO.

SKIP.
*CHECK
DATA : DINT TYPE I VALUE 0 .
DO 5 TIMES .
     DINT = DINT + 1.
     CHECK DINT = 4 .
     WRITE : 'I AM VERY GOOD ! THANK YOU !'.
 ENDDO.
 SKIP.

*EXIT
DO 10 TIMES .
IF SY-INDEX = 4 .
WRITE 'I AM 4 ,PLEASE STOP !'.
EXIT.
ENDIF .
WRITE : SY-INDEX.
ENDDO.
SKIP.


**R/3对于存放在Relation Database 的数据可使用 SQL 指令读取或处理, 指令种类
**     可分成DDL(Data Definition Language)指令, 如CREATE, 及DML(Data Manipulation Language)
**     , 如 SELECT及INSERT等,  处理方式分成 OPEN SQL 及 NATIVE SQL, 前者在处理时,
**     Database 与Command Interpreter 间有一Buffer区, 如SELECT * FROM…, 后者则直接处理
** 数据库, 如 EXCE SQL SELECT…等, 有两个重要的系统变量:
** SY-SUBRC: 传回 0 表成功执行指令,  4 表未找到符合条件数据
** SY-DBCNT: 正处理的数据笔数
*tables :ZWYB_PRODUCT .
*
**select * from ZWYB_PRODUCT where pid = 10.
**write : ZWYB_PRODUCT-pid.
**endselect.
*
*
*data : wa type ZWYB_PRODUCT.
*select * from ZWYB_PRODUCT into wa .
*write wa-pid.
*endselect.