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

一、字符偏移量的写法:

AA = '1234567890'.
BB = AA+5(*).     "结果:67890 
ee = aa+5.        "结果:67890
cc = aa(5).       "结果:12345
dd = aa+0(5).     "结果:12345
ff = aa+5(2).     "结果:67

二、调用其它程序的FORM.

PERFORM form1 IN PROGRAM demo_form1.

三、如何导出SAP的数据表字段 (导出数据库表的全部字段,表结构导出)

1.执行T-CODE:SE15
2.进入菜单ABAP Dictionary => Fields => Table Fields.
3.输入table name, 例如: KNA1 (顾客主数据),然后点击运行
4.此时只能看到几列数据,点击工具栏上倒数第二个按钮“Complete List”,就可以看到全部列的技术信息了
5.全选字段,然后利用系统菜单导出excel(edit=>List => export => Local files )

四、Binary search的用法

使用binary search之前,需要sort,并且sort by ascending(系统默认的顺序也是ascending)。
而且read table with key的顺序同sort的顺序相同,否则出错,常会找不到纪录。
Delete adjacent duplicates之前一定要sort。

五、AT NEW,AT FIRST等的用法

使用at new, at first, at last, at end of的时候要注意:loop的时候不能加条件;
at和endat之间不能使用loop into的working area。手动实现at new, at end of的时候,
需要注意,容易出错,尤其是在at end of的时候。

六、内表行数统计方法

以下是统计内表行数常用的三种方法,如下:
1.LOOP AT it_itab.
g_lines2 = g_lines2 + 1.
ENDLOOP.
该方法是通过循环内部表自己累加行数。
2.DESCRIBE TABLE it_itabLINES g_lines1 .
该语句通过获得内部表的属性,将内部表行数赋值给 g_lines1 , g_lines1 为I型变量。
3. g_lines3 = lines( it_itab ). 使用函数来计算内部表行数。
以上三种方法中,第一种方法不推荐使用,推荐使用后两种方法。
4、字段长度(字符长度、字符串长度)

    l_len = strlen( l_text ) .

七、在SAP中用CALL METHOD求本地IP的方法

DATA g_local_ip(20) TYPE c.
CALL METHOD cl_gui_frontend_services=>get_ip_address
RECEIVING
ip_address = g_local_ip.
WRITE g_local_ip.
g_local_ip就是你本机的IP地址.

八、SORTED TABLE的用法

使用INSERT  INTO TABLE 
  例:
  REPORT  ZZ_244_TEST_18.
  TYPES: BEGIN OF GT_ITAB ,
         L_A(2),
         L_B(2),
       END OF GT_ITAB.
DATA: ITAB TYPE SORTED TABLE OF GT_ITAB WITH UNIQUE KEY L_A,
      LW_ITAB TYPE GT_ITAB.
LW_ITAB-L_A = 'AA'.
LW_ITAB-L_B = 'BB'.
INSERT LW_ITAB INTO TABLE  ITAB.
LW_ITAB-L_A = 'A1'.
LW_ITAB-L_B = 'BB'.
INSERT LW_ITAB INTO TABLE  ITAB.
IF SY-SUBRC EQ 0.
ENDIF.

九、READ TABLE用法小解:

  DATA: ITAB LIKE SORTED TABLE OF SPFLI
           WITH UNIQUE KEY CARRID CONNID,  "定义一个排序表,有两列关键字
              LINE LIKE LINE OF ITAB.
 
*FIELD-SYMBOLS  LIKE LINE OF ITAB.
FIELD-SYMBOLS  TYPE SPFLI. 用
SELECT * INTO TABLE ITAB FROM SPFLI WHERE CARRID = 'LH'.

*&**WITH TABLE KEY 后必须把表的所有关键字都加上,
READ TABLE ITAB INTO LINE WITH TABLE KEY CARRID = 'LH' CONNID = '2042'.

*&***WITH KEY 就比较自由,
READ TABLE ITAB  WITH KEY CARRID = 'LH' ASSIGNING .

*&**把ITAB内第4条的值跟LINE内的值时行比较,比较完后只把CARRID CONNID 的值写入LINE
READ TABLE ITAB INTO LINE INDEX 4
                COMPARING CARRID CONNID TRANSPORTING CARRID CONNID.

*&**使用TRANSPORTING NO FIELDS 关键字就不用把结果写到别一个地方
READ TABLE ITAB WITH KEY CARRID = 'LH' TRANSPORTING NO FIELDS.

十、使用ALV把数据输出到屏幕后,如何把修改的值传回内表?

FM:GET_GLOBALS_FROM_SLVC_FULLSCR 
  alv grid输出数据后,把屏幕上修改的值传到内表,还要设置下面的语句哟:
   GT_LAYOUT-BOX_FIELDNAME     = 'FLAG'.
  实例:技术程序->GET_GLOBALS_FROM_SLVC_FULISCR

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