ABAP 自定义搜索功能 demo1

ABAP 自定义搜索功能 demo1

效果:
在这里插入图片描述在这里插入图片描述
双击选中行则为选中对应发票
在这里插入图片描述
实现
1定义
定义屏幕筛选参数
SELECTION-SCREEN BEGIN OF SCREEN 9020.
SELECT-OPTIONS:s1_belnr FOR rbkp-belnr,
s1_gjahr FOR rbkp-gjahr,
s1_lifnr FOR rbkp-lifnr,
s1_erfna FOR rbkp-erfnam,
s1_bldat FOR rbkp-bldat,
s1_bukrs FOR rbkp-bukrs.
PARAMETERS:c_wqr TYPE xfeld.

SELECTION-SCREEN END OF SCREEN 9020.

定义alv显示内表
DATA:BEGIN OF gs_data1,
belnr TYPE rbkp-belnr,
gjahr TYPE rbkp-gjahr,
bldat TYPE rbkp-bldat,
bukrs TYPE rbkp-bukrs,
lifnr TYPE rbkp-lifnr,
name1 TYPE lfa1-name1,
waers TYPE rbkp-waers,
rmwwr TYPE rbkp-rmwwr,
wmwst1 TYPE rbkp-wmwst1,
rbstat TYPE rbkp-rbstat,
trbstat(6),
erfnam TYPE rbkp-erfnam,
sgtxt TYPE rbkp-sgtxt,
zstat TYPE ztmm015h-zstat,
tzstat(6),
zdate TYPE ztmm015h-zdate,
zuser TYPE ztmm015h-zuser,
zdate2 TYPE ztmm015h-zdate2,
zoaid TYPE ztmm015h-zoaid,

 END OF gs_data1.

DATA:gt_data1 LIKE TABLE OF gs_data1.

2设置选择帮助触发按钮
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_belnr.
3.设置触发后功能
PERFORM frm_f4_help CHANGING p_belnr p_gjahr.
FORM frm_f4_help CHANGING c_belnr
c_gjahr.

CALL SELECTION-SCREEN 9020 STARTING AT 10 1 ENDING AT 100 10.
IF sy-subrc NE 0.
MESSAGE ‘用户取消选择’ TYPE ‘S’.
EXIT.
ENDIF.

REFRESH:gt_data1.

SELECT
rbkp~belnr
rbkp~gjahr
rbkp~bldat
rbkp~bukrs
rbkp~lifnr
rbkp~waers
rbkp~rmwwr
rbkp~wmwst1
rbkp~rbstat
rbkp~erfnam
rbkp~sgtxt
lfa1~name1
INTO CORRESPONDING FIELDS OF TABLE gt_data1
FROM rbkp
JOIN lfa1 ON rbkp~lifnr EQ lfa1~lifnr
WHERE belnr IN s1_belnr
AND gjahr IN s1_gjahr
AND rbkp~lifnr IN s1_lifnr
AND erfnam IN s1_erfna
AND bldat IN s1_bldat
AND bukrs IN s1_bukrs
AND rbstat IN ( ‘A’,‘5’ ).

IF gt_data1 IS INITIAL.
MESSAGE ‘查询无数据’ TYPE ‘S’ DISPLAY LIKE ‘E’.
EXIT.
ENDIF.

SELECT * INTO TABLE @DATA(lt_ztmm015h)
FROM ztmm015h
FOR ALL ENTRIES IN @gt_data1
WHERE belnr EQ @gt_data1-belnr
AND gjahr EQ @gt_data1-gjahr
AND zstat IN ( ‘2’,‘3’,‘5’ ).
SORT lt_ztmm015h BY belnr gjahr.

LOOP AT gt_data1 INTO gs_data1.
CASE gs_data1-rbstat.
WHEN ‘A’.
gs_data1-trbstat = ‘预制’.
WHEN ‘5’.
gs_data1-trbstat = ‘已过帐’.
WHEN OTHERS.
ENDCASE.

READ TABLE lt_ztmm015h INTO DATA(lw_ztmm015h) WITH KEY belnr = gs_data1-belnr
                                                       gjahr = gs_data1-gjahr BINARY SEARCH.
IF sy-subrc = 0.
  gs_data1-zstat = lw_ztmm015h-zstat.
  CASE gs_data1-zstat.
    WHEN '2'.
      gs_data1-tzstat = '已确认'.
    WHEN '3'.
      gs_data1-tzstat = '已发送OA'.
    WHEN '5'.
      gs_data1-tzstat = 'OA流程已归档'.
    WHEN OTHERS.
  ENDCASE.

  gs_data1-zstat = lw_ztmm015h-zstat.
  gs_data1-zdate = lw_ztmm015h-zdate.
  gs_data1-zuser = lw_ztmm015h-zuser.
  gs_data1-zdate2 = lw_ztmm015h-zdate2.
  gs_data1-zoaid = lw_ztmm015h-zoaid.
ENDIF.

MODIFY gt_data1 FROM gs_data1.

ENDLOOP.

IF c_wqr = ‘X’. "只查未确认预制发票
DELETE gt_data1 WHERE zuser <> ‘’.
ENDIF.

************alv
REFRESH gt_fieldcat5.
CLEAR: gw_layout.
gw_layout-cwidth_opt = ‘X’.
gw_layout-zebra = ‘X’.
gw_layout-sel_mode = ‘B’.

DEFINE def_fcat5.
CLEAR: wa_fieldcat.
wa_fieldcat-fieldname = &1.
wa_fieldcat-coltext = &2.
wa_fieldcat-ref_field = &3.
wa_fieldcat-ref_table = &4.
wa_fieldcat-key = &5.
wa_fieldcat-do_sum = &6.
wa_fieldcat-cfieldname = &7.
APPEND wa_fieldcat TO gt_fieldcat5.
END-OF-DEFINITION.

def_fcat5 ‘BUKRS’ ‘公司代码’ ‘BUKRS’ ‘T001’ ‘’ ‘’ ‘’.
def_fcat5 ‘LIFNR’ ‘供应商代码’ ‘LIFNR’ ‘EKKO’ ‘’ ‘’ ‘’.
def_fcat5 ‘NAME1’ ‘供应商名称’ ‘NAME_ORG1’ ‘BUT000’ ‘’ ‘’ ‘’.
def_fcat5 ‘BELNR’ ‘发票’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘GJAHR’ ‘发票年份’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘BLDAT’ ‘凭证日期’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘WAERS’ ‘币种’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘RMWWR’ ‘含税金额’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘WMWST1’ ‘税额’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘TRBSTAT’ ‘发票状态’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘ERFNAM’ ‘发票创建者’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘SGTXT’ ‘发票文本’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘TZSTAT’ ‘付款申请状态’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘ZDATE’ ‘确认日期’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘ZUSER’ ‘确认者’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘ZDATE2’ ‘发送OA日期’ ‘’ ‘’ ‘’ ‘’ ‘’.
def_fcat5 ‘ZOAID’ ‘OA流程单号’ ‘’ ‘’ ‘’ ‘’ ‘’.

CALL FUNCTION ‘REUSE_ALV_GRID_DISPLAY_LVC’
EXPORTING

  • I_INTERFACE_CHECK       = ' '
    
  • I_BYPASSING_BUFFER      =
    
  • I_BUFFER_ACTIVE         =
    i_callback_program      = sy-repid
    
  • i_callback_pf_status_set = 'SET_PF_STATUS'
    i_callback_user_command = 'USER_COMMAND01'
    
  • I_CALLBACK_TOP_OF_PAGE  = ' '
    
  • I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
    
  • I_CALLBACK_HTML_END_OF_LIST       = ' '
    
  • I_STRUCTURE_NAME        =
    
  • I_BACKGROUND_ID         = ' '
    
  • i_grid_title            = gv_title
    
  • i_grid_settings         = gw_settings
    is_layout_lvc           = gw_layout
    it_fieldcat_lvc         = gt_fieldcat5
    
  • it_excluding            = gt_excluding
    
  • IT_SPECIAL_GROUPS_LVC   =
    
  • it_sort_lvc             = gt_sort
    i_default               = 'X'
    i_save                  = 'A'
    
    TABLES
    t_outtab = gt_data1
    EXCEPTIONS
    program_error = 1
    OTHERS = 2.

ENDFORM.
FORM user_command01 USING r_ucomm LIKE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA g_grid TYPE REF TO cl_gui_alv_grid.

CALL FUNCTION ‘GET_GLOBALS_FROM_SLVC_FULLSCR’
IMPORTING
e_grid = g_grid.
CALL METHOD g_grid->check_changed_data.

READ TABLE gt_data1 INTO gs_data1 INDEX rs_selfield-tabindex.
IF sy-subrc = 0.
p_belnr = gs_data1-belnr.
p_gjahr = gs_data1-gjahr.
LEAVE TO SCREEN 0.
ENDIF.

rs_selfield-refresh = ‘X’.
rs_selfield-col_stable = ‘X’.
rs_selfield-row_stable = ‘X’.

ENDFORM.

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

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

相关文章

详解AMQP协议

目录 1.概述 1.1.简介 1.2.抽象模型 2.spring中的amqp 2.1.spring amqp 2.2.spring boot amqp 1.概述 1.1.简介 AMQP&#xff0c;Advanced Message Queuing Protocol&#xff0c;高级消息队列协议。 百度百科上的介绍&#xff1a; 一个提供统一消息服务的应用层标准高…

插入排序算法

插入排序 算法说明与代码实现&#xff1a; 以下是使用Go语言实现的插入排序算法示例代码&#xff1a; package mainimport "fmt"func insertionSort(arr []int) {n : len(arr)for i : 1; i < n; i {key : arr[i]j : i - 1for j > 0 && arr[j] > …

深入理解负载均衡原理及算法

1. 前言 在互联网早期,网络还不是很发达,上网用户少,流量相对较小,系统架构以单体架构为主。但如今在互联网发达的今天,流量请求动辄百亿、甚至上千亿,单台服务器或者实例已完全不能满足需求,这就有了集群。不论是为了实现高可用还是高性能,都需要用到多台机器来扩展服…

react中hooks分享

一. HOOKS是什么 在计算机程序设计中&#xff0c;钩子一词涵盖了一系列技术&#xff0c;这些技术用来通过拦截函数调用、消息或在软件组件之间传递的事件来改变或增加操作系统、应用程序或其他软件组件的行为。处理这些被截获的函数调用、事件或消息的代码称为“hook”。 在r…

【Python】PySpark 数据计算 ⑤ ( RDD#sortBy方法 - 排序 RDD 中的元素 )

文章目录 一、RDD#sortBy 方法1、RDD#sortBy 语法简介2、RDD#sortBy 传入的函数参数分析 二、代码示例 - RDD#sortBy 示例1、需求分析2、代码示例3、执行结果 一、RDD#sortBy 方法 1、RDD#sortBy 语法简介 RDD#sortBy 方法 用于 按照 指定的 键 对 RDD 中的元素进行排序 , 该方…

细讲一个 TCP 连接能发多少个 HTTP 请求(一)

一道经典的面试题是从 URL 在浏览器被被输入到页面展现的过程中发生了什么&#xff0c;大多数回答都是说请求响应之后 DOM 怎么被构建&#xff0c;被绘制出来。但是你有没有想过&#xff0c;收到的 HTML 如果包含几十个图片标签&#xff0c;这些图片是以什么方式、什么顺序、建…

Arthas GC日志-JVM(十八)

上篇文章说jvm的实际运行情况。 Jvm实际运行情况-JVM&#xff08;十七&#xff09; Arthas介绍 因为arthas完全是java代码写的&#xff0c;我们直接用命令启动&#xff1a; Java -jar arthas-boot.jar 启动成功后&#xff0c;选择我们项目的进程。 进入我们可用dashboard…

django实现部门表的增删改查界面

1、前期准备 部署好mysql数据库&#xff0c;创建好unicom数据库下载好bootstap的插件下载好jquery的插件下载好mysqlclient-1.4.6-cp36-cp36m-win_amd64.whl的安装包&#xff0c;根据python的版本下载 2、创建项目 在pycharm中创建项目 在pycharm的终端创建虚拟环境 py -m v…

【Docker】Docker安装Elasticsearch服务的正确方式

文章目录 1. 什么是Elasticsearch2. Docker安装Elasticsearch2.1 确定Elasticsearch的版本2.2. Docker安装Elasticsearch2.3. 给Elasticsearch安装中文分词器IKAnalyzer&#xff08;可选&#xff09; 点击跳转&#xff1a;Docker安装MySQL、Redis、RabbitMQ、Elasticsearch、Na…

Django使用uwsgi+nginx部署,admin没有样式解决办法

Django使用uwsginginx部署,admin没有样式解决办法 如果使用了虚拟环境则修改nginx.conf文件中的/static/路径为你虚拟环境的路径&#xff0c;没有使用虚拟环境则改为你python安装路径下的static server {listen 8008;server_name location; #改为自己的域名&#xff0c;没域名…

mybatisplus实现自动填充 时间

mybatisplus实现自动填充功能——自动填充时间 数据库表中的字段 创建时间 (createTime)更新时间 (updateTime) 每次 增删改查的时候&#xff0c;需要通过对Entity的字段&#xff08;createTime&#xff0c;updateTime&#xff09;进行set设置&#xff0c;但是&#xff0c;每…

途乐证券|俄罗斯宣布9月削减石油出口量

当地时间周四&#xff0c;美股兜售潮仍在持续&#xff0c;三大股指连续第二个交易日团体收跌。到收盘&#xff0c;道指跌落0.19%&#xff0c;标普500指数跌落0.25%&#xff0c;纳指跌幅为0.10%。 美国ISM7月非制造业PMI下滑 数据面上&#xff0c;美国供应办理协会ISM周四发布的…

电力巡检无人机助力迎峰度夏,保障夏季电力供应

夏季是电力需求量较高的时期&#xff0c;随着高温天气的来临&#xff0c;风扇、空调和冰箱等电器的使用量也大大增加&#xff0c;从而迎来夏季用电高峰期&#xff0c;电网用电负荷不断攀升。为了保障夏季电网供电稳定&#xff0c;供电公司会加强对电力设施设备的巡检&#xff0…

mmap函数详解

1、什么是mmap mmap是一种内存映射文件的方法&#xff0c;即将一个文件或者其它对象映射到进程的地址空间&#xff0c;实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系。 实现这样的映射关系后&#xff0c;进程就可以采用指针的方式读写操作这一段内存&#x…

Android入门教程||Android 架构||Android 应用程序组件

Android 架构 Android 操作系统是一个软件组件的栈&#xff0c;在架构图中它大致可以分为五个部分和四个主要层。 Linux内核 在所有层的最底下是 Linux - 包括大约115个补丁的 Linux 3.6。它提供了基本的系统功能&#xff0c;比如进程管理&#xff0c;内存管理&#xff0c;设…

Android 面试题 应用程序结构 十一

&#x1f525; Framework主要包含以下模块 &#x1f525; ActivityManagerService 这是一个Activity的管理者&#xff0c;负责管理所有Activity的生命周期。WindowManagerService 它是手机屏幕的的管理者&#xff0c;管理着屏幕的详细情况&#xff0c;所有对屏幕的操作最终都…

express学习笔记4 - 热更新以及express-boom

我们每次改动代码的时候都要重启项目&#xff0c;现在我们给项目添加一个热更新 npm install --save-dev nodemon # or using yarn: yarn add nodemon -D 在package.json添加一行代码 "dev": "nodemon ./bin/www" 重启项目 然后随便做改动&#xff…

【初阶C语言】学会结构体

1.结构体类型的声明 2.结构体初始化 3.结构体成员访问 4.结构体传参 前言&#xff1a;结构是一些值的集合&#xff0c;这些值称为成员变量。结构的每个成员可以是不同类型的变量。 一、结构体类型的声明 1.结构的声明 结构体声明的模板&#xff1a; struct tag {member-li…

Java版工程行业管理系统源码-专业的工程管理软件-em提供一站式服务

​ Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目…

sqlyog导出mysql数据字典

1.打开sqlyog执行sql获取字典数据 SELECTt.COLUMN_NAME AS 字段名,t.COLUMN_TYPE AS 数据类型,CASE IFNULL(t.COLUMN_DEFAULT,Null) WHEN THEN 空字符串 WHEN Null THEN NULL ELSE t.COLUMN_DEFAULT END AS 默认值,CASE t.IS_NULLABLE WHEN YES THEN 是 ELSE 否 END AS 是否…