개발패키지 Request No.로 다운로드 방법

1. 필요성 : 개발패키지 전체를 다른 시스템으로 이관할 때 유용함

2. 방법

 – 모든 개발패키지의 오브젝트를 하나의 Request No.로 만든다.

 – CBO 프로그램을 이용하여 해당 Request No.를 Local로 다운로드 받는다.

 – 유사한 CBO 프로그램을 이용하여 Target System에 업로드한다.

1. 개발패키지의 전체 오브젝트 다운로드 방법

2. 특정 Request No. 로컬 파일로 다운로드 방법

[#M_소스코드|접기|

*&———————————————————————*

*& Report  ZMC_COFILES

*&

*&———————————————————————*

*&

*&

*&———————————————————————*

REPORT  zmc_cofiles.

CONSTANTS:c_data_files_path  TYPE string   VALUE ‘data’,

          c_co_files_path    TYPE string   VALUE ‘cofiles’,

          c_request_released TYPE c        VALUE ‘R’,

          c_co_file_prefix   TYPE c        VALUE ‘K’,

          c_data_file_prefix TYPE c        VALUE ‘R’,

          c_execute_command  TYPE sy-ucomm VALUE ‘ONLI’,

          c_dot              TYPE c        VALUE ‘.’,

          c_slash_win        TYPE c        VALUE ‘\’,

          c_slash_lin        TYPE c        VALUE ‘/’.

DATA:gv_dir_trans TYPE char255.

PARAMETERS:p_ot TYPE e070-trkorr DEFAULT ‘XXXKYYYYYY’,

           p_out TYPE string DEFAULT ‘C:\temp’ LOWER CASE.

INITIALIZATION.

  CALL ‘C_SAPGPARAM’ ID ‘NAME’ FIELD ‘DIR_TRANS’ ID ‘VALUE’ FIELD gv_dir_trans.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ot.

  CALL FUNCTION ‘TR_F4_REQUESTS’

    EXPORTING

      iv_trstatus         = c_request_released

    IMPORTING

      ev_selected_request = p_ot.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_out.

  DATA:lv_selected_folder TYPE string.

  CALL METHOD cl_gui_frontend_services=>directory_browse

    CHANGING

      selected_folder      = lv_selected_folder

    EXCEPTIONS

      cntl_error           = 1

      error_no_gui         = 2

      not_supported_by_gui = 3

      OTHERS               = 4.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

  p_out = lv_selected_folder.

AT SELECTION-SCREEN.

  IF sy-ucomm = c_execute_command.

    PERFORM check_status.

    PERFORM check_directory.

  ENDIF.

START-OF-SELECTION.

  PERFORM download USING c_co_file_prefix.

  PERFORM download USING c_data_file_prefix.

  PERFORM show_msg.

*&———————————————————————*

*&      Form  check_directory

*&———————————————————————*

*       text

*———————————————————————-*

FORM check_directory.

  DATA: lv_result TYPE c,

        lv_directory TYPE string.

  lv_directory = p_out.

  CALL METHOD cl_gui_frontend_services=>directory_exist

    EXPORTING

      directory            = lv_directory

    RECEIVING

      result               = lv_result

    EXCEPTIONS

      cntl_error           = 1

      error_no_gui         = 2

      wrong_parameter      = 3

      not_supported_by_gui = 4

      OTHERS               = 5.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

               WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

  IF lv_result IS INITIAL.

    MESSAGE e398(00) WITH text-001.”The output directory does not exist!

  ENDIF.

ENDFORM.                    “check_directory

*&———————————————————————*

*&      Form  check_status

*&———————————————————————*

*       text

*———————————————————————-*

FORM check_status.

  DATA:ls_e070  TYPE e070 .

  SELECT SINGLE * INTO ls_e070  FROM e070  WHERE trkorr = p_ot.

  IF sy-subrc = 0.

    IF ls_e070-trstatus NE c_request_released.

      MESSAGE e398(00) WITH text-002.”The TR must be released!

    ENDIF.

  ELSE.

    MESSAGE e398(00) WITH text-003.”The TR does not exist!

  ENDIF.

ENDFORM.                    “check_status

*&———————————————————————*

*&      Form  show_msg

*&———————————————————————*

*       text

*———————————————————————-*

FORM show_msg.

  MESSAGE s398(00) WITH text-004.”Files downloaded successfully!

ENDFORM.                    “show_msg

*&———————————————————————*

*&      Form  download

*&———————————————————————*

*       text

*———————————————————————-*

FORM download USING pv_type TYPE c.

  DATA:lv_path LIKE sapb-sappfad,

       lv_targetpath LIKE sapb-sappfad,

       lv_ot_filename TYPE string.

  CONCATENATE pv_type p_ot+4(6) c_dot p_ot(3) INTO lv_ot_filename.

  CASE pv_type.

    WHEN c_co_file_prefix.

      CONCATENATE gv_dir_trans c_slash_lin c_co_files_path c_slash_lin INTO lv_path.

    WHEN c_data_file_prefix.

      CONCATENATE gv_dir_trans c_slash_lin c_data_files_path c_slash_lin INTO lv_path.

  ENDCASE.

  CONCATENATE lv_path lv_ot_filename INTO lv_path.

  CONCATENATE p_out c_slash_win p_ot c_slash_win lv_ot_filename INTO lv_targetpath.

  CALL FUNCTION ‘ARCHIVFILE_SERVER_TO_CLIENT’

    EXPORTING

      path       = lv_path

      targetpath = lv_targetpath

    EXCEPTIONS

      error_file = 1

      OTHERS     = 2.

  IF sy-subrc <> 0.

    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno

            WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.

  ENDIF.

ENDFORM.                    “download

_M#]

3. 로컬로 다운로드된 파일확인

4. 반대로 업로드하는 방법 설명 링크합니다.

 – http://wiki.scn.sap.com/wiki/display/Basis/Copy+Transport+Requests+to+local+file+system

 – 참고문서

cfile22.uf.23750A3756D7E8D416FEF2.pdf

올리는건 Basis 분들이 해주심. ^^