SAP ABAP 学习总结(12):Database table Select(数据库表查询)

命名规则
命名规则:
*全局变量:gv_demo
*全局结构体:gs_demo
*全局内表:gt_demo
*全局常量:gc_demo

*局部变量:lv_demo
*局部结构体:ls_demo
*局部内表:lt_demo
*局部变量:lc_demo
SELECT
  • 从数据库表中查询数据(单行)
*实例化一个数据库表
DATA:gs_demo TYPE zcurry_table_2.“一般不推荐这么用,最好用到什么字段自己定义类型实例化什么结构体

*查询zcurry_table_2表中的vbeln posnr matnr arktx四个字段到gs_demo中。
*CORRESPONDING FIELDS OF:表示自动匹配要查询的四个字段,如果不加关键字,必须保证要查询的字段和数据库表中的字段顺序、个数一一对应。
*SINGLE:表示查询单条数据
SELECT SINGLE  vbeln posnr matnr arktx FROM zcurry_table_2
  INTO CORRESPONDING FIELDS OF gs_demo
  WHERE vbeln = '0000000001' AND
  posnr = '000010'.
IF sy-subrc = 0.
  WRITE:/ gs_demo-vbeln,/ gs_demo-posnr,/ gs_demo-matnr,/ gs_demo-arktx.
ELSE.

ENDIF.

优化之后的版本:

*从数据库表中只取出需要的四个字段
TYPES:BEGIN OF gy_demo,
  vbeln TYPE zcurry_table_2-vbeln,
  posnr TYPE zcurry_table_2-posnr,
  matnr TYPE zcurry_table_2-matnr,
  arktx TYPE zcurry_table_2-arktx,
  END OF gy_demo.

*实例化一个结构体 
DATA:gs_demo TYPE gy_demo.
SELECT SINGLE vbeln posnr matnr arktx FROM zcurry_table_2
  INTO gs_demo
WHERE vbeln = '0000000001' AND
  posnr = '000010'.
IF sy-subrc = 0.
  WRITE:/ gs_demo-vbeln,/ gs_demo-posnr,/ gs_demo-matnr,/ gs_demo-arktx.
ELSE.
  • 从数据库表中查询数据(多行)
*从数据库表中只取出需要的四个字段
TYPES:BEGIN OF gy_demo,
  vbeln TYPE zcurry_table_2-vbeln,
  posnr TYPE zcurry_table_2-posnr,
  matnr TYPE zcurry_table_2-matnr,
  arktx TYPE zcurry_table_2-arktx,
  END OF gy_demo.
*声明一个内表装载数据库表(type后只能跟类型,like后面可以接结构体.元素等)
DATA:gt_demo TYPE TABLE OF gy_demo.
*声明一个结构体装载遍历的单条数据
DATA:gs_demo TYPE gy_demo.
*从数据库表中取出多行数据,多条数据必须放在内表中
SELECT vbeln posnr matnr arktx FROM zcurry_table_2
  INTO TABLE gt_demo
  WHERE vbeln = '0000000001'.
  IF sy-subrc = 0.
    LOOP AT gt_demo INTO gs_demo.
      WRITE:/ gs_demo-vbeln,/ gs_demo-posnr,/ gs_demo-matnr,/ gs_demo-arktx.
    ENDLOOP.
  ELSE.
  ENDIF.
  • 从数据库表查询所有
*查询所有用 * ,但是不推荐,查询效率低且浪费资源
SELECT SINGLE * FROM zcurry_table_2
  INTO gs_demo
  WHERE vbeln = '0000000001' AND
  posnr = '000010'.
IF sy-subrc = 0.
  WRITE:/ gs_demo-vbeln,/ gs_demo-posnr,/ gs_demo-matnr,/ gs_demo-arktx.
ELSE.
ENDIF.

你可能感兴趣的:(ABAP)