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.

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. Resultado de la asignación. . Activamos el modo Edicion y seleccionamos la vista OVBanca del componente ZCGPOE_ABLOCK.3. Es necesario ir Editor de repositorio de tiempo validez..

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

quedando de la siguiente forma. .<%@extension name="thtmlb" prefix="thtmlb" %> <% DATA: lv_displaymode TYPE crmt_boolean. %> <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. ENDIF. IF controller->view_group_context->is_view_in_display_mode( controller ) = abap_true. lv_displaymode = abap_true. lv_displaymode = abap_false.

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

.

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

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

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

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

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

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

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

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

.

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 AL COMPONENTE CPG_MAIN.. vamos hacer el beinding .

.

.

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

* 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' ).. ENDMETHOD. . ENDCASE. WHEN 'UCELBancas'.Vamos a crear el nodo en el custom controller para después ligarlos. 15. * 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' ).

.

.

. 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.. .Vamos al evento de la vista y redefinimos el ON_SAVE. para convertir los registros a líneas.

DATA: lr_cmp TYPE REF TO cl_cpg_main_bspwdcomponen_impl. METHOD get_additional_data.Asignar valores de assigment adicionales a campos extendidos * -. * -. . DATA: lv_filiales TYPE zadtel00001n.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. El método GET_ADDITIONAL_DATA debe quedar de la siguiente forma. endmethod.de la campaña get_additional_data( ).Modificamos el métodos method EH_ONSAVE. lv_filiales = get_filiales( ). lv_bancas TYPE zadtel00001v. * -.

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful