There's a native codeunit called 1290 SOAP Web Service Request Mgt that exposes methods for calling SOAP ws. Many of them are however usable only on-premise.
With pure AL, you can do something like:
HttpContentWS.WriteFrom(ContentText);
HttpContentWS.GetHeaders(HttpHeadersWS);
HttpHeadersWS.Add('SOAPAction','tempuri.org/GetLoginInformation');
HttpHeadersWS.Remove('Content-Type');
HttpHeadersWS.Add('Content-Type','text/xml');
// Invoke the web service
HttpClientWS.Post(GetWebServiceAddress,HttpContentWS,HttpResponseMessageWS);
where XMLRequestString is the SOAP message that you need to create.
My suggestion: don't do all with pure AL, handling external web services (maybe with complex parameters or protocols like SOAP or particular authentication types) can be handled more efficiently by using Azure Functions that calls that WS.