116、SAP导出表结构并保存到Excel,方便写代码时复制粘贴

 

01. 在SE38模块,创建一个程序

 

 

02.ABAP代码如下:

复制代码
*&---------------------------------------------------------------------*
*& Report Z_TIANPAN_20190716_HELLO
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

* 此条为系统自动生成,为程序名
REPORT z_tianpan_20190716_hello 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,  "字段名
       keyflag(4),       "KEY
       rollname(12),     "数据元素
       datatype(8),      "数据类型
       leng(6),          "长度
       decimals(6),      "小数位
       fieldtext    LIKE dfies-fieldtext,   "字段简短描述
     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 'G:\'.   "默认存放地址
SELECTION-SCREEN END OF BLOCK blk1.

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

END-OF-SELECTION.
  PERFORM write_data."输出数据


*--从表中读取数据----------------------------------------
FORM read_data .
*****CALL FUNCTION*****
  CALL FUNCTION 'DDIF_FIELDINFO_GET'
    EXPORTING
      tabname        = table  "自己输的表名
      fieldname      = field  "字段
      langu          = sy-langu "语言码
    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.

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

ENDFORM.


*--输出数据----------------------------------------
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
复制代码

 

 

 03.代码执行一下

 

 

04.文件已经被保存了,很完美

 

 

 

 

posted on 2024-10-17 11:31  F多路  阅读(35)  评论(0编辑  收藏  举报