您的位置:首页 > 其它

批量下载ABAP程序和表结构

2015-01-29 10:10 232 查看
REPORT YGJH003 NO STANDARD PAGE HEADING LINE-SIZE 200 MESSAGE-ID WA.

***************************************************************

***REPNAME: 批量下载程序和表结构 ***

***AUTHOR : Alon ***

***************************************************************

TABLES:TADIR,TRDIRT,TSTC,DD03L,DD02L,DD04L,DD02T,DD03T,DD04T.

DATA: BEGIN OF YTADIR OCCURS 0.

INCLUDE STRUCTURE TADIR.

INCLUDE STRUCTURE TRDIRT.

DATA: END OF YTADIR.

DATA:PROG(72) TYPE C OCCURS 0 WITH HEADER LINE.

*表结构

DATA:BEGIN OF TAB OCCURS 0.

INCLUDE STRUCTURE DD03L.

DATA:TEXT(40).

DATA:END OF TAB.

DATA:BEGIN OF T1 OCCURS 0,

TABNAME LIKE DD02L-TABNAME,

DDTEXT LIKE DD02T-DDTEXT,

END OF T1.

DATA:BEGIN OF ITAB OCCURS 0,

FIELD(15), "字段

KEY(6), "关键字

ELMENT(15), "字段类型

TYPE(10), "数据类型

LENG(8) , "长度

DECIMALS(8) , "小数

CHK(10), "表检查

CAN(10), "参考表

CFI(10), "参考字段

TEXT(40), "字段描述

END OF ITAB.

DATA: YYNAME(150).

DATA: TT(500) OCCURS 0 WITH HEADER LINE.

DATA: RN(72).

DATA:FIELDS(40),

LIN TYPE I,

VAL(30),

REP(40).

SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME.

PARAMETERS:DOW AS CHECKBOX. "是否下载

PARAMETERS:P_DIR(50) DEFAULT 'D:SAP开发程序'. "下载路径

PARAMETERS:STYPE(6) DEFAULT 'TXT'.

PARAMETERS:R1 RADIOBUTTON GROUP R DEFAULT 'X',

R2 RADIOBUTTON GROUP R.

SELECTION-SCREEN END OF BLOCK BLK1.

SELECTION-SCREEN BEGIN OF BLOCK BLK2 WITH FRAME.

SELECT-OPTIONS:AUTHOR FOR TADIR-AUTHOR. "开发人

SELECT-OPTIONS:DEVCLASS FOR TADIR-DEVCLASS. "开发类

SELECT-OPTIONS:OBJ FOR TADIR-OBJ_NAME. "下载程序名称

SELECT-OPTIONS:TABNAME FOR DD02L-TABNAME. "下载表名称

SELECTION-SCREEN END OF BLOCK BLK2.

INITIALIZATION .

START-OF-SELECTION .

IF R1 = 'X'.

PERFORM GET_DATA.

ENDIF.

IF R2 = 'X'.

IF TABNAME IS INITIAL.

MESSAGE I009 WITH '请输入要下载的表名!'.

ELSE.

PERFORM GET_TABLE_DATA.

ENDIF.

ENDIF.

AT LINE-SELECTION.

CLEAR: FIELDS, LIN.

GET CURSOR FIELD FIELDS LINE LIN VALUE VAL.

LIN = LIN - 1.

IF LIN >= 1.

READ TABLE YTADIR INDEX LIN.

IF SY-SUBRC = 0.

CLEAR REP.

CLEAR PROG.

REP = YTADIR-OBJ_NAME.

READ REPORT REP INTO PROG.

EDITOR-CALL FOR PROG.

* SET PARAMETER ID 'RID' FIELD REP.

* CALL TRANSACTION 'SE38' AND SKIP FIRST SCREEN.

ENDIF.

ENDIF.

END-OF-SELECTION.

*---------------------------------------------------------------------*

* FORM GET_DATA *

*---------------------------------------------------------------------*

* ........ *

*---------------------------------------------------------------------*

FORM GET_DATA.

SELECT * INTO CORRESPONDING FIELDS OF TABLE YTADIR

FROM TADIR

INNER JOIN TRDIRT ON TADIR~OBJ_NAME = TRDIRT~NAME

WHERE OBJECT = 'PROG'

AND OBJ_NAME IN OBJ

AND DEVCLASS IN DEVCLASS

AND AUTHOR IN AUTHOR.

SORT YTADIR BY OBJ_NAME.

WRITE:/ '开发类','开发人','程序名称','程序标题'.

LOOP AT YTADIR.

IF DOW = 'X'.

REFRESH TT.

RN = YTADIR-OBJ_NAME.

READ REPORT RN INTO TT.

CONCATENATE P_DIR YTADIR-AUTHOR '_' YTADIR-OBJ_NAME

'_' YTADIR-TEXT '.' STYPE

INTO YYNAME.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = YYNAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = TT.

IF SY-SUBRC = 0.

WRITE:/1(10) YTADIR-DEVCLASS,

(8) YTADIR-AUTHOR,

(15) YTADIR-OBJ_NAME,

(40) YTADIR-TEXT.

FORMAT COLOR 5.

WRITE: '已下载'.

FORMAT COLOR OFF.

ELSE.

WRITE:/ YTADIR-DEVCLASS,YTADIR-AUTHOR,YTADIR-OBJ_NAME,YTADIR-TEXT.

FORMAT COLOR 4.

WRITE: '无法下载'.

FORMAT COLOR OFF.

ENDIF.

ELSE.

WRITE:/ YTADIR-DEVCLASS,YTADIR-AUTHOR,YTADIR-OBJ_NAME,YTADIR-TEXT.

ENDIF.

ENDLOOP.

ENDFORM.

*---------------------------------------------------------------------*

* FORM GET_TABLE_DATA *

*---------------------------------------------------------------------*

* ........ *

*---------------------------------------------------------------------*

FORM GET_TABLE_DATA.

SELECT DISTINCT * INTO CORRESPONDING FIELDS OF TABLE T1

FROM DD02T WHERE TABNAME IN TABNAME

AND DDLANGUAGE EQ '1'.

SELECT * INTO CORRESPONDING FIELDS OF TABLE TAB FROM DD03L AS A

WHERE A~TABNAME IN TABNAME.

SORT TAB BY TABNAME POSITION.

WRITE:/'字段名','关键字','数据元素','数据类型','长度','小数',

'表检查','参考表','参考字段','字段描述'.

ULINE.

LOOP AT T1.

REFRESH ITAB.

CLEAR YYNAME.

IF DOW = 'X'.

ITAB-FIELD = '字段名'.

ITAB-KEY = '关键字'.

ITAB-ELMENT = '数据元素'.

ITAB-TYPE = '数据类型'.

ITAB-LENG = '长度'.

ITAB-DECIMALS = '小数'.

ITAB-TEXT = '字段描述'.

ITAB-CHK = '表检查'.

ITAB-CAN = '参考表'.

ITAB-CFI = '参考字段'.

APPEND ITAB.

CLEAR ITAB.

ENDIF.

CONCATENATE T1-TABNAME '_' T1-DDTEXT '的表结构如下:'

INTO YYNAME.

FORMAT COLOR 3.

WRITE:/ YYNAME.

FORMAT COLOR OFF.

LOOP AT TAB WHERE TABNAME = T1-TABNAME.

ITAB-FIELD = TAB-FIELDNAME.

ITAB-KEY = TAB-KEYFLAG.

ITAB-ELMENT = TAB-ROLLNAME.

ITAB-TYPE = TAB-DATATYPE.

ITAB-LENG = TAB-LENG.

ITAB-CHK = TAB-CHECKTABLE.

ITAB-CAN = TAB-REFTABLE.

ITAB-CFI = TAB-REFFIELD.

ITAB-DECIMALS = TAB-DECIMALS.

IF TAB-ROLLNAME NE SPACE.

SELECT SINGLE * FROM DD04T WHERE ROLLNAME = TAB-ROLLNAME

AND DDLANGUAGE = '1'.

IF SY-SUBRC = 0.

ITAB-TEXT = DD04T-DDTEXT.

ELSE.

CLEAR ITAB-TEXT.

ENDIF.

ELSE.

SELECT SINGLE * FROM DD03T WHERE TABNAME = TAB-TABNAME

AND DDLANGUAGE = '1'

AND FIELDNAME = TAB-FIELDNAME.

IF SY-SUBRC = 0.

ITAB-TEXT = DD03T-DDTEXT.

ELSE.

CLEAR ITAB-TEXT.

ENDIF.

ENDIF.

APPEND ITAB.

WRITE:/ ITAB-FIELD,ITAB-KEY,ITAB-ELMENT,ITAB-TYPE,ITAB-LENG,

ITAB-DECIMALS,ITAB-CHK,ITAB-CAN,ITAB-CFI,ITAB-TEXT.

CLEAR ITAB.

ENDLOOP.

IF DOW = 'X'.

CONCATENATE P_DIR T1-TABNAME '_' T1-DDTEXT '.' STYPE

INTO YYNAME.

CALL FUNCTION 'WS_DOWNLOAD'

EXPORTING

FILENAME = YYNAME

FILETYPE = 'ASC'

TABLES

DATA_TAB = ITAB.

ELSE.

ULINE.

ENDIF.

ENDLOOP.

ENDFORM.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: