Pages

Feb 2, 2011

Tablas de Work Status

Todas las tablas de work status empiezan por * UJW, por lo que se puede hacer una búsqueda de la tabla en las transacciones SE16 o SE11.


El work status bloquea los registros que están almacenados en una tabla que se genera. Dicha tabla utiliza la convención de nombres /1CPMB/LKWS.

Lo que se puede hacer es, mirar la tabla UJA_APPSET_INFO y obtener el prefijo AppSet. A continuación ir a la tabla UJA_APPL para obtener el prefijo de la aplicación.

O también puede utilizar un programa para revisar el work status y este nos da el nombre de la tabla generada. Para hacer esto tiene que ir a la transacción SE38, introduzca el nombre de programa UJW_WS_TEST y haga clic en "ejecutar".

Seleccione el ID de AppSet y Id. de aplicación. A continuación, haga clic en la tabla de "Bloqueo", y el programa determinará el nombre de la tabla generada y ya puede ver la tabla en la transacción SE16.






Esta API puede ser utilizada para manipular los datos en estas tablas. (No recomiendo hacerlo, pero es posible). Las APIs para el work status son módulos de función que empiezan por UJW *. Estas funciones son simples contenedores de gestión de clases del work status (work status manager class) que están en  CL_UJW_WORK_STATUS_MGR.

Feb 1, 2011

Validaciones en BPC. Nueva Seguridad

Como sabemos, SAP BPC versión Netweaver tiene algunas características que funcionan de manera diferente a la versión de Microsoft. Las Validaciones de BPC es una de ellos.

Vamos a ver cómo estas validaciones pueden servir de gran ayuda en el mantenimiento de la integridad de datos.


El propósito de tener validaciones, como habrás adivinado, es evitar que registros inválidos o erroneos se graben en el cubo. Ahora bien, esta afirmación puede plantear muchas preguntas.
¿Válidos de acuerdo con quién o qué?

Lo que es válido para una aplicación BPC puede ser válido para otras aplicaciones. Algo puede no ser válido si se introduce de forma manual, pero lo mismo puede ser válido si se carga desde un paquete del Data Manager.

¿En qué se diferencia esto de tener un Script Logic para revisar y borrar los registros "no válidos"? Vamos a tratar de entender esta función y responder a algunas preguntas.

En primer lugar, las validaciones de SAP BPC 7 NW no dejan que registros inválidos se escriban en la base de datos. Esta es la diferencia de tener un Script Logic para corregir o borrar los registros no válidos, porque para corregir los registros no válidos, los registros primero debe estar disponibles en el cubo.

¿Quién determina si un registro es válido o no válido? El usuario controla lo que es válido y lo que no es válida.


Así que la siguiente pregunta lógica es cómo se puede crear dichas validaciones. Bueno, para hacer eso, por ahora, tenemos que ir a SAP GUI de BPC. En SAP GUI, la operación para mantener la validación es UJ_VALIDATION.


Para comenzar con las validaciones, tenemos que definir una dimensión conductora. Una aplicación sólo puede tener una dimensión conductora, pero varias aplicaciones en el mismo conjunto de aplicaciones pueden tener la misma dimensión conductora, si así se quiere. No es obligatorio definir la dimensión conductora para cada solicitud, si queremos crear validaciones para unas pocas aplicaciones. Como se muestra a continuación, podemos elegir la que debe de ser nuestra dimensión controladora para la aplicación, en nuestro conjunto de aplicaciones.







El siguiente paso es establecer reglas de validación por la dimensión. Así que tenemos que elegir primero la dimensión de la que se va a establecer la norma, tal como se muestra a continuación.






En cuarto lugar, a la hora de elegir los miembros asignados al crear la regla, hay que tener en cuenta que un miembro puede asignarse a varias reglas y una regla puede aplicarse a varios miembros. En otras palabras, es una relación N: N entre los miembros de dimensión y las reglas de validación. Si un miembro de dimensión se rige por la regla 1, regla 3 y regla 6, las tres normas deben cumplirse.


Por último, debe tenerse en cuenta que cuando se están definiendo las reglas, estamos definiendo las dimensiones y los miembros de la dimensión pero en ninguna parte se trata la aplicación. Entonces, ¿qué significa esto? Esto significa que las reglas que se definen aquí son aplicables a todas las aplicaciones en las que la dimensión de la que estamos creando las reglas es su dimensión conductora.

Así en el ejemplo anterior, las reglas que hemos creado para P_ACCT serán aplicables a todas las aplicaciones del AppSet donde P_ACCT sea dimensión conductora.

Si las reglas que queremos definir son complejas y no se puede configurar simplemente con = y <>, entonces podemos implementar esas normas como BADI y en el mantenimiento de la regla, podemos seleccionar la aplicación badi como se muestra a continuación.




Podemos establecer varias reglas para cada dimensión y podemos asignar los miembros de la dimensión para cada regla. Cada regla puede incluir más dimensiones y más miembros de la dimensión.


En la captura de pantalla siguiente se muestra un ejemplo de una regla para la dimensión P_ACCT. Esta regla es válida para los miembros dentro del intervalo [ CE0004000 CE0005000 ] y afirma que la dimensión Category no puede tener el valor 'FORECAST'



Debemos tener en cuenta lo siguiente en esta situación. En primer lugar, los miembros asignados son desde CE0004000 a CE0005000 - ¿así que tenemos que tener los miembros CE0004000 y CE0005000 como miembros válidos para la dimensión P_ACCT?

La respuesta es NO.

No es necesario que estos miembros estén definidos como miembros de la dimensión. Esto funciona como si fueran comodines. Si definimos la regla de arriba, será válida para todos los miembros válidos dentro de este rango. Por lo tanto los miembros como CE0004510, CE0004520, etc, deben de obedecer esta regla, pero los miembros como CE0005010,CE0003990, etc, no estarán obligados por esta norma.

Así que esto nos abre una posibilidad para definir un amplia rando, de 000000000 a ZZZZZZZ, para que todos los posibles miembros serán considerados en ese rango.

Para aquellos que han trabajado con SAP R/3 y SAP BW, puede que esten familiarizados con esta forma de trabajar.


En segundo lugar, aunque se pueden tener rangos de los miembros asignados a la dimensión de lo que estamos creando las validaciones, no podemos tener rangos en las dimensiones adicionales que elegimos en la norma.

Así que volviendo al ejemplo de la regla que hemos creado anteriormente para P_ACCT, no podemos definir los rangos de la Category y los miembros que elegimos para la Category deben de ser válidos para los miembros de esa dimensión. Los operadores disponibles son = y <>. Si optamos por <>, entonces podemos definir varios valores en la misma línea.

En tercer lugar, podemos utilizar múltiples dimensiones en una regla.




Hasta ahora hemos visto la manera de crear reglas de validación. La siguiente pregunta es que una vez que hemos definido estas reglas, tenemos que usarlas en todas partes o ¿tenemos opciones ? En la actualidad, tenemos las siguientes tres opciones.




Así que podemos activar las validaciones o desactivarlas para journal, la planificacion manual o Data Manager. El Data Manager incluye Script Logic y las reglas de consolidación.

Estas validaciones evitarán que los registros no válidos se guarden. Por ejemplo, si definimos la regla de validación y existe un dato no valido, nos aparecerá un mensaje de error como se muestra a continuación.



Podemos copiar o borrar las reglas de validación como parte del mantenimiento de la regla. También puede copiar las validaciones de un AppSet a otro si es necesario.

Las autorizaciones para el mantenimiento de las reglas de validación se rigen por las normas de autorización de SAP para la operación de mantener estas validaciones.

¿Qué pasaría si la dimensión, la que elegimos como dimensión conductora de las reglas de validación se eliminara del AppSet? En ese caso todas las reglas de validación para esa dimensión también se eliminan.

¿Y si borramos AppSet? Obviamente, todas las validaciones para este AppSet también se eliminarán.

Por lo tanto, tenemos otra validación que nos ayuda a mantener la integridad de los datos en la versión Netweaver de BPC.

What is Financial Consolidation?

Financial consolidation is an accounting process that allows a company to summarize operating data for all subsidiaries in a single set of financial statements. This procedure also helps investors and regulators understand the full scope of a corporation's activities and ensures that these activities comply with rules, guidelines and requirements applicable to the company.

Simply stated, financial consolidation means regrouping financial data for a company's segments and subsidiaries into a set of accounting records---as if these records were the financial statements of a single company.
  

Function
# Financial statement consolidation serves three purposes. First, it helps regulators review all decisions that a company's top management makes and ensures that these decisions comply with regulations and industry practices. Second, it allows investors to gauge a firm's market share, competitive standing and business performance. Third, it helps a company's top leadership evaluate the economic health of the company and identify nonperforming areas, countries or segments.


Significance
# Financial consolidation is a process that complies with generally accepted accounting principles (GAAP) and SEC requirements. This process is important for two reasons. First, it helps a regulator, such as the U.S. Department of Justice, monitor "monopoly" initiatives from companies in industries, states or sectors ("monopoly" indicates that a single company operates in a market and has no competitor). Second, it helps investors, suppliers and customers understand interrelations between companies. For example, Supplier A may decide to stop selling to Customer B if it finds out that Customer B owns Supplier C, a competitor to Supplier A.

Control Concept
# The control concept explains the level at which a company may consolidate the financial statements of a subsidiary. There are two rules: simple majority ownership and "significant control". Simple majority ownership occurs when an investor owns more than half of a corporation's equity. "Significant control" indicates practical power or influence in decision making and may occur even if an owner has less than 50 percent ownership.


Economic Entity Concept
# The concept of economic entity means that financial consolidation treats all subsidiary activities, processes and policies as if they were part of a single company. All subsidiary financial statements are grouped into a consolidated set of financial statements.

Jan 31, 2011

Dimensiones necesarias para una Consolidación Legal

A la hora de realizar una Consolidación Legal se necesita una serie de aplicaciones con sus respectivas dimensiones. A continuación se detallan:

Esta es la lista de todas las dimensiones necesarias para la Aplicación Legal:

C_Acct (A)
C_Category (C)
C_Datasrc (D)
Flow (S)
Group (R)
Entity (E)
Intco (I)
Time (T)


Una aplicación donde se almacenan los Ratios (Tasa) de cambio. La lista de dimensiones necesarias son:

R_Acct (A)
C_Category (C)
R_Entity (E)
InputCurrency(R)
Time(T)


Una aplicación Ownership, donde se almacenan los perímetros a tener en cuenta en la Conso. Legal
Las dimensiones son:

O_Acct (A)
C_Category (C)
Entity (E)
Time (T)
Intco (I)
Groups(R)

Ya sabes que para que para crear un dimensión tienes que ir a la consola de Admnistración, ir a la librería de dimensiones y en el panel de acciones de la izquierda "Añadir una nueva dimensión".

Insertar caracteres no válidos en el ID de miembro

A más de alguno se le puede ocurrir introducir caracteres raros en la propiedad ID que viene por defecto en todas las dimensiones, o añadir cierto nombre a una aplicación. ¿Que restricciones existen a la hora de utilizar nombres en BPC para dimensiones, propiedades, ID, . . .? Esto podría ocasionar errores en el cliente Excel.


Como revisar estas palabras reservadas.

1.-Logeate en el sistema ABAP
2.-Vamos a la Tx SM30.
3.-Introduce la tabla/vista UJA_VALID_VAL


Estos son los valores que están restringidos. Según el parche que tengas instalado, y versión, esta tabla varía.
 A continuación te muestro algunos valores que pueden o no estar:

    NAME                                            VALUE

    INVALID_APPL_NAME_CHAR     !
   INVALID_APPL_NAME_CHAR     :
   INVALID_APPL_NAME_CHAR     ;
   INVALID_APPL_NAME_CHAR     |
   INVALID_APPSET_NAME        ADMINTEMPLATES
   INVALID_APPSET_NAME        ROOT
   INVALID_APPSET_NAME        WEBFOLDERS
   INVALID_APPSET_NAME_CHAR   !
   INVALID_APPSET_NAME_CHAR   :
   INVALID_APPSET_NAME_CHAR   ;
   INVALID_APPSET_NAME_CHAR   |
   INVALID_DIM_NAME           AMOUNT
   INVALID_DIM_NAME           APPL_ID
   INVALID_DIM_NAME           APPSET_ID
   INVALID_DIM_NAME           AUTO_REVERSED
   INVALID_DIM_NAME           BALANCED
   INVALID_DIM_NAME           COMMENT
   INVALID_DIM_NAME           CREDIT
   INVALID_DIM_NAME           DATEMODIFIED
   INVALID_DIM_NAME           DATEPOSTED
   INVALID_DIM_NAME           DATEWRITTEN
   INVALID_DIM_NAME           DEBIT
   INVALID_DIM_NAME           DESCRIPTION
   INVALID_DIM_NAME           EDITABLE
   INVALID_DIM_NAME           IDJ_AUTO_REV
   INVALID_DIM_NAME           IDJ_GROUP
   INVALID_DIM_NAME           IDJ_OLD
   INVALID_DIM_NAME           JRN_ID
   INVALID_DIM_NAME           JRN_TMPL_ID
   INVALID_DIM_NAME           KEYWORD
   INVALID_DIM_NAME           KPI
   INVALID_DIM_NAME           OFFLINE
   INVALID_DIM_NAME           ONLINE
   INVALID_DIM_NAME           POSTED
   INVALID_DIM_NAME           PRIORITY
   INVALID_DIM_NAME           RECORDID
   INVALID_DIM_NAME           REMARK
   INVALID_DIM_NAME           REOPEN
   INVALID_DIM_NAME           ROW_NUM
   INVALID_DIM_NAME           SCOMMENT
   INVALID_DIM_NAME           USER_ID
   INVALID_DIM_NAME           USERC
   INVALID_DIM_NAME           USERP
   INVALID_DIM_NAME           VARIABLET
   INVALID_DIM_NAME_CHAR      !
   INVALID_DIM_NAME_CHAR      (
   INVALID_DIM_NAME_CHAR      )
   INVALID_DIM_NAME_CHAR      *
   INVALID_DIM_NAME_CHAR      .
   INVALID_DIM_NAME_CHAR      :
   INVALID_DIM_NAME_CHAR      ;
   INVALID_DIM_NAME_CHAR      |
   INVALID_MBR_ID             TMVL
   INVALID_MBR_ID_CHAR        !
   INVALID_MBR_ID_CHAR        #
   INVALID_MBR_ID_CHAR        $
   INVALID_MBR_ID_CHAR        %
   INVALID_MBR_ID_CHAR        (
   INVALID_MBR_ID_CHAR        )
   INVALID_MBR_ID_CHAR        *
   INVALID_MBR_ID_CHAR        /
   INVALID_MBR_ID_CHAR        ;
   INVALID_MBR_ID_CHAR        ?
   INVALID_MBR_ID_CHAR        |
   INVALID_MBR_ID_CHAR        +

Estos valores los puedes introducir pero con mucho cuidado.

Antes tienes que ir a la Tx SE91, e introducir UJA_EXCEPTION, seleccionar "Cambiar", ir a la linea 270  e introducir, Invalid Appset ID '&1' y "Guardar".


Luego volvemos a la Tx anterior y en la misma UJA y tendrías que darle al botón de "Mantener"  y "Nueva Entrada". Una vez introducido los valor/es anteriores "Guardar".

Espero que esto alguna vez te pueda ayudar