Web Dynpro For ABAP Tutorial - 2-2

Está en la página 1de 9

ABAP Web Dynpro:

Tutorial – Uso de totales y


subtotales en ALV Web
Dynpro
Uso de Sub totales y Totales en ALV Web Dynpro

Basándonos en el tutorial 6, donde se explica como hacer la construcción de un ALV,


realizaremos la explicación del uso de Sub-Totales y Totales.

1.- Una vez que hayamos creado un componente Web Dynpro.

2.- Creamos un nodo para datos, este nodo fue creado de forma local sin estructura del
diccionario.

ABAP Web Dynpro:


09/11/2013 Tutorial – Uso de totales y subtotales en ALV Web Dynpro 2
3.- Hacemos el mapeo de los contextos.

4.- Creamos contenedor del ALV en la vista.

ABAP Web Dynpro:


09/11/2013 Tutorial – Uso de totales y subtotales en ALV Web Dynpro 3
5.- Creamos la unión de la vista con la ventana.

6.- Hacer el mapeo externo del nodo con el ALV

ABAP Web Dynpro:


09/11/2013 Tutorial – Uso de totales y subtotales en ALV Web Dynpro 4
7.- Crear el método para el uso de los totales y subtotales.

8.- Implementar el método WDDOINIT, para llenar la tabla con datos, ver el código.

ABAP Web Dynpro:


09/11/2013 Tutorial – Uso de totales y subtotales en ALV Web Dynpro 5
9.- Implementar el método para la creación de los totales y subtotales, ver el código.

10.- Creamos la aplicación y ejecutamos la prueba.

ABAP Web Dynpro:


09/11/2013 Tutorial – Uso de totales y subtotales en ALV Web Dynpro 6
Código.

METHOD wddoinit .

DATA lo_nd_tab TYPE REF TO if_wd_context_node.


DATA lt_tab TYPE wd_this->elements_tab.
DATA wa_tab LIKE LINE OF lt_tab.

lo_nd_tab = wd_context->get_child_node( name = wd_this->wdctx_tab ).

CLEAR wa_tab.
wa_tab-campo1 = 'AAA'.
wa_tab-campo2 = '111'.
wa_tab-campo3 = '100'.
APPEND wa_tab TO lt_tab.

CLEAR wa_tab.
wa_tab-campo1 = 'AAA'.
wa_tab-campo2 = '222'.
wa_tab-campo3 = '230'.
APPEND wa_tab TO lt_tab.

CLEAR wa_tab.
wa_tab-campo1 = 'BBB'.
wa_tab-campo2 = '333'.
wa_tab-campo3 = '345'.
APPEND wa_tab TO lt_tab.

CLEAR wa_tab.
wa_tab-campo1 = 'BBB'.
wa_tab-campo2 = '444'.
wa_tab-campo3 = '143'.
APPEND wa_tab TO lt_tab.

CLEAR wa_tab.
wa_tab-campo1 = 'CCC'.
wa_tab-campo2 = '111'.
wa_tab-campo3 = '621'.
APPEND wa_tab TO lt_tab.

lo_nd_tab->bind_table( new_items = lt_tab set_initial_elements = abap_true ).

wd_this->create_subtotal( ).

ENDMETHOD.

ABAP Web Dynpro:


09/11/2013 Tutorial – Uso de totales y subtotales en ALV Web Dynpro 7
Código.

METHOD create_subtotal .

*---- Metodo para la creacion de subtotales


DATA: lo_cmp_usage TYPE REF TO if_wd_component_usage.
DATA: lr_salv_wd_table TYPE REF TO iwci_salv_wd_table.
DATA: lr_column_settings TYPE REF TO if_salv_wd_column_settings,
lr_column TYPE REF TO cl_salv_wd_column,
lt_column TYPE salv_wd_t_column_ref,
ls_column TYPE salv_wd_s_column_ref.
DATA: lr_function_settings TYPE REF TO cl_salv_wd_config_table.
DATA: lr_field_settings TYPE REF TO if_salv_wd_field_settings,
lr_field_curr TYPE REF TO cl_salv_wd_field,
lr_field_amnt TYPE REF TO cl_salv_wd_field.
DATA: lv_aggr_rule TYPE REF TO cl_salv_wd_aggr_rule.
DATA: lr_sort_rule TYPE REF TO cl_salv_wd_sort_rule.

*---- Creacion de la instancia del componente ALV utilizado


lo_cmp_usage = wd_this->wd_cpuse_alv_table( ).

*---- Si no se encuentra instanciado, se debe inicializar


IF lo_cmp_usage->has_active_component( ) IS INITIAL.
lo_cmp_usage->create_component( ).
ENDIF.

*---- Obtener el componente ALV


lr_salv_wd_table = wd_this->wd_cpifc_alv_table( ).
lr_function_settings = lr_salv_wd_table->get_model( ).

*----- Obtener las referencias de las columnas


lr_column_settings ?= lr_function_settings.

*---- Obtener todas las columnas


lt_column = lr_column_settings->get_columns( ).

*---- Ciclo por las columnas


LOOP AT lt_column INTO ls_column.
CASE ls_column-id.
WHEN 'CAMPO3'.

ABAP Web Dynpro:


09/11/2013 Tutorial – Uso de totales y subtotales en ALV Web Dynpro 8
Código.

*---- Obtener el campo para la creacion de la regla


CALL METHOD lr_function_settings->if_salv_wd_field_settings~get_field
EXPORTING
fieldname = 'CAMPO3'
RECEIVING
value = lr_field_amnt.

*---- Creacion de la regla para totalizar el campo


CALL METHOD lr_field_amnt->if_salv_wd_aggr~create_aggr_rule
EXPORTING
aggregation_type = if_salv_wd_c_aggregation=>aggrtype_total
RECEIVING
value = lv_aggr_rule.

WHEN 'CAMPO1'.
*---- Obtener el campo para la creacion del ordenamiento
CALL METHOD lr_function_settings->if_salv_wd_field_settings~get_field
EXPORTING
fieldname = 'CAMPO1'
RECEIVING
value = lr_field_curr.

*---- Creacion del ordenamiento, crea subtotales


CALL METHOD lr_field_curr->if_salv_wd_sort~create_sort_rule
EXPORTING
sort_order = if_salv_wd_c_sort=>sort_order_ascending
group_aggregation = abap_true
RECEIVING
value = lr_sort_rule.
ENDCASE.
ENDLOOP.

ENDMETHOD.

ABAP Web Dynpro:


09/11/2013 Tutorial – Uso de totales y subtotales en ALV Web Dynpro 9

También podría gustarte