Common Integration Patterns
Real-world examples of integrating abap2xlsx into various SAP scenarios.
ALV Grid Integration
Converting ALV to Excel
abap
" Standard ALV to Excel conversion
DATA: lo_salv TYPE REF TO cl_salv_table,
lo_excel TYPE REF TO zcl_excel,
lo_converter TYPE REF TO zcl_excel_converter.
" Create SALV from internal table
cl_salv_table=>factory(
IMPORTING r_salv_table = lo_salv
CHANGING t_table = lt_data
).
" Convert to Excel
CREATE OBJECT lo_converter.
lo_excel = lo_converter->convert_salv_to_excel( lo_salv ).
" Add custom formatting
DATA(lo_worksheet) = lo_excel->get_active_worksheet( ).
lo_worksheet->set_title( 'ALV Export' ).
Custom ALV Enhancement
abap
" Enhanced ALV with custom Excel features
CLASS lcl_alv_handler DEFINITION.
PUBLIC SECTION.
METHODS: handle_toolbar FOR EVENT added_function OF cl_salv_events
IMPORTING e_salv_function,
export_to_excel.
ENDCLASS.
CLASS lcl_alv_handler IMPLEMENTATION.
METHOD handle_toolbar.
CASE e_salv_function.
WHEN 'EXCEL_EXPORT'.
export_to_excel( ).
ENDCASE.
ENDMETHOD.
METHOD export_to_excel.
" Custom Excel export with formatting
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet.
CREATE OBJECT lo_excel.
lo_worksheet = lo_excel->add_new_worksheet( ).
" Add company logo
DATA(lo_drawing) = lo_excel->add_new_drawing( ).
lo_drawing->set_position( ip_from_row = 1 ip_from_col = 1 ).
" Export data with custom styling
" Implementation details...
ENDMETHOD.
ENDCLASS.
Report Integration
Background Job Processing
abap
REPORT zexcel_background_job.
PARAMETERS: p_file TYPE string DEFAULT 'monthly_report.xlsx'.
START-OF-SELECTION.
" Generate large Excel report in background
PERFORM generate_excel_report USING p_file.
FORM generate_excel_report USING iv_filename TYPE string.
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet,
lo_writer TYPE REF TO zcl_excel_writer_huge_file.
" Use huge file writer for large datasets
CREATE OBJECT lo_excel.
CREATE OBJECT lo_writer.
" Process data in chunks to manage memory
DATA: lv_chunk_size TYPE i VALUE 10000,
lv_current_row TYPE i VALUE 1.
" Implementation with progress tracking
" ...
ENDFORM.
Interactive Report with Excel Export
abap
REPORT zinteractive_excel.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_date TYPE sy-datum DEFAULT sy-datum.
SELECT-OPTIONS: s_bukrs FOR t001-bukrs.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-002.
PARAMETERS: p_excel AS CHECKBOX DEFAULT 'X',
p_format TYPE c LENGTH 10 DEFAULT 'XLSX'.
SELECTION-SCREEN END OF BLOCK b2.
START-OF-SELECTION.
" Fetch data based on selection criteria
PERFORM fetch_data.
IF p_excel = 'X'.
PERFORM export_to_excel.
ELSE.
PERFORM display_alv.
ENDIF.
Web Service Integration
REST API with Excel Response
abap
CLASS zcl_rest_excel_service DEFINITION.
PUBLIC SECTION.
INTERFACES: if_rest_resource.
METHODS: get_excel_report
IMPORTING iv_report_type TYPE string
RETURNING VALUE(rv_excel) TYPE xstring.
ENDCLASS.
CLASS zcl_rest_excel_service IMPLEMENTATION.
METHOD if_rest_resource~post.
" Extract parameters from request
DATA(lv_report_type) = mo_entity->get_string_data( ).
" Generate Excel
DATA(lv_excel_data) = get_excel_report( lv_report_type ).
" Set response headers
mo_entity->set_content_type( 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet' ).
mo_entity->set_header_field(
name = 'Content-Disposition'
value = |attachment; filename="report.xlsx"|
).
" Return Excel data
mo_entity->set_binary_data( lv_excel_data ).
ENDMETHOD.
METHOD get_excel_report.
" Generate Excel based on report type
DATA: lo_excel TYPE REF TO zcl_excel,
lo_writer TYPE REF TO zif_excel_writer.
CREATE OBJECT lo_excel.
" Build report based on iv_report_type
" ...
CREATE OBJECT lo_writer TYPE zcl_excel_writer_2007.
rv_excel = lo_writer->write_file( lo_excel ).
ENDMETHOD.
ENDCLASS.
Workflow Integration
Excel Generation in Workflow
abap
" Workflow method for Excel generation
CLASS zcl_workflow_excel DEFINITION.
PUBLIC SECTION.
INTERFACES: if_workflow.
METHODS: generate_approval_report
IMPORTING iv_workitem TYPE string
RETURNING VALUE(rv_attachment) TYPE xstring.
ENDCLASS.
CLASS zcl_workflow_excel IMPLEMENTATION.
METHOD generate_approval_report.
" Fetch workflow data
DATA: lt_approval_data TYPE TABLE OF zworkflow_data.
" Generate Excel with approval summary
DATA: lo_excel TYPE REF TO zcl_excel,
lo_worksheet TYPE REF TO zcl_excel_worksheet.
CREATE OBJECT lo_excel.
lo_worksheet = lo_excel->add_new_worksheet( ).
lo_worksheet->set_title( 'Approval Summary' ).
" Add workflow-specific formatting
" Add approval status indicators
" Include approval history
" Return as attachment
DATA: lo_writer TYPE REF TO zif_excel_writer.
CREATE OBJECT lo_writer TYPE zcl_excel_writer_2007.
rv_attachment = lo_writer->write_file( lo_excel ).
ENDMETHOD.
ENDCLASS.
Batch Processing Patterns
Mass Data Export
abap
" Efficient mass data processing
CLASS zcl_mass_excel_export DEFINITION.
PUBLIC SECTION.
METHODS: export_large_dataset
IMPORTING it_data TYPE ANY TABLE
RETURNING VALUE(rv_excel) TYPE xstring.
PRIVATE SECTION.
CONSTANTS: c_chunk_size TYPE i VALUE 50000.
ENDCLASS.
CLASS zcl_mass_excel_export IMPLEMENTATION.
METHOD export_large_dataset.
DATA: lo_excel TYPE REF TO zcl_excel,
lo_writer TYPE REF