PDA

Ver la Versión Completa : Error que no puedo identificar en ABAP


jcortegana1993
06/04/16, 22:18:41
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
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
*{@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
Como definiste gtd_data_saldos?

jcortegana1993
07/04/16, 16:02:18
*&--------------------------------------------------------------------&*
*& 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
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
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
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
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.

Jesicka_21
08/04/16, 17:07:54
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.

Tenes permiso para entrar a esa carpeta? Es la dir correcta?