数据之间的处理(表,结构,指针啊)定义与相互之间的赋值(针对初学者容易混淆的概念)

ABAP的定义数据很简单,无非是内表,内表的structure,带表头,不带表头,这些的定义都很简单,但是不同的数据结构他们有些赋值操作是不一样的:


3种类型的表不同的读取方法:



1、分析表和structure,LIKE和type,带表头和不带表头:

DATAS:

  BEGIN OF IT_ALV OCCURS 0,

      …………….

  END   OF IT_ALV.

 

TYPES: BEGIN OF YT_LOG,
       salesdocument   TYPE bapivbeln-vbeln,
       END OF YT_LOG.

 

GT_LOG   TYPE TABLE OF YT_LOG WITH HEADER LINE.

 

③   IT_ALV1    LIKE  IT_ALV  OCCURS O WITH HEADER LINE 

 

1和2这两种定义内表,IT_ALV和GT_LOG、IT_ALV1可以直接放到select into corresponding field of table的。。但是IT_ALV和IT_ALV1,可以用在select  endselect,然后通过append放进内表里。

1,2,3,这三个都是定义一个内表,而且是带表头的。

 

DATA: LV_ZORDERCONTROL LIKE ZORDERCONTROL.      直接LIKE一个表。然后LV的这个变量可以放到select into哪里。

 

GT_LOG   TYPE TABLE OF YT_LOG

 

IT_S912 TYPE TABLE OF S912.

 

DATA:
  BEGIN OF IT_ALV,

      …………….

  END   OF IT_ALV.

 

4这种是不带表头的。

带表头和不带表头之间的区别:

   不带表头的不可以直接赋值,需要把值放到work area 再赋值。

   例如: IT_S912-VBELN = ‘’.         这样是不行的。

   其次不带表头的,不可以APPEND。

 

定义work area,内表等:

  DATA:
    L_WA_S912   TYPE S912

 

L_WA_ALV    LIKE LINE OF IT_ALV,


DATA: IT_VBFA_COPY LIKE IT_VBFA[].

 

如何进行内表之间的赋值:

   可以直接赋值。两个类型一样的表,可以直接赋值。

   MOVE-CORRESPONDING gt_upload TO gt_bkpf.

 

2、指针的定义和赋值:(这部分网上参考一部分,后续自己有遇到继续补充)

1、定义指针:
    指针的定义主要有以下语句
    定义任意类型的指针,但是不具备栏位结构(仅仅是一个地址)
      FIELD-SYMBOLS <carrid> TYPE ANY.
  参考数据库表定义(这种指针是含有栏位结构的,参考内表同理)
    
      FIELD-SYMBOLS <sflight> TYPE sflight.
      FIELD-SYMBOLS <sflight> LIKE sflight.
      FIELD-SYMBOLS <sflight> LIKE LINE OF sflight.
  动态定义具有栏位结构的指针类型
    
       DATA: tabname TYPE tabname VALUE 'SFLIGHT' ,   
       dref TYPE REF TO data.
        FIELD-SYMBOLS: <itab> TYPE ANY TABLE.    
        CREATE DATA dref TYPE TABLE OF (tabname).
        ASSIGN dref->* TO <itab>.
    2、指针的分配(常用句法)
    分配某个变量给指针
       ASSIGN var TO <field-symbols>
  分配结构中的某个字段的地址给指针
    
      ASSIGN COMPONENT pos OF STRUCTURE struc TO <field-symbols>.
  分配整个内表行给指针(指针必须定义为有栏位结构的类型)   
      READ TABLE itab INDEX/WITH KEY ASSIGNING <field-symbols>.
      LOOP AT itab
      ASSIGNING  <field-symbols>.
       ENDLOOP.
    分配类的方法或借口给指针
      ASSIGN dref->* TO <field-symbols>.



 后续继续补充遇到的一些特殊的地方。

 


  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值