CREACION DE ASSINGMENT BLOCK BANCA.

Paso 1.- Ingresar WorkBench BSP_WD_CMPWB, Seleccionar el componente y set de ampliación.

Paso 2.- Creación de VISTA.

Definimos el nombre del Assingment Block OVBancas.

Definimos el nombre del nodo, para este ejemplo es BANCA

Definimos la estructura que vamos a ligar, Para este caso fue necesario crear la estructura ZKMS_ASSG_CAMPAIGN.

Seleccionamos los campos que vamos a relacionar.

Definimos el tipo de vista, debe ser de tipo tabla, configurable y modo visalizar y modificar.

2.1 .- Creacion de ventana.

Definimos el nombre de la ventana.

Continuar la secuencia de pantallas hasta finalizar. Se muestra el resultado de la creacion de la venta. .

. . Es necesario ir Editor de repositorio de tiempo validez. Resultado de la asignación.3. Activamos el modo Edicion y seleccionamos la vista OVBanca del componente ZCGPOE_ABLOCK.AGREGAR LA VISTA A LA VENTANA Seleccionamos la Ventana antes creada y hacemos click derecho para seleccionar del menú emergente la opción Añadir Vista.

es necesario modificar la referencia de la vista BANCA por la vista que se este creando. en este caso estamos cambiando el dato por SEGMENTO.Definimos el OT que debe ser Custommizing 4..Crear configuración de la tabla Es necesario Editar OVBancas. definiendo el modo de configuración. <%@page language="abap" %> <%@extension name="chtmlb" prefix="chtmlb" %> .htm.

lv_displaymode = abap_false. quedando de la siguiente forma. lv_displaymode = abap_true. IF controller->view_group_context->is_view_in_display_mode( controller ) = abap_true. .<%@extension name="thtmlb" prefix="thtmlb" %> <% DATA: lv_displaymode TYPE crmt_boolean. ENDIF. %> <thtmlb:areaFrameSetter toolbarButtons = "<%= controller->gt_buttons %>" maxButtonNumber = "5" displayMode = "<%= lv_displayMode %>" /> <chtmlb:tableExtension tableId = "OVBancas" layout = "FIXED" > <chtmlb:configTable id navigationMode onRowSelection table headerVisible width usage personalizable downloadToExcel displayMode selectedRowIndex selectedRowIndexTable selectionMode allRowsEditable </chtmlb:tableExtension> = = = = = = = = = = = = = = "BancasTable" "BYPAGE" "select" "//Banca/Table" "FALSE" "100%" "ASSIGNMENTBLOCK" "FALSE" "FALSE" "<%= lv_displayMode %>" "<%= banca->selected_index %>" "<%= banca->selection_tab %>" "<%= banca->SELECTION_MODE %>" "TRUE" /> Es necesario modificar textos de Filiales por el de Bancas. ELSE.

es necesario visualizar la configuración y debe aparecer 3 pestañas. 5. ya que la ventanba tiene asociada la vista. Aqui seleccionamos los campos a visualizar del lado derecho. . despues de e so es necedsario guardar los cambios. Estructura.Colocar la vista en el componet Interface Es necesario agregamos la ventana al componete interface para que sea visaulizada en cualquier componente. para seleccionar los campos..Ya terminado la configuración del htm. Repositorio y Configuración. es necesario activar el modo edición.

.

Paso 6..modificar el componente CPG-MAIN Es Necesaior activar el modo Edicion para poder agregar utilizacion de componente .

.1 . vamos a los ViewSet->OPOverView->OverviewPage.6..-Vamos a decirle que vamos a usar la vista que se publico en el componente CPGOE_ABLOCK Guardamos la asignación 7.Vamos a gregar la vista al viewSet Seleccionamos el Editor de repositorio de tiempo de Validez.

Hacemos click en aceptar y posterior mente guardamos los cambios. . Vamos al Brows Estructure Componentes. En vistas seleccionamos el OPOverview.

después de pasarlo. . oprimimos guardar.Aquí pasamos el Bloque para visualizar. tenemos que activar el tratamiento. Seleccionamos el bloque que generamos nuevo.

k en este ejemplo se cambio por BANCA. Ya podríamos ver el en CRM_UI el nuevo Assingment Block. en la nueva vista .. Paso 8.Es necesario cambiar el titulo del Block.Vamos a extraer los datos desde DO_INIT en el componente CPGOE_ABLSOCK.

Definición del método. .Codificar de la siguiente forma y crear el método SET_DATA_BANCAS (). no necesita parámetros.

CHECK lv_valores IS NOT INITIAL. method SET_DATA_BANCAS. . DATA lt_valores TYPE STANDARD TABLE OF ty_valor. DATA lr_campaign TYPE REF TO cl_crm_bol_entity. DATA lv_string TYPE string. IF sy-subrc EQ 0. * Get the last updates from UI to remove invalid products * lr_cuco->refresh_current( ). * -. DATA: lv_struct_ref TYPE REF TO zmks_assg_campaign. * check custom controller CHECK lr_cuco IS BOUND. SPLIT lv_valores AT '. * get current campaign lr_campaign ?= lr_cuco->typed_context->campaign->collection_wrapper->get_current( ). CREATE OBJECT lv_bo_coll TYPE cl_crm_bol_bo_col. CREATE DATA lv_struct_ref. DATA lr_cuco TYPE REF TO cl_cpgoe_ab_cucocampaign_impl. es necesario crear la definición TYPE STANDARD TABLE OF ty_valor. DATA lv_valores TYPE string. CHECK lt_valores[] IS NOT INITIAL. DATA ls_bancas LIKE LINE OF lt_bancas. lv_bo_coll TYPE REF TO if_bol_bo_col. CHECK lr_campaign IS BOUND.Definicion del método Set_data_bancas de la siguiente forma. * -. DATA lt_bancas TYPE STANDARD TABLE OF zmks_assg_campaign. lv_value_node TYPE REF TO cl_bsp_wd_value_node.Buscar descripciones de cada filial en la campaña SELECT ID_BANCA nombre INTO TABLE lt_bancas FROM zmkt_banca FOR ALL ENTRIES IN lt_valores WHERE ID_BANCA = lt_valores-valor. * Get custom controller lr_cuco ?= get_custom_controller( 'CPGOE_ABLOCKS/CuCoCampaign' ).ZZAFLD00000G lv_valores = lr_campaign->get_property_as_string( 'ZZAFLD00000G' ).Leer el campo EXT.' INTO TABLE lt_valores.

lv_value_node->set_property( iv_attr_name = 'IDCATALOGO' iv_value = ls_bancas-idcatalogo ). . lv_bo_coll->add( lv_value_node ). 9. CREATE OBJECT lv_value_node EXPORTING iv_data_ref = lv_struct_ref. ENDLOOP.. typed_context->banca->collection_wrapper->set_collection( lv_bo_coll ).Vamos a ligar los nodos con el custom control y creamos un nodo de contexto. lv_value_node->set_property( iv_attr_name = 'DESCRIPCION' iv_value = ls_bancas-descripcion ). ENDIF. endmethod.LOOP AT lt_bancas INTO ls_bancas.

.

10 ..Crear custom control en el controlador .

.

.11.Creamos la liga entre el controlador de la vista y el custom controller .

Vemos la liga de la siguiente forma .

.12.Vamos a crearar la vinculación .

Quedando de la siguiente forma 13..Vamos a publicar el nodo de contexto para que lo vean otros conmponentes esto es para que el main guarde la información de retorno . ..

14. vamos hacer el beinding ..VAMOS AL COMPONENTE CPG_MAIN.

.

.

CALL METHOD super->wd_usage_initialize EXPORTING iv_usage = iv_usage. ..14.al método vamos a gregar el beiding Agregamos METHOD wd_usage_initialize. CASE iv_usage->usage_name. WHEN 'UCELFiliales'. DATA: lr_usage_data TYPE REF TO cl_bsp_wd_context_node.

* bind frame context component usage to all other components iv_usage->bind_context_node( iv_controller_type = cl_bsp_wd_controller=>co_type_component iv_name = iv_usage->usage_name iv_target_node_name = 'FILIALES' iv_node_2_bind = 'FILIALES' ). 15. WHEN 'UCELBancas'. ENDMETHOD. * bind frame context component usage to all other components iv_usage->bind_context_node( iv_controller_type = cl_bsp_wd_controller=>co_type_component iv_name = iv_usage->usage_name iv_target_node_name = 'BANCA' iv_node_2_bind = 'BANCA' ). ENDCASE.Vamos a crear el nodo en el custom controller para después ligarlos. ..

.

.

Seleccionamos la vista SEGMENTO.Es necesario crear el nodo en la vista. .

Vamos a vincular los componentes vista Ligamos la vista con el custom controller .17..

18.Ahora el controlador del custom Ligamos el custom controller. para convertir los registros a líneas. .Vamos al evento de la vista y redefinimos el ON_SAVE..

lv_bancas TYPE zadtel00001v. DATA: lr_cmp TYPE REF TO cl_cpg_main_bspwdcomponen_impl. METHOD get_additional_data. El método GET_ADDITIONAL_DATA debe quedar de la siguiente forma.Asignar valores de assigment adicionales a campos extendidos * -.Evento estándar call method super->eh_onsave exporting htmlb_event = htmlb_event htmlb_event_ex = htmlb_event_ex. lr_campaign TYPE REF TO cl_crm_bol_entity. endmethod. lv_filiales = get_filiales( ). * -. DATA: lv_filiales TYPE zadtel00001n.Modificamos el métodos method EH_ONSAVE. .de la campaña get_additional_data( ). * -.

tenemos que hacer referencia al componente Bol de Campaing. lr_campaign ?= lr_cmp->typed_context->campaign->collection_wrapper->get_current( ). lr_banca ?= lr_iterator->get_next( ). DATA: lr_banca TYPE REF TO cl_bsp_wd_value_node. endmethod. rv_bancas = lv_bancas. lv_string = lr_banca->get_property_as_string( 'IDCATALOGO' ). ELSE. ENDIF. . El método get_additional_data( ). ENDWHILE. lr_banca ?= lr_iterator->get_first( ). ENDMETHOD. lv_bancas = lv_string. WHILE lr_banca IS BOUND. CONCATENATE lv_bancas '. CHECK lr_campaign IS BOUND. IF lv_bancas IS INITIAL. lr_cmp ?= me->comp_controller. quedaría de la siguiente forma. DATA: lv_string TYPE string.lv_bancas = get_bancas( ). lr_iterator ?= ztyped_context->banca->collection_wrapper->get_iterator( ).' lv_string INTO lv_bancas. lv_bancas TYPE zadtel00001n. lr_campaign->set_property( iv_attr_name = 'ZZAFLD00000G' iv_value = lv_bancas ). lr_campaign->set_property( iv_attr_name = 'ZZAFLD00000E' iv_value = lv_filiales ). lr_iterator TYPE REF TO if_bol_bo_col_iterator. se amplio con el metodo de GET_BANCAS donde el método Banca. method GET_BANCAS. Tenemos que recuperar el elemento de datos del campo correspondiente a registrar el resultado.

.Aquí recuperamos el elemento que corresponde a Banca. 19. para crear la barra de botones.Vamos al conmponente PCGOE_ABLOCK..

Es necesario activar toda la clase.Tenemos que crear al Atributo GET_BUTTONS. Vamos a gregar los botones a la vista al método DO_PREPARE_OUTPUT .

DATA ls_button TYPE crmt_thtmlb_button. * -.Acciones para el assigment block banca set_buttons( ). method SET_BUTTONS. ls_button-id = 'DELETE_BTN'. ls_button-enabled = is_line_marked( ). * DELETE button CLEAR ls_button. APPEND ls_button TO gt_buttons. * NEW button ls_button-type = cl_thtmlb_util=>gc_icon_new. ls_button-on_click = 'CREATEBANCA'. ls_button-type = cl_thtmlb_util=>gc_icon_delete. call method super->do_prepare_output exporting iv_first_time = abap_false. ls_button-on_click = cl_mkt_cpgmpl_util=>gc_event_delete. ls_button-text = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_BT/NEW' ). Es necesario generar el método con el nombre de SET_BUTTONS con el siguiente código. * EDIT LIST button . ls_button-tooltip = runtime->get_otr_text( 'CRM_BSP_WD_TOOLS/BTN_DELETE' ).method DO_PREPARE_OUTPUT. endmethod. CLEAR gt_buttons. DATA lv_enabled TYPE abap_bool. ls_button-enabled = abap_true. APPEND ls_button TO gt_buttons.

. * ENDIF. ls_button-text = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_BT/EDITLIST' ).Creamos el evento CREATEBANCA que hace referencia al método. 20 . ls_button-type = cl_thtmlb_util=>gc_icon_edit. * REFRESH button CLEAR ls_button.. endmethod. endmethod. Es necesario crear el método is_line_marked( ). * Check edit mode IF me->view_group_context->is_view_in_display_mode( me ) EQ abap_false. ls_button-enabled = me->view_group_context->is_view_in_display_mode( me ). quedando de la siguiente forma method IS_LINE_MARKED. Ya qye no esta en el std. ls_button-enabled = abap_true. APPEND ls_button TO gt_buttons.. APPEND ls_button TO gt_buttons. * Get context node CHECK typed_context->banca IS NOT INITIAL. rv_line_marked = abap_true. ENDIF. ls_button-on_click = cl_mkt_cpgmpl_util=>gc_event_edit.CLEAR ls_button. ls_button-on_click = cl_mkt_cpgmpl_util=>gc_event_refresh. IF typed_context->banca->collection_wrapper->size( ) > 0. ls_button-type = cl_thtmlb_util=>gc_icon_refresh. Check if at least one line is marked lr_marked = typed_context->banca->collection_wrapper->get_marked( ). ENDIF. CHECK lr_marked IS NOT INITIAL. DATA lr_marked TYPE REF TO if_bol_bo_col. rv_line_marked = abap_false. IF lr_marked->size( ) NE 0.

CREATE OBJECT lr_bo_coll TYPE cl_crm_bol_bo_col. typed_context->banca->collection_wrapper->add( lr_value_node ). lr_bo_coll TYPE REF TO if_bol_bo_col..Creamos el vento DELETE. endmethod. lr_value_node TYPE REF TO cl_bsp_wd_value_node. 21. DATA: lr_struct_ref TYPE REF TO zmks_assg_campaign. . CREATE OBJECT lr_value_node EXPORTING iv_data_ref = lr_struct_ref. CREATE DATA lr_struct_ref.Con el sifuiente código. method EH_ONCREATEBANCA.

METHOD eh_ondelete. lr_entity ?= lr_marked_line->get_next( ).El codigo debe quedar de la siguiente forma.. WHILE lr_entity IS BOUND. ENDWHILE. ENDMETHOD.Creacion del evento EDIT. typed_context->banca->collection_wrapper->remove( iv_bo = lr_entity ). * Make sure at least one line was selected CHECK lr_marked_line IS BOUND. . DATA lr_marked_line TYPE REF TO if_bol_bo_col. * Get the lines selected by the user lr_marked_line = typed_context->banca->collection_wrapper->get_marked( ). 22. DATA lr_entity TYPE REF TO cl_bsp_wd_value_node. * Remove the entities which have been deleted successfully lr_entity ?= lr_marked_line->get_first( ).

CHECK lr_entity IS BOUND. . TYPE REF TO cl_cpgoe_ab_cucocampaign_impl. 23. * Get custom controller lr_cuco ?= get_custom_controller( 'CPGOE_ABLOCKS/CuCoCampaign' ). method EH_ONEDIT. DATA lr_entity DATA lr_cuco TYPE REF TO cl_crm_bol_entity. * check custom controller CHECK lr_cuco IS BOUND. ENDIF. * get current campaign lr_entity ?= lr_cuco->typed_context->campaign->collection_wrapper->get_current( ). IF lr_entity->is_locked( ) = abap_false. me->view_group_context->set_view_editable( me ).. endmethod. me->view_group_context->set_view_editable( me ). ENDIF. IF lr_entity->lock( ) EQ abap_true.Creamos el evento REFHRESH. ELSE.El dogigo quedaría de la siguiente forma.

method GET_V_IDCATALOGO. tenemos hacer doble click para ampliar el método. lt_outmap type if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab. Con el siguiente código. 24.Con el siguiente código. lt_inmap type if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab. data: ls_map type if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping..Crear AYUDA DE BUSQUEDA para el campo. .

**tabla de clase de identificación DATA: lt_type TYPE STANDARD TABLE OF lty_type. wa_selopt LIKE LINE OF ls_selopt. ls_type LIKE LINE OF lt_type. append ls_map to lt_outmap. CONDENSE lv_index NO-GAPS. append ls_map to lt_outmap. **tabla de select option DATA: ls_selopt TYPE ddshselops. CLEAR ls_type. = '(ZRMKCL_F4_BANCAS)' = if_bsp_wd_valuehelp_f4descr=>help_id_kind_name = lt_inmap = lt_outmap. Tenemos que crear la clase ZRMKCL_F4_BANCAS.IDCATALOGO' INTO ls_map-context_attr.DESCRIPCION' INTO ls_map-context_attr. SELECT id_banca nombre FROM zmkt_banca INTO TABLE lt_type. ls_map-f4_attr = 'KEY'.lv_index type string. . CONCATENATE 'table[' lv_index ']. **estructura de salida DATA: ls_key_value TYPE shsvalstr. METHOD if_bsp_wd_custom_f4_callback~retrieve_custom_values. lv_index = iv_index. IF sy-subrc = 0. create object rv_valuehelp_descriptor type cl_bsp_wd_valuehelp_f4descr exporting iv_help_id iv_help_id_kind iv_input_mapping iv_output_mapping endmethod. Tenemos que crear la interfaz IF_BSP_WD_CUSTOM_F4_CALLBACK. ls_map-f4_attr = 'VALUE'. * para los tablas en importante concatenar el string 'table' para que funcion e CONCATENATE 'table[' lv_index '].

APPEND ls_key_value TO ct_results_tab. ENDIF. . ls_key_value-value = ls_type-nombre. ev_value_title = text-t02. no se visualiza correctamente el searchhelp ev_key_title = text-t01. ENDLOOP. * * *se pone nombre a los titulos del searchhelp *nota: si no se pone nada en estos parametros. ENDMETHOD.LOOP AT lt_type INTO ls_type. ls_key_value-key = ls_type-id_banca.

Sign up to vote on this title
UsefulNot useful