Agregar un nuevo campo en FPM (Hoja de Ruta)

0

Web Dynpro es una tecnología de SAP para desarrollar aplicaciones web interactivas. Floorplan Manager (FPM) es una herramienta que permite construir aplicaciones Web Dynpro basadas en configuraciones de diseño predefinidas, facilitando la creación de interfaces de usuario consistentes y reutilizables. FPM proporciona componentes estandarizados, como formularios, tablas y vistas de árbol, que pueden ser fácilmente configurados y extendidos según las necesidades del negocio.


En esta guía, explicaremos cómo agregar un nuevo campo a una aplicación FPM para mostrar un detalle adicional. Este campo será solo de lectura y se llenará con información relevante obtenida de la lógica de negocio implementada.


La webdynpro de FPM, tiene muchas funcionalidades entre las cuales seria la Hoja de ruta. Dentro, de las cuales se desea agregar un campo adicional, para mostrar un detalle





En el campo text expli. detallada, es el nuevo campo que agregamos y en este caso mostramos la información que se encuentra en texto descriptivo líneas abajo


Pasos para agregar un nuevo campo en FPM

1. Crear una estructura append en la estructura estándar
Primero, debemos crear una estructura append en la estructura estándar EAMS_S_SP_TL_OPERATION. Esta estructura será extendida para incluir nuestro nuevo campo.

Ir a la transacción SE11 y abrir la estructura EAMS_S_SP_TL_OPERATION.
Seleccionar la opción para agregar una estructura append.
Definir el campo nuevo, en este caso ZZTEXTO, y guardarlo.


2. Agregar el campo en la configuración del componente Web Dynpro
Una vez que hemos extendido la estructura, necesitamos agregar el nuevo campo en la configuración del componente Web Dynpro en Fiori. Esto se hace mediante una ampliación del componente FPM correspondiente.

Utilizar la opción de ampliación para agregar el campo ZZTEXTO a la vista.
Asegurarse de que el campo sea de solo lectura.


3. Ampliar la clase que alimenta el componente Web Dynpro
La clase CL_EAMS_UI_FD_TL_OPER_LI es la responsable de alimentar los datos al componente Web Dynpro. Necesitamos ampliar esta clase para incluir la lógica que llenará nuestro nuevo campo.

Crear una Post-Exit al método /PLMU/IF_FRW_G_AFTER_GET_DATA~AFTER_GET_DATA.
Generamos un Post-Exit, implementamos la lógica para llenar el campo ZZTEXTO con el valor deseado.


Dentro del postexit colocamos la lógica para enviar el valor, esto si depende de como quieres capturar la información y las tablas que vas a recorrer. 

Pero te dejo el siguiente código que te va permitir leer los valores del ALV en pantalla, para que calcules el valor y luego lo grabes en la pantalla. 

Solo agregarías la lógica para ese nuevo campo que desees agregar y mostrar


* Obtenemos los regisotros de pantalla
    ME->CORE_OBJECT->MO_CONTEXT->GET_ROWS( IMPORTING ET_ROW = LT_ORD_OPER ).

* Los recorremos y aplicamos una lógica de modificación para los textos
    LOOP AT LT_ORD_OPER ASSIGNING FIELD-SYMBOL().

      DATA(LV_INDEX) = SY-TABIX.

      REFRESH: LT_NODE_ID, LT_NODE_DATA.

      MOVE-CORRESPONDING  TO LS_NODE_ID.

      APPEND LS_NODE_ID
          TO LT_NODE_ID.

      ME->CORE_OBJECT->MO_APPLICATION_MODEL->RETRIEVE(
        EXPORTING
          IV_NODE_NAME        = CL_EAMS_MP_TL=>GC_NODE-OPER_LTXT
          IT_NODE_ID          = LT_NODE_ID
        IMPORTING
          ET_NODE_DATA        = LT_NODE_DATA ).

      READ TABLE LT_NODE_DATA
       ASSIGNING FIELD-SYMBOL()
           INDEX 1.

      IF SY-SUBRC IS INITIAL.

        READ TABLE ME->CORE_OBJECT->GT_DATA_AUX
         ASSIGNING FIELD-SYMBOL()
          WITH KEY EAMS_PLNTY = -EAMS_PLNTY
                   EAMS_VORNR = -EAMS_vornr
                   EAMS_UVORN = -EAMS_uvorn.

        IF SY-SUBRC IS INITIAL.
           = .
        ELSE.
          APPEND  TO ME->CORE_OBJECT->GT_DATA_AUX.
        ENDIF.

        SPLIT -ZZTEXTO AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE DATA(LT_SPLIT).

        LOOP AT LT_SPLIT ASSIGNING FIELD-SYMBOL().
          IF SY-TABIX EQ 01.
            -ZZTEXTO = .
          ELSE.
            -ZZTEXTO = |{ -ZZTEXTO } {  }|.
          ENDIF.
        ENDLOOP.

        "ACA VA LA LOGICA, DE LO QUE QUIERES MOSTRAR EN EL CAMPO

                    "ACA ENVIAMOS EL VALOR AL CAMPO NUEVO ZZTEXTO
                    IF SY-SUBRC IS INITIAL.
                      DELETE LT_LINES INDEX 1.

                      LOOP AT LT_LINES ASSIGNING FIELD-SYMBOL().
                        IF SY-TABIX EQ 01.
                          -ZZTEXTO = -TDLINE.
                        ELSE.
                          -ZZTEXTO = |{ -ZZTEXTO } { -TDLINE }|.
                        ENDIF.
                      ENDLOOP.

                    ENDIF.
                    REFRESH LT_SPLIT.

                    SPLIT -ZZTEXTO AT CL_ABAP_CHAR_UTILITIES=>NEWLINE INTO TABLE LT_SPLIT.

                    UNASSIGN .

                    LOOP AT LT_SPLIT ASSIGNING .
                      IF SY-TABIX EQ 01.
                        -ZZTEXTO = .
                      ELSE.
                        -ZZTEXTO = |{ -ZZTEXTO } {  }|.
                      ENDIF.
                    ENDLOOP.

                    "GUARDAMOS LOS CAMBIOS EN LA PANTALLA
                    ME->CORE_OBJECT->MO_CONTEXT->SET_ROW( IV_INDEX = LV_INDEX IS_ROW  =  ).
                  ENDIF. "FIN DE VALIDACION NODO DE GRILLA
                ENDLOOP.
              ENDIF.

            ENDIF.

      ENDIF. "Fin cosulta de valores
    ENDLOOP.

Con la misma ampliación, vamos a la pestaña atributo y creamos al final un tipo tabla GT_DATA_AUX del tipo EAMS_T_SP_TL_LTXT




Con ello. ya tendrás tu lógica en el nuevo campo personalizable


Agregar un nuevo campo a una aplicación FPM en Web Dynpro implica extender estructuras estándar, configurar componentes Web Dynpro y ampliar clases de lógica de negocio. Estos pasos aseguran que el nuevo campo se muestre correctamente y se llene con los datos apropiados, mejorando así la funcionalidad de la aplicación y proporcionando información detallada al usuario.

Con este conocimiento, puedes extender y personalizar tus aplicaciones FPM según las necesidades específicas de tu negocio, asegurando una interfaz de usuario más rica y funcional.

Tags

Publicar un comentario

0Comentarios
Publicar un comentario (0)