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

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

<%@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. IF controller->view_group_context->is_view_in_display_mode( controller ) = abap_true. ELSE. lv_displaymode = abap_true. quedando de la siguiente forma. ENDIF. lv_displaymode = abap_false.

es necesario activar el modo edición.. para seleccionar los campos. ya que la ventanba tiene asociada la vista. es necesario visualizar la configuración y debe aparecer 3 pestañas. . Aqui seleccionamos los campos a visualizar del lado derecho. Estructura. 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. 5. despues de e so es necedsario guardar los cambios.Ya terminado la configuración del htm.

.

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

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

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

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

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

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

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

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

.

10 .Crear custom control en el controlador ..

.

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

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 .

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

.

.

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

. * 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' ). . WHEN 'UCELBancas'. 15.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' ). ENDMETHOD. ENDCASE.

.

.

.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. . 18.Vamos al evento de la vista y redefinimos el ON_SAVE.

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

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

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

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

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

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

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

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

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

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

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

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

Sign up to vote on this title
UsefulNot useful

Master Your Semester with Scribd & The New York Times

Special offer for students: Only $4.99/month.

Master Your Semester with a Special Offer from Scribd & The New York Times

Cancel anytime.