Export data from SAP Commerce to CSV format with customizable fields and filters
Data Export to CSV
beginner low risk Utilities
Description
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
BooleanInclude column headers in CSV
Default: true
fieldList
CollectionList 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
tools.groovyScriptLibrary.ui.title
tools.groovyScriptLibrary.ui.subtitle