Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
cancel
Showing results for 
Search instead for 
Did you mean: 
Former Member
0 Kudos

A couple of weeks ago, I was asked how to publish bigdatetime data to ESP using the C SDK.  The crux of the problem was that the API used to set the bigdatetime column required an "EspBigDatetime" value as the second parameter:

ESPAPICALL int32_t esp_relative_rowwriter_set_bigdatetime(EspRelativeRowWriter * writer,
const EspBigDatetime * bigdatetime_value,
EspError * error
)

How does one populate an EspBigDatetime variable?

It turns out that there are two ways to populate an EspBigDatetime variable:

1) The first method works best if your bigdatetime data is coming from a string source (for example, reading from a file):

ESPAPICALL EspBigDatetime* esp_bigdatetime_create_string(const char * string_value,
EspError * error
)

// NOTE: The string must be in the standard ESP bigdatetime format which is "yyyy-MM-ddTHH:mm:ss.UUUUUU" where the letter 'U' stands for microseconds.

char timestamp[27] = "2013-08-24T09:45:23.543221";

EspBigDatetime *espDatetime;

// Create and populate the espDatetime variable

espDatetime = esp_bigdatetime_create_string(timestamp, espError);

if(espDatetime == NULL)

{

          print_ESP_error_and_exit(espError,__LINE__);

}

// Set the espDatetime value in the current row

rc=esp_relative_rowwriter_set_bigdatetime(row,espDatetime,espError);

if(rc!=0)

{

          print_ESP_error(espError,__LINE__);

          esp_bigdatetime_free(espDatetime, espError);

          exit(1);

}

esp_bigdatetime_free(espDatetime, espError);

2) The second method works best if your bigdatetime data is in a numeric microsecond format (for example, getting the system's current date and time):

ESPAPICALL EspBigDatetime* esp_bigdatetime_create_microseconds(const int64_t microseconds,
EspError * error
)

 

EspBigDatetime *espDatetime;

time_t tmstamp;

// Get the current date and time in microseconds

tmstamp = getMicroseconds();

// Create and populate the espDatetime variable

espDatetime = esp_bigdatetime_create_microseconds(tmstamp, espError);

if(espDatetime == NULL)

{

          print_ESP_error_and_exit(espError,__LINE__);

}

// Set the espDatetime value in the current row

rc=esp_relative_rowwriter_set_bigdatetime(row,espDatetime,espError);

if(rc!=0)

{

          print_ESP_error(espError,__LINE__);

          esp_bigdatetime_free(espDatetime, espError);

          exit(1);

}

esp_bigdatetime_free(espDatetime, espError);