Java NetSuite SOAP API(SuiteTalk)以转储总账
有谁能给我一些建议,告诉我如何使用Java NetSuite SOAP API(SuiteTalk)以转储总账,java,soap,netsuite,Java,Soap,Netsuite,有谁能给我一些建议,告诉我如何使用SuiteTalk,以及NetSuite中的SOAPAPI来阅读总账 例如,如果您在NetSuiteUI上查看帐户或交易,则有一个选项可选择“GL Impact”。这将生成相关总账分录的列表 但是,我无法找到使用SuiteTalk获得相同列表的方法。我尝试调用的一个最初很有希望的SOAP操作是getPostingTransactionSummary(),但这只是一个摘要,缺少事务日期等细节。另一种方法是调用search()传递TransactionSearchB
SuiteTalk
,以及NetSuite
中的SOAP
API来阅读总账
例如,如果您在NetSuite
UI上查看帐户或交易,则有一个选项可选择“GL Impact
”。这将生成相关总账分录的列表
但是,我无法找到使用SuiteTalk
获得相同列表的方法。我尝试调用的一个最初很有希望的SOAP
操作是getPostingTransactionSummary()
,但这只是一个摘要,缺少事务日期等细节。另一种方法是调用search()
传递TransactionSearchBasic
对象。这会返回太多类型的交易,我不确定哪些类型的交易会对总账产生影响
我正在使用
Java
和Axis
工具包进行SOAP
操作,但任何语言(或原始SOAP
不过,我会在保存的搜索编辑器中设置此选项,至少在您了解如何过滤到可管理的行数之前是这样。然后使用TransactionSearchAdvanced with savedSearchId通过SuiteTalk提取该信息。我可以使用以下代码搜索总账交易,这可能会对您有所帮助
public void GetTransactionData()
{
DataTable dtData = new DataTable();
string errorMsg = "";
LoginToService(ref errorMsg);
TransactionSearch objTransSearch = new TransactionSearch();
TransactionSearchBasic objTransSearchBasic = new TransactionSearchBasic();
SearchEnumMultiSelectField semsf = new SearchEnumMultiSelectField();
semsf.@operator = SearchEnumMultiSelectFieldOperator.anyOf;
semsf.operatorSpecified = true;
semsf.searchValue = new string[] { "Journal" };
objTransSearchBasic.type = semsf;
objTransSearchBasic.postingPeriod = new RecordRef() { internalId = "43" };
objTransSearch.basic = objTransSearchBasic;
//Set Search Preferences
SearchPreferences _searchPreferences = new SearchPreferences();
Preferences _prefs = new Preferences();
_serviceInstance.preferences = _prefs;
_serviceInstance.searchPreferences = _searchPreferences;
_searchPreferences.pageSize = 1000;
_searchPreferences.pageSizeSpecified = true;
_searchPreferences.bodyFieldsOnly = false;
//Set Search Preferences
try
{
SearchResult result = _serviceInstance.search(objTransSearch);
List<JournalEntry> lstJEntry = new List<JournalEntry>();
List<JournalEntryLine> lstLineItems = new List<JournalEntryLine>();
if (result.status.isSuccess)
{
for (int i = 0; i <= result.recordList.Length - 1; i += 1)
{
JournalEntry JEntry = (JournalEntry)result.recordList[i];
lstJEntry.Add((JournalEntry)result.recordList[i]);
if (JEntry.lineList != null)
{
foreach (JournalEntryLine line in JEntry.lineList.line)
{
lstLineItems.Add(line);
}
}
}
}
try
{
_serviceInstance.logout();
}
catch (Exception ex)
{
}
}
catch (Exception ex)
{
throw ex;
}
}
public void GetTransactionData()
{
DataTable dtData=新的DataTable();
字符串errorMsg=“”;
登录服务(参考错误消息);
TransactionSearch objTransSearch=新建TransactionSearch();
TransactionSearchBasic objTransSearchBasic=新建TransactionSearchBasic();
SearchEnumMultiSelectField semsf=新的SearchEnumMultiSelectField();
semsf@operator=SearchEnumMultiSelectFieldOperator.anyOf;
semsf.operatorSpecified=真;
semsf.searchValue=新字符串[]{“Journal”};
objTransSearchBasic.type=semsf;
objTransSearchBasic.postingPeriod=newRecordRef(){internalId=“43”};
objTransSearch.basic=objTransSearchBasic;
//设置搜索首选项
SearchPreferences\u SearchPreferences=新的SearchPreferences();
首选项_prefs=新首选项();
_serviceInstance.preferences=\u prefs;
_serviceInstance.searchPreferences=\u searchPreferences;
_searchPreferences.pageSize=1000;
_searchPreferences.pageSizeSpecified=true;
_searchPreferences.bodyFieldsOnly=false;
//设置搜索首选项
尝试
{
SearchResult=\u serviceInstance.search(objTransSearch);
List lstJEntry=新列表();
List lstLineItems=新列表();
if(结果、状态、发布成功)
{
对于(int i=0;我感谢你。我正在进行“试驾”我和account有一个列表,看起来与UI上的总账报告相似,但存在一些令人担忧的差异。某些帐户的某些交易出现在其中一个帐户中,而不是另一个帐户。此外,我对帐户与交易的关联方式感到困惑。例如,a/c 1090的总账报告-取消存款ed基金列出现金销售记录(内部ID 33)如果我进行联合搜索,我可以得到这个结果,但是查看CashSale,帐户既不在account字段中,也不在任何子列表中。它在哪里?你不能过滤掉主线。除了你使用的其他过滤器外,你可能还想使用一个过滤器表达式或公式字段。如果{creditamount}不为null,请尝试case,然后在{debitamount}不为空,则在critera等于1的公式数值字段中为1,否则为0结束
。