Factory method ALV sap abap
DATA
lo_salv TYPE REF TO cl_salv_table,
lo_functions TYPE REF TO cl_salv_functions_list,
lo_columns TYPE REF TO cl_salv_columns_table,
lo_columns2 TYPE REF TO cl_salv_columns_table,
lo_column TYPE REF TO cl_salv_column_table,
l_short TYPE scrtext_s,
l_long TYPE scrtext_l,
l_medium TYPE scrtext_m,
lo_display TYPE REF TO cl_salv_display_settings,
l_header_text TYPE lvc_title,
not_found TYPE REF TO cx_salv_not_found,
data_error TYPE REF TO cx_salv_data_error,
l_string TYPE string,
text TYPE string,
oref TYPE REF TO cx_root.
CONSTANTS : lc_info TYPE c VALUE 'I',
wc_error TYPE c VALUE wc_e.
CLEAR : lo_salv , lo_functions.
IF w_alv IS NOT INITIAL.
* Use factory method
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = lo_salv
CHANGING
t_table = w_alv.
CATCH cx_salv_msg INTO oref.
text = oref->get_text( ).
MESSAGE text TYPE 'I'.
ENDTRY.
IF text IS NOT INITIAL.
WRITE: text.
ENDIF.
IF lo_salv IS INITIAL.
MESSAGE text-002 TYPE lc_info DISPLAY LIKE wc_error.
ENDIF.
* Set column headings
PERFORM column_headings USING lo_salv.
TRY.
"Set all functions
lo_functions = lo_salv->get_functions( ).
lo_functions->set_all( abap_true ).
"Optimize columns value to display the header data
lo_display = lo_salv->get_display_settings( ).
lo_display->set_list_header( l_header_text ).
"Optimize Output of ALV
lo_columns = lo_salv->get_columns( ).
lo_columns->set_optimize( 'X' ).
TRY.
"Assign lights to alv
* DATA: ls_ddic_ref TYPE salv_s_ddic_reference.
lo_columns->set_exception_column( value = 'LIGHTS' ).
lo_column ?= lo_columns->get_column('LIGHTS').
l_short = text-017.
lo_column->set_short_text( l_short ).
l_medium = text-017.
lo_column->set_medium_text( l_medium ).
l_long = text-017.
lo_column->set_long_text( l_long ).
CATCH cx_salv_data_error INTO data_error.
l_string = data_error->get_text( ).
MESSAGE l_string TYPE 'I'.
ENDTRY.
"Get list of columns
lo_columns2 = lo_salv->get_columns( ).
lo_columns2->set_optimize( ).
lo_columns2->set_key_fixation( abap_true ).
CATCH cx_salv_not_found INTO not_found.
l_string = not_found->get_text( ).
MESSAGE l_string TYPE 'I'.
ENDTRY.
PERFORM set_color.
* *Set the color column to ALV
TRY.
lo_columns2->set_color_column('COLOR').
CATCH cx_salv_data_error INTO data_error.
l_string = data_error->get_text( ).
MESSAGE l_string TYPE 'I'.
ENDTRY.
* Display the output
TRY.
lo_salv->display( ).
CATCH cx_salv_not_found.
text = oref->get_text( ).
MESSAGE text TYPE 'I'.
ENDTRY.
IF text IS NOT INITIAL.
WRITE: text.
ENDIF.
ELSE.
MESSAGE text-024 TYPE 'I'.
ENDIF.
ENDFORM.
Perform set_column_heading.
DATA
: lo_salv TYPE REF TO cl_salv_table,
lo_columns TYPE REF TO cl_salv_columns,
lo_column TYPE REF TO cl_salv_column_table,
l_short TYPE scrtext_s,
l_long TYPE scrtext_l,
l_medium TYPE scrtext_m,
not_found TYPE REF TO cx_salv_not_found,
l_string TYPE string.
lo_salv = p_lo_salv.
TRY.
"Set Column Headers
lo_columns = lo_salv->get_columns( ).
lo_column ?= lo_columns->get_column('LIGHTS').
l_short = text-017.
lo_column->set_short_text( l_short ).
l_medium = text-017.
lo_column->set_medium_text( l_medium ).
l_long = text-017.
lo_column->set_long_text( l_long ).
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('DATE').
l_short = text-018.
lo_column->set_short_text( l_short ).
l_medium = text-018.
lo_column->set_medium_text( l_medium ).
l_long = text-018.
lo_column->set_long_text( l_long ).
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('SAP_QUAN1').
l_short = text-005.
lo_column->set_short_text( l_short ).
l_medium = text-005.
lo_column->set_medium_text( l_medium ).
l_long = text-005.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('TOTAL_QUAN1').
l_short = text-004.
lo_column->set_short_text( l_short ).
l_medium = text-004.
lo_column->set_medium_text( l_medium ).
l_long = text-004.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('ERROR').
l_short = text-006.
lo_column->set_short_text( l_short ).
l_medium = text-006.
lo_column->set_medium_text( l_medium ).
l_long = text-006.
lo_column->set_long_text( l_long ).
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('QUAN_DIFF1').
l_short = text-007.
lo_column->set_short_text( l_short ).
l_medium = text-007.
lo_column->set_medium_text( l_medium ).
l_long = text-007.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('MAKTX').
l_short = text-021.
lo_column->set_short_text( l_short ).
l_medium = text-023.
lo_column->set_medium_text( l_medium ).
l_long = text-023.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('MEINS').
l_short = text-019.
lo_column->set_short_text( l_short ).
l_medium = text-019.
lo_column->set_medium_text( l_medium ).
l_long = text-019.
lo_column->set_long_text( l_long ).
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('SAP_QUAN2').
l_short = text-027.
lo_column->set_short_text( l_short ).
l_medium = text-027.
lo_column->set_medium_text( l_medium ).
l_long = text-027.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('TOTAL_QUAN2').
l_short = text-026.
lo_column->set_short_text( l_short ).
l_medium = text-026.
lo_column->set_medium_text( l_medium ).
l_long = text-026.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('QUAN_DIFF2').
l_short = text-030.
lo_column->set_short_text( l_short ).
l_medium = text-030.
lo_column->set_medium_text( l_medium ).
l_long = text-030.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('SAP_QUAN3').
l_short = text-029.
lo_column->set_short_text( l_short ).
l_medium = text-029.
lo_column->set_medium_text( l_medium ).
l_long = text-029.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('TOTAL_QUAN3').
l_short = text-028.
lo_column->set_short_text( l_short ).
l_medium = text-028.
lo_column->set_medium_text( l_medium ).
l_long = text-028.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('QUAN_DIFF3').
l_short = text-031.
lo_column->set_short_text( l_short ).
l_medium = text-031.
lo_column->set_medium_text( l_medium ).
l_long = text-031.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('MATNR').
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: lo_column.
lo_column ?= lo_columns->get_column('MAKTX').
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: lo_column.
lo_column ?= lo_columns->get_column('WERKS').
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: lo_column.
lo_column ?= lo_columns->get_column('SLOC').
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: lo_column.
CATCH cx_salv_not_found INTO not_found.
l_string = not_found->get_text( ).
MESSAGE l_string TYPE 'I'.
ENDTRY.
Endform.
lo_salv TYPE REF TO cl_salv_table,
lo_functions TYPE REF TO cl_salv_functions_list,
lo_columns TYPE REF TO cl_salv_columns_table,
lo_columns2 TYPE REF TO cl_salv_columns_table,
lo_column TYPE REF TO cl_salv_column_table,
l_short TYPE scrtext_s,
l_long TYPE scrtext_l,
l_medium TYPE scrtext_m,
lo_display TYPE REF TO cl_salv_display_settings,
l_header_text TYPE lvc_title,
not_found TYPE REF TO cx_salv_not_found,
data_error TYPE REF TO cx_salv_data_error,
l_string TYPE string,
text TYPE string,
oref TYPE REF TO cx_root.
CONSTANTS : lc_info TYPE c VALUE 'I',
wc_error TYPE c VALUE wc_e.
CLEAR : lo_salv , lo_functions.
IF w_alv IS NOT INITIAL.
* Use factory method
TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = lo_salv
CHANGING
t_table = w_alv.
CATCH cx_salv_msg INTO oref.
text = oref->get_text( ).
MESSAGE text TYPE 'I'.
ENDTRY.
IF text IS NOT INITIAL.
WRITE: text.
ENDIF.
IF lo_salv IS INITIAL.
MESSAGE text-002 TYPE lc_info DISPLAY LIKE wc_error.
ENDIF.
* Set column headings
PERFORM column_headings USING lo_salv.
TRY.
"Set all functions
lo_functions = lo_salv->get_functions( ).
lo_functions->set_all( abap_true ).
"Optimize columns value to display the header data
lo_display = lo_salv->get_display_settings( ).
lo_display->set_list_header( l_header_text ).
"Optimize Output of ALV
lo_columns = lo_salv->get_columns( ).
lo_columns->set_optimize( 'X' ).
TRY.
"Assign lights to alv
* DATA: ls_ddic_ref TYPE salv_s_ddic_reference.
lo_columns->set_exception_column( value = 'LIGHTS' ).
lo_column ?= lo_columns->get_column('LIGHTS').
l_short = text-017.
lo_column->set_short_text( l_short ).
l_medium = text-017.
lo_column->set_medium_text( l_medium ).
l_long = text-017.
lo_column->set_long_text( l_long ).
CATCH cx_salv_data_error INTO data_error.
l_string = data_error->get_text( ).
MESSAGE l_string TYPE 'I'.
ENDTRY.
"Get list of columns
lo_columns2 = lo_salv->get_columns( ).
lo_columns2->set_optimize( ).
lo_columns2->set_key_fixation( abap_true ).
CATCH cx_salv_not_found INTO not_found.
l_string = not_found->get_text( ).
MESSAGE l_string TYPE 'I'.
ENDTRY.
PERFORM set_color.
* *Set the color column to ALV
TRY.
lo_columns2->set_color_column('COLOR').
CATCH cx_salv_data_error INTO data_error.
l_string = data_error->get_text( ).
MESSAGE l_string TYPE 'I'.
ENDTRY.
* Display the output
TRY.
lo_salv->display( ).
CATCH cx_salv_not_found.
text = oref->get_text( ).
MESSAGE text TYPE 'I'.
ENDTRY.
IF text IS NOT INITIAL.
WRITE: text.
ENDIF.
ELSE.
MESSAGE text-024 TYPE 'I'.
ENDIF.
ENDFORM.
Perform set_column_heading.
DATA
: lo_salv TYPE REF TO cl_salv_table,
lo_columns TYPE REF TO cl_salv_columns,
lo_column TYPE REF TO cl_salv_column_table,
l_short TYPE scrtext_s,
l_long TYPE scrtext_l,
l_medium TYPE scrtext_m,
not_found TYPE REF TO cx_salv_not_found,
l_string TYPE string.
lo_salv = p_lo_salv.
TRY.
"Set Column Headers
lo_columns = lo_salv->get_columns( ).
lo_column ?= lo_columns->get_column('LIGHTS').
l_short = text-017.
lo_column->set_short_text( l_short ).
l_medium = text-017.
lo_column->set_medium_text( l_medium ).
l_long = text-017.
lo_column->set_long_text( l_long ).
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('DATE').
l_short = text-018.
lo_column->set_short_text( l_short ).
l_medium = text-018.
lo_column->set_medium_text( l_medium ).
l_long = text-018.
lo_column->set_long_text( l_long ).
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('SAP_QUAN1').
l_short = text-005.
lo_column->set_short_text( l_short ).
l_medium = text-005.
lo_column->set_medium_text( l_medium ).
l_long = text-005.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('TOTAL_QUAN1').
l_short = text-004.
lo_column->set_short_text( l_short ).
l_medium = text-004.
lo_column->set_medium_text( l_medium ).
l_long = text-004.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('ERROR').
l_short = text-006.
lo_column->set_short_text( l_short ).
l_medium = text-006.
lo_column->set_medium_text( l_medium ).
l_long = text-006.
lo_column->set_long_text( l_long ).
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('QUAN_DIFF1').
l_short = text-007.
lo_column->set_short_text( l_short ).
l_medium = text-007.
lo_column->set_medium_text( l_medium ).
l_long = text-007.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('MAKTX').
l_short = text-021.
lo_column->set_short_text( l_short ).
l_medium = text-023.
lo_column->set_medium_text( l_medium ).
l_long = text-023.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('MEINS').
l_short = text-019.
lo_column->set_short_text( l_short ).
l_medium = text-019.
lo_column->set_medium_text( l_medium ).
l_long = text-019.
lo_column->set_long_text( l_long ).
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('SAP_QUAN2').
l_short = text-027.
lo_column->set_short_text( l_short ).
l_medium = text-027.
lo_column->set_medium_text( l_medium ).
l_long = text-027.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('TOTAL_QUAN2').
l_short = text-026.
lo_column->set_short_text( l_short ).
l_medium = text-026.
lo_column->set_medium_text( l_medium ).
l_long = text-026.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('QUAN_DIFF2').
l_short = text-030.
lo_column->set_short_text( l_short ).
l_medium = text-030.
lo_column->set_medium_text( l_medium ).
l_long = text-030.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('SAP_QUAN3').
l_short = text-029.
lo_column->set_short_text( l_short ).
l_medium = text-029.
lo_column->set_medium_text( l_medium ).
l_long = text-029.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('TOTAL_QUAN3').
l_short = text-028.
lo_column->set_short_text( l_short ).
l_medium = text-028.
lo_column->set_medium_text( l_medium ).
l_long = text-028.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('QUAN_DIFF3').
l_short = text-031.
lo_column->set_short_text( l_short ).
l_medium = text-031.
lo_column->set_medium_text( l_medium ).
l_long = text-031.
lo_column->set_long_text( l_long ).
CLEAR: l_short, l_medium, l_long, lo_column.
lo_column ?= lo_columns->get_column('MATNR').
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: lo_column.
lo_column ?= lo_columns->get_column('MAKTX').
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: lo_column.
lo_column ?= lo_columns->get_column('WERKS').
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: lo_column.
lo_column ?= lo_columns->get_column('SLOC').
* Set the Key Column
CALL METHOD lo_column->set_key
EXPORTING
value = if_salv_c_bool_sap=>true.
* fix the Key column
lo_column->set_key_presence_required( ).
CLEAR: lo_column.
CATCH cx_salv_not_found INTO not_found.
l_string = not_found->get_text( ).
MESSAGE l_string TYPE 'I'.
ENDTRY.
Endform.
Comments
Post a Comment