大兵的技术博客

为了看到黎明,我只好通宵...

用户操作
[即时聊天] [发私信] [加为好友]
郑晓斌ID:matterRZ
25493次访问,排名4673好友0人,关注者0
matterRZ的文章
原创 11 篇
翻译 0 篇
转载 7 篇
评论 8 篇
matterRZ的公告
努力HR中,努力学习ABAP,努力学习业务流程中,与大家共勉...
最近评论
kwlong2008:来看看朋友,最近过的怎么样?俺的空间是介绍网站制作网站建设的,有时间也常去一下我的空间谢谢,wow gold

When you play a game of the day, the list of friends in the game whether there are always a few names of black
wow power leveling<……
sap99:http://www.sap99.com/
,SAP免费资料下载
SAP99资料多多

http://www.sap99.com

有很多的学习资料,推荐一下,
lament_gates:支持备份类么?
chinalhcz:不错的资料!
文章分类
收藏
相册
京游
手机
我的好友
比翼恒飞(RSS)
存档
软件项目交易
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
订阅到BlogLines
订阅到Yahoo
订阅到GouGou
订阅到飞鸽
订阅到Rojo
订阅到newsgator
订阅到netvibes

原创 [程序收藏]一个不错的下载ABAP程序和表格的程序收藏

新一篇: 世界500强公司网站一览 | 旧一篇: 国庆长假到今天已经两个通宵了(顺便把成果贴出来)

 今天在群里回答了一个群友贴的一段代码问题,解决问题的同时发现这段程序挺有用的。可以用来进行开发统计,或者个人代码备份之用,不敢独享,贴到小博里供大家参考。选屏界面的字段描述需要自行添加,可以参看我后面的附图。

*&---------------------------------------------------------------------*
*& Report  ZZHENGXB_TEST_DOWNLOAD
*& 批量下载程序和表结构
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*

REPORT  ZZHENGXB_TEST_UPLOAD NO STANDARD PAGE HEADING LINE
-SIZE 200 MESSAGE-ID WA.

 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(
128) TYPE C.
 DATA: TT TYPE STRING 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:'.    "下载路径
 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 DEFAULT 'zhengxb'.      "开发人
 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
         EXCEPTIONS
           FILE_OPEN_ERROR     
= 1
           FILE_WRITE_ERROR    
= 2
           INVALID_FILESIZE    
= 3
           INVALID_TABLE_WIDTH 
= 4
           INVALID_TYPE        
= 5
           NO_BATCH            
= 6
           UNKNOWN_ERROR       
= 7.

       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.                    
"GET_DATA

*---------------------------------------------------------------------*
*       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.                    
"GET_TABLE_DATA

选屏界面

发表于 @ 2006年10月13日 16:02:00|评论(loading...)|编辑

新一篇: 世界500强公司网站一览 | 旧一篇: 国庆长假到今天已经两个通宵了(顺便把成果贴出来)

评论

#lament_gates 发表于2008-07-09 14:37:38  IP: 10.59.152.*
支持备份类么?
发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © matterRZ