SAP ABAP基础语法-内表篇(二)

十一、使用 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

你可能感兴趣的:(开发语言,SAP,ABAP,数据库,sql)