表定义下载(先头文字开头集中下载成excel,例如Z)

*&---------------------------------------------------------------------*
*& REPORT Y_HGX_DOWN_TABLE
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*

REPORT Y_HGX_DOWN_TABLE 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 ITAB_OUT OCCURS 0,
       TABNAME(30),      "テーブルID
       TABTEXT(60),      "テーブル名称
       FIELDNAME    LIKE DFIES-FIELDNAME,   "項目ID
       FIELDTEXT    LIKE DFIES-FIELDTEXT,   "項目名称
       KEYFLAG(4),       "キー
       ROLLNAME(12),     "データエレメント
       DATATYPE(8),      "タイプ
       LENG(6),          "長さ
       DECIMALS(6),      "小数桁
     END OF ITAB_OUT.

DATA: BEGIN OF L_DD02T OCCURS 0,
      TABNAME(30),
      TABTEXT(60),
     END OF L_DD02T.

*選択画面定義
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TEXT-001.
PARAMETERS:TABLE    TYPE DDOBJNAME DEFAULT 'Z',        "
           FIELD    TYPE DFIES-FIELDNAME,                 "
           P_DNFILE LIKE RLGRAP-FILENAME DEFAULT 'D:\Download\ADDONTABLE'.   "
SELECTION-SCREEN END OF BLOCK BLK1.

START-OF-SELECTION.
  PERFORM DOWN_DATA."テーブル定義をダウンロード

END-OF-SELECTION.
*  PERFORM WRITE_DATA."テーブル定義を出力


FORM DOWN_DATA .

*  ITAB_OUT-TABNAME = 'テーブルID'.  "TABNAME
*  ITAB_OUT-TABTEXT = 'テーブル名称'.  "TABTEXT
*  ITAB_OUT-FIELDNAME = '項目ID'.  "FIELDNAME
*  ITAB_OUT-FIELDTEXT = '項目名称'.  "SHORT DESCRIPTION
*  ITAB_OUT-KEYFLAG = 'キー'.    "KEY
*  ITAB_OUT-ROLLNAME = 'データエレメント'.   "DATA ELEMENT
*  ITAB_OUT-DATATYPE = 'タイプ'.   "DATA TYPE
*  ITAB_OUT-LENG = '長さ'.       "LENGTH
*  ITAB_OUT-DECIMALS = '小数桁'.  "DECIMAL PLACE
  ITAB_OUT-TABNAME = '表ID'.  "TABNAME
  ITAB_OUT-TABTEXT = '表名称'.  "TABTEXT
  ITAB_OUT-FIELDNAME = '字段ID'.  "FIELDNAME
  ITAB_OUT-FIELDTEXT = '字段名称'.  "SHORT DESCRIPTION
  ITAB_OUT-KEYFLAG = '主键'.    "KEY
  ITAB_OUT-ROLLNAME = '数据元素'.   "DATA ELEMENT
  ITAB_OUT-DATATYPE = '数据类型'.   "DATA TYPE
  ITAB_OUT-LENG = '长度'.       "LENGTH
  ITAB_OUT-DECIMALS = '小数位数'.  "DECIMAL PLACE
  APPEND ITAB_OUT.
  CLEAR ITAB_OUT.

  CONCATENATE TABLE '%' INTO TABLE.
  SELECT TABNAME DDTEXT
    FROM DD02T
    INTO L_DD02T
   WHERE TABNAME LIKE TABLE.

*  ****CALL FUNCTION*****
    CALL FUNCTION 'DDIF_FIELDINFO_GET'
      EXPORTING
        TABNAME        = L_DD02T-TABNAME  "
        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.

    LOOP AT ITAB.
      ITAB_OUT-TABNAME = L_DD02T-TABNAME.
      ITAB_OUT-TABTEXT = L_DD02T-TABTEXT.
      ITAB_OUT-FIELDNAME = ITAB-FIELDNAME.
      ITAB_OUT-FIELDTEXT = ITAB-FIELDTEXT.
      ITAB_OUT-KEYFLAG = ITAB-KEYFLAG.
      ITAB_OUT-ROLLNAME = ITAB-ROLLNAME.
      ITAB_OUT-DATATYPE = ITAB-DATATYPE.
      ITAB_OUT-LENG = ITAB-LENG.
      ITAB_OUT-DECIMALS = ITAB-DECIMALS.
      APPEND ITAB_OUT.
      CLEAR ITAB_OUT.
    ENDLOOP.

  ENDSELECT.

*ローカルにダウンロードしてEXCELで保存する
  CONCATENATE P_DNFILE '\' TABLE '.XLS' INTO G_FILE.
  CALL FUNCTION 'WS_DOWNLOAD'
    EXPORTING
      FILENAME = G_FILE
      FILETYPE = 'DAT'
    TABLES
      DATA_TAB = ITAB_OUT.  "

ENDFORM.

*FORM WRITE_DATA .
*  LOOP AT ITAB_OUT.
*    WRITE:/ ITAB_OUT-TABNAME,    "TABNAME
*            ITAB_OUT-TABTEXT,    "TABTEXT
*            ITAB_OUT-FIELDNAME,  "FIELDNAME
*            ITAB_OUT-FIELDTEXT,  "SHORT DESCRIPTION
*            ITAB_OUT-KEYFLAG,    "KEY
*            ITAB_OUT-ROLLNAME,   "DATA ELEMENT
*            ITAB_OUT-DATATYPE,   "DATA TYPE
*            ITAB_OUT-LENG,       "LENGTH
*            ITAB_OUT-DECIMALS.   "DECIMAL PLACE
*  ENDLOOP.
*ENDFORM.                    " WRITE_DATA

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值