*&---------------------------------------------------------------------*
*& 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