*---------------------------------------------------------------------* * CREATION BLOCK * *---------------------------------------------------------------------* * Program Name: : ZBW_QUERY_VARIANT_TRANSPORT * * Program Type : Executable * * SAP Name / Version : Version 1.0 * * Programmer : Pranab Parhi * * CREATION DATE : 23/06/2009 * * ANALYST / SPECIFIER : Pranab Parhi * * REQUEST REFERENCE : SELF * * DESCRIPTION : Using this program you can Transport BW Query * * Variants from a system to other. * *---------------------------------------------------------------------* REPORT ZBW_QUERY_VARIANT_TRANSPORT. * Tables Declaration......................................... TABLES: RSRREPDIR, " Table RSRREPDIR RSRVARIANTDIR, " Table RSRVARIANTDIR RSRVARIANTTXT, " Table RSRVARIANTTXT RSRVARIANT. " Table RSRVARIANT * Data Declarations....................................... DATA: I_RSRVARIANTDIR LIKE RSRVARIANTDIR OCCURS 0 WITH HEADER LINE, I_RSRVARIANTTXT LIKE RSRVARIANTTXT OCCURS 0 WITH HEADER LINE, I_RSRVARIANT LIKE RSRVARIANT OCCURS 0 WITH HEADER LINE, I_RSRPARAMETRIZA TYPE RSRPARAMETRIZA OCCURS 0 WITH HEADER LINE, I_RSRPARAMETRIZAT TYPE RSRPARAMETRIZAT OCCURS 0 WITH HEADER LINE, I_RSRREPDIR LIKE RSRREPDIR OCCURS 0 WITH HEADER LINE. TYPES: BEGIN OF TY_FILE, DATA(9999) TYPE C, END OF TY_FILE. DATA: I_FILE TYPE TABLE OF TY_FILE, S_FILE TYPE TY_FILE. DATA: W_CONTTIMESTMP(15) TYPE C, W_TIMESTMP(15) TYPE C, W_TABLNAME(25) TYPE C, W_VERSION(10) TYPE N. * Selection-Screen Definition................................... SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-002. PARAMETERS: R_BEX RADIOBUTTON GROUP RAD2 DEFAULT 'X', " Upload Radio Button R_RSRT RADIOBUTTON GROUP RAD2. " Download Radio Button SELECTION-SCREEN END OF BLOCK B1. SELECTION-SCREEN BEGIN OF BLOCK B2 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 B2. SELECTION-SCREEN BEGIN OF BLOCK B3 WITH FRAME TITLE TEXT-003. SELECT-OPTIONS: S_QUERY FOR RSRREPDIR-COMPID. " Report Technical Name SELECT-OPTIONS: S_VARI FOR RSRVARIANTDIR-VARI. " Variant Technical Name PARAMETERS: P_LANGU TYPE RSRVARIANTTXT-LANGU OBLIGATORY, " Language Key P_FILE TYPE STRING. " Local file for upload/download SELECTION-SCREEN END OF BLOCK B3. * 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 * Processing Logic.......................................... START-OF-SELECTION. SELECT * " Validate the BW Query FROM RSRREPDIR INTO TABLE I_RSRREPDIR WHERE OBJVERS EQ 'A' AND COMPTYPE EQ 'REP' AND COMPID IN S_QUERY AND OBJSTAT EQ 'ACT'. IF SY-SUBRC EQ 0. * Process to Download Variant information........................... IF R_DWNLOD EQ 'X'. PERFORM EXTRACT_VARIANT_DATA. " Extract Variant Information IF NOT I_FILE[] IS INITIAL. PERFORM DOWNLOAD_VARIANT_DATA. ELSE. MESSAGE E999(BCTRAIN) WITH 'Check Your Variants'. ENDIF. " IF NOT I_FILE[] ELSE. * Process to Upload Variants..................................... PERFORM FILE_UPLOAD_VARIANT_DATA. IF NOT I_FILE[] IS INITIAL. PERFORM CREATE_VARIANT. ELSE. MESSAGE E999(BCTRAIN) WITH 'Check Your Variants'. ENDIF. " IF NOT I_FILE[] ENDIF. " IF R_DWNLOD EQ 'X'. ELSE. MESSAGE E999(BCTRAIN) WITH 'Check Your Query Name'. ENDIF. " IF SY-SUBRC EQ 0. *----------------------------------------------------------------------* * Form EXTRACT_VARIANT_DATA * *----------------------------------------------------------------------* * This Subroutine is used to Extract Variant Data from 3 tables. * * tables (RSRVARIANTDIR,RSRVARIANTTXT, RSRVARIANTTXT) * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM EXTRACT_VARIANT_DATA. * Extract RSRT relevant Variant information...................... IF R_RSRT EQ 'X'. SELECT * " Extract Data from RSRVARIANTDIR FROM RSRVARIANTDIR INTO TABLE I_RSRVARIANTDIR FOR ALL ENTRIES IN I_RSRREPDIR WHERE COMPUID EQ I_RSRREPDIR-COMPUID AND VARI IN S_VARI. IF SY-SUBRC EQ 0. SELECT * " Extract Data from RSRVARIANTTXT FROM RSRVARIANTTXT INTO TABLE I_RSRVARIANTTXT FOR ALL ENTRIES IN I_RSRREPDIR WHERE LANGU EQ P_LANGU AND COMPUID EQ I_RSRREPDIR-COMPUID AND VARI IN S_VARI. IF SY-SUBRC EQ 0. SELECT * " Extract Data from RSRVARIANT FROM RSRVARIANT INTO TABLE I_RSRVARIANT FOR ALL ENTRIES IN I_RSRREPDIR WHERE COMPUID EQ I_RSRREPDIR-COMPUID AND VARI IN S_VARI. IF SY-SUBRC EQ 0. PERFORM PROCESS_EXTRACTED_DATA_RSRT. " Process RSRT Extracted Data ENDIF. " IF SY-SUBRC EQ 0. ENDIF. " IF SY-SUBRC EQ 0. ENDIF. " IF SY-SUBRC EQ 0. ELSE. * Extract Global BEX/WEB relevant Variant information............ SELECT * " Extract Data from RSRPARAMETRIZA INTO TABLE I_RSRPARAMETRIZA FROM RSRPARAMETRIZA WHERE PARAMNM IN S_VARI AND OBJVERS EQ 'A' AND ELTUID IN S_QUERY. IF SY-SUBRC EQ 0. SELECT * " Extract Data from RSRPARAMETRIZAT FROM RSRPARAMETRIZAT INTO TABLE I_RSRPARAMETRIZAT FOR ALL ENTRIES IN I_RSRPARAMETRIZA WHERE LANGU EQ 'EN' AND PARAMNM EQ I_RSRPARAMETRIZA-PARAMNM AND OBJVERS EQ 'A'. IF SY-SUBRC EQ 0. PERFORM PROCESS_EXTRACTED_DATA_BEX. " Process BEX/WEB Extracted Data ENDIF. " IF SY-SUBRC EQ 0. ENDIF. " IF SY-SUBRC EQ 0. ENDIF. " IF R_RSRT EQ 'X'. ENDFORM. " EXTRACT_VARIANT_DATA *----------------------------------------------------------------------* * FORM DOWNLOAD_VARIANT_DATA * *----------------------------------------------------------------------* * This Subroutine is used to Download the Extracted Variant Data to a * * file on to the Local Work Station. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM DOWNLOAD_VARIANT_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 <> 0. MESSAGE I999(BCTRAIN) WITH 'CHECK YOUR SETTINGS'. ENDIF. " IF SY-SUBRC <> 0. ENDFORM. " DOWNLOAD_VARIANT_DATA *----------------------------------------------------------------------* * FORM UPLOAD_VARIANT_DATA * *----------------------------------------------------------------------* * This Subroutine is used to Upload the Stored Variant Data from a file* * on the Local Work Station. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM FILE_UPLOAD_VARIANT_DATA . * Call Method for File Upload............................. CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_UPLOAD EXPORTING FILENAME = P_FILE CHANGING DATA_TAB = I_FILE. IF SY-SUBRC <> 0. MESSAGE E999(BCTRAIN) WITH 'Check Your File Settings'. ENDIF. ENDFORM. " FILE_UPLOAD_VARIANT_DATA *----------------------------------------------------------------------* * FORM CREATE_VARIANT * *----------------------------------------------------------------------* * This Subroutine is used to Create Variants from the information on a * * file on the Local Work Station. * * Query COMPUID(Compressed ID) is different in different system, so * * before you update the Target System, Make sure that all the Tables * * are updated with the COMPUID(Compressed ID) of the Target system. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM CREATE_VARIANT. DATA LW_QUERY TYPE RSRREPDIR-COMPID. * Process the Uploaded data and insert records into table RSRVARIANTDIR LOOP AT I_FILE INTO S_FILE WHERE DATA+0(13) = 'RSRVARIANTDIR'. SPLIT S_FILE AT '~' INTO: W_TABLNAME LW_QUERY RSRVARIANTDIR-VARI RSRVARIANTDIR-OBJSTAT RSRVARIANTDIR-CONTREL W_CONTTIMESTMP RSRVARIANTDIR-OWNER RSRVARIANTDIR-BWAPPL RSRVARIANTDIR-TSTPNM W_TIMESTMP. READ TABLE I_RSRREPDIR WITH KEY COMPID = LW_QUERY. IF SY-SUBRC EQ 0. RSRVARIANTDIR-COMPUID = I_RSRREPDIR-COMPUID. CONCATENATE SY-DATUM SY-UZEIT INTO W_TIMESTMP. RSRVARIANTDIR-TIMESTMP = W_TIMESTMP. MODIFY RSRVARIANTDIR. CLEAR: RSRVARIANTDIR, I_RSRREPDIR, LW_QUERY. ENDIF. " IF SY-SUBRC EQ 0. ENDLOOP. " LOOP AT I_FILE INTO * Process the Uploaded data and insert records into table RSRVARIANTTXT LOOP AT I_FILE INTO S_FILE WHERE DATA+0(13) = 'RSRVARIANTTXT'. SPLIT S_FILE AT '~' INTO: W_TABLNAME RSRVARIANTTXT-LANGU LW_QUERY RSRVARIANTTXT-VARI RSRVARIANTTXT-TXTLG. READ TABLE I_RSRREPDIR WITH KEY COMPID = LW_QUERY. IF SY-SUBRC EQ 0. RSRVARIANTTXT-COMPUID = I_RSRREPDIR-COMPUID. MODIFY RSRVARIANTTXT. CLEAR: RSRVARIANTTXT, I_RSRREPDIR, LW_QUERY. ENDIF. " IF SY-SUBRC EQ 0. ENDLOOP. " LOOP AT I_FILE INTO * Process the Uploaded data and insert records into table RSRVARIANT LOOP AT I_FILE INTO S_FILE WHERE DATA+0(13) = 'RSRVARIANTXXX'. SPLIT S_FILE AT '~' INTO: W_TABLNAME LW_QUERY RSRVARIANT-VARI RSRVARIANT-POS RSRVARIANT-VNAM RSRVARIANT-PROTECTED RSRVARIANT-INVISIBLE RSRVARIANT-NO_IMPORT RSRVARIANT-SIGN RSRVARIANT-OPT RSRVARIANT-LOW RSRVARIANT-HIGH. READ TABLE I_RSRREPDIR WITH KEY COMPID = LW_QUERY. IF SY-SUBRC EQ 0. RSRVARIANT-COMPUID = I_RSRREPDIR-COMPUID. MODIFY RSRVARIANT. CLEAR: RSRVARIANT, I_RSRREPDIR, LW_QUERY. ENDIF. " IF SY-SUBRC EQ 0. ENDLOOP. " LOOP AT I_FILE INTO * Process the Uploaded data and insert records into table RSRPARAMETRIZA LOOP AT I_FILE INTO S_FILE WHERE DATA+0(14) = 'RSRPARAMETRIZA'. SPLIT S_FILE AT '~' INTO: W_TABLNAME I_RSRPARAMETRIZA-PARAMNM I_RSRPARAMETRIZA-OBJVERS I_RSRPARAMETRIZA-PARENTCOMPONENT I_RSRPARAMETRIZA-WORKBOOKID I_RSRPARAMETRIZA-ELTUID I_RSRPARAMETRIZA-PLNFUNCNM I_RSRPARAMETRIZA-TEMPLATE I_RSRPARAMETRIZA-PLANNINGSEQEUNCE W_VERSION I_RSRPARAMETRIZA-PERSONAL I_RSRPARAMETRIZA-OWNER I_RSRPARAMETRIZA-CONTENT I_RSRPARAMETRIZA-TSTPNM W_TIMESTMP W_CONTTIMESTMP. I_RSRPARAMETRIZA-VERSION = W_VERSION. CONCATENATE SY-DATUM SY-UZEIT INTO W_TIMESTMP. I_RSRPARAMETRIZA-TIMESTMP = W_TIMESTMP. I_RSRPARAMETRIZA-CONTTIMESTMP = W_CONTTIMESTMP. MODIFY RSRPARAMETRIZA FROM I_RSRPARAMETRIZA. CLEAR I_RSRPARAMETRIZA. ENDLOOP. " LOOP AT I_FILE INTO * Process the Uploaded data and insert records into table RSRPARAMETRIZAT LOOP AT I_FILE INTO S_FILE WHERE DATA+0(15) = 'RSRPARAMETRIZAT'. SPLIT S_FILE AT '~' INTO: W_TABLNAME I_RSRPARAMETRIZAT-LANGU I_RSRPARAMETRIZAT-PARAMNM I_RSRPARAMETRIZAT-OBJVERS I_RSRPARAMETRIZAT-TXTSH I_RSRPARAMETRIZAT-TXTMD I_RSRPARAMETRIZAT-TXTLG. MODIFY RSRPARAMETRIZAT from I_RSRPARAMETRIZAT. CLEAR I_RSRPARAMETRIZAT. ENDLOOP. " LOOP AT I_FILE INTO ENDFORM. " CREATE_VARIANT *----------------------------------------------------------------------* * PROCESS_EXTRACTED_DATA_RSRT * *----------------------------------------------------------------------* * This Subroutine is used to Process the Extracted Variant information.* * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM PROCESS_EXTRACTED_DATA_RSRT . DATA LW_QUERY TYPE RSRREPDIR-COMPID. * Process the Extracted data from table RSRVARIANTDIR................... LOOP AT I_RSRVARIANTDIR. READ TABLE I_RSRREPDIR WITH KEY COMPUID = I_RSRVARIANTDIR-COMPUID. IF SY-SUBRC EQ 0. LW_QUERY = I_RSRREPDIR-COMPID. CONCATENATE 'RSRVARIANTDIR' LW_QUERY I_RSRVARIANTDIR-VARI I_RSRVARIANTDIR-OBJSTAT I_RSRVARIANTDIR-CONTREL W_CONTTIMESTMP I_RSRVARIANTDIR-OWNER I_RSRVARIANTDIR-BWAPPL I_RSRVARIANTDIR-TSTPNM W_TIMESTMP INTO S_FILE-DATA SEPARATED BY '~'. APPEND S_FILE TO I_FILE. CLEAR: S_FILE, LW_QUERY, I_RSRREPDIR. ENDIF. " IF SY-SUBRC EQ 0. ENDLOOP. " LOOP AT I_RSRVARIANTDIR. * Process the Extracted data from table RSRVARIANTTXT........................ LOOP AT I_RSRVARIANTTXT. READ TABLE I_RSRREPDIR WITH KEY COMPUID = I_RSRVARIANTTXT-COMPUID. IF SY-SUBRC EQ 0. LW_QUERY = I_RSRREPDIR-COMPID. CONCATENATE 'RSRVARIANTTXT' I_RSRVARIANTTXT-LANGU LW_QUERY I_RSRVARIANTTXT-VARI I_RSRVARIANTTXT-TXTLG INTO S_FILE-DATA SEPARATED BY '~'. APPEND S_FILE TO I_FILE. CLEAR: S_FILE, LW_QUERY, I_RSRREPDIR. ENDIF. " IF SY-SUBRC EQ 0. ENDLOOP. " LOOP AT I_RSRVARIANTDIR. * Process the Extracted data from table RSRVARIANT........................ LOOP AT I_RSRVARIANT. READ TABLE I_RSRREPDIR WITH KEY COMPUID = I_RSRVARIANT-COMPUID. IF SY-SUBRC EQ 0. LW_QUERY = I_RSRREPDIR-COMPID. CONCATENATE 'RSRVARIANTXXX' LW_QUERY I_RSRVARIANT-VARI I_RSRVARIANT-POS I_RSRVARIANT-VNAM I_RSRVARIANT-PROTECTED I_RSRVARIANT-INVISIBLE I_RSRVARIANT-NO_IMPORT I_RSRVARIANT-SIGN I_RSRVARIANT-OPT I_RSRVARIANT-LOW I_RSRVARIANT-HIGH INTO S_FILE-DATA SEPARATED BY '~'. APPEND S_FILE TO I_FILE. CLEAR: S_FILE, LW_QUERY, I_RSRREPDIR. ENDIF. " IF SY-SUBRC EQ 0. ENDLOOP. " LOOP AT I_RSRVARIANTDIR. ENDFORM. " PROCESS_EXTRACTED_DATA_RSRT *----------------------------------------------------------------------* * PROCESS_EXTRACTED_DATA_BEX * *----------------------------------------------------------------------* * This Subroutine is used to Process the Extracted Global BEX and WEB * * Variant info. * * There are no Interface Parameters for this Subrouine. * *----------------------------------------------------------------------* FORM PROCESS_EXTRACTED_DATA_BEX . LOOP AT I_RSRPARAMETRIZA. W_VERSION = I_RSRPARAMETRIZA-VERSION. CONCATENATE 'RSRPARAMETRIZA' I_RSRPARAMETRIZA-PARAMNM I_RSRPARAMETRIZA-OBJVERS I_RSRPARAMETRIZA-PARENTCOMPONENT I_RSRPARAMETRIZA-WORKBOOKID I_RSRPARAMETRIZA-ELTUID I_RSRPARAMETRIZA-PLNFUNCNM I_RSRPARAMETRIZA-TEMPLATE I_RSRPARAMETRIZA-PLANNINGSEQEUNCE W_VERSION I_RSRPARAMETRIZA-PERSONAL I_RSRPARAMETRIZA-OWNER I_RSRPARAMETRIZA-CONTENT I_RSRPARAMETRIZA-TSTPNM W_TIMESTMP W_CONTTIMESTMP INTO S_FILE-DATA SEPARATED BY '~'. APPEND S_FILE TO I_FILE. CLEAR: S_FILE, W_VERSION. ENDLOOP. " LOOP AT I_RSRPARAMETRIZA. LOOP AT I_RSRPARAMETRIZAT. CONCATENATE 'RSRPARAMETRIZAT' I_RSRPARAMETRIZAT-LANGU I_RSRPARAMETRIZAT-PARAMNM I_RSRPARAMETRIZAT-OBJVERS I_RSRPARAMETRIZAT-TXTSH I_RSRPARAMETRIZAT-TXTMD I_RSRPARAMETRIZAT-TXTLG INTO S_FILE-DATA SEPARATED BY '~'. APPEND S_FILE TO I_FILE. CLEAR: S_FILE. ENDLOOP. " LOOP AT I_RSRPARAMETRIZAT. ENDFORM. " PROCESS_EXTRACTED_DATA_BEX *----------------------------------------------------------------------* * 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 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 <> 'X'. MESSAGE E999(BCTRAIN) WITH 'Check/Create Your File Settings'. ENDIF. " IF SY-SUBRC <> 0. ENDFORM. " CHECK_FILE_NAME