PA30时间事件获取+删除操作

*&---------------------------------------------------------------------*

*& Report  ZHR16012

*&                  huangjm 2016.12.19

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT  zhr16012.

TABLES:sscrfields,pa0001,pa0531,t100,teven,pa0007.

DATA: BEGIN OF itab OCCURS 0,

pernr LIKE pa0007-pernr,           "人员编号

END OF itab.

DATA: BEGIN OF hr_data1 OCCURS 0.

INCLUDE STRUCTURE teven.

DATA:zaob(1) TYPE c .

DATA: END OF hr_data1.

DATA:hr_data TYPE tim_tmw_teven_tab.

DATA: BEGIN OF del_teven OCCURS 0.

INCLUDE STRUCTURE teven.

DATA: END OF del_teven.

DATA: BEGIN OF del_teven_more OCCURS 0.

INCLUDE STRUCTURE teven_more.

DATA: END OF del_teven_more.

DATA: zdata LIKE sy-datum ,

zdata1 LIKE sy-datum .

LOAD-OF-PROGRAM.

zdata = sy-datum - 1.

zdata1 = sy-datum - 1.

SELECTION-SCREEN BEGIN OF BLOCK b02 WITH FRAME  TITLE text-001.

SELECT-OPTIONS:s_pernr FOR pa0001-pernr.

PARAMETERS:s_begda LIKE pa0007-begda DEFAULT  zdata.

PARAMETERS:s_endda LIKE pa0007-endda DEFAULT ‘99991231‘.

SELECTION-SCREEN END OF BLOCK b02.

***********************************************************************

*SELECT-OF-SELECTION

***********************************************************************

START-OF-SELECTION.

PERFORM sub_get_data ."获取数据

PERFORM sub_process_data ."处理数据

************************************************************************

*END-OF-SELECTION

************************************************************************

END-OF-SELECTION .

*&---------------------------------------------------------------------*

*&      Form  sub_get_data

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM sub_get_data .

SELECT

pa0007~pernr

INTO CORRESPONDING FIELDS OF TABLE itab

FROM pa0007

INNER JOIN pa0001 ON pa0001~pernr = pa0007~pernr

WHERE

pa0007~pernr IN s_pernr AND

pa0007~schkz = ‘N825‘   AND

( pa0001~persk = ‘A0‘ OR pa0001~persk = ‘A2‘ ).

SORT itab BY pernr.

DELETE ADJACENT DUPLICATES FROM itab COMPARING pernr .

ENDFORM .                    "sub_get_data

*&---------------------------------------------------------------------*

*&      Form  sub_process_data

*&---------------------------------------------------------------------*

*       text

*----------------------------------------------------------------------*

FORM sub_process_data .

DATA:s_time LIKE teven-ltime ,           "打卡时间

s_time1 LIKE teven-ltime .          "打卡时间

DATA:s_date LIKE teven-ldate .           "打卡时间

LOOP AT itab .

FREE hr_data .

FREE hr_data1 .

FREE hr_data1[] .

CALL FUNCTION ‘HR_TMW_DB_READ_TEVENT‘

EXPORTING

pernr    = itab-pernr

fromdate = s_begda

todate   = s_endda

IMPORTING

RESULT   = hr_data.

hr_data1[] = hr_data[].

SORT hr_data1 BY pernr ldate ltime.

**时间在7:00——8:30之间的打卡数据

**先确认该期间的打卡次数是否大于1,小于或等于1的,不做处理;大于1的,再判断是否存在上班卡,

**无上班卡的不做处理;有上班卡的,只保留第一次上班卡数据。

**判断早上打卡重复数据

s_time = ‘070000‘.

s_time1 = ‘083000‘.

FREE s_date .

LOOP AT hr_data1 WHERE satza = ‘P10‘.

IF s_date =  hr_data1-ldate .

IF hr_data1-ltime >= s_time AND hr_data1-ltime <= s_time1 .

hr_data1-zaob = ‘X‘ .                     "代表出现重复打卡记录

ENDIF .

s_date = hr_data1-ldate .

ELSE .

s_date = hr_data1-ldate .

ENDIF .

MODIFY hr_data1 .

CLEAR hr_data1 .

ENDLOOP .

**时间在18:00——24:00之间的打卡数据

**先确认该期间的打卡次数是否大于1,小于或等于1的,不做处理;大于1的,

**再判断是否存在下班卡,无下班卡的不做处理;有下班卡的,只保留第一次下班卡数据。

s_time = ‘180000‘.

s_time1 = ‘240000‘.

FREE s_date .

LOOP AT hr_data1 WHERE satza = ‘P20‘.

IF s_date =  hr_data1-ldate .

IF hr_data1-ltime >= s_time AND hr_data1-ltime <= s_time1 .

hr_data1-zaob = ‘X‘ .                     "代表出现重复打卡记录

ENDIF .

s_date = hr_data1-ldate .

ELSE .

s_date = hr_data1-ldate .

ENDIF .

MODIFY hr_data1 .

CLEAR hr_data1 .

ENDLOOP .

*有标记则为需要去掉的数据

LOOP AT hr_data1 WHERE zaob = ‘X‘ .   "最终需要去重的数据

del_teven-pdsnr = hr_data1-pdsnr.

del_teven-pernr = hr_data1-pernr.

APPEND del_teven .

CALL FUNCTION ‘HR_TMW_DB_UPDATE_TEVENT‘           "去重函数

TABLES

del_teven         = del_teven

del_teven_more    = del_teven_more.

CALL FUNCTION ‘BAPI_TRANSACTION_COMMIT‘

EXPORTING

wait = ‘X‘.

CLEAR del_teven .

CLEAR del_teven[] .

CLEAR hr_data1 .

ENDLOOP .

ENDLOOP .

MESSAGE ‘执行完毕!‘ TYPE ‘I‘ .

ENDFORM .                    "sub_process_data

原文地址:https://www.cnblogs.com/jimi520/p/12103190.html

时间: 2024-11-06 07:35:30

PA30时间事件获取+删除操作的相关文章

JQuery基本知识、选择器、事件、DOM操作、动画

1:基本选择器 <title></title> <script src="js/jquery-1.7.2.min.js"></script> </head> <body> <form id="form1" runat="server"> <div id="div1"> <a>aaaaa</a> <%--

云计算设计模式(七)——事件获取模式

云计算设计模式(七)--事件获取模式 使用仅追加存储到记录完整一系列描述在一个域上取数据,而不是存储仅仅是当前的状态,从而使存储区可以被用来实现该域对象的动作事件.该图案可以通过避免需要同步的数据模型和商业领域中简化复杂的结构域的任务;提高性能,可扩展性和响应能力;提供交易数据的一致性;并保持完整的审计跟踪和记录,可能使补偿措施. 背景和问题 大多数应用程序使用数据,并在典型的方法是应用到通过更新它作为用户使用的数据保持数据的当前状态.例如,在传统的创建,读取,更新和删除(CRUD)模型的典型数

二叉平衡树的插入和删除操作

1.      二叉平衡树 二叉排序树的时间复杂度和树的深度n有关.当先后插入的结点按关键字有序时,二叉排序树退化为单枝树,平均查找长度为(n+1)/2,查找效率比较低.提高查找效率,关键在于最大限度地降低树的深度n.因此需要在构成二叉排序树的过程中进行“平衡化”处理,使之成为二叉平衡树. 二叉平衡树,又称AVL树.它或者是一棵空树,或者是具有下列性质的树: 1)      具备二叉排序树的所有性质: 2)      左子树和右子树深度差的绝对值不超过1: 3)      左子树和右子树都是二叉

文件事件 时间事件

redis是一个事件驱动程序 主要包含 文件事件和时间事件 文件事件:主要就是server和client进行操作产生的文件 时间事件:主要就是一些需要定时执行的事件. 文件事件: 文件事件处理器是单线程运行的,但是通过IO多路复用,可以处理多个套接字 下面是文件事件处理器的结构 文件事件处理器主要是上面四个部分构成的 文件事件其实就是对套接字操作的抽象,我们当执行读写的时候就会产生,因为文件事件处理器可以连接多个套接字,所以可能多个文件事件同时发生,但是IO多路程序会将这些文件事件都放在一个队列

libev中timer时间事件监控器

1.数据结构 #define ev_at(w) ((WT)(w))->at#define ev_active(w) ((W)(w))->active typedef ev_watcher_time *WT; struct ev_loop{ ev_tstamp mn_now ANHE * timers int timermax int timercnt ev_watcher * rfeeds} /* Heap Entry */     //是否缓存时间监控器中的at字段.#if EV_HEAP_

数据访问 之 删除操作 ------ 2017-04-27

1.实现效果:点击删除---出现提示对话框"是否确定删除按钮"----点取消则不删除数据.点确定则删除数据 2.效果图如下: (1)点击删除 (2)出现提示对话框 (3)确定删除 (4)查看数据库是否也已经删除 3.代码如下 main.php代码 重点: (1)考虑到用户的交互性,性别不能显示为1,0:所以要转换一下: (2)同样民族的也不能输出代号:---查询或连接查询 (3)删除操作要有提示 -- onlick事件 <body> <h1>对表的信息进行操作&

Java链表的删除操作

刚开始接触java时很长一段时间, 总觉得java链表的删除操作自己写的有bug. 第一个bug版本: 仅接removeByForlist.remove(j)之后应该显示调用i-- public static void testRemoveByFor() { List<Integer> removeByForlist = Lists.newArrayList(1, 1, 1, 1, 1, 1, 1, 1, 1, 1); System.out.println(ToStringBuilder.re

webform 光棒效果,删除操作弹出确定取消窗口

鼠标移入onmouseover和鼠标移出onmouseout,代码里没大写我这也就不大写了.那首先,我们得获取Class 为tr_item里的所有东西,也就是项标签里的数据.然后呢,我们定义一个oldColor为空,一会用来记录原来的颜色.接着,我们用for循环 把两个事件给项标签里所有的东西都附上. <%-- 光棒效果 --%> <script type="text/javascript"> window.onload = function () { var

[原创]java WEB学习笔记24:MVC案例完整实践(part 5)---删除操作的设计与实现

本博客为原创:综合 尚硅谷(http://www.atguigu.com)的系统教程(深表感谢)和 网络上的现有资源(博客,文档,图书等),资源的出处我会标明 本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱好者,互联网技术发烧友 微博:伊直都在0221 QQ:951226918 ---------------------------------