十一、使用 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 <FS> LIKE ITAB.
LOOP AT ITAB ASSIGNING <FS>.READ TABLE FTAB WITH KEY FLAG = <FS>-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 = text2p2 = 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= 20080930decimal variable
write to 22,345.89
move to 22345.89
gv_char2= 22345.89