打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
[程序收藏]一个不错的下载ABAP程序和表格的程序
*&---------------------------------------------------------------------*
*& 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
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
增强方式、方法总结
如何查找事务代码所在程序的用户出口
SAP寻找增强
批量备SAP中CBO ABAP 程序代码为TXT文件备份
IDL程序中修改鼠标显示 - ENVI/IDL空间 - ALL FOR GIS —GIS,...
extern
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服