REPORT Z01_TRANS_TEST .
*
* Features:
*----------
*** Descarga Ordenes -> Si no estan liberadas, las libera
*** Sube Ordenes -> Y las anyade en la cola
*** Anyade en cola
*** Quita de la cola
*** Libera Ordenes
*** Transporta ordenes de Workbench (Con posibilidad de Modo Sincrono / Asincrono)
*** Copia Ordenes de Custo mediante SCC1
*** Log de transporte
*** Borra Ordenes de Data y Cofiles
*
*History:
*--------
* [3.0.2] Cambiada 'TMS_MGR_GREP_TRANSPORT_QUEUE' por 'TMS_MGR_FORWARD_TR_REQUEST'
* [3.0.3] Anyadido parametro IMPAGAIN <- Importar otra vez
* [3.0.4] Anyadido la creacion de textos dinamicos
* [3.0.5] Arreglado el problema con la liberacion de las ordenes
* [3.0.6] +SE09 + STMS
* [3.0.7] +Log en Anyadir ordenes
* [3.0.8] +Arreglados botones
* [3.0.9] Cambiado Flujo de Transporte con posibilidad de remove+add+transport
* [3.0.10] Mejorado el interface con Listado de ordenes
* [3.1.0] Creacion de un Log de transporte
* [3.1.1] Cambio de mensajes por pantalla
* [3.1.2] Arreglado Bug en transporte en grupo
* [3.1.3] Borrado de las ordenes DATA/Cofiles
* [3.1.3.1] Movido error al final, para proteger
* [3.1.4] Anyadida busqueda en server de ficheros a descargar
* [3.1.5] Mejorado los textos de los parametros y corregidas sentencias obsoletas
* [3.1.6] Ver log de acciones
* [3.1.7] Anyadido visualizador de Logs en las diferentes maquinas
* [3.1.8] Anyadido visualizador de Logs en las diferentes maquinas
* [3.1.8.1] Arreglado BUg de Logs para que siempre grabe antes que salga el luser
* [3.1.8.2] Arreglado el ignorar versiones
* [3.1.9] Añadido rango para la seleccion del LOG
* [3.1.10] Corregidos bugs de tar iv_system
* [3.1.11] Creacion de una nueva orden de transporte
* [3.1.12] Evitamos DUMP en nuevas versiones de SAP en el pase de parametro de la funcion COMPLEX_SELECTIONS_DIALOG
* [3.1.13] Añadido log para el borrado de ordenes
* [3.1.14] Corregido error de import/export de ordenes con numero igual, pero distinto sistema y mas mejoras
* [3.1.15] Convertido a OOP. ¿Era necesario? NO ¿Ha sido divertido? NO ¿Entonces? Pues eso,
* [3.1.16] Corregido error del IV_CLIENT y problemas con los mensajes
*--[ Mejoras para la traduccion
CONSTANTS: VERSION(10) VALUE 'v3.1.16',
C_TXT_TITLE(35) VALUE 'ZTMS :: Transport Management System',
COPYLEFT(50) VALUE 'Alex Bergonzini 2009-2013',
URL_SOURCE(50) VALUE 'http://www.bergonzini.com',
C_TXT_IMPORT(11) VALUE '@48@ Import',
C_TXT_EXPORT(11) VALUE '@49@ Export',
C_TXT_STMS(09) VALUE '@4A@ STMS',
C_TXT_SE09(09) VALUE '@3Q@ SE09',
C_TXT_EXEC(05) VALUE 'TRANS',
C_TXT_LOG(08) VALUE '@96@ LOG',
C_TXT_ORDEN(10) VALUE '@0Y@ Orden',
C_TXT_UP(12) VALUE '@48@ Up File',
C_TXT_DOWN(12) VALUE '@49@ Down File',
C_TXT_DIR(17) VALUE 'C:\SAP_TRANSXTER\',
C_TXT_BORRAR(15) VALUE 'Borrar Ficheros',
C_TXT_SI(2) VALUE 'Si',
C_TXT_NO(2) VALUE 'No',
C_TXT_DEL_ORDEN(55) VALUE 'DESEA BORRAR LOS FICHEROS DE LAS ORDENES EN SERVIDOR?',
C_TXT_FECHA(5) VALUE 'Fecha',
C_TXT_RANGOF(15) VALUE 'Rango de fechas',
C_TXT_ASINC(09) VALUE 'Asincrono',
C_TXT_DIRCO(18) VALUE 'Directorio Cofiles',
C_TXT_DIRDA(15) VALUE 'Directorio Data',
C_TXT_DEST(07) VALUE 'Destino',
C_TXT_DIRF(22) VALUE 'Directorio de ficheros',
C_TXT_PBLOQ(15) VALUE 'Pasar en Bloque',
C_TXT_AGAIN(18) VALUE 'Importar otra vez',
C_TXT_FREE(07) VALUE 'Liberar',
C_TXT_MANDT(16) VALUE 'Mandante Destino',
C_TXT_ORDENS(26) VALUE 'Ordenes',
C_TXT_ADDBUF(26) VALUE 'Meter en Cola',
C_TXT_REMBUF(26) VALUE 'Quitar de la Cola',
C_TXT_LSTMS(11) VALUE 'Lanzar STMS',
C_TXT_SCC1(26) VALUE 'Transaccion SCC1',
C_TXT_TRANS(26) VALUE 'Transportar',
C_TXT_REMSRV(26) VALUE 'Borrar ordenes de Servidor',
C_TXT_IGNDEST(26) VALUE 'Ignorar Destino',
C_TXT_LOGT(17) VALUE 'Log de transporte',
C_TXT_CMD TYPE SCRTEXT_S VALUE 'Comando',
C_TXT_SCC1T TYPE SCRTEXT_S VALUE 'SCC1',
C_TXT_EN_BLOQT TYPE SCRTEXT_S VALUE 'En Bloque',
C_TXT_IGDEST TYPE SCRTEXT_S VALUE 'IgVerDest',
C_TXT_REGLA(40) VALUE '1234567890123456789012345678901234567890', "<-- Para no contar
C_TXT_MAN_DT TYPE SCRTEXT_S VALUE 'Mandante',
C_TXT_P_REMOV TYPE SCRTEXT_S VALUE 'Remove',
C_TXT_P_ADDREQ TYPE SCRTEXT_S VALUE 'Add',
C_TXT_LIBERA TYPE SCRTEXT_S VALUE 'Libera',
C_TXT_ASINCRO TYPE SCRTEXT_S VALUE 'Async',
C_TXT_IMPAGAIN TYPE SCRTEXT_S VALUE 'Again',
C_TXT_DESTINO TYPE SCRTEXT_S VALUE 'Destino',
C_TXT_DEL_FILE TYPE SCRTEXT_S VALUE 'Delete',
C_TXT_DESC TYPE SCRTEXT_S VALUE 'Descripcion',
C_TXT_LOAD_ORD(12) VALUE 'Cargando...',
C_TXT_FIND_DEST(20) VALUE 'Buscando Destinos...',
C_TXT_CANT_FIND(10) VALUE 'Can''t find',
C_TXT_ENCOLA(23) VALUE '(already in the queue):',
C_TXT_ADDED(14) VALUE 'Added request:',
C_TXT_FAILDADD(23) VALUE 'Failed pre-add request:',
C_TXT_D VALUE 'D',
C_TXT_R VALUE 'R',
C_TXT_ASC(3) VALUE 'ASC',
C_TXT_BIN(3) VALUE 'BIN',
C_TXT_DERROR(14) VALUE 'Download Error',
C_TXT_DIRNOF(19) VALUE 'Directory not found',
C_TXT_OK(2) VALUE 'Ok',
C_TXT_FAIL(4) VALUE 'Fail',
C_TXT_TRANKO(20) VALUE 'Transporte erroneo:',
C_TXT_TRANOK(21) VALUE 'Transporte correcto:',
C_TXT_RELF(13) VALUE 'Release fail:',
C_TXT_RELOK(11) VALUE 'Release OK:',
C_TXT_CANC(18) VALUE ' process cancelled',
C_TXT_DELKO(14) VALUE 'Failed delete:',
C_TXT_DELOK(15) VALUE 'Success delete:',
C_KWTCEO(06) VALUE 'KWTCEO'. "<-- Constant, Keep hands out!
TABLES: E070, SSCRFIELDS.
TYPE-POOLS: TRWBO, TRSEL, CTSLG, STMS.
INCLUDE ICONS.
TYPES: BEGIN OF FULL_PATH,
FILENAME(1024),
DIR(1024),
FULLPATH(1024),
END OF FULL_PATH.
DATA: DATA_TAB(20) OCCURS 0 WITH HEADER LINE,
T_TABLE TYPE REF TO CL_SALV_TABLE,
G_SORT TYPE REF TO CL_SALV_SORTS,
G_FUNCTIONS TYPE REF TO CL_SALV_FUNCTIONS,
G_DSP TYPE REF TO CL_SALV_DISPLAY_SETTINGS,
G_COLUMNS TYPE REF TO CL_SALV_COLUMNS_TABLE,
G_COLUMN TYPE REF TO CL_SALV_COLUMN_TABLE,
G_COLOR TYPE LVC_S_COLO,
G_AGG TYPE REF TO CL_SALV_AGGREGATIONS,
MI_ORDEN LIKE TMSBUFFER,
MIS_ORDENES TYPE STMS_TR_REQUESTS,
VIEW_LOGS TYPE XFELD.
*--[ Fila de Botones
SELECTION-SCREEN PUSHBUTTON /1(11) C_LOG USER-COMMAND VLOG.
SELECTION-SCREEN PUSHBUTTON 12(11) C_CORR USER-COMMAND CORR.
SELECTION-SCREEN PUSHBUTTON 24(15) T_UP USER-COMMAND F_UP.
SELECTION-SCREEN PUSHBUTTON 40(15) T_DO USER-COMMAND F_DO.
PARAMETERS: DIRSAP(40) DEFAULT C_TXT_DIR OBLIGATORY.
SELECT-OPTIONS: ORDENES FOR E070-TRKORR NO INTERVALS.
SELECTION-SCREEN BEGIN OF BLOCK B02 WITH FRAME.
PARAMETERS: P_REMOV AS CHECKBOX DEFAULT ABAP_FALSE,
P_ADDREQ AS CHECKBOX DEFAULT ABAP_FALSE,
LIBERA AS CHECKBOX DEFAULT ABAP_FALSE,
ASINCRO AS CHECKBOX DEFAULT ABAP_FALSE,
IMPAGAIN AS CHECKBOX DEFAULT ABAP_FALSE.
SELECTION-SCREEN END OF BLOCK B02.
SELECTION-SCREEN BEGIN OF BLOCK B01 WITH FRAME.
PARAMETERS: SIQUIERO AS CHECKBOX DEFAULT ABAP_FALSE,
DESTINO(3) DEFAULT SY-SYSID.
*--[ Es obligatorio indicarlo para Añadir ordenes y para transportar
PARAMETERS: MAN_DT LIKE SYST-MANDT DEFAULT SY-MANDT OBLIGATORY.
PARAMETERS: ENBLOQUE AS CHECKBOX DEFAULT ABAP_FALSE,
IGDEST AS CHECKBOX DEFAULT ABAP_FALSE,
SCC1 AS CHECKBOX DEFAULT ABAP_FALSE.
SELECTION-SCREEN END OF BLOCK B01.
SELECTION-SCREEN BEGIN OF BLOCK B03 WITH FRAME.
PARAMETERS: C_PATH_D(100), " value '/usr/sap/trans/data/',
C_PATH_C(100).
SELECTION-SCREEN END OF BLOCK B03.
SELECTION-SCREEN BEGIN OF BLOCK B04 WITH FRAME.
PARAMETERS: DEL_FILE AS CHECKBOX DEFAULT ABAP_FALSE.
SELECTION-SCREEN END OF BLOCK B04.
SELECTION-SCREEN FUNCTION KEY 1.
SELECTION-SCREEN FUNCTION KEY 2.
SELECTION-SCREEN FUNCTION KEY 3.
SELECTION-SCREEN FUNCTION KEY 4.
SELECTION-SCREEN FUNCTION KEY 5.
CLASS ZCL_TRANS DEFINITION.
PUBLIC SECTION.
DATA SAY_ME_MAX TYPE I VALUE 10.
DATA SAY_ME_NOW TYPE I VALUE 0.
DATA: P_ORDEN TYPE RANGE OF TRKORR,
T_LOGF TYPE STANDARD TABLE OF STRING,
C_LOGF TYPE STRING,
D_ERROR TYPE C LENGTH 1,
P_SYSTEM TYPE TMSSYSNAM,
P_CLIENTE TYPE MANDT,
P_DOMAIN TYPE TMSDOMNAM,
TUS_ORDENES TYPE STANDARD TABLE OF TMSBUFFER,
T_MSG TYPE STANDARD TABLE OF CHAR1024,
C_MSG TYPE CHAR1024,
T_DIR_LIST TYPE STANDARD TABLE OF FULL_PATH,
C_DIR_LIST TYPE FULL_PATH,
P_DIRSAP TYPE CHAR40,
T_ORDENES TYPE STANDARD TABLE OF TRKORR,
P_REMOV TYPE XFELD,
P_ADDREQ TYPE XFELD,
P_LIBERA TYPE XFELD,
P_ASINCRO TYPE XFELD,
P_IMPAGAIN TYPE XFELD,
P_SIQUIERO TYPE XFELD,
P_DESTINO TYPE SYSYSID,
P_MANDT TYPE SYMANDT,
P_ENBLOQUE TYPE XFELD,
P_IGDEST TYPE XFELD,
P_SCC1 TYPE XFELD,
P_DEL_FILE TYPE XFELD,
P_C_PATH_D TYPE CHAR100,
P_C_PATH_C TYPE CHAR100,
P_IMPORTA TYPE STMS_TP_IMPORTS,
P_BATCH TYPE STMSCBATCH.
DATA: D_PATH_SOURCE TYPE SAEPFAD,
D_PATH_TARGET TYPE SAEPFAD.
METHODS:
SAY_ME IMPORTING I_MESSAGE TYPE ANY,
READ_TEXT_POOL,
ORDEN_CREAR,
ORDEN_DEL IMPORTING I_ORDEN TYPE TRKORR,
ORDEN_ADD IMPORTING I_ORDEN TYPE TRKORR
I_SYSTEM TYPE SYSYSID,
ORDEN_LIBERAR IMPORTING I_ORDEN TYPE TRKORR,
ORDEN_TRANSPORTA IMPORTING I_ORDEN TYPE TRKORR,
ORDEN_IMPORTAR,
ORDEN_REMOVE_REQUEST IMPORTING I_ORDEN TYPE TRKORR,
ORDEN_UPLOAD IMPORTING I_ORDEN TYPE TRKORR,
MSG_LIST,
MSG_ADD IMPORTING P_01 TYPE ANY OPTIONAL
P_02 TYPE ANY OPTIONAL
P_03 TYPE ANY OPTIONAL
P_04 TYPE ANY OPTIONAL,
LOG_VER,
LOG_ADD IMPORTING I_ORDEN TYPE TRKORR
CHANGING I_UCOMM TYPE SYUCOMM,
LOG_SHOW,
LOG_LOAD,
LOG_WRITE,
SERVER_CLIENT IMPORTING I_PATH TYPE ANY
I_TARGET TYPE ANY,
SERVER_DOWNLOAD IMPORTING I_ORDEN TYPE TRKORR,
SERVER_READ IMPORTING I_DIR TYPE ANY
I_MASK TYPE ANY,
CONSTRUCTOR.
PRIVATE SECTION.
DATA: LOG_NAME TYPE C LENGTH 40.
ENDCLASS.
CLASS ZCL_TRANS IMPLEMENTATION.
METHOD ORDEN_TRANSPORTA.
DATA: L_ORDEN TYPE TRKORR.
L_ORDEN = I_ORDEN.
IF ME->P_ENBLOQUE = ABAP_TRUE.
CLEAR L_ORDEN.
ENDIF.
IF ME->P_SCC1 = ABAP_FALSE.
** Transporte de WorkBench
CALL FUNCTION 'TMS_MGR_IMPORT_TR_REQUEST'
EXPORTING
IV_SYSTEM = ME->P_SYSTEM
IV_DOMAIN = ME->P_DOMAIN
IV_REQUEST = L_ORDEN
IV_CLIENT = ME->P_CLIENTE
IV_CTC_ACTIVE = ABAP_FALSE
IV_OVERTAKE = ABAP_FALSE
IV_IMPORT_AGAIN = ME->P_IMPAGAIN
IV_IGNORE_ORIGINALITY = ABAP_TRUE
IV_IGNORE_REPAIRS = ABAP_TRUE
IV_IGNORE_TRANSTYPE = ABAP_TRUE
IV_IGNORE_TABLETYPE = ABAP_FALSE
IV_IGNORE_PREDEC = ABAP_FALSE
IV_IGNORE_CVERS = ME->P_IGDEST "<- Ignoramos el destino
IV_TEST_IMPORT = ABAP_FALSE
IV_SUBSET = ABAP_TRUE
IV_OFFLINE = ME->P_ASINCRO "<-- ¿ Modo sincrono ?
IV_MONITOR = ABAP_TRUE
IV_VERBOSE = ABAP_FALSE
IS_BATCH = ME->P_BATCH
IT_REQUESTS = ME->TUS_ORDENES
IMPORTING
ET_TP_IMPORTS = ME->P_IMPORTA
EXCEPTIONS
READ_CONFIG_FAILED = 1
TABLE_OF_REQUESTS_IS_EMPTY = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
ME->D_ERROR = ABAP_TRUE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_TRANKO P_02 = L_ORDEN ).
ELSE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_TRANOK P_02 = L_ORDEN ).
ENDIF.
ELSE.
*** Transporte de copia (Custo)
DATA: CCSUPCOPY TYPE CCTESTRUN,
CCCOMFILE TYPE TRKORR,
QUELLMANDANT TYPE CCMAND,
INCL_TASK TYPE INCL_TASK,
RCOD TYPE SYSUBRC.
CCSUPCOPY = ABAP_FALSE.
CCCOMFILE = L_ORDEN.
QUELLMANDANT = MAN_DT.
INCL_TASK = ABAP_TRUE.
CLEAR RCOD.
CALL FUNCTION 'SCCR_PERFORM_SCC1'
EXPORTING
CCSUPCOPY = CCSUPCOPY
CCCOMFILE = CCCOMFILE
QUELLMANDANT = QUELLMANDANT
INCL_TASK = INCL_TASK
IMPORTING
RCOD = RCOD.
IF RCOD IS INITIAL.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_SCC1T P_02 = L_ORDEN P_03 = C_TXT_OK ).
ELSE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_SCC1T P_02 = L_ORDEN P_03 = C_TXT_FAIL ).
ENDIF.
ENDIF.
ENDMETHOD.
METHOD ORDEN_REMOVE_REQUEST.
* Interface TMS_MGR_MAINTAIN_TR_QUEUE
DATA: CMD TYPE TRTPCMD,
IDSYS TYPE TMSSYSNAM,
ORDENP TYPE TRKORR,
MITABTP TYPE STMS_TP_MAINTAINS.
CMD = 'DELFROMBUFFER'.
IDSYS = SY-SYSID.
ORDENP = I_ORDEN.
CALL FUNCTION 'TMS_MGR_MAINTAIN_TR_QUEUE'
EXPORTING
IV_COMMAND = CMD
IV_SYSTEM = IDSYS
IV_REQUEST = ORDENP
IV_TARCLI = ME->P_MANDT
IV_MONITOR = ABAP_TRUE
IMPORTING
ET_TP_MAINTAINS = MITABTP
EXCEPTIONS
READ_CONFIG_FAILED = 1
TABLE_OF_REQUESTS_IS_EMPTY = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
ME->D_ERROR = ABAP_TRUE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_DELKO P_02 = ORDENP ).
ELSE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_DELOK P_02 = ORDENP ).
ENDIF.
ENDMETHOD.
METHOD ORDEN_DEL.
DATA: FILE(1024).
CLEAR: FILE.
REFRESH ME->T_DIR_LIST.
CONCATENATE '*' I_ORDEN+4(6) '.' I_ORDEN+0(3) INTO FILE. " 3.1.14
ME->SERVER_READ( EXPORTING I_DIR = C_PATH_D I_MASK = FILE ).
ME->SERVER_READ( EXPORTING I_DIR = C_PATH_C I_MASK = FILE ).
LOOP AT ME->T_DIR_LIST INTO ME->C_DIR_LIST.
DELETE DATASET ME->C_DIR_LIST-FULLPATH.
IF SY-SUBRC NE 0.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_DELKO P_02 = I_ORDEN P_03 = ME->C_DIR_LIST-DIR ).
ELSE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_DELOK P_02 = I_ORDEN P_03 = ME->C_DIR_LIST-DIR ).
ENDIF.
ENDLOOP.
ENDMETHOD.
METHOD ORDEN_ADD.
DATA: D_COUNTER TYPE I.
DATA: D_REQUEST TYPE TRKORR.
DATA: D_SYSTEM TYPE TMSSYSNAM.
DATA: D_DOMAIN TYPE TMSDOMNAM.
D_REQUEST = I_ORDEN.
SELECT SINGLE DOMNAM SYSNAM INTO (D_DOMAIN, D_SYSTEM) FROM TMSCSYS WHERE SYSNAM = I_SYSTEM.
* Cambiar por esta: tms_mgr_forward_tr_request.
DATA: IV_REQUEST TYPE TRKORR,
IV_TARGET TYPE TMSSYSNAM,
IV_TARDOM TYPE TMSDOMNAM,
IV_SRCDOM TYPE TMSDOMNAM,
IV_TARCLI TYPE TRTARCLI,
IV_SOURCE TYPE TMSSYSNAM,
ES_EXCEPTION TYPE STMSCALERT.
IV_REQUEST = D_REQUEST.
IV_TARGET = IV_SOURCE = D_SYSTEM.
IV_TARDOM = IV_SRCDOM = D_DOMAIN.
IV_TARCLI = ME->P_MANDT. "<-- Mandante de destino
CALL FUNCTION 'TMS_MGR_FORWARD_TR_REQUEST'
EXPORTING
IV_REQUEST = IV_REQUEST
IV_TARGET = IV_TARGET
IV_TARDOM = IV_TARDOM
IV_TARCLI = IV_TARCLI
IV_SOURCE = IV_SOURCE
IV_SRCDOM = IV_SRCDOM
IV_IMPORT_AGAIN = ME->P_IMPAGAIN
IV_MONITOR = ABAP_TRUE
IV_VERBOSE = ABAP_FALSE
IMPORTING
ES_EXCEPTION = ES_EXCEPTION
EXCEPTIONS
READ_CONFIG_FAILED = 1
TABLE_OF_REQUESTS_IS_EMPTY = 2
OTHERS = 3.
IF SY-SUBRC <> 0.
ME->D_ERROR = ABAP_TRUE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_FAILDADD P_02 = IV_REQUEST ).
ELSE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_ADDED P_02 = IV_REQUEST ).
ENDIF.
IF D_COUNTER > 0.
ME->D_ERROR = ABAP_TRUE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_ENCOLA P_02 = IV_REQUEST ).
ENDIF.
ENDMETHOD.
METHOD SERVER_CLIENT.
DATA: L_PATH TYPE SAEPFAD,
L_TARGETPATH TYPE SAEPFAD.
L_PATH = I_PATH.
L_TARGETPATH = I_TARGET.
CLEAR ME->D_ERROR.
CALL FUNCTION 'ARCHIVFILE_SERVER_TO_CLIENT'
EXPORTING
PATH = L_PATH
TARGETPATH = L_TARGETPATH
EXCEPTIONS
ERROR_FILE = 1
OTHERS = 2.
CHECK NOT SY-SUBRC IS INITIAL.
ME->D_ERROR = ABAP_TRUE.
ENDMETHOD.
METHOD ORDEN_CREAR.
DATA: L_TIPO TYPE TRSTATLONG.
L_TIPO = C_KWTCEO.
PERFORM CREATE_NEW_REQUEST IN PROGRAM RDDM0001 USING L_TIPO IF FOUND.
ENDMETHOD.
METHOD SERVER_DOWNLOAD.
DATA: MIS TYPE STRING.
DATA: TARGETPATH TYPE SAEPFAD,
FILE(255),
RETURN,
G_TARGETPATH TYPE SAEPFAD.
MIS = G_TARGETPATH = ME->P_DIRSAP.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>DIRECTORY_EXIST
EXPORTING
DIRECTORY = MIS
RECEIVING
RESULT = RETURN
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
WRONG_PARAMETER = 3
NOT_SUPPORTED_BY_GUI = 4
OTHERS = 5.
IF SY-SUBRC NE 0.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_DIRNOF P_02 = MIS ).
ELSE.
CLEAR: FILE.
REFRESH ME->T_DIR_LIST.
CONCATENATE '*' I_ORDEN+4(6) '.' I_ORDEN+0(3) INTO FILE. "3.1.14
ME->SERVER_READ( EXPORTING I_DIR = C_PATH_D I_MASK = FILE ).
ME->SERVER_READ( EXPORTING I_DIR = C_PATH_C I_MASK = FILE ).
LOOP AT ME->T_DIR_LIST INTO ME->C_DIR_LIST.
CONCATENATE: G_TARGETPATH ME->C_DIR_LIST-FILENAME INTO TARGETPATH.
ME->SERVER_CLIENT( EXPORTING I_PATH = ME->C_DIR_LIST-FULLPATH I_TARGET = TARGETPATH ).
CHECK ME->D_ERROR = ABAP_TRUE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_DERROR P_02 = I_ORDEN ).
ENDLOOP.
ENDIF.
ENDMETHOD.
METHOD SERVER_READ.
DATA: DIR_NAME TYPE EPSDIRNAM,
FILE_MASK TYPE EPSFILNAM.
DATA: BEGIN OF FILE,
DIRNAME(75) TYPE C, " name of directory. (possibly truncated.)
NAME(75) TYPE C, " name of entry. (possibly truncated.)
TYPE(10) TYPE C, " type of entry.
LEN(8) TYPE P, " length in bytes.
OWNER(8) TYPE C, " owner of the entry.
MTIME(6) TYPE P, " last modification date, seconds since 1970
MODE(9) TYPE C, " like "rwx-r-x--x": protection mode.
ERRNO(3) TYPE C,
ERRMSG(40) TYPE C,
END OF FILE.
DIR_NAME = I_DIR.
FILE_MASK = I_MASK.
CALL 'C_DIR_READ_FINISH' " just to be sure
ID 'ERRNO' FIELD FILE-ERRNO
ID 'ERRMSG' FIELD FILE-ERRMSG.
CALL 'C_DIR_READ_START'
ID 'DIR' FIELD DIR_NAME
ID 'FILE' FIELD FILE_MASK
ID 'ERRNO' FIELD FILE-ERRNO
ID 'ERRMSG' FIELD FILE-ERRMSG.
IF SY-SUBRC <> 0.
EXIT.
ENDIF.
DO.
CLEAR: FILE, ME->C_DIR_LIST.
CALL 'C_DIR_READ_NEXT'
ID 'NAME' FIELD FILE-NAME.
IF SY-SUBRC NE 0.
EXIT.
ENDIF.
CHECK FILE-NAME CP FILE_MASK.
ME->C_DIR_LIST-FILENAME = FILE-NAME.
ME->C_DIR_LIST-DIR = I_DIR.
CONCATENATE ME->C_DIR_LIST-DIR ME->C_DIR_LIST-FILENAME INTO ME->C_DIR_LIST-FULLPATH.
APPEND ME->C_DIR_LIST TO ME->T_DIR_LIST.
ENDDO.
CALL 'C_DIR_READ_FINISH'
ID 'ERRNO' FIELD FILE-ERRNO
ID 'ERRMSG' FIELD FILE-ERRMSG.
SORT ME->T_DIR_LIST.
ENDMETHOD.
METHOD SAY_ME.
CHECK SY-BATCH IS INITIAL.
ADD 1 TO ME->SAY_ME_NOW.
IF ME->SAY_ME_NOW > ME->SAY_ME_MAX. ME->SAY_ME_NOW = 1. ENDIF.
SYST-PRCOP = 100.
IF ME->SAY_ME_MAX NE 0. SYST-PRCOP = ME->SAY_ME_NOW * 100 / ME->SAY_ME_MAX. ENDIF.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = SYST-PRCOP
TEXT = I_MESSAGE
EXCEPTIONS
OTHERS = 1.
ENDMETHOD.
METHOD MSG_ADD.
DATA: C_01(40),
C_02(40),
C_03(40),
C_04(40).
CLEAR C_MSG.
C_01 = P_01.
C_02 = P_02.
C_03 = P_03.
C_04 = P_04.
CONCATENATE C_01 C_02 C_03 C_04 INTO C_MSG SEPARATED BY ABAP_FALSE.
APPEND C_MSG TO T_MSG.
ENDMETHOD.
METHOD MSG_LIST.
DATA: L_AJU LIKE SY-INDEX.
DESCRIBE TABLE ME->T_MSG LINES SY-FDPOS.
CHECK SY-FDPOS > 0.
DATA: T_MSG_2 TYPE STANDARD TABLE OF TRTAB,
C_MSG_2 TYPE TRTAB.
LOOP AT ME->T_MSG INTO ME->C_MSG.
AT FIRST.
CLEAR L_AJU.
ENDAT.
C_MSG_2 = ME->C_MSG.
SY-FDPOS = STRLEN( ME->C_MSG ).
IF L_AJU < SY-FDPOS.
L_AJU = SY-FDPOS + 5. " Ajustamos dinamicamente el popup.
ENDIF.
APPEND C_MSG_2 TO T_MSG_2.
AT LAST.
CALL FUNCTION 'LAW_SHOW_POPUP_WITH_TEXT'
EXPORTING
TITELBAR = C_TXT_LOGT
LINE_SIZE = L_AJU
TABLES
LIST_TAB = T_MSG_2
EXCEPTIONS
ACTION_CANCELLED = 1
OTHERS = 2.
ENDAT.
ENDLOOP.
ENDMETHOD.
METHOD CONSTRUCTOR.
ME->LOG_LOAD( ).
ENDMETHOD.
METHOD LOG_ADD.
ME->C_LOGF = SY-VLINE.
* date | hora | orden | remov | add | free | async | again | dest | mandt | bloq | scc1 |
IF ME->P_SIQUIERO = ABAP_TRUE.
CONCATENATE ME->P_DESTINO
ME->P_MANDT INTO ME->C_LOGF SEPARATED BY SY-VLINE.
IF I_UCOMM IS INITIAL.
I_UCOMM = C_TXT_EXEC. "<-- Dejamos claro que estamos ejecutando
ENDIF.
ENDIF.
CONCATENATE SY-DATUM
SY-UZEIT
SY-UNAME
I_ORDEN
ME->P_REMOV
ME->P_ADDREQ
ME->P_LIBERA
ME->P_ASINCRO
ME->P_IMPAGAIN
ME->LOG_NAME "<--Sustituye al destino|man_dt
ME->P_ENBLOQUE
ME->P_SCC1
I_UCOMM
ME->P_DEL_FILE
ME->P_IGDEST
INTO ME->C_LOGF SEPARATED BY SY-VLINE.
APPEND ME->C_LOGF TO ME->T_LOGF.
IF I_UCOMM = C_TXT_EXEC.
CLEAR I_UCOMM.
* CLEAR i_ucomm. "<-- Restauramos, por si las flies...
ENDIF.
ENDMETHOD.
METHOD LOG_LOAD.
CONCATENATE SY-REPID '_log' INTO ME->LOG_NAME.
READ REPORT ME->LOG_NAME INTO ME->T_LOGF.
ENDMETHOD.
METHOD LOG_SHOW.
TYPES: BEGIN OF T_ALV,
DATUM TYPE SY-DATUM,
UZEIT TYPE SY-UZEIT,
UNAME LIKE SY-UNAME,
ORDEN TYPE TRKORR,
DESC TYPE AS4TEXT,
P_REMOV(6),
P_ADDREQ(6),
LIBERA(6),
ASINCRO(6),
IMPAGAIN(6),
DESTINO(5),
MAN_DT(5),
ENBLOQUE(6),
SCC1(6),
UCOMM LIKE SSCRFIELDS-UCOMM,
DEL_FILE(6),
IGDEST(6),
MAQ01(6),
MAQ02(6),
MAQ03(6),
MAQ04(6),
MAQ05(6),
END OF T_ALV.
DATA: I_ALV TYPE STANDARD TABLE OF T_ALV,
T_ALV TYPE STANDARD TABLE OF T_ALV,
C_ALV TYPE T_ALV.
DEFINE PUT_ICON.
IF NOT &1 IS INITIAL. &1 = '@01@'. ENDIF.
END-OF-DEFINITION.
** Formamos unos rangos
DATA: WF_TAB_FIELD TYPE STANDARD TABLE OF RSTABFIELD,
WF_C_FIELD TYPE RSTABFIELD,
WF_EXL_OPT TYPE RSOPTIONS ,
L_C_TXT_FECHA TYPE RSSELTEXT,
L_TITLE TYPE SYTITLE,
R_FDATUM TYPE RANGE OF SYDATUM.
MOVE: 'DATUM' TO WF_C_FIELD-FIELDNAME ,
'SYST' TO WF_C_FIELD-TABLENAME .
APPEND WF_C_FIELD TO WF_TAB_FIELD .
CLEAR WF_C_FIELD.
*--[ INI 20130731 Evitamos DUMP en nuevas versiones de SAP
L_C_TXT_FECHA = C_TXT_FECHA.
L_TITLE = C_TXT_RANGOF.
*--[ FIN 20130731
CALL FUNCTION 'COMPLEX_SELECTIONS_DIALOG'
EXPORTING
TITLE = L_TITLE
TEXT = L_C_TXT_FECHA
EXCLUDED_OPTIONS = WF_EXL_OPT
HELP_FIELD = 'SYST-DATUM'
TAB_AND_FIELD = WF_C_FIELD
TABLES
RANGE = R_FDATUM
EXCEPTIONS
NO_RANGE_TAB = 1
CANCELLED = 2
INTERNAL_ERROR = 3
INVALID_FIELDNAME = 4
OTHERS = 5.
ME->SAY_ME( C_TXT_LOAD_ORD ).
LOOP AT ME->T_LOGF INTO ME->C_LOGF.
CLEAR C_ALV.
SPLIT ME->C_LOGF AT SY-VLINE INTO: C_ALV-DATUM
C_ALV-UZEIT
C_ALV-UNAME
C_ALV-ORDEN
C_ALV-P_REMOV
C_ALV-P_ADDREQ
C_ALV-LIBERA
C_ALV-ASINCRO
C_ALV-IMPAGAIN
C_ALV-DESTINO
C_ALV-MAN_DT
C_ALV-ENBLOQUE
C_ALV-SCC1
C_ALV-UCOMM
C_ALV-DEL_FILE
C_ALV-IGDEST.
CHECK C_ALV-DATUM IN R_FDATUM.
PUT_ICON C_ALV-P_REMOV.
PUT_ICON C_ALV-P_ADDREQ.
PUT_ICON C_ALV-LIBERA.
PUT_ICON C_ALV-ASINCRO.
PUT_ICON C_ALV-IMPAGAIN.
PUT_ICON C_ALV-ENBLOQUE.
PUT_ICON C_ALV-SCC1.
PUT_ICON C_ALV-DEL_FILE.
PUT_ICON C_ALV-IGDEST.
*--[ Descripcion de la orden
SELECT SINGLE AS4TEXT INTO C_ALV-DESC FROM E07T
WHERE TRKORR = C_ALV-ORDEN
AND LANGU = SY-LANGU.
APPEND C_ALV TO I_ALV.
ENDLOOP.
CL_SALV_TABLE=>FACTORY(
IMPORTING
R_SALV_TABLE = T_TABLE
CHANGING
T_TABLE = I_ALV
).
"Para los botones en el status
G_FUNCTIONS = T_TABLE->GET_FUNCTIONS( ).
G_FUNCTIONS->SET_ALL( ABAP_TRUE ).
"Para mostar el titulo del alv
DATA: TITULO TYPE LVC_TITLE.
G_DSP = T_TABLE->GET_DISPLAY_SETTINGS( ).
CONCATENATE 'LOG' VERSION INTO TITULO SEPARATED BY ABAP_FALSE.
G_DSP->SET_LIST_HEADER( TITULO ).
G_COLUMNS = T_TABLE->GET_COLUMNS( ).
G_COLUMNS->SET_OPTIMIZE( ABAP_TRUE ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'UCOMM' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_CMD ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'SCC1' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_SCC1T ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'ENBLOQUE' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_EN_BLOQT ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'IGDEST' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_IGDEST ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'MAN_DT' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_MAN_DT ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'P_REMOV' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_P_REMOV ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'P_ADDREQ' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_P_ADDREQ ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'LIBERA' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_LIBERA ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'ASINCRO' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_ASINCRO ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'IMPAGAIN' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_IMPAGAIN ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'DESTINO' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_DESTINO ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'DEL_FILE' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_DEL_FILE ).
G_COLUMN ?= G_COLUMNS->GET_COLUMN( 'DESC' ). G_COLUMN->SET_SHORT_TEXT( C_TXT_DESC ).
*--[ Asignacion de las maquinas
DATA: COLA TYPE LVC_FNAME,
L_SHORT TYPE SCRTEXT_S,
L_TCECPSTAT TYPE STANDARD TABLE OF TCECPSTAT,
C_TCECPSTAT TYPE TCECPSTAT.
SELECT * FROM TCECPSTAT INTO TABLE L_TCECPSTAT.
DO 5 TIMES.
COLA = SY-INDEX.
SHIFT COLA LEFT DELETING LEADING ABAP_FALSE.
CONCATENATE 'MAQ0' COLA INTO COLA.
G_COLUMN ?= G_COLUMNS->GET_COLUMN( COLA ).
READ TABLE L_TCECPSTAT INTO C_TCECPSTAT INDEX SY-INDEX.
IF SY-SUBRC EQ 0.
L_SHORT = C_TCECPSTAT-SYSNAME.
G_COLUMN->SET_SHORT_TEXT( L_SHORT ).
ELSE.
G_COLUMN->SET_VISIBLE( ABAP_FALSE ).
ENDIF.
ENDDO.
DATA: ES_COFILE TYPE CTSLG_COFILE,
C_SYSTEMS TYPE CTSLG_SYSTEM.
FIELD-SYMBOLS: <FC> TYPE ANY.
ME->SAY_ME( C_TXT_FIND_DEST ).
LOOP AT I_ALV INTO C_ALV.
CLEAR ES_COFILE.
CALL FUNCTION 'TR_READ_GLOBAL_INFO_OF_REQUEST'
EXPORTING
IV_TRKORR = C_ALV-ORDEN
* IV_DIR_TYPE = 'T'
* IS_SETTINGS =
* IV_SUPPRESS_DELETED_STEPS = abap_false
* IT_COMM_SYSTEMS =
IMPORTING
ES_COFILE = ES_COFILE.
LOOP AT ES_COFILE-SYSTEMS INTO C_SYSTEMS.
*--[ Leemos la tabla
READ TABLE L_TCECPSTAT INTO C_TCECPSTAT WITH KEY SYSNAME = C_SYSTEMS-SYSTEMID.
CHECK SY-SUBRC EQ 0.
COLA = SY-TABIX.
SHIFT COLA LEFT DELETING LEADING ABAP_FALSE.
CONCATENATE 'C_ALV-MAQ0' COLA INTO COLA.
ASSIGN (COLA) TO <FC>.
<FC> = '@01@'.
MODIFY I_ALV FROM C_ALV.
ENDLOOP.
ENDLOOP.
"Para mostrar el alv
T_TABLE->DISPLAY( ).
ENDMETHOD.
METHOD LOG_WRITE.
INSERT REPORT LOG_NAME FROM ME->T_LOGF.
ENDMETHOD.
METHOD LOG_VER.
CALL FUNCTION 'TMS_UI_SHOW_TRANSPORT_LOGS'
EXPORTING
IV_REQUEST = 'SOME'
IV_SYSTEM = ME->P_SYSTEM
IT_REQUESTS = ME->TUS_ORDENES
EXCEPTIONS
SHOW_TRANSPORT_LOGS_FAILED = 1
OTHERS = 2.
ENDMETHOD.
METHOD ORDEN_UPLOAD.
CLEAR ME->D_ERROR.
*----[ Ahora la D (que es opcional)
CONCATENATE DIRSAP C_TXT_D I_ORDEN+4(6) '.' I_ORDEN(3) INTO ME->D_PATH_SOURCE.
CONCATENATE C_PATH_D C_TXT_D I_ORDEN+4(6) '.' I_ORDEN(3) INTO ME->D_PATH_TARGET.
ME->ORDEN_IMPORTAR( ).
*----[ K cofiles
CONCATENATE DIRSAP I_ORDEN+3(7) '.' I_ORDEN(3) INTO ME->D_PATH_SOURCE.
CONCATENATE C_PATH_C I_ORDEN+3(7) '.' I_ORDEN(3) INTO ME->D_PATH_TARGET.
ME->ORDEN_IMPORTAR( ).
IF ME->D_ERROR = ABAP_TRUE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_CANT_FIND P_02 = ME->D_PATH_SOURCE ).
ENDIF.
*----[ R o D - Data
CONCATENATE DIRSAP C_TXT_R I_ORDEN+4(6) '.' I_ORDEN(3) INTO ME->D_PATH_SOURCE.
CONCATENATE C_PATH_D C_TXT_R I_ORDEN+4(6) '.' I_ORDEN(3) INTO ME->D_PATH_TARGET.
ME->ORDEN_IMPORTAR( ).
IF ME->D_ERROR = ABAP_TRUE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_CANT_FIND P_02 = ME->D_PATH_SOURCE ).
ENDIF.
ENDMETHOD.
METHOD ORDEN_IMPORTAR.
CALL FUNCTION 'ARCHIVFILE_CLIENT_TO_SERVER'
EXPORTING
PATH = ME->D_PATH_SOURCE
TARGETPATH = ME->D_PATH_TARGET
EXCEPTIONS
ERROR_FILE = 99
OTHERS = 99.
IF SY-SUBRC <> 0.
ME->D_ERROR = ABAP_TRUE.
ENDIF.
CLEAR: ME->D_PATH_SOURCE, ME->D_PATH_TARGET.
ENDMETHOD.
METHOD ORDEN_LIBERAR.
TYPES: BEGIN OF TY_ORD,
ORD_TAR(1),
ORDEN LIKE E070-STRKORR,
END OF TY_ORD.
DATA: ES_R TYPE TRWBO_REQUEST,
ET_D TYPE TRWBO_T_E070,
OLDUSER LIKE SY-UNAME,
T_ORD TYPE STANDARD TABLE OF TY_ORD,
IE070 TYPE STANDARD TABLE OF E070,
CE070 TYPE E070,
C_ORD TYPE TY_ORD.
* Buscamos Ordenes y Tareas
SELECT * FROM E070 INTO CE070
WHERE ( STRKORR = I_ORDEN OR TRKORR = I_ORDEN )
AND TRSTATUS = C_TXT_D.
CLEAR C_ORD.
C_ORD-ORD_TAR = 'T'.
IF CE070-STRKORR IS INITIAL.
C_ORD-ORD_TAR = 'Z'.
ENDIF.
C_ORD-ORDEN = CE070-TRKORR.
APPEND C_ORD TO T_ORD.
ENDSELECT.
SORT T_ORD.
DELETE ADJACENT DUPLICATES FROM T_ORD.
* Buscamos Ordenes
LOOP AT T_ORD INTO C_ORD.
SELECT SINGLE * FROM E070 INTO CE070 WHERE TRKORR = C_ORD-ORDEN.
OLDUSER = CE070-AS4USER.
IF CE070-AS4USER NE SY-UNAME.
CE070-AS4USER = SY-UNAME.
UPDATE E070 FROM CE070.
ENDIF.
CALL FUNCTION 'TR_RELEASE_REQUEST'
EXPORTING
IV_TRKORR = C_ORD-ORDEN
IV_DIALOG = ABAP_TRUE
IV_AS_BACKGROUND_JOB = ABAP_FALSE
IV_SUCCESS_MESSAGE = ABAP_TRUE
IMPORTING
ES_REQUEST = ES_R
ET_DELETED_TASKS = ET_D
EXCEPTIONS
CTS_INITIALIZATION_FAILURE = 1
ENQUEUE_FAILED = 2
NO_AUTHORIZATION = 3
INVALID_REQUEST = 4
REQUEST_ALREADY_RELEASED = 5
REPEAT_TOO_EARLY = 6
OBJECT_CHECK_ERROR = 7
DOCU_MISSING = 8
DB_ACCESS_ERROR = 9
ACTION_ABORTED_BY_USER = 10
EXPORT_FAILED = 11
OTHERS = 12.
IF SY-SUBRC NE 0.
ME->D_ERROR = ABAP_TRUE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_RELF P_02 = C_ORD-ORDEN P_03 = C_TXT_CANC ).
ELSE.
ME->MSG_ADD( EXPORTING P_01 = C_TXT_RELOK P_02 = C_ORD-ORDEN ).
ENDIF.
IF CE070-AS4USER NE OLDUSER.
CE070-AS4USER = OLDUSER.
IF CE070-TRSTATUS NE C_TXT_R.
CE070-TRSTATUS = C_TXT_R. "<-- Forzamos su liberacion ;)
ENDIF.
UPDATE E070 FROM CE070.
ENDIF.
COMMIT WORK.
CHECK ME->D_ERROR = ABAP_TRUE.
EXIT.
ENDLOOP.
ENDMETHOD.
METHOD READ_TEXT_POOL.
DATA: T_TEXTTAB TYPE STANDARD TABLE OF TEXTPOOL,
C_TEXTTAB TYPE TEXTPOOL.
DEFINE ADD_PARAM. "3.1.5
C_TEXTTAB-ID = 'S'.
C_TEXTTAB-KEY = &1.
CONCATENATE '!!!!!!!!' &2 INTO C_TEXTTAB-ENTRY. "Blancos necesarios al principio
TRANSLATE C_TEXTTAB-ENTRY USING '! '.
C_TEXTTAB-LENGTH = STRLEN( C_TEXTTAB-ENTRY ).
APPEND C_TEXTTAB TO T_TEXTTAB.
END-OF-DEFINITION.
READ TEXTPOOL SY-REPID INTO T_TEXTTAB LANGUAGE SY-LANGU.
LOOP AT T_TEXTTAB INTO C_TEXTTAB.
CASE C_TEXTTAB-ID.
WHEN 'R'.
CONCATENATE C_TXT_TITLE VERSION INTO C_TEXTTAB-ENTRY SEPARATED BY ABAP_FALSE.
MODIFY T_TEXTTAB FROM C_TEXTTAB INDEX SY-TABIX.
WHEN 'S'. DELETE T_TEXTTAB INDEX SY-TABIX.
ENDCASE.
ENDLOOP.
*--[ Anyadimos nuevos parametros 3.1.5
ADD_PARAM 'ASINCRO' C_TXT_ASINC.
ADD_PARAM 'C_PATH_C' C_TXT_DIRCO.
ADD_PARAM 'C_PATH_D' C_TXT_DIRDA.
ADD_PARAM 'DESTINO' C_TXT_DEST.
ADD_PARAM 'DIRSAP' C_TXT_DIRF.
ADD_PARAM 'ENBLOQUE' C_TXT_PBLOQ.
ADD_PARAM 'IMPAGAIN' C_TXT_AGAIN.
ADD_PARAM 'LIBERA' C_TXT_FREE.
ADD_PARAM 'MAN_DT' C_TXT_MANDT.
ADD_PARAM 'ORDENES' C_TXT_ORDENS.
ADD_PARAM 'P_ADDREQ' C_TXT_ADDBUF.
ADD_PARAM 'P_REMOV' C_TXT_REMBUF.
ADD_PARAM 'P_STMS' C_TXT_LSTMS.
ADD_PARAM 'SCC1' C_TXT_SCC1.
ADD_PARAM 'SIQUIERO' C_TXT_TRANS.
ADD_PARAM 'DEL_FILE' C_TXT_REMSRV.
ADD_PARAM 'IGDEST' C_TXT_IGNDEST.
INSERT TEXTPOOL SY-REPID FROM T_TEXTTAB LANGUAGE SY-LANGU STATE 'A'.
ENDMETHOD.
ENDCLASS.
DATA: MY_TRANS TYPE REF TO ZCL_TRANS.
INITIALIZATION.
CREATE OBJECT MY_TRANS.
MOVE '@2V@' TO SSCRFIELDS-FUNCTXT_01.
MOVE C_TXT_IMPORT TO SSCRFIELDS-FUNCTXT_02. "Import
MOVE C_TXT_EXPORT TO SSCRFIELDS-FUNCTXT_03. "Export
MOVE C_TXT_STMS TO SSCRFIELDS-FUNCTXT_04. "Export
MOVE C_TXT_SE09 TO SSCRFIELDS-FUNCTXT_05. "Export
MOVE C_TXT_LOG TO C_LOG. "Export
MOVE C_TXT_ORDEN TO C_CORR. "Export
MOVE C_TXT_UP TO T_UP.
MOVE C_TXT_DOWN TO T_DO.
MY_TRANS->READ_TEXT_POOL( ).
MY_TRANS->P_DIRSAP = DIRSAP.
DATA:L_DIR_DATA TYPE TRFILE,
L_DIR_COFILES TYPE TRFILE.
CALL FUNCTION 'TRINT_FI_GET_DIRECTORY_NAMES'
IMPORTING
EV_DATA_DIR = L_DIR_DATA
EV_COFILES_DIR = L_DIR_COFILES
EXCEPTIONS
GET_DIR_TRANS_FAILED = 1
BUILD_PATH_FAILED = 2
OTHERS = 3.
SY-LISEL+(1) = '\'.
IF L_DIR_DATA CA '/'.
SY-LISEL+(1) = '/'.
ENDIF.
CONCATENATE L_DIR_DATA SY-LISEL+(1) INTO C_PATH_D.
CONCATENATE L_DIR_COFILES SY-LISEL+(1) INTO C_PATH_C.
PERFORM INICIALIZA_VARS.
AT SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
CHECK SCREEN-NAME CP 'c_path_*' OR
SCREEN-NAME CP 'C_PATH_*'.
SCREEN-INPUT = 0.
MODIFY SCREEN.
ENDLOOP.
*--[ Protegemos los botones que no estan en esta version
* Proteccion de subida y bajada de ficheros
SELECT SINGLE TCODE INTO SY-LISEL FROM TSTC WHERE TCODE = 'CG3Z'.
IF SY-SUBRC NE 0.
LOOP AT SCREEN.
IF SCREEN-NAME CP '*_UP*' OR
SCREEN-NAME CP '*_DO*'.
SCREEN-INVISIBLE = '1'.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
AT SELECTION-SCREEN.
MY_TRANS->P_DIRSAP = DIRSAP.
MY_TRANS->LOG_LOAD( ).
DESCRIBE TABLE ORDENES LINES MY_TRANS->SAY_ME_MAX.
CASE SSCRFIELDS-UCOMM.
WHEN 'VLOG'. MY_TRANS->LOG_SHOW( ).
WHEN 'CORR'. MY_TRANS->ORDEN_CREAR( ).
WHEN 'F_UP'. CALL TRANSACTION 'CG3Z'.
WHEN 'F_DO'. CALL TRANSACTION 'CG3Y'.
WHEN 'FC01'.
CLEAR ORDENES. REFRESH ORDENES.
CALL FUNCTION 'CLPB_IMPORT'
TABLES
DATA_TAB = DATA_TAB
EXCEPTIONS
CLPB_ERROR = 99
OTHERS = 99.
LOOP AT DATA_TAB.
ORDENES-SIGN = 'I'.
ORDENES-OPTION = 'EQ'.
ORDENES-LOW = DATA_TAB.
APPEND ORDENES.
ENDLOOP.
WHEN 'FC02'. " Importar Ordenes
LOOP AT ORDENES.
CHECK NOT ORDENES-LOW IS INITIAL.
MY_TRANS->SAY_ME( ORDENES-LOW ).
MY_TRANS->LOG_ADD( EXPORTING I_ORDEN = ORDENES-LOW
CHANGING I_UCOMM = SSCRFIELDS-UCOMM
).
MY_TRANS->ORDEN_UPLOAD( ORDENES-LOW ).
MY_TRANS->ORDEN_ADD( EXPORTING I_ORDEN = ORDENES-LOW I_SYSTEM = SY-SYSID ).
ENDLOOP.
WHEN 'FC03'. " Export Ordenes
LOOP AT ORDENES.
CHECK NOT ORDENES-LOW IS INITIAL.
MY_TRANS->SAY_ME( ORDENES-LOW ).
MY_TRANS->LOG_ADD( EXPORTING I_ORDEN = ORDENES-LOW
CHANGING I_UCOMM = SSCRFIELDS-UCOMM
).
MY_TRANS->ORDEN_LIBERAR( ORDENES-LOW ).
MY_TRANS->SERVER_DOWNLOAD( ORDENES-LOW ).
ENDLOOP.
WHEN 'FC05'. " Export Ordenes
TYPES: BEGIN OF STRHI_SPECIAL_REQUEST,
TRKORR LIKE E070-TRKORR,
ACTION TYPE C,
END OF STRHI_SPECIAL_REQUEST,
STRHI_SPECIAL_REQUESTS TYPE STRHI_SPECIAL_REQUEST OCCURS 0.
DATA: MYDAT TYPE STRHI_SPECIAL_REQUEST OCCURS 0.
DATA CS_RANGES TYPE TRSEL_TS_RANGES.
DATA: IS_SELECTION TYPE TRWBO_SELECTION.
IS_SELECTION-TRKORRPATTERN = '*'.
IS_SELECTION-REQFUNCTIONS = 'CDEFGKMOPQRSTWX'.
IS_SELECTION-REQSTATUS = 'RNODL'.
CS_RANGES-TRKORR[] = ORDENES[].
CALL FUNCTION 'TR_SEARCH_AND_DISPLAY_REQUESTS'
EXPORTING
IV_USERNAME = '*'
IS_SELECTION = IS_SELECTION
IT_SPECIAL_REQUESTS = MYDAT
EXCEPTIONS
ACTION_ABORTED_BY_USER = 1
OTHERS = 2.
WHEN 'FC04'. " Export Ordenes
CALL FUNCTION 'TMS_UI_IMPORT_OVERVIEW'.
ENDCASE.
IF SSCRFIELDS-UCOMM CP 'FC*'.
MY_TRANS->MSG_LIST( ).
MY_TRANS->LOG_WRITE( ).
ENDIF.
START-OF-SELECTION.
MY_TRANS->LOG_LOAD( ).
PERFORM INICIALIZA_VARS.
CHECK MY_TRANS->D_ERROR IS INITIAL.
DESCRIBE TABLE ORDENES LINES MY_TRANS->SAY_ME_MAX.
** Warning DEL_FILE.
IF MY_TRANS->P_DEL_FILE = ABAP_TRUE.
DATA: RESP(1).
CLEAR: RESP, DEL_FILE.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = C_TXT_BORRAR
TEXT_QUESTION = C_TXT_DEL_ORDEN
TEXT_BUTTON_1 = C_TXT_SI
ICON_BUTTON_1 = 'ICON_DELETE'
TEXT_BUTTON_2 = C_TXT_NO
ICON_BUTTON_2 = 'ICON_CANCEL'
DEFAULT_BUTTON = '2'
DISPLAY_CANCEL_BUTTON = ABAP_FALSE
IMPORTING
ANSWER = RESP
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2.
IF RESP = '1'. "<-- SI
MY_TRANS->P_DEL_FILE = ABAP_TRUE.
ENDIF.
ENDIF.
CLEAR VIEW_LOGS.
LOOP AT ORDENES.
CHECK NOT ORDENES-LOW IS INITIAL.
MY_TRANS->SAY_ME( ORDENES-LOW ).
MY_TRANS->LOG_ADD( EXPORTING I_ORDEN = ORDENES-LOW
CHANGING I_UCOMM = SSCRFIELDS-UCOMM
).
IF MY_TRANS->P_DEL_FILE = ABAP_TRUE.
MY_TRANS->ORDEN_DEL( ORDENES-LOW ).
ENDIF.
IF MY_TRANS->P_REMOV = ABAP_TRUE.
MY_TRANS->ORDEN_REMOVE_REQUEST( ORDENES-LOW ).
ENDIF.
IF MY_TRANS->P_ADDREQ = ABAP_TRUE.
MY_TRANS->ORDEN_ADD( EXPORTING I_ORDEN = ORDENES-LOW I_SYSTEM = SY-SYSID ).
ENDIF.
IF MY_TRANS->P_LIBERA = ABAP_TRUE.
MY_TRANS->ORDEN_LIBERAR( ORDENES-LOW ).
ENDIF.
IF MY_TRANS->P_SIQUIERO = ABAP_TRUE.
CLEAR: MI_ORDEN.
MI_ORDEN-DOMNAM = MY_TRANS->P_DOMAIN.
MI_ORDEN-SYSNAM = MY_TRANS->P_SYSTEM.
MI_ORDEN-TRKORR = ORDENES-LOW.
* mi_orden-tarcli = <- ¿Destino?
APPEND MI_ORDEN TO MIS_ORDENES.
IF MY_TRANS->P_ENBLOQUE IS INITIAL.
CLEAR: MY_TRANS->TUS_ORDENES.
REFRESH: MY_TRANS->TUS_ORDENES.
MY_TRANS->ORDEN_TRANSPORTA( ORDENES-LOW ).
VIEW_LOGS = ABAP_TRUE.
ENDIF.
ENDIF.
AT LAST.
MY_TRANS->TUS_ORDENES[] = MIS_ORDENES[].
IF MY_TRANS->P_SIQUIERO = ABAP_TRUE.
IF MY_TRANS->P_ENBLOQUE = ABAP_TRUE.
MY_TRANS->ORDEN_TRANSPORTA( ORDENES-LOW ).
ENDIF.
VIEW_LOGS = ABAP_TRUE.
ENDIF.
ENDAT.
ENDLOOP.
MY_TRANS->LOG_WRITE( ).
IF VIEW_LOGS = ABAP_TRUE.
MY_TRANS->LOG_VER( ).
ENDIF.
MY_TRANS->MSG_LIST( ).
FORM INICIALIZA_VARS.
CLEAR: MY_TRANS->D_ERROR, MIS_ORDENES.
REFRESH: MY_TRANS->T_MSG, MIS_ORDENES.
MY_TRANS->P_DIRSAP = DIRSAP.
MY_TRANS->P_SYSTEM = DESTINO.
MY_TRANS->P_CLIENTE = MAN_DT.
MY_TRANS->P_REMOV = P_REMOV.
MY_TRANS->P_ADDREQ = P_ADDREQ.
MY_TRANS->P_LIBERA = LIBERA.
MY_TRANS->P_ASINCRO = ASINCRO.
MY_TRANS->P_IMPAGAIN = IMPAGAIN.
MY_TRANS->P_SIQUIERO = SIQUIERO.
MY_TRANS->P_DESTINO = DESTINO.
MY_TRANS->P_MANDT = MAN_DT.
MY_TRANS->P_ENBLOQUE = ENBLOQUE.
MY_TRANS->P_IGDEST = IGDEST.
MY_TRANS->P_SCC1 = SCC1.
MY_TRANS->P_C_PATH_D = C_PATH_D.
MY_TRANS->P_C_PATH_C = C_PATH_C.
MY_TRANS->P_DEL_FILE = DEL_FILE.
CHECK MY_TRANS->P_SIQUIERO = ABAP_TRUE.
IF NOT MY_TRANS->P_SYSTEM IS INITIAL AND
NOT MY_TRANS->P_CLIENTE IS INITIAL.
CALL FUNCTION 'TMS_CFG_GET_DOMAIN_NAME'
EXPORTING
IV_SYSTEM = MY_TRANS->P_SYSTEM
IMPORTING
EV_DOMAIN_NAME = MY_TRANS->P_DOMAIN.
ELSE.
MY_TRANS->D_ERROR = ABAP_TRUE.
ENDIF.
ENDFORM. "inicializa_vars