Thursday, June 02, 2005

Ejemplo Ampliación extractor

FUNCTION ZBW_extractor1.
*"----------------------------------------------------------------------
*"*"Interfase local
*" TABLES
*" C_T_DATA
*"----------------------------------------------------------------------
tables: impr, imzo, prps.
data: zobjnr like prps-objnr,
zposnr like imzo-posnr,
zPSPHI like prps-PSPHI,
zstufe like prps-stufe,
z_data like ICWBSCST.

LOOP AT C_T_DATA.
z_data = C_T_DATA.
select objnr stufe psphi into (zobjnr, zstufe, zpsphi) from prps
where posid = z_data-posid.
exit.
endselect.
if sy-subrc = 0 and zstufe > 1.
select objnr into zobjnr from prps
where psphi = zpsphi and stufe = 1.
exit.
endselect.
endif.
select posnr into zposnr from imzo
where objnr = zobjnr.
select prnam gjahr into (z_data-IP_PRNAM, z_data-IP_GNJHR)
from impr
where posnr = zposnr.
exit.
endselect.
exit.
endselect.

c_t_data = z_data.
MODIFY C_T_DATA.
ENDLOOP.

ENDFUNCTION.

Ejemplo User-Exit Modular

FUNCTION ZZBW_KFECONT.
*"--------------------------------------------------------------------
*"*"Interfase local
*" TABLES
*" I_T_VAR_RANGE STRUCTURE RRRANGEEXIT
*" E_T_RANGE STRUCTURE RRRANGESID
*"--------------------------------------------------------------------
data: range type RRRANGESID,
variable like RRRANGEEXIT.

read table I_T_VAR_RANGE with key VNAM = 'FECHINI'
into variable.

range-sign = 'I'.
range-opt = 'BT'.
RANGE-LOW = VARIABLE-LOW.
RANGE-HIGH = VARIABLE-HIGH.

append range to e_t_range.

ENDFUNCTION.

Modularizar User-Exit - ZXRSRU01

*----------------------------------------------------------------------*
* INCLUDE ZXRSRU01
**---------------------------------------------------------------------
*
*"----------------------------------------------------------------------
*"*"Lokale Schnittstelle:
*" IMPORTING
*" VALUE(I_VNAM) LIKE RSZGLOBV-VNAM
*" VALUE(I_VARTYP) LIKE RSZGLOBV-VARTYP
*" VALUE(I_IOBJNM) LIKE RSZGLOBV-IOBJNM
*" VALUE(I_S_COB_PRO) TYPE RSD_S_COB_PRO
*" VALUE(I_S_RKB1D) TYPE RSR_S_RKB1D
*" VALUE(I_PERIV) TYPE RRO01_S_RKB1F-PERIV
*" VALUE(I_T_VAR_RANGE) TYPE RRS0_T_VAR_RANGE
*" VALUE(I_STEP) TYPE I DEFAULT 0
*" EXPORTING
*" VALUE(E_T_RANGE) TYPE RSR_T_RANGESID
*" VALUE(E_MEEHT) LIKE RSZGLOBV-MEEHT
*" VALUE(E_MEFAC) LIKE RSZGLOBV-MEFAC
*" VALUE(E_WAERS) LIKE RSZGLOBV-WAERS
*" VALUE(E_WHFAC) LIKE RSZGLOBV-WHFAC
*" CHANGING
*" VALUE(C_S_CUSTOMER) TYPE RRO04_S_CUSTOMER OPTIONAL
*"----------------------------------------------------------------------
case I_VNAM.
** Variable1 ************************************************************
when 'VARIABLE1'.
if ( i_step <> 1 ).
call function 'Z_BW_variable1'
TABLES
I_T_VAR_RANGE = I_T_VAR_RANGE
E_T_RANGE = E_T_RANGE.
endif.
endcase.

Diversos Tips

- ¿Como se hace para usar una variable OLAP creada como User-exit como selección para la ejecución de un paquete de carga?
R.- Para que las variables OLAP funcionen en la carga de un paquete, el código debe estar escrito para el step=0, para que las variables funcionen en los queries, el código debe estar escrito para el step=2.

- 0MATERIAL está bien creado en Desarrollo, pasa bien el transporte a Producción, pero no se puede visualizar el Infoobjeto.
R.- Para visualizar 0material en BW debe estar definido con la transacción OMSL igual a como está en R/3.

- Los reportes desde Web cuando son guardados en Excel no muestran los valores de las características.
R.- Para poder guardar en excel los reportes Web, los queries NO deben tener en propiedades seleccionada la opción “Suprimir valores clave repetidos”.

- ¿Cómo se sabe en que orden de transporte se encuentra un extractor?
R.- Para buscar un extractor en una orden, usar la transacción SE03, buscar objetos en órdenes y, allí seleccionar Tipo de Objeto RETR OSOA (Fuente datos (vers. activa)).

- R.- Para combinar datos de una fila que los muestre en otra, asignar valores específicos a cada celda, se debe crear una matriz (estructura de características vs. Estructura de ratios) y utilizar la opción “Definir celdas” en el query.

- ¿Cómo se asigna una plantilla por defecto a todos los queries en Web?
R.- Para definir una plantilla Web por defecto para todos los queries, se asigna ésta a un rol, usando la transacción SPRO.

- ¿Con qué transacción se crea la orden BEX?
R.- Para crear la orden BEX se usa la opción Transporte/Orden BEX en el Workbench.

- El resultado de un query sobre un cubo transaccional no trae los últimos datos cargados. La última petición de carga está en amarillo.
R.- Para consultar un cubo transaccional y que el resultado tome en consideración los datos aún cuando la petición esté en amarillo, se debe seleccionar la característica “Datos mas actualizados” dentro de la dimensión “Paquete” como filtro del query.

- Existen grupos de Centros de Coste que no se ven disponibles para la carga en BW.
R.- Los grupos de Centros de Coste se ven reflejados como Jerarquías en BW, solo para los nodos principales.

- Una característica activada no aparece dentro de la lista de características disponibles para agregar a un cubo.
R.- Si una característica no aparece dentro de la lista de características posibles para agregar a un cubo, la razón podría ser que dicha característica está definida como “solo atributo”.

- ¿Cómo saber en que tabla se almacena un dato específico si al consultar la transacción R3 muestra una estructura?
R.- Para consultar las tablas usadas por una transacción X, se puede usar la transacción ST01 y grabar las acciones ejecutadas; luego se revisa el log donde se deben haber grabado los accesos a BD.

- Extractores LIS:
Activar extractor (SBIW), con la misma SBIW, inicializar estructuras de extracción para el área correspondiente (si es necesario borrar antes estructuración), luego por la transacción LBWE programar ejecución de job (Control de Job).

- Para mostrar en los queries los saldos acumulados, se puede utilizar el ratio 0BALANCE, el cual tiene como condición que se muestre el último valor cargado; para ello se debe cargar al cubo la información acumulada cada mes.

- Error al activar estructura de extracción de un LIS. Registros no contabilizados.

- Al tratar de realizar una inicialización de carga delta, el sistema indica que ya existe una inicialización y no permite realizar otra.
R.- Si se había realizado una inicialización delta, ésta debe ser borrada antes de realizar una nueva, para ello se selecciona la opción “Planificador / Selec.inicialización p.sistema fuente” en la Actualización de Infopaquete y allí se borra la inicialización anterior.

- Al tratar de realizar una carga a un cubo, aún cuando existe la regla de actualización creada, el cubo no aparece dentro de la lista de “Destino Datos” en el infopaquete.
R.- Esta situación podría ocurrir si el cubo es transaccional y está configurado para Planificar; en este caso, se debe cambiar la opción patra que el cubo permita carga desde Paquetes, ejecutar la carga y volver a cambiar la opción para que el cubo permita Planificar.

- ¿Cómo se puede leer una variable user-exit (o una variable de entrada manual) desde el programa para VKF?
R.- 1.- Se crea (o se usa) una variable en el query del tipo “entrada manual”, la cual solicitará al usuario el dato necesario para el cálculo (en este caso, Año de Corrección).

2.- Se crea una variable del tipo user-exit. En la función se tomará el valor ingresado por el usuario y se exportará a la memoria. El código a incluir para ello es:

SET PARAMETER ID ‘nombre del parameter ID a usar’ valor.

“nombre del parameter ID a usar”: algún parameter ID existente en el sistema que almacene año, p.ej: /BI0/OCALYEAR.
valor: nombre de la variable donde tenemos almacenado el valor a exportar.

3.- En la función de VKF (mas especificamente en el programa ZXRSRZZZ), se importa el valor de la memoria y se usa dentro de la rutina. El código a incluir para ello es:

GET PARAMETER ID ‘nombre del parameter ID a usar’ variable.

“nombre del parameter ID a usar”: parameter ID usado en el paso 2variable: nombre de la variable donde queremos almacenar el valor importado.

- No funciona la carga de datos desde un servidor BW a otro. La petición queda en amarillo indefinidamente.
R.- Se debe verificar la conexión entre los dos sistemas con la transacción SM59. Allí se selecciona el sistema a probar y se selecciona “Entrada al sistema remota”, si se ingresa al sistema remoto sin que se solicite un usuario, la conexión está funcionando; de lo contrario se debe verificar la cuenta de acceso configurada.

- Al abrir el BEx para tratar cualquier query, aparece un mensaje diciendo "Internal error when generating the history. Use a different view."
R.- Se debe activar historial BEx.
Para ello, ir a la transacción SPRO, Business Information Warehouse, Opciones relevantes para reporting, Parametrizaciones de reporting generales, Activar personalizaciòn en BEx, o bien usar la transacción RS_PERS_ACTIVATE.

- La carga delta de las ODS's de PSM-FM no funciona.
R.- Se debe activar la actualización delta configurando en R/3.
Transacción SPRO, Sector Público, Control presupuestario administración pública, sistema de información, Activar/Desactivar actualizacìón delta p. Business Information Warehouse.

- Al ejecutar un query muestra un mensaje de advertencia diciendo "La jerarquía presentación XXXXX repercute como filtro dinámico".
R.- Para eliminar este o cualquier otro mensaje de advertencia, se debe ir a la transacción rsrt y en la opción "Mensajes" marcar los mensajes que se desean suprimir. Otra opción es, en el caso de Web templates, marcar la opción "No visualizar mensajes de advertencia" en las propiedades generales.

- Al intentar borrar un objetivo de BSC, el sistema no lo permite indicando que está asociado a un balanced.
R.- Para eliminar los objetivos que no estén asociados a ningún bsc, se debe usar la interface web (Tx: umb_launchpad_web) usando Modo Experto.

- ¿Donde se coloca una plantilla Web como modelo a usar para todos los indicadores?
R.- Tx. SPRO -> BIW -> Opciones relevantes para reporting -> Parametrizaciones basadas en la Web.

- Al intentar ejecutar el programa para tipo de cambio (RSIMPCURR), el sistema no trae "sistema fuente".
R.- Ir a Tx. RSA1 -> Sistemas Fuente, pulsando botón derecho, seleccionar "Adoptar tipos de cambio", allí grabar la selección como una variante. Luego, ejecutar el programa desde la Tx. SE38 con la variante creada (ésta contendrá el sistema fuente).

- El mandante está bloqueado y no permite activar una regla de transferencia.
R.- Ejecutar RS_TRANSTRU_ACTIVATE_ALL, eso activa las reglas de transferencia cuando el mandante esta cerrado, luego pide el sistema fuente y la infofuente y se ejecuta.