2014年8月4日 星期一

ABAP/4 : How to backup (or download) SAP Z report program?

參考 : http://scn.sap.com/thread/1258318

備份程式對程式設計師來說是一個相當重要的工作,雖然 SAP 本身已有 Version Management,但異地備份的工作仍不能省略,至少對自己重要的程式身邊留一份比較安全。
主要的語法 READ REPORT 'ZXXXXX' INTO [INTERNAL TABLE].

透過上面語法把程式寫入 Internal Table 後,再使用 GUI_DOWNLOAD 下載到本機電腦
REPORT  Z_EX_DOWNLOAD_PROGRAM.

TYPES: ABAPLINE(255) TYPE C.
DATA: IT_REPSRC TYPE STANDARD TABLE OF ABAPLINE.
DATA: FILENAME TYPE STRING.

PARAMETERS : P_PROG(60) TYPE C.

READ REPORT P_PROG INTO IT_REPSRC.

CONCATENATE 'C:\' P_PROG '.TXT' INTO FILENAME.

  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      FILENAME                = FILENAME
    TABLES
      DATA_TAB                = IT_REPSRC
    EXCEPTIONS
      OTHERS                  = 22.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.

另外也可以透過 package name 下載該 package 下的所有 Z report (follow program from : http://scn.sap.com/thread/1258318)

REPORT  ZDOWN_PACKG                             
* Author: Pulak Mandal
***********************************************************************
*                           Table declaration                         *
***********************************************************************
TABLES: TADIR.
***********************************************************************
*                           Data declaration                          *
***********************************************************************
TYPES: ABAPLINE(255) TYPE C.
TYPES: BEGIN OF TY_REPOSIT,
       PGMID    TYPE TADIR-PGMID,
       OBJECT   TYPE TADIR-OBJECT,
       OBJ_NAME TYPE TADIR-OBJ_NAME,
       DEVCLASS TYPE TADIR-DEVCLASS,
      END OF TY_REPOSIT.
DATA: IT_REPOSIT TYPE STANDARD TABLE OF TY_REPOSIT,
      WA_REPOSIT TYPE TY_REPOSIT.
DATA: IT_REPSRC TYPE STANDARD TABLE OF ABAPLINE,
      WA_REPSRC TYPE ABAPLINE.
DATA: PROG(60)    TYPE C,
      MC_FILENAME TYPE RLGRAP-FILENAME,
      FILENAME    TYPE STRING.
***********************************************************************
*                           Selection Screen                          *
***********************************************************************
PARAMETERS: P_DEV TYPE TADIR-DEVCLASS.                    "Package Name
*****Program Logic
SELECT PGMID
       OBJECT
       OBJ_NAME
       DEVCLASS
  FROM TADIR
  INTO TABLE IT_REPOSIT
  WHERE PGMID    = 'R3TR' AND
        OBJECT   = 'PROG' AND
        DEVCLASS = P_DEV.
IF SY-SUBRC NE 0.
  MESSAGE 'No programs available in the given package' TYPE 'E'.
  EXIT.
ENDIF.
* Get the program names and download to the given path
LOOP AT IT_REPOSIT INTO WA_REPOSIT.
  PROG = WA_REPOSIT-OBJ_NAME.
  clear it_repsrc.
  READ REPORT PROG INTO IT_REPSRC.
  CONCATENATE 'C:\Documents and Settings\Administrator\Desktop\My ABAP Programs\Report' PROG '.txt'
        INTO MC_FILENAME.
  FILENAME = MC_FILENAME.
*****Function module for download files into local system
  CALL FUNCTION 'GUI_DOWNLOAD'
    EXPORTING
      FILENAME                = FILENAME
    TABLES
      DATA_TAB                = IT_REPSRC
    EXCEPTIONS
      FILE_WRITE_ERROR        = 1
      NO_BATCH                = 2
      GUI_REFUSE_FILETRANSFER = 3
      INVALID_TYPE            = 4
      NO_AUTHORITY            = 5
      UNKNOWN_ERROR           = 6
      HEADER_NOT_ALLOWED      = 7
      SEPARATOR_NOT_ALLOWED   = 8
      FILESIZE_NOT_ALLOWED    = 9
      HEADER_TOO_LONG         = 10
      DP_ERROR_CREATE         = 11
      DP_ERROR_SEND           = 12
      DP_ERROR_WRITE          = 13
      UNKNOWN_DP_ERROR        = 14
      ACCESS_DENIED           = 15
      DP_OUT_OF_MEMORY        = 16
      DISK_FULL               = 17
      DP_TIMEOUT              = 18
      FILE_NOT_FOUND          = 19
      DATAPROVIDER_EXCEPTION  = 20
      CONTROL_FLUSH_ERROR     = 21
      OTHERS                  = 22.
  IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.
  CLEAR PROG.
  CLEAR WA_REPSRC.
ENDLOOP.
*****After download all the programs to intimate user.
MESSAGE 'Check your folder for the Programs downloaded' TYPE 'S'.

不過以上方法只能備份 Z_REPORT 的內容,無法保存相對應的 SCREEN / STATUS / TITLE

這部份則能參考 http://scn.sap.com/message/589195#589195 中所提到的 http://www.dalestech.com/ 提供的 Code http://www.dalestech.com/products/massdownload.htm

透過他們程式則可以針對所有 Program 引用的 Object 全都下載下來

沒有留言:

張貼留言

How to install & specified python version or distreibtuion package version in google colab

在買了 RTX 3080 要來 挖礦...  嗯~是跑機器學習後,結果發現了 GOOGLE COLAB,其實之前在「GAN 對抗式生成網路」一書就有看到,但資訊人就是什麼都想自己安裝,在本機用 Anaconda + pyCharm 弄了 GPU 環境,結果有天從新竹回家發現家裡沒...