03-18-2011 11:12 AM
Hi ,
I need to create oen hierarchical ALV report with many fields which are common to lower levels also.Ex.Fields Total Currency and Amount of header level and subsequent levels down are all needs to be displayed in the report.
Please let me know how this can be achieved..
Regards.
Anand
03-18-2011 12:30 PM
Do It in OOPS alv
Try below code
DATA lx_bind TYPE salv_s_hierseq_binding.
DATA lv_message TYPE string.
DATA : lr_data_error TYPE REF TO cx_salv_data_error,
lr_not_found TYPE REF TO cx_salv_not_found,
lr_aggregations TYPE REF TO cl_salv_aggregations,
lr_aggregation TYPE REF TO cl_salv_aggregation,
lr_content TYPE REF TO cl_salv_form_element,
lr_existing TYPE REF TO cx_salv_existing.
lx_bind-master = 'PA'.
lx_bind-slave = 'PA'.
APPEND lx_bind TO t_bind.
*Call factory method to generate the output
TRY.
CALL METHOD cl_salv_hierseq_table=>factory
EXPORTING
t_binding_level1_level2 = t_bind
IMPORTING
r_hierseq = r_table
CHANGING
t_table_level1 = t_header
t_table_level2 = t_item.
r_functions = r_table->get_functions( ).
r_functions->set_all( abap_true ).
r_level = r_table->get_level( 1 ).
r_level->set_items_expanded( ).
r_columns = r_table->get_columns( 1 ).
r_columns->set_expand_column( text-012 ).
**PA
r_column = r_columns->get_column( text-013 ).
r_column->set_long_text( text-001 ).
r_column->set_medium_text( text-001 ).
r_column->set_output_length( 15 ).
*VSP division code
r_column = r_columns->get_column( text-014 ).
r_column->set_long_text( text-002 ).
r_column->set_medium_text( text-002 ).
r_column->set_output_length( 20 ).
*Family
r_column = r_columns->get_column( text-016 ).
r_column->set_long_text( text-004 ).
r_column->set_medium_text( text-004 ).
r_column->set_output_length( 10 ).
*Single
r_column = r_columns->get_column( text-017 ).
r_column->set_long_text( text-005 ).
r_column->set_medium_text( text-005 ).
r_column->set_output_length( 10 ).
*Employee + 1
r_column = r_columns->get_column( text-018 ).
r_column->set_long_text( text-006 ).
r_column->set_medium_text( text-006 ).
r_column->set_output_length( 15 ).
*Unknown
r_column = r_columns->get_column( text-019 ).
r_column->set_long_text( text-007 ).
r_column->set_medium_text( text-007 ).
r_column->set_output_length( 10 ).
*Amount
r_column = r_columns->get_column( text-020 ).
r_column->set_long_text( text-008 ).
r_column->set_medium_text( text-008 ).
r_column->set_output_length( 10 ).
r_columns = r_table->get_columns( level = 2 ).
*PA
r_column = r_columns->get_column( text-013 ).
r_column->set_long_text( text-001 ).
r_column->set_medium_text( text-001 ).
r_column->set_output_length( 15 ).
*VSP division code
r_column = r_columns->get_column( text-014 ).
r_column->set_long_text( text-002 ).
r_column->set_medium_text( text-002 ).
r_column->set_output_length( 20 ).
*Employee Number
r_column = r_columns->get_column( text-022 ).
r_column->set_long_text( text-011 ).
r_column->set_medium_text( text-011 ).
r_column->set_output_length( 20 ).
*Employee Name
r_column = r_columns->get_column( text-015 ).
r_column->set_long_text( text-003 ).
r_column->set_medium_text( text-003 ).
r_column->set_output_length( 20 ).
*User Id
r_column = r_columns->get_column( text-023 ).
r_column->set_long_text( text-010 ).
r_column->set_medium_text( text-010 ).
r_column->set_output_length( 15 ).
*Family
r_column = r_columns->get_column( text-016 ).
r_column->set_long_text( text-004 ).
r_column->set_medium_text( text-004 ).
r_column->set_output_length( 10 ).
*Single
r_column = r_columns->get_column( text-017 ).
r_column->set_long_text( text-005 ).
r_column->set_medium_text( text-005 ).
r_column->set_output_length( 10 ).
*Employee + 1
r_column = r_columns->get_column( text-018 ).
r_column->set_long_text( text-006 ).
r_column->set_medium_text( text-006 ).
r_column->set_output_length( 15 ).
*Unknown
r_column = r_columns->get_column( text-019 ).
r_column->set_long_text( text-007 ).
r_column->set_medium_text( text-007 ).
r_column->set_output_length( 10 ).
*Amount
r_column = r_columns->get_column( text-020 ).
r_column->set_long_text( text-008 ).
r_column->set_medium_text( text-008 ).
r_column->set_output_length( 10 ).
*Adding arregation colunms
lr_aggregations = r_table->get_aggregations( 1 ).
lr_aggregation = lr_aggregations->add_aggregation( text-016 ).
lr_aggregation = lr_aggregations->add_aggregation( text-017 ).
lr_aggregation = lr_aggregations->add_aggregation( text-018 ).
lr_aggregation = lr_aggregations->add_aggregation( text-019 ).
lr_aggregation = lr_aggregations->add_aggregation( text-020 ).
r_table->display( ).
CATCH cx_salv_data_error INTO lr_data_error.
lv_message = lr_data_error->get_text( ).
CATCH cx_salv_not_found INTO lr_not_found.
lv_message = lr_not_found->get_text( ).
CATCH cx_salv_existing INTO lr_existing.
lv_message = lr_existing->get_text( ).
ENDTRY.
03-21-2011 3:54 AM