PDA

Ver la Versión Completa : Bajar Dynpros Y Tablas A Txt


cobyfer
27/02/08, 15:54:06
Hola a todos tengo una duda...sabe alguien como puede bajar una dynpro que yo diseñe en un programa a un txt para poder transportarlo a otro sistema???
Tambien necesito lo mismo con una tabla z del diccionario de datos.:confused:
Muchas gracias

vickxo
27/02/08, 16:09:24
Entiendo que txt es un archivo plano? Yo lo veo dificil asi, lo que se me ocurre que puedas hacer es mandarlo a una orden de transporte, de ahi te metes al sistema SAP y te copias los archivos dela orden de tranporte. La orden de tranporte debera de contener el desarrollo que has hecho asi como la tabla o por separado, el chiste es tener el desarrollo en una orden.

Pa esto tienes que tener dos ficheros uno con r y otro con k, pa esto seria:
K<nºdeorden>.<SID> para Cofile
y
R<nºdeorden>.<SID> para data
Por ejemplo, si la orden es DEVK934957, los ifcheros serían

K934957.DEV y R934957.DEV

Los mueves al directorio de transporte del sistema destino (data y cofile respectivamente, del nuevo sistema) luego por la STMS añades la orden manualmente STMS --> le das al camion --> pinchas en el sistema que quieres transportar y luego ya añades la orden manualmente e importas.

Te recomiendo que lo hagas con cuidado y con asesoria de un basis, si te funciona me pasas el chisme.

cobyfer
27/02/08, 17:00:59
este...bueno no se si me deje entender lo que yo quiero tal como uno puede bajar el codigo de un include o el de un samrtform a un archivo plano (por ejemplo un archivo de texto txt) y cargarlo en otro sistema sap (de una empresa a otra) mi pregunta es: Se puede hacer lo mismo con una tabla z o una dynpro???? y si se puede como se hace????

gracias again....

LouieBoy
27/02/08, 17:28:15
Buenas, Si queremos hacer las cosas bien, metemos los programas, dynpros tablas en una orden y que un coleguilla de BASIS pase la orden de una maquina a otra, mediante los 2 ficheros que se generan y luego haga un import.

hay este programa que te permite bajarte dynpros REPTRAN, luego como subirlas es otra guerra.... Yo no lo he probado pero creo que desde la se38/se80 con la funcion de upload puedes hacerlo. Investiga un poco y nos cuentas. Para diccionario no conzco ningún metodo asi en plan marranete...

Saludos,

LouieBoy

vickxo
28/02/08, 07:35:59
Respondiendo a la regunta, una tabla no la puedes bajar a una archivo plano ni a un XML o al menos no desde los menus posiblemente haya otra forma pero la desconosco. Para guardarla uso OT y asi la mando a otros clientes, en esa ordend e transporte meto todo lo relacionado a ella p ej. datos, definciones, estrucuturas y demas.
Una dynpro tampoco la puedes mandar a un txt, para guardarlas yo uso una OT y asi paso todo al nuevo cliente y ya solo activo.
Lo que se de primera mano q si puedes guardar son los programas, los SMART y creo que los sapscript...
bye

robert_milan
28/02/08, 07:53:16
mira para bajar dynpros te vas a la se80, entras al dynpro que quieres bajar, te vas a utilidades>mas utilidades> Upload/Download> download con esto descargas el dinpro a un archivo de texto pa despues cargarlo.

Saludos!!!!!

robert_milan
28/02/08, 07:57:48
Mira pa descargar un dynpro te vas a la se80, abres el dynpro que quieres descargar y despues haces lo siguiente:

te vas al menu de utilidades> mas utilidades> Upload/Download> Download.

con esto ya guardaras los dynpros en texto.


espero te sirva. Saludos

cobyfer
28/02/08, 13:03:56
ok muchas gracias por lo de la dympro no me habia dado cuenta que tenia tambien sus funciones upload y download.....:p .....si alguien sabe como bajarse la definicion de tablas sin pasar por el basis pase la voz please

vickxo
28/02/08, 14:44:33
ya somos dos los q no sabiamos lo de la dynpro ...

rsilvau94
18/09/08, 20:37:46
Ocupe el dowload para bajar la Dynpro y genere un txt. Al intentar subirlo selecciono el archivo y me da el error "El fichero no contiene ningun Dynpro".
Alguien sabe que estoy haciendo mal!!

AlexisChavero
29/03/10, 19:03:07
Hola a todos,
En una oportunidad me brindaron el siguiente codigo para bajar tablas Z a un archivo .TXT (plano), espero que les sirva:

*&---------------------------------------------------------------------*
*& Report ZZZ_UP_DOWN_TABLAS *
*&---------------------------------------------------------------------*
REPORT ZZZ_UP_DOWN_TABLAS NO STANDARD PAGE HEADING LINE-SIZE 142.
************************************************************************
* Elementos de texto del programa: *
************************************************************************
* Textos de Seleccion *
* P_DIR_D Directorio Salida *
* P_DIR_U Archivo Entrada *
* P_DWLD Download? *
* P_TEST Solo Prueba *
* P_UPLD Uppload? *
* SO_TABL Tablas *
* Simbolos de Texto *
* 900 El Siguiente Objeto es Estandar: *
* S01 Obtener Tablas *
* S02 Guardar Tablas *
************************************************************************

* tabla interna para info de tablas
TYPES: BEGIN OF ty_tablas,
line(600) type C,
END OF ty_tablas.

**************
* Tablas Std *
**************
TABLES: trdir, tadir, dd02l,
trkey. "Clave completa de un objeto transporte

*******************
* Tablas Internas *
*******************
* reporte de objetos a bajar/subir
DATA: BEGIN OF gt_reporte OCCURS 0,
name LIKE trdir-name, "nombre objeto
object LIKE tadir-object, "tipo de objeto
text LIKE trdirt-text, "descripcion
END OF gt_reporte.

* tabla con info de tablas
DATA W_SALIDA TYPE ty_tablas OCCURS 0 WITH HEADER LINE.
DATA W_ENTRADA TYPE ty_tablas OCCURS 0 WITH HEADER LINE.

DATA:
W_TABL_INFO TYPE RPY_TABL OCCURS 0 WITH HEADER LINE,
W_TABL_TECH TYPE RPY_TBTECH OCCURS 0 WITH HEADER LINE,
W_TABL_FIELDS TYPE RPY_FIEL OCCURS 0 WITH HEADER LINE,
W_DTEL_INFO TYPE RPY_DTEL OCCURS 0 WITH HEADER LINE,
W_DOMA_INFO TYPE RPY_DOMA OCCURS 0 WITH HEADER LINE,
W_DOMA_VALUES TYPE RPY_DVAL OCCURS 0 WITH HEADER LINE.

DATA: wc_dir type string,
guiobj type ref to cl_gui_frontend_services,
wc_name type string,
wt_filetable type filetable,
wc_filter type string,
wc_rc type i,
wc_uact type i.

**************
* Variables *
**************
DATA: wi_tam LIKE sy-fdpos, " Long. de string
wc_nok. " Validaciones de directorios

**************
* Constantes *
**************
CONSTANTS: cc_mens1(150) TYPE c VALUE 'Ingrese nombres de Tablas.',
cc_mens2(150) TYPE c VALUE 'Ingrese directorio de download.',
cc_mens3(150) TYPE c VALUE 'Ingrese Archivo de upload.',
cc_error(30) TYPE c VALUE 'Error en la apertura del arch.'.

*************************
* Pantalla de Selección *
*************************

* DOWNLOAD?
PARAMETER: p_dwld RADIOBUTTON GROUP rad1. "Download?
SELECTION-SCREEN: BEGIN OF BLOCK bl1 WITH FRAME TITLE text-s01.
* Objetos a Bajar:
SELECT-OPTIONS: so_tabl FOR dd02l-tabname. "Tablas
PARAMETER: p_dir_d LIKE rlgrap-filename DEFAULT 'C:\'.
"Directorio

SELECTION-SCREEN: END OF BLOCK bl1.

SELECTION-SCREEN: ULINE.

* UPLOAD?
PARAMETER: p_upld RADIOBUTTON GROUP rad1. "Upload ?
SELECTION-SCREEN: BEGIN OF BLOCK bl2 WITH FRAME TITLE text-s02.
PARAMETER: p_dir_u LIKE rlgrap-filename DEFAULT 'C:\'.
"irectorio

* Tipos de objetos a Subir:

SELECTION-SCREEN: SKIP.
SELECTION-SCREEN: END OF BLOCK bl2.

PARAMETER: p_langu LIKE sy-langu DEFAULT sy-langu NO-DISPLAY.

PARAMETER: p_test AS CHECKBOX DEFAULT 'X'.

************************
* AT SELECTION-SCREEN *
************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dir_d.

CREATE OBJECT GUIOBJ.

CALL METHOD guiobj->directory_browse
EXPORTING
WINDOW_TITLE = 'Seleccione el Directorio Destino'
CHANGING
selected_folder = wc_dir
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
others = 4
.

CHECK sy-subrc EQ 0.

MOVE wc_dir to p_dir_d.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_dir_u.

CREATE OBJECT GUIOBJ.

wc_filter = '(Archivos de Texto *.txt)|*.txt|'.
REFRESH wt_filetable.

CALL METHOD guiobj->file_open_dialog
EXPORTING
WINDOW_TITLE = 'Seleccione el Archivo a Procesar'
FILE_FILTER = wc_filter
CHANGING
file_table = wt_filetable
rc = wc_rc
USER_ACTION = wc_uact
EXCEPTIONS
FILE_OPEN_DIALOG_FAILED = 1
CNTL_ERROR = 2
ERROR_NO_GUI = 3
NOT_SUPPORTED_BY_GUI = 4
others = 5
.

CHECK sy-subrc EQ 0.

CHECK wc_uact NE guiobj->ACTION_CANCEL.

READ TABLE wt_filetable INDEX 1 INTO wc_name.

MOVE wc_name to p_dir_u.

AT SELECTION-SCREEN.
CASE 'X'.
WHEN p_dwld.
* si no cargaron nombres de objetos...
IF so_tabl IS INITIAL.
MESSAGE e899(mm) WITH cc_mens1.
ENDIF.
* si no cargaron directorio de download
IF p_dir_d IS INITIAL.
MESSAGE e899(mm) WITH cc_mens2.
ELSE.
PERFORM chequear_directorio USING p_dir_d CHANGING wc_nok.
ENDIF.
WHEN p_upld.
* si no cargaron directorio de upload
IF p_dir_u IS INITIAL.
MESSAGE e899(mm) WITH cc_mens3.
ELSE.
* PERFORM chequear_directorio USING p_dir_u CHANGING wc_nok.
ENDIF.
ENDCASE.

************************
* START-OF-SELECTION *
************************
START-OF-SELECTION.

CLEAR: W_SALIDA, W_ENTRADA, W_TABL_INFO, W_TABL_TECH,
W_TABL_FIELDS, W_DTEL_INFO, W_DOMA_INFO, W_DOMA_VALUES.
REFRESH: W_SALIDA, W_ENTRADA, W_TABL_INFO, W_TABL_TECH,
W_TABL_FIELDS, W_DTEL_INFO, W_DOMA_INFO, W_DOMA_VALUES.

IF wc_nok IS INITIAL.

* DOWNLOAD
IF p_dwld EQ 'X'.

PERFORM bajar_tablas.

* UPLOAD
ELSE.

PERFORM subir_tablas.

ENDIF.

* REPORTE
PERFORM imprimir_reporte.

ENDIF.

*********************
* END-OF-SELECTION *
*********************
END-OF-SELECTION.

*&---------------------------------------------------------------------*
*& Form chequear_directorio
*&---------------------------------------------------------------------*
FORM chequear_directorio CHANGING: p_dir wc_nok.

DATA: lc_exist.

CHECK NOT p_dir IS INITIAL.

* Agrego la barra al final del path por si no la pusieron...
REPLACE '\\' WITH '@#' INTO p_dir.
CONCATENATE p_dir '\' INTO p_dir.
REPLACE '\\' WITH '\' INTO p_dir.
REPLACE '@#' WITH '\\' INTO p_dir.

CALL FUNCTION 'WS_QUERY'
EXPORTING
filename = p_dir
query = 'DE' "directory exists
IMPORTING
return = lc_exist
EXCEPTIONS
inv_query = 1
no_batch = 2
frontend_error = 3
OTHERS = 4.

IF lc_exist NE 1.
wc_nok = 'X'.
MESSAGE i001(00) WITH 'El directiorio, ' p_dir 'no existe.'.
ENDIF.

ENDFORM. " chequear_directorio

*&---------------------------------------------------------------------*
*& Form subir_tablas
*&---------------------------------------------------------------------*
FORM subir_tablas.

* levanto el archivo
PERFORM armar_tabla_upload.

IF p_test IS INITIAL.

PERFORM upload_tablas.

ENDIF.

ENDFORM. " subir_tablas

*&---------------------------------------------------------------------*
*& Form CHEQUEAR_CLASE
*&---------------------------------------------------------------------*
FORM chequear_clase USING value(p_name) type TADIR-OBJ_NAME
CHANGING p_subrc LIKE sy-subrc.

P_SUBRC = 0.

SELECT SINGLE DEVCLASS
FROM TADIR
INTO TADIR-DEVCLASS
WHERE OBJ_NAME EQ P_NAME.

IF sy-subrc <> 0 OR ( tadir-devclass(1) NE 'Z' AND
tadir-devclass(1) NE 'Y' AND
tadir-devclass NE '$TMP' ).
WRITE: / text-900, p_name.
p_subrc = 4.
ENDIF.

ENDFORM. " CHEQUEAR_CLASE

*&---------------------------------------------------------------------*
*& Form ARMAR_TABLA_UPLOAD
*&---------------------------------------------------------------------*
FORM armar_tabla_upload.

DATA: LC_ENTRADA TYPE STRING,
LC_TABLA(15) TYPE C.

MOVE P_DIR_U TO LC_ENTRADA.

CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = LC_ENTRADA
tables
data_tab = W_ENTRADA
EXCEPTIONS
FILE_OPEN_ERROR = 1
FILE_READ_ERROR = 2
NO_BATCH = 3
GUI_REFUSE_FILETRANSFER = 4
INVALID_TYPE = 5
NO_AUTHORITY = 6
UNKNOWN_ERROR = 7
BAD_DATA_FORMAT = 8
HEADER_NOT_ALLOWED = 9
SEPARATOR_NOT_ALLOWED = 10
HEADER_TOO_LONG = 11
UNKNOWN_DP_ERROR = 12
ACCESS_DENIED = 13
DP_OUT_OF_MEMORY = 14
DISK_FULL = 15
DP_TIMEOUT = 16
OTHERS = 17
.
IF sy-subrc <> 0.
ENDIF.

LOOP AT W_ENTRADA.

CASE W_ENTRADA.

WHEN '###$$$%%%&&&:TABL_INFO'.
LC_TABLA = 'TABL_INFO'.

WHEN '###$$$%%%&&&:TABL_TECH'.
LC_TABLA = 'TABL_TECH'.

WHEN '###$$$%%%&&&:TABL_FIELDS'.
LC_TABLA = 'TABL_FIELDS'.

WHEN '###$$$%%%&&&:DTEL_INFO'.
LC_TABLA = 'DTEL_INFO'.

WHEN '###$$$%%%&&&:DOMA_INFO'.
LC_TABLA = 'DOMA_INFO'.

WHEN '###$$$%%%&&&:DOMA_VALUES'.
LC_TABLA = 'DOMA_VALUES'.

WHEN OTHERS.

CASE LC_TABLA.

WHEN 'TABL_INFO'.
MOVE W_ENTRADA TO W_TABL_INFO.
APPEND W_TABL_INFO.
GT_REPORTE-NAME = W_TABL_INFO-TABLNAME.
GT_REPORTE-OBJECT = 'TABL'.
GT_REPORTE-TEXT = W_TABL_INFO-SHORTTEXT.
APPEND GT_REPORTE.

WHEN 'TABL_TECH'.
MOVE W_ENTRADA TO W_TABL_TECH.
APPEND W_TABL_TECH.

WHEN 'TABL_FIELDS'.
MOVE W_ENTRADA TO W_TABL_FIELDS.
APPEND W_TABL_FIELDS.

WHEN 'DTEL_INFO'.
MOVE W_ENTRADA TO W_DTEL_INFO.
APPEND W_DTEL_INFO.
GT_REPORTE-NAME = W_DTEL_INFO-DTELNAME.
GT_REPORTE-OBJECT = 'DTEL'.
GT_REPORTE-TEXT = W_DTEL_INFO-DDTEXT.
APPEND GT_REPORTE.

WHEN 'DOMA_INFO'.
MOVE W_ENTRADA TO W_DOMA_INFO.
APPEND W_DOMA_INFO.
GT_REPORTE-NAME = W_DOMA_INFO-DOMANAME.
GT_REPORTE-OBJECT = 'DOMA'.
GT_REPORTE-TEXT = W_DOMA_INFO-SHORTTEXT.
APPEND GT_REPORTE.

WHEN 'DOMA_VALUES'.
MOVE W_ENTRADA TO W_DOMA_VALUES.
APPEND W_DOMA_VALUES.

ENDCASE.

ENDCASE.

ENDLOOP.

ENDFORM. " ARMAR_TABLA_UPLOAD

*&---------------------------------------------------------------------*
*& Form bajar_tablas
*&---------------------------------------------------------------------*
FORM bajar_tablas .

PERFORM cargar_tablas.

IF p_test IS INITIAL.

PERFORM gravar_archivo_tablas.

ENDIF.

ENDFORM. " bajar_tablas

*&---------------------------------------------------------------------*
*& Form imprimir_reporte
*&---------------------------------------------------------------------*
FORM imprimir_reporte .

WRITE:/5 'Fecha: ', sy-datum, 30 'Usuario:' , sy-uname.

SKIP 1.

ULINE.
FORMAT COLOR COL_KEY.
WRITE: 1 '|', 3 'Objeto' , 45 '|' , 47 'Tipo' , 53 '|',
56 'Descripción' , 142 '|'.
FORMAT COLOR OFF.

ULINE.

LOOP AT gt_reporte.
WRITE:/1 '|', 3 gt_reporte-name , 45 '|' , 47 gt_reporte-object ,
53 '|', 56 gt_reporte-text , 142 '|'.


ENDLOOP.
ULINE.

ENDFORM. " imprimir_reporte

*&---------------------------------------------------------------------*
*& Form cargar_tablas
*&---------------------------------------------------------------------*
FORM cargar_tablas .

DATA:
LC_TABLAS TYPE RPY_TABL OCCURS 0 WITH HEADER LINE,
LC_TABL_INFO TYPE RPY_TABL,
LC_TABL_TECH TYPE RPY_TBTECH,
LC_TABL_FIELDS TYPE RPY_FIEL OCCURS 0 WITH HEADER LINE,

LC_SUBRC TYPE SY-SUBRC,
LC_NAME TYPE TADIR-OBJ_NAME.

CALL FUNCTION 'RPY_TABLE_SELECT'
EXPORTING
TABLE_NAME = 'Z*'
TABLES
tabl_inf_tab = LC_TABLAS
EXCEPTIONS
CANCELLED = 1
NOT_FOUND = 2
PERMISSION_ERROR = 3
OTHERS = 4
.
IF sy-subrc <> 0.
ENDIF.

LOOP AT LC_TABLAS.

IF NOT LC_TABLAS-TABLNAME IN SO_TABL.

DELETE LC_TABLAS.

ELSE.

MOVE LC_TABLAS-TABLNAME TO LC_NAME.
PERFORM CHEQUEAR_CLASE USING LC_NAME
CHANGING LC_SUBRC.
IF LC_SUBRC NE 0.
DELETE LC_TABLAS.
ENDIF.

ENDIF.

ENDLOOP.

LOOP AT LC_TABLAS.

REFRESH: LC_TABL_FIELDS.

CALL FUNCTION 'RPY_TABLE_READ'
EXPORTING
table_name = LC_TABLAS-TABLNAME
IMPORTING
TABL_INF = LC_TABL_INFO
TABL_TECHNICS = LC_TABL_TECH
tables
tabl_fields = LC_TABL_FIELDS
EXCEPTIONS
CANCELLED = 1
NOT_FOUND = 2
PERMISSION_ERROR = 3
ILLEGAL_TYPE = 4
OTHERS = 5
.
IF sy-subrc <> 0.
ENDIF.

GT_REPORTE-NAME = LC_TABL_INFO-TABLNAME.
GT_REPORTE-OBJECT = 'TABL'.
GT_REPORTE-TEXT = LC_TABL_INFO-SHORTTEXT.
APPEND GT_REPORTE.

APPEND LC_TABL_INFO TO W_TABL_INFO.
IF NOT LC_TABL_TECH IS INITIAL.
APPEND LC_TABL_TECH TO W_TABL_TECH.
ENDIF.

LOOP AT LC_TABL_FIELDS.

APPEND LC_TABL_FIELDS TO W_TABL_FIELDS.

IF LC_TABL_FIELDS-DTELNAME(1) EQ 'Z'.
PERFORM LEER_ELEMENTO_DATO USING
LC_TABL_FIELDS-DTELNAME.
ENDIF.

ENDLOOP.

ENDLOOP.

ENDFORM. " cargar_tablas

*&---------------------------------------------------------------------*
*& Form gravar_archivo_tablas
*&---------------------------------------------------------------------*
FORM gravar_archivo_tablas .

DATA: LC_SALIDA TYPE STRING.

LOOP AT W_TABL_INFO.
AT FIRST.
MOVE '###$$$%%%&&&:TABL_INFO' TO W_SALIDA.
APPEND W_SALIDA.
ENDAT.
MOVE W_TABL_INFO TO W_SALIDA.
APPEND W_SALIDA.
ENDLOOP.

LOOP AT W_TABL_TECH.
AT FIRST.
MOVE '###$$$%%%&&&:TABL_TECH' TO W_SALIDA.
APPEND W_SALIDA.
ENDAT.
MOVE W_TABL_TECH TO W_SALIDA.
APPEND W_SALIDA.
ENDLOOP.

LOOP AT W_TABL_FIELDS.
AT FIRST.
MOVE '###$$$%%%&&&:TABL_FIELDS' TO W_SALIDA.
APPEND W_SALIDA.
ENDAT.
MOVE W_TABL_FIELDS TO W_SALIDA.
APPEND W_SALIDA.
ENDLOOP.

LOOP AT W_DTEL_INFO.
AT FIRST.
MOVE '###$$$%%%&&&:DTEL_INFO' TO W_SALIDA.
APPEND W_SALIDA.
ENDAT.
MOVE W_DTEL_INFO TO W_SALIDA.
APPEND W_SALIDA.
ENDLOOP.

LOOP AT W_DOMA_INFO.
AT FIRST.
MOVE '###$$$%%%&&&:DOMA_INFO' TO W_SALIDA.
APPEND W_SALIDA.
ENDAT.
MOVE W_DOMA_INFO TO W_SALIDA.
APPEND W_SALIDA.
ENDLOOP.

LOOP AT W_DOMA_VALUES.
AT FIRST.
MOVE '###$$$%%%&&&:DOMA_VALUES' TO W_SALIDA.
APPEND W_SALIDA.
ENDAT.
MOVE W_DOMA_VALUES TO W_SALIDA.
APPEND W_SALIDA.
ENDLOOP.

CONCATENATE P_DIR_D 'SALIDA_TABLAS.TXT' INTO LC_SALIDA.

CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = LC_SALIDA
tables
data_tab = W_SALIDA
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
.
IF sy-subrc <> 0.
ENDIF.

ENDFORM. " gravar_archivo_tablas

*&---------------------------------------------------------------------*
*& Form upload_tablas
*&---------------------------------------------------------------------*
form upload_tablas .

DATA:
LC_DOMA_INFO TYPE RPY_DOMA,
LC_DOMA_VALUES TYPE RPY_DVAL OCCURS 0 WITH HEADER LINE,
LC_DTEL_INFO TYPE RPY_DTEL,
LC_TABL_INFO TYPE RPY_TABL,
LC_TABL_TECH TYPE RPY_TBTECH,
LC_TABL_FIELDS TYPE RPY_FIEL_U OCCURS 0 WITH HEADER LINE.

LOOP AT W_DOMA_INFO.

MOVE W_DOMA_INFO TO LC_DOMA_INFO.
REFRESH LC_DOMA_VALUES.

LOOP AT W_DOMA_VALUES WHERE DOMANAME = LC_DOMA_INFO-DOMANAME.

MOVE W_DOMA_VALUES TO LC_DOMA_VALUES.
APPEND LC_DOMA_VALUES.

ENDLOOP.

CALL FUNCTION 'RPY_DOMAIN_INSERT'
EXPORTING
doma_name = LC_DOMA_INFO-DOMANAME
doma_inf = LC_DOMA_INFO
tables
doma_values = LC_DOMA_VALUES
EXCEPTIONS
CANCELLED = 1
ALREADY_EXIST = 2
PERMISSION_ERROR = 3
NAME_NOT_ALLOWED = 4
NAME_CONFLICT = 5
INTERNAL_ERROR = 6
OTHERS = 7
.
IF sy-subrc <> 0.
ENDIF.

ENDLOOP.

LOOP AT W_DTEL_INFO.

MOVE W_DTEL_INFO TO LC_DTEL_INFO.

CALL FUNCTION 'RPY_DATAELEMENT_INSERT'
EXPORTING
dataelement_name = LC_DTEL_INFO-DTELNAME
dtel_inf = LC_DTEL_INFO
transport_number = SPACE
EXCEPTIONS
CANCELLED = 1
ALREADY_EXIST = 2
PERMISSION_ERROR = 3
NAME_NOT_ALLOWED = 4
NAME_CONFLICT = 5
ILLEGAL_TYPE = 6
OBJECT_INCONSISTENT = 7
DB_ACCESS_ERROR = 8
OTHERS = 9
.
IF sy-subrc <> 0.
ENDIF.

ENDLOOP.

LOOP AT W_TABL_INFO.

MOVE W_TABL_INFO TO LC_TABL_INFO.
READ TABLE W_TABL_TECH WITH KEY TABLNAME = LC_TABL_INFO-TABLNAME.
IF SY-SUBRC EQ 0.
MOVE W_TABL_TECH TO LC_TABL_TECH.
ELSE.
CLEAR LC_TABL_TECH.
ENDIF.
REFRESH LC_TABL_FIELDS.

LOOP AT W_TABL_FIELDS WHERE TABLNAME = LC_TABL_INFO-TABLNAME.

MOVE-CORRESPONDING W_TABL_FIELDS TO LC_TABL_FIELDS.
APPEND LC_TABL_FIELDS.

ENDLOOP.

CALL FUNCTION 'RPY_TABLE_INSERT'
EXPORTING
table_name = LC_TABL_INFO-TABLNAME
tabl_inf = LC_TABL_INFO
TABL_TECHNICS = LC_TABL_TECH
tables
tabl_fields = LC_TABL_FIELDS
EXCEPTIONS
CANCELLED = 1
ALREADY_EXIST = 2
PERMISSION_ERROR = 3
NAME_NOT_ALLOWED = 4
NAME_CONFLICT = 5
DB_ACCESS_ERROR = 6
OTHERS = 7
.
IF sy-subrc <> 0.
ENDIF.

ENDLOOP.

endform. " upload_tablas

*&---------------------------------------------------------------------*
*& Form LEER_ELEMENTO_DATO
*&---------------------------------------------------------------------*
form LEER_ELEMENTO_DATO using p_dtelname.

DATA:
LC_DTEL_INFO TYPE RPY_DTEL,

LC_SUBRC TYPE SY-SUBRC,
LC_NAME TYPE TADIR-OBJ_NAME.

READ TABLE W_DTEL_INFO WITH KEY DTELNAME = P_DTELNAME.

CHECK SY-SUBRC NE 0.

MOVE P_DTELNAME TO LC_NAME.
PERFORM CHEQUEAR_CLASE USING LC_NAME
CHANGING LC_SUBRC.
CHECK LC_SUBRC EQ 0.

MOVE P_DTELNAME TO LC_DTEL_INFO-DTELNAME.

CALL FUNCTION 'RPY_DATAELEMENT_READ'
EXPORTING
dataelement_name = LC_DTEL_INFO-DTELNAME
IMPORTING
DTEL_INF = LC_DTEL_INFO
EXCEPTIONS
CANCELLED = 1
NOT_FOUND = 2
PERMISSION_ERROR = 3
ILLEGAL_TYPE = 4
OTHERS = 5
.
IF sy-subrc <> 0.
ENDIF.

GT_REPORTE-NAME = LC_DTEL_INFO-DTELNAME.
GT_REPORTE-OBJECT = 'DTEL'.
GT_REPORTE-TEXT = LC_DTEL_INFO-DDTEXT.
APPEND GT_REPORTE.

APPEND LC_DTEL_INFO TO W_DTEL_INFO.

IF LC_DTEL_INFO-DOMANAME(1) EQ 'Z'.
PERFORM LEER_DOMINIO USING
LC_DTEL_INFO-DOMANAME.
ENDIF.

endform. " LEER_ELEMENTO_DATO

*&---------------------------------------------------------------------*
*& Form LEER_DOMINIO
*&---------------------------------------------------------------------*
form LEER_DOMINIO using p_domaname.

DATA:
LC_DOMA_INFO TYPE RPY_DOMA,
LC_DOMA_VALUES TYPE RPY_DVAL OCCURS 0 WITH HEADER LINE,

LC_SUBRC TYPE SY-SUBRC,
LC_NAME TYPE TADIR-OBJ_NAME.

READ TABLE W_DOMA_INFO WITH KEY DOMANAME = P_DOMANAME.

CHECK SY-SUBRC NE 0.

MOVE P_DOMANAME TO LC_NAME.
PERFORM CHEQUEAR_CLASE USING LC_NAME
CHANGING LC_SUBRC.
CHECK LC_SUBRC EQ 0.

MOVE P_DOMANAME TO LC_DOMA_INFO-DOMANAME.

REFRESH: LC_DOMA_VALUES.

CALL FUNCTION 'RPY_DOMAIN_READ'
EXPORTING
doma_name = LC_DOMA_INFO-DOMANAME
IMPORTING
DOMA_INF = LC_DOMA_INFO
tables
doma_values = LC_DOMA_VALUES
EXCEPTIONS
CANCELLED = 1
NOT_FOUND = 2
PERMISSION_ERROR = 3
ILLEGAL_TYPE = 4
OTHERS = 5
.
IF sy-subrc <> 0.
ENDIF.

GT_REPORTE-NAME = LC_DOMA_INFO-DOMANAME.
GT_REPORTE-OBJECT = 'DOMA'.
GT_REPORTE-TEXT = LC_DOMA_INFO-SHORTTEXT.
APPEND GT_REPORTE.

APPEND LC_DOMA_INFO TO W_DOMA_INFO.

LOOP AT LC_DOMA_VALUES.

APPEND LC_DOMA_VALUES TO W_DOMA_VALUES.

ENDLOOP.

endform. " LEER_DOMINIO

No he tenido tiempo de probarlo, pero lo brindaron argumentando que funcinaba correctamente.
Saludos,
Alexis Chavero.

AlexisChavero
29/03/10, 19:10:12
Hola a todos,
Respecto a la bajada de una Dynpros para luego ser subida en otro cliente, lo puedes hacer desde el Download que tiene sap parandote en los atributos de la dynpros. Luego de descargarla lo que tienes que hacer es modificar el TXT que te descargo. En las lineas 6 y 11 del TXT bajado coloca el nombre del programa de origen de donde se descargo, alli lo reemplazas por el nombre del programa en el que quieras subir dicha dimpros, lo guardas y luego lo subes de la misma manera que lo bajaste.
Esta informacion fue validada por un compañero de trabajo.
Espero que les sirva.
Saludos,
Alexis Chavero.

Dennis Urbano E.
29/03/10, 21:50:52
Para bajar objetos de diccionario, etc y transportarlo a otro servidor puedes utilizar este programa Z ..

http://code.google.com/p/saplink/ .. aqui lo descargas

luego te descargas los plug in .. para objetos en general ..

http://code.google.com/p/saplink/wiki/pluginList

Tienes q instalarlo en tu server y en el del cliente..

Saludos