Continuamos con nuestro bloque en WebGui. A
continuación veremos las modificaciones necesarias en la clase de visualización
para que nuestros datos sean visibles y modificables.
Para ello primero es necesario modificar el nodo de
contexto. Los métodos a modificar en el nodo de contexto son GET_TABLE_LINE_SAMPLE y
IF_BSP_MODEL~INIT.
- Método
GET_TABLE_LINE_SAMPLE
En este método definimos la estructura del nodo. El código a implementar es el siguiente
TYPES: BEGIN OF line.
include type ZEXPO_BOL_ST.
TYPES: END OF line.
CREATE DATA rv_sample TYPE line. - Método IF_BSP_MODEL~INIT
Este método inicializa la colección en el inicio. El código a implementar es el siguiente:
TYPES ltype_attr_struct TYPE zexpo_bol_st.
DATA: lrf_data_struct TYPE REF TO ltype_attr_struct,
lrf_value_node TYPE REF TO cl_bsp_wd_value_node,
lrf_bol_collection TYPE REF TO if_bol_bo_col.
super->if_bsp_model~init( id = id
owner = owner ).
CREATE DATA lrf_data_struct.
CREATE OBJECT lrf_value_node
EXPORTING
iv_data_ref = lrf_data_struct.
CREATE OBJECT lrf_bol_collection TYPE cl_crm_bol_bo_col.
lrf_bol_collection->add( lrf_value_node ).
me->set_collection( lrf_bol_collection ).
A continuación se deben modificar los métodos de
recuperación de datos. Para recuperar los datos es necesario crear el método
ROOT_QUERY en la clase de implementación de nuestro bloque y redefinir el
método DO_PREPARE_OUTPUT para que llame al nuevo método.
- Método ROOT_QUERY
El método debe ser de instancia y privado. No tiene parámetros. El código a implementar es el siguiente:
DATA: lrf_advanced_query TYPE REF TO cl_crm_bol_dquery_service,
lrf_root_result_collection TYPE REF TO if_bol_entity_col,
lrf_root_result_bol_entity TYPE REF TO cl_crm_bol_entity,
lrf_current_root TYPE REF TO if_bol_bo_property_access,
lrf_current_root_col TYPE REF TO if_bol_bo_col,
lrf_current_btorder TYPE REF TO if_bol_bo_property_access,
lt_params TYPE crmt_name_value_pair_tab,
ls_params TYPE crmt_name_value_pair,
lv_low_value TYPE string,
ls_root_properties TYPE zexpo_bol_st,
ls_btorder_properties TYPE crmst_header_admin_btil,
lv_index TYPE i.
CLEAR lv_index.
ls_params-name = 'MAX_HITS'.
ls_params-value = '10'. "Solo un resultado.
APPEND ls_params TO lt_params.
lrf_current_btorder ?= me->typed_context->btorder->collection_wrapper->get_current( ).
CHECK lrf_current_btorder IS BOUND.lrf_current_btorder->get_properties( IMPORTING es_attributes = ls_btorder_properties ).
CHECK ls_btorder_properties-header_guid IS NOT INITIAL.
lv_low_value = ls_btorder_properties-header_guid.
lrf_advanced_query = cl_crm_bol_dquery_service=>get_instance( 'Search' ).
lrf_advanced_query->set_query_parameters( it_parameters = lt_params ).
lrf_advanced_query->add_selection_param( iv_attr_name = 'ACT_GUID'
iv_sign = 'I'
iv_option = 'EQ'
iv_low = low_value
iv_high = '' ).
lrf_root_result_collection = lrf_advanced_query->get_query_result( ).
me->typed_context->root->set_collection( lrf_root_result_collection ). - Método DO_PREPARE_OUTPUT
La programación básica para la recuperación de datos es la siguiente:
DATA: ls_button TYPE crmt_thtmlb_button.
CALL METHOD super->do_prepare_output
EXPORTING
iv_first_time = iv_first_time.
me->root_query( ).
En el próximo post (y último) crearemos los botones necesarios para dar funcionalidad al bloque.
Relacionado:
Programación BOL/GenIL (1/7)
Programación BOL/GenIL (2/7)
Programación BOL/GenIL (3/7)
Programación BOL/GenIL (4/7)
Programación BOL/GenIL.(5/7)
Programación BOL/GenIL.(7/7)
Hola,
ResponderEliminarCreo que me falta algo pero no detecto que es:
Me marca error en esta línea al ejecutar:
lrf_advanced_query = cl_crm_bol_dquery_service=>get_instance( 'Search' ).
Es cierto, en la tabla de objetos tienes que definir una entrada con los valores:
EliminarSearch - G - Estructura key - estructura de atributos.
Saludos