Agregar campo con texto explicativo de una orden de mantenimiento

0

Floorplan Manager (FPM) es una infraestructura para aplicaciones Web Dynpro que proporciona un marco flexible y estandarizado para desarrollar interfaces de usuario. FPM se utiliza para:


Estandarización: Proveer un diseño consistente en todas las aplicaciones SAP.

Reusabilidad: Facilitar la reutilización de componentes de UI y lógica de negocio.

Configurabilidad: Permitir a los usuarios de negocio configurar ciertos aspectos de la aplicación sin necesidad de cambios en el código.

Extensibilidad: Facilitar la extensión de funcionalidades existentes mediante ampliaciones.


Guía para agregar un nuevo campo en una orden de mantenimiento en FPM

En esta guía, se detallarán los pasos para agregar un campo adicional a la orden de mantenimiento en una aplicación FPM estándar. Este campo será solo de lectura y se llenará con información relevante obtenida de la lógica de negocio implementada.




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


1. Crear una estructura append en la estructura estándar

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

Ir a la transacción SE11 y abrir la estructura EAMS_S_SP_ORD_OPER.

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. Esto se hace mediante una ampliación del componente FPM correspondiente.

Abrir el componente Web Dynpro EAMS3_WDC_ORD_OPER_LI en la transacción SE80.

Navegar a la vista donde queremos agregar el campo.
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_ORD_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.
Dentro del Post-Exit, implementar 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.

* Tablas
    DATA: lt_lines     TYPE STANDARD TABLE OF tline,
          lt_ord_oper  TYPE eams_t_sp_ord_oper,
          lt_node_id   TYPE STANDARD TABLE OF eams_s_sp_ord_ltxt_id,
          lt_node_data TYPE STANDARD TABLE OF eams_s_sp_ord_ltxt.

* Estructuras
    DATA: ls_node_id   TYPE eams_s_sp_ord_ltxt_id.

* Variables
    DATA: lv_aplzl TYPE afvc-aplzl,
          lv_aufpl TYPE afvc-aufpl,
          lv_ltsch TYPE stxh-tdname.

* 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_ord=>gc_node-ord_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_aufnr = -eams_aufnr
                   eams_vornr = -eams_vornr
                   eams_uvorn = -eams_uvorn.

        IF sy-subrc IS INITIAL.
           = .
        ELSE.
          APPEND  TO me->core_object->gt_data_aux.
        ENDIF.

        SPLIT -new_text 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.

      ELSE.

        UNASSIGN .

        READ TABLE me->core_object->gt_data_aux
         ASSIGNING 
          WITH KEY eams_aufnr = -eams_aufnr
                   eams_vornr = -eams_vornr
                   eams_uvorn = -eams_uvorn.

        IF sy-subrc IS INITIAL.

          REFRESH lt_split.

          SPLIT -new_text 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.

        ELSE.

          " Tal vez esto no sea necesario, se podria descartar y probar
          lv_aplzl = -maintenanceorderroutingnode.
          lv_aufpl = -maintenanceorderrouting.

          CALL FUNCTION 'CO_ZK_TEXTKEY_AFVG'
            EXPORTING
              aplzl = lv_aplzl
              aufpl = lv_aufpl
            IMPORTING
              ltsch = lv_ltsch.

          CALL FUNCTION 'READ_TEXT'
            EXPORTING
              id                      = 'AVOT'
              language                = 'S'
              name                    = lv_ltsch
              object                  = 'AUFK'
            TABLES
              lines                   = lt_lines
            EXCEPTIONS
              id                      = 1
              language                = 2
              name                    = 3
              not_found               = 4
              object                  = 5
              reference_check         = 6
              wrong_access_to_archive = 7
              OTHERS                  = 8.

          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.

        ENDIF.

      ENDIF.

* Guardamos los cambios
      me->core_object->mo_context->set_row( iv_index = lv_index is_row  =  ).

    ENDLOOP.

Con la misma ampliación crear un atributo tipo tabla GT_DATA_AUX del tipo EAMS_T_SP_ORD_LTXT


Agregar un nuevo campo a una orden de mantenimiento en una aplicación FPM estándar 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 estos conocimientos, 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)