* --------------------------------------------------------------------
* Copy ALV Variants from one Program to another.
* --------------------------------------------------------------------
REPORT Z_COPY_ALV_VARNTS_PROG_TO_PROG .
* =====================================================================
* Data Declarations Section
* =====================================================================
* ---------------------------------------------------------------------
DATA : BEGIN OF MYLTDX OCCURS 0 .
INCLUDE STRUCTURE
LTDX .
DATA : END OF MYLTDX .
* ---------------------------------------------------------------------
DATA : BEGIN OF MYLTDXT OCCURS 0 .
INCLUDE STRUCTURE
LTDXT .
DATA : END OF MYLTDXT .
* ---------------------------------------------------------------------
DATA : BEGIN OF MYLTDXD OCCURS 0 .
INCLUDE STRUCTURE
LTDXD .
DATA : END OF MYLTDXD .
* ---------------------------------------------------------------------
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_x LIKE RLGRAP-FILENAME
DEFAULT 'c:\LTDX.txt' .
PARAMETERS : P_FILE_t LIKE RLGRAP-FILENAME
DEFAULT 'c:\LTDXT.txt' .
PARAMETERS : P_FILE_d LIKE RLGRAP-FILENAME
DEFAULT 'c:\LTDXD.txt' .
* =====================================================================
* At Selection Screen Events
* =====================================================================
AT SELECTION-SCREEN .
PROGRAMM = P_FROM_P .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_x .
GET_FILENAME 'c:\LTDX.txt' P_FILE_x .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_t .
GET_FILENAME 'c:\LTDXT.txt' P_FILE_t .
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE_d .
GET_FILENAME 'c:\LTDXD.txt' P_FILE_d .
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 MYLTDX . CLEAR MYLTDX .
SELECT * FROM LTDX INTO TABLE
MYLTDX
WHERE REPORT = P_FROM_P.
LOOP AT MYLTDX .
MYLTDX-REPORT = P_TO_P
.
MODIFY MYLTDX .
ENDLOOP .
IF SY-SUBRC = 0 .
DELETE FROM LTDX WHERE
REPORT = P_TO_P .
INSERT LTDX FROM TABLE
MYLTDX .
ENDIF .
* ---------------------------------------------------------------------
REFRESH MYLTDXT . CLEAR MYLTDXT .
SELECT * FROM LTDXT INTO TABLE
MYLTDXT
WHERE REPORT = P_FROM_P.
LOOP AT MYLTDXT .
MYLTDXT-REPORT = P_TO_P
.
MODIFY MYLTDXT .
ENDLOOP .
IF SY-SUBRC = 0 .
DELETE FROM LTDXT WHERE
REPORT = P_TO_P .
INSERT LTDXT FROM TABLE
MYLTDXT .
ENDIF .
* ---------------------------------------------------------------------
REFRESH MYLTDXT . CLEAR MYLTDXT .
SELECT * FROM LTDXT INTO TABLE
MYLTDXT
WHERE REPORT = P_FROM_P.
LOOP AT MYLTDXT .
MYLTDXT-REPORT = P_TO_P
.
MODIFY MYLTDXT .
ENDLOOP .
IF SY-SUBRC = 0 .
DELETE FROM LTDXT WHERE
REPORT = P_TO_P .
INSERT LTDXT FROM TABLE
MYLTDXT .
ENDIF .
* ---------------------------------------------------------------------
ENDIF .
ENDFORM.
" COPY_FROM_PROG_TO_PROG
*&---------------------------------------------------------------------*
*& Form VDOWNLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM VDOWNLOAD.
REFRESH MYLTDX . CLEAR MYLTDX .
SELECT * FROM LTDX INTO TABLE MYLTDX
WHERE REPORT = P_FROM_p.
DOWNLOAD_TO_ASCII P_FILE_x MYLTDX
.
* ---------------------------------------------------------------------
REFRESH MYLTDXT . CLEAR MYLTDXT .
SELECT * FROM LTDXT INTO TABLE MYLTDXT
WHERE REPORT = P_FROM_P.
DOWNLOAD_TO_ASCII P_FILE_t MYLTDXT .
* ---------------------------------------------------------------------
REFRESH MYLTDXT . CLEAR MYLTDXT .
SELECT * FROM LTDXD INTO TABLE MYLTDXT
WHERE REPORT = P_FROM_P.
DOWNLOAD_TO_ASCII P_FILE_d MYLTDXT .
* ---------------------------------------------------------------------
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 MYLTDX . CLEAR MYLTDX .
UPLOAD_FROM_ASCII P_FILE_x MYLTDX
.
LOOP AT MYLTDX .
MYLTDX-REPORT = P_TO_P
.
MODIFY MYLTDX .
ENDLOOP .
IF SY-SUBRC = 0 .
DELETE FROM LTDX WHERE
REPORT = P_TO_P .
INSERT LTDX FROM TABLE
MYLTDX .
ENDIF .
* ---------------------------------------------------------------------
REFRESH MYLTDXT . CLEAR MYLTDXT .
UPLOAD_FROM_ASCII P_FILE_t MYLTDXT
.
LOOP AT MYLTDXT .
MYLTDXT-REPORT = P_TO_P
.
MODIFY MYLTDXT .
ENDLOOP .
IF SY-SUBRC = 0 .
DELETE FROM LTDXT WHERE
REPORT = P_TO_P .
INSERT LTDXT FROM TABLE
MYLTDXT .
ENDIF .
* ---------------------------------------------------------------------
REFRESH MYLTDXD . CLEAR MYLTDXD .
UPLOAD_FROM_ASCII P_FILE_d MYLTDXT
.
LOOP AT MYLTDXT .
MYLTDXT-REPORT = P_TO_P
.
MODIFY MYLTDXT .
ENDLOOP .
IF SY-SUBRC = 0 .
DELETE FROM LTDXT WHERE
REPORT = P_TO_P .
INSERT LTDXT FROM TABLE
MYLTDXT .
ENDIF .
* ---------------------------------------------------------------------
ENDIF .
ENDFORM.
" VUPLOAD
---------- |