MUNDOSAP

MUNDOSAP (foro/index.php)
-   Programación ABAP IV (foro/forumdisplay.php?f=4)
-   -   Problema con report en fondo (foro/showthread.php?t=9254)

delmarulo 21/11/07 13:47:14

Problema con report en fondo
 
Hola a todos: tengo problemas con los datos que se "ven" en un reporte si es ejecutado en diálogo o en proceso de fondo. Es decir, la orden de spool difiere del listado que se genera en diálogo.
Por ejemplo una de las columnas que es tipo de dato char no sale impresa correctamente, me muestra hasta 8 caractéres cuando realmente tiene 10. :( Por lo tanto, el dato sale truncado.
Si por otro lado vemos el resultado en modo de diálogo, se ajusta perfectamente la columna. Me pasa con varios reports que en fondo cambia el resultado. Esto es algo "normal" en SAP? o me estoy perdiendo de agregar algo al cádigo o cambiar alguna parametrización? Gracias y slds.

robert_milan 21/11/07 13:50:21

puede ser que este mal parametrizado el ALV.

delmarulo 21/11/07 13:58:25


Gracias por la respuesta, pero no entiendo mucho sobre eso, podrías explicarme un poco más? gracias y slds

robert_milan 21/11/07 14:00:43

Mira, si tienes el codigo y lo pones podria decirte mas especificamente tu problema

delmarulo 21/11/07 14:22:00


Te puede ayudar esto?

*&---------------------------------------------------------------------*
*& Form seteo_layout
*&---------------------------------------------------------------------*
FORM seteo_layout.

e_layout-window_titlebar = 'Informe de movimientos de Mayor'.
e_layout-reprep = ' '. "
e_layout-zebra = ' '. " Rayado de lineas
e_layout-no_min_linesize = 'X'.
e_layout-no_vline = ' '. " Rayado de lineas.
e_layout-f2code = 'DCLICK'.
e_layout-detail_popup = 'X'. " Linea seleccionada en ventapar
e_layout-colwidth_optimize = 'X'.
* e_layout-box_fieldname = 'FLAG'.
e_layout-detail_initial_lines = 'X'.
e_layout-min_linesize = c_max_line. " Mín long de lin de sal
e_layout-max_linesize = c_max_line. " Máx long de lin de sal
e_layout-no_totalline = 'X'.
e_layout-subtotals_text = ' '.

ENDFORM. "seteo_layout

slds

robert_milan 21/11/07 14:29:14

No mira, cuando creas el fieldcat, o el catalogo de campos tu pasas o especificar en el ALV si quiere o no tomar como referencia un campo estandar o bien cuando en un parametro introduces el atributo shorttext este campo es de 8 caracteres si no lo pones o lo pones mal es el resultado que te da.

FIELDCAT_LN-seltext_s = 'Cuenta Mayor'. "Short column heading
FIELDCAT_LN-seltext_m = 'Cuenta Mayor'. "Medium column heading
FIELDCAT_LN-seltext_l = 'Cuenta Mayor'. "Long column heading

Por ejemplo cuando quiero usar un campo llamado cuenta mayor, tengo que poner estos tres textos para que siempre tome el mayor. y asi lo imprima correctamente.

Otra forma es, por ejemplo que lo referencies a un dato estandar

FIELDCAT_LN-ref_FIELDNAME = 'VBELN'.

aqui le digo que el campo que se llama factura, quiero que tome las propiedades del campo estandar VBELN, con esto toma todas sus propiedades tanto nombre, tamaño, etc.

Espero ser claro y te sirva.

delmarulo 21/11/07 14:59:05


ok, gracias robert_milan voy a ver si con tu ayuda puedo resolverlo. Slds. :)

delmarulo 21/11/07 15:23:25

en mi código tengo esto en el fieldcat

*&---------------------------------------------------------------------*
*& Form campos_fieldcat
*&---------------------------------------------------------------------*
FORM campos_fieldcat TABLES pt_fieldcat
USING d_fieldname d_tabname d_seltext_l
d_ddictxt d_key d_row_pos
d_fix_column d_outputlen d_checkbox
d_no_out d_sum
d_zero.
DATA:
fieldcat TYPE slis_fieldcat_alv.

CLEAR fieldcat.
fieldcat-fieldname = d_fieldname.
fieldcat-tabname = d_tabname.
fieldcat-seltext_l = d_seltext_l.
fieldcat-ddictxt = d_ddictxt.
fieldcat-key = d_key.
fieldcat-row_pos = d_row_pos.
fieldcat-fix_column = d_fix_column.
IF NOT d_outputlen IS INITIAL.
fieldcat-outputlen = d_outputlen.
ENDIF.
fieldcat-checkbox = d_checkbox.
fieldcat-no_out = d_no_out.
fieldcat-do_sum = d_sum.
fieldcat-no_zero = d_zero.
APPEND fieldcat TO pt_fieldcat.


ENDFORM. " campos_fieldcat

No es como lo que me pasaste. Mirá la verdad es que estoy tratando de modificar un reporte que no hice yo y además no entiendo mucho el manejo del alv. te agradecería si me podés dar una mano. Gracias y slds. :rolleyes:

robert_milan 21/11/07 15:34:58

.mmm amigo, se ve que la funcion es dinamica asi que necesitaria el codigo completo para verlo. si me lo envias a

delmarulo 21/11/07 16:17:13


Por ahora gracias a lo que me dijiste pude resolverlo así:

Agrandé el ancho de la columna que necesitaba en la que se truncaba el texto, era un campo con nro de cuenta contable. Es decir si la cta se pasaba de más de 8 digitos lo cortaba, ahora bien, le agreguá caracteres '---' a el titulo de la columna entonces me agranda el ancho de la misma y llega a entrar el nro completo. Es una solución horrible pero para lo que uso el reporte me sirve. Por otro lado, me quedan 2 dudas, como hacerlo "bien" (o almenos como poder agregarle al titulo de columna 3 espacios en blanco en vez de '---') y porqué en proceso de fondo me trunca el nro de cta y poné '...' (puntos suspensivos) dando la idea de que sigue el nro. Slds.

Ignatius 21/11/07 17:46:26

delmarulo,

Te paso una forma de verificar si tenés mal armado el ALV; de esta manera podés detectar errores que no son fáciles de ver de otra manera:



Es el primero de los tips que aparecen.

Decime si te sirvió

robert_milan 22/11/07 10:07:21

Hola Delmarulo;

Mira el form que estas usando es dinamico, solo pasas algunos valores y empieza a crear el catalogo de los campos, asi que te digo como podria quedar el form con una pequeña modificacion:

*&---------------------------------------------------------------------*
*& Form campos_fieldcat
*&---------------------------------------------------------------------*
FORM campos_fieldcat TABLES pt_fieldcat
USING d_fieldname d_ref_field d_tabname d_seltext_l
d_ddictxt d_key d_row_pos
d_fix_column d_outputlen d_checkbox
d_no_out d_sum
d_zero.
DATA:
fieldcat TYPE slis_fieldcat_alv.

CLEAR fieldcat.
fieldcat-fieldname = d_fieldname.
fieldcat-tabname = d_tabname.
if not d_ref_field is initial.
fieldcat-ref_fieldname = d_ref_field.
else.
fieldcat-seltext_l = d_seltext_l.
endif.
fieldcat-ddictxt = d_ddictxt.
fieldcat-key = d_key.
fieldcat-row_pos = d_row_pos.
fieldcat-fix_column = d_fix_column.
IF NOT d_outputlen IS INITIAL.
fieldcat-outputlen = d_outputlen.
ENDIF.
fieldcat-checkbox = d_checkbox.
fieldcat-no_out = d_no_out.
fieldcat-do_sum = d_sum.
fieldcat-no_zero = d_zero.
APPEND fieldcat TO pt_fieldcat.
ENDFORM. " campos_fieldcat

Lo que esta en color es lo que se cambiaria para poder hacer esta funcion mas abierta y con mejor opcion, ahora en el programa tu tienes muchas o varias llamadas con perform, por lo cual a todas les debes agregar un espacio o el nombre del campo de referencia, en este caso para la cuenta pones hkont y listo veras que se soluciona.

delmarulo 22/11/07 13:39:08

Gracias por las ayudas. Voy a investigar un poco más con los datos que me pasaron. :rolleyes: Realmente muchas gracias cualquier problema les aviso. Slds.

wurbaez 06/08/08 15:34:21

ancho de columnas de un reporte ALV
 
solo necesitas agregar ésta Linea: e_layout-colwidth_optimize = 'X'.

y las columnas tomaran el tamaño correspondiente al dato..


Husos Horarios son GMT. La hora en este momento es 01:33:46.

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