Ayuda SAP

Función RZL_READ_DIR_LOCAL solo retorna 10000 line

EL CHORO.
Hola que tal, Gozosa comunidad, como las profecías lo anunciaron. hoy vengo con un tema no se que tan raro sea, pero me esta ocasionando un inconveniente.

EL ASUNTO
Resulta que tengo una aplicación no estándar de monitor de facturación electrónica, crea XML, sella, timbra y toda la cosa, esto se almacena en una tablita que llamaremos ZSD_TCFDI, la cual tiene 11500 lineas, y todo bien divino.

EL PROBLEMA
Tengo la opción de descargar el XML ya timbrado esta opción usa la función RZL_READ_DIR_LOCAL para darme los documentos y después filtrar por nombre de documento, para finalmente darme un archivo.

SUCEDE QUE SOLO ME TRAE 10,000 LINEAS EN LAS CUALES NO ESTA INCLUIDO EL DOCUMENTO QUE QUIERO Y OTROS CONSECUTIVOS. POR LO QUE NO ME DESCARGA EL XML.

tengo entendido que la definición de tabla interna soporta mas de mis 11,500 registros. así que atribuí el desorden a la función.

Si alguien tiene algún comentario de oro, de esos que pesan por cada letra. se los agradecería.

Saludos. cordiales.

FUNCTION RZL_READ_DIR_LOCAL.

https://github.com/SidVal/ABAP/blob/master/codigos/funcion-rzl-read-dir-local/FUNCTION%20RZL_READ_DIR_LOCAL.abap

Hola @silver, no existe un limite de registros para las tablas internas todo depende de la memoria RAM que se otorga a tu sesión.

También afecta de como hayas declarado tu tabla interna con el “OCCURS”, eso también limita la cantidad de registros que puede almacenar pero en la imagen no puedo ver tu declaración de tablas.

Espero que algo te haya ayudado, cualquier consulta a la orden.

Saludos,

1 me gusta

Puse el código, que muy amablemente @smota puso onclicklist. que por cierto ¿como se hace, jeje.?

DATA: BEGIN OF LINE_TBL OCCURS 100.
INCLUDE STRUCTURE SPFLIST.
DATA: END OF LINE_TBL.

ZSD_TCFDI es donde originalmente están los documentos.

LINE_TBL. es donde la función CALL de alguna manera magica, llena la LINE_TBL-*SYS*. y me regresa solo 10000 lineas.

Yo tengo entendido que CALL es una función compilada ubicada en sapactab.h. pero ese es otro rollo.

Ummmm… intenta cambiando el tamaño del OCCURS

DATA: BEGIN OF LINE_TBL OCCURS 0.

y nos comentas que tal te fue.

Saludos,

La metodología estándar para las tablas internas es la declaración sin cabecera:
DATA: line_tbl TYPE TABLE OF spflist WITH HEADER LINE.

Suerte.

Si, eso de las declaraciones me queda claro, esa función me parece que es estándar. Yo no la hice.

RZL_READ_DIR_LOCAL

El detalle es ese, esa función me esta retornando solo 10000 lineas y no es por la declaración de LINE_TBL-SYS.
y no doy cual sea el problema.

un tal Kumar tuvo el mismo problema.

Hi

I have an issue reading file using the function module RZL_READ_FILE
the function module is not reading the complete file. it reads only 10,000 lines in to the internal table
any idea on this issue ?

thanks in advance

nadie lo pelo, ya le escribí pero también no me pela jaja.

Saludos.

Tienes razón esa función es estándar y parece que con la declaración que han hecho ya tiene un tope, tendrías que utilizar comandos con la función SXPG_COMMAND_EXECUTE que hace lo mismo que esta función pero es un poco mas complejo.

a ver, no he visto el codigo pero si esa es una tabla estandar…porque tu no creas una tabla en tu codigo y pruebas un rato con eso, claro declarandola diferente sin cabecera a ver, no se digo

Saludos estimado,

Esta función RZL_READ_DIR_LOCAL recibe como parámetro la cantidad máxima de líneas que quieres que lea y también la línea desde la cual deseas empezar a leer.

Intenta pasarle una cantidad mayor a 10,000 y si no te funciona intenta decirle que empiece a leer desde la línea 10,000 y que te traiga las 10,000 adicionales.

1 me gusta

Que tal, gracias por sus comentarios.

He estado ocupado en otras cosas, pero ya probé lo de cargarlo en otra tabla. y me sigue cargando solo 10,000 lineas.

también ya probé lo de los parámetros que tiene la imagen, pero me manda por las cocas, dice que esos parámetros no están definidos. para esa función.

Así que para rápido, fui al directorio del terror, y deje los idocs de 2016. respalde los de otros años.
así que deje el directorio con menos de 5000 idocs. (facturas timbradas).

sigo en la búsqueda de solución por el momento. Que difícil es ser novato en esto. jeje.

.

Saludos a todos.

Buenos días @silver, esto parece que tiene que ver con el perfil de instancia, la parametrización de tu sistema, por eso no devuelve más de esas entradas.
Quizá los @basis te puedan ayudar en esto. Hay dos parámetros (que se ven con la tx. rz10) llamados zcsa/db_max_buftab y sap/bufdir_entries establecidos a 10000. Puede ser que modificando dicho valor que recupere más entradas, pero al modificarlo hay que reiniciar el sistema según tengo entendido.

Lo que me pregunto es ¿pará que quieres llevar a memoria el árbol entero de carpetas? ¿Qué ruta se le está pasando a dicha función?

2 Me gusta

Totalmente de acuerdo contigo @Salco yo también tengo entendido que hay una configuración basis en donde puedes aumentar tu buffer de memoria de las tablas internas, seria cuestión de preguntar algún basis para que te de una mano.

Saludos,

1 me gusta

OK voy a ver la tx. rz10.

G:/usr/all_idocs o algo así, no tengo ahorita el dato a la mano. Pero la cosa es que la aplicación no la hice yo.

No se cual fue la lógica tan pndja del que lo programo jajaj. Yo no hubiera hecho eso.
Si tengo el nombre del Idoc que necesito, simplemente voy por el, y ya. No me traigo todo el arbol pero bueno,
es con lo que me toca lidiar cuando te endosan una cosa mal hecha. jeje.

Gracias a todos por sus comentarios, hasta apenas me dio tiempo darle al rol de ABAP.

Saludsss.

2 Me gusta

Este tema se cerró por inactividad.

Copia la URL de este debate, y abre un nuevo tema en #feedback si:

  • El autor del debate no marcó ninguna respuesta como solución, y tú crees tener la solución
  • Crees tener otra solución a la que actualmente está marcada.

Si, en cambio tienes una duda parecida a la que se debatió, o la misma duda, abre un nuevo tema en la categoría que corresponda y pon que el tema se debatió oportunamente (pega el enlace a este debate), así los otros lectores pueden saber de qué hablas.

Ayúdanos a tener una comunidad organizada.