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

Upload XML payload into multiple Exact Online companies

使用如下查询,您将获得 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 个时就不行了 divisions/companies。

如何直接将数据从 SQL 同时加载到多个 companies/divisions 而不是使用单独的 local eol batch import xml 语句和 use DIVISIONCODE 语句?

查询示例:

select 'Accounts0-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="'
...

您可以使用 UploadXMLTopics 中描述的以下语法通过一条语句上传到多个 companies/divisions:

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

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

之后您可以使用以下命令查看结果:

select *
from   UploadXMLTopics

SUCCESSFUL列表示payload列是否加载成功

RESULT栏中可以找到Exact Online的return消息,例如:

<?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>