cancel
Showing results for 
Search instead for 
Did you mean: 

Post Date string conversion to date

Former Member
0 Kudos

I am trying to use the posting date from AR invoices and perform some date calculations on it. But all me attempts get errors. I have found numerous postings here about this subject but nothing is working. Are there any ways to get the date out as a date type? Or is this a VB.net thing that I'm just doing wrong. Code I am using is: (but I have tried many others)

Dim oDocDate2 As SAPbouiCOM.EditText

Dim invoicedate As Date

oItem = oInvForm.Items.Item("10")

oDocDate2 = oItem.Specific

invoicedate = Convert.ToDateTime(oDocDate2)

thanks for the help

Accepted Solutions (1)

Accepted Solutions (1)

former_member201110
Active Contributor
0 Kudos

Hi Peter,

The only thing I can see wrong with your code is that you are trying to convert oDocDate2 to a datetime and not its string property (ie the value currently entered in the field).

This works for me (in C#):


SAPbouiCOM.Form sboForm = (SAPbouiCOM.Form)_sboApp.Forms.Item(ItemEvent.FormUID);
SAPbouiCOM.EditText oDocDate2 = (SAPbouiCOM.EditText)sboForm.Items.Item("10").Specific;
DateTime invoicedate = Convert.ToDateTime(oDocDate2.String);

Of course, there is no logic here to check whether a date has actually been entered in the field but that's easy to add. The value returned by the oDocDate2.String property is going to be a string in the date format you've selected for your company in Company Settings (display tab). As the .NET convert method, by default, uses your regional settings from Windows to define the date format, it would be possible to get an error trying to convert the date if SBO is not in synch with Windows (eg if your Windows is set to US format MM/DD/YYYY but the SBO company uses DD/MM/YYYY then this conversion won't work and you'll either get an incorrect date or a conversion error, depending on the date entered).

Another approach is to use the DbDataSource to read the date:


SAPbouiCOM.DBDataSource sboDS = (SAPbouiCOM.DBDataSource)sboForm.DataSources.DBDataSources.Item("OINV");
string sDate = sboDS.GetValue("DocDate", 0).TrimEnd();

This is a better approach because the datasource will always return the value in the format YYYYMMDD, regardless of the display settings in the company.

You can then do a quick conversion to turn it in to a format that .NET can convert in to a date:


sDate = sDate.Substring(0, 4) + "-" + sDate.Substring(4, 2) + "-" + sDate.Substring(6, 2);
DateTime invoicedate = Convert.ToDateTime(sDate);

Kind Regards,

Owen

Answers (1)

Answers (1)

Former Member
0 Kudos

Hi...

use this code ur got output date format only

Dim oDocDate2 As SAPbouiCOM.EditText

Dim dou As Double

Dim str As Double

oDocDate2 = oInvForm.Items.Item("10").Specific

invoicedate =str

Regards..

Billa 2007