Skip to content

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