메뉴 건너뛰기

SAP 한국 커뮤니티

Copy Program Variants from one to another

sapjoy 2006.12.12 21:07 조회 수 : 4182 추천:32

Copy Program Variants from one to another
This code copies variants from one program to another provided that the programs have identical selection screens.

* ------------------------------------------------------
* Copy Variants from one Program to another.
* ------------------------------------------------------
REPORT Z_COPY_VARIANTS_PROG_TO_PROG .

* =====================================================
* Data Declarations Section
* =====================================================
TABLES : VARID , VARIS , VARIT  .
* -----------------------------------------------------
DATA : BEGIN OF MYVARID OCCURS 0 .
        INCLUDE STRUCTURE VARID .
DATA : END OF MYVARID .
* -----------------------------------------------------
DATA : BEGIN OF MYVARIS OCCURS 0 .
        INCLUDE STRUCTURE VARIS .
DATA : END OF MYVARIS .
* -----------------------------------------------------
DATA : BEGIN OF MYVARIT OCCURS 0 .
        INCLUDE STRUCTURE VARIT .
DATA : END OF MYVARIT .
* -----------------------------------------------------
DATA : BEGIN OF MYVARI  OCCURS 0 .
        INCLUDE STRUCTURE VARI  .
DATA : END OF MYVARI .

DATA : MANS(1) TYPE C .

DATA :   PROGRAMM LIKE RS38M-PROGRAMM  .
DATA : BEGIN OF MDYNPFIELDS OCCURS 1 .
        INCLUDE STRUCTURE DYNPREAD .
DATA : END OF MDYNPFIELDS .
CONSTANTS BUTTONSELECTED(1) TYPE C VALUE 'X' .

* ======================================================
* Macro for Inputing Filenames
* ======================================================
DEFINE GET_FILENAME .
  CALL FUNCTION 'WS_FILENAME_GET'
      EXPORTING
*         DEF_FILENAME     = ' '
           DEF_PATH         = &1
           MASK             = ',*.*,*.*.'
           MODE             = '0'
*         TITLE            = ' '
      IMPORTING
           FILENAME         = &2
*         RC               =
       EXCEPTIONS
            INV_WINSYS       = 1
            NO_BATCH         = 2
            SELECTION_CANCEL = 3
            SELECTION_ERROR  = 4
            OTHERS           = 5.

END-OF-DEFINITION .

* ======================================================
* Macro for Downloading to ASCII Files
* ======================================================
DEFINE DOWNLOAD_TO_ASCII .
  CALL FUNCTION 'WS_DOWNLOAD'
      EXPORTING
*         BIN_FILESIZE            = ' '
*         CODEPAGE                = ' '
           FILENAME                = &1
           FILETYPE                = 'DAT'
*         MODE                    = ' '
*         WK1_N_FORMAT            = ' '
*         WK1_N_SIZE              = ' '
*         WK1_T_FORMAT            = ' '
*         WK1_T_SIZE              = ' '
*         COL_SELECT              = ' '
*         COL_SELECTMASK          = ' '
*         NO_AUTH_CHECK           = ' '
*    IMPORTING
*         FILELENGTH              =
       TABLES
            DATA_TAB                = &2
*         FIELDNAMES              =
       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
            GUI_REFUSE_FILETRANSFER = 8
            OTHERS                  = 9.

END-OF-DEFINITION .

* ======================================================
* Macro for uploading Data from ASCII files
* ======================================================
DEFINE UPLOAD_FROM_ASCII .
  CALL FUNCTION 'WS_UPLOAD'
      EXPORTING
*         CODEPAGE                = ' '
           FILENAME                = &1
           FILETYPE                = 'DAT'
*         HEADLEN                 = ' '
*         LINE_EXIT               = ' '
*         TRUNCLEN                = ' '
*         USER_FORM               = ' '
*         USER_PROG               = ' '
*    IMPORTING
*         FILELENGTH              =
       TABLES
            DATA_TAB                = &2
       EXCEPTIONS
            CONVERSION_ERROR        = 1
            FILE_OPEN_ERROR         = 2
            FILE_READ_ERROR         = 3
            INVALID_TABLE_WIDTH     = 4
            INVALID_TYPE            = 5
            NO_BATCH                = 6
            UNKNOWN_ERROR           = 7
            GUI_REFUSE_FILETRANSFER = 8
            CUSTOMER_ERROR          = 9
            OTHERS                  = 10.
END-OF-DEFINITION .

* ======================================================
* Selection Screen Default
* ======================================================
PARAMETERS : P_FROM_P LIKE RS38M-PROGRAMM OBLIGATORY .
PARAMETERS : P_TO_P LIKE RS38M-PROGRAMM OBLIGATORY .
PARAMETERS : P_SAME_S RADIOBUTTON GROUP GRP1 DEFAULT 'X' .
PARAMETERS : P_DOWNLD RADIOBUTTON GROUP GRP1   .
PARAMETERS : P_UPLOAD RADIOBUTTON GROUP GRP1   .
PARAMETERS : P_FILE_D  LIKE   RLGRAP-FILENAME DEFAULT 'c:varid.txt' .
PARAMETERS : P_FILE_S  LIKE   RLGRAP-FILENAME DEFAULT 'c:varis.txt' .
PARAMETERS : P_FILE_T  LIKE   RLGRAP-FILENAME DEFAULT 'c:varit.txt' .
PARAMETERS : P_FILE    LIKE   RLGRAP-FILENAME DEFAULT 'c:vari.txt' .

* =====================================================
* At Selection Screen Events
* =====================================================
AT SELECTION-SCREEN .
  PROGRAMM = P_FROM_P .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_D .
  GET_FILENAME 'c:varid.txt' P_FILE_D .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_S .
  GET_FILENAME 'c:varis.txt' P_FILE_S .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_T .
  GET_FILENAME 'c:varit.txt' P_FILE_T .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE .
  GET_FILENAME 'c:vari.txt' P_FILE .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FROM_P .
  CLEAR  MDYNPFIELDS . REFRESH MDYNPFIELDS .
  MDYNPFIELDS-FIELDNAME = 'P_FROM_P' .
  APPEND  MDYNPFIELDS .
  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            DYNAME               = SY-CPROG
            DYNUMB               = SY-DYNNR
       TABLES
            DYNPFIELDS           = MDYNPFIELDS
       EXCEPTIONS
            INVALID_ABAPWORKAREA = 1
            INVALID_DYNPROFIELD  = 2
            INVALID_DYNPRONAME   = 3
            INVALID_DYNPRONUMMER = 4
            INVALID_REQUEST      = 5
            NO_FIELDDESCRIPTION  = 6
            INVALID_PARAMETER    = 7
            UNDEFIND_ERROR       = 8
            DOUBLE_CONVERSION    = 9
            STEPL_NOT_FOUND      = 10
            OTHERS               = 11.

  READ TABLE MDYNPFIELDS INDEX 1 .
  PROGRAMM = MDYNPFIELDS-FIELDVALUE .
  CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
       EXPORTING
            OBJECT_TYPE          = 'PROG'
            OBJECT_NAME          = PROGRAMM
       IMPORTING
            OBJECT_NAME_SELECTED = PROGRAMM
       EXCEPTIONS
            CANCEL               = 1
            WRONG_TYPE           = 2
            OTHERS               = 3.
  P_FROM_P = PROGRAMM .

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_TO_P .
  CLEAR  MDYNPFIELDS . REFRESH MDYNPFIELDS .
  MDYNPFIELDS-FIELDNAME = 'P_TO_P' .
  APPEND  MDYNPFIELDS .
  CALL FUNCTION 'DYNP_VALUES_READ'
       EXPORTING
            DYNAME               = SY-CPROG
            DYNUMB               = SY-DYNNR
       TABLES
            DYNPFIELDS           = MDYNPFIELDS
       EXCEPTIONS
            INVALID_ABAPWORKAREA = 1
            INVALID_DYNPROFIELD  = 2
            INVALID_DYNPRONAME   = 3
            INVALID_DYNPRONUMMER = 4
            INVALID_REQUEST      = 5
            NO_FIELDDESCRIPTION  = 6
            INVALID_PARAMETER    = 7
            UNDEFIND_ERROR       = 8
            DOUBLE_CONVERSION    = 9
            STEPL_NOT_FOUND      = 10
            OTHERS               = 11.

  READ TABLE MDYNPFIELDS INDEX 1 .
  PROGRAMM = MDYNPFIELDS-FIELDVALUE .
  CALL FUNCTION 'REPOSITORY_INFO_SYSTEM_F4'
       EXPORTING
            OBJECT_TYPE          = 'PROG'
            OBJECT_NAME          = PROGRAMM
       IMPORTING
            OBJECT_NAME_SELECTED = PROGRAMM
       EXCEPTIONS
            CANCEL               = 1
            WRONG_TYPE           = 2
            OTHERS               = 3.
  P_TO_P = PROGRAMM .

* ======================================================
* Start of Selection
* ======================================================
START-OF-SELECTION .
  CASE BUTTONSELECTED.
    WHEN P_SAME_S .
      PERFORM COPY_FROM_PROG_TO_PROG .
    WHEN P_DOWNLD .
      PERFORM VDOWNLOAD .
    WHEN P_UPLOAD .
      PERFORM VUPLOAD .
  ENDCASE .

*&---------------------------------------------------*
*&      Form  COPY_FROM_PROG_TO_PROG
*&---------------------------------------------------*
*       text
*----------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------*
FORM COPY_FROM_PROG_TO_PROG.

  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
       EXPORTING
*         DEFAULTOPTION  = 'Y'
           TEXTLINE1      = 'Are you sure you want to copy Variants ? '
*         TEXTLINE2      = ' '
            TITEL          = 'Confirmation '
*         START_COLUMN   = 25
*         START_ROW      = 6
*         CANCEL_DISPLAY = 'X'
      IMPORTING
           ANSWER         = MANS
       EXCEPTIONS
            OTHERS         = 1.

  IF MANS = 'J' .
* ------------------------------------------------------
    REFRESH MYVARID . CLEAR MYVARID .
    SELECT * FROM VARID  INTO TABLE MYVARID
                        WHERE REPORT = P_FROM_P.
    LOOP AT MYVARID .
      MYVARID-REPORT = P_TO_P .
      MODIFY MYVARID .
    ENDLOOP .
    IF SY-SUBRC = 0 .
      DELETE FROM VARID WHERE REPORT = P_TO_P .
      INSERT VARID FROM TABLE MYVARID .
    ENDIF .
* ----------------------------------------------------
    REFRESH MYVARIS . CLEAR MYVARIS .
    SELECT * FROM VARIS  INTO TABLE MYVARIS
                        WHERE REPORT = P_FROM_P.
    LOOP AT MYVARIS .
      MYVARIS-REPORT = P_TO_P .
      MODIFY MYVARIS .
    ENDLOOP .
    IF SY-SUBRC = 0 .
      DELETE FROM VARIS WHERE REPORT = P_TO_P .
      INSERT VARIS FROM TABLE MYVARIS .
    ENDIF .
* -----------------------------------------------------
    REFRESH MYVARIT . CLEAR MYVARIT .
    SELECT * FROM VARIT  INTO TABLE MYVARIT
                        WHERE REPORT = P_FROM_P.
    LOOP AT MYVARIT .
      MYVARIT-REPORT = P_TO_P .
      MODIFY MYVARIT .
    ENDLOOP .
    IF SY-SUBRC = 0 .
      DELETE FROM VARIT WHERE REPORT = P_TO_P .
      INSERT VARIT FROM TABLE MYVARIT .
    ENDIF .
* -----------------------------------------------------
    REFRESH MYVARI . CLEAR MYVARI .
    SELECT * FROM VARI   INTO TABLE MYVARI
                        WHERE REPORT = P_FROM_P.
    LOOP AT MYVARI  .
      MYVARI-REPORT = P_TO_P .
      MODIFY MYVARI  .
    ENDLOOP .
    IF SY-SUBRC = 0 .
      DELETE FROM VARI WHERE REPORT = P_TO_P .
      INSERT VARI FROM TABLE MYVARI .
    ENDIF .

  ENDIF .

ENDFORM.                               " COPY_FROM_PROG_TO_PROG

*&-----------------------------------------------------*
*&      Form  VDOWNLOAD
*&-----------------------------------------------------*
*       text
*------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*------------------------------------------------------*
FORM VDOWNLOAD.
  REFRESH MYVARID . CLEAR MYVARID .
  SELECT * FROM VARID  INTO TABLE MYVARID
                      WHERE REPORT = P_FROM_P.
  DOWNLOAD_TO_ASCII  P_FILE_D  MYVARID .

* -----------------------------------------------------
  REFRESH MYVARIS . CLEAR MYVARIS .
  SELECT * FROM VARIS  INTO TABLE MYVARIS
                      WHERE REPORT = P_FROM_P.
  DOWNLOAD_TO_ASCII P_FILE_S  MYVARIS .

* -----------------------------------------------------
  REFRESH MYVARIT . CLEAR MYVARIT .
  SELECT * FROM VARIT  INTO TABLE MYVARIT
                      WHERE REPORT = P_FROM_P.
  DOWNLOAD_TO_ASCII P_FILE_T  MYVARIT .

* ----------------------------------------------------
  REFRESH MYVARI . CLEAR MYVARI .
  SELECT * FROM VARI   INTO TABLE MYVARI
                      WHERE REPORT = P_FROM_P.
  DOWNLOAD_TO_ASCII P_FILE  MYVARI .

ENDFORM.                               " VDOWNLOAD

*&-----------------------------------------------------*
*&      Form  VUPLOAD
*&-----------------------------------------------------*
*       text
*------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*------------------------------------------------------*
FORM VUPLOAD.
  CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
       EXPORTING
*         DEFAULTOPTION  = 'Y'
           TEXTLINE1      =
           'Are you sure you want to upload Variants ? '
*         TEXTLINE2      = ' '
            TITEL          = 'Confirmation '
*         START_COLUMN   = 25
*         START_ROW      = 6
*         CANCEL_DISPLAY = 'X'
      IMPORTING
           ANSWER         = MANS
       EXCEPTIONS
            OTHERS         = 1.

  IF MANS = 'J' .
* -----------------------------------------------------
    REFRESH MYVARID . CLEAR MYVARID .
    UPLOAD_FROM_ASCII P_FILE_D MYVARID .
    LOOP AT MYVARID .
      MYVARID-REPORT = P_TO_P .
      MODIFY MYVARID .
    ENDLOOP .
    IF SY-SUBRC = 0 .
      DELETE FROM VARID WHERE REPORT = P_TO_P .
      INSERT VARID FROM TABLE MYVARID .
    ENDIF .
* -----------------------------------------------------
    REFRESH MYVARIS . CLEAR MYVARIS .
    UPLOAD_FROM_ASCII P_FILE_S MYVARIS  .
    LOOP AT MYVARIS .
      MYVARIS-REPORT = P_TO_P .
      MODIFY MYVARIS .
    ENDLOOP .
    IF SY-SUBRC = 0 .
      DELETE FROM VARIS WHERE REPORT = P_TO_P .
      INSERT VARIS FROM TABLE MYVARIS .
    ENDIF .
* -----------------------------------------------------
    REFRESH MYVARIT . CLEAR MYVARIT .
    UPLOAD_FROM_ASCII P_FILE_T MYVARIT  .
    LOOP AT MYVARIT .
      MYVARIT-REPORT = P_TO_P .
      MODIFY MYVARIT .
    ENDLOOP .
    IF SY-SUBRC = 0 .
      DELETE FROM VARIT WHERE REPORT = P_TO_P .
      INSERT VARIT FROM TABLE MYVARIT .
    ENDIF .
* ------------------------------------------------------
    REFRESH MYVARI . CLEAR MYVARI .
    UPLOAD_FROM_ASCII P_FILE  MYVARI   .
    LOOP AT MYVARI  .
      MYVARI-REPORT = P_TO_P .
      MODIFY MYVARI  .
    ENDLOOP .
    IF SY-SUBRC = 0 .
      DELETE FROM VARI WHERE REPORT = P_TO_P .
      INSERT VARI FROM TABLE MYVARI .
    ENDIF .

  ENDIF .

ENDFORM.                               " VUPLOAD
번호 제목 글쓴이 날짜 조회 수
27 SAP GUI WINDOW TITLE BAR 정보 표시 설정 방법 / 색상 설정 [15] file 미소 2010.12.26 13451
26 텍스트파일 다운받을때 유니코드 문제 해결 [8] file 솔로몬 2007.06.28 13791
25 <img src=b.gif>Windows 7 에서 SAP GUI ALV 반응느림 해결방법 공유 (GUI720 기준)[추천:e-abap][추천:유리선율][추천:보나] [17] 점점 2010.07.02 14781
24 Dynamic Internal Table 생성 꿀꿀윤뚱67 2019.11.27 14855
23 BAPI_GOODSMVT_CREATE 입고/출고/재고이동시에 사용하세요. [5] 노름마치 2007.12.10 15101
22 Abap Dump Top 10 [5] 양키 2013.01.14 15743
21 data [2] sapjoy 2006.12.03 16722
20 프로그램 정보(프로그램 리스트, PROGRAM LIST, PROGRAM TABLE) [3] sapjoy 2007.02.23 16810
19 SYST 시스템 변수 정리 [5] 아밥뽀 2014.08.23 16986
18 FOR ALL ENTRIES IN 구문 사용시 select 필드 선택시 주의사항. [7] 나침반친구 2007.03.13 17021
17 ABAP 구문 총정리 [39] file Wise 멘토 2008.11.24 17163
16 인터널 테이블 라인수 lines [8] sapjoy 2014.01.20 17249
15 ABAP 핵심정리 [23] SARA 2007.03.14 17336
14 ALV LIST 진행시 LAYOUT 속성값 [18] kwon09 2007.04.11 17352
13 SDN -> SCN 변경되면서 Contents별로 바뀐 LINK 모음 [13] Wise 멘토 2012.07.06 19045
12 숫자입력 체크(Numeric character check) [1] 양키(이경환) 2014.01.28 19627
11 LIKE와 TYPE의 차이 [13] sapjoy 2006.12.06 19722
10 문자열에 있는 값이 숫자만으로 되어있는지 문자가 포함됐는지 체크하는 함수 [3] 꿀단지 2011.10.11 19905
9 SELECT statement D.Y.Kim 2007.07.20 23647
8 BAPI_PR_CREATE 구매요청 생성시에 사용하세요 [2] 노름마치 2007.12.10 23703