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

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

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.汇总表状态和按钮设置,添加了创建单据的按钮
在这里插入图片描述
激活就可以改造为你自己的程序了。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

三、Java运算符

1.运算符和表达式 运算符&#xff1a; ​ 就是对常量或者变量进行操作的符号。 ​ 比如&#xff1a; - * / 表达式&#xff1a; ​ 用运算符把常量或者变量连接起来的&#xff0c;符合Java语法的式子就是表达式。 ​ 比如&#xff1a;a b 这个整体就是表达式。 ​ 而其…

【Jmeter】Jmeter基础7-Jmeter元件介绍之后置处理器

后置处理器主要用于处理请求之后的操作&#xff0c;通常用来提取接口返回数据 2.7.1、JSON JMESPath Extractor 作用&#xff1a;可以通过JmesPath语法提取所需要的值使用场景&#xff1a;取样器返回格式为jsonJmesPath语法&#xff1a;参考https://jmespath.org/tutorial.htm…

uniapp用picker实现自定义三级联动(children)

数据大概得结构&#xff1a; html: <view class"invite"><u-cell title"点击选则" isLink :value"value" click"showstrue"></u-cell><u-picker :show"shows" ref"uPicker" :columns"…

【C语言】SCU安全项目1-FindKeys

目录 前言 命令行参数 16进制转字符串 extract_message1 process_keys12 extract_message2 main process_keys34 前言 因为这个学期基本都在搞CTF的web方向&#xff0c;C语言不免荒废。所幸还会一点指针相关的知识&#xff0c;故第一个安全项目做的挺顺利的&#xff0c…

模型放置到3D场景中后模型位置与鼠标选中的位置不一致怎么办?

在线工具推荐&#xff1a;3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 1、问题 从事3D建模相关工作的朋友们在工作中经常会遇到以下几种问题&#…

速卖通商品API接口的使用指南与示例

一、引言 速卖通&#xff08;AliExpress&#xff09;是阿里巴巴旗下的全球性跨境电商平台&#xff0c;为全球消费者和商家提供了一个便捷的在线交易平台。为了方便商家和开发者获取速卖通商品详情&#xff0c;速卖通提供了商品API接口。本文将详细介绍如何通过速卖通商品API接…

防火墙无非就这8种类型,小白完全不用怕!

你们好&#xff0c;我的网工朋友。 当我们谈到网络开放性带来的安全挑战时&#xff0c;都会想起黑客、病毒、恶意软件等等。 而正是因为这些威胁&#xff0c;让网络安全变成了网络世界里的重要议题&#xff0c;如果说起怎么保护网络安全&#xff0c;基本上我们都会第一时间想…

商城免费搭建之java鸿鹄云商 java电子商务商城 Spring Cloud+Spring Boot+mybatis+MQ+VR全景+b2b2c

鸿鹄云商 SAAS云产品概述 1. 涉及平台 平台管理、商家端&#xff08;PC端、手机端&#xff09;、买家平台&#xff08;H5/公众号、小程序、APP端&#xff08;IOS/Android&#xff09;、微服务平台&#xff08;业务服务&#xff09; 2. 核心架构 Spring Cloud、Spring Boot、My…

软信天成:企业数据目录加速数据资产管理智能化升级

随着数字时代的来临&#xff0c;数据的作用日益凸显&#xff0c;数字化能有效提高企业的运作效率。据调查统计, 数据领先型企业的指标比数据感知型企业领先50%左右。各界对数据治理的关注度逐年攀升&#xff0c;并且呈现经济越发达&#xff0c;越重视数据治理的态势。越来越多的…

Django、Echarts异步请求、动态更新

前端页面 <!DOCTYPE html> <html><head><meta charset"utf-8"><title>echarts示例</title> <script src"jquery.min.js"></script><script type "text/javascript" src "echarts.m…

【IDEA】关于快捷键行注释时会从行首开始注释

前言 每次在使用IDEA写代码时&#xff0c;用快捷键进行行注释的时候&#xff0c;//会处于行首位置 但是我们想要的是这种注释效果 修改 IDEA中打开settings 找到Editor - Code Style- Java - 找到Code Genneration&#xff0c;取消勾选Line comment at first column&#x…

爱名网被评为“最佳安全保障注册服务机构”

12月12日&#xff0c;由中国互联网络信息中心主办&#xff0c;中国科学院计算机网络信息中心、中国工业互联网研究院、中国互联网协会联合主办&#xff0c;人民邮电报社承办的第四届中国互联网基础资源大会&#xff08;CNIRC&#xff09;在北京举办。 在本届大会上&#xff0c…

配置策略路由(基于IP地址)示例

策略路由简介 定义 策略路由PBR&#xff08;Policy-Based Routing&#xff09;是一种依据用户制定的策略进行路由选择的机制&#xff0c;其优先级高于直连路由、静态路由和通过动态路由协议生成的路由。设备配置策略路由后&#xff0c;若接收的报文&#xff08;包括二层报文&…

数字电子技术期末知识点总结

文章目录 时序逻辑电路时序电路的分析同步时序电路的分析例子1&#xff08;有输入输出&#xff09;例子2 &#xff08;只有输出&#xff09;例子3&#xff08;没有输入、输出&#xff09; 异步时序电路的分析例子1 小结 时序电路的设计同步时序电路的设计串行数据检测器JK 触发…

004 Windows NTFS文件夹权限

一、NTFS文件权限&#xff1a; NTFS&#xff08;New Technology File System&#xff09;是Windows NT内核的系列操作系统支持的、一个特别为网络和磁盘配额、文件加密等管理安全特性设计的磁盘格式&#xff0c;提供长文件名、数据保护和恢复&#xff0c;能通过目录和文件许可…

数据结构和算法-图的基本操作以图的广度优先遍历和深度优先遍历

文章目录 图的基本操作总览找边列出与某顶点相连的边插入顶点删除顶点增加边顶点的第一个邻接点顶点的下一个邻接点设置或者获取某条边的权值总览 图的广度优先遍历总览树的广度优先遍历图的广度优先遍历树vs图图广度优先遍历的代码实现广度优先遍历序列遍历序列的可变性算法存…

如何避免重要文件夹被盗?多种文件夹防盗方法介绍

当我们将重要数据存放在文件夹中时&#xff0c;一定要保护文件夹的安全&#xff0c;避免文件夹被盗。那么&#xff0c;我们该如何避免重要文件夹被盗呢&#xff1f;下面我们就来了解一下。 EFS功能 EFS是Windows提供的数据加密功能&#xff0c;可以加密NTFS卷上的文件和文件夹…

强大的TFTP工具:Transfer免激活最新版

Transfer for Mac功能介绍 从头开始编写的Transfer可以完全控制您的文件传输&#xff0c;同时可以与现有的TFTP客户端完美兼容。Transfer附带对常见TFTP协议扩展和选项的支持&#xff0c;包括&#xff1a; RFC 2347-TFTP选项扩展 RFC 2348-TFTP块大小选项 RFC 2349-TFTP超时…

Paper Reading: (ACRST) 基于自适应类再平衡自训练的半监督目标检测

目录 简介工作重点方法CropBankFBRAFFRTwo-stage Pseudo-label Filtering 实验与SOTA比较消融实验 简介 题目&#xff1a;《Semi-Supervised Object Detection with Adaptive Class-Rebalancing Self-Training》&#xff0c;AAAI’22&#xff0c; 基于自适应类再平衡自训练的半…

快递鸟「物流导盲犬」助力鞋服头部企业客户全链路物流数字化升级

数字化时代&#xff0c;企业全域经营已成为数字商业新浪潮&#xff0c;多店铺多平台多仓库同步发货成为经营常态&#xff0c;消费者对物流服务体验的要求越来越高&#xff0c;企业对物流精细化管理的需求也越来越强烈。快递鸟基于对物流数字化领域的深耕和对行业及客户需求的深…