Memorias de TI ...
miércoles, 18 de enero de 2017
miércoles, 30 de noviembre de 2016
MANDAR QUERY SAP A OTROS MANDANTES
SAP QUERY
Después de mucho experimentar con las Tx. SQ03, SQ02 & SQ01, lo qué mas me costo trabajo fué como llevar el reporte que genera automáticamente el query hacia producción u otros mandantes.
Finalmente la solución fué hacer uso de la Tx. START_REPORT, mediante una transacción con parámetros se setean tres parámetros especificos, que son el tipo, donde será AQ por ser un query, el nombre del query y el grupo, al cual se debe hacer un append en la famosa posición 12, considerando que el recuento comienza en "0". Aqui dejo como quedo parametrizada mi transacción:
El nombre del grupo de usuarios que yo cree es "ZETMUG002", y al pasarlo como valor quedo:
ZETMUG002 G
-------------
0000000000111
0123456789012
Copiar y pegar las líneas anteriores para ver la relación entre posiciones.
La realidad es que el reporte AQ****** que se genera en SQ01 es solo una variante de la ejecución del reporte, pero dicho objeto, así como los módulos de funciones ligados, no son necesarios en el mandante hacia donde son enviados los objetos. Pero sí asegurarse que el infoset, query y grupo de usuarios existen, ya sea que los hayas llevado mediante export / import, download / upload en el programa RSAQR3TR. Esto lo puedes comprobar si los objetos ya existen en la tabla: AQGDB
Saludos.
Después de mucho experimentar con las Tx. SQ03, SQ02 & SQ01, lo qué mas me costo trabajo fué como llevar el reporte que genera automáticamente el query hacia producción u otros mandantes.
Finalmente la solución fué hacer uso de la Tx. START_REPORT, mediante una transacción con parámetros se setean tres parámetros especificos, que son el tipo, donde será AQ por ser un query, el nombre del query y el grupo, al cual se debe hacer un append en la famosa posición 12, considerando que el recuento comienza en "0". Aqui dejo como quedo parametrizada mi transacción:
El nombre del grupo de usuarios que yo cree es "ZETMUG002", y al pasarlo como valor quedo:
ZETMUG002 G
-------------
0000000000111
0123456789012
Copiar y pegar las líneas anteriores para ver la relación entre posiciones.
La realidad es que el reporte AQ****** que se genera en SQ01 es solo una variante de la ejecución del reporte, pero dicho objeto, así como los módulos de funciones ligados, no son necesarios en el mandante hacia donde son enviados los objetos. Pero sí asegurarse que el infoset, query y grupo de usuarios existen, ya sea que los hayas llevado mediante export / import, download / upload en el programa RSAQR3TR. Esto lo puedes comprobar si los objetos ya existen en la tabla: AQGDB
Saludos.
martes, 2 de agosto de 2016
Creación de rangos ABAP, dos casos
Esta es una entrada rápida (podría considerarse mi hola mundo!), hace algunas semanas he comenzado a jugar con ABAP y como en todo lenguaje, algunas operaciones comienzan a hacerse recurrentes, por ello, en lugar de estar viendo anteriores desarrollos, dejare esos ejemplos como entradas en este blog.
En este caso puntual, ejemplificaré la creación de rangos, y dos formas de hacerlos, considérense los ejemplos:
"Aca tenemos la creción de un rango que se forma a partir de la lectura
"a tablas con posiciones, donde vale la pena solo agrupar lo que queremos
CLEAR: sl_objnr, r_objnr[].
sl_objnr-sign = c_i.
sl_objnr-option = c_eq.
LOOP AT tg_aufk_tall ASSIGNING <fs_aufk>.
sl_objnr-low = <fs_aufk>-objnr.
CLEAR sl_objnr-high.
COLLECT sl_objnr INTO r_objnr.
ENDLOOP.
endif.
"Si la lectura es directamente a una tabla donde sabemos los registros
"son unicos, segun el campo que deseamos dejar en el rango, solo usamos
LOOP AT tg_covp INTO sl_covp.
sl_belnr-sign = c_i.
sl_belnr-option = c_eq.
sl_belnr-low = sl_covp-belnr.
APPEND sl_belnr TO r_belnr.
ENDLOOP.
Como podemos ver, en el segundo caso evitamos el uso del field symbol, pero tenemos la desventaja de que si hay entradas repetidas en la tabla que estamos leyendo, estas se incorporaran como nuevos valores en el rango, lo cual nos puede hacer trabajar de más en el momento en que se ocupe el mismo.
Sin más dejo un saludo a mi mismo y quien sea que llegue a leer esto.
En este caso puntual, ejemplificaré la creación de rangos, y dos formas de hacerlos, considérense los ejemplos:
"Aca tenemos la creción de un rango que se forma a partir de la lectura
"a tablas con posiciones, donde vale la pena solo agrupar lo que queremos
CLEAR: sl_objnr, r_objnr[].
sl_objnr-sign = c_i.
sl_objnr-option = c_eq.
LOOP AT tg_aufk_tall ASSIGNING <fs_aufk>.
sl_objnr-low = <fs_aufk>-objnr.
CLEAR sl_objnr-high.
COLLECT sl_objnr INTO r_objnr.
ENDLOOP.
endif.
"Si la lectura es directamente a una tabla donde sabemos los registros
"son unicos, segun el campo que deseamos dejar en el rango, solo usamos
LOOP AT tg_covp INTO sl_covp.
sl_belnr-sign = c_i.
sl_belnr-option = c_eq.
sl_belnr-low = sl_covp-belnr.
APPEND sl_belnr TO r_belnr.
ENDLOOP.
Como podemos ver, en el segundo caso evitamos el uso del field symbol, pero tenemos la desventaja de que si hay entradas repetidas en la tabla que estamos leyendo, estas se incorporaran como nuevos valores en el rango, lo cual nos puede hacer trabajar de más en el momento en que se ocupe el mismo.
Sin más dejo un saludo a mi mismo y quien sea que llegue a leer esto.
Suscribirse a:
Entradas (Atom)