如何在类之外访问最终类的保护属性。

2020-08-17 19:30发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,

我有一个需要访问SAP标准类的受保护属性的要求。 我可以获取Object的实例,但是当我尝试访问protected属性时,会导致编译错误。

由于实例对象的类是最终类,所以我也不能继承它。

Class- CL_HTTP_SERVER_NET

属性-M_SECURITY_SESSION_COOKIE

"不允许访问受保护的属性" M_SECURITY_SESSION_COOKIE""

在这方面,我真的很乐意提供帮助。

谢谢

Ranjan。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好,

我有一个需要访问SAP标准类的受保护属性的要求。 我可以获取Object的实例,但是当我尝试访问protected属性时,会导致编译错误。

由于实例对象的类是最终类,所以我也不能继承它。

Class- CL_HTTP_SERVER_NET

属性-M_SECURITY_SESSION_COOKIE

"不允许访问受保护的属性" M_SECURITY_SESSION_COOKIE""

在这方面,我真的很乐意提供帮助。

谢谢

Ranjan。

付费偷看设置
发送
4条回答
Doze时光
1楼 · 2020-08-17 20:02.采纳回答

通过实现一个也继承自超类CL_HTTP_SERVER的类来尝试以下操作,您的类CL_HTTP_SERVER_NET也将超类作为朋友,以便从CL_HTT_SERVER_NET的超类访问受保护的属性。

  1. 创建一个继承自CL_HTTP_SERVER的z类(作为DDIC或在报表中)
  2. 声明一个类方法(或根据需要,选择实例方法),例如 GET_SECURITY_SESSION_COOKIE,它导入类型为CL_HTTP_SERVER_NET的对象并返回STRING
  3. 该方法的实现,以从已导入的类型为CL_HTTP_SERVER_NET的对象(具有相同的超类)访问并返回属性M_SECURITY_SESSION_COOKIE。
  4. < li>在常规程序中,使用(class-)方法,例如 您新类(对象)的GET_SECURITY_SESSION_COOKIE传递CL_HTTP_SERVER_NET对象,以便从超类CL_HTTP_SERVER
 REPORT ztest_http_server_cookie访问其"受保护"属性M_SECURITY_SESSION_COOKIE。

 "定义从CL_HTTP_SERVER继承的Z类,以便从超类CL_HTTP_SERVER访问受保护的属性
 从cl_http_server继承的类locl_http_server。
   公共部分。
     类别方法get_security_session_cookie导入http_server_net类型参考cl_http_server_net
                                               返回值(cookie)TYPE字符串。
 ENDCLASS。

 类别locl_http_server IMPLEMENTATION。
   方法get_security_session_cookie。
     cookie = http_server_net-> m_security_session_cookie。
   终结法。
 ENDCLASS。


 选择开始。

   数据lo_http_server_net类型参考cl_http_server_net。
   创建对象lo_http_server_net类型cl_http_server_net。
   "进行编码
   " ...


   "获取您受保护的Cookie
   DATA(security_session_cookie)= locl_http_server => get_security_session_cookie(lo_http_server_net)。

 
歪着头看世界
2楼-- · 2020-08-17 19:58

感谢Michael。 非常感谢您的帮助:)

My梦
3楼-- · 2020-08-17 19:59

看看这个方法:GET_SEC_SESSION_ID_FROM_COOKIE

您可以在该方法中使用该代码来访问会话cookie :(看起来像请求 对象是公共的)

调用方法cl_http_security_session_icf => security_sessionid_cookie_name
     出口
       客户= c_client
     接收
       cookie_name = lv_secure_session_cookie_name。


   呼叫方法request-> get_cookie
     出口
       名称= lv_secure_session_cookie_name
     输入
       值= sec_session_id。

-Mahesh

悠然的二货
4楼-- · 2020-08-17 20:19

嗨,Mahesh,

感谢您的回复:)。

问题是我正在寻找名称为" SAP_SESSSIONID _ ***"的安全会话cookie值。

而且get_cookie和get_cookies方法都无法检索该值。

我有理由相信SAP正在从会话内存中删除该值。

我只能在类CL_HTTP_SERVER_NET的范围内的受保护属性M_SECURITY_SESSION_COOKIE上获取该值。

但是我无法进一步继承该类,我无法访问此值。

寻找解决此问题的方法。

再次感谢您的快速回复:)。

谢谢

Ranjan。

一周热门 更多>