
En el ámbito del desarrollo de SAP, el modelo de programación de aplicaciones (RAP) ABAP RESTful ha surgido como un marco poderoso para crear aplicaciones Fiori Elements eficientes y escalables. El desarrollador puede centrarse en la lógica empresarial personalizada, ya que el marco RAP se ocupa de las características comunes/estándar. Las operaciones no estándar pueden ser una acción o una función en un objeto comercial. En la mayoría de los casos, las acciones/operaciones requieren algunos parámetros para ejecutar la lógica empresarial.
El objetivo principal de los parámetros de acción predeterminados es mejorar la eficiencia del usuario al completar previamente los campos del formulario con valores relevantes y contextuales. Esto reduce la entrada manual de datos, minimiza los errores y garantiza la coherencia de los datos en toda la aplicación. La implementación de una lógica empresarial compleja dentro de estas acciones predeterminadas agrega una capa de inteligencia a la aplicación, lo que le permite adaptarse a diversos escenarios y requisitos específicos del usuario.
@EndUserText.label: 'Abstract entity for Supplier'
@Metadata.allowExtensions: true
define root abstract entity zrk_a_supplier
{
@UI.defaultValue: 'S000000003'
ToBesupplier : zrk_sup_no;
}
Syntax:
@UI.defaultValue : #( 'ELEMENT_OF_REFERENCED_ENTITY: <field from entity>')
Example:
@EndUserText.label: 'Abstract entity for Supplier'
@Metadata.allowExtensions: true
define root abstract entity zrk_a_supplier
{
@UI.defaultValue : #( 'ELEMENT_OF_REFERENCED_ENTITY: Supplier')
ToBesupplier : zrk_sup_no;
}
El caso de negocio es convertir una solicitud de compra en un contrato de compra. Podrían darse diferentes casos.
La definición de acción debe enriquecerse con una función en la definición de comportamiento base y la función debe consumirse en la capa de proyección. A continuación se detallan los pasos.
action ( features : instance, precheck ) Convert_Into_PC
parameter ZRK_A_ActionParam_PR_To_PC result [1] $self
{ default function GetDefaultsForConvert_Into_PC; }
METHODS convert_into_pc FOR MODIFY
IMPORTING keys FOR ACTION _prhead~convert_into_pc RESULT result .
METHODS GetDefaultsForConvert_Into_PC FOR READ
IMPORTING keys FOR FUNCTION _PRHead~GetDefaultsForConvert_Into_PC RESULT result.
METHOD GetDefaultsForConvert_Into_PC.
" Read the requisition header
READ ENTITIES OF zrk_i_pur_req_h IN LOCAL MODE
ENTITY _PRHead
ALL FIELDS WITH CORRESPONDING #( keys )
RESULT DATA(lt_pur_req).
CHECK lt_pur_req IS NOT INITIAL.
" Read the requisition item
READ ENTITIES OF zrk_i_pur_req_h IN LOCAL MODE
ENTITY _PRHead BY \_PRItem
ALL FIELDS WITH CORRESPONDING #( keys )
RESULT DATA(lt_pur_req_item).
CHECK lt_pur_req_item IS NOT INITIAL.
LOOP AT lt_pur_req ASSIGNING FIELD-SYMBOL(<fs_pur_req>).
APPEND INITIAL LINE TO result ASSIGNING FIELD-SYMBOL(<fs_result>).
" If it is create operation, then %cid needs to be used instead of %tky
<fs_result>-%tky = <fs_pur_req>-%tky.
<fs_result>-%param-description = |Created from { <fs_pur_req>-ObjectId }|.
<fs_result>-%param-buyer = COND #( WHEN <fs_pur_req>-Buyer IS NOT INITIAL
THEN <fs_pur_req>-Buyer
ELSE sy-uname ).
" Default the company code from the user attributes in the Org structure
<fs_result>-%param-Company_code = zrk_cl_mng_pur_con=>determine_company_code( ).
" Calculate the validity dates
<fs_result>-%param-valid_from = cl_abap_context_info=>get_system_date( ).
<fs_result>-%param-valid_to = cl_abap_context_info=>get_system_date( ) + 365.
" Take the first supplier from the requisition item
LOOP AT lt_pur_req_item ASSIGNING FIELD-SYMBOL(<fs_item>)
WHERE Supplier IS NOT INITIAL.
<fs_result>-%param-supplier = <fs_item>-Supplier.
EXIT.
ENDLOOP.
" If the supplier is not assigned to any item in PR, then determine from source of supply
IF <fs_result>-%param-supplier IS INITIAL.
<fs_result>-%param-supplier =
zrk_cl_mng_pur_con=>determine_supplier_material( iv_material = VALUE #( lt_pur_req_item[ 1 ]-PartNo ) ).
ENDIF.
ENDLOOP.
ENDMETHOD.
use function GetDefaultsForConvert_Into_PC ;
<Annotations Target="SAP__self.Convert_Into_PC(SAP__self.PRHeadType)">
<Annotation Term="SAP__core.OperationAvailable" Path="_it/__OperationControl/Convert_Into_PC"/>
<Annotation Term="SAP__common.DefaultValuesFunction" String="com.sap.gateway.srvd.zrk_ui_pur_req.v0001.GetDefaultsForConvert_Into_PC"/>
</Annotations>
ABAP RAP Los parámetros de acción predeterminados con una lógica empresarial compleja permiten que las aplicaciones de Fiori Elements no sólo sean fáciles de usar sino también inteligentes y adaptables a la naturaleza dinámica de los procesos empresariales. La capacidad de personalizar las acciones predeterminadas según las necesidades comerciales específicas garantiza una experiencia de usuario más fluida y eficiente.
https://help.sap.com/docs/abap-cloud/abap-rap/operación-defaulting
https://community.sap.com/topics/abap/rap
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