尼采卢洪波现状:EXPORT TO MEMORY/DATABASE....

来源:百度文库 编辑:中财网 时间:2024/05/06 12:08:49
EXPORT TO MEMORY/DATABASE....


数据库中的数据簇
可以将数据簇存储到ABAP/4词典的特定数据库中。就是所谓的ABAP/4簇数据库。
该方法允许单步存储任何具有深结构的复杂数据对象,而不必将其调整为关系数据库的平面结构。这样,在整个系统中都可使用该数据对象,并且每个用户都可对其进行访问。要使访问成功,必须知道存储对象的数据类型。
在 簇数据库中存储数据,对于支持有关关系数据库信息的分析结果十分有用。例如,如果要从所有分支机构的人员数据中生成销售额最高的客户清单或者完整的通讯 录,就可以编写ABAP/4程序,让程序来解决此类问题,并将结果存储为数据簇。如果需要刷新存储的数据簇,可以在后台定期运行这些程序。要使用该结果, 可以使用只访问该数据簇的其他程序。因为不必在每次使用结果时都访问关系数据库中的分布式数据,并且也不必每次都重新生成结果,所以,此方法可以很大程度 上减少系统的响应时间。
存储数据簇是专就ABAP/4而言。尽管也可以使用SQL语句访问簇数据库,但是,只有ABAP/4语句能够对已存储的数据簇结构进行解码。
使用EXPORT TO DATABASE语句将数据对象存储到簇数据库中。
使用IMPORT FROM DATABASE语句为数据簇生成目录表,并从簇数据库中读取数据对象。
使用DELETE FROM DATABASE语句从簇数据库中删除数据簇。
下面是一个例子: (Memory的例子参考:http://blog.chinaunix.net/u1/40527/showart.php?id=466958)   *&---------------------------------------------------------------------*
*& Report Z_BARRY_CLUSTER                                             *
*&                                                                     *
*&---------------------------------------------------------------------*
*& 演示如何在簇表里面写入和读出数据,如果                              *
*& 需要在系统保存很多参数,而又不喜欢自己建表,可以用这个方法          *
*&---------------------------------------------------------------------* REPORT  z_barry_cluster  NO STANDARD PAGE HEADING   . DATA wa_indx TYPE indx. DATA: BEGIN OF wa_itab,
        col1 TYPE i,
        col2 TYPE i,
      END OF wa_itab.
DATA: itab LIKE TABLE OF wa_itab ,
      itab2 LIKE TABLE OF wa_itab ,
      tmpstr(20) TYPE c,
      dirtab TYPE TABLE OF cdir WITH HEADER LINE .   START-OF-SELECTION.
  DO 1000 TIMES.
    wa_itab-col1 = sy-index.
    wa_itab-col2 = sy-index ** 2.
    APPEND wa_itab TO itab.
  ENDDO.   DO 50 TIMES.
    wa_itab-col1 = sy-index.
    wa_itab-col2 = sy-index ** 2.
    APPEND wa_itab TO itab2.
  ENDDO.   tmpstr = ‘TEST String‘.    wa_indx-aedat = sy-datum.
  wa_indx-usera = sy-uname.
  wa_indx-pgmid = sy-repid.   EXPORT a = itab b = itab2 c = tmpstr TO DATABASE indx(hk) ID ‘Table‘ FROM wa_indx.
   REFRESH: itab,itab2.
  CLEAR tmpstr.    WRITE:     ‘区域‘,
       AT 20 ‘标识‘,
       AT 35 ‘计数器‘,
       AT 50 ‘日期‘,
       AT 65 ‘用户‘ ,
       AT 80 ‘ABAP程序名‘ .
  ULINE.   SELECT * FROM  indx INTO  wa_indx
      WHERE relid = ‘HK‘ AND
            srtfd = ‘Table‘.
    WRITE: / wa_indx-relid UNDER ‘区域‘ ,
             wa_indx-srtfd UNDER ‘标识‘ ,
             wa_indx-srtf2 UNDER ‘计数器‘ LEFT-JUSTIFIED ,
             wa_indx-aedat UNDER ‘日期‘,
             wa_indx-usera UNDER ‘用户‘,
             wa_indx-pgmid UNDER ‘ABAP程序名‘.
  ENDSELECT.    IMPORT DIRECTORY INTO dirtab FROM DATABASE indx(hk) ID ‘Table‘.
  SKIP 2.
  WRITE: /   ‘对象名‘,
       AT 20 ‘对象类型‘,
       AT 35 ‘字段类型‘,
       AT 50 ‘表格行数‘,
       AT 65 ‘字段长度‘ .
  ULINE.
  LOOP AT dirtab.
    WRITE : / dirtab-name  UNDER ‘对象名‘,
            dirtab-otype UNDER ‘对象类型‘ LEFT-JUSTIFIED ,
            dirtab-ftype UNDER ‘字段类型‘ LEFT-JUSTIFIED ,
            dirtab-tfill UNDER ‘表格行数‘ LEFT-JUSTIFIED ,
            dirtab-fleng UNDER ‘字段长度‘ LEFT-JUSTIFIED .
  ENDLOOP.   IMPORT a = itab b = itab2 FROM DATABASE indx(hk) ID ‘Table‘.
  IMPORT c = tmpstr FROM DATABASE indx(hk) ID ‘Table‘.   BREAK-POINT.