*&---------------------------------------------------------------------*
*& Report ZHR_BPM11 业务行事日历同步
*&
*&---------------------------------------------------------------------*
*&创建者:caizjian 日期:20141010
*&
*&---------------------------------------------------------------------* REPORT zhr_bpm11. TYPES:BEGIN OF typ_db,
pernr TYPE pa0001-pernr, "员工号
datum TYPE ptpsp-datum, "计划工作时间
tprog TYPE ptpsp-tprog, "工作计划规则
timestamp TYPE timestamp, "JOB同步时间
END OF typ_db. TYPES:BEGIN OF typ_yg,
pernr TYPE pa0001-pernr,
END OF typ_yg. DATA:gt_db TYPE TABLE OF typ_db,
gs_db LIKE LINE OF gt_db,
gt_yg TYPE TABLE OF typ_yg,
gs_yg LIKE LINE OF gt_yg. DATA:con_ora_name TYPE dbcon_name VALUE 'BPMFLOW',
tp_time1() TYPE c, "开始插入时间
tp_time2() TYPE c. "结束插入时间 data: exc_ref TYPE ref TO cx_sy_native_sql_error,
error_text TYPE string. INITIALIZATION.
IF sy-mandt EQ ''.
MOVE 'PORTAL' TO con_ora_name.
ENDIF. START-OF-SELECTION. PERFORM get_data.
PERFORM frm_connect.
*&---------------------------------------------------------------------*
*& Form GET_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data .
DATA:l_datum1 TYPE sy-datum,
l_datum2 TYPE sy-datum,
l_return TYPE bapireturn1,
lt_perws TYPE TABLE OF ptpsp,
ls_perws LIKE LINE OF lt_perws. *员工号
SELECT pernr INTO TABLE gt_yg
FROM pa0001
WHERE begda <= sy-datum
AND endda >= sy-datum
AND persk LIKE '%3'. l_datum1 = sy-datum.
l_datum2 = l_datum1 + . LOOP AT gt_yg INTO gs_yg. CLEAR:lt_perws,
l_return. CALL FUNCTION 'ZHR_GET_DWS'
EXPORTING
pernr = gs_yg-pernr
begda = l_datum1
endda = l_datum2
IMPORTING
return = l_return
TABLES
perws = lt_perws. LOOP AT lt_perws INTO ls_perws.
gs_db-pernr = gs_yg-pernr.
gs_db-datum = ls_perws-datum.
gs_db-tprog = ls_perws-tprog.
APPEND gs_db TO gt_db.
CLEAR:gs_db, ls_perws.
ENDLOOP.
ENDLOOP. ENDFORM. " GET_DATA
*&---------------------------------------------------------------------*
*& Form FRM_CONNECT
*&---------------------------------------------------------------------*
FORM frm_connect .
DATA:l_emp_id TYPE char8,
l_time TYPE char8,
l_error TYPE c. DATA:wa_log TYPE zhrbpm_log,
l_timestamp TYPE string. TRY .
EXEC SQL.
CONNECT TO: CON_ORA_NAME.
ENDEXEC.
IF sy-subrc <> .
* 出错时
RAISE EXCEPTION TYPE cx_sy_native_sql_error.
ENDIF.
EXEC SQL.
OPEN dbcur for
select Emp_id from EMP_WORK_SCHEDULE
ENDEXEC.
DO.
EXEC SQL.
FETCH NEXT dbcur INTO :L_Emp_id
ENDEXEC.
IF sy-subrc <> .
EXIT.
ENDIF.
ENDDO.
EXEC SQL.
CLOSE dbcur
ENDEXEC. * 获取开始插入时间
GET TIME.
CONCATENATE sy-datum+()
sy-datum+()
sy-datum+()
INTO tp_time1
SEPARATED BY '-'.
CLEAR l_time.
CONCATENATE sy-uzeit+()
sy-uzeit+()
sy-uzeit+()
INTO l_time
SEPARATED BY ':'.
CONCATENATE tp_time1
l_time
INTO tp_time1
SEPARATED BY space.
EXEC SQL.
UPDATE SYNC_RECORD_TBL set START_TIME = to_date(:TP_TIME1,'YYYY-MM-DD HH24:MI:SS') WHERE SID = ''
ENDEXEC.
EXEC SQL.
COMMIT
ENDEXEC.
IF l_emp_id IS NOT INITIAL.
EXEC SQL.
DELETE FROM EMP_WORK_SCHEDULE
ENDEXEC.
ENDIF.
IF sy-subrc <> .
l_error = 'X'.
ENDIF.
IF l_error IS INITIAL.
LOOP AT gt_db INTO gs_db.
IF gs_db-pernr IS INITIAL OR gs_db-datum IS INITIAL.
CLEAR gs_db.
CONTINUE.
ENDIF.
CALL FUNCTION 'CONVERT_INTO_TIMESTAMP' "获取时间戳
EXPORTING
i_datlo = sy-datum
i_timlo = sy-uzeit
i_tzone = 'UTC+8'
IMPORTING
e_timestamp = gs_db-timestamp.
EXEC SQL.
INSERT INTO EMP_WORK_SCHEDULE(EMP_ID,WORK_DATE,WORK_RULE,CREATE_DATE)
values:(:gs_db-PERNR,:gs_db-DATUM,:gs_db-TPROG,:gs_db-timestamp)
ENDEXEC.
IF sy-subrc <> .
l_error = 'X'.
" CRQ000000003316-HR抛BPM出错写日志
wa_log-prog = sy-repid."当前程序名
wa_log-tabnam = 'EMP_WORK_SCHEDULE'."表名
l_timestamp = gs_db-timestamp.
CONCATENATE gs_db-pernr
gs_db-datum
gs_db-tprog
l_timestamp
INTO wa_log-msg
SEPARATED BY '/'. PERFORM write_bpm_log USING wa_log.
EXIT.
ENDIF.
ENDLOOP.
ENDIF.
IF l_error IS INITIAL.
* 获取插入结束时间
CONCATENATE sy-datum+()
sy-datum+()
sy-datum+()
INTO tp_time2
SEPARATED BY '-'.
CLEAR l_time.
GET TIME.
CONCATENATE sy-uzeit+()
sy-uzeit+()
sy-uzeit+()
INTO l_time
SEPARATED BY ':'.
CONCATENATE tp_time2
l_time
INTO tp_time2
SEPARATED BY space.
EXEC SQL.
UPDATE SYNC_RECORD_TBL set END_TIME = to_date(:TP_TIME2,'YYYY-MM-DD HH24:MI:SS') WHERE SID = ''
ENDEXEC. EXEC SQL.
COMMIT
ENDEXEC.
WRITE: '插入数据成功!'.
ELSE.
EXEC SQL.
ROLLBACK
ENDEXEC.
WRITE: '插入数据失败!'.
ENDIF.
EXEC SQL.
DISCONNECT :CON_ORA_NAME
ENDEXEC.
CATCH cx_sy_native_sql_error INTO exc_ref.
error_text = exc_ref->get_text( ).
EXEC SQL.
ROLLBACK
ENDEXEC.
IF sy-batch = 'X'.
WRITE: '插入数据失败!',
/ error_text.
ELSE.
MESSAGE error_text TYPE 'I'.
ENDIF.
LEAVE PROGRAM. ENDTRY. ENDFORM. " FRM_CONNECT
*&---------------------------------------------------------------------*
*& Form WRITE_BPM_LOG
*&---------------------------------------------------------------------*
FORM write_bpm_log USING wa TYPE zhrbpm_log.
CALL FUNCTION 'ZHR_BPM_WLOG'
EXPORTING
wa_log = wa
EXCEPTIONS
nodata =
OTHERS = .
IF sy-subrc <> .
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF. ENDFORM. " WRITE_BPM_LOG

一个关于native sql的程序的更多相关文章

  1. 第一个 Asp.Net vNext 应用程序

    要说免费的虚拟主机的话,最好的服务商应该就是Microsoft Azure(不是Windows Azure由世纪互联运营),提供免费的1GB .NET/Java/Python/Php空间,日流量有限制 ...

  2. Native SQL

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

  3. JNI编程(一) —— 编写一个最简单的JNI程序

    来自:http://chnic.iteye.com/blog/198745 忙了好一段时间,总算得了几天的空闲.貌似很久没更新blog了,实在罪过.其实之前一直想把JNI的相关东西整理一下的,就从今天 ...

  4. NHibernate构建一个ASP.NET MVC应用程序

    NHibernate构建一个ASP.NET MVC应用程序 什么是Nhibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/re ...

  5. 13.hibernate的native sql查询(转自xiaoluo501395377)

    hibernate的native sql查询   在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hi ...

  6. 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之三

    原文:Getting Started with Sencha Touch 2: Build a Weather Utility App (Part 3) 作者:Lee BoonstraLee is a ...

  7. 一个特殊的SQL Server阻塞案例分析

    上周,在SQL Server数据库下面遇到了一个有意思的SQL阻塞(SQL Blocking)案例.其实个人对SQL Server的阻塞还是颇有研究的.写过好几篇相关文章. 至于这里为什么要总结一下这 ...

  8. 【ASP.NET】第一个ASP.NET MVC应用程序

    本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...

  9. Open SQL和Native SQL到底有什么本质的区别

    1.個人愚見:它們只是在实现的方式上,执行效率上不同,有的书上还说native sql存在一定风险 *& 20170521 171300 1.Open sql 是由创建数据库数据的ABAP命令 ...

随机推荐

  1. 在CentOS/RHEL/Scientific Linux 6下安装 LAMP

    LAMP 是服务器系统中开源软件的一个完美组合.它是 Linux .Apache HTTP 服务器.MySQL 数据库.PHP(或者 Perl.Python)的第一个字母的缩写代码.对于很多系统管理员 ...

  2. USACO Milk2 区间合并

    这题WA了四次,后来发现不能用所谓的桶排来写 虽然空间上是可以的,但是存在这样一个问题 比如两组数据[15,20]和[21,30] 在20 和 21这两个时刻之间没有milking,但是用桶排的方法写 ...

  3. ASP.NET MVC 5 学习教程:添加视图

    原文 ASP.NET MVC 5 学习教程:添加视图 起飞网 ASP.NET MVC 5 学习教程目录: 添加控制器 添加视图 修改视图和布局页 控制器传递数据给视图 添加模型 创建连接字符串 通过控 ...

  4. linux下I2C驱动

    2C协议规定了主机和从机的概念,在驱动中采用的多是适配器(主机)和设备(从机).首先,i2c规定  Bus    -> Algorithm  算法               Adapter   ...

  5. mysql基础入门

    基本命令:(sql分号结束,切记.切记) 登录mysql:mysql -h ip  -u用户名 -p   或者  mysql  -u用户名  -p密码 查看数据库: show  databases: ...

  6. saltstack:使用教程之二高级模块用法Grains、Pillar

    1.grains用法: 在客户端服务启动的时候收集客户的基础信息,在配置发生变化后也可以通过master重新同步 显示一个客户端的所有项目: [root@node5 ~]# salt "no ...

  7. TCP拥塞控制算法内核实现剖析(十)

    内核版本:3.2.12 主要源文件:linux-3.2.12/ net/ ipv4/ tcp_veno.c 主要内容:Veno的原理和实现 Author:zhangskd @ csdn blog 概要 ...

  8. 在不同编译环境中如何使用sleep()函数

    今天在学习有关时间函数时,想让程序暂时挂起,一段时间后在继续执行! 用到了系统函数sleep(): 在vc下sleep函数是以毫秒为单位,如果想让其停留3秒,需要这样做  sleep(3*1000); ...

  9. BZOJ 2005: [Noi2010]能量采集( 数论 + 容斥原理 )

    一个点(x, y)的能量损失为 (gcd(x, y) - 1) * 2 + 1 = gcd(x, y) *  2 - 1. 设g(i)为 gcd(x, y) = i ( 1 <= x <= ...

  10. EFM32在使用IAR开发环境配置ICf文件以及指定程序存储地址空间

    EFM32在IAR开发环境下指定代码,数据的存储空间 为了便于后续的项目升级,管理,需要对代码,数据的存储空间加以设定,也在网上找下相关的资料,笔者水平有限, 如下内容不一定完全正确,如有错误之后,还 ...