*-----------------------------------------------------------------------* * CREATION BLOCK * *-----------------------------------------------------------------------* * Program Name: : ZBW_IP_LOCK_CHARS_TRANSPORT * * Program Type : Executable * * SAP Name / Version : Version 1.0 * * Programmer : Pranab Parhi * * CREATION DATE : 23/11/2010 * * ANALYST / SPECIFIER : Pranab Parhi * * REQUEST REFERENCE : SELF * * DESCRIPTION : Using this program you can Transport BW IP Cube * * Lock Characteristics from one system to another.* *-----------------------------------------------------------------------* REPORT ZBW_IP_LOCK_CHARS_TRANSPORT. * Tables Declaration......................................... TABLES: RSPLS_CHAS_LOCK. " Plan Lock Relv Chara... * Type Declarations.................................. TYPES: BEGIN OF TY_FILE, DATA(9999) TYPE C, END OF TY_FILE. * Data Declarations....................................... DATA: I_RSPLS_CHAS_LOCK LIKE RSPLS_CHAS_LOCK OCCURS 0 WITH HEADER LINE, BEGIN OF I_CUBE OCCURS 0, INFOCUBE TYPE RSINFOCUBE, END OF I_CUBE. DATA: I_FILE TYPE TABLE OF TY_FILE, S_FILE TYPE TY_FILE. * Selection-Screen Definition................................... SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001. PARAMETERS: R_DWNLOD RADIOBUTTON GROUP RAD1 DEFAULT 'X', " Download Radio Button R_CREATE RADIOBUTTON GROUP RAD1. " Upload Radio Button SELECTION-SCREEN END OF BLOCK B1. SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002. PARAMETERS: P_FILE TYPE STRING. " Local file for upload/download SELECT-OPTIONS: S_CUBE FOR RSPLS_CHAS_LOCK-INFOPROV OBLIGATORY. " InfoProvider Technical Name SELECTION-SCREEN END OF BLOCK B2. * Screen Input Help for User......................................... AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE. PERFORM GET_FILE_NAME. " User to Choose File Name * Screen Validation................................................ AT SELECTION-SCREEN. PERFORM CHECK_FILE_NAME. " Validate File Name PERFORM VALIDATE_CUBE_NAMES. " Validate Cube Name * Processing Logic.................................................. START-OF-SELECTION. * Process to Download Planning Lock information..................... IF R_DWNLOD EQ 'X'. PERFORM PROCESS_LOCK_DATA. " Extract Lock Information IF NOT I_FILE[] IS INITIAL. PERFORM DOWNLOAD_LOCK_DATA. " Download Lock Information ELSE. WRITE 'Error: Please Check Your Infoprovider'. ENDIF. " IF NOT I_FILE[] ELSEIF R_CREATE EQ 'X'. * Process to Upload Planning Lock information....................... PERFORM FILE_UPLOAD_LOCK_DATA. " Upload Lock Information IF I_RSPLS_CHAS_LOCK[] IS NOT INITIAL. PERFORM CREATE_LOCK_DATA. " Create Lock Data MESSAGE S999(BCTRAIN) WITH 'Lock Data Uploaded, Please Check in the System'. ELSE. WRITE: 'Error: Please Check Your Infoprovider'. ENDIF. " IF I_RSPLS_CHAS_LOCK[].. ENDIF. " IF R_DWNLOD EQ 'X'. *----------------------------------------------------------------------* * FORM DOWNLOAD_LOCK_DATA * *----------------------------------------------------------------------* * This Subroutine is used to Download the Extracted Lock entries to a * * file on to the Local Work Station. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM DOWNLOAD_LOCK_DATA . * Call Method for File Download............................. CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD EXPORTING FILENAME = P_FILE CHANGING DATA_TAB = I_FILE. IF SY-SUBRC NE 0. WRITE 'Error: File could not be downloaded'. ENDIF. " IF SY-SUBRC NE 0. ENDFORM. " DOWNLOAD_LOCK_DATA *----------------------------------------------------------------------* * FORM UPLOAD_LOCK_DATA * *----------------------------------------------------------------------* * This Subroutine is used to Upload the Stored Lock entries from a file* * on the Local Work Station. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM FILE_UPLOAD_LOCK_DATA . * Call Method for File Upload............................. CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD EXPORTING FILENAME = P_FILE CHANGING DATA_TAB = I_FILE. IF I_FILE[] IS INITIAL. MESSAGE E999(BCTRAIN) WITH 'Check Your File Settings'. ELSE. " Process the Uploaded data REFRESH: I_RSPLS_CHAS_LOCK. CLEAR: I_RSPLS_CHAS_LOCK. LOOP AT I_FILE INTO S_FILE. SPLIT S_FILE AT '~' INTO: I_RSPLS_CHAS_LOCK-INFOPROV I_RSPLS_CHAS_LOCK-CHANM. APPEND I_RSPLS_CHAS_LOCK. ENDLOOP. " LOOP AT I_FILE INTO S_FILE. SORT I_RSPLS_CHAS_LOCK BY INFOPROV. ENDIF. " IF I_FILE[] IS INITIAL. ENDFORM. " FILE_UPLOAD_LOCK_DATA *----------------------------------------------------------------------* * PROCESS_LOCK_DATA * *----------------------------------------------------------------------* * This Subroutine is used to Process the Extracted Planning lock info. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM PROCESS_LOCK_DATA . * Extract the Lock settings............................................ SELECT * " Extract the Planning lock settings FROM RSPLS_CHAS_LOCK INTO TABLE I_RSPLS_CHAS_LOCK FOR ALL ENTRIES IN I_CUBE WHERE INFOPROV EQ I_CUBE-INFOCUBE. IF SY-SUBRC EQ 0. SORT I_RSPLS_CHAS_LOCK BY INFOPROV. * Process the Extracted data from table RSPLS_CHAS_LOCK................. LOOP AT I_RSPLS_CHAS_LOCK. CONCATENATE I_RSPLS_CHAS_LOCK-INFOPROV I_RSPLS_CHAS_LOCK-CHANM INTO S_FILE-DATA SEPARATED BY '~'. APPEND S_FILE TO I_FILE. CLEAR: S_FILE. ENDLOOP. " LOOP AT I_RSPLS_CHAS_LOCK. ENDIF. " IF SY-SUBRC EQ 0. ENDFORM. " PROCESS_LOCK_DATA *----------------------------------------------------------------------* * FORM CHECK_FILE_NAME * *----------------------------------------------------------------------* * This Subroutine is used to check and validate the File Name and Path * * from the Local Work Station. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM CHECK_FILE_NAME . DATA W_RC(1) TYPE C. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST EXPORTING FILE = P_FILE RECEIVING RESULT = W_RC. IF W_RC NE 'X'. MESSAGE E999(BCTRAIN) WITH 'Check/Create Your File Settings'. ENDIF. " IF IF W_RC NE 'X'. ENDFORM. " CHECK_FILE_NAME *----------------------------------------------------------------------* * FORM GET_FILE_NAME * *----------------------------------------------------------------------* * This Subroutine is used to show the GUI for the User to select File * * Name and Path from the Local Work Station. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM GET_FILE_NAME . DATA: L_FILETABLE TYPE FILETABLE, S_FILETABLE TYPE FILE_TABLE, L_RC TYPE SY-SUBRC. CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG EXPORTING FILE_FILTER = '*.TXT' DEFAULT_EXTENSION = 'TXT' CHANGING FILE_TABLE = L_FILETABLE RC = L_RC. IF L_RC NE -1. READ TABLE L_FILETABLE INDEX 1 INTO S_FILETABLE. P_FILE = S_FILETABLE-FILENAME. ENDIF. " IF L_RC NE -1 ENDFORM. " GET_FILE_NAME *----------------------------------------------------------------------* * FORM CREATE_LOCK_DATA * *----------------------------------------------------------------------* * This Subroutine is used to Create Planning Lock settings from the * * information on a file on the Local Work Station. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM CREATE_LOCK_DATA. LOOP AT I_CUBE. READ TABLE I_RSPLS_CHAS_LOCK WITH KEY INFOPROV = I_CUBE-INFOCUBE. IF SY-SUBRC EQ 0. * Delete the Existing settings for the Selected Cubes........... DELETE FROM RSPLS_CHAS_LOCK WHERE INFOPROV = I_CUBE-INFOCUBE. * Now insert the New Lock Settings for the selected Cubes............ LOOP AT I_RSPLS_CHAS_LOCK WHERE INFOPROV EQ I_CUBE-INFOCUBE. RSPLS_CHAS_LOCK-INFOPROV = I_RSPLS_CHAS_LOCK-INFOPROV. RSPLS_CHAS_LOCK-CHANM = I_RSPLS_CHAS_LOCK-CHANM. MODIFY RSPLS_CHAS_LOCK. CLEAR: RSPLS_CHAS_LOCK. ENDLOOP. " LOOP AT I_FILE ENDIF. " IF SY-SUBRC EQ 0. ENDLOOP. " LOOP AT I_FILE INTO ENDFORM. " CREATE_LOCK_DATA *----------------------------------------------------------------------* * FORM VALIDATE_CUBE_NAMES * *----------------------------------------------------------------------* * This Subroutine is used to Validate the Active Planning Cubes. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM VALIDATE_CUBE_NAMES . SELECT INFOCUBE FROM RSDCUBE INTO TABLE I_CUBE WHERE INFOCUBE IN S_CUBE AND OBJVERS EQ 'A' AND OBJSTAT EQ 'ACT' AND ACTIVFL EQ 'X' AND CUBETYPE EQ 'B' AND TRANSACT EQ 'X'. IF I_CUBE[] IS INITIAL. MESSAGE E999(BCTRAIN) WITH 'No Cubes found, Pls check'. ELSE. SORT I_CUBE. ENDIF. " IF I_CUBE[] IS INITIAL. ENDFORM. " VALIDATE_CUBE_NAMES