• Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram

S4PCADEMY_Logo
  • Inicio
  • Novedades
  • Academia SAP
  • FAQ
  • Blog
  • Contacto
Twitter Linkedin Instagram
#activating gos  ·  #gos toolbar  ·  #GOS_in_CRM_Billing_Document  ·  #GOS_in_CRM_WebUI  ·  Technical Articles

Mostrar datos de la barra de herramientas de GOS en la pantalla de interfaz de usuario web de facturación de CRM

By s4pcademy 


Resumen: En mi blog anterior, expliqué cómo habilitar la barra de herramientas GOS en el documento de facturación de CRM en la pantalla SAP GUI. En este blog, captaré la necesidad de mostrar los datos de la barra de herramientas de GOS y los archivos adjuntos en PDF en la pantalla de interfaz de usuario web de CRM para mejorar la experiencia del usuario.

El primer paso es la mejora del componente BSP estándar BEABDH_BILLDOC, allí necesitamos agregar una nueva vista, digamos ZGOSATTACH con el nodo de valor (digamos ZGOSVAL) y atributos de la siguiente manera. (Esto es similar a cómo agregamos una vista personalizada en el componente estándar).

Que sería similar a la siguiente en la pantalla CRM Web-UI

Él próximo paso es a llenar el vista con datos, cuales es hecho en el método DO_ILIENDRE_CONTEXTO de el soycomplementación clase.

Él código retazo ese haría leer datos de específico facturación documentos SMO barra de herramientas y llenar cada campo en el mostrar en BOL capa es mostrado abajo.

* Structure to populate assignment view
    TYPES: BEGIN OF x_gos_data,
             brelguid    TYPE  os_guid,       "Relationship Guid
             instid_b    TYPE sibfboriid,    "Instance Ident. in BOR Compat. Persistent Object Referce
             title       TYPE iw_title,      "Attachment Title
             description TYPE bitm_descr,    "Description (Like, Attachment, Note, URL)
             value       TYPE crm_rt_value,  "Notes Content
             created_by  TYPE sgs_crname,    "Attribute as Created By
             creadate    TYPE sgs_crdate,    "Attribute as Created Date
             creatime    TYPE sgs_crtime,    "Attribute as Created Time
           END OF x_gos_data.

    CONSTANTS : lc_appl_crmb  TYPE bef_appl VALUE 'CRMB',
                lc_catid_bo   TYPE sibfcatid VALUE 'BO',
                lc_rel_note   TYPE oblreltype VALUE 'NOTE',
                lc_rel_atta   TYPE oblreltype VALUE 'ATTA',
                lc_headno_ext TYPE name_komp VALUE 'HEADNO_EXT',
                lc_objtype    TYPE name_komp VALUE 'OBJTYPE',
                lc_i          TYPE char1 VALUE 'I',
                lc_eq         TYPE char2 VALUE 'EQ'.

    DATA : lv_doc_data    TYPE sofolenti1,
           lo_ref_cuco    TYPE REF TO cl_beabdh_b_cucobill_impl,
           lo_ref_entity  TYPE REF TO cl_crm_bol_entity,
           lo_ref_struct  TYPE REF TO x_gos_data,
           li_obj_content TYPE STANDARD TABLE OF solisti1.

    CALL METHOD super->do_init_context.

* Clear all the values from view initially
    me->typed_context->zgosattach->collection_wrapper->clear( ).

    DATA(lo_ref_core) = cl_crm_bol_core=>get_instance( ).
    IF lo_ref_core IS BOUND.
      TRY.
* Get Custom Controller to extract Billing Header details
          lo_ref_cuco ?= get_custom_controller( 'BEABDH_BILLDOC/CuCoBill' ).
          IF lo_ref_cuco IS BOUND.

* Extract current data from custom controller
            lo_ref_entity ?= lo_ref_cuco->typed_context->bdheader->collection_wrapper->get_current( ).
            IF lo_ref_entity IS BOUND.

* Get Billing Document and Object type
            DATA(lv_billdocno) = lo_ref_entity->get_property_as_string( iv_attr_name = lc_headno_ext ).
             DATA(lv_billobjtype) = lo_ref_entity->get_property_as_string( iv_attr_name = lc_objtype ).

              IF lv_billdocno IS NOT INITIAL AND lv_billobjtype IS NOT INITIAL.
                lv_billdocno = CONV bea_headno_ext( |{ lv_billdocno  ALPHA = IN }| ).

* Populate
             DATA(ls_object) = VALUE sibflporb( instid = lv_billdocno && lc_appl_crmb
                                                   typeid = lv_billobjtype
                                                   catid = lc_catid_bo ).

             DATA(lt_relation_op) = VALUE obl_t_relt( ( sign = lc_i option = lc_eq low = lc_rel_note )
                                                    ( sign = lc_i option = lc_eq low = lc_rel_atta ) ).
* Read the links against Billing Document to fetch all the GOS attachments
                TRY.
                    CALL METHOD cl_binary_relation=>read_links
                      EXPORTING
                        is_object           = ls_object
                        it_relation_options = lt_relation_op
                      IMPORTING
                        et_links            = DATA(lt_links).

                    LOOP AT lt_links ASSIGNING FIELD-SYMBOL(<fs_links>).
                      CLEAR :lv_doc_data,
                             li_obj_content.

* Read the GOS attachments content and attributes to show in WebUI
                      DATA(lv_doc_id) = CONV so_entryid( <fs_links>-instid_b ).
                      CALL FUNCTION 'SO_DOCUMENT_READ_API1'
                        EXPORTING
                          document_id                = lv_doc_id
                        IMPORTING
                          document_data              = lv_doc_data
                        TABLES
                          object_content             = li_obj_content
                        EXCEPTIONS
                          document_id_not_exist      = 1
                          operation_no_authorization = 2
                          x_error                    = 3
                          OTHERS                     = 4.
                      IF sy-subrc EQ 0.
* Populate work area to show all the details
                 DATA(ls_gos_data) = VALUE x_gos_data( brelguid = <fs_links>-brelguid
                                                       instid_b = <fs_links>-instid_b
                                                       title   = lv_doc_data-obj_descr
                                                       description = <fs_links>-reltype
                                                       value = CONV crm_rt_value( li_obj_content[ 1 ] )
                                                       created_by = lv_doc_data-creat_fnam
                                                       creadate = lv_doc_data-creat_date
                                                       creatime =  lv_doc_data-creat_time ).
                        IF <fs_links>-reltype = lc_rel_atta.
                          CLEAR ls_gos_data-value.
                        ENDIF.
                        TRY.
* Create the value node and add the the same in collection wrapper
                            CREATE DATA lo_ref_struct.
                   IF lo_ref_struct IS BOUND.
                     DATA(lo_ref_value_node) = NEW cl_bsp_wd_value_node( iv_data_ref = lo_ref_struct ).
                         IF lo_ref_value_node IS BOUND AND ls_gos_data IS NOT INITIAL.
                          lo_ref_value_node->set_properties( ls_gos_data ).
                          me->typed_context->zgosattach->collection_wrapper->add( lo_ref_value_node ).
                         ENDIF.
                   ENDIF.
                          CATCH cx_sy_create_data_error.
                            CLEAR ls_gos_data.
                            CONTINUE.
                        ENDTRY.
                        CLEAR ls_gos_data.
                      ENDIF.
                    ENDLOOP.

*Modify BOL layer to get reflected the details in WebUI
                    lo_ref_core->modify( ).
                  CATCH cx_obl_parameter_error
                        cx_obl_internal_error
                        cx_obl_model_error
                        cx_sy_create_data_error .
                    RETURN.
                ENDTRY.
              ENDIF.
            ENDIF.
          ENDIF.

        CATCH cx_sy_move_cast_error.
          RETURN.
      ENDTRY.
    ENDIF.

Como a resultado, todos el datos desde el SMO barra de herramientas voluntad ser lleno en y desplegado en el Pantalla de interfaz de usuario web como visto abajo.

Mi próxima publicación de blog tratará sobre cómo crear un hipervínculo a un archivo PDF específico y mostrar el documento PDF en una ventana emergente en la pantalla WebUI. Siga leyendo y déjenos un comentario si tiene alguna sugerencia o comentario para compartir.

Gracias de nuevo por leer el documento. Realmente aprecio tu tiempo.



Source link


barraCRMdatosfacturaciónGOSherramientasinterfazMostrarpantallausuarioweb

Artículos relacionados


e-ink  ·  Personal Insights  ·  raspberry pi
SAP Community se encuentra con la pantalla de tinta electrónica: una historia de RSS
Technical Articles
Asignaciones de grupos basadas en atributos de usuario: una solución flexible para administrar la autenticación condicional y basada en riesgos y mucho más
Product Information  ·  Reveal on Demand  ·  ui data protection  ·  UI data protection Masking  ·  ui data security  ·  uim  ·  UISM
Protección de datos de la interfaz de usuario: cómo funciona el método de revelación mejorada en el escenario de enmascaramiento cuando el tipo de revelación está configurado como autoservicio en las aplicaciones SAPUI5 y Fiori

Deja tu comentario Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

*

Db2: fechas de finalización del servicio, correcciones de seguridad y verificación del nivel del paquete de correcciones en el DBA Cockpit
Previo
Anuncio de lanzamiento: SAP Commerce Cloud Business User Certification 2211
Siguiente

Madrid

Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010

México

Paseo de la Reforma 26
Colonia Juárez,  Cuauhtémoc
Ciudad de México 06600

Costa Rica

Real Cariari
Autopista General Cañas, 
San José, SJ 40104

Perú

Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073

Twitter Linkedin Instagram
Copyright 2022 | All Right Reserved.
Cookies Para que este sitio funcione adecuadamente, a veces instalamos en los dispositivos de los usuarios pequeños ficheros de datos, conocidos como cookies. La mayoría de los grandes sitios web también lo hacen.
Aceptar
Cambiar ajustes
Configuración de Cookie Box
Configuración de Cookie Box

Ajustes de privacidad

Decida qué cookies quiere permitir. Puede cambiar estos ajustes en cualquier momento. Sin embargo, esto puede hacer que algunas funciones dejen de estar disponibles. Para obtener información sobre eliminar las cookies, por favor consulte la función de ayuda de su navegador. Aprenda más sobre las cookies que usamos.

Con el deslizador, puede habilitar o deshabilitar los diferentes tipos de cookies:

  • Bloquear todas
  • Essentials
  • Funcionalidad
  • Análisis
  • Publicidad

Este sitio web hará:

Este sitio web no:

  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
  • Recuerde sus detalles de inicio de sesión
  • Esencial: recuerde su configuración de permiso de cookie
  • Esencial: Permitir cookies de sesión
  • Esencial: Reúna la información que ingresa en un formulario de contacto, boletín informativo y otros formularios en todas las páginas
  • Esencial: haga un seguimiento de lo que ingresa en un carrito de compras
  • Esencial: autentica que has iniciado sesión en tu cuenta de usuario
  • Esencial: recuerda la versión de idioma que seleccionaste
  • Functionality: Remember social media settings
  • Functionality: Remember selected region and country
  • Analytics: Keep track of your visited pages and interaction taken
  • Analytics: Keep track about your location and region based on your IP number
  • Analytics: Keep track of the time spent on each page
  • Analytics: Increase the data quality of the statistics functions
  • Advertising: Tailor information and advertising to your interests based on e.g. the content you have visited before. (Currently we do not use targeting or targeting cookies.
  • Advertising: Gather personally identifiable information such as name and location
Guardar y cerrar