Currently I need to block a supplier’s invoice if some situatin like GR/IR Deviation Exceeds Threshold happened , I investiage  nodejs soap to realize this .  Let me share the step by step process for this which maybe helpful for you in your project :

Prerequisites:

  • You have installed nodejs. Make sure you run the latest long-term support (LTS) version of Node.js with an even number like 16. Refrain from using odd versions, for which some modules with native parts will have no support and thus might even fail to install.
  • You have installed the latest version of Visual Studio Code.

 

Step 1:  Check the Journal Entry – Change in API hub and download the api specificaiton .

Step 2: Configure communication arrangement in S/4 Hana cloud :

Step 3: create node project to call the soap api in S/4 Hana Cloud to block supplier invoices with following command :

mkdir  sdkforsoap

cd  sdkforsoap

mkdir external

copy the downloaded API specification to folder external

npm  init

code .

 

Step 4: adjust packge.json and index.js

package.json

{
  "name": "sdkforsoap",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo "Error: no test specified" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {
    "soap": "^0.43.0",
    "short-uuid": "^4.2.0",
    "uuid": "^8.3.2"
  }
}

index.js

const soap = require('soap');

const short = require('short-uuid');
const uuid = require('uuid');

var sid =short.generate();
var id = uuid.v1();
{encoding:'utf8',flag:'r'});

var options = {
  forceSoap12Headers: true
};
var date1 =new Date().toISOString();

var args = {'MessageHeader':{'ID':sid,'UUID':id,'CreationDateTime':date1},'JournalEntryHeader':{'MessageHeader':{'ID':sid,'CreationDateTime':date1},'HeaderKey':{'AccountingDocument':'5100000050','CompanyCode':'1310','FiscalYear':'2022'},'DocumentHeaderTextChange':{'DocumentHeaderText':'hello1','FieldValueChangeIsRequested':true}},'JournalEntryDebtorCreditorItem':{'MessageHeader':{'ID':sid,'CreationDateTime':date1},'ItemKey':{'AccountingDocument':'5100000050','CompanyCode':'1310','FiscalYear':'2022','AccountingDocumentItemID':'1'},'PaymentBlockingReasonCodeChange':{'PaymentBlockingReasonCode':'A','FieldValueChangeIsRequested':true}}};


soap.createClient('./external/JOURNALENTRYBULKCHANGEREQUEST_.wsdl',options,function(err,client){
  client.setEndpoint('https://my300018-api.saps4hanacloud.cn/sap/bc/srt/scs_ext/sap/journalentrybulkchangerequest_');
  client.setSecurity(new soap.BasicAuthSecurity('username','password'));
  // client.addSoapHeader('MessageID',id,'Action','http://sap.com/xi/SAPSCORE/SFIN/JournalEntryBulkChangeRequest_In/JournalEntryBulkChangeRequest_InRequest')

   client.addSoapHeader({MessageID:id},'http://www.w3.org/2005/08/addressing','wsa','http://www.w3.org/2005/08/addressing');

   client.addSoapHeader({CreationDateTime:date1});

   client.setSOAPAction('JOURNALENTRYBULKCHANGEREQUEST_.binding.JournalEntryBulkChangeRequest_In');
  client.JournalEntryBulkChangeRequest_In(args,function(err,result){

    if(err){console.log(err);}else{console.log(result);}

  });
});

Step 5: run the application .

Step 6, check the result in s/4 hana cloud

 

To be continue , I will adjust code to be deployed on BTP cloud foundry runtime and share  the steps

 

Sara Sampaio

Sara Sampaio

Author Since: March 10, 2022

0 0 votes
Article Rating
Subscribe
Notify of
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x