批量下载ABAP程序和表结构 (转)

SAP ABAP批量下载程序和表结构[@more@]

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.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/581999/viewspace-899550/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/581999/viewspace-899550/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值