#1
This guide shows how to build reporting APIs with Spring Boot and SAP HANA Express to fetch aggregated and summarized data.

1. Create Sales Table in HANA

CREATE COLUMN TABLE SALES (
    ID INTEGER PRIMARY KEY,
    PRODUCT NVARCHAR(100),
    AMOUNT DECIMAL(10,2),
    REGION NVARCHAR(50),
    SALE_DATE TIMESTAMP
);
Insert some data for testing:
INSERT INTO SALES VALUES (1, 'Laptop', 1200, 'US', CURRENT_TIMESTAMP);
INSERT INTO SALES VALUES (2, 'Phone', 800, 'EU', CURRENT_TIMESTAMP);

2. Configure Spring Boot

application.properties:
spring.datasource.url=jdbc:sap://localhost:39015/?databaseName=HXE
spring.datasource.username=SYSTEM
spring.datasource.password=YourPassword
spring.datasource.driver-class-name=com.sap.db.jdbc.Driver

3. Repository for Reporting Queries

import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Repository;
import java.util.List;
import java.util.Map;

@Repository
public class ReportingRepository {
    private final JdbcTemplate jdbc;

    public ReportingRepository(JdbcTemplate jdbc) {
        this.jdbc = jdbc;
    }

    public List<Map<String, Object>> salesByRegion() {
        String sql = "SELECT REGION, SUM(AMOUNT) AS TOTAL FROM SALES GROUP BY REGION";
        return jdbc.queryForList(sql);
    }

    public List<Map<String, Object>> salesByProduct() {
        String sql = "SELECT PRODUCT, SUM(AMOUNT) AS TOTAL FROM SALES GROUP BY PRODUCT";
        return jdbc.queryForList(sql);
    }
}

4. Expose REST API

import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;

@RestController
@RequestMapping("/reports")
public class ReportingController {
    private final ReportingRepository repo;

    public ReportingController(ReportingRepository repo) {
        this.repo = repo;
    }

    @GetMapping("/region")
    public List<Map<String, Object>> salesByRegion() {
        return repo.salesByRegion();
    }

    @GetMapping("/product")
    public List<Map<String, Object>> salesByProduct() {
        return repo.salesByProduct();
    }
}

5. Run and Test

Run Spring Boot app:
mvn spring-boot:run
Call APIs:
GET /reports/region   → [{ "REGION": "US", "TOTAL": 1200 }, { "REGION": "EU", "TOTAL": 800 }]
GET /reports/product  → [{ "PRODUCT": "Laptop", "TOTAL": 1200 }, { "PRODUCT": "Phone", "TOTAL": 800 }]

image quote pre code