Skip to Content
avatar image
Former Member

Post Date string conversion to date

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 😊

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

2 Answers

  • Best Answer
    Sep 05, 2008 at 12:47 AM

    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

    Add comment
    10|10000 characters needed characters exceeded

  • avatar image
    Former Member
    Sep 05, 2008 at 04:23 AM

    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

    Add comment
    10|10000 characters needed characters exceeded