目录
背景介绍...
前提条件...
测试场景...
测试响应...
背景介绍
API
“日记账分录 – 过账(同步)”, 技术名称:JournalEntryCreateRequestConfirmation_In
使用此内向服务将日记账分录从外部系统同步过账到您的 SAP S/4HANA Cloud 系统。可根据业务需求扩展此服务。
本篇及系列博客介绍基于API
“日记账分录 – 过账(同步)可以实现的场景,本篇介绍客户发票。
前提条件
根据
链接,通过 APP –
通信安排来创建场景标识是
SAP_COM_0002 的通信安排。在创建通信安排前,需要先创建通信系统,可以参考如下
链接。在创建通信安排时,需要为通信安排绑定创建好的通信系统。通信系统中维护的通信用户,用于在 API 测试时的认证授权。
可以通过
链接访问
Business Acceleration Hub ,查看该 API 相关信息。通过
链接访问该 API 的业务文档,来查看本 API 支持的字段等详细的细节信息。
测试场景
关于本案例更详细的业务部分分析,请参见
Blog-浅析API日记账分录-过账可以实现的场景-业务篇:应收账款(三) 客户发票。
在使用测试工具进行测试前,需要进行一些配置上的维护。由于我们测试对象是 SOAP 类型的 API ,所以我们需要在
Headers 里添加字段
SOAPAction ,值为
“#POST” 。同时,因为我们的
Request Body 使用的是
xml 类型,因此我们也需要添加字段
Content-Type ,值为
test/xml 。
在 Headers 中进行配置
在填写好发送请求的 url 以及通信用户的 Username 和 Password 后,我们就可以填入 Payload 发送 API 请求。以下是用于本场景的 Example Payload: Customer Invoice ,经过 API 工具运行 API 生成客户发票。
在该 Payload 里,部分字段需要根据实际业务需求和系统实际情况自行调整,可参考下表:
字段名 |
示例值 |
AccountingDocumentType |
DZ |
DocumentReferenceID |
Res Clear DTB |
DocumentHeaderText |
Res Clear DTB |
CreatedByUser |
APITEST |
CompanyCode |
1310 |
DocumentDate |
2023-07-31 |
PostingDate |
2023-07-31 |
TaxDeterminationDate |
2023-07-31 |
DebitCreditCode |
H |
DocumentItemText |
GL Item |
AssignmentReference |
Res Clear DTB |
ProfitCenter |
YB700 |
Segment |
1000_C |
FunctionalArea |
YB30 |
DebitCreditCode |
S |
DocumentItemText |
Customer item |
AssignmentReference |
Res Clear DTB |
AmountInTransactionCurrency |
-88.5 |
AmountInTransactionCurrency currencyCode |
CNY |
AmountInTransactionCurrency |
-11.5 |
AmountInTransactionCurrency currencyCode |
CNY |
AmountInTransactionCurrency |
88.5 |
AmountInTransactionCurrency currencyCode |
CNY |
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sfin="http://sap.com/xi/SAPSCORE/SFIN">
<soapenv:Header/>
<soapenv:Body>
<sfin:JournalEntryBulkCreateRequest>
<MessageHeader>
<ID>MSG_2023-07-31</ID>
<!--<ReferenceID></ReferenceID>-->
<CreationDateTime>2023-07-31T12:00:00.1234567Z</CreationDateTime>
</MessageHeader>
<!--1 or more repetitions:-->
<JournalEntryCreateRequest>
<MessageHeader>
<ID>SUB_MSG_2023-07-31</ID>
<!--<ReferenceID></ReferenceID>-->
<CreationDateTime>2023-07-31T12:00:00.1234567Z</CreationDateTime>
</MessageHeader>
<JournalEntry>
<OriginalReferenceDocumentType>BKPFF</OriginalReferenceDocumentType>
<OriginalReferenceDocument/>
<OriginalReferenceDocumentLogicalSystem/>
<BusinessTransactionType>RFBU</BusinessTransactionType>
<AccountingDocumentType>DR</AccountingDocumentType>
<DocumentReferenceID>Res Clear DTB</DocumentReferenceID>
<DocumentHeaderText>Res Clear DTB</DocumentHeaderText>
<CreatedByUser>APITEST</CreatedByUser>
<CompanyCode>1310</CompanyCode>
<DocumentDate>2023-07-31</DocumentDate>
<PostingDate>2023-07-31</PostingDate>
<TaxDeterminationDate>2023-07-31</TaxDeterminationDate>
<Item>
<!--Optional:-->
<ReferenceDocumentItem>1</ReferenceDocumentItem>
<GLAccount>0041000400</GLAccount>
<AmountInTransactionCurrency currencyCode="CNY">-88.5</AmountInTransactionCurrency>
<DebitCreditCode>H</DebitCreditCode>
<DocumentItemText>GL Item</DocumentItemText>
<AssignmentReference>Res Clear DTB</AssignmentReference>
<Tax>
<TaxCode>X2</TaxCode>
<TaxCountry>CN</TaxCountry>
</Tax>
<AccountAssignment>
<ProfitCenter>YB700</ProfitCenter>
<Segment>1000_C</Segment>
<FunctionalArea>YB30</FunctionalArea>
</AccountAssignment>
<ProfitabilitySupplement>
<Customer>13100002</Customer>
</ProfitabilitySupplement>
</Item>
<!--Zero or more repetitions:-->
<DebtorItem>
<ReferenceDocumentItem>2</ReferenceDocumentItem>
<Debtor>13100002</Debtor>
<AmountInTransactionCurrency currencyCode="CNY">100</AmountInTransactionCurrency>
<DebitCreditCode>S</DebitCreditCode>
<DocumentItemText>Customer item</DocumentItemText>
<AssignmentReference>Res Clear DTB</AssignmentReference>
</DebtorItem>
<ProductTaxItem>
<!--<ReferenceDocumentItem></ReferenceDocumentItem>-->
<TaxCode>X2</TaxCode>
<TaxItemClassification>MWS</TaxItemClassification>
<TaxCountry>CN</TaxCountry>
<AmountInTransactionCurrency currencyCode="CNY">-11.5</AmountInTransactionCurrency>
<DebitCreditCode>H</DebitCreditCode>
<TaxBaseAmountInTransCrcy currencyCode="CNY">88.5</TaxBaseAmountInTransCrcy>
</ProductTaxItem>
</JournalEntry>
</JournalEntryCreateRequest>
</sfin:JournalEntryBulkCreateRequest>
</soapenv:Body>
</soapenv:Envelope>
<ProductTaxItem>这部分 TaxCode 需要根据情况来修改,保证借贷方平衡。
本 API 支持创建多个日记账。参考下图,如果添加多段 11 ~ 70 行的
<JournalEntryCreateRequest> 部分的内容,则可以同时创建多个日记账。
批量创建日记账
测试响应
测试 SOAP 类型的 API 与 ODATA 类型的 API 有一点不同的是,无法通过返回的状态码来判断我们是否成功运行,因为运行成功后状态码都是 200 (除了 Username 和 Password 不正确的情况返回状态码 401 )。因此我们需要检查运行 API 后的 Response Body 进行判断。如果
<JournalEntryCreateConfirmation> 中的
AccountingDocument 值为 0000000000 ,则说明创建不成功。我们可以根据 Response Body 后面的提示内容对我们的 Payload 进行修正。
如下是成功创建日记账时返回的 Response ,会返回创建成功的会计凭证号。
<soap-env:Envelope
xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/">
<soap-env:Header/>
<soap-env:Body>
<n0:JournalEntryBulkCreateConfirmation
xmlns:n0="http://sap.com/xi/SAPSCORE/SFIN"
xmlns:prx="urn:sap.com:proxy:CC3:/1SAI/TAS3D871C7855B59197A671:795">
<MessageHeader>
<UUID>814c37bb-2785-1ede-95f1-1645fb941fa2</UUID>
<ReferenceID>MSG_2023-07-31</ReferenceID>
<CreationDateTime>2023-09-20T07:38:32.050021Z</CreationDateTime>
<SenderBusinessSystemID>CC3</SenderBusinessSystemID>
</MessageHeader>
<ConfirmationInterfaceOrignName/>
<JournalEntryCreateConfirmation>
<MessageHeader>
<UUID>814c37bb-2785-1ede-95f1-1645fb943fa2</UUID>
<ReferenceID>SUB_MSG_2023-07-31</ReferenceID>
<CreationDateTime>2023-09-20T07:38:32.053191Z</CreationDateTime>
</MessageHeader>
<JournalEntryCreateConfirmation>
<AccountingDocument>1800000011</AccountingDocument>
<CompanyCode>1310</CompanyCode>
<FiscalYear>2023</FiscalYear>
</JournalEntryCreateConfirmation>
<Log>
<MaximumLogItemSeverityCode>1</MaximumLogItemSeverityCode>
<Item>
<TypeID>605(RW)</TypeID>
<SeverityCode>1</SeverityCode>
<Note>Document posted successfully: BKPFF 180000001113102023 0LEU6F6</Note>
<WebURI>http://ldai2cc3.wdf.sap.corp:50000/sap/xi/docu_apperror?ID=NA&OBJECT=RW605&LANGUAGE=E&MSGV1=BKPFF&MSGV2=180000001113102023&MSGV3=0LEU6F6</WebURI>
</Item>
</Log>
</JournalEntryCreateConfirmation>
<Log/>
</n0:JournalEntryBulkCreateConfirmation>
</soap-env:Body>
</soap-env:Envelope>