Sapforum.Biz
Инструменты => Администрирование (BC) => Тема начата: crxcrvs от Июнь 26, 2008, 04:30:12 pm
-
Добрый день Базису.
Не подскажите какой транзакцией можно выгрузить файлы запроса?
З.Ы. Версия 4.0
-
По 4.0 не помню... а с 4.6.есть CG3Y
-
З.Ы. Версия 4.0
Offtop: Да 4.0 уже найти сложно ::) у меня под рукой ни одной не осталось... Но если там пройдет совет №1, отпишись на всякий случай.
-
Увы нема CG3Y :-(
Пришлось переделать маршрут
-
Порылся в закромах.... Есть для 4.0 прога
REPORT Y_EXPORT_TRANS.
SELECTION-SCREEN BEGIN OF BLOCK MAIN WITH FRAME TITLE TEXT-003.
PARAMETERS: NUMREQ TYPE E070-TRKORR LOWER CASE OBLIGATORY,
LPATH(255) OBLIGATORY.
SELECTION-SCREEN END OF BLOCK MAIN.
SELECTION-SCREEN BEGIN OF BLOCK 0 WITH FRAME TITLE TEXT-004.
PARAMETER: EXFLAG AS CHECKBOX . "экспорт/импорт
SELECTION-SCREEN END OF BLOCK 0.
DATA: SFILE TYPE DRAW-FILEP, LEN TYPE I.
DATA: V_PATH TYPE STRING.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR LPATH.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_BROWSE
EXPORTING WINDOW_TITLE = 'Windows Title'
INITIAL_FOLDER = 'C:'
CHANGING SELECTED_FOLDER = V_PATH.
CALL METHOD CL_GUI_CFW=>FLUSH.
CONCATENATE V_PATH '\' INTO LPATH.
START-OF-SELECTION.
TRANSLATE NUMREQ TO UPPER CASE.
CONDENSE NUMREQ.
CONCATENATE NUMREQ+3 '.' NUMREQ(3) INTO SFILE.
CONDENSE LPATH.
LEN = STRLEN( LPATH ) - 1.
IF LPATH+LEN <> '\'.
CONCATENATE LPATH '\' INTO LPATH.
ENDIF.
IF EXFLAG IS INITIAL. "
* экспорт
* cofile
PERFORM EXP_FILE USING SFILE 'K'.
* data
PERFORM EXP_FILE USING SFILE 'R'.
PERFORM exp_file USING sfile 'D'.
ELSE.
* импорт на сервер приложений
* cofile
PERFORM IMP_FILE USING SFILE 'K'.
* data
PERFORM IMP_FILE USING SFILE 'R'.
PERFORM IMP_FILE USING SFILE 'D'. "001
ENDIF.
*&---------------------------------------------------------------------*
*& Form exp_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SFILE text
* -->P_0035 text
*----------------------------------------------------------------------*
FORM EXP_FILE USING P_SFILE
P_TYPE.
DATA: SPATH(255), FILENAME(255).
DATA: RC LIKE SY-SUBRC.
IF P_TYPE = 'K'.
SPATH = '/usr/sap/trans/cofiles/'.
* ELSE.
ELSEIF P_TYPE EQ 'R'.
SPATH = '/usr/sap/trans/data/'.
CONCATENATE P_TYPE P_SFILE+1 INTO P_SFILE.
ELSEIF P_TYPE EQ 'D'.
SPATH = '/usr/sap/trans/data/'.
CONCATENATE P_TYPE P_SFILE+1 INTO P_SFILE.
ENDIF.
CALL FUNCTION 'DOCFILE_SERVER_TO_CLIENT'
EXPORTING
SOURCEPATH = SPATH
SOURCEFILE = P_SFILE
TARGETPATH = LPATH
TARGETFILE = P_SFILE
EXCEPTIONS
ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
WRITE: / TEXT-001, (11) P_SFILE.
ELSE.
WRITE: /(11) P_SFILE, TEXT-002.
ENDIF.
ENDFORM. " exp_file
*&---------------------------------------------------------------------*
*& Form imp_file
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_SFILE text
* -->P_0084 text
*----------------------------------------------------------------------*
FORM IMP_FILE USING P_SFILE
P_TYPE.
DATA: SPATH(255).
IF P_TYPE = 'K'.
SPATH = '/usr/sap/trans/cofiles/'.
ELSEIF P_TYPE = 'R'.
SPATH = '/usr/sap/trans/data/'.
CONCATENATE 'R' P_SFILE+1 INTO P_SFILE.
ELSE.
SPATH = '/usr/sap/trans/data/'. "001
CONCATENATE 'D' P_SFILE+1 INTO P_SFILE. "001
ENDIF.
CALL FUNCTION 'DOCFILE_CLIENT_TO_SERVER'
EXPORTING
SOURCEPATH = LPATH
SOURCEFILE = P_SFILE
TARGETPATH = SPATH
TARGETFILE = P_SFILE
.
IF SY-SUBRC <> 0.
WRITE: / TEXT-005, (11) P_SFILE.
ELSE.
WRITE: /(11) P_SFILE, TEXT-006.
ENDIF.
ENDFORM. " imp_file
-
Супер спасибо - тока смущает CL_GUI_FRONTEND_SERVICES
боюсь его там тоже нема - но ниче перепишем.
-
Вот еще вариант, но его не юзал....
REPORT ZSWSUPTR LINE-SIZE 132 MESSAGE-ID 38.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(20) CTXT-P01.
SELECTION-SCREEN POSITION 24.
PARAMETER P_TRNBR(10).
SELECTION-SCREEN COMMENT 36(24) CTXT-T01.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER P_XMIT AS CHECKBOX.
SELECTION-SCREEN COMMENT 4(17) CTXT-P02.
SELECTION-SCREEN POSITION 24.
PARAMETER P_PATH(72) LOWER CASE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER P_ADDBUF AS CHECKBOX.
SELECTION-SCREEN COMMENT 4(17) CTXT-P03.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETER P_IMPORT AS CHECKBOX.
SELECTION-SCREEN COMMENT 4(26) CTXT-P04.
PARAMETER P_CLIENT(3) TYPE N DEFAULT SY-MANDT.
SELECTION-SCREEN COMMENT 36(24) CTXT-U01.
PARAMETER P_UCODE(8) DEFAULT '124'.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
INITIALIZATION.
CTXT-P01 = 'Transport request'.
CTXT-P02 = 'Upload files from'.
CTXT-P03 = 'Add to buffer'.
CTXT-P04 = 'Import transport to client'.
CTXT-T01 = '(format: <SID>K9<nnnnn>)'.
CTXT-U01 = 'with unconditional modes'.
DATA: D_FNAME LIKE RLGRAP-FILENAME,
D_FILE(12),
D_FSIZE(10) TYPE N,
D_DSN(70),
D_POS LIKE SY-FDPOS,
H_CMD(200).
DATA: BEGIN OF T_XTAB OCCURS 100,
X(500),
END OF T_XTAB.
DATA: BEGIN OF RES OCCURS 0,
LINE(200),
END OF RES.
INITIALIZATION.
*==============
CALL FUNCTION 'WS_QUERY'
EXPORTING
QUERY = 'CD'
IMPORTING
RETURN = P_PATH
EXCEPTIONS
INV_QUERY = 1
NO_BATCH = 2
FRONTEND_ERROR = 3.
AT SELECTION-SCREEN ON P_PATH.
SY-INDEX = STRLEN( P_PATH ) - 1.
SY-INPUT = P_PATH+SY-INDEX(1).
IF SY-INPUT <> '\'.
SY-INDEX = SY-INDEX + 1.
P_PATH+SY-INDEX = '\'.
ENDIF.
START-OF-SELECTION.
*==================
IF P_XMIT EQ 'X'.
PERFORM TRANSMIT.
ENDIF.
IF P_ADDBUF EQ 'X'.
PERFORM ADDTOBUFFER.
ENDIF.
IF P_IMPORT EQ 'X'.
PERFORM IMPORT.
ENDIF.
END-OF-SELECTION.
*================
FORM TRANSMIT.
FORMAT RESET INTENSIFIED ON.
ULINE. WRITE: 'Upload:' INTENSIFIED OFF. ULINE.
D_FILE = P_TRNBR.
SHIFT D_FILE CIRCULAR BY 3 PLACES.
SHIFT D_FILE+7.
D_FILE+7(1) = '.'.
D_FILE(1) = 'E'.
D_FNAME = P_PATH.
D_POS = STRLEN( P_PATH ).
WRITE D_FILE TO D_FNAME+D_POS.
PERFORM UPLOAD USING D_FNAME D_FSIZE 'E'.
IF SY-SUBRC <> 0.
PERFORM SET-TRANSDIR-FILE USING 'log' 'E' CHANGING D_DSN.
PERFORM PUT-FILE USING D_DSN.
ENDIF.
D_FILE(1) = 'K'.
WRITE D_FILE TO D_FNAME+D_POS.
PERFORM UPLOAD USING D_FNAME D_FSIZE 'K'.
PERFORM SET-TRANSDIR-FILE USING 'cofiles' 'K' CHANGING D_DSN.
PERFORM PUT-FILE USING D_DSN.
D_FILE(1) = 'R'.
WRITE D_FILE TO D_FNAME+D_POS.
PERFORM UPLOAD USING D_FNAME D_FSIZE 'R'.
PERFORM SET-TRANSDIR-FILE USING 'data' 'R' CHANGING D_DSN.
PERFORM PUT-FILE USING D_DSN.
ENDFORM.
*---------------------------------------------------------------------*
* FORM UPLOAD *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> F_FNAME *
* --> F_FSIZE *
*---------------------------------------------------------------------*
FORM UPLOAD USING F_FNAME F_FSIZE F_TYPE.
REFRESH T_XTAB.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = F_FNAME
FILETYPE = 'BIN'
IMPORTING
FILELENGTH = F_FSIZE
TABLES
DATA_TAB = T_XTAB
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2.
IF SY-SUBRC <> 0 AND F_TYPE <> 'E'.
MESSAGE E000 WITH 'Data file' F_FNAME 'could not be found ...'.
ENDIF.
ENDFORM.
*---------------------------------------------------------------------*
* FORM PUT-FILE *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> F_DSN *
*---------------------------------------------------------------------*
FORM PUT-FILE USING F_DSN.
DATA: DF_RSIZE(3) TYPE N,
DF_FSIZE(10) TYPE N.
DESCRIBE FIELD T_XTAB LENGTH DF_RSIZE.
DF_FSIZE = D_FSIZE.
WRITE: / F_DSN, D_FSIZE NO-ZERO.
OPEN DATASET F_DSN FOR OUTPUT IN BINARY MODE.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH 'Dataset' F_DSN
'could not be opened ...'.
ENDIF.
LOOP AT T_XTAB.
IF DF_FSIZE < DF_RSIZE.
DF_RSIZE = DF_FSIZE.
ELSE.
DF_FSIZE = DF_FSIZE - DF_RSIZE.
ENDIF.
TRANSFER T_XTAB TO F_DSN LENGTH DF_RSIZE.
ENDLOOP.
CLOSE DATASET F_DSN.
ENDFORM.
*---------------------------------------------------------------------*
* FORM ADDTOBUFFER *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM ADDTOBUFFER.
PERFORM SET-TP_EXE CHANGING H_CMD.
REPLACE: '&V0' WITH 'addtobuffer' INTO H_CMD,
'&V1' WITH P_TRNBR INTO H_CMD,
'&V2' WITH SY-SYSID(3) INTO H_CMD,
'&V3' WITH SPACE INTO H_CMD,
'&V4' WITH SPACE INTO H_CMD,
'&V5' WITH SPACE INTO H_CMD,
'&V6' WITH SPACE INTO H_CMD,
'&V7' WITH SPACE INTO H_CMD,
'&V8' WITH SPACE INTO H_CMD,
'&V9' WITH SPACE INTO H_CMD.
CONDENSE H_CMD.
FORMAT RESET INTENSIFIED ON.
ULINE. WRITE: 'Command:' INTENSIFIED OFF, H_CMD. ULINE.
REFRESH RES.
CALL 'SYSTEM' ID 'COMMAND' FIELD H_CMD
ID 'TAB' FIELD RES[].
FORMAT INTENSIFIED OFF.
LOOP AT RES.
WRITE:/ RES-LINE.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM IMPORT *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
FORM IMPORT.
DATA: W_CLIENT(9) VALUE 'client&',
W_UNCOND(9) VALUE 'u&'.
PERFORM SET-TP_EXE CHANGING H_CMD.
REPLACE: '&' WITH P_CLIENT(3) INTO W_CLIENT,
'&' WITH P_UCODE INTO W_UNCOND.
REPLACE: '&V0' WITH 'import' INTO H_CMD,
'&V1' WITH P_TRNBR INTO H_CMD,
'&V2' WITH SY-SYSID(3) INTO H_CMD,
'&V3' WITH W_CLIENT INTO H_CMD,
'&V4' WITH W_UNCOND INTO H_CMD,
'&V5' WITH SPACE INTO H_CMD,
'&V6' WITH SPACE INTO H_CMD,
'&V7' WITH SPACE INTO H_CMD,
'&V8' WITH SPACE INTO H_CMD,
'&V9' WITH SPACE INTO H_CMD.
CONDENSE H_CMD.
FORMAT RESET INTENSIFIED ON.
ULINE. WRITE: 'Command:' INTENSIFIED OFF, H_CMD. ULINE.
REFRESH RES.
CALL 'SYSTEM' ID 'COMMAND' FIELD H_CMD
ID 'TAB' FIELD RES[].
FORMAT INTENSIFIED OFF.
LOOP AT RES.
WRITE:/ RES-LINE.
ENDLOOP.
ENDFORM.
*---------------------------------------------------------------------*
* FORM SET-TRANSDIR-FILE *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> F_SUBDIR *
* --> F_ID *
* --> F_DSN *
*---------------------------------------------------------------------*
FORM SET-TRANSDIR-FILE USING F_SUBDIR F_ID CHANGING F_DSN.
DATA: DF_DIR(10) VALUE 'trans/file',
DF_FILE(14).
DF_FILE = P_TRNBR.
SHIFT DF_FILE CIRCULAR BY 3 PLACES.
SHIFT DF_FILE+7 BY 3 PLACES.
DF_FILE+7(1) = '.'.
DF_FILE(1) = F_ID.
IF F_SUBDIR = 'log'.
SHIFT DF_FILE BY 3 PLACES RIGHT.
DF_FILE(3) = P_TRNBR(3).
ENDIF.
CALL 'C_SAPGPARAM' ID 'NAME' FIELD DF_DIR
ID 'VALUE' FIELD F_DSN.
REPLACE '--------' WITH F_SUBDIR INTO F_DSN.
REPLACE '++++++++' WITH DF_FILE INTO F_DSN.
ENDFORM.
*---------------------------------------------------------------------*
* FORM SET-TP_EXE *
*---------------------------------------------------------------------*
* ........ *
*---------------------------------------------------------------------*
* --> F_PATH *
*---------------------------------------------------------------------*
FORM SET-TP_EXE CHANGING F_PATH.
DATA: DF_DIR(16) VALUE 'transport/exe_tp'.
CALL 'C_SAPGPARAM' ID 'NAME' FIELD DF_DIR
ID 'VALUE' FIELD F_PATH.
ENDFORM.
-
Для текстов программ используем: [сode] [/сode] ;)