Update Inventory Worksheet via SDK

Hi Guys,

I am having an issue while updating Inventory Counts in SAGE300.

I have created the Macro but it actually does not update the Quantity Counted in I/C Physical Inventory Quantities.

Has someone successfully updated /C Physical Inventory In SAGE300  via the SDK? Am I missing something while updating the Inventory Worksheet?

Please note that while running the Macro in SAGE it does not return any error but also It does not update the Quantity Counted.

I know I have to get the acro right before attempting to do it via SDK. 

Can someone please help me with the I/C Physical Inventory Counted Quantities macro?

 

Stocktake Macro As per Below:

.....

Sub MainSub()
'
' Sage 300 ERP Macro file: C:\Jose Macro\Stocktake11.AVB
' Recorded at: Tue Oct 13 17:45:31 2015
'

On Error GoTo ACCPACErrorHandler

' TODO: To increase efficiency, comment out any unused DB links.
Dim mDBLinkCmpRW As AccpacCOMAPI.AccpacDBLink
Set mDBLinkCmpRW = OpenDBLink(DBLINK_COMPANY, DBLINK_FLG_READWRITE)

Dim mDBLinkSysRW As AccpacCOMAPI.AccpacDBLink
Set mDBLinkSysRW = OpenDBLink(DBLINK_SYSTEM, DBLINK_FLG_READWRITE)

Dim temp As Boolean
Dim ICWKL1header As AccpacCOMAPI.AccpacView
Dim ICWKL1headerFields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "IC0770", ICWKL1header
Set ICWKL1headerFields = ICWKL1header.Fields

Dim ICWKL1detail As AccpacCOMAPI.AccpacView
Dim ICWKL1detailFields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "IC0775", ICWKL1detail
Set ICWKL1detailFields = ICWKL1detail.Fields

ICWKL1header.Compose Array(Nothing, ICWKL1detail)

ICWKL1detail.Compose Array(ICWKL1header)


Dim ICWKGEN3 As AccpacCOMAPI.AccpacView
Dim ICWKGEN3Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "IC0760", ICWKGEN3
Set ICWKGEN3Fields = ICWKGEN3.Fields


Dim ICWKU2header As AccpacCOMAPI.AccpacView
Dim ICWKU2headerFields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "IC0790", ICWKU2header
Set ICWKU2headerFields = ICWKU2header.Fields

Dim ICWKU2detail1 As AccpacCOMAPI.AccpacView
Dim ICWKU2detail1Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "IC0780", ICWKU2detail1
Set ICWKU2detail1Fields = ICWKU2detail1.Fields

Dim ICWKU2detail2 As AccpacCOMAPI.AccpacView
Dim ICWKU2detail2Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "IC0795", ICWKU2detail2
Set ICWKU2detail2Fields = ICWKU2detail2.Fields

Dim ICWKU2detail3 As AccpacCOMAPI.AccpacView
Dim ICWKU2detail3Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "IC0793", ICWKU2detail3
Set ICWKU2detail3Fields = ICWKU2detail3.Fields

Dim ICWKU2detail4 As AccpacCOMAPI.AccpacView
Dim ICWKU2detail4Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "IC0797", ICWKU2detail4
Set ICWKU2detail4Fields = ICWKU2detail4.Fields

ICWKU2header.Compose Array(ICWKU2detail1, Nothing, Nothing, Nothing, ICWKU2detail2, ICWKU2detail3, ICWKU2detail4)

ICWKU2detail1.Compose Array(ICWKU2header, Nothing)

ICWKU2detail2.Compose Array(ICWKU2header)

ICWKU2detail3.Compose Array(ICWKU2header)

ICWKU2detail4.Compose Array(ICWKU2header)


ICWKL1headerFields("PROCACTION").PutWithoutVerification ("2")         ' Process Action
ICWKL1header.Process
temp = ICWKL1header.Exists

ICWKL1headerFields("LOCATION").Value = "PPPS"                         ' Location

ICWKL1header.Read
ICWKU2detail1.Browse "(LOCATION = PPPS) AND (SORTCODE = CATFOA0001) AND (ITEMNO = CATFOA0001) AND (UNIT = Each)", 1
ICWKU2detail1.Fetch
temp = ICWKL1header.Exists
ICWKU2detail1Fields("UNIT").PutWithoutVerification ("Each")           ' Unit of Measure
ICWKU2detail1.Read
ICWKU2detail1Fields("QTYCOUNTED").PutWithoutVerification ("100.0000")   ' Quantity Counted
ICWKU2detail1.Update
ICWKU2detail1.Update

ICWKU2detail1Fields("UNIT").PutWithoutVerification ("")               ' Unit of Measure
ICWKU2detail1.Browse "", 1
ICWKU2detail1.Fetch
temp = ICWKL1header.Exists

ICWKL1headerFields("PROCACTION").PutWithoutVerification ("3")         ' Process Action
ICWKL1header.Process

Exit Sub

ACCPACErrorHandler:
  Dim lCount As Long
  Dim lIndex As Long
  If Errors Is Nothing Then
       MsgBox Err.Description
  Else
      lCount = Errors.Count

      If lCount = 0 Then
          MsgBox Err.Description
      Else
          For lIndex = 0 To lCount - 1
              MsgBox Errors.Item(lIndex)
          Next
          Errors.Clear
      End If
      Resume Next

  End If
End Sub

.....

 

Thanks...

  • 0

    Dim mDBLinkCmpRW As AccpacCOMAPI.AccpacDBLink

    Dim ICWKU2header As AccpacCOMAPI.AccpacView

    Dim ICWKU2detail1 As AccpacCOMAPI.AccpacView

    Dim ICWKU2detail2 As AccpacCOMAPI.AccpacView

    Dim ICWKU2detail3 As AccpacCOMAPI.AccpacView

    Dim ICWKU2detail4 As AccpacCOMAPI.AccpacView

    Set mDBLinkCmpRW = OpenDBLink(DBLINK_COMPANY, DBLINK_FLG_READWRITE)

    mDBLinkCmpRW.OpenView "IC0790", ICWKU2header

    mDBLinkCmpRW.OpenView "IC0780", ICWKU2detail1

    mDBLinkCmpRW.OpenView "IC0795", ICWKU2detail2

    mDBLinkCmpRW.OpenView "IC0793", ICWKU2detail3

    mDBLinkCmpRW.OpenView "IC0797", ICWKU2detail4

    ICWKU2header.Compose Array(ICWKU2detail1, Nothing, Nothing, Nothing, ICWKU2detail2, ICWKU2detail3, ICWKU2detail4)

    ICWKU2detail1.Compose Array(ICWKU2header, Nothing)

    ICWKU2detail2.Compose Array(ICWKU2header)

    ICWKU2detail3.Compose Array(ICWKU2header)

    ICWKU2detail4.Compose Array(ICWKU2header)

    ICWKU2header.Fields("LOCATION").PutWithoutVerification ("1")

    ICWKU2header.Fields("SORTCODE").PutWithoutVerification ("A11030")

    ICWKU2header.Fields("ITEMNO").PutWithoutVerification ("A11030")

    If ICWKU2header.Read Then

       ICWKU2detail1.Fields("UNIT").PutWithoutVerification ICWKU2header.Fields("STOCKUNIT").Value               ' Unit of Measure

       If ICWKU2detail1.Read Then

           ICWKU2detail1.Fields("QTYCOUNTED").PutWithoutVerification 110  ' Quantity Counted

           ICWKU2detail1.Update

       End If

       ICWKU2header.Update

    End If