这是一个可以下载ABAP报表源程序以及相关的文本内容的程序,但是对于在Unicode环境下不能通过编译,因此进行了一点小的修改,已经可以正常运行。
  1 *----------------------------------------------------------------------*
  2 * Report: ZKBPROGS             *
  3 *----------------------------------------------------------------------*
  4 * Function   : Up/Download ABAP reports complete with texts            *
  5 *----------------------------------------------------------------------*
  6 * Change Log :                 *
  7 * July 51999         *
  8 *    - Combined existing programs that did the upload and download into*
  9 *    - one program.            *
 10 *    - Changed format that the reports are saved in to be compatible   *
 11 *      with Wolfgang Morgenthaler's upload/download program(YSTRASN00  *
 12 *      at http://www.antarcon.de/).  Major differences between this program and*
 13 *      Wolfgang's are:
 14 *         - this program does not update TRDIR with the                *
 15 *           TRDIR entries that are in the program uploaded.  Instead,  *
 16 *           current users stats are used.          *
 17 *         - this program allows selection of reports from a list or    *
 18 *           a single report can be tuped in and uploaded               *
 19 *         - this program also updates TADIR so that a development class*
 20 *           is assigned to the program             *
 21 *         - this program checks to see if the program already has a    *
 22 *           TRDIR entry, and if it does, warns the user                *
 23 *         - this program will save/restore the program documenation too*
 24 *          *
 25 * Jan 092006        *
 26 *    - TextPool中数据导出对Unicode支持问题,致使原来的代码不能编译通过,
 27 *      修改以后运行正常;上载部分同样修改。
 28 *          *
 29 *          *
 30 *----------------------------------------------------------------------*
 31 REPORT ZKBPROGS
 32        NO STANDARD PAGE HEADING
 33        LINE-SIZE  255.
 34 *----------------------------------------------------------------------*
 35 * Declare Database Objects     *
 36 *----------------------------------------------------------------------*
 37 tables:
 38   DOKIL, "表DOKH文档的索引
 39   DOKTL, "文档 - 文本行
 40   TADIR, "资源库对象的目录
 41   TRDIR. "系统表 TRDIR
 42 *----------------------------------------------------------------------*
 43 * Constants*
 44 CONSTANTS:
 45   MC_TRDIR_IDENTIFIER(72)  TYPE C VALUE '%&%& RDIR',
 46   MC_REPORT_IDENTIFIER(72) TYPE C VALUE '%&%& REPO',
 47   MC_TEXT_IDENTIFIER(72)   TYPE C VALUE '%&%& TEXP',
 48   MC_THEAD_IDENTIFIER(72)  TYPE C VALUE '%&%& HEAD',
 49   MC_DOC_IDENTIFIER(72)    TYPE C VALUE '%&%& DOKL',
 50   MC_TRDIR_SHORT(4)        TYPE C VALUE 'RDIR',
 51   MC_REPORT_SHORT(4)       TYPE C VALUE 'REPO',
 52   MC_TEXT_SHORT(4)         TYPE C VALUE 'TEXP',
 53   MC_THEAD_SHORT(4)        TYPE C VALUE 'HEAD',
 54   MC_DOC_SHORT(4)          TYPE C VALUE 'DOKP'.
 55 *----------------------------------------------------------------------*
 56 *----------------------------------------------------------------------*
 57 * Declare Module level data structures             *
 58 *----------------------------------------------------------------------*
 59 DATA: BEGIN OF MTAB_PROGRAM_SOURCE OCCURS 0,
 60         LINE(255) TYPE C,
 61       END OF MTAB_PROGRAM_SOURCE.
 62 DATA: MTAB_PROGRAM_TRDIR LIKE TRDIR OCCURS 0 WITH HEADER LINE.
 63 DATA: MTAB_PROGRAM_TEXTS LIKE TEXTPOOL OCCURS 0 WITH HEADER LINE.
 64 DATA: MSTR_THEAD LIKE THEAD.
 65 DATA: BEGIN OF MTAB_PROGRAM_FILE OCCURS 0,
 66         LINE(275) TYPE C,
 67       END OF MTAB_PROGRAM_FILE.
 68 DATA: BEGIN OF MTAB_DIRECTORY OCCURS 0,
 69         NAME LIKE TRDIR-NAME,
 70         DESC(72) TYPE C,
 71         SAVENAME LIKE RLGRAP-FILENAME,
 72       END OF MTAB_DIRECTORY.
 73 DATA: BEGIN OF MTAB_PROGRAM_DOCUMENTATION OCCURS 0,
 74         LINE(255) TYPE C,
 75       END OF MTAB_PROGRAM_DOCUMENTATION.
 76 *----------------------------------------------------------------------*
 77 * Selection Screen             *
 78 *----------------------------------------------------------------------*
 79 *-- Options for upload/download of programs
 80 SELECTION-SCREEN BEGIN OF BLOCK FRM_OPTIONS WITH FRAME TITLE TEXT-UDL.
 81 PARAMETERS:
 82   RB_DOWN RADIOBUTTON GROUP UDL DEFAULT 'X'.       " Download reports
 83 SELECTION-SCREEN BEGIN OF BLOCK FRM_TRDIR WITH FRAME TITLE TEXT-DIR.
 84 SELECT-OPTIONS:
 85   S_NAME  FOR TRDIR-NAME,              " Program Name
 86   S_SUBC  FOR TRDIR-SUBC               " Program Type
 87           DEFAULT 'F' OPTION EQ SIGN E," Exclude Functions by default
 88   S_CNAM  FOR TRDIR-CNAM               " Created by
 89           DEFAULT SY-UNAME,
 90   S_UNAM  FOR TRDIR-UNAM,              " Last Changed by
 91   S_CDAT  FOR TRDIR-CDAT,              " Creation date
 92   S_UDAT  FOR TRDIR-UDAT.              " Last update date
 93 SELECTION-SCREEN END OF BLOCK FRM_TRDIR.
 94 *-- Options for uploading programs
 95 PARAMETERS:
 96   RB_UP   RADIOBUTTON GROUP UDL.       " Upload reports
 97 SELECTION-SCREEN BEGIN OF BLOCK FRM_UPLOAD WITH FRAME TITLE TEXT-UPL.
 98 SELECTION-SCREEN BEGIN OF LINE.
 99 SELECTION-SCREEN COMMENT 1(29) TEXT-SNG.
100 PARAMETERS:
101   RB_FILE RADIOBUTTON GROUP HOW DEFAULT 'X'.
102 SELECTION-SCREEN COMMENT 33(42) TEXT-FNA.
103 SELECTION-SCREEN END OF LINE.
104 PARAMETERS:
105   RB_LIST RADIOBUTTON GROUP HOW.
106 SELECTION-SCREEN END OF BLOCK FRM_UPLOAD.
107 SELECTION-SCREEN END OF BLOCK FRM_OPTIONS.
108 *-- Options for up/downloading programs
109 SELECTION-SCREEN BEGIN OF BLOCK FRM_FILEN WITH FRAME TITLE TEXT-FIL.
110 PARAMETERS:
111   RB_DOS  RADIOBUTTON GROUP FIL DEFAULT 'X', " Save to local
112   RB_UNIX RADIOBUTTON GROUP FIL,       " Save to UNIX
113   P_PATH  LIKE RLGRAP-FILENAME         " Path to save files to
114         DEFAULT 'c:\temp\'.
115 SELECTION-SCREEN END OF BLOCK FRM_FILEN.
116 
117 AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-LOW.
118   CALL FUNCTION 'F4_PROGRAM'
119        EXPORTING
120             OBJECT             = S_NAME-LOW
121             SUPPRESS_SELECTION = 'X'
122        IMPORTING
123             RESULT             = S_NAME-LOW
124        EXCEPTIONS
125             OTHERS             = 1.
126 
127 AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_NAME-HIGH.
128   CALL FUNCTION 'F4_PROGRAM'
129        EXPORTING
130             OBJECT             = S_NAME-HIGH
131             SUPPRESS_SELECTION = 'X'
132        IMPORTING
133             RESULT             = S_NAME-HIGH
134        EXCEPTIONS
135             OTHERS             = 1.
136 
137 AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-LOW.
138   PERFORM GET_NAME USING 'S_UNAM-LOW'
139                 CHANGING S_UNAM-LOW.
140 
141 AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_UNAM-HIGH.
142   PERFORM GET_NAME USING 'S_UNAM-HIGH'
143                 CHANGING S_UNAM-HIGH.
144 
145 AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-LOW.
146   PERFORM GET_NAME USING 'S_CNAM-LOW'
147                 CHANGING S_CNAM-LOW.
148 
149 AT SELECTION-SCREEN ON VALUE-REQUEST FOR S_CNAM-HIGH.
150   PERFORM GET_NAME USING 'S_CNAM-HIGH'
151                 CHANGING S_CNAM-HIGH.
152 
153 TOP-OF-PAGE.
154   IF RB_LIST = 'X'.
155     FORMAT COLOR COL_HEADING.
156     NEW-LINE.
157     WRITE: AT 3 TEXT-H01,
158            AT 15 TEXT-H03.
159     FORMAT COLOR OFF.
160   ENDIF.
161 
162 AT LINE-SELECTION.
163   CHECK RB_LIST = 'X'.                 " only do in list mode
164   READ LINE SY-CUROW FIELD VALUE MTAB_DIRECTORY-SAVENAME.
165 *-- Read file into an internal table
166   PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE
167             USING  MTAB_DIRECTORY-SAVENAME.
168 *-- Split table into TADIR entry, report lines, and report text
169   PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE
170                  MTAB_PROGRAM_SOURCE
171                  MTAB_PROGRAM_TEXTS
172                  MTAB_PROGRAM_DOCUMENTATION
173         CHANGING TRDIR
174                  MSTR_THEAD.
175 *-- Save all of the data
176   PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE
177                MTAB_PROGRAM_TEXTS
178                MTAB_PROGRAM_DOCUMENTATION
179         USING  TRDIR
180                MSTR_THEAD.
181 *----------------------------------------------------------------------*
182 * Start of processing          *
183 *----------------------------------------------------------------------*
184 START-OF-SELECTION.
185   FORMAT COLOR COL_NORMAL.
186   IF RB_DOWN = 'X'.
187     PERFORM DOWNLOAD_REPORTS.
188   ELSEIF RB_UP = 'X'.
189     PERFORM UPLOAD_REPORTS.
190   ENDIF.
191 
192 END-OF-SELECTION.
193   IF RB_DOWN = 'X'.
194     CONCATENATE P_PATH
195                 'directory.txt'
196       INTO P_PATH.
197     PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_DIRECTORY
198            USING  P_PATH.
199   ENDIF.
200 *---------------------------------------------------------------------*
201 *       FORM UPLOAD_REPORTS   *
202 *---------------------------------------------------------------------*
203 FORM UPLOAD_REPORTS.
204 *-- Can upload a reports entered in selection criteria or
205 *-- select from a list.  List can be from index.txt in same directory
206 *-- (created by the download) or by reading the first line of each file
207 *-- in the directory.
208   IF RB_FILE = 'X'. " Upload single program from a file
209 *-- Read file into an internal table
210     PERFORM READ_REPORT_FROM_DISK TABLES MTAB_PROGRAM_FILE
211               USING  P_PATH.
212 *-- Split table into TADIR entry, report lines, and report text
213     PERFORM SPLIT_INCOMING_FILE TABLES MTAB_PROGRAM_FILE
214                    MTAB_PROGRAM_SOURCE
215                    MTAB_PROGRAM_TEXTS
216                    MTAB_PROGRAM_DOCUMENTATION
217           CHANGING TRDIR
218                    MSTR_THEAD.
219 *-- Save all of the data
220     PERFORM INSERT_NEW_REPORT TABLES MTAB_PROGRAM_SOURCE
221                  MTAB_PROGRAM_TEXTS
222                  MTAB_PROGRAM_DOCUMENTATION
223           USING  TRDIR
224                  MSTR_THEAD.
225   ELSEIF RB_LIST = 'X'. " Show list for user to choose from
226 *-- get list of report names/descriptions from directory text
227     CONCATENATE P_PATH
228                 'directory.txt'
229     INTO P_PATH.
230     PERFORM READ_REPORT_FROM_DISK TABLES MTAB_DIRECTORY
231               USING  P_PATH.
232     SORT MTAB_DIRECTORY.
233 *-- Write out list of report names/descriptions
234     LOOP AT MTAB_DIRECTORY.
235       WRITE:
236         / MTAB_DIRECTORY-NAME UNDER TEXT-H01,
237           MTAB_DIRECTORY-DESC UNDER TEXT-H03,
238           MTAB_DIRECTORY-SAVENAME.
239     ENDLOOP.
240 *-- Process user selections for reports to upload.
241   ENDIF.
242 ENDFORM.           " upload_reports
243 *---------------------------------------------------------------------*
244 *       FORM DOWNLOAD_REPORTS *
245 *---------------------------------------------------------------------*
246 *       From the user selections, get all programs that meet the      *
247 *       criteria, and save them in ftab_program_directory.            *
248 *       Also save the report to disk.             *
249 *---------------------------------------------------------------------*
250 FORM DOWNLOAD_REPORTS.
251   DATA:
252     LC_FULL_FILENAME LIKE RLGRAP-FILENAME.
253 *-- The table is put into an internal table because the program will
254 *-- abend if multiple transfers to a dataset occur within a SELECT/
255 *-- ENDSELCT (tested on 3.1H)
256   SELECT * FROM  TRDIR
257          INTO TABLE MTAB_PROGRAM_TRDIR
258          WHERE  NAME  IN S_NAME
259          AND    SUBC  IN S_SUBC
260          AND    CNAM  IN S_CNAM
261          AND    UNAM  IN S_UNAM
262          AND    CDAT  IN S_CDAT
263          AND    UDAT  IN S_UDAT.
264   LOOP AT MTAB_PROGRAM_TRDIR.
265 *-- Clear out text and source code tables
266     CLEAR:
267       MTAB_PROGRAM_FILE,
268       MTAB_PROGRAM_SOURCE,
269       MTAB_PROGRAM_TEXTS,
270       MTAB_PROGRAM_DOCUMENTATION.
271     REFRESH:
272       MTAB_PROGRAM_FILE,
273       MTAB_PROGRAM_SOURCE,
274       MTAB_PROGRAM_TEXTS,
275       MTAB_PROGRAM_DOCUMENTATION.
276 *-- Get the report 源代码
277     READ REPORT MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_SOURCE.
278 *-- Get the text for the report 文本元素S,文本符号I,清单标题T/H,程序Title=R
279     READ TEXTPOOL MTAB_PROGRAM_TRDIR-NAME INTO MTAB_PROGRAM_TEXTS.
280 *-- Get the documentation for the report  文档索引
281     CLEAR DOKIL.
282     SELECT * UP TO 1 ROWS FROM DOKIL
283            WHERE  ID          = 'RE'
284            AND    OBJECT      = MTAB_PROGRAM_TRDIR-NAME
285            AND    LANGU       = SY-LANGU
286            AND    TYP         = 'E'
287            ORDER BY VERSION DESCENDING.
288     ENDSELECT.
289 *-- Documentation exists for this object 文档
290     IF SY-SUBRC = 0.
291       CALL FUNCTION 'DOCU_READ'
292            EXPORTING
293                 ID      = DOKIL-ID
294                 LANGU   = DOKIL-LANGU
295                 OBJECT  = DOKIL-OBJECT
296                 TYP     = DOKIL-TYP
297                 VERSION = DOKIL-VERSION
298            IMPORTING
299                 HEAD    = MSTR_THEAD
300            TABLES
301                 LINE    = MTAB_PROGRAM_DOCUMENTATION
302            EXCEPTIONS
303                 OTHERS  = 1.
304     ENDIF.
305 *-- Put the report code and texts into a single file
306 *-- Put the identifier line in so that the start of the TRDIR line
307 *-- is marked
308     CONCATENATE MC_TRDIR_IDENTIFIER
309                 MTAB_PROGRAM_TRDIR-NAME
310            INTO MTAB_PROGRAM_FILE-LINE.
311     APPEND MTAB_PROGRAM_FILE.
312 *-- Add the TRDIR line
313     MTAB_PROGRAM_FILE-LINE = MTAB_PROGRAM_TRDIR.
314     APPEND MTAB_PROGRAM_FILE.
315 *-- Put the identifier line in so that the start of the report code
316 *-- is marked
317     CONCATENATE MC_REPORT_IDENTIFIER
318                 MTAB_PROGRAM_TRDIR-NAME
319       INTO MTAB_PROGRAM_FILE-LINE.
320     APPEND MTAB_PROGRAM_FILE.
321 *-- Add the report code 所有源代码行
322     LOOP AT MTAB_PROGRAM_SOURCE.
323       MTAB_PROGRAM_FILE = MTAB_PROGRAM_SOURCE.
324       APPEND MTAB_PROGRAM_FILE.
325     ENDLOOP.
326 *-- Put the identifier line in so that the start of the report text
327 *-- is marked
328     CONCATENATE MC_TEXT_IDENTIFIER
329                 MTAB_PROGRAM_TRDIR-NAME
330            INTO MTAB_PROGRAM_FILE-LINE.
331     APPEND MTAB_PROGRAM_FILE.
332 *-- Add the report texts  文本元素行
333     data:vl_length(10) type c.
334     LOOP AT MTAB_PROGRAM_TEXTS.
335 *{MODIFY BY ZHUMK
336 *      vl_length = MTAB_PROGRAM_TEXTS-LENGTH.
337       vl_length = STRLEN( MTAB_PROGRAM_TEXTS-ENTRY ).
338       Concatenate MTAB_PROGRAM_TEXTS-ID
339                   MTAB_PROGRAM_TEXTS-KEY
340                   MTAB_PROGRAM_TEXTS-ENTRY
341                   vl_length
342              into MTAB_PROGRAM_FILE-LINE.
343 *      MTAB_PROGRAM_FILE = MTAB_PROGRAM_TEXTS.
344 *}
345       APPEND MTAB_PROGRAM_FILE.
346     ENDLOOP.
347 *-- Put the identifier line in so that the start of the THEAD record
348 *-- is marked
349     CONCATENATE MC_THEAD_IDENTIFIER
350                 MTAB_PROGRAM_TRDIR-NAME
351       INTO MTAB_PROGRAM_FILE-LINE.
352     APPEND MTAB_PROGRAM_FILE.
353     MTAB_PROGRAM_FILE = MSTR_THEAD.
354     APPEND MTAB_PROGRAM_FILE.
355 *-- Put the identifier line in so that the start of the report
356 *-- documentation is marked
357     CONCATENATE MC_DOC_IDENTIFIER
358                 MTAB_PROGRAM_TRDIR-NAME
359       INTO MTAB_PROGRAM_FILE-LINE.
360     APPEND MTAB_PROGRAM_FILE.
361 *-- Add the report documentation
362     LOOP AT MTAB_PROGRAM_DOCUMENTATION.
363       MTAB_PROGRAM_FILE = MTAB_PROGRAM_DOCUMENTATION.
364       APPEND MTAB_PROGRAM_FILE.
365     ENDLOOP.
366 *-- Make the fully pathed filename that report will be saved to
367     CONCATENATE P_PATH
368                 MTAB_PROGRAM_TRDIR-NAME
369                 '.txt'
370       INTO LC_FULL_FILENAME.
371     PERFORM SAVE_TABLE_TO_FILE TABLES MTAB_PROGRAM_FILE
372            USING  LC_FULL_FILENAME.
373 *-- Write out message with Program Name/Description
374     READ TABLE MTAB_PROGRAM_TEXTS WITH KEY ID = 'R'.
375     IF SY-SUBRC = 0.
376       MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.
377       MTAB_DIRECTORY-DESC = MTAB_PROGRAM_TEXTS-ENTRY.
378       MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.
379       APPEND MTAB_DIRECTORY.
380       WRITE: / MTAB_PROGRAM_TRDIR-NAME,
381                MTAB_PROGRAM_TEXTS-ENTRY(65) COLOR COL_HEADING.
382     ELSE.
383       MTAB_DIRECTORY-NAME = MTAB_PROGRAM_TRDIR-NAME.
384       MTAB_DIRECTORY-DESC = 'No description available'.
385       MTAB_DIRECTORY-SAVENAME = LC_FULL_FILENAME.
386       APPEND MTAB_DIRECTORY.
387       WRITE: / MTAB_PROGRAM_TRDIR-NAME.
388     ENDIF.
389   ENDLOOP.
390 ENDFORM.           " BUILD_PROGRAM_DIRECTORY
391 *---------------------------------------------------------------------*
392 *       FORM SAVE_TABLE_TO_FILE                   *
393 *---------------------------------------------------------------------*
394 *       ..              *
395 *---------------------------------------------------------------------*
396 *  -->  FTAB_TABLE            *
397 *  -->  F_FILENAME            *
398 *---------------------------------------------------------------------*
399 FORM SAVE_TABLE_TO_FILE TABLES FTAB_TABLE
400     USING  F_FILENAME.
401   IF RB_DOS = 'X'.                  " Save file to presentation server
402     CALL FUNCTION 'WS_DOWNLOAD'
403          EXPORTING
404               FILENAME = F_FILENAME
405               FILETYPE = 'ASC'
406          TABLES
407               DATA_TAB = FTAB_TABLE
408          EXCEPTIONS
409               OTHERS   = 4.
410     IF SY-SUBRC NE 0.
411       WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,
412                F_FILENAME COLOR COL_NEGATIVE.
413     ENDIF.
414   ELSE.            " Save file to application server
415     OPEN DATASET F_FILENAME FOR OUTPUT IN TEXT MODE ENCODING UTF-8.
416     IF SY-SUBRC = 0.
417       LOOP AT FTAB_TABLE.
418         TRANSFER FTAB_TABLE TO F_FILENAME.
419         IF SY-SUBRC NE 0.
420           WRITE: / 'Error writing record to file;' COLOR COL_NEGATIVE,
421                    F_FILENAME COLOR COL_NEGATIVE.
422         ENDIF.
423       ENDLOOP.
424     ELSE.
425       WRITE: / 'Error opening dataset' COLOR COL_NEGATIVE,
426                F_FILENAME COLOR COL_NEGATIVE.
427     ENDIF.
428   ENDIF.           " End RB_DOS
429 ENDFORM.           " SAVE_PROGRAM
430 *---------------------------------------------------------------------*
431 *       FORM READ_REPORT_FROM_DISK                *
432 *---------------------------------------------------------------------*
433 *       Read report into internal table.  Can read from local or      *
434 *       remote computer       *
435 *---------------------------------------------------------------------*
436 FORM READ_REPORT_FROM_DISK TABLES FTAB_TABLE
437        USING  F_FILENAME.
438   DATA:
439      LC_MESSAGE(128) TYPE C.
440   CLEAR   FTAB_TABLE.
441   REFRESH FTAB_TABLE.
442   IF RB_DOS = 'X'.
443     TRANSLATE F_FILENAME USING '/\'.   " correct slash for Dos PC file
444     CALL FUNCTION 'WS_UPLOAD'
445          EXPORTING
446               FILENAME            = F_FILENAME
447               FILETYPE            = 'ASC'
448          TABLES
449               DATA_TAB            = FTAB_TABLE
450          EXCEPTIONS
451               CONVERSION_ERROR    = 1
452               FILE_OPEN_ERROR     = 2
453               FILE_READ_ERROR     = 3
454               INVALID_TABLE_WIDTH = 4
455               INVALID_TYPE        = 5
456               NO_BATCH            = 6
457               UNKNOWN_ERROR       = 7
458               OTHERS              = 8.
459     IF SY-SUBRC >< 0.
460       WRITE: / 'Error reading file from local PC' COLOR COL_NEGATIVE.
461     ENDIF.
462   ELSEIF RB_UNIX = 'X'.
463     TRANSLATE F_FILENAME USING '\/'.   " correct slash for unix
464     OPEN DATASET F_FILENAME FOR INPUT MESSAGE LC_MESSAGE IN TEXT MODE ENCODING UTF-8.
465     IF SY-SUBRC = 0.
466       DO.
467         READ DATASET F_FILENAME INTO FTAB_TABLE.
468         IF SY-SUBRC = 0.
469           APPEND FTAB_TABLE.
470         ELSE.
471           EXIT.
472         ENDIF.
473       ENDDO.
474       CLOSE DATASET F_FILENAME.
475     ELSE.
476       WRITE: / 'Error reading file from remote computer'
477   COLOR COL_NEGATIVE,
478              / LC_MESSAGE,
479              / F_FILENAME.
480       SY-SUBRC = 4.
481     ENDIF.
482   ENDIF.
483 
484 
485 ENDFORM.           " READ_REPORT_FROM_DISK
486 *---------------------------------------------------------------------*
487 *       FORM SPLIT_INCOMING_FILE                  *
488 *---------------------------------------------------------------------*
489 *       ..              *
490 *---------------------------------------------------------------------*
491 *  -->  FTAB_PROGRAM_FILE     *
492 *  -->  FTAB_PROGRAM_SOURCE   *
493 *  -->  ` *
494 *  -->  FTAB_PROGRAM_TEXTS    *
495 *---------------------------------------------------------------------*
496 FORM SPLIT_INCOMING_FILE TABLES FTAB_PROGRAM_FILE
497                  STRUCTURE MTAB_PROGRAM_FILE
498             FTAB_PROGRAM_SOURCE
499                  STRUCTURE MTAB_PROGRAM_SOURCE
500             FTAB_PROGRAM_TEXTS
501                  STRUCTURE MTAB_PROGRAM_TEXTS
502             FTAB_PROGRAM_DOCUMENTATION
503                 STRUCTURE MTAB_PROGRAM_DOCUMENTATION
504    CHANGING FSTR_TRDIR
505             FSTR_THEAD.
506   DATA:
507     LC_DATATYPE(4) TYPE C,             " Type of data, REPO, TEXP, RDIR
508     LC_PROGRAM_FILE LIKE MTAB_PROGRAM_FILE.
509   LOOP AT FTAB_PROGRAM_FILE.
510     LC_PROGRAM_FILE = FTAB_PROGRAM_FILE.
511     CASE LC_PROGRAM_FILE(9).
512       WHEN MC_TRDIR_IDENTIFIER.
513         LC_DATATYPE = MC_TRDIR_SHORT.
514       WHEN MC_REPORT_IDENTIFIER.
515         LC_DATATYPE = MC_REPORT_SHORT.
516       WHEN MC_TEXT_IDENTIFIER.
517         LC_DATATYPE = MC_TEXT_SHORT.
518       WHEN MC_DOC_IDENTIFIER.
519         LC_DATATYPE = MC_DOC_SHORT.
520       WHEN MC_THEAD_IDENTIFIER.
521         LC_DATATYPE = MC_THEAD_SHORT.
522       WHEN OTHERS. " Actual contents of report, trdir, or text
523         CASE LC_DATATYPE.
524           WHEN MC_TRDIR_SHORT.
525             FSTR_TRDIR = FTAB_PROGRAM_FILE.
526           WHEN MC_REPORT_SHORT.
527             FTAB_PROGRAM_SOURCE = FTAB_PROGRAM_FILE.
528             APPEND FTAB_PROGRAM_SOURCE.
529           WHEN MC_TEXT_SHORT.
530 *{modify by zhumk
531 *            FTAB_PROGRAM_TEXTS = FTAB_PROGRAM_FILE.
532             data:vl_length type i,
533                  vl_pos    type i.
534 
535             clear  FTAB_PROGRAM_TEXTS.
536             vl_length = STRLEN( FTAB_PROGRAM_FILE-line ).
537             FTAB_PROGRAM_TEXTS-ID     = FTAB_PROGRAM_FILE+0(1).
538 *           length
539             vl_pos = vl_length - 9.
540             FTAB_PROGRAM_TEXTS-LENGTH = FTAB_PROGRAM_FILE+vl_pos(9).
541 *           key
542             vl_pos = vl_length - 9 - FTAB_PROGRAM_TEXTS-LENGTH - 1.
543             if vl_pos > 0.
544               FTAB_PROGRAM_TEXTS-KEY    = FTAB_PROGRAM_FILE+1(vl_pos).
545             endif.
546 *           entry
547             vl_pos = vl_length - 9 - FTAB_PROGRAM_TEXTS-LENGTH.
548             FTAB_PROGRAM_TEXTS-ENTRY  = FTAB_PROGRAM_FILE+vl_pos(FTAB_PROGRAM_TEXTS-LENGTH).
549 *           FTAB_PROGRAM_TEXTS = FTAB_PROGRAM_FILE.
550 *}
551             APPEND FTAB_PROGRAM_TEXTS.
552           WHEN MC_THEAD_SHORT.
553             FSTR_THEAD = FTAB_PROGRAM_FILE.
554           WHEN MC_DOC_SHORT.
555             FTAB_PROGRAM_DOCUMENTATION = FTAB_PROGRAM_FILE.
556             APPEND FTAB_PROGRAM_DOCUMENTATION.
557         ENDCASE.
558     ENDCASE.
559   ENDLOOP.
560 ENDFORM.           " SPLIT_INCOMING_FILE
561 *---------------------------------------------------------------------*
562 *       FORM INSERT_NEW_REPORT*
563 *---------------------------------------------------------------------*
564 *       ..              *
565 *---------------------------------------------------------------------*
566 *  -->  FTAB_PROGRAM_SOURCE   *
567 *  -->  FTAB_PROGRAM_TEXTS    *
568 *  -->  F_TRDIR               *
569 *---------------------------------------------------------------------*
570 FORM INSERT_NEW_REPORT TABLES FTAB_PROGRAM_SOURCE
571               STRUCTURE MTAB_PROGRAM_SOURCE
572           FTAB_PROGRAM_TEXTS
573                STRUCTURE MTAB_PROGRAM_TEXTS
574           FTAB_PROGRAM_DOCUMENTATION
575                STRUCTURE MTAB_PROGRAM_DOCUMENTATION
576    USING  FSTR_TRDIR LIKE TRDIR
577           FSTR_THEAD LIKE MSTR_THEAD.
578   DATA:
579     LC_OBJ_NAME LIKE E071-OBJ_NAME,
580     LC_LINE2(40)     TYPE C,
581     LC_ANSWER(1)     TYPE C.
582 *-- read trdir to see if the report already exists, if it does, prompt
583 *-- user to overwrite or abort.
584   SELECT SINGLE * FROM TRDIR WHERE NAME = FSTR_TRDIR-NAME.
585   IF SY-SUBRC = 0" Already exists
586     CONCATENATE 'want to overwrite report'
587                 FSTR_TRDIR-NAME
588       INTO LC_LINE2 SEPARATED BY SPACE.
589     CONCATENATE LC_LINE2
590                 '?'
591       INTO LC_LINE2.
592     CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
593          EXPORTING
594               DEFAULTOPTION  = 'N'
595               TEXTLINE1   = 'The selected report already exists, do you'
596               TEXTLINE2      = LC_LINE2
597               TITEL          = 'Report already exists'
598               CANCEL_DISPLAY = SPACE
599          IMPORTING
600               ANSWER         = LC_ANSWER
601          EXCEPTIONS
602               OTHERS         = 1.
603   ELSE.
604     LC_ANSWER = 'J'.
605   ENDIF.
606   IF LC_ANSWER = 'J'.
607 *-- Create the TADIR entry.  (TRDIR entry created by INSERT REPORT)
608     LC_OBJ_NAME = TRDIR-NAME.
609     CALL FUNCTION 'TR_TADIR_POPUP_ENTRY_E071'
610          EXPORTING
611               WI_E071_PGMID     = 'R3TR'
612               WI_E071_OBJECT    = 'PROG'
613               WI_E071_OBJ_NAME  = LC_OBJ_NAME
614               WI_TADIR_DEVCLASS = '$TMP'
615          EXCEPTIONS
616               EXIT              = 3
617               OTHERS            = 4.
618     IF SY-SUBRC = 0.
619 *-- Create Report
620       INSERT REPORT FSTR_TRDIR-NAME FROM FTAB_PROGRAM_SOURCE.
621 *-- Create Texts
622       INSERT TEXTPOOL FSTR_TRDIR-NAME FROM FTAB_PROGRAM_TEXTS
623              LANGUAGE SY-LANGU.
624 *-- Save Documentation
625       CALL FUNCTION 'DOCU_UPDATE'
626            EXPORTING
627                 HEAD    = FSTR_THEAD
628                 STATE   = 'A'
629                 TYP     = 'E'
630                 VERSION = '1'
631            TABLES
632                 LINE    = FTAB_PROGRAM_DOCUMENTATION
633            EXCEPTIONS
634                 OTHERS  = 1.
635     ELSE.
636       WRITE: / 'Error updating the TADIR entry' COLOR COL_NEGATIVE,
637                'Program' COLOR COL_NEGATIVE INTENSIFIED OFF,
638                FSTR_TRDIR-NAME, 'was not loaded into SAP.'
639                   COLOR COL_NEGATIVE INTENSIFIED OFF.
640     ENDIF.
641   ELSE.
642     WRITE: / FSTR_TRDIR-NAME COLOR COL_NEGATIVE,
643              'was not uploaded into SAP.  Action cancelled by user'
644                  COLOR COL_NEGATIVE INTENSIFIED OFF.
645   ENDIF.
646 ENDFORM.           " INSERT_NEW_REPORT
647 *---------------------------------------------------------------------*
648 *       FORM GET_NAME         *
649 *---------------------------------------------------------------------*
650 *       ..              *
651 *---------------------------------------------------------------------*
652 *  -->  VALUE(F_FIELD)        *
653 *  -->  F_NAME                *
654 *---------------------------------------------------------------------*
655 FORM GET_NAME USING VALUE(F_FIELD)
656            CHANGING F_NAME.
657   DATA: LTAB_FIELDS LIKE DYNPREAD OCCURS 0 WITH HEADER LINE,
658         LC_PROG LIKE D020S-PROG,
659         LC_DNUM LIKE D020S-DNUM.
660   TRANSLATE F_FIELD TO UPPER CASE.
661   refresh ltab_fields.
662   LTAB_FIELDS-FIELDNAME = F_FIELD.
663   append ltab_fields.
664   LC_PROG =  SY-REPID .
665   LC_DNUM =  SY-DYNNR .
666   CALL FUNCTION 'DYNP_VALUES_READ'
667        EXPORTING
668             DYNAME     = LC_PROG
669             DYNUMB     = LC_DNUM
670        TABLES
671             dynpfields = ltab_fields
672        EXCEPTIONS
673             OTHERS     = 01.
674   read table ltab_fields index 1.
675   IF SY-SUBRC EQ 0.
676     F_NAME = LTAB_FIELDS-FIELDVALUE.
677     refresh ltab_fields.
678   ENDIF.
679   CALL FUNCTION 'F4_USER'
680        EXPORTING
681             OBJECT = F_NAME
682        IMPORTING
683             RESULT = F_NAME.
684 ENDFORM.           " GET_NAME
685 
686 *Program Texts
687 *DIR             File Download Options (File Selection)
688 *FIL             File Options
689 *FNA             Enter filename below (under File Options)
690 *H01             Prog Name
691 *H03             Program Description
692 *SNG             Upload a single file
693 *UDL             Upload to SAP/Download from SAP
694 *UPL             File Upload Options
695 *R               Backup/Restore program source code with texts
696 *P_PATH          Path to save programs to
697 *RB_DOS          Files on local computer
698 *RB_DOWN         Download Programs
699 *RB_FILE         Upload a single file
700 *RB_LIST         Select program(s) from a list
701 *RB_UNIX         Files on remote computer
702 *RB_UP           Upload Programs to SAP
703 *S_CDAT          Date Created
704 *S_CNAM          Created by UserID
705 *S_NAME          Program Name
706 *S_SUBC          Program Type
707 *S_UDAT          Date Changed
708 *S_UNAM          Last Changed by UserID
posted on 2006-01-10 09:17  zhumk  阅读(2490)  评论(1编辑  收藏  举报