βš™οΈSAPTools
πŸ“‹

ABAP Report Template Generator

ABAPNew

Generate complete ABAP report program templates with selection screen, ALV output, authority checks, and message handling. Configurable for classic and modern ABAP.

Generated ABAP Report

REPORT ZMY_REPORT
  TITLE 'My ABAP Report'.

*----------------------------------------------------------------------*
* Type definitions
*----------------------------------------------------------------------*
TYPES: BEGIN OF ty_data,
         " TODO: Add fields matching VBAK
         mandt TYPE mandt,
       END OF ty_data.

*----------------------------------------------------------------------*
* Global data declarations
*----------------------------------------------------------------------*
DATA: lt_data TYPE TABLE OF ty_data,
      ls_data TYPE ty_data.

*----------------------------------------------------------------------*
* Selection Screen
*----------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.
  SELECT-OPTIONS: s_bukrs FOR vbak-mandt.
  PARAMETERS:     p_maxrow TYPE i DEFAULT 1000.
SELECTION-SCREEN END OF BLOCK b1.

*----------------------------------------------------------------------*
* Authorization Check
*----------------------------------------------------------------------*
AUTHORITY-CHECK OBJECT 'S_TCODE'
  ID 'TCD' FIELD 'ZMY_REPORT'.
IF sy-subrc <> 0.
  MESSAGE e001(00) WITH 'Unauthorized access'.
  LEAVE PROGRAM.
ENDIF.

*----------------------------------------------------------------------*
* INITIALIZATION
*----------------------------------------------------------------------*
INITIALIZATION.
  " TODO: Set default values for selection screen

*----------------------------------------------------------------------*
* START-OF-SELECTION
*----------------------------------------------------------------------*
START-OF-SELECTION.

  " Fetch data
  SELECT *
    FROM VBAK
    INTO TABLE @lt_data
    WHERE mandt IN @s_bukrs
    UP TO @p_maxrow ROWS.

  IF sy-subrc <> 0.
    MESSAGE s001(00) WITH 'No data found'.
    RETURN.
  ENDIF.

*----------------------------------------------------------------------*
* END-OF-SELECTION
*----------------------------------------------------------------------*
END-OF-SELECTION.

  DATA lo_salv TYPE REF TO cl_salv_table.

  TRY.
      cl_salv_table=>factory(
        IMPORTING r_salv_table = lo_salv
        CHANGING  t_table      = lt_data ).

      lo_salv->get_columns( )->set_optimize( abap_true ).
      lo_salv->get_display_settings( )->set_list_header( 'My ABAP Report' ).
      lo_salv->get_functions( )->set_all( abap_true ).
      lo_salv->display( ).
    CATCH cx_salv_msg INTO DATA(lx_salv).
      MESSAGE lx_salv->get_text( ) TYPE 'E'.
  ENDTRY.

Advertisement

Frequently Asked Questions

What is the difference between a REPORT and a PROGRAM in ABAP?

REPORT is an ABAP program type (type 1) intended for executable programs with a selection screen and ALV output. PROGRAM is a more generic statement. In practice, executable ABAP programs start with REPORT or PROGRAM interchangeably, but REPORT is the convention for user-executable reports.

Should I use ALV GRID or ALV LIST for new reports?

Use ALV Grid (CL_GUI_ALV_GRID or SALV_TABLE) for new development. It supports column freezing, sort/filter, export to Excel, and in-place editing. Classic ALV LIST (REUSE_ALV_LIST_DISPLAY) is outdated but still used in legacy systems.

How do I add an authority check to my ABAP report?

Use AUTHORITY-CHECK OBJECT 'S_TCODE' ID 'TCD' FIELD 'YT01'. If sy-subrc <> 0, call MESSAGE E...(). Add authority checks at report start and before any sensitive data access. The generated template includes a placeholder for authority checks.