ABAP 明细alv跳转到汇总alv一般模板

news2024/9/28 21:22:24

需求描述:做开发的同时,经常会有遇到,根据明细表进行逻辑汇总,在两个屏幕进行跳转,然后按钮还要做功能的情况,我这边记录一下最简单点模板,给新手可以直接复制使用的。
请添加图片描述
一、源代码

TYPE-POOLS: slis.
TYPE-POOLS: kcde.

TABLES:ekko,ekpo,lfa1."

TYPES : BEGIN OF typ_alv ,
          ebeln TYPE ekko-ebeln,  "订单编号
          ebelp TYPE ekpo-ebelp,  "行项目
          lifnr TYPE ekko-lifnr, "供应商编号
          name1 TYPE name1_gp, "供应商名称
          bsart TYPE esart,    "采购订单类型
          bukrs TYPE  ekko-bukrs,
          menge TYPE ekpo-menge, "数量

          sel   TYPE      c, "选择

        END OF typ_alv .
DATA : gs_alv TYPE typ_alv,
       gt_alv TYPE TABLE OF typ_alv.

TYPES : BEGIN OF typ_HZ ,

          lifnr TYPE ekko-lifnr, "供应商编号
          name1 TYPE name1_gp, "供应商名称
          bsart TYPE esart,    "采购订单类型
          bukrs TYPE  ekko-bukrs,
          menge TYPE ekpo-menge, "数量

          sel   TYPE      c, "选择

        END OF typ_HZ .
DATA : gs_HZ TYPE typ_HZ,
       gt_HZ TYPE TABLE OF typ_HZ.

* ALV 用
DATA:
  gs_layout   TYPE lvc_s_layo,
  gv_repid    TYPE repid,
  gt_fieldcat TYPE lvc_t_fcat,
  gt_fieldcat_HZ TYPE lvc_t_fcat,
  ls_fieldcat TYPE lvc_S_fcat.
DATA: g_grid TYPE REF TO cl_gui_alv_grid.
DATA: g_grid_hz TYPE REF TO cl_gui_alv_grid.
*创建字段宏定义
DEFINE add_field.
  ls_fieldcat-fieldname = '&1' .  "字段名称
  ls_fieldcat-ref_table = &2. "关联表格
  ls_fieldcat-ref_field = &3."参考字段
  ls_fieldcat-coltext = &4. "描述文本
  APPEND ls_fieldcat TO gt_fieldcat.
  CLEAR ls_fieldcat.
END-OF-DEFINITION.


*创建字段宏定义
DEFINE add_field_HZ.
  ls_fieldcat-fieldname = '&1' .  "字段名称
  ls_fieldcat-ref_table = &2. "关联表格
  ls_fieldcat-ref_field = &3."参考字段
  ls_fieldcat-coltext = &4. "描述文本
  ls_fieldcat-EDIT    = &5.
  APPEND ls_fieldcat TO gt_fieldcat_HZ.
  CLEAR ls_fieldcat.
END-OF-DEFINITION.


*--------选择条件
*选择屏幕。
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE TEXT-001.

  SELECT-OPTIONS: s_bukrs FOR ekko-bukrs ,
                  s_ebeln FOR ekko-ebeln,
                  s_lifnr FOR ekko-lifnr.
SELECTION-SCREEN END OF BLOCK b1.


INITIALIZATION .

AT SELECTION-SCREEN OUTPUT .

*----------------------------------------------------------------------*
* EVENT OCCURS AFTER THE SELECTION SCREEN HAS BEEN PROCESSED
*----------------------------------------------------------------------*
START-OF-SELECTION.

  PERFORM frm_auth_check.  "权限检查
  PERFORM frm_getdata .    "获取数据  --GETTING DATA
  PERFORM frm_display_data.  "展示ALV

END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form frm_auth_check
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_auth_check .

ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_getdata
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_getdata .
  SELECT
         ekko~ebeln ,
         ekpo~ebelp ,
         ekko~lifnr ,
         lfa1~name1 ,"供应商名称
         ekko~bsart ,"采购订单类型
         ekko~bukrs,
         ekpo~menge
         INTO CORRESPONDING FIELDS OF TABLE @gt_alv
         FROM ekko
         LEFT JOIN ekpo ON ekko~ebeln EQ ekpo~ebeln
         LEFT JOIN lfa1 ON ekko~lifnr EQ lfa1~lifnr
     WHERE   ekko~bukrs IN @s_bukrs
       AND   ekko~ebeln IN @s_ebeln
       AND   ekko~lifnr IN @s_lifnr
         .
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_display_data
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_display_data .
*定义输出模式
  CLEAR:gs_layout,gt_fieldcat.
  gs_layout-cwidth_opt         = 'X'.
  gs_layout-zebra              = 'X'.
  gs_layout-box_fname              = 'SEL'.
  gv_repid = sy-repid.
  PERFORM frm_set_fieldcat.
  .
*  TRY .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = gv_repid
      i_callback_user_command  = 'FRM_USER_COMMAND'
      i_callback_pf_status_set = 'FRM_PF_STATUS'
      is_layout_lvc            = gs_layout
      it_fieldcat_lvc          = gt_fieldcat
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_alv
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form frm_set_fieldcat
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM frm_set_fieldcat .
  add_field:
          ebeln 'EKKO' 'EBELN'  '订单编号',
          ebelp 'EKPO' 'EBELP'  '行项目',
          lifnr 'EKKO' 'LIFNR' '供应商编号',
          name1  ''     ''    '供应商名称',
          bsart ''   ''    '采购订单类型',
          bukrs 'EKKO'  'BUKRS'  '公司',
          menge 'EKPO' 'MENGE' '数量'.

ENDFORM.

FORM frm_pf_status USING extab TYPE slis_t_extab.
  DATA: fcode TYPE TABLE OF sy-ucomm.
  CLEAR:fcode[].

  SET PF-STATUS 'STANDARD' EXCLUDING fcode[] .
ENDFORM.
*&---------------------------------------------------------------------*
*&      FORM  FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*       自定义用户动作
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*

*自定义用户动作
FORM frm_user_command USING p_ucomm TYPE sy-ucomm rs_selfield TYPE slis_selfield.

   IF  cl_gui_alv_grid=>offline( )  IS INITIAL.
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = g_grid.
  ENDIF.
  "失去焦点触发更新内表
  CALL METHOD g_grid->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_modified.

  CALL METHOD g_grid->check_changed_data.

  rs_selfield-refresh     = 'X'.
  rs_selfield-col_stable  = 'X'.
  rs_selfield-row_stable  = 'X'.


  DATA : l_ucomm TYPE sy-ucomm  .
  l_ucomm = p_ucomm .
  CLEAR p_ucomm .
  CASE l_ucomm.
    WHEN 'HZ'."选择汇总
      PERFORM handle_SELECT_DATA."处理选中的数据
      PERFORM display_hz."显示汇总数据

    WHEN '&IC1'. "单击复选框 勾选(取消)后同一预留号都自动勾选(取消)
    WHEN OTHERS.
  ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form handle_SELECT_DATA
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM handle_SELECT_DATA .
  SELECT  l~lifnr ,
          l~name1 ,"供应商名称
          l~bsart ,"采购订单类型
          l~bukrs,
       SUM(  L~menge ) AS menge
    FROM @gt_alv AS l
   WHERE sel = 'X'
   GROUP BY  l~lifnr, l~name1,l~bsart ,  l~bukrs
   INTO CORRESPONDING FIELDS OF TABLE @gt_HZ.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form DISPLAY_HZ
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM display_hz .
*定义输出模式
  CLEAR:gs_layout,gt_fieldcat.
  gs_layout-cwidth_opt         = 'X'.
  gs_layout-zebra              = 'X'.
  gs_layout-box_fname              = 'SEL'.
  gv_repid = sy-repid.
  PERFORM frm_set_fieldcat_HZ.
  .
*  TRY .
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
    EXPORTING
      i_callback_program       = gv_repid
      i_callback_user_command  = 'FRM_USER_COMMAND_HZ'
      i_callback_pf_status_set = 'FRM_PF_STATUS_HZ'
      is_layout_lvc            = gs_layout
      it_fieldcat_lvc          = gt_fieldcat_HZ
      i_save                   = 'A'
    TABLES
      t_outtab                 = gt_HZ
    EXCEPTIONS
      program_error            = 1
      OTHERS                   = 2.

  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
    WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
ENDFORM.

FORM frm_set_fieldcat_HZ .
  CLEAR:gt_fieldcat_HZ.
  add_field_HZ:

          lifnr 'EKKO' 'LIFNR' '供应商编号' '',
          name1  ''     ''    '供应商名称' '',
          bsart ''   ''    '采购订单类型' '',
          bukrs 'EKKO'  'BUKRS'  '公司' '',
          menge 'EKPO' 'MENGE' '汇总数量' 'X'.

ENDFORM.

FORM frm_pf_status_HZ USING extab TYPE slis_t_extab.
  DATA: fcode TYPE TABLE OF sy-ucomm.
  CLEAR:fcode[].

  SET PF-STATUS 'STANDARD_HZ' EXCLUDING fcode[] .
ENDFORM.
*&---------------------------------------------------------------------*
*&      FORM  FRM_USER_COMMAND
*&---------------------------------------------------------------------*
*       自定义用户动作
*----------------------------------------------------------------------*
*  -->  P1        TEXT
*  <--  P2        TEXT
*----------------------------------------------------------------------*

*自定义用户动作
FORM frm_user_command_hz USING p_ucomm TYPE sy-ucomm rs_selfield TYPE slis_selfield.
  DATA : l_ucomm TYPE sy-ucomm  .

  IF  cl_gui_alv_grid=>offline( )  IS INITIAL.
    CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
      IMPORTING
        e_grid = g_grid_hz.
  ENDIF.
  "失去焦点触发更新内表
  CALL METHOD g_grid_hz->register_edit_event
    EXPORTING
      i_event_id = cl_gui_alv_grid=>mc_evt_modified.

  CALL METHOD g_grid_hz->check_changed_data.

  rs_selfield-refresh     = 'X'.
  rs_selfield-col_stable  = 'X'.
  rs_selfield-row_stable  = 'X'.

  l_ucomm = p_ucomm .
  CLEAR p_ucomm .
  DATA : l_uname TYPE sy-uname,
         l_datum TYPE sy-datum,
         l_uzeit TYPE sy-uzeit.

  CASE l_ucomm.
    WHEN 'CREATE'."创建单据
      PERFORM create_rsnum.
    WHEN '&IC1'. "单击复
    WHEN OTHERS.
  ENDCASE.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CREATE_RSNUM
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*
FORM create_rsnum .
 MESSAGE '创建成功' TYPE 'I' .
ENDFORM.

二、其中的状态和按钮设置截图
1.创建状态的时候,标准按钮如何点出来的?按我截图走
在这里插入图片描述
在这里插入图片描述

2.明细表的状态设置和按钮设置,添加了个HZ的按钮
在这里插入图片描述
3.汇总表状态和按钮设置,添加了创建单据的按钮
在这里插入图片描述
激活就可以改造为你自己的程序了。

分享使我快乐,我是寒武青锋~!如果觉得还挺不错的话,记得点个赞吧。请添加图片描述

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

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

相关文章

基于JAVAEE技术校园车辆管理系统论文

摘 要 现代经济快节奏发展以及不断完善升级的信息化技术&#xff0c;让传统数据信息的管理升级为软件存储&#xff0c;归纳&#xff0c;集中处理数据信息的管理方式。本校园车辆管理系统就是在这样的大环境下诞生&#xff0c;其可以帮助管理者在短时间内处理完毕庞大的数据信息…

Mozilla 推出 Solo:借助 AI 帮助零编程用户创建网站

Mozilla 近日推出名为 Solo 的全新项目&#xff0c;面向没有任何编程经验的用户&#xff0c;通过融入 AI 能力&#xff0c;所创建的网站可以媲美专业开发者的开发效果。 Mozilla 表示该项目主要针对中小型企业、个体户&#xff0c;在官方演示中&#xff0c;用户只需要输入文本、…

Linux完成mysql数据库的备份与恢复

背景&#xff1a; 在进行数据报表的测试过程中&#xff0c;为了让我们的测试数据更加真实&#xff0c;因此我们需要同步生产数据到测试环境。方式有很多种&#xff0c;我这里介绍的是通过Linux完成数据同步。 备份数据&#xff1a; 执行命令&#xff1a;mysqldump -uxxx -pxxx…

HAAS 哈斯机床 读写刀补数据

哈斯机床不管是串口机床还是网口机床 都提供了Q命令 可以使用Q命令 进行刀具补偿的读取和写入 最多支持200把刀的 读取和写入

外贸SOHO建站怎么做?海洋建站方法策略?

外贸SOHO建站多少钱&#xff1f;外贸自助建站系统有哪些&#xff1f; 随着全球化的加速发展&#xff0c;外贸SOHO已经成为越来越多创业者的选择。然而&#xff0c;要想在竞争激烈的外贸市场中脱颖而出&#xff0c;一个专业的外贸网站是必不可少的。接下来海洋建站将探讨外贸SO…

jsp文件引用的css修改后刷新不生效问题

问题 在对 JavaWeb 项目修改的过程中&#xff0c;发现修改了 jsp 文件引入的 css 文件的代码后页面的样式没有更新的问题。 原因 导致这个问题的原因可能是因为浏览器缓存的问题。 解决方法 下面介绍两种解决方法&#xff0c;供大家参考&#xff1a; 1、给 link 标签的 c…

图文并茂讲VLAN,一遍就能理解

图文并茂讲VLAN&#xff0c;一遍就能理解 弱电行业圈2019-03-19 10:12 vlan的应用在网络项目中是非常广泛的&#xff0c;基本上大部分的项目都需要划分vlan&#xff0c;前几天我们讲到vlan的配置&#xff0c;有朋友就提到有没有更基础一些的内容&#xff0c;今天我们就从基础…

【LeetCode刷题】--172.阶乘后的零

172.阶乘后的零 方法&#xff1a; class Solution {public int trailingZeroes(int n) {int ans 0;for(int i 5;i<n;i5){for(int x i; x % 50; x/5){ans;}}return ans;} }进一步优化&#xff1a; class Solution {public int trailingZeroes(int n) {int ans 0;while (n…

今日开幕!飞凌嵌入式受邀参加2023年瑞萨技术交流日全国巡回展

来源&#xff1a;飞凌嵌入式官网 2023年瑞萨技术交流日全国巡回展&#xff08;广州站&#xff09;今日开幕&#xff0c;飞凌嵌入式再次受邀参加&#xff0c;并与来自新能源、自动化、工业物联网以及人工智能等领域的精英们共同探讨前沿技术。 在今日的巡展现场&#xff0c;飞凌…

绝地求生:PGC2023胜者组D2下半场:17天霸成功晋级,TL、NH跌入最后机会组

第四场 第一名&#xff1a;LGC 第二名&#xff1a;T5 第三名&#xff1a;FaZe 17仅剩两人&#xff0c;T5踩住高点&#xff0c;sujiu前顶时被T5架枪位击倒&#xff0c;小鬼的盾牌没能挡住对方的雷遗憾第五出局。然而T5自己也进圈不易&#xff0c;仅剩两人。 LG独狼卡住T5却忽…

STM32-02-STM32基础知识

文章目录 STM32基础知识1. STM32F103系统架构2. STM32寻址范围3. 存储器映射4. 寄存器映射 STM32基础知识 1. STM32F103系统架构 STM32F103 STM32F103是ST公司基于ARM授权Cortex M3内核而设计的一款芯片&#xff0c;而Cortex M内核使用的是ARM v7-M架构&#xff0c;是为了替代…

新生儿智力检测的关键:培养潜能、关注发展

引言&#xff1a; 新生儿期是智力发展的关键时期&#xff0c;而科学的智力检测可以帮助父母更好地了解宝宝的认知水平和发展潜力。然而&#xff0c;在进行新生儿智力检测时&#xff0c;需要特别注意一些关键事项&#xff0c;以确保测试的准确性和对宝宝的尊重。本文将深入探讨…

【ECharts】从零实现echarts地图完整代码(纯前端,包含地图资源)

最终效果 标题环境搭建 这里忽略创建vue项目的操作过程&#xff0c;请自行搭建 vue2 项目、less 环境 安装下载 echarts 这里我们选择npm下载 npm install echarts安装成功后&#xff0c;在 main.js 中把echarts配置到this上 // 引入 echarts import * as Echarts from ech…

power EM与signal EM解决办法

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧? 拾陆楼知识星球入口 EM问题就是电流密度过高产生的,解决办法核心就是是分流或提高载流能力以及降低电流量。 1.面对power EM,首先检查missing via,补全via,还可以加宽,加密局部power mesh,一些power IO出pin有po…

Unity:Camera讲解之ClearFlags

Clear Flags四个选项讲解: 前三个都是常用的&#xff0c;第四个基本不会用。 skybox(天空盒&#xff09;&#xff1a; 主要是一种用于渲染游戏场景中天空的技术。它是一个包含6个纹理图片的立方体贴图&#xff0c;分别代表了从不同角度观察天空时所看到的前、后、上、下、左…

Gateway网关-路由断言工厂

目录 一、路由断言工厂Route Predicate Factory 二、Predicate工厂配置测试 2.1 After测试 2.2 Before测试 三、回顾 一、路由断言工厂Route Predicate Factory 网关路由可以配置的内容包括: 路由id:路由唯一标示uri:路由目的地&#xff0c;支持lb和http两种predicates: 路…

MySQL之创建表

创建emp表 #创建表的练习 -- 字段 属性 -- Id 整形 -- name 字符型 -- sex 字符型 -- birthday 日期型 -- entry_date 日期型 -- job 字符型 -- Salary 小数型 -- resume 文本型 CREATE TABLE emp(id INT,name VARCHAR(32),sex CHAR(1),birthday DATE,entry_date DAT…

不负春光 只争商机!2024SIA上海轴承展会助您抢起势 定胜势!

〓 2024第十届中国国际轴承工业&#xff08;上海&#xff09;展览会〓 The 10th China International Bearing Industry (Shanghai) Exhibition 2024 展会时间&#xff1a;2024年7月24日-26日 展会地点&#xff1a;上海国家会展中心•虹桥&#xff08;上海市青浦区崧泽大道33…

word图片点击放大,word图片双击放大

网上自己搜了半天&#xff0c;都是顾左右而言他&#xff0c;直接实践一下。 干货就是&#xff1a;调整word视图为阅读模式&#xff0c;双机图片 就能放大查看&#xff0c;然后还会有一个 放大镜供点击放大到整个屏幕。 其实挺好理解的&#xff0c;word跟wps不同&#xff0c;w…

《拥抱变化:解析极限编程》读书笔记

文章目录 一、书名和作者二、书籍概览2.1 主要论点和结构2.2 目标读者和应用场景 三、核心观点与主题3.1开发问题3.2 极限编程实践3.3 极限编程计划与设计3.4 极限编程的实现 四、亮点与启发4.1 最有影响的观点4.2 对个人专业发展的启示 五、批评与局限性5.1 可能存在的争议和过…