十一、使用 SPLIT 直接拆分到内表:
DATA: BEGIN OF auth_data OCCURS 0,
text(1024),
END OF auth_data.
STR = 'SE39/SE39/SE01/SE10'.
SPLIT STR AT '/' INTO TABLE auth_data.
二十、CONDENSE 的用法:
把工作区的内的所有字段的值 赋给 字符串
DATA: BEGIN OF sentence,
word1 TYPE c LENGTH 30 VALUE 'She',
word2 TYPE c LENGTH 30 VALUE 'feeds',
word3 TYPE c LENGTH 30 VALUE 'you',
word4 TYPE c LENGTH 30 VALUE 'tea',
word5 TYPE c LENGTH 30 VALUE 'and',
word6 TYPE c LENGTH 30 VALUE 'oranges',
END OF sentence,
text TYPE string.
text = sentence.
CONDENSE text.
write text.
运行结果:She feeds you tea and oranges
十三、给输出的内容加上底色。
Format color 1 on .
write: / sy_datum.
Format color 1 off...
color 的说明可以按F1去查询,1表示蓝色
color只能从1到7.
十四、Modify 修改内表总结
*&**修改内表第四条记录的FLAG字段。
itab-flag = 'F'.
modify itab INDEX 4 TRANSPORTING FLAG .
*&**修改内表FLAG字段为空的记录-批量修改
itab-flag = 'X'.
十五、内表方法比较
*&**不推荐
loop at itab.
read table ftab with KEY flag = itab-flag.
endloop.
*&**推荐
FIELD-SYMBOLS LIKE ITAB.
LOOP AT ITAB ASSIGNING .
READ TABLE FTAB WITH KEY FLAG = -FLAG.
ENDLOOP.
十六、内存的存入(EXPORT)与读取(IMPORT)
例一:
REPORT yitab_to_excel.
data: p1(5) VALUE 'text3',
p2(5) VALUE 'text4'.
data: text1(5) VALUE '11111',
text2(5) VALUE '22222'.
*&**把P1的地址指向TEXT1的值,把P2的地址指向TEXT2的值。
export: p1 from TEXT1 to MEMORY id 'id1',
p2 = TEXT2 to MEMORY id 'id2'. "两种写法是一样的,
*&***把P1指向的值给TEXT2,把P2指向的值给TEXT1.
import: p1 = text2 FROM MEMORY id 'id1',
p2 to text1 FROM MEMORY id 'id2'.
write: TEXT1,TEXT2.
例二:
TYPES:
BEGIN OF tab_type,
para TYPE string,
dobj TYPE string,
END OF tab_type.
DATA:
id TYPE c LENGTH 10 VALUE 'TEXTS',
text1 TYPE string VALUE `IKE`,
text2 TYPE string VALUE `TINA`,
line TYPE tab_type,
itab TYPE STANDARD TABLE OF tab_type.
line-para = 'P1'.
line-dobj = 'TEXT1'.
APPEND line TO itab.
line-para = 'P2'.
line-dobj = 'TEXT2'.
APPEND line TO itab.
*&****把内表的地址放入内存,这样内表的两个字段都是地址,这样P1就指向text1,且text1也是一个地址
EXPORT (itab) TO MEMORY ID id.
*&****P1指向text1,在把text1指向的值赋给text2;P2指向text2,在把text2指向的值给text1.
IMPORT p1 = text2
p2 = text1 FROM MEMORY ID id.
write: text1,text2.
十七、权限对象返回码所代表的意思。
· 0: 用户权限检查通过.
· 4: 用户权限不足.
· 8: 参数的数量不正确.
· 12: 权限对象不存在.
十八、调用事务
ALINK_CALL_TRANSACTION
如果一个事务码没有权限的话,可以使用这个函数绕过权限查检,
运行这个函数,输入事务码.
十九、系统实例
在SE38环境下的程序名输入栏输入'DEMO*'后按F4,你可以查到SAP所有的DEMO示例程序,会学到很多ABAP功能的实现方法,输入'BCALV*'后按F4,你可以查到很多ALV示例程序.
输入'SAPMTZ*'后按F4,你可以查到很多事务程序
例:
BCALV_EDIT_01 切换整个网格的准备输入状态
BCALV_EDIT_02 定义单元格级别的准备输入状
BCALV_EDIT_03 校验修改的单元格
BCALV_EDIT_04 删除和追加行
BCALV_EDIT_05 复选框
BCALV_EDIT_06 列级别的下拉列表框
BCALV_EDIT_07 单元级别的下拉列表框
BCALV_EDIT_08 集成不标准 F4 帮助
二十、WRITE ...TO 与 MOVE ...TO的区别
WRITE ... TO 把源的格式、值附到目标。
MOVE ... TO 直接把源的值附到目标。
例:
data: gv_char1( 20) typec,
gv_char2( 20) typec,
dec1( 10) type p decimals2value'22345.89'.
start- of-selection.
* date *
write:/ 'date variable'.
write sy-datum to gv_char1.
write:/ 'write to', gv_char1.
move sy-datum to gv_char2.
write:/ 'move to', gv_char2.
gv_char2 = sy-datum.
write:/ 'gv_char2= ', gv_char2.
skip1.
* decimal *
write:/ 'decimal variable'.
write dec1 to gv_char1.
write:/ 'write to', gv_char1.
move dec1 to gv_char2.
write:/ 'move to', gv_char2.
gv_char2 = dec1.
write:/ 'gv_char2=', gv_char2.
显示的结果是:
测试EXCEL模版导入
date variable
write to 2008-09-30
move to 20080930
gv_char2= 20080930
decimal variable
write to 22,345.89
move to 22345.89
gv_char2= 22345.89