Creating a Transactional Object (SOEProj.vbp)
This sample code shows how to create a SalesOrderEntry transactional object (SOETxObject => SOEClass2.cls).
Public Sub run() On Error GoTo errorhandler Dim ow As OneWorldTx Dim bhvr As IOneWorldBHVRCOM Dim conn As New Connector '// COM Connector Dim connRole As IConnector2 '// Connector Interface with Roles Dim soeObject As JDESalesOrderEntry '// SalesOrderEntry Dim soeBeginDoc As D4200310H Dim soeEndDoc As D4200310G Dim soeEditLine As D4200310F Dim soeClearWF As D4200310I Dim s As String Dim d As New MathNumeric Dim mnQuanityOrdered As New MathNumeric Dim mnUnitPrice As New MathNumeric Dim response Dim laccessNunber As Long ' Name Information Dim strComputerName As String Dim lngNameLength As Long Const WRITE_FLAG = "2" Dim i As Boolean Set connRole = conn laccessNumber = connRole.Login("UserID", "PWD", "ENV", "ROLE") Set ow = New OneWorldTx ow.Initialize laccessNumber, connRole 'oneworld transaction initialized to manual ow.BeginTransaction laccessNumber, connRole, 1 Set bhvr = ow bhvr.szApplication = "COM+" Set soeObject = connRole.CreateBusinessObject("SalesOrderEntry. JDESalesOrderEntry", laccessNumber) ' please change the progid to correct progId Set soeBeginDoc = soeObject.CreateF4211FSBeginDocParameterset Set soeEditLine = soeObject.CreateF4211FSEditLineParameterset Set soeEndDoc = soeObject.CreateF4211FSEndDocParameterset Set soeClearWF = soeObject.CreateF4211ClearWorkFileParameterset ' Get computer name for use later strComputerName = Space(30) lngNameLength = 30 p_ret = GetComputerName(strComputerName, lngNameLength) If p_ret <> 1 Then MsgBox (GetComputerName failed!) 'End Else strComputerName = Mid(strComputerName, 1, lngNameLength) End If ' MsgBox (Create Biz Object Done!) '//////////////BEGIN DOC////////////// soeBeginDoc.Reset soeBeginDoc.cCMDocAction = "A" soeBeginDoc.cCMProcessEdits = "1" soeBeginDoc.cCMUpdateWriteToWF = WRITE_FLAG soeBeginDoc.szCMProgramID = "VB" soeBeginDoc.szCMVersion = "ZJDE0001" soeBeginDoc.szOrderCo = "00200" soeBeginDoc.szOrderType = "SO" szBUnit = "M30" soeBeginDoc.szBusinessUnit = Space(12 - Len(szBUnit)) + szBUnit d = Val("4242") soeBeginDoc.mnAddressNumber = d soeBeginDoc.mnShipToNo = d soeBeginDoc.jdOrderDate = Date soeBeginDoc.cMode = "F" soeBeginDoc.szUserID = "JDE" soeBeginDoc.cRetrieveOrderNo = "1" If strComputerName <> "" Then soeBeginDoc.szCMComputerID = strComputerName End If ' MsgBox ("Before F4211FSBeginDoc") soeObject.F4211FSBeginDoc soeBeginDoc, ow, connRole, laccessNumber MsgBox Round(soeBeginDoc.mnOrderNo, 0) '//////////EDIT LINE//////////// soeEditLine.mnCMJobNo = soeBeginDoc.mnCMJobNumber orderNum = soeBeginDoc.mnOrderNo soeEditLine.mnOrderNo = soeBeginDoc.mnOrderNo soeEditLine.szBusinessUnit = soeBeginDoc.szBusinessUnit soeEditLine.szCMComputerID = soeBeginDoc.szCMComputerID soeEditLine.cCMWriteToWFFlag = WRITE_FLAG soeEditLine.szOrderType = soeBeginDoc.szOrderType ' Load items from UI into edit line structure soeEditLine.szItemNo = "1001" mnQuanlityOrdered = "2" soeEditLine.mnQtyOrdered = mnQuanityOrdered ' MsgBox ("Before F4211FSEditLine.") ' Call business function soeObject.F4211FSEditLine soeEditLine, ow, connRole, laccessNumber ' MsgBox ("After F4211FSEditLine.") '///////////////ENDDOC////////////// soeEndDoc.mnCMJobNo = soeBeginDoc.mnCMJobNumber soeEndDoc.mnSalesOrderNo = soeBeginDoc.mnOrderNo soeEndDoc.szOrderType = soeBeginDoc.szOrderType soeEndDoc.szCMComputerID = strComputerName soeEndDoc.cCMUseWorkFiles = WRITE_FLAG 'Call business function 'MsgBox ("Before F4211FSEndDoc.") soeObject.F4211FSEndDoc soeEndDoc, ow, connRole, laccessNumber 'MsgBox ("After F4211FSEndDoc.") MsgBoxRes = MsgBox("Do you want to abort?", vbYesNo, "Transaction Decision") If MsgBoxRes = vbYes Then GetObjectContext.SetAbort Else GetObjectContext.SetComplete MsgBox ("Order Saved") End If '///////CLEAR WORK FILE//////////////// soeClearWF.cClearDetailWF = WRITE_FLAG soeClearWF.cClearHeaderWF = WRITE_FLAG soeClearWF.mnJobNo = soeBeginDoc.mnCMJobNumber soeClearWF.szComputerID = strComputerName 'Call business function 'MsgBox ("Before F4211ClearWorkFile.") ow.BeginTransaction laccessNumber, connRole, 0 soeObject.F4211ClearWorkFile soeClearWF, ow, connRole, laccessNumber 'MsgBox ("After F4211ClearWorkFile.") Set soeObject = Nothing Set soeBeginDoc = Nothing Set soeEditLine = Nothing Set soeEndDoc = Nothing Set ow = Nothing connRole.Logoff (laccessNumber) Set connRole = Nothing Exit Sub errorhandler: GetObjectContext().SetAbort connRole.Logoff (laccessNumber) Set ow = Nothing End Sub