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.

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

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

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

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

Repositorio y Configuración. es necesario visualizar la configuración y debe aparecer 3 pestañas. es necesario activar el modo edición.Ya terminado la configuración del htm. 5.. para seleccionar los campos.Colocar la vista en el componet Interface Es necesario agregamos la ventana al componete interface para que sea visaulizada en cualquier componente. Estructura. . Aqui seleccionamos los campos a visualizar del lado derecho. ya que la ventanba tiene asociada la vista. 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 los ViewSet->OPOverView->OverviewPage. .-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.1 ..6.

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

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

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

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

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

lv_value_node->set_property( iv_attr_name = 'IDCATALOGO' iv_value = ls_bancas-idcatalogo ). endmethod.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 ). 9. ENDIF. CREATE OBJECT lv_value_node EXPORTING iv_data_ref = lv_struct_ref. . lv_bo_coll->add( lv_value_node ).. typed_context->banca->collection_wrapper->set_collection( lv_bo_coll ). ENDLOOP.LOOP AT lt_bancas INTO ls_bancas.

.

Crear custom control en el controlador ..10 .

.

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

Vemos la liga de la siguiente forma .

Vamos a crearar la vinculación .12..

.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 .

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

.

.

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

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

.

.

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

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

.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. 18.

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

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

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

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

method DO_PREPARE_OUTPUT. DATA lv_enabled TYPE abap_bool. ls_button-enabled = abap_true. * DELETE button CLEAR ls_button. method SET_BUTTONS. ls_button-id = 'DELETE_BTN'. ls_button-on_click = 'CREATEBANCA'. * -. ls_button-on_click = cl_mkt_cpgmpl_util=>gc_event_delete. APPEND ls_button TO gt_buttons. * NEW button ls_button-type = cl_thtmlb_util=>gc_icon_new. ls_button-enabled = is_line_marked( ). ls_button-tooltip = runtime->get_otr_text( 'CRM_BSP_WD_TOOLS/BTN_DELETE' ). CLEAR gt_buttons. * EDIT LIST button . endmethod. 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. APPEND ls_button TO gt_buttons. ls_button-text = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_BT/NEW' ). DATA ls_button TYPE crmt_thtmlb_button. ls_button-type = cl_thtmlb_util=>gc_icon_delete.Acciones para el assigment block banca set_buttons( ).

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful