Chinaunix首页 | 论坛 | 博客
  • 博客访问: 706787
  • 博文数量: 145
  • 博客积分: 3446
  • 博客等级: 中校
  • 技术积分: 1567
  • 用 户 组: 普通用户
  • 注册时间: 2006-08-30 13:58
文章分类

全部博文(145)

文章存档

2021年(1)

2020年(1)

2019年(1)

2018年(6)

2017年(1)

2016年(10)

2015年(12)

2014年(10)

2013年(15)

2012年(33)

2011年(21)

2010年(9)

2009年(18)

2008年(2)

2006年(5)

我的朋友

分类: Web开发

2020-05-06 08:29:50

https://www.cnblogs.com/mingdashu/p/6744637.html

  1.内嵌声明

    2.内表操作

    3.opensql

*&---------------------------------------------------------------------*

1. 内嵌声明

  1)声明符号: DATA(...)

           再也不需要建立一堆的临时变量了

  2)指针声明符:FILED-SYMBOL(…)

*&---------------------------------------------------------------------*

7.40之前-变量

DATA text TYPE string.
text = `...`.

7.40之后-变量

DATA(text) = `...`.

*&---------------------------------------------------------------------*

7.40之前-工作区

DATA wa like LINE OF itab. LOOP AT itab INTO wa.  
   ... ENDLOOP.

7.40之后-工作区

LOOP AT itab INTO DATA(wa).   
  ... ENDLOOP.

*&---------------------------------------------------------------------*

7.40之前-返回参数

DATA xml TYPE xstring. CALL TRANSFORMATION ... RESULT XML xml.

7.40之后-返回参数

CALL TRANSFORMATION ... RESULT XML DATA(xml).

*&---------------------------------------------------------------------*

7.40之前-传输参数

DATA a1 TYPE ... DATA a2 TYPE ...

oref->meth( IMPORTING p1 = a1 IMPORTING p2 = a2 ... )

7.40之后-传输参数

oref->meth( IMPORTING p1 = DATA(a1) IMPORTING p2 = DATA(a2) ... )

*&---------------------------------------------------------------------*

7.40之前-引用声明

复制代码
DATA ixml TYPE REF TO if_ixml. DATA stream_factory TYPE REF TO if_ixml_stream_factory. DATA document TYPE REF TO if_ixml_document.

 

ixml = cl_ixml=>create( ).
stream_factory = ixml->create_stream_factory( ).
document = ixml->create_document( ).
复制代码

7.40之后-引用声明

DATA(ixml)           = cl_ixml=>create( ). DATA(stream_factory) = ixml->create_stream_factory( ). DATA(document)       = ixml->create_document( ).

*&---------------------------------------------------------------------*

740之前-指针声明

复制代码
FIELD-SYMBOL: LIKE LINE OF ITAB. LOOP AT itab ASSIGNING .

... ENDLOOP.
复制代码

740之后-指针声明

复制代码
LOOP AT ITAB ASSIGNING FIELD-SYMBOL().

… ENDLOOP. READ TABLE itab assigning field-symbol() ....
复制代码

 

 

 2. 内表操作

 
  • VALUE
  • MOVE-CORRESPONDING
  • CORRESPOING
  • FOR
  • REDUCE
  • GROUP BY
  • FILTER

VALUE语法:

     结构赋值

     ... VALUE dtype | #(  [BASE dobj] comp1 = dobj1 comp2 = dobj2 ... ) ...

     内表赋值

     ... VALUE dtype | #( [BASE itab] (  (line1-com1 = dobj1) ( line2 ..) ... ) ...

 

 "内表不能带表头
       IT_VKORG = VALUE #( KUNNR = E_KNA1-KUNNR ( VKORG = '3000' )
                                                 ( VKORG = '6008' ) ) .

复制代码
DATA itab TYPE RANGE OF i.  
itab = VALUE #( sign = 'I' option = 'BT' ( low = 1 high = 10 )  
                                         ( low = 21 high = 30 )  
                                         ( low = 41 high = 50 )  
                           option = 'GE' ( low = 61 ) ).  
cl_demo_output=>DISPLAY( itab ). 
复制代码

MOVE-CORRESPONDING语法:

CORRESPONDING语法:

 

 

itab[ … ]语法

     … itab[ … ] …

     相当于read table itab ….

 

u缺点

     如果对应没找到,会抛出CX_SY_ITAB_LINE_NOT_FOUND异常

     系统变量SY-SUBRC不会记录成功与否

 

u改进

     IF line_exists ( itab[…] )

        …..

     ENDIF

     通过这行语法判断行是否查找到

FOR语法

描述

     加强版本的loop at语法,与REDUCE、VALUE关键字配合使用

 

语法

     …FOR i = ... [THEN expr]  UNTIL | WHILE  log_exp ...

     …VALUE  itab( FOR i = … [THEN expr]  UNTIL | WHILE  log_exp ... )

     …REDUCE  type( INIT FOR  …. NEXT ….. 

 

REDUCE语法

 

GROUP BY语法

FELTER语法

描述

     可以根据指定值(一个)或者指定内表(多个)的值过滤itab并返回itab类型的结果集

 

语法

     FILTER  type(  itab   [EXCEPT]   [IN ftab]   [USING KEY keyname ]
                                                                   WHERE c1 op f1  [AND c2 op f2  [...] ]  ) ...

 

变式

     FILTER  type( itab …) 对应一个值过滤

     FILTER  type( itab in tab …)对应多个值过滤

 

其它

     EXCEPT如果不指定则表示满足条件的找出来,如果指定则表示不满足条件的找出来

     WHERE对应过滤的条件,是必须要指定的

3. OPEN SQL

    SELECT SINGLE @ABAP_TRUE INTO @DATA(EXISTS) FROM KNA1 WHERE KUNNR EQ @I_KNA1-KUNNR. IF EXISTS <> ABAP_TRUE. ENDIF.

 

励志美文、《抉择》
人的一生常处于抉择之中,如:念哪一间大学?选哪一种职业?娶哪一种女子?……等等伤脑筋的事情。一个人抉择力的有无,可以显示其人格成熟与否。
倒是哪些胸无主见的人,不受抉择之苦。因为逢到需要决定的时候,他总是求询别人说:"嘿,你看怎么做?"
大凡能够成大功业的人,都是抉择力甚强的人。他知道事之成败,全在乎已没有人可以代劳,更没有人能代你决定。
在抉择的哪一刻,成败实已露出端倪。
分类: ABAP, 学习笔记
阅读(2974) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~