*&---------------------------------------------------------------------*
*& REPORT ZTESTNO1
*& 851
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT ZTESTNO1.
WRITE 'ZTESTNO1!' .
WRITE: / .
**要计算数字字段之和或要确保内表中没有重复记录出现,请使用collect,它根据标准关键字处理行
**collect用法示例
write:/ 'collect 用法示例'.
data: begin of itab4 occurs 4,
col1(3) type c,
col2(2) type n,
col3 type i,
col4(5) type c,
end of itab4.
itab4-col1 = 'abc'. itab4-col2 = '12'. itab4-col3 = 3. itab4-col4 = 'xyz'.
collect itab4.
write:/ sy-tabix.
itab4-col1 = 'def'. itab4-col2 = '12'. itab4-col3 = 5. itab4-col4 = 'xyz'.
collect itab4.
write:/ sy-tabix.
itab4-col1 = 'abc'. itab4-col2 = '12'. itab4-col3 = 15. itab4-col4 = 'xyz'.
collect itab4.
write:/ sy-tabix.
loop at itab4.
write:/ itab4-col1,itab4-col2,itab4-col3,itab4-col4.
endloop.
message 'this is message test' type 'I'.
message I022.
*输出空白行
skip.
**要在内表现有行之前插入行,请使用insert
**insert 用法示例
write:/ 'insert 用法示例'.
*输出空白行
skip.
data: begin of itab5 occurs 10,
col1 type i,
col2 type i,
end of itab5.
do 3 times.
itab5-col1 = sy-index * 10.
itab5-col2 = sy-index * 20.
append itab5.
enddo.
itab5-col1 = 100. itab5-col2 = 200.
insert itab5 index 2.
*REFRESH <itab>. 清空<itab>中的值.使用在没有 HEADER LINE 的 Internal
*Table中, 清除所有元素
*CLEAR <itab>. 清空<itab>的Header Line.使用在有 HEADER LINE 的 Int
*ernal Table中, 清除所有元素
*FREE <itab>. 释放记忆体空间.释放(Release) Internal Table所占的内存空
*间, 用在 REFRESH和 CLEAR指令之后
*free itab5.
loop at itab5.
write:/ itab5-col1,itab5-col2.
endloop.
skip.
write:/ '指定读取内表行用法示例'.
read table itab5 index 3.
write:/ itab5-col1,itab5-col2.
skip.
exit.
data ie type i.
DATA: XNAME LIKE SY-UNAME.
DATA F_WORD TYPE I VALUE 100.
write:/ f_word.
f_word = 50.
write:/ f_word.
clear f_word.
write:/ '=======',f_word.
DATA STRING(10) TYPE C VALUE 'ABCDEFGHIJ'.
write:/ string.
SHIFT STRING. "得到 BCDEFGHIJ.
write:/ string.
SHIFT STRING BY 2 PLACES RIGHT. "得到 ABCDEFGH
write:/ string.
data: mdata type d.
mdata = sy-datum.
write:/ mdata.
mdata+6(2) ='1'.
write:/ mdata.
mdata = mdata - 1.
write:/ mdata.
data: tdata type t.
tdata = sy-uzeit.
write:/ tdata.
do 10 times.
f_word = sy-index mod 2.
if f_word = 1.
continue.
endif.
write:/ sy-index.
enddo.
do 10 times.
check sy-index between 2 and 4.
write:/ sy-index.
enddo.
types: a type i occurs 10.
data: begin of line,
col1 type i,
col2 type i,
end of line.
data itab1 like line occurs 0.
do 11 times.
line-col1 = sy-index.
line-col2 = sy-index ** 2.
append line to itab1.
enddo.
loop at itab1 into line.
write:/ line-col1,line-col2.
endloop.
data: begin of itab2 occurs 1,
col1 type i,
col2 type i,
end of itab2.
append lines of itab1 from 2 to 6 to itab2.
line-col1 = 3.
modify itab2 from line index 3 transporting col1.
*delete itab2 where col1 = 5.
collect itab2.
sort itab2 descending by col1.
loop at itab2. "where col1 >= 3
write:/ itab2-col1,itab2-col2.
endloop.
data: v_len type i.
describe table itab2 lines v_len.
write:/ v_len.
clear itab2[].
free itab2.
loop at itab2.
write:/ itab2-col1.
endloop.
TableS SPFLI.
DATA ITAB0 LIKE SPFLI OCCURS 10 with header line.
SELECT * FROM SPFLI INTO ITAB0.
write:/ itab0-mandt,itab0-carrid.
endselect.
exit. "dskfk
*sadjfkjasdlkfjksdjfkkljsdfkjlsdfdsfkjld
do 10 times.
write:/'这是第',ie,'次'.
ie = ie + 1.
enddo.
write:'test'.
XNAME = SY-UNAME.
write:XNAME.
write:/ sy-uname.
write:/ sy-dbsys.
write:/ sy-opsys.
write:/ sy-sysid.
write:/ sy-tcode.
write:/ sy-saprl.
write:/ sy-abcde.
write:/ sy-host.
write:/ sy-datlo.
write:/ sy-tfill.
write:/ sy-linno.
write:/ sy-colno.
write:/ sy-datum.
write:/ sy-uzeit.
skip to line 50.
write 'pass1'.
DATA : BEGIN OF wa,
a(4) TYPE c,
b(4) TYPE c,
c TYPE i,
END OF wa.
DATA itab LIKE TABLE OF wa.
wa-a = '001'.
wa-b = '0101'.
wa-c = 100.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '002'.
wa-b = '0201'.
wa-c = 200.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '002'.
wa-b = '0201'.
wa-c = 100.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '003'.
wa-b = '0301'.
wa-c = 400.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '004'.
wa-b = '0401'.
wa-c = 500.
*APPEND wa TO itab.
COLLECT wa INTO itab.
wa-a = '005'.
wa-b = '0501'.
wa-c = 600.
*APPEND wa TO itab.
COLLECT wa INTO itab.
*do 20000 times.
* ie = ie + 1.
* wa-a = ie.
*wa-b = ie.
*wa-c = 600.
**APPEND wa TO itab.
*COLLECT wa INTO itab.
*enddo.
**
*LOOP AT itab INTO wa.
* WRITE : / wa-a,
* wa-b,
* wa-c.
*ENDLOOP.
*
write:/.
skip 5.
INCLUDE <SYMBOL>.
INCLUDE <ICON>.
WRITE: / 'Phone Symbol:', SYM_PHONE AS SYMBOL.
SKIP.
WRITE: / 'Alarm Icon: ', ICON_ALARM AS ICON.
write:/.
DATA: FLAG1 VALUE ' ',
FLAG2 VALUE 'X',
FLAG3(5) VALUE 'Xenon'.
write:/'flag 1',flag1 as checkbox,
/'flag 2',flag2 as checkbox,
/'flag 3',flag3 as checkbox.
uline at /10(10).
write at /5 sy-vline.
DATA col TYPE i VALUE 0.
DO 8 TIMES.
col = sy-index - 1.
FORMAT COLOR = col.
WRITE: / col COLOR OFF,
'INTENSIFIED ON' INTENSIFIED ON,
'INTENSIFIED OFF' INTENSIFIED OFF,
'INVERSE ON' INVERSE ON.
ENDDO.
*CALL FUNCTION 'WS_DOWNLOAD'
*EXPORTING
*codepage = '8400'
*filename = 'C:\test.xls'
*filetype = 'DAT'
*TABLES
*data_tab = ITAB
*EXCEPTIONS
*file_open_error = 1
*file_write_error = 2
*invalid_filesize = 3
*invalid_table_width = 4
*invalid_type = 5.
*********************************************************************
TABLES KNA1.
DATA:BEGIN OF ITAB OCCURS 10,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF ITAB.
SELECT SINGLE KUNNR NAME1 INTO CORRESPONDING FIELDS OF ITAB FROM KNA1 .
APPEND ITAB.
WRITE: / '只显示一记录----ITAB-NAME1=',ITAB-NAME1.
CLEAR ITAB.
WRITE: / .
WRITE: / '将读取的结果放在INTERNAL TABLE ITAB中'.
SELECT KUNNR NAME1 INTO CORRESPONDING FIELDS OF ITAB FROM KNA1 WHERE KUNNR BETWEEN '0000000001' AND '0000000100'.
APPEND ITAB.
WRITE: / '循环显示----ITAB-NAME1=',ITAB-NAME1.
CLEAR ITAB.
ENDSELECT.
WRITE: / .
DATA:V_KUNNR LIKE KNA1-KUNNR,
V_NAME1 LIKE KNA1-NAME1.
WRITE: / '查出结果传给变量'.
SELECT KUNNR NAME1 INTO (V_KUNNR,V_NAME1) FROM KNA1 WHERE KUNNR BETWEEN '0000000001' AND '0000000100' ORDER BY KUNNR DESCENDING.
WRITE: / '循环显示----V_NAME1=',V_NAME1.
ENDSELECT.
WRITE: /.
WRITE: / '游标'.
DATA:V_KNA1 LIKE KNA1,
FLAG TYPE C VALUE 'Y',
C1 TYPE CURSOR .
OPEN CURSOR C1 FOR SELECT * FROM KNA1 WHERE KUNNR BETWEEN '0000000001' AND '0000000100'.
DO.
IF FLAG NE 'X'.
FETCH NEXT CURSOR C1 INTO V_KNA1.
IF SY-SUBRC <> 0 .
CLOSE CURSOR C1.
FLAG = 'X'.
ELSE.
WRITE:/ 'V_KNA1-KUNNR==',V_KNA1-KUNNR,' V_KNA1-NAME1==',V_KNA1-NAME1.
ENDIF.
ENDIF.
IF FLAG = 'X'.
EXIT.
ENDIF.
ENDDO.
***************************************************************************************************************************************
DATA col TYPE i VALUE 0.
DO 8 TIMES.
col = sy-index - 1.
FORMAT COLOR = col.
WRITE: / col COLOR OFF,
'INTENSIFIED ON' INTENSIFIED ON,
'INTENSIFIED OFF' INTENSIFIED OFF,
'INVERSE ON' INVERSE ON.
ENDDO.
DATA: T(10) VALUE 'abcdefghij',
STRING LIKE T,
STR(1) VALUE 'd'.
STRING = T.
WRITE STRING.
SHIFT STRING UP TO STR.
WRITE / STRING.
skip 1.
DATA TIME TYPE T VALUE '172545'.
WRITE TIME.
WRITE / TIME+2(2).
CLEAR TIME+2(4).
WRITE / TIME.
INCLUDE OLE2INCL.
*定义OLE变量
DATA:EXCEL TYPE OLE2_OBJECT,
SHEET TYPE OLE2_OBJECT,
CELL TYPE OLE2_OBJECT,
WORKBOOK TYPE OLE2_OBJECT.
DATA:VAL1(30) TYPE C.
DATA: R1 TYPE I,
R2 TYPE I.
*输入文件名参数
PARAMETERS:FN1 LIKE RLGRAP-FILENAME MEMORY ID M01.
*启动excel
CREATE OBJECT EXCEL 'EXCEL.APPLICATION'.
IF SY-SUBRC NE 0 .
WRITE: / ''.
STOP.
ENDIF.
CALL METHOD OF EXCEL 'WORKBOOKS' = WORKBOOK.
*使excel 可视
SET PROPERTY OF EXCEL 'VISIBLE' = 1.
*建立worksheet
SET PROPERTY OF EXCEL 'SHEETSINNEWWORKBOOK' = 1. "如果是读取excel文件中的内容 则是直接打开工作簿第一页
CALL METHOD OF WORKBOOK 'ADD'. " 例如:CALL METHOD OF EXCEL 'WORKSHEETS' = SHEET EXPORTING #1 = 1.
*写前10行10列
DO 10 TIMES.
R1 = SY-INDEX.
VAL1+1(4) = '行:'.
VAL1+6(4) = R1.
DO 10 TIMES.
R2 = SY-INDEX.
VAL1+15(4) = '列:'.
VAL1+19(4) = R2.
*指定单元格,并写入值
CALL METHOD OF EXCEL 'CELLS' = CELL EXPORTING #1 = R1 #2 = R2.
SET PROPERTY OF CELL 'VALUE' = VAL1.
ENDDO.
ENDDO.
*存入文件
GET PROPERTY OF EXCEL 'ACTIVESHEET' = SHEET. "激活工作簿
GET PROPERTY OF EXCEL 'ACTIVEWORKBOOK' = WORKBOOK. "激活工作区
CALL METHOD OF WORKBOOK 'SAVEAS' EXPORTING #1 = FN1 #2 = 1. "将excel文件保存为 FN1 路径
CALL METHOD OF WORKBOOK 'CLOSE'. "关闭工作区
CALL METHOD OF EXCEL 'QUIT'. " 退出excel
WRITE 'DONE'. "退出成功,输出done
FREE OBJECT SHEET. "释放操作
FREE OBJECT WORKBOOK.
FREE OBJECT EXCEL.
abap 练习
最新推荐文章于 2024-06-28 11:14:16 发布