
Requisito de negocio
Tuve la oportunidad de mejorar el servicio de correo electrónico de GOS a partir de mi sugerencia de utilizar la funcionalidad de GOS ya activada en lugar de crear un nuevo objeto.
GOS se ha activado en muchas transacciones de SAP en mi sistema, pero solo es necesario mejorar el código T específico. El punto de mejora del requisito fue «Enviar» correo electrónico -> «Enviar objeto con nota» en la transacción del documento VIM DP.
Buscando el nodo de GOS en SGOSATTR.
SO_SENDOBJ es un subnodo de SO_SENDSERV. Por lo tanto, debe reemplazar la clase ABAP CL_GOS_SRV_SEND_OBJECT con una clase personalizada
Asigne una clase personalizada en la tabla SGOSCUST
Cree una clase personalizada heredada de la clase estándar CL_GOS_SRV_SEND_OBJECT o de la superclase CL_GOS_SERVICE de CL_GOS_SRV_SEND_OBJECT.
Redefina el método ‘EXECUTE’ de CL_GOS_SERVICE en la clase de cliente recién creada que se asigna a la tabla img anterior.
En mi caso, elijo el objeto BOR con una variable global gs_lporb–tipoid
Ejemplo: Orden de compra «BUS2012»
gs_lporb tiene campo INSTID -> Número de documento, TYPEID -> Nombre BOR, CATID -> Indicador BO «BO». Entonces, solo BOR específico llamará a mi mejora; de lo contrario, llame a las lógicas estándar súper->ejecutar( ) .
Cree lógicas personalizadas
Asunto y mensaje predeterminados personalizados, «Cláusula confidencial» se agregaron como parte de la mejora para mi caso.
**
DATA:
lt_text TYPE soli_tab,
lp_subject TYPE so_obj_des,
lp_line TYPE soli,
lp_oid TYPE os_guid,
ls_object TYPE borident,
lp_mess(80) TYPE c,
lp_errmess TYPE string.
TRY.
* Set object info for link
ls_object-objtype = gs_lporb-typeid.
ls_object-objkey = gs_lporb-instid.
* Set mail subject
lp_subject = TEXT-101 && gp_def_attrib.
* Add confidential Clause
DO 6 TIMES.
APPEND INITIAL LINE TO lt_text.
ENDDO.
APPEND 'CONFIDENTIAL CLAUSE' TO lt_text.
DATA(lv_cc) = cl_wd_utilities=>get_otr_text_by_alias(
zif_vim_email_service~gc_confidential_clause ).
lt_text = CORRESPONDING #( BASE ( lt_text ) cl_bcs_convert=>string_to_soli( lv_cc ) ).
* Customer enhancement for VIM
lp_oid = me->send_obj(
EXPORTING
is_object = ls_object
ip_subject = lp_subject
it_note = lt_text
ip_link = 'X'
).
lp_errmess = lp_mess.
MESSAGE lp_errmess TYPE 'S'.
IF lp_oid IS INITIAL.
RAISE execution_failed.
ELSE.
MESSAGE s051(sgos_msg).
RAISE EVENT service_succeeded
EXPORTING eo_service = me.
ENDIF.
CATCH cx_bcs.
RAISE execution_failed.
ENDTRY.
Prueba de unidad
Asunto predeterminado, mensaje predefinido y destinatarios predeterminados completados por la mejora
y el documento de la factura se adjunta como un archivo PDF que no es compatible con el estándar SAP
Extensibilidad
Puede agregar funciones personalizadas con las funciones de GOS (Servicio de objetos genéricos) estándar de SAP, como agregar notas, tareas de flujo de trabajo y enviar correos electrónicos con esta mejora simple.
Por ejemplo, publicar artículos de Twitter o mensajes de redes sociales, leer/escribir documentos de servidores externos, llamar a la API de proveedores de servicios externos, etc.
Calle Eloy Gonzalo, 27
Madrid, Madrid.
Código Postal 28010
Paseo de la Reforma 26
Colonia Juárez, Cuauhtémoc
Ciudad de México 06600
Real Cariari
Autopista General Cañas,
San José, SJ 40104
Av. Jorge Basadre 349
San Isidro
Lima, LIM 15073