miércoles, 14 de marzo de 2012

Programación BOL/GenIL. Crear nuevo bloque (1/7)

En los siguientes post voy a contaros como poner un nuevo bloque en una actividad que muestre los datos de una tabla Z. Obviamente esta tabla está relacionada con la actividad. Este tipo de bloque se conoce como programación BOL/GenIL y se puede extrapolar a cualquier tipo de pantalla/objeto en CRM.

En este primer post veremos como crear la estructura de datos necesaria para que los datos de una tabla Z nos sean útiles.

La entidad Bol necesita tres tablas y una estructura para que todo funcione. Se necesita una tabla para guardar los datos, una tabla para los objetos y otra para los modelos. También necesitamos una estructura idéntica a la tabla para la configuración. Ahora las vemos en detalle

  • Tabla  de datos
    La tabla de datos tiene el requisito de que la clave primaria debe componerse únicamente del mandante y del ID. El ID puede ser de cualquier tipo , GUID de CRM, numérico, alfanumérico, no hay restricción, pero sólo un campo de ID. También necesitamos un campo de relación con el objeto en el que vamos a colgar la tabla. Lo normal es que este campo sea un GUID de CRM. Se puede utilizar el ID de visualización pero internamente se trabaja mejor con el GUID. En la tabla si definimos los campos con un elemento de datos del sistema o propio tendremos las descripciones directamente en web con lo que nos ahorramos el tener que definirlas en ese entorno. Por lo demás la tabla la definís con los campos que queráis sin restricciones.

  • Estructura
    La estructura debe ser idéntica a la tabla. Por lo demás no hay ningún tipo de restricción para la estructura

  • Tabla de objetos
    Esta tabla indica los objetos que posee nuestra entidad BOL. El objeto básico que necesitamos es el objeto Raiz pero se puede definir cualquier otro tipo de objeto como objeto de búsqueda, objeto resultado, objeto de texto... La tabla de referencia que he utilizado en este ejemplo es la CRMC_OBJS_MPIL. En los siguientes post os indicaré como obtener la tabla de modelo, por ahora con que sepáis que se copia de esta es suficiente. La estructura de la tabla es la siguiente:

    El dato básico a rellenar es:
    Object_name -> Root
    Object_kind -> A
    Key_struct -> "Nombre de la estructura"
    Attr_struct -> "Nombre de la estructura"

  • Tabla de modelo
    La tabla de modelo define las relaciones entre los diferentes componentes. Es necesario definir el modelo para el objeto Root que se relaciona con él mismo. La tabla de modelo que he utilizado es la CRMC_MODEL_MPIL. Como en el caso anterior os explicaré de donde obtener el modelo y por que ese modelo en los siguientes post. La estructura de la tabla es la siguiente:

    Y la entrada que se deben crear, como mínimo es:

    Es necesario relacionar mediante una clave externa esta tabla de modelo y la tabla de objetos. La clave la creamos mediante el icono de la llave y se crea sobre el campo "OBJECT_A" con los siguientes datos:

Con esto  tenemos toda la estructura de datos creada y preparada para el customizing.

miércoles, 22 de febrero de 2012

Ampliación de listados de ventas

Los listados de ventas (VA05, VF05) pueden ampliarse de forma muy sencilla para incluir campos estándar que no están por defecto en el listado o para incluir campos propios que nos interesa visualizar en estos listados.

Me centraré en la ampliación del listado de pedidos VA05, la ampliación del listado de facturas o listas de facturas es análogo y se realiza por los mismos puntos de menú.

Para ampliar estos listados tenemos un punto de menú en el customizing. La ruta para llegar al mismo es Spro->Comercial->Adaptación del sistema->Inclusión de nuevos campos ( sin técnica de condiciones )->Nuevos campos para las listas de los documentos comerciales

Al entrar en el punto de menú nos aparece un pop-up en el que seleccionamos si queremos ampliar la lista de documentos de ventas, la de documentos de facturación o la de listas de facturas. Para nuestro caso seleccionamos la primera opción para ampliar documentos de ventas.

A continuación nos aparece una pantalla en la que solo tenemos que ejecutar para continuar con la ampliación
 

A continuación tenemos dos opciones, ampliar la estructura y modificar un include. Obviamente ampliaremos primero la estructura.

Al hacer doble click en la primera opción nos lleva a la estructura VBMTV. En esta estructura tenemos el include VBMTVZ, en este include es donde debemos añadir los campos con los que queremos ampliar el listado. Es conveniente que los campos añadidos comiencen por ZZ para mantener la nomenclatura de los campos estándar y los campos de cliente. Obviamente el tipo de datos del campo es conveniente que sea el mismo que el de la tabla de origen (VBAP - VBAK) así mantendremos idénticos los nombres de columnas. Una vez añadido el campo que nos interesa activamos la estructura y volvemos al paso anterior. Este paso lo podríamos haber hecho directamente mediante el diccionario de datos con la transacción SE11.

A continuación asignaremos valor al campo. El miembro include que debemos utilizar es el V05TZZMO. Hacemos doble click en el mismo y modificamos el código. Si vamos a añadir un campo que se encuentra de forma estándar en la tabla de cabecera de pedidos (VBAK) o en la tabla de posiciones de pedido (VBAP) lo único que tendremos que hacer es asignar directamente el campo desde la estructura en la que está. Para eso utilizamos la instrucción siguiente:

MOVE lvbap-kdmat TO lvbmtv-zzkdmat.

Si lo que necesitamos es rellenar un campo que no se encuentra en estas tablas debemos codificar para recuperar el dato. La estructura LVBAK contiene los campos de cabecera del pedido y la estructura LVBAP contiene los campos de posición del pedido.

martes, 29 de noviembre de 2011

Ampliación de WebUI con AET

Desde la versión 7 de SAP Netweaver los componentes de WebUI se pueden ampliar de forma rápida y sencilla.

Para poder ampliar necesitamos modificar los componentes de la pantalla. Esto lo hacemos con el icono de la llave inglesa, . Al presionar este botón las diferentes áreas de la pantalla se marcan y son fácilmente identificables.
Pinchamos en el área que queremos configurar.
Esto nos abre una nueva ventana, en esta ventana pinchamos en el botón "Crear campo nuevo". Ahora seleccionamos el objeto que queremos ampliar.

Para averiguar el objeto en concreto que queremos ampliar os puede ayudar el conocer el componente en el que estáis trabajando. Ahora debemos seleccionar la parte del objeto a ampliar, es decir, la cabecera, las posiciones, las relaciones... Cada objeto es un mundo y para cada objeto necesitaréis ampliar una u otra parte.

Ahora rellenamos los valores del nuevo campo, descripción, tipo de datos, tamaño... Se debe indicar una ayuda de búsqueda para el campo o bien la tabla a la que hace referencia. Si es posible indicad una ayuda de búsqueda y así tendréis el botón de búsqueda disponible. En el caso de que sea un campo que no haga referencia a uno del diccionario con ayuda de búsqueda podéis indicar una lista de valores posibles en el área de lista de selección.

En la parte de traducciones podréis poner el título del campo en los diferentes idiomas que tengáis instalados.

Cuando está todo relleno, presionamos el botón back y veremos nuestro campo. A continuación presionamos al botón de grabar y generar, esto nos solicita una orden de transporte y tenemos la configuración terminada. Para que el campo sea visible es necesario salir del sistema y volver a entrar.

A partir de este momento vuestro campo estará disponible en la configuración web de la pantalla.

sábado, 29 de octubre de 2011

Modelo para el report de actividades

En las actividades CRM podemos añadir un bloque para introducir los productos que han intervenido en la actividad en cuestión. Así si una visita a un cliente ha incluido la entrega de un cierto producto o la realización de un servicio esto puede reflejarse en CRM.

Para hacer esto debemos crear un modelo para el report de actividades y un clase de actividades, conocido en inglés como Activity Journal.

Esta parametrización se realiza toda en el entorno web, así que olvidaros esta vez de transacciones y pantallas SAP. Para poder parametrizar tendremos que entrar en el sistema como Power User, lo que nos permitirá ver opciones para parametrizar que no vemos con un usuario "normal". A continuación debemos ir al menú de opciones básicas y crear una "Clase modelo del report de actividades". Aquí definimos un nombre para la clase, fecha de inicio de validez, fecha de fin de validez, frecuencia de actualización y clase de actividad a la que va a estar asociada.
La fecha de inicio y fecha de fin son importantes ya que puede ocasionar que se solapen reports de actividades lo que produce que en el bloque de report de actividades tengamos las dos clases. O igual es lo que pretendemos conseguir.

Es posible indicar datos de organización con lo que limitaremos el ámbito de la clase a la organización, canal, sector y jerarquía que indiquemos.

En el siguiente bloque, categorías, indicaremos la categoría de la actividad a la que va a estar ligada la clase.

En el bloque de columnas debemos indicar que columnas vamos a visualizar en el report de actividades. Hay que tener en cuenta que, aunque no se indique el ID de producto siempre estará presente en el report de actividades y arrastrará todos los campos que tenga asociados que dejarán de ser modificables.

Una vez indicados todos los campos grabamos los datos. Es imprescindible que después de grabar cambiemos el status de la clase a liberado para modelo para que se pueda utilizar. Una vez echo esto, algunos campos, como la fecha de inicio de validez dejan de ser modificables y la única opción que tenemos es borrar la clase, eso sí, siempre que no tenga modelos asociados.

A continuación es necesario definir un  modelo para report de actividades. El modelo se define también en opciones básicas, crear, "modelo para el report de actividades". Al modelo debemos indicarle un nombre y la clase a la que hace referencia, la fecha de inicio y fin de validez. En las opciones de determinación de producto pondremos "Asignar manualmente manualmente". Todos los demás campos los hereda de la clase asignada. El bloque de columnas del modelo se rellena automáticamente pero podemos definir si los campos son visibles o no en nuestro modelo, así como la obligatoriedad  y si es editable.

El resto de campos limitan el ámbito del modelo, en esta ocasión no entraré en esos detalles.

Con esto ya tenemos nuestro modelo listo para ser utilizado, solo tenemos que mostrar el bloque en la actividad que hemos seleccionado y trabakar con él.

martes, 13 de septiembre de 2011

Qué es SAP CRM

A partir de una petición voy a daros mi visión de lo que es CRM. No voy a dar una charla de lo que ofrece SAP y lo bonito que es, para eso ya existen los sitios oficiales, como este sino que os voy a reflejar mis experiencias personales.

CRM es, desde mi punto de vista, un sistema de control y gestión, tanto interno como externo. Me explico. El objetivo oficial de CRM es, como indica el nombre, la gestión de los clientes. A todos los niveles, gestiona datos de venta y potencial, permite gestionar agendas y mejorar las visitas, controlar a todos los niveles los contactos con los clientes, desde llamadas telefónicas hasta grandes reuniones. A partir de toda esta información permite agrupar los clientes, calibrar el potencial que tienen, el gasto que realiza la empresa en la gestión de ese cliente, tanto a nivel de materiales que se le entregan como de fuerza comercial que se está "gastando" en ese cliente. Y todo esto lo puede utilizar el departamento de marketing para presupuestar sus gastos, segmentar los clientes y hacer que la inversión sea más rentable y esté mejor orientada.

Pero aqui no acaba la cosa, CRM también sirve para controlar a los propios empleados. Permite ver cuantas acciones comerciales se realizan, que resultado se obtiene de esas acciones. Quien realiza más, pero también quien lo realiza mejor. Quien obtiene más resultado de las visitas, cuales acaban en venta, quien consigue mejores clientes o maximiza la inversión. Y por supuesto a los superiores les sirve para orientar esa acción comercial, reconducir las acciones que consideran que no se están gestionando bien.

Y todo en un sistema que ofrece la información a todos los niveles inmediatamente, que se comunica con el resto de herramientas SAP de forma transparente para el usuario y que permite una gestión de autorizaciones a multiples niveles.

Eso sí, cualquier parecido con R/3 es pura coincidencia, tiene una parametrización, para los que venimos de R/3, confusa, un sistema de tablas y claves primarias (GUID y ID) farragoso, parametrizaciones que se realizan sólo en el entorno web, otras que se realizan sólo en entorno GUI y otras que pueden hacerse en los dos entornos. Todo un reto, vamos.

En resumen, un entorno con muchas posibilidades, pero complejo de parametrizar y mantener.

Dad vuestras opiniones del sistema en los comentarios.