Hi, DjangMan
I've successed to make PJC Material Usage Macro, but there is a problem when I converted it to vb.net. Usually there is no problem when insert header and detail in another function but in Material Usage I can insert header but I cannot insert the detail, please help.
PJC Material Usage Macro :
Sub MainSub()
'
' Sage 300 Macro file: D:\Data\Aan\Khaileena Project\MaterialRequest\Macro\mu12.AVB
' Recorded at: Fri May 11 22:10:21 2018
'
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 PMMAT1header As AccpacCOMAPI.AccpacView
Dim PMMAT1headerFields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "PM0050", PMMAT1header
Set PMMAT1headerFields = PMMAT1header.Fields
Dim PMMAT1detail1 As AccpacCOMAPI.AccpacView
Dim PMMAT1detail1Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "PM0051", PMMAT1detail1
Set PMMAT1detail1Fields = PMMAT1detail1.Fields
Dim PMMAT1detail2 As AccpacCOMAPI.AccpacView
Dim PMMAT1detail2Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "PM0483", PMMAT1detail2
Set PMMAT1detail2Fields = PMMAT1detail2.Fields
Dim PMMAT1detail3 As AccpacCOMAPI.AccpacView
Dim PMMAT1detail3Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "PM0484", PMMAT1detail3
Set PMMAT1detail3Fields = PMMAT1detail3.Fields
Dim PMMAT1detail4 As AccpacCOMAPI.AccpacView
Dim PMMAT1detail4Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "PM0537", PMMAT1detail4
Set PMMAT1detail4Fields = PMMAT1detail4.Fields
Dim PMMAT1detail5 As AccpacCOMAPI.AccpacView
Dim PMMAT1detail5Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "PM0538", PMMAT1detail5
Set PMMAT1detail5Fields = PMMAT1detail5.Fields
Dim PMMAT1detail6 As AccpacCOMAPI.AccpacView
Dim PMMAT1detail6Fields As AccpacCOMAPI.AccpacViewFields
mDBLinkCmpRW.OpenView "PM0539", PMMAT1detail6
Set PMMAT1detail6Fields = PMMAT1detail6.Fields
PMMAT1header.Compose Array(PMMAT1detail1, PMMAT1detail2, PMMAT1detail3, PMMAT1detail5)
PMMAT1detail1.Compose Array(PMMAT1header, PMMAT1detail2, PMMAT1detail3)
PMMAT1detail2.Compose Array(PMMAT1detail1, PMMAT1header)
PMMAT1detail3.Compose Array(PMMAT1detail1, PMMAT1header)
PMMAT1detail4.Compose Array(PMMAT1detail1)
PMMAT1detail5.Compose Array(PMMAT1header)
PMMAT1header.Order = 1
PMMAT1header.Order = 0
PMMAT1header.Init
temp = PMMAT1header.Exists
PMMAT1header.Order = 1
PMMAT1headerFields("MATERIALNO").Value = "TESTMU2" ' Material Usage Number
temp = PMMAT1header.Exists
PMMAT1header.Order = 0
PMMAT1headerFields("SEQ").Value = "0" ' Sequence
PMMAT1header.Init
PMMAT1header.Order = 1
PMMAT1headerFields("MATERIALNO").Value = "TESTMU1" ' Material Usage Number
temp = PMMAT1header.Exists
PMMAT1headerFields("TRANSDATE").Value = DateSerial(2018, 5, 9) ' Transaction Date
PMMAT1headerFields("DESC").Value = "jajal input" ' Description
PMMAT1headerFields("REFERENCE").Value = "ok" ' Reference
temp = PMMAT1detail1.Exists
PMMAT1detail1.RecordClear
temp = PMMAT1detail1.Exists
PMMAT1detail1.RecordCreate 0
PMMAT1detail1Fields("FMTCONTNO").Value = "EC0001-B0003" ' Contract
PMMAT1detail1Fields("PROJECT").Value = "EFS" ' Project
PMMAT1detail1Fields("CATEGORY").Value = "4300" ' Category
PMMAT1detail1Fields("RESOURCE").Value = "CAS006" ' Item Number
PMMAT1detail1Fields("LOCATION").Value = "JKT" ' Location
PMMAT1detail1Fields("QUANTITY").Value = "2.00000" ' Quantity
PMMAT1detail1.Insert
temp = PMMAT1header.Exists
PMMAT1detail1Fields("LINENO").PutWithoutVerification ("-1") ' Line Number
PMMAT1detail1.Read
PMMAT1header.Insert
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
My vb.net PJC Material Usage code :
Dim session As ACCPAC.Advantage.Session
Dim mDBLinkCmpRW As ACCPAC.Advantage.DBLink
session = New ACCPAC.Advantage.Session()
session.Init("", "XX", "XX1000", "64A")
session.Open("ADMIN", "ADMIN", "TKTIND", DateTime.Today, 0)
mDBLinkCmpRW = session.OpenDBLink(ACCPAC.Advantage.DBLinkType.Company, ACCPAC.Advantage.DBLinkFlags.ReadWrite)
Dim PMMAT1header As ACCPAC.Advantage.View
PMMAT1header = mDBLinkCmpRW.OpenView("PM0050")
Dim PMMAT1detail1 As ACCPAC.Advantage.View
PMMAT1detail1 = mDBLinkCmpRW.OpenView("PM0051")
Dim PMMAT1detail2 As ACCPAC.Advantage.View
PMMAT1detail2 = mDBLinkCmpRW.OpenView("PM0483")
Dim PMMAT1detail3 As ACCPAC.Advantage.View
PMMAT1detail3 = mDBLinkCmpRW.OpenView("PM0484")
Dim PMMAT1detail4 As ACCPAC.Advantage.View
PMMAT1detail4 = mDBLinkCmpRW.OpenView("PM0537")
Dim PMMAT1detail5 As ACCPAC.Advantage.View
PMMAT1detail5 = mDBLinkCmpRW.OpenView("PM0538")
PMMAT1header.Compose({PMMAT1detail1, PMMAT1detail2, PMMAT1detail3, PMMAT1detail5})
PMMAT1detail1.Compose({PMMAT1header, PMMAT1detail2, PMMAT1detail3})
PMMAT1detail2.Compose({PMMAT1detail1, PMMAT1header})
PMMAT1detail3.Compose({PMMAT1detail1, PMMAT1header})
PMMAT1detail4.Compose({PMMAT1detail1})
PMMAT1detail5.Compose({PMMAT1header})
PMMAT1header.Fields.FieldByName("SEQ").SetValue("0", False) ' Sequence
PMMAT1header.Init()
PMMAT1header.Fields.FieldByName("MATERIALNO").SetValue("TESTMU1", False) ' Material Usage Number
PMMAT1header.Fields.FieldByName("TRANSDATE").SetValue("2018/05/09", False) ' Transaction Date
PMMAT1header.Fields.FieldByName("DESC").SetValue("jajal input", False) ' Description
PMMAT1header.Fields.FieldByName("REFERENCE").SetValue("ok", False)
PMMAT1detail1.RecordCreate(ViewRecordCreate.NoInsert)
PMMAT1detail1.Fields.FieldByName("FMTCONTNO").SetValue("EC0001-B0003", False) ' Contract
PMMAT1detail1.Fields.FieldByName("PROJECT").SetValue("EFS", False) ' Project
PMMAT1detail1.Fields.FieldByName("CATEGORY").SetValue("4300", False) ' Category
PMMAT1detail1.Fields.FieldByName("RESOURCE").SetValue("CAS013", False) ' Item Number
PMMAT1detail1.Fields.FieldByName("LOCATION").SetValue("JKT", False) ' Location
PMMAT1detail1.Fields.FieldByName("QUANTITY").SetValue("2", False) ' Quantity
PMMAT1detail1.Insert()
PMMAT1detail1.Fields.FieldByName("LINENO").SetValue("-1", False) ' Line Number
PMMAT1header.Insert()