如何了解当前浏览器&x27;SAP ABAP类中的URL

如何了解当前浏览器&x27;SAP ABAP类中的URL,abap,sap-fiori,Abap,Sap Fiori,目前,我需要确定用户的操作是来自Fiori launchpad还是任何其他API(postman) 在用户的操作之后,它将触发我的ABAP类。因此,我需要捕获当前的URL 因此,如果我知道浏览器的当前URL,那么我可以区分Fiori应用程序和其他第三方API 感谢您的输入事实上,我们不需要使用任何FMs或实用程序类来了解当前URL 我们需要检查调试器调用堆栈。您需要深入堆栈并检查可用的局部变量和对象 在我的场景中,我已经深入堆栈,找到了一个对象,它具有我正在寻找的基本URL。我已将该URL导入我

目前,我需要确定用户的操作是来自Fiori launchpad还是任何其他API(postman)

在用户的操作之后,它将触发我的ABAP类。因此,我需要捕获当前的URL

因此,如果我知道浏览器的当前URL,那么我可以区分Fiori应用程序和其他第三方API


感谢您的输入

事实上,我们不需要使用任何FMs实用程序类来了解当前URL

我们需要检查调试器调用堆栈。您需要深入堆栈并检查可用的局部变量和对象


在我的场景中,我已经深入堆栈,找到了一个对象,它具有我正在寻找的基本URL。我已将该URL导入我的调用方法,并编写了我的功能来检查它是第三方API还是Fiori应用。

在普通web应用中,您可以使用HTTP
用户代理
标题。它不包含URL,但它的用途正是您要查找的。如果您的API/代码只返回数据,那么我会针对不同的HTTP客户端/用户代理选择不同的行为。我觉得这是错的。顺便说一句:这个问题基本上看起来像是你自己的另一个问题的翻版,@Florian已经指出:“还要记住,像OData这样的通用API表单正是为了让服务器不可知于消费者的类型。”很高兴你找到了一个解决方案,并感谢你描述它(也许您可以添加找到URL的确切类或FM?)不过,对于任何其他人来说,尽管在ABAP中的某些问题使得代码依赖于调用堆栈是很常见的,但我认为它是坏的风格。模块化代码应该根据您提供的参数而不同,而不是从它调用的地方来。这不是一个好的答案。首先,您应该命名实际C。你遇到的类/对象。其次,这将把你的ABAP类连接到http调用堆栈:你的类永远不会在http请求之外工作,这对于你将来可能希望从后台处理等触发的许多功能来说可能是一个很糟糕的耻辱。更好的解决方案是在一些类似外部对象的控制器中提取URL,然后在一种上下文对象中向下传递它。