接口日志处理类

类: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.mzph.cn/news/797333.shtml

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

相关文章

商城系统如何设计表

小商城&#xff1a;参考千小夜小程序 大商城&#xff1a; 首先根据某个商品的三级分类进来后&#xff0c;我们找到在这个分类下该商品的所有属性&#xff08;也就是泛指该商品不管怎么样都有这些属性&#xff09;&#xff0c;这里指的属性是规格包装&#xff0c;也就是基本属性…

线程池CompletableFuture异步编排复习笔记

一、线程回顾 1.1 初始化线程的 4 种方式 1&#xff09;、继承 Thread public static class Thread01 extends Thread {Overridepublic void run() {System.out.println("当前线程&#xff1a;" Thread.currentThread().getId());int i 10 / 2;System.out.print…

机器学习周记(第三十三周:文献阅读[GWO-GART])2024.4.1~2024.4.7

目录 摘要 ABSTRACT 1 论文信息 1.1 论文标题 1.2 论文摘要 1.3 论文数据集 1.4 论文模型 2 相关知识 摘要 本周阅读了一篇使用GAT结合GRU预测PM2.5浓度的文章。论文模型为图注意力循环网络&#xff08;GART&#xff09;&#xff0c;首次提出了一种新型的多层GAT架构&…

AI预测福彩3D第27弹【2024年4月5日预测--第4套算法重新开始计算第12次测试】

今天继续按照合并后的算法进行测试&#xff0c;因为本套算法的命中率较高。以后有时间的话会在第二篇文章中发布排列3的预测结果。好了&#xff0c;废话不多说了&#xff0c;先上预测结果图&#xff0c;再上综合预测结果~ 2024年4月5日福彩3D的七码预测结果如下 第一套…

关于代码审查的一些思考

作为一名代码审查员&#xff0c;首先我们已经具备了丰富的代码开发经验&#xff0c;并且对提交的代码工程非常熟悉 代码审查可以发现并纠正代码中的错误、缺陷和不良实践。通过多人对代码进行仔细的检查和讨论&#xff0c;能够发现一些单独开发时难以察觉的问题&#xff0c;从…

5G智慧水利数字孪生可视化平台,推进水利行业数字化转型

5G智慧水利数字孪生可视化平台&#xff0c;推进水利行业数字化转型。随着5G技术的快速发展&#xff0c;越来越多的行业开始探索数字化转型的道路。水利行业作为国民经济的重要支柱&#xff0c;也面临着数字化转型的迫切需求。5G智慧水利数字孪生可视化平台作为水利行业数字化转…

Integer的缓存机制

LeetCode练习题--567.字符串的排列 今天刷题的时候,突然发现了一个问题: 为什么明明是相同的Integer值,有的时候使用""就可以,有的时候则必须使用equals方法来进行判断??? 于是我开始在网上查阅资料,几经无果,我开始阅读源码,一段时间后我才知道:原来Integer还有…

global关键字

global关键字 如果你想在局部作用域中修改全局变量&#xff0c;可以基于global关键字进行实现 默认情况下&#xff0c;在局部变量作用域只能对全局变量进行&#xff1a; 读取和修改内部元素&#xff08;可变类型&#xff09;&#xff0c;无法对全局变量进行重新赋值 读取 …

ZS卧式不锈钢离心泵

一、结构与设计特点ZS卧式不锈钢离心泵是一种高效能、耐腐蚀的泵类设备&#xff0c;其核心结构包括电机、泵体、叶轮、轴封和底座等部分。泵体采用优质不锈钢材料&#xff0c;确保了良好的耐蚀性和强度&#xff0c;同时&#xff0c;流道设计优化&#xff0c;减少了流动损失&…

【python基础教程】6 表达式

&#x1f388;个人主页&#xff1a;豌豆射手^ &#x1f389;欢迎 &#x1f44d;点赞✍评论⭐收藏 &#x1f917;收录专栏&#xff1a;python基础教程 &#x1f91d;希望本文对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff0c;让我们共同学习、…

Canon CMOS图像传感器应用和选型

一、CCD和CMOS图像传感器 常见的数字感光元件有两种&#xff1a;CCD&#xff08;电荷耦合器件&#xff09;和CMOS&#xff08;互补金属氧化物半导体&#xff09;。1980年代&#xff0c;CCD进入消费级市场&#xff0c;并长期占据中高端市场。CMOS图像传感器最初作为廉价、低画质…

开启虚拟机时出现此主机支持 Intel VT-x,但 Intel VT-x 处于禁用状态怎么解决

问题描述 虚拟机安装完成后&#xff0c;点击开启此虚拟机弹出系统提示 原因分析&#xff1a; Intel VT-x 处于禁用状态&#xff0c;需要开启。 解决方案&#xff1a; 以联系小新笔记本电脑为例&#xff0c;进入BIOS界面&#xff0c;将Intel Virtual Technology设置成Enabl…

Vue+OpenLayers7入门到实战:OpenLayers如何销毁已经创建好的地图容器

返回《Vue+OpenLayers7》专栏目录:Vue+OpenLayers7入门到实战 前言 本章介绍如何使用OpenLayers7在地图上如何销毁已经创建好的地图容器。 在某些场景下,可能会需要销毁之前的地图,重新创建新的地图的需要,因此本章介绍一下在开始创建地图前如何先销毁之前的地图的功能。…

移动机器人运动规划 | 基于图搜索的Dijkstra 和 A*算法详解

Dijkstra 算法 Dijkstra 算法与BFS算法的区别就是 : 从容器中弹出接下来要访问的节点的规则不同 BFS 弹出: 层级最浅的原则&#xff0c;队列里最下方的元素 Dijkstra 弹出: 代价最小的节点g(n) g(n) :表示的是从开始节点到当前n节点的代价累加 Dijkstra在扩展的时候&#x…

利用native的方式实现跨线程调用

简介 在OpenHarmony应用开发实践中&#xff0c;经常会遇到一些耗时的任务&#xff0c;如I/O操作、域名解析以及复杂计算等。这些任务如果直接在主线程中执行&#xff0c;将会严重阻塞主线程&#xff0c;影响后续任务的正常流程&#xff0c;进而导致用户界面响应延迟甚至卡顿。…

【鸿蒙 HarmonyOS】获取设备的地理位置

一、背景 获取移动设备的地理位置&#xff0c;包含&#xff1a;经度、维度、具体地理位置等&#xff0c;地理位置信息能在许多业务场景中被应用&#xff0c;如导航、地图服务、位置服务、社交媒体等。 下面以一个Demo例子&#xff0c;来实现获取设备地理位置的功能 官方文档…

软件测试下的AI之路(4)

&#x1f60f;作者简介&#xff1a;博主是一位测试管理者&#xff0c;同时也是一名对外企业兼职讲师。 &#x1f4e1;主页地址&#xff1a;【Austin_zhai】 &#x1f646;目的与景愿&#xff1a;旨在于能帮助更多的测试行业人员提升软硬技能&#xff0c;分享行业相关最新信息。…

实时计算平台设计方案:913-基于100G光口的DSP+FPGA实时计算平台

基于100G光口的DSPFPGA实时计算平台 一、产品概述 基于以太网接口的实时数据智能计算一直应用于互联网、网络安全、大数据交换的场景。以DSPFPGA的方案&#xff0c;体现了基于硬件计算的独特性能&#xff0c;区别于X86GPU的计算方案&#xff0c;保留了高带宽特性&…

Ceph学习 - 1.存储知识

文章目录 1.存储基础1.1 基础知识1.1.1 存储基础1.1.2 存储使用 1.2 文件系统1.2.1 简介1.2.2 数据存储1.2.3 存储应用的基本方式1.2.4 文件存储 1.3 小结 1.存储基础 学习目标&#xff1a;这一节&#xff0c;我们从基础知识、文件系统、小节三个方面来学习。 1.1 基础知识 1.…

UART设计

一、UART通信简介 通用异步收发器&#xff0c; 特点&#xff1a;串行、异步、全双工通信 优点&#xff1a;通信线路简单&#xff0c;传输距离远 缺点&#xff1a;传输速度慢 数据传输速率&#xff1a;波特率&#xff08;单位&#xff1a;baud&#xff0c;波特&#xff09; …