SAP-ABAP:如何写出高质量的ABAP代码?

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、基础规范与常识
    • Type类型
    • Field symbol
  • 二、数据库操作
    • 子查询:
    • CURSOR游标
    • 内联声明
    • 快速显示表内容(最简单的ALV)


前言


提示:以下是本篇文章正文内容,下面案例可供参考

一、基础规范与常识

变量命名规范:
局部变量 ->  lv_xx
全局变量 ->  gv_xx 

Type类型

C:范围 1-65535,用来处理文本,接收字母字符。
N:数字类型的字符串,范围 1-65535,初始值为 0,用于表示识别数字。
D: 8 字符变量,通常用于日期,初始值为 00000000
T: 6 字符变量,通常用于时间,初始值 000000
I: 用于存储数字,初始值为0 范围是 -2^31- 2^31。
F: 浮点类型数字,能够精确到15为小数点, 值的范围是 10^307 to -10^307。
P: 数字被存储在压缩格式,他们最大的是31字节
STRING: 与C类似,没有定义长度。
XSTRING: 与X类型一致。没有定义长度。

C、N、D、I、F变量在程序中可以定义长度。如果没定义则取最小值。

Field symbol

指针
 TYPES: BEGIN OF ts_type,
          first_data  TYPE string,
          second_data TYPE i,
          third_data  TYPE c,
        END OF tt_type.
 
 DATA : ls_type TYPE tt_type,
        lt_type TYPE STANDARD TABLE OF  tt_type.
 
 FIELD-SYMBOLS: <fs_type1> TYPE c,
                <fs_type2> TYPE tt_type,
                <fs_type4> TYPE data,
                <fs_type5> TYPE any,
                <fs_type6> TYPE ANY TABLE,
                <fs_type7> LIKE ls_type,
                <fs_type8> LIKE LINE OF lt_type.

二、数据库操作

SELECT * FROM sflight INTO TABLE gt_sflight.
为了提高性能,最好不要使用 *
注意:
1.select single 不能与  order by appending一起用
2.模糊匹配: like ‘XXX_’
3.select for update 是为了在查询时,避免其他用户以该表进行插入,修改或删除等操作,造成表的
不一致性。
4.PACKAGE SIZ 直接发送到添加了 PACKAGE SIZE 的表中。PACKAGE SIZE 负责确定在循环的一次执行中需要选择多少条目。SELECT ENDSELECT
SELECT carrid connid planetype PACKAGE SIZE 100
   FROM sflight
   INTO CORRESPONDING FIELDS OF gt_sflight.
ENDSELECT

子查询:

预定一个价格最高的飞机航班

SELECT *
   FROM sflight
   INTO CORRESPONDING FIELDS OF gt_sflight
   WHERE price = ( SELECT MAX( price )
                          FROM sflight ).

CURSOR游标

DATA: c_cursor TYPE cursor,
       gt_cursor TYPE TABLE OF sflight.
 
 OPEN CURSOR c_cursor FOR
 SELECT carrid connid
   FROM sflight.
 
 DO.
   FETCH NEXT CURSOR c_cursor APPENDING TABLE gt_cursor PACKAGE SIZE 100.
   IF sy-subrc <> 0.
     EXIT.
   ENDIF.
 ENDDO.
 
 CLOSE CURSOR c_cursor.
In this example, we get data 

内联声明

SELECT mandt, carrid, connid, countryfr, countryto
  FROM spfli
  INTO TABLE @data(lt_spfli).

快速显示表内容(最简单的ALV)

DATA: gr_alv     TYPE REF TO cl_salv_table,
      gr_columns TYPE REF TO cl_salv_columns_table.
 
 CALL METHOD cl_salv_table=>factory
   IMPORTING
     r_salv_table = gr_alv
   CHANGING
     t_table      = YOUR TABLE.
 
 gr_columns = gr_alv->get_columns( ).
 gr_columns->set_optimize( value = 'X' ).
 gr_alv->display( ).

你可能感兴趣的:(ABAP,笔记)