导出SAP数据库表

来源:互联网 发布:手机身份证复印软件 编辑:程序博客网 时间:2024/05/17 07:10
 REPORT  ytable NO STANDARD PAGE HEADING
MESSAGE-ID y2
LINE-SIZE  200
LINE-COUNT 65 .

TABLES: dfies, x030l,rlgrap.

DATA: BEGIN OF itab OCCURS 0.
        INCLUDE STRUCTURE dfies.
DATA: END OF itab.
DATA: g_file LIKE rlgrap-filename.   "下载保存路径
DATA:BEGIN OF itab1 OCCURS 0,
      fieldname LIKE dfies-fieldname,  "Fieldname
      keyflag(4),    "KEY
      rollname(12),   "Data Element
      datatype(8),   "Data Type
      leng(6),       "Length
      decimals(6),   "Decimal Place
      fieldtext LIKE dfies-fieldtext,  "Short Description
      END OF itab1.

*********************定义屏幕
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS:table TYPE ddobjname DEFAULT 'VBAK',
field TYPE dfies-fieldname,
p_dnfile LIKE rlgrap-filename DEFAULT 'D:/'.
SELECTION-SCREEN END OF BLOCK blk1.

START-OF-SELECTION.
  PERFORM read_data."从表中读取数据

END-OF-SELECTION.
  PERFORM write_data."输出数据
*&---------------------------------------------------------------------*
*&      Form  read_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM read_data .
*****CALL FUNCTION*****
  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname        = table
      fieldname      = field
      langu          = sy-langu "这个可以改成别的语言,For Short Descriptions
    TABLES
      dfies_tab      = itab " like table dfies.
    EXCEPTIONS
      not_found      = 1
      internal_error = 2
      OTHERS         3.
  IF sy-subrc <> 0.
*    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
*           WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.

  itab1-fieldname = '字段'.  "Fieldname
  itab1-keyflag = '主键'.    "KEY
  itab1-rollname = '数据元素'.   "Data Element
  itab1-datatype = '数据类型'.   "Data Type
  itab1-leng = '长度'.       "Length
  itab1-decimals = '小数位'.  "Decimal Place
  itab1-fieldtext = '短文本'.  "Short Description
  APPEND itab1.
  CLEAR itab1.

  LOOP AT itab.
    itab1-fieldname = itab-fieldname.
    itab1-keyflag = itab-keyflag.
    itab1-rollname = itab-rollname.
    itab1-datatype = itab-datatype.
    itab1-leng = itab-leng.
    itab1-decimals = itab-decimals.
    itab1-fieldtext = itab-fieldtext.
    APPEND itab1.
    CLEAR itab1.
  ENDLOOP.

  CONCATENATE p_dnfile table '.xls' INTO g_file. "这里为将内表数据下载到本地D盘,名字为表名,类型为EXCEL
  CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
      filename = g_file
      filetype = 'DAT'
    TABLES
      data_tab = itab1.  "被下载的内表

ENDFORM.                    " read_data
*&---------------------------------------------------------------------*
*&      Form  write_data
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM write_data .
  LOOP AT itab1.
    WRITE:/ itab1-fieldname,  "Fieldname
    itab1-keyflag,    "KEY
    itab1-rollname,   "Data Element
    itab1-datatype,   "Data Type
    itab1-leng,       "Length
    itab1-decimals,   "Decimal Place
    itab1-fieldtext.  "Short Description
  ENDLOOP.
ENDFORM.                    " write_data