Data Export to CSV

beginner low risk Utilities

Description

Export data from SAP Commerce to CSV format with customizable fields and filters

Prerequisites

  • Data access permissions
  • CSV export format specification
  • File system write access

Parameters

dataType

String*

Type of data to export: users, products, orders, or custom

outputPath

String*

File path for CSV output

includeHeaders

Boolean

Include column headers in CSV

Default: true

fieldList

Collection

List of fields to include in export

Script Code

import de.hybris.platform.servicelayer.search.FlexibleSearchService
import java.io.FileWriter
import java.io.IOException

def dataType = parameters.dataType
def outputPath = parameters.outputPath
def includeHeaders = parameters.includeHeaders ?: true
def fieldList = parameters.fieldList

def errors = []
def exportedCount = 0

try {
    def query = ""
    def headers = []
    
    switch (dataType) {
        case 'users':
            query = "SELECT {pk} FROM {User}"
            headers = ['uid', 'name', 'email', 'creationtime']
            break
        case 'products':
            query = "SELECT {pk} FROM {Product}"
            headers = ['code', 'name', 'description', 'creationtime']
            break
        case 'orders':
            query = "SELECT {pk} FROM {Order}"
            headers = ['code', 'user', 'totalprice', 'creationtime']
            break
        default:
            errors.add("Unsupported data type: $dataType")
            return
    }
    
    // Use custom field list if provided
    if (fieldList && !fieldList.isEmpty()) {
        headers = fieldList
    }
    
    def results = flexibleSearchService.search(query).result
    
    def fileWriter = new FileWriter(outputPath)
    
    try {
        // Write headers if requested
        if (includeHeaders) {
            fileWriter.write(headers.join(','))
            fileWriter.write('\n')
        }
        
        // Write data rows
        results.each { item ->
            try {
                def row = []
                headers.each { field ->
                    def value = getFieldValue(item, field)
                    // Escape CSV values
                    if (value && value.toString().contains(',')) {
                        value = '"' + value.toString().replace('"', '""') + '"'
                    }
                    row.add(value ?: '')
                }
                
                fileWriter.write(row.join(','))
                fileWriter.write('\n')
                exportedCount++
                
            } catch (Exception e) {
                errors.add("Error processing item $item.pk: $e.message")
            }
        }
        
    } finally {
        fileWriter.close()
    }
    
    println "Exported $exportedCount records to $outputPath"
    if (errors) {
        println "Errors encountered:"
        errors.each { println "  - $it" }
    }
    
} catch (Exception e) {
    errors.add("Data export failed: $e.message")
}

def getFieldValue(item, fieldName) {
    try {
        def field = item.getClass().getDeclaredField(fieldName)
        field.setAccessible(true)
        return field.get(item)
    } catch (Exception e) {
        // Try getter method
        try {
            def methodName = 'get' + fieldName.capitalize()
            def method = item.getClass().getMethod(methodName)
            return method.invoke(item)
        } catch (Exception ex) {
            return null
        }
    }
}

Script Information

Author:SAP Commerce Team
Execution Time:1-10 minutes
Rating:4.2/5
Downloads:850
Last Updated:2024-01-11
Version:1.1.0

Tags

export csv data utility file