메뉴 건너뛰기

SAP 한국 커뮤니티



ABAP 소스코드 다운로드 프로그램

라띠 2011.10.05 10:34 조회 수 : 20065

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.

 

번호 제목 글쓴이 날짜 조회 수
1244 디버깅!!! [51] file 플래툰K 2012.01.18 17070
1243 <img src=d.gif>SAP ecc6.0에서의 변형을 통한 동적변수만들기[추천:e-abap] [8] file 양키 2010.06.23 17015
1242 as02 자산마스터에 Long Text 를 저장하고 읽는 방법입니다. [4] file 칸스 2010.09.16 16986
1241 T-code로 User-Exit 조회하는 프로그램 [33] file 양키 2010.07.08 16984
1240 ABAP Debug Tip & Tricks [44] file 희주2 2013.08.13 16958
1239 Authorisation creating and modifying simple profile [31] file ksj 2007.01.17 16925
1238 ALE QuickStart for Distributed HR file magenta 2007.12.28 16841
1237 <img src=c.gif>SAP screen에 그림파일 조회하기(7)[추천:보나][추천:유리선율] [29] file 춘풍 2011.03.11 16831
1236 스마트 폼 [13] file 청화산 2011.03.28 16827
1235 SAP ICON 이미지 Gif 파일 [6] file 양키 2012.12.04 16772
1234 <img src=c.gif>대한민국우편번호 업로드하는 프로그램입니다. (현행 우편번호도 같이 묶었습니다)[추천:e-abap][추천:無念군] [6] file 칸스 2010.10.14 16749
1233 각 모듈별 테이블 목록 [12] file 재윤아빠 2010.12.05 16698
1232 Excel DOI에 관한 소스 입니다. ^^ [14] file Giant 2012.01.18 16697
1231 SAP Mobile 개발을 위한 java(jar) tool [13] file 양키 2011.02.07 16626
1230 ABAP [Dictionary] Other Database Object [6] 문바이 2011.10.22 16624
1229 legacy와 interface 하는 fuction예제 [3] SCPPP 2011.12.15 16542
1228 인포타입 생성방법입니다. [8] file 녹스노바 2010.07.22 16537
1227 Interactive Programming 예제 [5] file 양키 2010.12.22 16376
1226 class_builder [20] file sapjoy 2007.01.29 16370
1225 <img src=c.gif>LSMW를 이용한 vendor master 마이그레이션[추천:e-abap][추천:유리선율] [26] file 양키 2010.06.28 16361