Foro -Documentación -Código fuente -Contacto -Empleo

Buscar

Traducir

Amazon

ZTPIMPDL PDF Imprimir E-mail
Usar puntuación: / 0
MaloBueno 
Código fuente - Utilidades varias
Sábado, 28 de Febrero de 2004 00:41
Read import buffer of a system and delete or import REPORT ZTPIMPDL MESSAGE-ID 38 NO STANDARD PAGE HEADING. ************************************************************************ * Change request overview - Import to systems in TPPARAM * ************************************************************************ * Author * * Tomas Gustafsson - Implema AB * * Description * * This is only a template. No support is given for this function!!! * * * * The program reads the import buffer of a selected system and * * import or deletes (depends on selected radio-button) * * selected change requests from buffer * ************************************************************************ *----------------------------------------------------------------------* * Ver Date Who What * *----------------------------------------------------------------------* * 002 19980605 Tomas.G Support for hostname longer than 8 char * * 003 * *----------------------------------------------------------------------* * Result from os call in table form. DATA: OS_RESULT LIKE BTCXPM OCCURS 0 WITH HEADER LINE. * Internal tables for requests. DATA: BEGIN OF I_E070 OCCURS 0, "Table containing read requests TRKORR LIKE E070-TRKORR, END OF I_E070. DATA: BEGIN OF I_SEL_E070 OCCURS 0, "Table containing selected requests TRKORR LIKE E070-TRKORR, SELECT_LINE_KEEP, "Line selected or not (' '/'X') SELECT_LINE_EXIST, "Line selected or not (' '/'X') SELECT_LINE_FORCE, "Line selected or not (' '/'X') * select_line_cli000, "Line selected or not (' '/'X') END OF I_SEL_E070. DATA: SELECT_LINE, "Line selected or not (' '/'X') SELECT_LINE_KEEP, "Line selected or not (' '/'X') SELECT_LINE_EXIST, "Line selected or not (' '/'X') SELECT_LINE_FORCE, "Line selected or not (' '/'X') * select_line_cli000, "Line selected or not (' '/'X') OS_CALL_STATUS LIKE BTCXP3-EXITSTAT. "Status from os call DATA: KORR_HEAD(14) VALUE 'Change Request', * cli_head(10) value 'to client ', KEEP_HEAD(14) VALUE 'Keep in buffer', EXIST_HEAD(12) VALUE 'Import again', FORCE_HEAD(12) VALUE 'Force import', UMODE_STRING(10), CLIENT_STRING(10). DATA W_PAGE(2). DATA TP_PARAMETER LIKE SXPGCOLIST-PARAMETERS. "parameters sent to tp DATA: BEGIN OF VERSION_INFO OCCURS 0, "002 LINE(80), "002 END OF VERSION_INFO. "002 DATA: TARGET_SYSTEM LIKE BTCXP1-RECEIVER. SELECTION-SCREEN: BEGIN OF BLOCK SYS WITH FRAME. PARAMETERS: SYSTEM LIKE SY-SYSID DEFAULT SY-SYSID. SELECTION-SCREEN: END OF BLOCK SYS. SELECTION-SCREEN: BEGIN OF BLOCK TP WITH FRAME. PARAMETERS: IMPORT RADIOBUTTON GROUP WHAT DEFAULT 'X', TAR_CLI LIKE SY-MANDT DEFAULT SY-MANDT. SELECTION-SCREEN: SKIP. PARAMETERS: DELETE RADIOBUTTON GROUP WHAT. SELECTION-SCREEN: END OF BLOCK TP. INCLUDE . "In order to print symbols AT SELECTION-SCREEN ON TAR_CLI. IF TAR_CLI EQ '000'. MESSAGE E016(38) WITH 'This program does not allow import to client' '000'. ENDIF. TOP-OF-PAGE. PERFORM WRITE_PAGE_HEADER. TOP-OF-PAGE DURING LINE-SELECTION. PERFORM WRITE_PAGE_HEADER. START-OF-SELECTION. * Check Authorization (Should be equal to SPAM) AUTHORITY-CHECK OBJECT 'S_TRANSPRT' ID 'TTYPE' FIELD 'UPGR' "Upgrade/Installation ID 'ACTVT' FIELD '60'. "Import IF SY-SUBRC NE 0. MESSAGE E016 WITH 'You are not authorized to run this program'. ENDIF. W_PAGE = '08'. * Read hostname (SY-HOST only support up to 8 char.) "002 CALL 'SAPCORE' ID 'ID' FIELD 'VERSION' "002 ID 'TABLE' FIELD VERSION_INFO-*SYS*. "002 READ TABLE VERSION_INFO INDEX 8. "002 TARGET_SYSTEM = VERSION_INFO-LINE+21(20). "002 * Check that import is only performed into current system IF SYSTEM NE SY-SYSID AND IMPORT EQ 'X'. FORMAT INTENSIFIED ON. WRITE: / 'You selected to import to a different system ', '(' NO-GAP, SYSTEM NO-GAP, ')' NO-GAP, / ' then the current one' , '(' NO-GAP, SY-SYSID NO-GAP, ')' NO-GAP, / 'There MIGHT be problems to IMPORT to another system', / 'Delete from import buffer can be used without problems'. FORMAT INTENSIFIED OFF. SKIP. ENDIF. * Read the import buffer of wanted system. PERFORM READ_TP_BUFFER. * ensure that entries where selected. READ TABLE I_E070 INDEX 1. IF SY-SUBRC NE 0. FORMAT INTENSIFIED ON. WRITE: / 'No entries found in import buffer for system', SYSTEM. FORMAT INTENSIFIED OFF. STOP. ENDIF. SORT I_E070. LOOP AT I_E070. IF IMPORT EQ 'X'. PERFORM WRITE_IMPORT_LINE. ELSE. PERFORM WRITE_DELETE_LINE. ENDIF. ENDLOOP. IF IMPORT EQ 'X'. ULINE /(61). ELSE. ULINE /(20). ENDIF. * Write information about which function key to press once more SKIP. PERFORM INFO_F8. AT PF08. * Check that user press F8 at proper screen CHECK SY-LSIND = 1. REFRESH I_SEL_E070. W_PAGE = '20'. * Read all lines of list and check if line where selected. DO. MOVE SPACE TO: I_E070-TRKORR, * select_line_cli000, SELECT_LINE_KEEP, SELECT_LINE_EXIST, SELECT_LINE_FORCE, SELECT_LINE. READ LINE SY-INDEX FIELD VALUE SELECT_LINE * select_line_cli000 SELECT_LINE_KEEP SELECT_LINE_EXIST SELECT_LINE_FORCE I_E070-TRKORR. * Avoid endless loop IF SY-SUBRC NE 0. EXIT. ENDIF. * Filter unselected lines CHECK SELECT_LINE = 'X'. * Change request found ? IF I_E070-TRKORR NE SPACE. I_SEL_E070-TRKORR = I_E070-TRKORR. * i_sel_e070-select_line_cli000 = select_line_cli000. I_SEL_E070-SELECT_LINE_KEEP = SELECT_LINE_KEEP. I_SEL_E070-SELECT_LINE_EXIST = SELECT_LINE_EXIST. I_SEL_E070-SELECT_LINE_FORCE = SELECT_LINE_FORCE. APPEND I_SEL_E070. ENDIF. ENDDO. * Avoid "empty headings" READ TABLE I_SEL_E070 INDEX 1. IF SY-SUBRC NE 0. MESSAGE S016(38) WITH 'No lines selected.' 'Please try again'. STOP. ENDIF. LOOP AT I_SEL_E070. IF IMPORT EQ 'X'. PERFORM WRITE_IMPORT_LINE_2. ELSE. PERFORM WRITE_DELETE_LINE_2. ENDIF. ENDLOOP. IF IMPORT EQ 'X'. ULINE /(61). ELSE. ULINE /(20). ENDIF. * Write information about which function key to press SKIP 2. PERFORM INFO_F20. AT PF20. * Check that user press F20 at proper screen CHECK SY-LSIND = 2. W_PAGE = '00'. * perform selected action for each change request. LOOP AT I_SEL_E070. CLEAR TP_PARAMETER. IF IMPORT EQ 'X'. * Unconditional modes UMODE_STRING = 'u'. * Keep change request in buffer after import IF I_SEL_E070-SELECT_LINE_KEEP EQ 'X'. UMODE_STRING+1(1) = '0'. ENDIF. * Import even if change request already exists IF I_SEL_E070-SELECT_LINE_EXIST EQ 'X'. UMODE_STRING+2(1) = '1'. ENDIF. * Overwrite originals AND ignore table class limit IF I_SEL_E070-SELECT_LINE_FORCE EQ 'X'. UMODE_STRING+3(2) = '28'. ENDIF. CONDENSE UMODE_STRING NO-GAPS. IF UMODE_STRING+1(1) EQ SPACE. UMODE_STRING = SPACE. ENDIF. * Current client or client 000 CLIENT_STRING = 'client='. * if i_sel_e070-select_line_cli000 eq 'X'. CLIENT_STRING+7(3) = TAR_CLI. * else. * client_string+7(3) = sy-mandt. * endif. * create import parameter CONCATENATE 'import' I_SEL_E070-TRKORR SYSTEM CLIENT_STRING UMODE_STRING INTO TP_PARAMETER SEPARATED BY ' '. CONDENSE TP_PARAMETER. ELSE. * Easier then import, isn't it ?? CONCATENATE 'delfrombuffer' I_SEL_E070-TRKORR SYSTEM INTO TP_PARAMETER SEPARATED BY ' '. CONDENSE TP_PARAMETER. ENDIF. FORMAT INTENSIFIED ON. WRITE: / 'tp', (40) TP_PARAMETER. FORMAT INTENSIFIED OFF. PERFORM CALL_TP. IF OS_CALL_STATUS EQ 'E'. FORMAT INTENSIFIED ON. LOOP AT OS_RESULT. WRITE: / OS_RESULT-MESSAGE. ENDLOOP. FORMAT INTENSIFIED OFF. ELSE. LOOP AT OS_RESULT. WRITE: / OS_RESULT-MESSAGE. ENDLOOP. ENDIF. SKIP. ENDLOOP. *----------------------------------------------------------------------* * FORM CALL_TP * *----------------------------------------------------------------------* * Call program tp via operating system * *----------------------------------------------------------------------* * --> tp_parameter * the parameter for tp. E g "showbuffer C11" * * <-- os_call_status * returned os-call status O=Ok E=Error * * <-- os_result * internal table with output from call * *----------------------------------------------------------------------* FORM CALL_TP. CALL FUNCTION 'SXPG_COMMAND_EXECUTE' EXPORTING COMMANDNAME = 'ZTP' ADDITIONAL_PARAMETERS = TP_PARAMETER TARGETSYSTEM = TARGET_SYSTEM "002 IMPORTING STATUS = OS_CALL_STATUS TABLES EXEC_PROTOCOL = OS_RESULT EXCEPTIONS NO_PERMISSION = 1 COMMAND_NOT_FOUND = 2 PARAMETERS_TOO_LONG = 3 SECURITY_RISK = 4 WRONG_CHECK_CALL_INTERFACE = 5 PROGRAM_START_ERROR = 6 PROGRAM_TERMINATION_ERROR = 7 X_ERROR = 8 PARAMETER_EXPECTED = 9 TOO_MANY_PARAMETERS = 10 ILLEGAL_COMMAND = 11 WRONG_ASYNCHRONOUS_PARAMETERS = 12 CANT_ENQ_TBTCO_ENTRY = 13 JOBCOUNT_GENERATION_ERROR = 14 OTHERS = 15. ENDFORM. *----------------------------------------------------------------------* * FORM READ_TP_BUFFER * *----------------------------------------------------------------------* * Read change requests from tp buffer * *----------------------------------------------------------------------* * <-- i_e070 * Internal table with change requests from buffer * *----------------------------------------------------------------------* FORM READ_TP_BUFFER. DATA: TEXTLINE(255), TEMP1(52), FILENAME(64). * find path of buffer-directory and create full path to buffer CALL 'C_SAPGPARAM' ID 'NAME' FIELD 'DIR_TRANS' ID 'VALUE' FIELD TEMP1. IF TEMP1 EQ SPACE. FILENAME = '/usr/sap/trans/buffer/'. ELSE. IF TEMP1 CA '/'. CONCATENATE TEMP1 '/buffer/' SYSTEM INTO FILENAME. CONDENSE FILENAME NO-GAPS. ELSE. CONCATENATE TEMP1 '\buffer\' SYSTEM INTO FILENAME. CONDENSE FILENAME NO-GAPS. ENDIF. ENDIF. REFRESH I_E070. OPEN DATASET FILENAME IN TEXT MODE FOR INPUT. DO. READ DATASET FILENAME INTO TEXTLINE. IF SY-SUBRC NE 0. EXIT. ENDIF. CHECK TEXTLINE(1) NE '#'. IF TEXTLINE(10) NE SPACE. MOVE TEXTLINE(10) TO I_E070-TRKORR. CONDENSE I_E070-TRKORR. APPEND I_E070. ENDIF. ENDDO. CLOSE DATASET FILENAME. * Check if any change requests where found READ TABLE I_E070 INDEX 1. IF SY-SUBRC NE 0. WRITE: / 'No change requests found for system', SYSTEM. STOP. ENDIF. ENDFORM. *----------------------------------------------------------------------* * FORM READ_TP_BUFFER * *----------------------------------------------------------------------* * Read the import buffer for selected system * *----------------------------------------------------------------------* * <-- i_e070 * Internal table with change requests from buffer * *----------------------------------------------------------------------* FORM OLD_READ_TP_BUFFER. * Read local buffer CONCATENATE 'showbuffer' SYSTEM INTO TP_PARAMETER SEPARATED BY ' '. CONDENSE TP_PARAMETER. PERFORM CALL_TP. IF OS_CALL_STATUS EQ 'E'. FORMAT INTENSIFIED ON. ULINE. WRITE: / 'read buffer failed'. ULINE. LOOP AT OS_RESULT. WRITE: / OS_RESULT-MESSAGE. ENDLOOP. FORMAT INTENSIFIED OFF. STOP. ELSE. REFRESH I_E070. LOOP AT OS_RESULT. IF OS_RESULT-MESSAGE+2(10) CA '0123456789' AND OS_RESULT-MESSAGE(2) EQ SPACE. I_E070-TRKORR = OS_RESULT-MESSAGE+2(10). COLLECT I_E070. ENDIF. ENDLOOP. ENDIF. ENDFORM. *----------------------------------------------------------------------* * FORM INFO_F8 * *----------------------------------------------------------------------* * Tell user to use F8 to continue * *----------------------------------------------------------------------* FORM INFO_F8. FORMAT INTENSIFIED ON. WRITE: / SYM_RIGHT_HAND AS SYMBOL, 5 'Press F8 to continue', 27 SYM_LEFT_HAND AS SYMBOL. FORMAT INTENSIFIED OFF. ENDFORM. *----------------------------------------------------------------------* * FORM INFO_F20 * *----------------------------------------------------------------------* * Tell user to use F20 to continue * *----------------------------------------------------------------------* FORM INFO_F20. FORMAT INTENSIFIED ON. WRITE: / SYM_RIGHT_HAND AS SYMBOL, 5 'Press F20 (shift+F8) to continue', 40 SYM_LEFT_HAND AS SYMBOL. FORMAT INTENSIFIED OFF. ENDFORM. *----------------------------------------------------------------------* * FORM WRITE_IMPORT_HEAD * *----------------------------------------------------------------------* * Write header for import selection (first screen). * *----------------------------------------------------------------------* FORM WRITE_IMPORT_HEAD. ULINE /(61). WRITE: / SY-VLINE, 5 SY-VLINE NO-GAP, KORR_HEAD NO-GAP, SY-VLINE NO-GAP, * cli_head no-gap, * tar_cli(3) no-gap, * sy-vline no-gap, KEEP_HEAD NO-GAP, SY-VLINE NO-GAP, EXIST_HEAD NO-GAP, SY-VLINE NO-GAP, FORCE_HEAD NO-GAP, SY-VLINE NO-GAP. ULINE /(61). ENDFORM. *----------------------------------------------------------------------* * FORM WRITE_IMPORT_LINE * *----------------------------------------------------------------------* * Write a line for import selection (first screen). * *----------------------------------------------------------------------* FORM WRITE_IMPORT_LINE. WRITE: / SY-VLINE, SELECT_LINE AS CHECKBOX, SY-VLINE, 8 I_E070-TRKORR, * 20 sy-vline, * 28 select_line_cli000 as checkbox, * 34 sy-vline, * 41 select_line_keep as checkbox, * 49 sy-vline, * 56 select_line_exist as checkbox, * 62 sy-vline, * 68 select_line_force as checkbox, * 75 sy-vline. 20 SY-VLINE, 27 SELECT_LINE_KEEP AS CHECKBOX, 35 SY-VLINE, 42 SELECT_LINE_EXIST AS CHECKBOX, 48 SY-VLINE, 54 SELECT_LINE_FORCE AS CHECKBOX, 61 SY-VLINE. ENDFORM. *----------------------------------------------------------------------* * FORM WRITE_IMPORT_LINE_2 * *----------------------------------------------------------------------* * Write a line for import selection (second screen). * *----------------------------------------------------------------------* FORM WRITE_IMPORT_LINE_2. WRITE: / SY-VLINE, 5 SY-VLINE, 8 I_SEL_E070-TRKORR, * 20 sy-vline, * 28 i_sel_e070-select_line_cli000 as checkbox input off, * 34 sy-vline, * 41 i_sel_e070-select_line_keep as checkbox input off, * 49 sy-vline, * 56 i_sel_e070-select_line_exist as checkbox input off, * 62 sy-vline, * 68 i_sel_e070-select_line_force as checkbox input off, * 75 sy-vline. 20 SY-VLINE, 27 I_SEL_E070-SELECT_LINE_KEEP AS CHECKBOX INPUT OFF, 35 SY-VLINE, 42 I_SEL_E070-SELECT_LINE_EXIST AS CHECKBOX INPUT OFF, 48 SY-VLINE, 54 I_SEL_E070-SELECT_LINE_FORCE AS CHECKBOX INPUT OFF, 61 SY-VLINE. ENDFORM. *----------------------------------------------------------------------* * FORM WRITE_DELETE_HEAD * *----------------------------------------------------------------------* * Write header for delete selection (first screen). * *----------------------------------------------------------------------* FORM WRITE_DELETE_HEAD. ULINE /(20). WRITE: / SY-VLINE, 5 SY-VLINE NO-GAP, KORR_HEAD NO-GAP, SY-VLINE NO-GAP. ULINE /(20). ENDFORM. *----------------------------------------------------------------------* * FORM WRITE_DELETE_LINE * *----------------------------------------------------------------------* * Write a line for delete selection (first screen). * *----------------------------------------------------------------------* FORM WRITE_DELETE_LINE. WRITE: / SY-VLINE, SELECT_LINE AS CHECKBOX, SY-VLINE, 8 I_E070-TRKORR, 20 SY-VLINE. ENDFORM. *----------------------------------------------------------------------* * FORM WRITE_DELETE_LINE_2 * *----------------------------------------------------------------------* * Write a line for delete selection (second screen). * *----------------------------------------------------------------------* FORM WRITE_DELETE_LINE_2. WRITE: / SY-VLINE, 5 SY-VLINE, 8 I_SEL_E070-TRKORR, 20 SY-VLINE. ENDFORM. *----------------------------------------------------------------------* * FORM WRITE_PAGE_HEADER * *----------------------------------------------------------------------* * Write header lines for selected/"to be selected" data. * *----------------------------------------------------------------------* FORM WRITE_PAGE_HEADER. IF IMPORT EQ 'X'. WRITE: / 'Import' COLOR COL_TOTAL, 'objects to system', SYSTEM COLOR COL_TOTAL, 'client', TAR_CLI COLOR COL_TOTAL. ELSE. WRITE: / 'Delete' COLOR COL_TOTAL, 'objects in buffer of system', SYSTEM COLOR COL_TOTAL. ENDIF. ULINE. CASE W_PAGE. WHEN '08'. * Write information about which function key to press SKIP. PERFORM INFO_F8. SKIP. * List available change requests. SKIP. ULINE. WRITE: / 'Please select change request(s)'. WHEN '20'. * Write information about which function key to press SKIP. PERFORM INFO_F20. * Write selected change request(s) SKIP 2. WRITE: / 'The following change request(s) where selected'. ENDCASE. SKIP. IF IMPORT EQ 'X'. PERFORM WRITE_IMPORT_HEAD. ELSE. PERFORM WRITE_DELETE_HEAD. ENDIF. ENDFORM. *** End of ZTPIMPDL ***
Comentarios
Buscar
¡Sólo los usuarios registrados pueden escribir comentarios!

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 
home search