将XML有效负载上载到多个Exact Online公司

时间:2016-12-09 07:56:39

标签: exact-online invantive-sql

使用如下查询,您将获得Exact Online所需的XML格式的输出。

这些XML消息可以使用以下命令放在磁盘上的许多文件中:

local export documents in filecontents to "c:\temp\in" filename column filename

然后使用以下方法加载到Exact Online的当前部门:

local eol batch import xml "Accounts" in "c:\temp\in\Accounts" success "c:\temp\success" fail "c:\temp\fail"

这适用于一个部门,但不适用于加载100个部门/公司。

如何直接将SQL中的数据同时加载到多个公司/部门,而不是使用单独的local eol batch import xml语句和use DIVISIONCODE语句?

查询示例:

select 'Accounts\010-Accounts.xml' 
       filename
,      stg.fileprefix 
       || chr(13)
       || '<Accounts>' 
       || xml 
       || chr(13)
       || '</Accounts>'
       || stg.filepostfix
       filecontents
from   ( select listagg
                ( chr(13)
                  || '<Account code="'
                  || xmlencode(custsupid)
                  || '" status="'
...

1 个答案:

答案 0 :(得分:1)

您可以使用UploadXMLTopics所述的以下语法将一个语句上传到多个公司/部门:

insert into UploadXMLTopics@eol
( topic
, payload
, division_code
)
select topic
,      filecontents
,      division_code
from   ...

即使一个或多个上传失败,插入也不会报告错误并处理所有XML消息。

您可以使用以下方式查看结果:

select *
from   UploadXMLTopics

SUCCESSFUL表示是否已成功加载有效负载列。

RESULT列中,您将找到Exact Online的返回消息,例如:

<?xml version="1.0" encoding="utf-8"?>
<eExact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="eExact-XML.xsd">
    <Messages>
        <Message type="0">
            <Topic code="FinYears" node="FinYear" />
            <Date>2016-12-09T09:02:36</Date>
            <Description>Kan boekjaar niet aanmaken: 2014 vanwege ontbrekende boekjaren. Het laagste boekjaar in Exact Online is 2016.</Description>
        </Message>
        <Message type="2">
            <Topic code="FinYears" node="FinYear">
                <Data key="2015" keyAlt="2015" />
            </Topic>
            <Date>2016-12-09T09:02:37</Date>
            <Description>Aangemaakt</Description>
        </Message>
    </Messages>
</eExact>