DDA · moca · Personalización · Queries · WMS

Introducción a las pantallas personalizadas (DDA) en el WMS de JDA

El wms de jda fue desarrollado de tal manera que quien adquiera el software pueda realizar modificaciones a nivel de usuario, para que sin necesidad de pagos extras y sin habilidades de desarrollo de software se pueda agregar valor a la aplicación que puedan cumplir las necesidades operativas.

Definición

Las aplicaciones DDA por sus siglas en inglés (Data Driven Application) son todas aquellas aplicaciones creadas para el cliente windows que solo tienen dependencia de comandos moca.

Si aún no estás familiarizado con el tema de los comandos moca de invito a leer:

Creación de comandos moca en el WMS de JDA

Existen otras pantallas las cuales tienen componentes en lenguaje C# o Java las cuales no son consideradas DDA ya que para que una aplicación pueda considerarse DDA esta debió ser creada con el asistente de creación de pantallas incluido dentro de la aplicación.

Características

Las DDA permiten a los usuarios:

  1. Realizar tareas de consulta y mantenimiento de la información en la base de datos.
  2.  Tomar acciones en la información obtenida por medio de comandos moca.

Beneficios

Esta tecnología permite a los equipos de implementación y a usuarios finales el utilizar la información de la base de datos en una pantalla con interfaz de usuario, la cual contiene elementos para la manipulación y control de los datos.

Tipos

Existen 2 tipos de DDA, las que son para la aplicación windows y las que son para la aplicación web, para versiones anteriores a la 9 las DDA de tipo web eran visibles dentro del servidor waffle, en el caso de las versiones 9 en adelante existen las pantallas en la aplicación windows y para la aplicación web se realizan por medio de una nueva funcionalidad llamada page builder, la cual no será utilizada en esta entrada.

Clasificación

Dependiendo de la funcionalidad que le otorgamos a las DDA le asignaremos su clasificación la cual nos ayudará a clasificarlas y a identificarlas dependiendo su funcionalidad las cuales describo a continuación:

Acción: Son utilizadas para enlazar una acción a un conjunto de resultados los cuales pueden ser obtenidos de otra DDA.

Nota: Si la DDA requiere que el usuario introduzca valores para la ejecución de algún comando moca, puede ser creada como tipo acción y hacer los campos editables y restringir al usuario los valores de entrada.

Cascada: Es aquella utilizada para desplegar los resultados en diferentes niveles dentro de una misma aplicación por medio de una estructura de árbol.

 Nota: Los datos dentro de los diferentes niveles pueden ser heredados entre las diferentes aplicaciones en las DDAS de cascada.

Dinámica: Es utilizada cuando en la aplicación se define como acción la ejecución de una diferente DDA la cual puede ser llamada con un botón para la realización de diferentes objetivos de manera dinámica.

EjecuciónEs utilizada para soporta entrada de datos para una rápida modificación, permite a los usuarios el ingresar valores en los campos haciendo una búsqueda inmediata sin la necesidad de hacer uso de un botón de buscar.

Este tipo de DDA no muestra datos en cambio muestra los campos con los cuales los usuarios pueden ejecutar diferentes acciones basados en su búsqueda.

Mantenimiento: Son utilizadas para crear y mantener servicios definidos en comandos de listado, en las dda de mantenimiento se muestran cuadrículas con los resultados obtenidos en las cuales los datos pueden ser modificados.

Nota: Para poder habilitar todas las funcionalidades de las DDA de mantenimiento es necesario definir y crear las acciones de crear, cambiar y eliminar.

Mantenimiento (Creación): Las DDA de tipo creación son utilizadas para definir el servicio de la DDA de mantenimiento padre como acción de creación de datos, cuando una DDA de mantenimiento de tipo creación es agregada a una DDA padre de mantenimiento un botón con el nombre de «Add» es agregado a la pantalla padre con el cual se invocará este tipo de DDA, normalmente las DDA de tipo creación contienen comandos moca de inserción de datos en la base de datos.

Mantenimiento (Cambio): Son utilizadas para definir en las DDA de mantenimiento un servicio para realizar alteración de datos, las DDA de cambio son llamadas desde sus DDA de mantenimiento padre cada que algún elemento de la cuadrícula de datos es modificado, normalmente contienen comandos que realizan updates en la base datos.

Mantenimiento (Eliminación): De igual manera que las pantallas de cambio y creación, esta es hija de una pantalla de mantenimiento siendo esta la utilizada para eliminar datos, cuando una DDA de eliminación de datos se asociada a un padre de mantenimiento, un botón con el nombre de «Delete» es agregado a la pantalla padre la cual normalmente hace invocación de comandos moca que realizan eliminación de datos en la base de datos.

Query: El tipo query o consulta, es utilizado para definir y realizar búsquedas de datos dinámicos por medio de valores insertados por medio de campos, estos valores son presentados en una cuadrícula y pueden ser exportados en diferentes formatos por ejemplo excel, tiene la ventaja de que puede utilizar los campos como filtros de búsqueda para el comando moca que realizara la obtención de la información, normalmente este tipo de DDA solo hace uso de sentencias «SELECT» dentro de los comandos moda.

Single Row: Este tipo de DDA limita al usuario a tener como datos de entrada una sola línea es utilizada normalmente para obtención de datos mostrados en una cuadrícula la cual no es modificada y es creada para una búsqueda mucho más rápida y sin costo de recursos.

Pasos para la creación de una DDA

En el siguiente diagrama muestro los pasos para poder crear pantallas DDA:

proceso_dda

Diagrama 1 : Proceso para la creación de una aplicación DDA.

Conclusiones

La creación de aplicaciones DDA no es complicado, existe un wizard bastante fácil de utilizar con el cual se pueden crear sin complicaciones.

La parte que podría ser la más complicada y la que pueda ocasionar algunos dolores de cabeza es la creación de los comandos moca y la validación de los datos, ya que muchas veces realizando las pruebas de las nuevas pantallas es donde podemos encontrar algunas excepciones no validadas en la creación de los comandos.

Se que es mucha información que incluso para mi es complicado el entender todas estas definiciones, sin embargo les comento que me encuentro trabajando en un caso práctico a solicitud de uno de los lectores del blog en el cual estaré explicando paso a paso la creación de una DDA para el siguiente propósito: «Una DDa que me permita ver la parte alternativa de los artículos y además contenga la información de la huella predeterminada del articulo y que desde esta se puede actualizar la parte alternativa si fuere necesario», llevo bastante avance en esta DDA y espero poder compartir los pasos y el resultado de la misma a mediados de la siguiente semana.

Por favor no dudes en comentar y/o contactarme en caso de que existan dudas o en caso de que te gustaría que habláramos de un tema en específico en el blog.

Muchas gracias por pasarte por mi blog y espera muy pronto la siguiente entrada: «Caso práctico: Creando una pantalla DDA para la consulta y alteración de los numero de parte alternativos»

Nota: La información presentada en este blog es solo para uso didáctico, ni el autor ni la página se hacen responsables por el uso indebido de la información presentada. 

15 comentarios sobre “Introducción a las pantallas personalizadas (DDA) en el WMS de JDA

    1. Wilfer, estuve intentando crear ese comando (Cambiar los detalles de la huella de un producto)pero está muy complicado, la lógica del sistema es eliminar toda la huella y después volver a crearla intente crear un comando que hiciera la actualización pero esta demasiado complicado, por tal motivo este proceso de actualizar los valores de las huellas en su detalle quedara fuera de está DDA por el momento, tomaré este como un reto a resolver en el futuro.

      Me gusta

      1. David estuve trabajando en la DDa ya la tengo creada ya esta el comando, claro sin la modificacion de la huella, pero aun no he podido que se visualice en el menu de dlx

        Me gusta

      2. Hola, yo tambien he estado trabajando en ella y ya llevo alrededor de un 50% de esta, te comento que incluso tengo un borrador en el blog donde estoy metiendo los pasos a pasos de cómo la he ido creando, me puedes apoyar en compartirme lo que hiciste si es posible exportar tus dda para que las revise y pueda ir viendo si te falto algo ?

        Gracias

        Me gusta

      3. Por cierto creo que tu problema esta en el menú donde la quieres visualizar por favor exportala para que yo la ponga en mi ambiente y pueda ver que es lo que hace que no la veas.

        Me gusta

  1. Hola Wilfer, gracias por tu comentario, te comento que para el ejemplo de la DDA va a ser necesario crear el siguiente comando moca: «Comando que cambie la huella de un producto», sería un buen ejercicio que lo intentaras realizar, que opinas lo realizar y me lo compartes para agregarlo al caso práctico ?, solo se necesita un comando que realice update en la huella de un ítem en específico con los argumentos de entrada siendo el ítem , el código de la huella y el valor a actualizar.

    Me gusta

  2. David ya tengo la DDa termida y funcionando, pero tengo un problema meti esto en el codigo para mostrar un errror cuando consulten un ean o un articulo que no este y cuando lo hago por lex edit lo hace bien pero ya en la DDa no me funciona
    publish data
    where wh_id = ‘BM01’
    and client_id = ‘860002392’
    |
    [select prt.prt_client_id,
    prt.wh_id_tmpl,
    alt.alt_prtnum,
    prt.prtnum,
    lngdsc,
    alt.alt_prt_typ,
    prt.stkuom,
    prt.prtfam,
    prt.abccod,
    prt.untcst,
    alt.mod_usr_id,
    alt.moddte,
    alt.ins_dt,
    alt.last_upd_dt,
    alt.ins_user_id,
    alt.last_upd_user_id,
    decode(alt.alt_prtnum, prt.dsp_prtnum, 1, 0) dsp_prt_flg
    from alt_prtmst alt
    inner
    join prtmst prt
    on prt.prtnum = alt.prtnum
    and prt.prt_client_id = alt.prt_client_id
    inner
    JOIN prtdsc
    ON prtdsc.colval = prt.prtnum + ‘|’ + prt.prt_client_id + ‘|’ + prt.wh_id_tmpl
    where alt.prt_client_id = @client_id
    and prt.wh_id_tmpl = @wh_id
    and @+prt.prtnum
    and @+alt.alt_prtnum
    and prtdsc.locale_id = nvl(@locale_id, @@locale_id)] catch(-1403)
    |
    if (@? != -1403)
    {
    publish data
    where client_id = @prt_client_id
    and wh_id = @wh_id_tmpl
    AND prtnum = @prtnum
    and alt_prtnum = @alt_prtnum
    and lngdsc = @lngdsc
    and alt_prt_typ = @alt_prt_typ
    and stkuom = @stkuom
    and prtfam = @prtfam
    and abccod = @abccod
    and untcst = @untcst
    and mod_usr_id = @mod_usr_id
    and moddte = @moddte
    and ins_dt = @ins_dt
    and last_upd_dt = @last_upd_dt
    and ins_user_id = @ins_user_id
    and last_upd_user_id = @last_upd_user_id
    and dsp_prt_flg = @dsp_prt_flg
    }
    else
    {
    set return status
    where status = 80259
    }

    Le gusta a 1 persona

  3. Hola!!
    Muchas gracias por toda la información!
    Tengo una consulta. ¿Sabes si puedo crear un campo tipo lista desplegable dentro de una DDA?

    Me gusta

Deja un comentario