ABAP FPM

1.效果

2.查询条件的feed class

SE11创建feed class数据的结构

ZCL_FPM_FIFO_SEARCH

GET_DEFINITION方法代码

  METHOD if_fpm_guibb_search~get_definition.eo_field_catalog_attr ?= cl_abap_structdescr=>describe_by_name( 'ZSS_FIFO_DATA'  ).ENDMETHOD.

PROCESS_EVENT代码

  METHOD if_fpm_guibb_search~process_event.DATA: lo_fpm        TYPE REF TO if_fpm,lo_event_data TYPE REF TO cl_fpm_parameter.CHECK io_event->mv_event_id = if_fpm_guibb_search=>fpm_execute_search.  "查询事件lo_fpm = cl_fpm_factory=>get_instance( ).CREATE OBJECT lo_event_data.lo_event_data->if_fpm_parameter~set_value(EXPORTINGiv_key   = 'SEL_TAB'iv_value = it_fpm_search_criteria).lo_event_data->if_fpm_parameter~set_value(EXPORTINGiv_key   = 'MAX_NUM'iv_value = iv_max_num_results).lo_fpm->raise_event_by_id(EXPORTINGiv_event_id   = if_fpm_guibb_list=>gc_event_list_filterio_event_data =  lo_event_data).ENDMETHOD.

3.列表输出结果的feed class

GET_DEFINITION代码

  METHOD if_fpm_guibb_list~get_definition.eo_field_catalog ?= cl_abap_tabledescr=>describe_by_name( 'ZTYT_FIFO_DATA'  ).ENDMETHOD.

PROCESS_EVENT代码

  METHOD if_fpm_guibb_list~process_event.DATA: lt_fpm_search_criteria TYPE fpmgb_t_search_criteria,lv_max_num             TYPE i,rt_matnr               TYPE range_t_matnr,rs_matnr               TYPE range_s_matnr,ls_rsds                TYPE rsdsselopt,rt_charg               TYPE ranges_charg_tt,rs_charg               TYPE range_charg_s,ls_fifo                TYPE zss_fifo_data,lv1                    TYPE i,ls_chart               TYPE zss_fifo_chart.TYPES:BEGIN OF ty_reason,sign   TYPE ddsign,option TYPE ddoption,low    TYPE zzreason,high   TYPE zzreason,END OF ty_reason.DATA: rt_reason TYPE TABLE OF ty_reason,rs_reason TYPE ty_reason.TYPES:BEGIN OF ty_year,sign   TYPE ddsign,option TYPE ddoption,low    TYPE mjahr,high   TYPE mjahr,END OF ty_year.DATA: rt_year TYPE TABLE OF ty_year,rs_year TYPE ty_year.TYPES:BEGIN OF ty_month,sign   TYPE ddsign,option TYPE ddoption,low    TYPE month,high   TYPE month,END OF ty_month.DATA: rt_month TYPE TABLE OF ty_month,rs_month TYPE ty_month.FIELD-SYMBOLS: <fs_params_search> TYPE fpmgb_s_search_criteria.CASE io_event->mv_event_id.WHEN if_fpm_guibb_list~gc_event_list_filter.io_event->mo_event_data->get_value(EXPORTINGiv_key   = 'SEL_TAB'IMPORTINGev_value =  lt_fpm_search_criteria).io_event->mo_event_data->get_value(EXPORTINGiv_key   = 'MAX_NUM'IMPORTINGev_value =  lv_max_num).LOOP AT lt_fpm_search_criteria INTO DATA(ls_search_criteria).CLEAR: ls_rsds,rs_matnr.CASE ls_search_criteria-search_attribute.WHEN 'MATNR'.TRY.cl_fpm_guibb_search_conversion=>to_abap_select_option(EXPORTINGis_fpm_search_row  = ls_search_criteria    " GUIBB search: Search operatorRECEIVINGrs_abap_sel_option = ls_rsds     " ABAP: Selection option (EQ/BT/CP/...)).MOVE-CORRESPONDING ls_rsds TO rs_matnr.APPEND rs_matnr TO rt_matnr.CATCH cx_fpmgb.ENDTRY.WHEN 'CHARG'.TRY.cl_fpm_guibb_search_conversion=>to_abap_select_option(EXPORTINGis_fpm_search_row  = ls_search_criteria    " GUIBB search: Search operatorRECEIVINGrs_abap_sel_option = ls_rsds     " ABAP: Selection option (EQ/BT/CP/...)).MOVE-CORRESPONDING ls_rsds TO rs_charg.APPEND rs_charg TO rt_charg.CATCH cx_fpmgb.ENDTRY.WHEN 'REASON'.TRY.cl_fpm_guibb_search_conversion=>to_abap_select_option(EXPORTINGis_fpm_search_row  = ls_search_criteria    " GUIBB search: Search operatorRECEIVINGrs_abap_sel_option = ls_rsds     " ABAP: Selection option (EQ/BT/CP/...)).MOVE-CORRESPONDING ls_rsds TO rs_reason.APPEND rs_reason TO rt_reason.CATCH cx_fpmgb.ENDTRY.WHEN 'YEAR'.TRY.cl_fpm_guibb_search_conversion=>to_abap_select_option(EXPORTINGis_fpm_search_row  = ls_search_criteria    " GUIBB search: Search operatorRECEIVINGrs_abap_sel_option = ls_rsds     " ABAP: Selection option (EQ/BT/CP/...)).MOVE-CORRESPONDING ls_rsds TO rs_year.APPEND ls_rsds TO rt_year.CATCH cx_fpmgb.ENDTRY.WHEN 'MONTH'.TRY.cl_fpm_guibb_search_conversion=>to_abap_select_option(EXPORTINGis_fpm_search_row  = ls_search_criteria    " GUIBB search: Search operatorRECEIVINGrs_abap_sel_option = ls_rsds     " ABAP: Selection option (EQ/BT/CP/...)).MOVE-CORRESPONDING ls_rsds TO rs_month.APPEND rs_month TO rt_month.CATCH cx_fpmgb.ENDTRY.ENDCASE.ENDLOOP.ENDCASE.CLEAR: gt_fifo,zcl_fpm_fifo_chart=>gt_fifo.SELECT  a~matnr,b~maktx,a~charg,SUM( a~menge ) AS quantity,substring( budat_mkpf,1,4 ) AS year,substring( budat_mkpf,5,2 ) AS month,c~zzreason_text AS reasonFROM mseg AS aLEFT JOIN makt AS bON a~matnr = b~matnrINNER JOIN zmmt0008 AS cON a~zzreason = c~zzreasonWHERE werks = '1300'AND  a~zzreason <> ''AND a~matnr IN @rt_matnrAND a~charg IN @rt_chargAND a~zzreason IN @rt_reasonAND  b~spras = @sy-languGROUP BY a~matnr,b~maktx,a~charg,budat_mkpf,c~zzreason_textINTO TABLE @DATA(lt_temp).LOOP AT lt_temp INTO DATA(ls_temp).MOVE-CORRESPONDING ls_temp TO ls_fifo.COLLECT ls_fifo INTO gt_fifo.CLEAR: ls_temp,ls_fifo.ENDLOOP.CHECK lv_max_num IS NOT INITIAL.LOOP AT gt_fifo INTO ls_fifo.lv1 = lv1 + 1.MOVE-CORRESPONDING ls_fifo TO ls_chart.COLLECT ls_chart INTO zcl_fpm_fifo_chart=>gt_fifo.CLEAR: ls_chart.IF lv1 > lv_max_num.DELETE gt_fifo.CONTINUE.ENDIF.ENDLOOP.ENDMETHOD.

GET_DATA代码

  METHOD if_fpm_guibb_list~get_data.IF iv_eventid->mv_event_id = if_fpm_guibb_list~gc_event_list_filter.ct_data = gt_fifo.ev_data_changed = abap_true.ENDIF.ENDMETHOD.

4.图表CHART分析 feed class

SE11创建CHART的数据结构

因为时间有限,这里偷懒,直接用class的静态属性在多个组件之间共享数据,有更标准的做法

后续有时间再写blog演示

GET_DEFINITION代码

  METHOD if_fpm_guibb_chart~get_definition.DATA lo_field_catalog TYPE REF TO cl_abap_tabledescr.lo_field_catalog ?= cl_abap_tabledescr=>describe_by_name( 'ZTYT_FIFO_CHART'  ).io_chart_model->get_table_model( )->set_definition(EXPORTINGio_field_catalog     = lo_field_catalog    " Runtime Type Services).ENDMETHOD.

GET_DATA代码

  METHOD if_fpm_guibb_chart~get_data.IF io_event->mv_event_id = if_fpm_guibb_list=>gc_event_list_filter.io_chart_data->get_table_model( )->set_data(EXPORTINGit_data = gt_fifo).ENDIF.ENDMETHOD.

5.事务码FPM_WB创建组件配置

由于我之前已经创建过了,截图都是编辑状态的,和新建略有差异

5.1 创建查询组件的配置

输入步骤2的feed class

添加搜索条件

5.2 创建列表组件的配置

输入步骤3创建的feed class

添加列

5.3 创建图表组件的配置

输入步骤4创建的feed class

图表类型选条形图

5.4 创建OVP概览页面组件配置

通过FPM_OVP_COMPONENT概览页面组件把查询,列表,CHART等组件UIBB BLOCK组合到一个页面

6.创建应用程序配置

点击test fpm应用程序效果

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

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

相关文章

某大麦手机端-抢票

引言 仅供学习研究&#xff0c;欢迎交流 抢票难&#xff0c;难于上青天&#xff01;无论是演唱会、话剧还是体育赛事&#xff0c;大麦网的票总是秒光。作为一名技术爱好者&#xff0c;你是否想过用技术手段提高抢票成功率&#xff1f;本文将为你揭秘大麦手机端抢票的核心技术…

【免费】2007-2019年各省地方财政文化体育与传媒支出数据

2007-2019年各省地方财政文化体育与传媒支出数据 1、时间&#xff1a;2007-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政文化体育与传媒支出 4、范围&#xff1a;31省 5、指标说明&#xff1a;地方财政在文化、…

Playwright从入门到实战:比Selenium更快的数据爬取案例实战

摘要 Playwright 是微软开源的下一代浏览器自动化工具&#xff0c;凭借其高性能、跨浏览器支持和现代化设计&#xff0c;迅速成为 Web 自动化领域的热门选择。本文将从 安装配置 开始&#xff0c;通过 实战演练 展示其核心功能&#xff0c;并与 Selenium 深度对比&#xff0c;…

音频知识 参数分析

通道布局 参考 通过pcm音频数据计算分贝 理解FFT和信号加窗原理及意义 dts音效大师教程

《STL 六大组件之容器探秘:深入剖析 vector》

目录 一、vector 简介二、vector 的常用接口1. 构造函数&#xff08;constructor function&#xff09;2. 与迭代器相关的接口&#xff08;iterator&#xff09;3. 与容量相关的接口&#xff08;capacity&#xff09;4. 与访问和修改有关的接口&#xff08;access、modify&…

基于深度学习的手势识别系统设计

目录 背景与分析&#xff1a; 基于深度学习的手势识别系统设计 课题要求 技术分析&#xff1a; 技术点概述&#xff1a; 过程&#xff08;主体展示为主&#xff0c;部分功能不一一展示&#xff09;&#xff1a; 数据集&#xff08;17个G&#xff09;&#xff1a; 源码、…

【SpringCloud】Eureka的使用

3. Eureka 3.1 Eureka 介绍 Eureka主要分为两个部分&#xff1a; EurekaServer: 作为注册中心Server端&#xff0c;向微服务应用程序提供服务注册&#xff0c;发现&#xff0c;健康检查等能力。 EurekaClient: 服务提供者&#xff0c;服务启动时&#xff0c;会向 EurekaS…

构建大语言模型应用:简介(第一部分)

本专栏聚焦大语言模型&#xff08;LLM&#xff09;相关内容的解析&#xff0c;通过检索增强生成&#xff08;RAG&#xff09;应用的视角来进行。 本系列文章 简介&#xff08;本文&#xff09;数据准备句子转换器向量数据库搜索与检索大语言模型开源检索增强生成评估大语言模…

Python:日志模块操作及基本配置,日志格式化输出

logger(日志管理器)&#xff1a;用户默认是root&#xff0c;其配置步骤为&#xff1a; 1.初始化对象 2.设置级别 3.定义handler(控制台或文件显示) 4.格式化输出 import logging #创建log文件并设置级别 logging.basicConfig(filenametext.log, levellogging.DEBUG) #在文…

The selected directory is not a valid home for Go SDK

安装完毕Go和GoLand之后&#xff0c;重新配置GoLand的GOROOT时&#xff0c;可能会报错 The selected directory is not a valid home for Go SDK 需要找到安装Go的目录&#xff0c;我的目录如下 D:\SoftFolder\Go\src\runtime\internal\sys 进入到sys文件下&#xff0c;找到…

pycharm找不到conda可执行文件解决办法

配置一个新项目&#xff0c;需要使用远程服务器环境的时候&#xff0c;找不到anaconda里面的python可执行文件&#xff0c;怎么都解决不了&#xff0c;很尴尬&#xff0c;看了很多&#xff0c;终于找到一个博客有用&#xff1a; https://blog.csdn.net/weixin_43912188/articl…

Blender多摄像机怎么指定相机渲染图像

如题目所说&#xff0c;当blender的场景里面有摄像机的时候&#xff0c;按F12可以预览渲染结果&#xff0c;但是当有多个摄像机的时候就不知道使用哪个进行渲染了。 之前在网上没有找到方法&#xff0c;就用笨方法&#xff0c;把所有的摄像机删除&#xff0c;然后设置自己需要…

org.apache.maven.surefire:surefire-junit-platform:jar:2.22.2 Maven打包失败

org.apache.maven.surefire:surefire-junit-platform:jar:2.22.2 解决办法 勾上这个&#xff0c;打包时跳过测试代码

CKS认证 | Day3 K8s容器运行环境安全加固

一、最小特权原则&#xff08;POLP&#xff09; 1&#xff09;最小特权原则 (Principle of least privilege&#xff0c;POLP) &#xff1a; 是一种信息安全概念&#xff0c;即为用户提供执行其工作职责所需的最 小权限等级或许可。 最小特权原则被广泛认为是网络安全的最佳实…

项目-苍穹外卖(十七) Apache POI+导出数据

一、介绍 二、入门案例 package com.sky.test;import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.io.File; import java.io.FileNotFoundException; import jav…

2023第十四届蓝桥杯大赛软件赛国赛C/C++ 大学 B 组(真题题解)(C++/Java题解)

本来想刷省赛题呢&#xff0c;结果一不小心刷成国赛了 真是个小迷糊〒▽〒 但&#xff0c;又如何( •̀ ω •́ )✧ 记录刷题的过程、感悟、题解。 希望能帮到&#xff0c;那些与我一同前行的&#xff0c;来自远方的朋友&#x1f609; 大纲&#xff1a; 一、子2023-&#xff…

Cannot find a valid baseurl for repo: centos-sclo-sclo/x86_64

​ rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-latest-5.0.el7.noarch.rpmyum clean allyum macache fast​ 编辑配置文件 /etc/yum.repos.d/zabbix.repo and enable zabbix-frontend repository. [zabbix-frontend]...enabled1... 下载相关…

【STM32】WDG看门狗(学习笔记)

学习来源----->江协科技STM32 WDG简介 WDG&#xff08;Watchdog&#xff09;看门狗看门狗可以监控程序的运行状态&#xff0c;当程序因为设计漏洞、硬件故障、电磁干扰等原因&#xff0c;出现卡死或跑飞现象时&#xff0c;看门狗能及时复位程序&#xff0c;避免程序陷入长…

Nginx RTMP 服务器开发设计与实现

引言 Nginx 是一个高性能的 Web 服务器和反向代理服务器&#xff0c;广泛应用于大规模网站的高并发访问中。RTMP&#xff08;Real-Time Messaging Protocol&#xff09;是由 Adobe 提出的一个用于流媒体传输的协议&#xff0c;广泛应用于视频直播领域。通过 Nginx 的 RTMP 模块…

plantsimulation编辑图标怎么把图标旋转90°

1、打开要旋转的图标&#xff0c;点击“导出” 2、随意设置个文件名&#xff0c;点击保存。 3、用画图打开&#xff0c;点击旋转后保存。 4、新建一个图标&#xff0c;点击导入&#xff0c;选择刚刚保存的文件即可。