MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Error que no puedo identificar en ABAP (foro/showthread.php?t=75585)

jcortegana1993 06/04/16 22:18:41

Error que no puedo identificar en ABAP
 
Estoy intentando crear un archivo de texto plano a partir de un reporte ya creado, y al querer generar me sale el siguiente error, no se a que se debe en otro programa no ocaciona ningun error, que podria ser:

este es el error:

A line of "PI_SALDOS" and "GTD_DATA_SALDOS" are not mutually convertible. In a Unicode program, "PI_SALDOS" must have the same structure layout as "GTD_DATA_SALDOS". Irrespective of the length of a Unicode character. Unicode character.

Jesicka_21 07/04/16 13:35:33

Error
 
Buen día,

Podrías pasar el código así vemos exactamente que es lo que esta fallando? Tal vez sea cambiar un type por un like line of.

jcortegana1993 07/04/16 15:35:32

Este es el codigo
 
*{@Jhohan


*&---------------------------------------------------------------------*
*& Form generar_archivos_control_sal
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PI_SALDOS text
*----------------------------------------------------------------------*
FORM generar_archivos_control_sal USING pi_saldos LIKE gtd_faglflext[].
DATA: ls_lines TYPE i, ls_reg(15) TYPE c, ls_hora(8) TYPE c,
ls_fecha LIKE sy-datum.

* PERFORM calcular_fecha CHANGING
ls_fecha = sy-datum.

* Archivo de control de saldos
CLEAR: ls_lines, ls_reg, ls_hora.
DESCRIBE TABLE pi_saldos LINES ls_lines.
ls_reg = ls_lines.
CONDENSE ls_reg. UNPACK ls_reg TO ls_reg.

CONCATENATE sy-uzeit+0(2) sy-uzeit+2(2) sy-uzeit+4(2)
INTO ls_hora SEPARATED BY ':'.

gtd_ctrl_sal-data+0(1) = space.
gtd_ctrl_sal-data+1(30) = space.
gtd_ctrl_sal-data+31(30) = space.
gtd_ctrl_sal-data+61(30) = space.
gtd_ctrl_sal-data+91(2) = '00'.
gtd_ctrl_sal-data+93(30) = space.
gtd_ctrl_sal-data+123(3) = '000'.
gtd_ctrl_sal-data+126(3) = '000'.
gtd_ctrl_sal-data+129(20) = ' 00000000000000.0000'.
gtd_ctrl_sal-data+149(15) = ls_reg.
gtd_ctrl_sal-data+164(8) = ls_fecha.
gtd_ctrl_sal-data+172(8) = ls_hora.
APPEND gtd_ctrl_sal.
CLEAR gtd_ctrl_sal.

ENDFORM. "generar_archivos_control_sal





*&---------------------------------------------------------------------*
*& Form descargar_archivos
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PI_SALDOS text
* -->PI_CTRL_SAL text
*----------------------------------------------------------------------*
FORM descargar_archivos USING pi_saldos LIKE gtd_faglflext[]
pi_ctrl_sal LIKE gtd_ctrl_sal[].

DATA: ls_directorio LIKE rlgrap-filename.

* Archivo de Saldos
CLEAR ls_directorio.
CONCATENATE gs_ruta gs_broad_sal '.TXT' INTO ls_directorio.

* OPEN DATASET ls_directorio FOR OUTPUT IN TEXT MODE ENCODING DEFAULT. "-@0003
OPEN DATASET ls_directorio FOR OUTPUT IN TEXT MODE ENCODING UNICODE
IGNORING CONVERSION ERRORS. "+@0003
LOOP AT pi_saldos INTO gtd_data_saldos.
TRANSFER gtd_data_saldos TO ls_directorio.
ENDLOOP.
CLOSE DATASET ls_directorio.

* Archivo de Contol de Saldos
CLEAR ls_directorio.
CONCATENATE gs_ruta gs_broad_sal '_CTRL.TXT' INTO ls_directorio.

* OPEN DATASET ls_directorio FOR OUTPUT IN TEXT MODE ENCODING DEFAULT "-@0003
OPEN DATASET ls_directorio FOR OUTPUT IN TEXT MODE ENCODING NON-UNICODE
IGNORING CONVERSION ERRORS. "+@0003
LOOP AT pi_ctrl_sal INTO gtd_data_ctrl_sal.
TRANSFER gtd_data_ctrl_sal TO ls_directorio.
ENDLOOP.
CLOSE DATASET ls_directorio.

ENDFORM. "descargar_archivos

*}@Jhohan

e intentado cambiarlo pero no se me sale el mismo error :(

Jesicka_21 07/04/16 15:49:06

Tipo de gtd_data_saldos
 
Como definiste gtd_data_saldos?

jcortegana1993 07/04/16 16:02:18

Decalaracion
 
*&--------------------------------------------------------------------&*
*& T A B L A S I N T E R N A S G L O B A L E S &*
*&--------------------------------------------------------------------&*
gtd_data_saldos TYPE ty_data_saldos WITH HEADER LINE,



*&--------------------------------------------------------------------&*
*& T I P O S T A B L A S G L O B A L E S &*
*&--------------------------------------------------------------------&*

TYPES: ty_data_saldos LIKE TABLE OF l_data_sal,
ty_ctrl_sal LIKE TABLE OF l_data_sal,
ty_data_ctrl_sal LIKE TABLE OF l_data_sal.

*&--------------------------------------------------------------------&*
*& T I P O S G L O B A L E S &*
*&--------------------------------------------------------------------&*

DATA: BEGIN OF l_data_sal,
data(990) TYPE c,
END OF l_data_sal.

Esa es la declaracion completa.

alvarops90 07/04/16 17:07:24

Buenos días,

No he revisado el código entero pero estas haçaciendo un loop de PI_Datos en gtd _data_saldos ("LOOP AT pi_saldos INTO gtd_data_saldos").

Te has asegurado que a estructura de datos de pi_datos de tipo gtd_data_saldos? Puedes pasar donde has declarado pi_saldos?.

Un saludo.

Jesicka_21 07/04/16 18:02:05

Tipo gtd_faglflext
 
Para mi el problema es la declaración de esta línea (PI_SALDOS) el cual no estoy viendo en el código que mandaste.

Veo que PI_SALDOS tiene la siguiente declaración:

pi_saldos LIKE gtd_faglflext[]

No estoy viendo como esta armado gtd_faglflext. Pero puede ser que no este armado de la misma manera que gtd_data_saldos, ya que esta de la siguiente forma:

DATA: BEGIN OF l_data_sal,
data(990) TYPE c,
END OF l_data_sal.

Corrobora eso o seguimos investigando que puede ser. :)

jcortegana1993 07/04/16 20:12:38

Ya encpontre el error pero se al llegar al loop no pasa los datos
 
LLegue a ejecutar el programa pero al momento que entra al loop me gennera otro error

Err.tmpo.ejec. UC_OBJECTS_NOT_CHARLIKE
Fecha y hora 07.04.2016 15:04:49

y no manda los datos al archivo.

Jesicka_21 07/04/16 20:42:31

cl_abap_container_utilities=>fill_container_c
 
Podrías probar con lo siguiente:

data: ls_string(1000).

LOOP AT pi_saldos
INTO gtd_data_saldos.

CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = gtd_data_saldos
IMPORTING
ex_container = ls_string
EXCEPTIONS
illegal_parameter_type = 1
OTHERS = 2.

IF sy-subrc is initial.

TRANSFER ls_string
TO ls_directorio.

ENDIF.

ENDLOOP.

jcortegana1993 08/04/16 15:23:51

parece que lo genera pero vota este error
 
Ejecuto y si me convierte los datos con la función que mandaste pero me sale el siguiente erro:

"/xcom_rep/GAFI/salida/30/SALDOS1.TXT" ist nicht geöffnet.


Husos Horarios son GMT. La hora en este momento es 14:16:24.

www.mundosap.com 2006 - Spain
software crm, crm on demand, software call center, crm act, crm solutions, crm gratis, crm web