接口日志处理类

类:ZCL_IFLOG_UTILITIES

属性:AUTH_RESULTS_LIST

类型:

TY_AUTH_RESULT    Private

受保护部分:

  PRIVATE SECTION.TYPES: BEGIN OF ty_auth_result,funcname TYPE ztall_logcfg-funcname,pass     TYPE abap_bool,END OF ty_auth_result.CLASS-DATA: auth_results_list TYPE HASHED TABLE OF ty_auth_result WITH UNIQUE KEY funcname.

方法:

RE_PROCESS    Static Method    Public
IS_PRD    Static Method    Public
GET_DISTINCT_COUNT    Static Method    Public
FM_AUTHORITY_CHECK    Static Method    Public

方法:RE_PROCESS

参数:

UUID    Importing    Type    SYSUUID_C32

  METHOD re_process.DATA: data_ref TYPE REF TO data.SELECT SINGLE uuid, funcname, import, change_in, table_inFROM ztall_iflogWHERE uuid = @uuidINTO @DATA(record).IF sy-subrc <> 0.RETURN.ENDIF.SELECT funcname, paramtype, pposition, parameter, structureFROM fupararefWHERE funcname = @record-funcnameINTO TABLE @DATA(parameters_tab).IF sy-subrc <> 0.RETURN.ENDIF.DATA: temp_dd04l TYPE STANDARD TABLE OF dd04l.LOOP AT parameters_tab ASSIGNING FIELD-SYMBOL(<ptab>).IF strlen( <ptab>-structure ) > 30.CONTINUE.ENDIF.temp_dd04l = VALUE #( BASE temp_dd04l ( domname = <ptab>-structure ) ).ENDLOOP.IF temp_dd04l IS NOT INITIAL.SELECT domname FROM dd04lFOR ALL ENTRIES IN @temp_dd04lWHERE domname = @temp_dd04l-domnameINTO TABLE @DATA(data_elements).ENDIF.DATA: func      TYPE string,ptab      TYPE abap_func_parmbind_tab,ptab_line TYPE abap_func_parmbind,etab      TYPE abap_func_excpbind_tab,etab_line TYPE abap_func_excpbind.LOOP AT parameters_tab ASSIGNING FIELD-SYMBOL(<parameter>).CLEAR ptab_line.ptab_line-name = <parameter>-parameter.ptab_line-kind = COND #( WHEN <parameter>-paramtype = 'E' THEN abap_func_importingWHEN <parameter>-paramtype = 'I' THEN abap_func_exportingWHEN <parameter>-paramtype = 'T' THEN abap_func_tablesWHEN <parameter>-paramtype = 'C' THEN abap_func_changingELSE                                  '').DATA(json_field_name) = COND string( WHEN ptab_line-kind = abap_func_exporting THEN 'IMPORT'WHEN ptab_line-kind = abap_func_tables    THEN 'TABLE_IN'WHEN ptab_line-kind = abap_func_changing  THEN 'CHANGE_IN'ELSE                                           '').IF json_field_name IS INITIAL.CONTINUE.ENDIF.ASSIGN COMPONENT json_field_name OF STRUCTURE record TO FIELD-SYMBOL(<json_raw>).IF sy-subrc <> 0 OR <json_raw> IS INITIAL.CONTINUE.ENDIF.DATA(json_data) = zcl_iflog_json=>generate_new( json = <json_raw> ).ASSIGN json_data->* TO FIELD-SYMBOL(<json_data>).ASSIGN COMPONENT <parameter>-parameter OF STRUCTURE <json_data> TO FIELD-SYMBOL(<parameter_val>).IF sy-subrc <> 0.CONTINUE.ENDIF.IF ptab_line-kind = abap_func_exporting OR ptab_line-kind = abap_func_changing.CREATE DATA data_ref TYPE (<parameter>-structure).FIELD-SYMBOLS: <temp> TYPE any.ASSIGN <parameter_val>->* TO <temp>.ENDIF.IF ptab_line-kind = abap_func_tables."不知道为什么,如果是表类型的时候会报错,改成和changing一样的方式试运行一下DATA(structure_type) = CAST cl_abap_structdescr( cl_abap_datadescr=>describe_by_name( <parameter>-structure ) ).DATA(table_type)     = CAST cl_abap_tabledescr( cl_abap_tabledescr=>create( structure_type ) ).CREATE DATA data_ref TYPE HANDLE table_type.ASSIGN <parameter_val>->* TO <temp>.*        CREATE DATA data_ref TYPE (<parameter>-structure).
*        ASSIGN <parameter_val>->* TO <temp>.ENDIF.IF data_ref IS BOUND.ASSIGN data_ref->* TO FIELD-SYMBOL(<data_ref>).ENDIF.IF line_exists( data_elements[ domname = <parameter>-structure ] ).<data_ref> = <temp>.ELSE.DATA(json_temp) = zcl_iflog_json=>serialize( data = <parameter_val> ).zcl_iflog_json=>deserialize( EXPORTING json = json_temp CHANGING data = <data_ref> ).ENDIF.GET REFERENCE OF <data_ref> INTO ptab_line-value.INSERT ptab_line INTO TABLE ptab.ENDLOOP.etab_line-name = 'OTHERS'.etab_line-value = 2.INSERT etab_line INTO TABLE etab.CALL FUNCTION record-funcnamePARAMETER-TABLEptabEXCEPTION-TABLEetab.ENDMETHOD.

方法:IS_PRD

参数:RESULT    Returning    Type    ABAP_BOOL

  METHOD is_prd.DATA: role TYPE t000-cccategory.CALL FUNCTION 'TR_SYS_PARAMS'IMPORTINGsystem_client_role = roleEXCEPTIONSno_systemname      = 1no_systemtype      = 2OTHERS             = 3.IF sy-subrc <> 0.
* Implement suitable error handling hereENDIF.IF role = 'P'.result = abap_true.ENDIF.ENDMETHOD.

方法:GET_DISTINCT_COUNT

参数:

TAB_DATA    Importing    Type    ANY TABLE
FIELD_NAME    Importing    Type    CLIKE
COUNT    Returning    Type    INT4

  METHOD get_distinct_count.TYPES: BEGIN OF ty_temp,field TYPE string,END OF ty_temp.DATA: count_table TYPE HASHED TABLE OF ty_temp WITH UNIQUE KEY field,count_wa    LIKE LINE OF count_table.LOOP AT tab_data ASSIGNING FIELD-SYMBOL(<wa>).ASSIGN COMPONENT field_name OF STRUCTURE <wa> TO FIELD-SYMBOL(<field>).IF sy-subrc <> 0.RETURN.ELSE.count_wa-field = <field>.INSERT count_wa INTO TABLE count_table.ENDIF.ENDLOOP.count = lines( count_table ).ENDMETHOD.

方法:FM_AUTHORITY_CHECK

参数:

FM_NAME    Importing    Type    RS38L_FNAM                                                                                                                                        
BUFFER    Importing    Type    ABAP_BOOL    ABAP_TRUE
PASS    Returning    Type    ABAP_BOOL                                                                                                                                        

  METHOD fm_authority_check.DATA: auth_result LIKE LINE OF auth_results_list.IF buffer = abap_true.auth_result = VALUE #( auth_results_list[ funcname = fm_name ] OPTIONAL ).IF auth_result IS NOT INITIAL.pass = auth_result-pass.RETURN.ENDIF.ENDIF.IF auth_result IS INITIAL.DELETE auth_results_list WHERE funcname = fm_name.SELECT SINGLE no_auth_check FROM ztall_logcfg WHERE funcname = @fm_nameINTO @DATA(no_auth_check) BYPASSING BUFFER.IF no_auth_check = abap_true.auth_result = VALUE #( funcname = fm_name pass = abap_true ).ELSE.DATA: wa_tadir TYPE tadir,area     TYPE sobj_name.SELECT SINGLE area FROM enlfdir WHERE funcname = @fm_name INTO @area.IF sy-subrc <> 0.RETURN.ENDIF.CALL FUNCTION 'TR_TADIR_INTERFACE'EXPORTINGwi_test_modus     = ' 'wi_read_only      = 'X'wi_tadir_pgmid    = 'R3TR'wi_tadir_object   = 'FUGR'wi_tadir_obj_name = areaIMPORTINGnew_tadir_entry   = wa_tadirEXCEPTIONSOTHERS            = 1.IF sy-subrc <> 0 OR wa_tadir-devclass IS INITIAL.AUTHORITY-CHECK OBJECT 'S_DEVELOP'ID 'DEVCLASS' DUMMYID 'OBJTYPE' FIELD 'FUGR'ID 'OBJNAME' FIELD areaID 'P_GROUP' DUMMYID 'ACTVT' FIELD '16'.ELSE.AUTHORITY-CHECK OBJECT 'S_DEVELOP'ID 'DEVCLASS' FIELD wa_tadir-devclassID 'OBJTYPE' FIELD 'FUGR'ID 'OBJNAME' FIELD areaID 'P_GROUP' DUMMYID 'ACTVT' FIELD '16'.ENDIF.IF sy-subrc = 0.auth_result = VALUE #( funcname = fm_name pass = abap_true ).ELSE.auth_result = VALUE #( funcname = fm_name pass = abap_false ).ENDIF.ENDIF.ENDIF.pass = auth_result-pass.INSERT auth_result INTO TABLE auth_results_list.ENDMETHOD.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/599568.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

小程序实现订阅功能和测试发送订阅信息

现在一次性订阅是只能用户点一次才能发送一次&#xff0c;而针对长期模板只有规定的几种类目政务、民生、交通等等的才可以&#xff0c;所以说感觉这功能其实已经不是很适合使用了&#xff0c;只适合一些特别的场景才可以使用。 地址&#xff1a;https://developers.weixin.qq…

【STL】list的底层原理及其实现

文章目录 list的介绍list的整体结构设计list的构造代码模拟实现&#xff1a; list节点类的实现list 迭代器Iterator的使用以及实现Iterator的使用Iterator的底层实现反向迭代器 list与vector的比较实现list类 list的介绍 list是可以在常数范围内在任意位置进行插入和删除的序列…

虚拟M的改进

之前为了保留老习俗&#xff0c;虚拟M采用了和M调用一样的约定&#xff0c;这样的好处是习惯上保持一致&#xff0c;小伙伴提出现在是java了&#xff0c;还这样约定方法太啰嗦&#xff0c;确实是有点啰嗦&#xff0c;进行了改进。 改进为三个参数的&#xff0c;方法可以写在任…

Transformer 模型及其典型应用研究

摘要&#xff1a; Transformer 模型是一种基于自注意力机制的深度学习架构&#xff0c;在自然语言处理等领域取得了巨大成功。本文介绍了 Transformer 模型的原理和结构&#xff0c;并探讨了其在语言翻译、文本生成、对话系统、语言模型、图像处理和推荐系统等典型应用领域的研…

一起学习python——基础篇(7)

今天讲一下python的函数。 函数是什么&#xff1f;函数是一段独立的代码块&#xff0c;这块代码是为了实现一些功能&#xff0c;而这个代码块只有在被调用时才能运行。 在 Python 中&#xff0c;使用 def 关键字定义函数&#xff1a; 函数的固定结构就是 def(关键字)函数名字…

vue33

创建 挂载 更新 销毁 动态控制类名 sum累加器 等于上一次返回的结果 item当前正在处理的元素 和data中的数据双向绑定 重新渲染 封装 、 局部注册和全局注册 全局注册&#xff08;适用于通用的&#xff09; 组件通信 保证每个组件实例 都能维护自己的数据 组件通信 父子通信…

公钥私钥详细讲解(小白都能看懂),SSH密钥远程连接服务器,代码,命令详解

公钥及私钥 公钥和私钥是非对称加密技术中的两个关键组成部分&#xff0c;它们是一对配对的密钥&#xff0c;用于加密和解密信息&#xff0c;确保信息传输的安全性。下面我将详细解释公钥和私钥的概念、用法和使用流程&#xff0c;并用现实生活中的例子来帮助理解。 公钥和私…

Linux设备全览:从字符到块,揭秘每种设备的秘密

在Linux的世界里&#xff0c;设备是构成系统的基础&#xff0c;它们使得计算机能够与外界互动。Linux设备可以大致分为几种类型&#xff0c;每种类型都有其独特的特性和用途。&#x1f30c;让我们一起探索这些设备类型及其特性。 1. 字符设备&#xff08;Character Devices&am…

JavaWeb后端——Mybatis

概述 Mybatis&#xff1a;Java程序来对数据库进行操作&#xff0c;一款优秀的持久层框架&#xff0c;用于简化JDBC的开发 SSM&#xff1a;SpringMVC、Spring、Mybatis 快速入门 步骤2&#xff1a;注意数据库连接的四要素 application.properties&#xff1a;springboot 的默…

NzN的数据结构--二叉树part1

你叉叉&#xff0c;让你学数据结构你不学&#xff1b;你叉叉&#xff0c;让你看二叉树你不看。 今天我们来一起学习二叉树部分&#xff0c;先赞后看是好习惯。 一、树的概念及结构 1. 树的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有…

第十二届蓝桥杯大赛软件赛省赛C/C++大学B组

第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组 文章目录 第十二届蓝桥杯大赛软件赛省赛C/C 大学 B 组1、空间2、卡片3、直线4、货物摆放5、路径6、时间显示7、砝码称重8、杨辉三角形9、双向排序10、括号序列 1、空间 1MB 1024KB 1KB 1024byte 1byte8bit // cout<<"2…

在python爬虫中如何处理cookie和session

使用python开发爬虫的过程中&#xff0c;遇到需要登录鉴权的一些页面&#xff0c;必不可少的会接触到cookie和session的使用。本文结合自己最近一次爬虫爬坑的经历&#xff0c;介绍在python爬虫中如何使用Cookie和Session Cookie和Session的介绍 Cookie Cookie 是一种用于跟…