Está en la página 1de 47

CREACION DE ASSINGMENT BLOCK BANCA.

Paso 1.- Ingresar WorkBench BSP_WD_CMPWB, Seleccionar el componente y set de ampliacin.

Paso 2.- Creacin 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.

3.- AGREGAR LA VISTA A LA VENTANA


Seleccionamos la Ventana antes creada y hacemos click derecho para seleccionar del men emergente la opcin Aadir Vista.
Es necesario ir Editor de repositorio de tiempo validez.

Activamos el modo Edicion y seleccionamos la vista OVBanca del componente ZCGPOE_ABLOCK.

Resultado de la asignacin.

Definimos el OT que debe ser Custommizing

4.- Crear configuracin de la tabla

Es necesario Editar OVBancas.htm, definiendo el modo de configuracin, 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.
<%@page language="abap" %> <%@extension name="chtmlb" prefix="chtmlb" %>

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

Ya terminado la configuracin del htm, es necesario visualizar la configuracin y debe aparecer 3 pestaas, Estructura, Repositorio y Configuracin, es necesario activar el modo edicin, para seleccionar los campos.

Aqui seleccionamos los campos a visualizar del lado derecho, despues de e so es necedsario guardar los cambios.

5.- Colocar la vista en el componet Interface

Es necesario agregamos la ventana al componete interface para que sea visaulizada en cualquier componente, ya que la ventanba tiene asociada la vista.

Paso 6.- modificar el componente CPG-MAIN

Es Necesaior activar el modo Edicion para poder agregar utilizacion de componente

6.1 .-Vamos a decirle que vamos a usar la vista que se publico en el componente CPGOE_ABLOCK

Guardamos la asignacin

7.- Vamos a gregar la vista al viewSet Seleccionamos el Editor de repositorio de tiempo de Validez, vamos a los ViewSet->OPOverView->OverviewPage.

Hacemos click en aceptar y posterior mente guardamos los cambios.

Vamos al Brows Estructure Componentes, En vistas seleccionamos el OPOverview.

Aqu pasamos el Bloque para visualizar, tenemos que activar el tratamiento.

Seleccionamos el bloque que generamos nuevo, despus de pasarlo, oprimimos guardar.

Es necesario cambiar el titulo del Block,k en este ejemplo se cambio por BANCA.

Ya podramos ver el en CRM_UI el nuevo Assingment Block.

Paso 8.- Vamos a extraer los datos desde DO_INIT en el componente CPGOE_ABLSOCK, en la nueva vista

Codificar de la siguiente forma y crear el mtodo SET_DATA_BANCAS ().

Definicin del mtodo, no necesita parmetros.

Definicion del mtodo Set_data_bancas de la siguiente forma, es necesario crear la definicin TYPE STANDARD TABLE OF ty_valor.

method SET_DATA_BANCAS.

DATA lr_cuco TYPE REF TO cl_cpgoe_ab_cucocampaign_impl. DATA lr_campaign TYPE REF TO cl_crm_bol_entity. DATA lv_valores TYPE string. DATA lt_valores TYPE STANDARD TABLE OF ty_valor. DATA lt_bancas TYPE STANDARD TABLE OF zmks_assg_campaign. DATA ls_bancas LIKE LINE OF lt_bancas. DATA lv_string TYPE string. DATA: lv_struct_ref TYPE REF TO zmks_assg_campaign, lv_value_node TYPE REF TO cl_bsp_wd_value_node, lv_bo_coll TYPE REF TO if_bol_bo_col. * Get custom controller
lr_cuco ?= get_custom_controller( 'CPGOE_ABLOCKS/CuCoCampaign' ).

* check custom controller CHECK lr_cuco IS BOUND. * Get the last updates from UI to remove invalid products * lr_cuco->refresh_current( ). * get current campaign
lr_campaign ?= lr_cuco->typed_context->campaign->collection_wrapper->get_current( ). CHECK lr_campaign IS BOUND.

* -- Leer el campo EXT.ZZAFLD00000G


lv_valores = lr_campaign->get_property_as_string( 'ZZAFLD00000G' ). CHECK lv_valores IS NOT INITIAL.

SPLIT lv_valores AT ',' INTO TABLE lt_valores. CHECK lt_valores[] IS NOT INITIAL. * -- Buscar descripciones de cada filial en la campaa SELECT ID_BANCA nombre INTO TABLE lt_bancas FROM zmkt_banca FOR ALL ENTRIES IN lt_valores WHERE ID_BANCA = lt_valores-valor. IF sy-subrc EQ 0. CREATE DATA lv_struct_ref. CREATE OBJECT lv_bo_coll TYPE cl_crm_bol_bo_col.

LOOP AT lt_bancas INTO ls_bancas. CREATE OBJECT lv_value_node EXPORTING


iv_data_ref = lv_struct_ref. 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 ). lv_bo_coll->add( lv_value_node ).

ENDLOOP.
typed_context->banca->collection_wrapper->set_collection( lv_bo_coll ).

ENDIF. endmethod.
9.- Vamos a ligar los nodos con el custom control y creamos un nodo de contexto.

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 vinculacin

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 informacin de retorno .,

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

14.- al mtodo 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.

CASE iv_usage->usage_name. WHEN 'UCELFiliales'.

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

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

15.- Vamos a crear el nodo en el custom controller para despus ligarlos.

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.

18.- Vamos al evento de la vista y redefinimos el ON_SAVE, para convertir los registros a lneas.

Modificamos el mtodos method EH_ONSAVE.

* -- Asignar valores de assigment adicionales a campos extendidos * -- de la campaa


get_additional_data( ).

* -- Evento estndar call method super->eh_onsave exporting


htmlb_event = htmlb_event htmlb_event_ex = htmlb_event_ex.

endmethod.

El mtodo GET_ADDITIONAL_DATA debe quedar de la siguiente forma. METHOD get_additional_data. DATA: lv_filiales TYPE zadtel00001n, lv_bancas TYPE zadtel00001v. DATA: lr_cmp TYPE REF TO cl_cpg_main_bspwdcomponen_impl, lr_campaign TYPE REF TO cl_crm_bol_entity. lv_filiales = get_filiales( ).

lv_bancas = get_bancas( ).

lr_cmp ?= me->comp_controller. lr_campaign ?= lr_cmp->typed_context->campaign->collection_wrapper->get_current( ). CHECK lr_campaign IS BOUND. lr_campaign->set_property( iv_attr_name = 'ZZAFLD00000E' iv_value = lv_filiales ). lr_campaign->set_property( iv_attr_name = 'ZZAFLD00000G' iv_value = lv_bancas ). ENDMETHOD.

El mtodo get_additional_data( ), se amplio con el metodo de GET_BANCAS donde el mtodo Banca, quedara de la siguiente forma. method GET_BANCAS. DATA: lr_banca TYPE REF TO cl_bsp_wd_value_node, lr_iterator TYPE REF TO if_bol_bo_col_iterator. DATA: lv_string TYPE string, lv_bancas TYPE zadtel00001n. lr_iterator ?= ztyped_context->banca->collection_wrapper->get_iterator( ). lr_banca ?= lr_iterator->get_first( ). WHILE lr_banca IS BOUND. lv_string = lr_banca->get_property_as_string( 'IDCATALOGO' ). IF lv_bancas IS INITIAL. lv_bancas = lv_string. ELSE. CONCATENATE lv_bancas ',' lv_string INTO lv_bancas. ENDIF. lr_banca ?= lr_iterator->get_next( ). ENDWHILE. rv_bancas = lv_bancas.

endmethod.

Tenemos que recuperar el elemento de datos del campo correspondiente a registrar el resultado, tenemos que hacer referencia al componente Bol de Campaing.

Aqu recuperamos el elemento que corresponde a Banca.

19.- Vamos al conmponente PCGOE_ABLOCK, para crear la barra de botones.

Tenemos que crear al Atributo GET_BUTTONS.

Es necesario activar toda la clase. Vamos a gregar los botones a la vista al mtodo DO_PREPARE_OUTPUT

method DO_PREPARE_OUTPUT. call method super->do_prepare_output

exporting
iv_first_time = abap_false.

* -- Acciones para el assigment block banca


set_buttons( ).

endmethod.
Es necesario generar el mtodo con el nombre de SET_BUTTONS con el siguiente cdigo. method SET_BUTTONS.

DATA ls_button TYPE crmt_thtmlb_button. DATA lv_enabled TYPE abap_bool. CLEAR gt_buttons. * NEW button ls_button-type = cl_thtmlb_util=>gc_icon_new. ls_button-on_click = 'CREATEBANCA'. ls_button-text = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_BT/NEW' ).
ls_button-enabled = abap_true. APPEND ls_button TO gt_buttons.

* DELETE button CLEAR ls_button. ls_button-id = 'DELETE_BTN'.


ls_button-on_click = cl_mkt_cpgmpl_util=>gc_event_delete. ls_button-tooltip = runtime->get_otr_text( 'CRM_BSP_WD_TOOLS/BTN_DELETE' ). ls_button-type = cl_thtmlb_util=>gc_icon_delete. ls_button-enabled = is_line_marked( ). APPEND ls_button TO gt_buttons.

* EDIT LIST button

CLEAR ls_button. ls_button-type = cl_thtmlb_util=>gc_icon_edit.


ls_button-on_click = cl_mkt_cpgmpl_util=>gc_event_edit. ls_button-text = cl_wd_utilities=>get_otr_text_by_alias( 'CRM_UIU_BT/EDITLIST' ). ls_button-enabled = me->view_group_context->is_view_in_display_mode( me ). APPEND ls_button TO gt_buttons.

* REFRESH button CLEAR ls_button. ls_button-type = cl_thtmlb_util=>gc_icon_refresh.


ls_button-on_click = cl_mkt_cpgmpl_util=>gc_event_refresh. IF typed_context->banca->collection_wrapper->size( ) > 0. ls_button-enabled = abap_true. ENDIF. APPEND ls_button TO gt_buttons.

endmethod.

Es necesario crear el mtodo is_line_marked( ). Ya qye no esta en el std., quedando de la siguiente forma

method IS_LINE_MARKED. DATA lr_marked TYPE REF TO if_bol_bo_col. rv_line_marked = abap_false.

* 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. Check if at least one line is marked
lr_marked = typed_context->banca->collection_wrapper->get_marked( ). CHECK lr_marked IS NOT INITIAL. IF lr_marked->size( ) NE 0. rv_line_marked = abap_true. ENDIF.

ENDIF. endmethod.

20 .- Creamos el evento CREATEBANCA que hace referencia al mtodo.

Con el sifuiente cdigo. method EH_ONCREATEBANCA. DATA: lr_struct_ref TYPE REF TO zmks_assg_campaign, lr_value_node TYPE REF TO cl_bsp_wd_value_node, lr_bo_coll TYPE REF TO if_bol_bo_col.

CREATE DATA lr_struct_ref. CREATE OBJECT lr_bo_coll TYPE cl_crm_bol_bo_col. CREATE OBJECT lr_value_node EXPORTING
iv_data_ref = lr_struct_ref. typed_context->banca->collection_wrapper->add( lr_value_node ).

endmethod.
21.- Creamos el vento DELETE.

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

22.- Creacion del evento EDIT.

El dogigo quedara de la siguiente forma. method EH_ONEDIT. DATA lr_entity DATA lr_cuco TYPE REF TO cl_crm_bol_entity. TYPE REF TO cl_cpgoe_ab_cucocampaign_impl.

* Get custom controller lr_cuco ?= get_custom_controller( 'CPGOE_ABLOCKS/CuCoCampaign' ). * check custom controller CHECK lr_cuco IS BOUND. * get current campaign lr_entity ?= lr_cuco->typed_context->campaign->collection_wrapper->get_current( ). CHECK lr_entity IS BOUND. IF lr_entity->is_locked( ) = abap_false. IF lr_entity->lock( ) EQ abap_true. me->view_group_context->set_view_editable( me ). ENDIF. ELSE. me->view_group_context->set_view_editable( me ). ENDIF. endmethod. 23.- Creamos el evento REFHRESH.

Con el siguiente cdigo.

24.- Crear AYUDA DE BUSQUEDA para el campo, tenemos hacer doble click para ampliar el mtodo.

Con el siguiente cdigo. method GET_V_IDCATALOGO. data: ls_map type if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping, lt_inmap type if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab, lt_outmap type if_bsp_wd_valuehelp_f4descr=>gtype_param_mapping_tab,

lv_index type string. lv_index = iv_index. CONDENSE lv_index NO-GAPS.

* para los tablas en importante concatenar el string 'table' para que funcion e CONCATENATE 'table[' lv_index '].IDCATALOGO' INTO ls_map-context_attr. ls_map-f4_attr = 'KEY'. append ls_map to lt_outmap. CONCATENATE 'table[' lv_index '].DESCRIPCION' INTO ls_map-context_attr. ls_map-f4_attr = 'VALUE'. append ls_map to lt_outmap. 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. = '(ZRMKCL_F4_BANCAS)' = if_bsp_wd_valuehelp_f4descr=>help_id_kind_name = lt_inmap = lt_outmap.

Tenemos que crear la clase ZRMKCL_F4_BANCAS. Tenemos que crear la interfaz IF_BSP_WD_CUSTOM_F4_CALLBACK. METHOD if_bsp_wd_custom_f4_callback~retrieve_custom_values. **tabla de clase de identificacin DATA: lt_type TYPE STANDARD TABLE OF lty_type, ls_type LIKE LINE OF lt_type. **tabla de select option DATA: ls_selopt TYPE ddshselops, wa_selopt LIKE LINE OF ls_selopt. **estructura de salida DATA: ls_key_value TYPE shsvalstr. SELECT id_banca nombre FROM zmkt_banca INTO TABLE lt_type. IF sy-subrc = 0. CLEAR ls_type.

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

También podría gustarte