Enterprise Resource Planning Blogs by SAP
Get insights and updates about cloud ERP and RISE with SAP, SAP S/4HANA and SAP S/4HANA Cloud, and more enterprise management capabilities with SAP blog posts.
cancel
Showing results for 
Search instead for 
Did you mean: 
Wesley
Participant
In this blog post you will learn some constraints, help information about API Journal Entry – Change (Asynchronous).

To learn more about Journal Entry APIs at Guidelines for API Journal Entry – Post.

1. Usage


API Journal Entry - Change (Asynchronous) was delivered in CE1908, which provides asynchronous SOAP API which enable remote systems to change part of the header or item information of existing journal entries in the S4/HANA tenant.

This service contains importing parameter tables for:

  • Journal entry header lines

  • G/L item lines

  • Accounts payable and accounts receivable item lines


To learn more about the information of importing parameters at SAP Help Journal Entry - Change (Asynchronous).

Regarding the changeability of the fields delivered in Change API, you need to know that the change API shares the field status related configuration with Manage Journal Entry app, which controls whether a field is editable or not. Therefore, to some degree, user can check the Manage Journal Entry app for the field changeability as a reference. That is, If a field is not changeable on the user interface, the change API does not allow changes, either. Nevertheless, the change API and the Manage Journal Entry app are different products, there can be inconsistent between them. For example, a field is editable in Manage Journal Entry app but it is not in the scope of the change API at all.

2. Prerequisite


In order to use this API, you need to firstly configure communication arrangement for communication scenario Finance – Posting Integration (SAP_COM_0002).

Read more at Guidelines for Configuring Communication Scenario Finance – Posting Integration (SAP_COM_0002)


3. How to Enable Extension Fields


To use extension fields, you need to create and enable them for Journal Entry - Change API in App Custom Fields and Logic.

Read more at Guidelines for Creating and Enabling Extension Field for Journal Entry API

 

4. How to Test


This  API is SOAP service. I suggest to test it with SOAPUI.

Read more at Guidelines for Testing Journal Entry API with SOAPUI and Checking Response Message

5. How to Check Response Message


As this is asynchronous API, you need to check the response message via Fiori App Message Dashboard.

Read more at Guidelines for Testing Journal Entry API with SOAPUI and Checking Response Message

Since CE1911, we provide Outbound API Journal Entry – Change Confirmation (Asynchronous), which is the outbound service of API Journal Entry – Change (Asynchronous). By means of this outbound service, the execution result can be sent to the sender system proactively.

Read more at Guidelines for Enabling Outbound API Journal Entry – Change Confirmation (Asynchronous)

6. Constraints and Consulting Questions


6.1 Constraints


Journal Entry – Change API has the following limitations:

  • Do not support changing the journal entry with no entry view

  • As I said in the part of Usage, it does not mean that all the input fields in Change API’s XML structure are changeable for one Journal Entry. Whether the field is changeable depends on the following factors on specific system:



  1. Document Change Rules, Line Item in customizing controls if the field is editable for the specific combination of Account Type, Transaction Type and Company Code.


For S/4HANA Cloud, this is preconfigured. No SSCUI is available for this customizing.


2. The field status must not be suppress, which is controlled in Posting Key and Field Status Group maintained in account master data 



For S/4HANA Cloud, the customizing of Posting Key is preconfigured. No SSCUI is available for this customizing.




  • Must keep the sequence of items as JournalEntryHeader, JournalEntryGLItem, JournalEntryDebtorCreditorItem. Incorrect sequencing or mixing of different types of items results in missing data lines. No error message is issued in such case.


The screenshot shows the incorrect example.


7.Appendix



  1. SAP Help Page


Journal Entry - Change (Asynchronous)

  1. SAP API Business Hub


Journal Entry - Change (Asynchronous)

  1. Example Payload
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sfin="http://sap.com/xi/SAPSCORE/SFIN">
    <soapenv:Header/>
    <soapenv:Body>
    <sfin:JournalEntryBulkChangeRequestMessage>
    <MessageHeader>
    <ID>MSG_20190512_4.12</ID>
    <CreationDateTime>2019-04-12T12:00:00.1234567Z</CreationDateTime>
    </MessageHeader>
    <!--Zero or more repetitions:-->
    <JournalEntryHeader>
    <MessageHeader>
    <ID>MSG_Request_1_Header</ID>
    <CreationDateTime>2019-04-12T12:00:00.1234567Z</CreationDateTime>
    </MessageHeader>
    <HeaderKey>
    <AccountingDocument>1900001044</AccountingDocument>
    <CompanyCode>1010</CompanyCode>
    <FiscalYear>2019</FiscalYear>
    </HeaderKey>
    <!--Optional:-->
    <DocumentHeaderTextChange>
    <DocumentHeaderText>Change API Test</DocumentHeaderText>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </DocumentHeaderTextChange>
    <!--Optional:-->
    <DocumentReferenceIDChange>
    <DocumentReferenceID>Change Ref ID</DocumentReferenceID>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </DocumentReferenceIDChange>
    </JournalEntryHeader>
    <JournalEntryGLItem>
    <MessageHeader>
    <ID>MSG_Request_1_GL_IT2</ID>
    <CreationDateTime>2019-04-12T12:00:00.1234567Z</CreationDateTime>
    </MessageHeader>
    <ItemKey>
    <AccountingDocument>1900001044</AccountingDocument>
    <CompanyCode>1010</CompanyCode>
    <FiscalYear>2019</FiscalYear>
    <AccountingDocumentItemID>2</AccountingDocumentItemID>
    </ItemKey>
    <!--Optional:-->
    <DocumentItemTextChange>
    <DocumentItemText>Change Item 2</DocumentItemText>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </DocumentItemTextChange>
    <!--Optional:-->
    <AssignmentReferenceChange>
    <AssignmentReference>Chg Assignment 2</AssignmentReference>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </AssignmentReferenceChange>
    </JournalEntryGLItem>
    <JournalEntryGLItem>
    <MessageHeader>
    <ID>MSG_Request_1_GL_IT3</ID>
    <CreationDateTime>2019-04-12T12:00:00.1234567Z</CreationDateTime>
    </MessageHeader>
    <ItemKey>
    <AccountingDocument>1900001044</AccountingDocument>
    <CompanyCode>1010</CompanyCode>
    <FiscalYear>2019</FiscalYear>
    <AccountingDocumentItemID>3</AccountingDocumentItemID>
    </ItemKey>
    <!--Optional:-->
    <DocumentItemTextChange>
    <DocumentItemText>Change Item 3</DocumentItemText>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </DocumentItemTextChange>
    <!--Optional:-->
    <AssignmentReferenceChange>
    <AssignmentReference>Chg Assignment 3</AssignmentReference>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </AssignmentReferenceChange>
    </JournalEntryGLItem>
    <JournalEntryDebtorCreditorItem>
    <MessageHeader>
    <ID>MSG_Request_1_AR_IT1</ID>
    <CreationDateTime>2019-04-12T12:00:00.1234567Z</CreationDateTime>
    </MessageHeader>
    <ItemKey>
    <AccountingDocument>1900001044</AccountingDocument>
    <CompanyCode>1010</CompanyCode>
    <FiscalYear>2019</FiscalYear>
    <AccountingDocumentItemID>1</AccountingDocumentItemID>
    </ItemKey>
    <DocumentItemTextChange>
    <DocumentItemText>Change Item 1</DocumentItemText>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </DocumentItemTextChange>
    <!--Optional:-->
    <AssignmentReferenceChange>
    <AssignmentReference>Chg Assignment 1</AssignmentReference>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </AssignmentReferenceChange>
    <!--Optional:-->
    <!--<SpecialGLAccountAssignmentChange>-->
    <!--<SpecialGLAccountAssignment>?</SpecialGLAccountAssignment>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</SpecialGLAccountAssignmentChange>-->
    <!--Optional:-->
    <!--<Reference1IDByBusinessPartnerChange>-->
    <!--<Reference1IDByBusinessPartner>Ref Key 1</Reference1IDByBusinessPartner>-->
    <!--<FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>-->
    <!--</Reference1IDByBusinessPartnerChange>-->
    <!--Optional:-->
    <BPBankAccountInternalIDChange>
    <BPBankAccountInternalID>0001</BPBankAccountInternalID>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </BPBankAccountInternalIDChange>
    <!--Optional:-->
    <HouseBankChange>
    <HouseBank>DEBK2</HouseBank>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </HouseBankChange>
    <!--Optional:-->
    <HouseBankAccountChange>
    <HouseBankAccount>DEAC2</HouseBankAccount>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </HouseBankAccountChange>
    <!--Optional:-->
    <!--<InvoiceReferenceChange>-->
    <!--<InvoiceReference>?</InvoiceReference>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</InvoiceReferenceChange>-->
    <!--Optional:-->
    <!--<InvoiceReferenceFiscalYearChange>-->
    <!--<InvoiceReferenceFiscalYear>?</InvoiceReferenceFiscalYear>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</InvoiceReferenceFiscalYearChange>-->
    <!--Optional:-->
    <!--<InvoiceItemReferenceChange>-->
    <!--<InvoiceItemReference>?</InvoiceItemReference>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</InvoiceItemReferenceChange>-->
    <!--Optional:-->
    <AmountInPaymentCurrencyChange>
    <AmountInPaymentCurrency currencyCode="GBP">125</AmountInPaymentCurrency>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </AmountInPaymentCurrencyChange>
    <!--Optional:-->
    <!--<LastDunningDateChange>-->
    <!--<LastDunningDate>?</LastDunningDate>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</LastDunningDateChange>-->
    <!--Optional:-->
    <!--<DunningBlockingReasonCodeChange>-->
    <!--<DunningBlockingReasonCode listID="?" listVersionID="?" listAgencyID="?">?</DunningBlockingReasonCode>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</DunningBlockingReasonCodeChange>-->
    <!--Optional:-->
    <!--<DunningLevelChange>-->
    <!--<DunningLevel listID="?" listVersionID="?" listAgencyID="?">?</DunningLevel>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</DunningLevelChange>-->
    <!--Optional:-->
    <!--<DunningKeyChange>-->
    <!--<DunningKey listID="?" listVersionID="?" listAgencyID="?">?</DunningKey>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</DunningKeyChange>-->
    <!--Optional:-->
    <PaymentTermsChange>
    <PaymentTerms>0003</PaymentTerms>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </PaymentTermsChange>
    <!--Optional:-->
    <DueCalculationBaseDateChange>
    <DueCalculationBaseDate>2019-05-31</DueCalculationBaseDate>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </DueCalculationBaseDateChange>
    <!--Optional:-->
    <!--<CashDiscount1DaysChange>-->
    <!--<CashDiscount1Days>?</CashDiscount1Days>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</CashDiscount1DaysChange>-->
    <!--Optional:-->
    <!--<CashDiscount2DaysChange>-->
    <!--<CashDiscount2Days>?</CashDiscount2Days>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</CashDiscount2DaysChange>-->
    <!--Optional:-->
    <!--<NetPaymentDaysChange>-->
    <!--<NetPaymentDays>?</NetPaymentDays>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</NetPaymentDaysChange>-->
    <!--Optional:-->
    <!--<CashDiscount1PercentChange>-->
    <!--<CashDiscount1Percent>?</CashDiscount1Percent>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</CashDiscount1PercentChange>-->
    <!--Optional:-->
    <!--<CashDiscount2PercentChange>-->
    <!--<CashDiscount2Percent>?</CashDiscount2Percent>-->
    <!--<FieldValueChangeIsRequested>false</FieldValueChangeIsRequested>-->
    <!--</CashDiscount2PercentChange>-->
    <!--Optional:-->
    <PaymentMethodChange>
    <PaymentMethod>E</PaymentMethod>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </PaymentMethodChange>
    <!--Optional:-->
    <PaymentBlockingReasonCodeChange>
    <PaymentBlockingReasonCode listID="?" listVersionID="?" listAgencyID="?">9</PaymentBlockingReasonCode>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </PaymentBlockingReasonCodeChange>
    <!--Optional:-->
    <FixedCashDiscountChange>
    <FixedCashDiscount>1</FixedCashDiscount>
    <FieldValueChangeIsRequested>true</FieldValueChangeIsRequested>
    </FixedCashDiscountChange>
    </JournalEntryDebtorCreditorItem>
    </sfin:JournalEntryBulkChangeRequestMessage>
    </soapenv:Body>
    </soapenv:Envelope>​



 
1 Comment