ABAP 소스코드 다운로드 프로그램입니다
*=============================================================
* Program: ZZTFD325 
* Author: Tim Dempsey, PBS Consulting Inc. (DEMPSEYT@EROLS.COM) 
* Date: November 1997 
* Application: Basis 
* Sub-Application: Download ABAP programs * 
*---------------------------------------------------------------- 
REPORT (SY-REPID) NO STANDARD PAGE HEADING LINE-SIZE 132 LINE-COUNT 55. 
TABLES:TRDIR.
SELECT-OPTIONS: PGMNAME FOR TRDIR-NAME.
CONSTANTS: LINESIZE value 2048. 
PARAMETERS: HEADING AS CHECKBOX DEFAULT 'X', 
            FGROUP AS CHECKBOX, 
            USER LIKE TRDIR-CNAM DEFAULT '*', 
            DOWNLOAD AS CHECKBOX default 'X', 
            pa_TEXTP AS CHECKBOX, 
            DOWNDIR(80) DEFAULT 'C:temp', 
            chg_date(8) default '20000101', 
            chg_time(6) default '000000'. 
* , 
* PGMNAME like TRDIR-NAME. 
DATA: W_TEXT(128), W_FILENAME(128), W_PROGRAM_LOW(8), W_PROGRAM_HIGH(8).
DATA: * _texttab type textpool, 
texttab type standard table of textpool initial size 0 with header line, 
* BEGIN OF TEXTTAB OCCURS 0, 
* ID(1), 
* KEY(8), 
* ENTRY(70), 
* END OF TEXTTAB, 
BEGIN OF ABAPTAB OCCURS 500, 
* LINE(72), 
    line(LINESIZE), 
END OF ABAPTAB, 
BEGIN OF TRTAB OCCURS 0, 
    NAME LIKE TRDIR-NAME, 
    ENTRY LIKE TEXTTAB-ENTRY, 
    CDAT LIKE TRDIR-CDAT, 
    UDAT LIKE TRDIR-UDAT, 
END OF TRTAB, 
BEGIN OF TRFTAB OCCURS 0, 
    NAME LIKE TRDIR-NAME, 
    ENTRY LIKE TEXTTAB-ENTRY, 
    CDAT LIKE TRDIR-CDAT, 
    UDAT LIKE TRDIR-UDAT, 
END OF TRFTAB. 
START-OF-SELECTION.
 
  IF FGROUP = ' '. 
    PERFORM LOAD_TRDIR_PROGRAM. 
    PERFORM PROCESS_PROGRAM. 
  ELSE. 
    PERFORM LOAD_TRDIR_FGROUP. 
    PERFORM PROCESS_FGROUP. 
  ENDIF.
 
*&---------------------------------------------------------------------* 
*& form load_trdir_program. 
*&---------------------------------------------------------------------* 
FORM LOAD_TRDIR_PROGRAM. 
  SELECT * FROM TRDIR 
         WHERE NAME IN PGMNAME 
           and sdate >= chg_date 
           and stime >= chg_time. 
    IF USER <> '*'. 
      CHECK TRDIR-UNAM = USER OR TRDIR-CNAM = USER.  
    ENDIF.
    CLEAR: TEXTTAB. 
    REFRESH: TEXTTAB. 
    CLEAR: TRTAB. 
    READ TEXTPOOL TRDIR-NAME INTO TEXTTAB LANGUAGE 'E'. 
    IF SY-SUBRC = 0. 
      READ TABLE TEXTTAB WITH KEY 'R'. 
      MOVE TEXTTAB-ENTRY TO TRTAB-ENTRY. 
    ENDIF. 
    MOVE TRDIR-NAME TO TRTAB-NAME. 
    MOVE TRDIR-CDAT TO TRTAB-CDAT. 
    MOVE TRDIR-UDAT TO TRTAB-UDAT. 
APPEND TRTAB.
CLEAR: TEXTTAB.
ENDSELECT.
ENDFORM. " load_trdir_program 
*&---------------------------------------------------------------------* 
*& Form load_trdir_fgroup 
*&---------------------------------------------------------------------* 
FORM LOAD_TRDIR_FGROUP. 
  SELECT * FROM TRDIR 
        WHERE NAME BETWEEN 'SAPLYYYY' 
          AND 'SAPLZZZZ'. 
CHECK TRDIR-UNAM = USER OR TRDIR-CNAM = USER.
    CLEAR: TEXTTAB. 
    CLEAR: TRTAB. 
    REFRESH: TEXTTAB. 
    READ TEXTPOOL TRDIR-NAME INTO TEXTTAB LANGUAGE 'E'. 
    IF SY-SUBRC = 0. 
      READ TABLE TEXTTAB WITH KEY 'R'. 
      MOVE TEXTTAB-ENTRY TO TRTAB-ENTRY. 
    ENDIF. 
    MOVE TRDIR-NAME TO TRTAB-NAME. 
    MOVE TRDIR-CDAT TO TRTAB-CDAT. 
    MOVE TRDIR-UDAT TO TRTAB-UDAT. 
    APPEND TRTAB. 
CLEAR: TEXTTAB.
ENDSELECT.
  LOOP AT TRTAB. 
    MOVE-CORRESPONDING TRTAB TO TRFTAB. 
APPEND TRFTAB.
    MOVE TRTAB-NAME+3(5) TO W_PROGRAM_LOW. 
    MOVE '%' TO W_PROGRAM_LOW+5(1). 
    MOVE TRTAB-NAME+3(5) TO W_PROGRAM_HIGH. 
    MOVE 'MMMMMMMM' TO W_PROGRAM_HIGH.   
    SELECT * FROM TRDIR WHERE NAME LIKE W_PROGRAM_LOW. 
*where name between w_program_low and w_program_high. 
      CHECK TRDIR-NAME+5(1) <> '$'. 
      CHECK TRDIR-NAME(5) = TRTAB-NAME+3(5). 
      READ TEXTPOOL TRDIR-NAME INTO TEXTTAB LANGUAGE 'E'. 
      READ TABLE TEXTTAB WITH KEY 'R'.
   
      MOVE TEXTTAB-ENTRY TO TRFTAB-ENTRY. 
      MOVE TRDIR-NAME TO TRFTAB-NAME. 
      MOVE TRDIR-CDAT TO TRFTAB-CDAT. 
      MOVE TRDIR-UDAT TO TRFTAB-UDAT. 
APPEND TRFTAB.
    ENDSELECT. 
  ENDLOOP. 
ENDFORM. " load_trdir_fgroup. 
*---------------------------------------------------------------------* 
* FORM PROCESS_PROGRAM * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
FORM PROCESS_PROGRAM. 
LOOP AT TRTAB. 
  READ REPORT TRTAB-NAME INTO ABAPTAB. 
  IF DOWNLOAD = 'X'. 
    PERFORM DOWNLOAD_PROGRAMS USING TRTAB-NAME. ELSE. 
    PERFORM LIST_PROGRAMS USING TRTAB-NAME. 
  ENDIF. 
  IF pa_TEXTP = 'X'. 
    READ TEXTPOOL TRTAB-NAME INTO TEXTTAB LANGUAGE 'E'. 
    IF SY-SUBRC = 0 AND DOWNLOAD = 'X'. 
      PERFORM DOWNLOAD_TEXTPOOL USING TRTAB-NAME. 
    ENDIF. 
    LOOP AT TEXTTAB. 
      WRITE:/ TEXTTAB-ID, TEXTTAB-KEY, TEXTTAB-ENTRY. 
    ENDLOOP. 
  ENDIF. 
ENDLOOP. 
ENDFORM. 
*---------------------------------------------------------------------* 
* FORM PROCESS_fgroup * 
*---------------------------------------------------------------------* 
* ........ * 
*---------------------------------------------------------------------* 
FORM PROCESS_FGROUP. 
  LOOP AT TRFTAB. 
  READ REPORT TRFTAB-NAME INTO ABAPTAB. 
    IF DOWNLOAD = 'X'. 
      PERFORM DOWNLOAD_PROGRAMS USING TRFTAB-NAME.   
    ELSE. 
      PERFORM LIST_PROGRAMS USING TRFTAB-NAME . 
    ENDIF. 
    IF pa_TEXTP = 'X'. 
      READ TEXTPOOL TRFTAB-NAME INTO TEXTTAB LANGUAGE 'E'. 
      IF SY-SUBRC = 0 AND DOWNLOAD = 'X'. 
        PERFORM DOWNLOAD_TEXTPOOL USING TRFTAB-NAME. 
        LOOP AT TEXTTAB. 
          WRITE:/ TEXTTAB-ID, TEXTTAB-KEY, TEXTTAB-ENTRY. 
        ENDLOOP. 
      ENDIF. 
    ENDIF. 
  ENDLOOP. 
ENDFORM. *&------------------------------------------------------------------* 
*& Form DOWNLOAD_PROGRAMS 
*&------------------------------------------------------------------*
FORM DOWNLOAD_PROGRAMS USING NAME.
 
W_TEXT = 'Downloading'. 
W_TEXT+15(8) = NAME. 
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' 
     EXPORTING TEXT = W_TEXT 
     EXCEPTIONS OTHERS = 1. 
clear w_filename. 
MOVE DOWNDIR TO W_FILENAME(80). 
* MOVE NAME TO W_FILENAME+20(8). 
* MOVE '.txt' TO W_FILENAME+28(4). 
* CONDENSE W_FILENAME NO-GAPS. 
concatenate w_filename name '.txt' into w_filename. 
condense w_filename no-gaps. 
CALL FUNCTION 'WS_DOWNLOAD'
     EXPORTING FILENAME = W_FILENAME  
     FILETYPE = 'ASC' TABLES DATA_TAB = ABAPTAB 
     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 
                OTHERS = 8. 
ENDFORM. 
" DOWNLOAD_PROGRAMS 
*&------------------------------------------------------------------* 
*& Form LIST_PROGRAMS 
*&------------------------------------------------------------------* 
FORM LIST_PROGRAMS USING NAME. 
LOOP AT ABAPTAB. 
  WRITE:/ NAME, ABAPTAB-LINE. 
ENDLOOP. 
ENDFORM. " LIST_PROGRAMS 
*&---------------------------------------------------------------------* 
*& Form DOWNLOAD_TEXTPOOL 
*&---------------------------------------------------------------------* 
FORM DOWNLOAD_TEXTPOOL USING NAME. 
W_TEXT = 'Textpool...'. W_TEXT+15(8) = NAME.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' 
EXPORTING TEXT = W_TEXT 
EXCEPTIONS OTHERS = 1. 
MOVE DOWNDIR TO W_FILENAME(80). 
MOVE TRTAB-NAME TO W_FILENAME+20(8). 
MOVE '.tpl' TO W_FILENAME+28(4). 
CONDENSE W_FILENAME NO-GAPS. 
CALL FUNCTION 'WS_DOWNLOAD' 
     EXPORTING FILENAME = W_FILENAME 
     FILETYPE = 'ASC' 
     TABLES DATA_TAB = TEXTTAB 
     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 
                OTHERS = 8. 
ENDFORM. " DOWNLOAD_TEXTPOOL 
TOP-OF-PAGE. 
IF HEADING = 'X'. 
* Place your heading here: 
* call function 'Z_WRITE_HEADER_FOOTER' 
* exporting * type = 'H' 
* exceptions * others = 1. 
* 
* skip 1.
ENDIF. 
댓글 16
- 
			로젠2011.12.20 23:43 
- 
			알음알음2012.01.07 01:29 감사합니다~~ㅎ 
- 
			냐옹이당2012.01.11 04:16 감사합니다^^ 
- 
			플래툰K2012.01.11 19:42 감사합니다^^ 
- 
			정광섭2012.01.11 21:57 감사합니다. 유용하게 쓸께요. 
- 
			조쿠로2012.02.01 23:12 감사합니다. 
- 
			토도리2012.02.03 02:48 ㄳ요 
- 
			11jay2012.02.16 19:05 감사합니다~잘사용하겠습니다! 
- 
			쯔라이2012.05.14 18:15 좋은자료 잘보겠습니다 
- 
			개남2012.05.31 04:29 감사합니다~~~~ 
- 
			우유빵2013.02.06 09:43 좋은 자료 감사합니다~ 
- 
			깜깜이2013.02.23 03:52 감사합니다. 
- 
			이수현2013.08.01 20:10 좋은 자료 감사합니다. 
- 
			아바보보2013.08.14 17:00 감사합니다 잘 쓸께요! 
- 
			달려라2013.08.16 22:57 우와 정말 감사합니다!!!!!!!!!!!!!!!!!! 
- 
			jetainm2013.11.21 23:19 감사합니다 

 
				 
 
감사합니다 ^^