浅析API日记账分录-过账可以实现的场景-技术篇:应付账款(一) 供应商贷方凭证
2023-10-13 11:18:50 Author: blogs.sap.com(查看原文) 阅读量:9 收藏

背景介绍…

前提条件…

测试场景…

测试响应…

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: Vendor Credit Memo,经过 API 工具的测试生成供应商贷方凭证。

在该 Payload 里,部分字段需要根据实际业务需求和系统实际情况自行调整,可参考下表:

字段名 示例值
AccountingDocumentType KG
DocumentReferenceID 123
DocumentHeaderText RES Clear WO
CreatedByUser APITEST
CompanyCode 1310
DocumentDate 2023-07-31
PostingDate 2023-07-31
TaxDeterminationDate 2023-07-31
GLAccount 61003000
DebitCreditCode H
AssignmentReference RES Clear WO
DocumentItemText Test Item
TaxCode J2
CostCenter 13101101
Creditor 13100001
DebitCreditCode Vender item
AssignmentReference RES Clear WO
AmountInTransactionCurrency -88.5
AmountInTransactionCurrency currencyCode CNY
AmountInTransactionCurrency 100
AmountInTransactionCurrency currencyCode CNY
TaxBaseAmountInTransCrcy currencyCode -11.5
TaxBaseAmountInTransCrcy currencyCode -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>
            <!--<TestDataIndicator>true</TestDataIndicator>-->
         </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>KG</AccountingDocumentType>
               <DocumentReferenceID>123</DocumentReferenceID>
               <DocumentHeaderText>RES Clear WO</DocumentHeaderText>
               <CreatedByUser>APITEST</CreatedByUser>
               <CompanyCode>1310</CompanyCode>
               <DocumentDate>2023-07-31</DocumentDate>
               <PostingDate>2023-07-31</PostingDate>
               <TaxDeterminationDate>2023-07-13</TaxDeterminationDate>
               <!--<Reference1InDocumentHeader>12345678901234567890</Reference1InDocumentHeader>-->
               <!--<Reference2InDocumentHeader>1234567890</Reference2InDocumentHeader>-->
               <Item>
                  <!--Optional:-->
                  <ReferenceDocumentItem>1</ReferenceDocumentItem>
                  <GLAccount>61003000</GLAccount>
                  <AmountInTransactionCurrency currencyCode="CNY">-88.5</AmountInTransactionCurrency>
                  <DebitCreditCode>H</DebitCreditCode>
                  <DocumentItemText>Test Item</DocumentItemText>
                  <AssignmentReference>RES Clear WO</AssignmentReference>
                  <Tax>
                     <TaxCode>J2</TaxCode>
                  </Tax>
                  <AccountAssignment>
                     <CostCenter>13101101</CostCenter>
                  </AccountAssignment>
               </Item>
               <!--Zero or more repetitions:-->
               <CreditorItem>
                  <ReferenceDocumentItem>2</ReferenceDocumentItem>
                  <Creditor>13100001</Creditor>
                  <AmountInTransactionCurrency currencyCode="CNY">100</AmountInTransactionCurrency>
                  <DebitCreditCode>S</DebitCreditCode>
                  <DocumentItemText>Vender item</DocumentItemText>
                  <AssignmentReference>RES Clear WO</AssignmentReference>
               </CreditorItem>
               <ProductTaxItem>
                  <TaxCode>J2</TaxCode>
                  <TaxItemClassification>VST</TaxItemClassification>
                  <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 支持创建多个日记账。参考下图,如果添加多段 12 ~ 65 行的 <JournalEntryCreateRequest> 部分的内容,则可以同时创建多个日记账。

%u6279%u91CF%u521B%u5EFA%u65E5%u8BB0%u8D26

批量创建日记账

测试 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>059b208d-d7b0-1ede-9a82-3329715fe47f</UUID>
				<ReferenceID>MSG_2023-07-31</ReferenceID>
				<CreationDateTime>2023-10-11T08:38:49.068842Z</CreationDateTime>
				<SenderBusinessSystemID>CC3</SenderBusinessSystemID>
			</MessageHeader>
			<ConfirmationInterfaceOrignName/>
			<JournalEntryCreateConfirmation>
				<MessageHeader>
					<UUID>059b208d-d7b0-1ede-9a82-33297160047f</UUID>
					<ReferenceID>SUB_MSG_2023-07-31</ReferenceID>
					<CreationDateTime>2023-10-11T08:38:49.069117Z</CreationDateTime>
				</MessageHeader>
				<JournalEntryCreateConfirmation>
					<AccountingDocument>1700000009</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 170000000913102023 0LEU7DB</Note>
						<WebURI>http://ldai3cc3.wdf.sap.corp:50000/sap/xi/docu_apperror?ID=NA&amp;OBJECT=RW605&amp;LANGUAGE=E&amp;MSGV1=BKPFF&amp;MSGV2=170000000913102023&amp;MSGV3=0LEU7DB</WebURI>
					</Item>
				</Log>
			</JournalEntryCreateConfirmation>
			<Log/>
		</n0:JournalEntryBulkCreateConfirmation>
	</soap-env:Body>
</soap-env:Envelope>

文章来源: https://blogs.sap.com/2023/10/13/%e6%b5%85%e6%9e%90api%e6%97%a5%e8%ae%b0%e8%b4%a6%e5%88%86%e5%bd%95-%e8%bf%87%e8%b4%a6%e5%8f%af%e4%bb%a5%e5%ae%9e%e7%8e%b0%e7%9a%84%e5%9c%ba%e6%99%af-%e6%8a%80%e6%9c%af%e7%af%87%ef%bc%9a%e5%ba%94-4/
如有侵权请联系:admin#unsafe.sh