6 Columns with Active Background
6 Columns with Active Background
Active List Item Background

24CONVERSION2511 – Data Transformation for File Processing

Data transformation for file processing in the context of programming refers to the process of converting data from one format or structure to another, often to make it more suitable for a specific task such as file input/output, data migration or data integration.

1.Data Transformation Types

Format Conversion

  • Converting data between different file formats (e.g., CSV to XML, JSON to CSV).
  • Common when exchanging data between systems or reading/writing to different file formats.
  • Example in ABAP: Converting a CSV file into an internal table or converting internal table data into JSON.

Data Cleansing

  • Cleaning or standardizing data (e.g., trimming spaces, correcting formats, handling missing values).
  • Ensures data quality before further processing or storage.3. Data Aggregation
  • Summarizing data from raw files into meaningful statistics or combined records.
  • Useful in reports or data consolidation.

Data Mapping

  • Converting data from one schema or structure to another.
  • Example: Mapping fields from a CSV file to a database structure.
  1. Encoding/Decoding
  • Changing character encoding (e.g., converting from UTF-8 to ASCII or vice versa).
  • Necessary for compatibility between systems that use different encoding standards.

2. ABAP File Processing Example

  • In ABAP, file processing and data transformation typically involve reading files into an internal table, transforming the data as required, and then either saving it in the database or writing it to another file.

Example: Reading and Transforming a CSV File

Imagine you need to read a CSV file, clean and transform the data, and then save it into an internal table.

2.1. Reading the File

You can use the OPEN DATASET command in ABAP to read a CSV file.

DATA : file_name TYPE string VALUE ‘/path/to/file.csv’,

      lv_line   TYPE string,

      itab      TYPE TABLE OF string.

OPEN DATASET file_name FOR INPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc = 0.

  DO.

  READ DATASET file_name INTO lv_line.

    IF sy-subrc <> 0.

      EXIT.

    ENDIF.

    APPEND lv_line TO itab.

  ENDDO.

  CLOSE DATASET file_name.

ENDIF.

 

2.2. Data Cleansing and Transformation

Once the data is in the internal table itab, you can process it. For instance, you can split the CSV lines and map them to a structured internal table.

DATA : lt_csv TYPE TABLE OF string,

      lt_employee TYPE TABLE OF zemployee,   ” Assume zemployee is a custom structure for employee data

      lv_field TYPE string,

      wa_employee TYPE zemployee.

 

LOOP AT itab INTO lv_line.

  SPLIT lv_line AT ‘,’ INTO TABLE lt_csv.

 

  ” Data transformation – Mapping fields to internal table structure

  CLEAR wa_employee.

  READ TABLE lt_csv INTO lv_field INDEX 1. wa_employee-emp_id = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 2. wa_employee-name = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 3. wa_employee-salary = lv_field.

  ” Data cleansing – Trim spaces

  wa_employee-name = CONDENSE wa_employee-name.

  ” Insert into internal table

  APPEND wa_employee TO lt_employee.

ENDLOOP.

 

2.3 Data Cleansing and Transformation

Once the data is in the internal table itab, you can process it. For instance, you can split the CSV lines and map them to a structured internal table.

DATA : lt_csv TYPE TABLE OF string,

      lt_employee TYPE TABLE OF zemployee,   ” Assume zemployee is a custom structure for employee data

      lv_field TYPE string,

      wa_employee TYPE zemployee.

LOOP AT itab INTO lv_line.

  SPLIT lv_line AT ‘,’ INTO TABLE lt_csv.

  ” Data transformation – Mapping fields to internal table structure

  CLEAR wa_employee.

  READ TABLE lt_csv INTO lv_field INDEX 1. wa_employee-emp_id = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 2. wa_employee-name = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 3. wa_employee-salary = lv_field.

  ” Data cleansing – Trim spaces

  wa_employee-name = CONDENSE wa_employee-name.

  ” Insert into internal table

  APPEND wa_employee TO lt_employee.

ENDLOOP.

 

2.4 Data Cleansing and Transformation

Once the data is in the internal table itab, you can process it. For instance, you can split the CSV lines and map them to a structured internal table.

DATA : lt_csv TYPE TABLE OF string,

      lt_employee TYPE TABLE OF zemployee,   ” Assume zemployee is a custom structure for employee data

      lv_field TYPE string,

      wa_employee TYPE zemployee.

LOOP AT itab INTO lv_line.

  SPLIT lv_line AT ‘,’ INTO TABLE lt_csv.

  ” Data transformation – Mapping fields to internal table structure

  CLEAR wa_employee.

  READ TABLE lt_csv INTO lv_field INDEX 1. wa_employee-emp_id = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 2. wa_employee-name = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 3. wa_employee-salary = lv_field.

  ” Data cleansing – Trim spaces

  wa_employee-name = CONDENSE wa_employee-name.

  ” Insert into internal table

  APPEND wa_employee TO lt_employee.

ENDLOOP.

2.5  Writing the Transformed Data to a File

You can also write the transformed data to another file.

DATA : output_file TYPE string VALUE ‘/path/to/output.csv’,

      lv_output_line TYPE string.

OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

LOOP AT lt_employee INTO wa_employee.

  CONCATENATE wa_employee-emp_id

              wa_employee-name

              wa_employee-salary INTO lv_output_line SEPARATED BY ‘,’.

  TRANSFER lv_output_line TO output_file.

ENDLOOP.

CLOSE DATASET output_file.

 

3. Data Transformation Techniques in JavaScript (Client-Side)

For frontend applications (like the Employee Management System you are building), you might need to process files uploaded by users or data received from APIs.

Example: Reading and Transforming a CSV File in JavaScript

Here’s how you can read a CSV file and transform it using JavaScript (e.g., in the browser).

3.1. Reading the CSV File

You can use the File API to read a file uploaded by a user.

<input type=”file” id=”fileInput”>

<script>

  document.getElementById(‘fileInput’).addEventListener(‘change’, function(event) {

    const file = event.target.files[0];

    const reader = new FileReader();

    reader.onload = function(e) {

      const text = e.target.result;

      processCSV(text);

    };

    reader.readAsText(file);

  });

</script>

3.2. Processing the CSV File

Here, you can split the CSV data, transform it, and display or further process it.

function processCSV(data) {

  const lines = data.split(‘\n’);

  const result = [];

 

  lines.forEach(line => {

    const fields = line.split(‘,’);

    const employee = {

      id: fields[0].trim(),

      name: fields[1].trim(),

      salary: parseFloat(fields[2].trim())

    };

    result.push(employee);

  });

 

  console.log(result); // Transformed data

}

3.3. Writing Transformed Data to a File (Browser-side)

If you need to download the transformed data, you can create a downloadable CSV file in the browser:

function downloadCSV(data) {

  const csvContent = data.map(e => `${e.id},${e.name},${e.salary}`).join(‘\n’);

  const blob = new Blob([csvContent], { type: ‘text/csv’ });

  const link = document.createElement(‘a’);

  link.href = URL.createObjectURL(blob);

  link.download = ’employees.csv’;

  document.body.appendChild(link);

  link.click();

  document.body.removeChild(link);

}

// Call this function with the transformed data to download the CSV

downloadCSV(transformedData);

Best Practices for Data Transformation

  • Validation: Always validate input data before transformation to avoid errors.
  • Error Handling: Include error handling for file read/write operations.
  • Data Integrity: Ensure that the transformation process does not lose or corrupt data.
  • Performance: Optimize large file processing using chunk-based reading and processing.

Author : Aniket Pawar, 9373518385  

24CONVERSION2511 – Data Transformation for File Processing

Data transformation for file processing in the context of programming refers to the process of converting data from one format or structure to another, often to make it more suitable for a specific task such as file input/output, data migration or data integration.

1.Data Transformation Types

Format Conversion

  • Converting data between different file formats (e.g., CSV to XML, JSON to CSV).
  • Common when exchanging data between systems or reading/writing to different file formats.
  • Example in ABAP: Converting a CSV file into an internal table or converting internal table data into JSON.

Data Cleansing

  • Cleaning or standardizing data (e.g., trimming spaces, correcting formats, handling missing values).
  • Ensures data quality before further processing or storage.3. Data Aggregation
  • Summarizing data from raw files into meaningful statistics or combined records.
  • Useful in reports or data consolidation.

Data Mapping

  • Converting data from one schema or structure to another.
  • Example: Mapping fields from a CSV file to a database structure.
  1. Encoding/Decoding
  • Changing character encoding (e.g., converting from UTF-8 to ASCII or vice versa).
  • Necessary for compatibility between systems that use different encoding standards.

2. ABAP File Processing Example

  • In ABAP, file processing and data transformation typically involve reading files into an internal table, transforming the data as required, and then either saving it in the database or writing it to another file.

Example: Reading and Transforming a CSV File

Imagine you need to read a CSV file, clean and transform the data, and then save it into an internal table.

2.1. Reading the File

You can use the OPEN DATASET command in ABAP to read a CSV file.

DATA : file_name TYPE string VALUE ‘/path/to/file.csv’,

      lv_line   TYPE string,

      itab      TYPE TABLE OF string.

OPEN DATASET file_name FOR INPUT IN TEXT MODE ENCODING DEFAULT.

IF sy-subrc = 0.

  DO.

  READ DATASET file_name INTO lv_line.

    IF sy-subrc <> 0.

      EXIT.

    ENDIF.

    APPEND lv_line TO itab.

  ENDDO.

  CLOSE DATASET file_name.

ENDIF.

 

2.2. Data Cleansing and Transformation

Once the data is in the internal table itab, you can process it. For instance, you can split the CSV lines and map them to a structured internal table.

DATA : lt_csv TYPE TABLE OF string,

      lt_employee TYPE TABLE OF zemployee,   ” Assume zemployee is a custom structure for employee data

      lv_field TYPE string,

      wa_employee TYPE zemployee.

 

LOOP AT itab INTO lv_line.

  SPLIT lv_line AT ‘,’ INTO TABLE lt_csv.

 

  ” Data transformation – Mapping fields to internal table structure

  CLEAR wa_employee.

  READ TABLE lt_csv INTO lv_field INDEX 1. wa_employee-emp_id = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 2. wa_employee-name = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 3. wa_employee-salary = lv_field.

  ” Data cleansing – Trim spaces

  wa_employee-name = CONDENSE wa_employee-name.

  ” Insert into internal table

  APPEND wa_employee TO lt_employee.

ENDLOOP.

 

2.3 Data Cleansing and Transformation

Once the data is in the internal table itab, you can process it. For instance, you can split the CSV lines and map them to a structured internal table.

DATA : lt_csv TYPE TABLE OF string,

      lt_employee TYPE TABLE OF zemployee,   ” Assume zemployee is a custom structure for employee data

      lv_field TYPE string,

      wa_employee TYPE zemployee.

LOOP AT itab INTO lv_line.

  SPLIT lv_line AT ‘,’ INTO TABLE lt_csv.

  ” Data transformation – Mapping fields to internal table structure

  CLEAR wa_employee.

  READ TABLE lt_csv INTO lv_field INDEX 1. wa_employee-emp_id = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 2. wa_employee-name = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 3. wa_employee-salary = lv_field.

  ” Data cleansing – Trim spaces

  wa_employee-name = CONDENSE wa_employee-name.

  ” Insert into internal table

  APPEND wa_employee TO lt_employee.

ENDLOOP.

 

2.4 Data Cleansing and Transformation

Once the data is in the internal table itab, you can process it. For instance, you can split the CSV lines and map them to a structured internal table.

DATA : lt_csv TYPE TABLE OF string,

      lt_employee TYPE TABLE OF zemployee,   ” Assume zemployee is a custom structure for employee data

      lv_field TYPE string,

      wa_employee TYPE zemployee.

LOOP AT itab INTO lv_line.

  SPLIT lv_line AT ‘,’ INTO TABLE lt_csv.

  ” Data transformation – Mapping fields to internal table structure

  CLEAR wa_employee.

  READ TABLE lt_csv INTO lv_field INDEX 1. wa_employee-emp_id = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 2. wa_employee-name = lv_field.

  READ TABLE lt_csv INTO lv_field INDEX 3. wa_employee-salary = lv_field.

  ” Data cleansing – Trim spaces

  wa_employee-name = CONDENSE wa_employee-name.

  ” Insert into internal table

  APPEND wa_employee TO lt_employee.

ENDLOOP.

2.5  Writing the Transformed Data to a File

You can also write the transformed data to another file.

DATA : output_file TYPE string VALUE ‘/path/to/output.csv’,

      lv_output_line TYPE string.

OPEN DATASET output_file FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.

LOOP AT lt_employee INTO wa_employee.

  CONCATENATE wa_employee-emp_id

              wa_employee-name

              wa_employee-salary INTO lv_output_line SEPARATED BY ‘,’.

  TRANSFER lv_output_line TO output_file.

ENDLOOP.

CLOSE DATASET output_file.

 

3. Data Transformation Techniques in JavaScript (Client-Side)

For frontend applications (like the Employee Management System you are building), you might need to process files uploaded by users or data received from APIs.

Example: Reading and Transforming a CSV File in JavaScript

Here’s how you can read a CSV file and transform it using JavaScript (e.g., in the browser).

3.1. Reading the CSV File

You can use the File API to read a file uploaded by a user.

<input type=”file” id=”fileInput”>

<script>

  document.getElementById(‘fileInput’).addEventListener(‘change’, function(event) {

    const file = event.target.files[0];

    const reader = new FileReader();

    reader.onload = function(e) {

      const text = e.target.result;

      processCSV(text);

    };

    reader.readAsText(file);

  });

</script>

3.2. Processing the CSV File

Here, you can split the CSV data, transform it, and display or further process it.

function processCSV(data) {

  const lines = data.split(‘\n’);

  const result = [];

 

  lines.forEach(line => {

    const fields = line.split(‘,’);

    const employee = {

      id: fields[0].trim(),

      name: fields[1].trim(),

      salary: parseFloat(fields[2].trim())

    };

    result.push(employee);

  });

 

  console.log(result); // Transformed data

}

3.3. Writing Transformed Data to a File (Browser-side)

If you need to download the transformed data, you can create a downloadable CSV file in the browser:

function downloadCSV(data) {

  const csvContent = data.map(e => `${e.id},${e.name},${e.salary}`).join(‘\n’);

  const blob = new Blob([csvContent], { type: ‘text/csv’ });

  const link = document.createElement(‘a’);

  link.href = URL.createObjectURL(blob);

  link.download = ’employees.csv’;

  document.body.appendChild(link);

  link.click();

  document.body.removeChild(link);

}

// Call this function with the transformed data to download the CSV

downloadCSV(transformedData);

Best Practices for Data Transformation

  • Validation: Always validate input data before transformation to avoid errors.
  • Error Handling: Include error handling for file read/write operations.
  • Data Integrity: Ensure that the transformation process does not lose or corrupt data.
  • Performance: Optimize large file processing using chunk-based reading and processing.

Author : Aniket Pawar, 9373518385  

Leave a Reply

Your email address will not be published. Required fields are marked *