SAP R/3 форум ABAP консультантов
Russian ABAP Developer's Club

Home - FAQ - Search - Memberlist - Usergroups - Profile - Log in to check your private messages - Register - Log in - English
Blogs - Weblogs News

Copy Variants from one Program to another



 
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP Dictionary
View previous topic :: View next topic  
Author Message
admin
Администратор
Администратор



Joined: 01 Sep 2007
Posts: 1639

PostPosted: Sun Nov 04, 2007 1:33 pm    Post subject: Copy Variants from one Program to another Reply with quote

Code:
* ------------------------------------------------------
* 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
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Russian ABAP Developer's Club Forum Index -> ABAP Dictionary All times are GMT + 4 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


All product names are trademarks of their respective companies. SAPNET.RU websites are in no way affiliated with SAP AG.
SAP, SAP R/3, R/3 software, mySAP, ABAP, BAPI, xApps, SAP NetWeaver and any other are registered trademarks of SAP AG.
Every effort is made to ensure content integrity. Use information on this site at your own risk.