一个关于native sql的程序
*&---------------------------------------------------------------------*
*& 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的程序的更多相关文章
- 第一个 Asp.Net vNext 应用程序
要说免费的虚拟主机的话,最好的服务商应该就是Microsoft Azure(不是Windows Azure由世纪互联运营),提供免费的1GB .NET/Java/Python/Php空间,日流量有限制 ...
- Native SQL
声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...
- JNI编程(一) —— 编写一个最简单的JNI程序
来自:http://chnic.iteye.com/blog/198745 忙了好一段时间,总算得了几天的空闲.貌似很久没更新blog了,实在罪过.其实之前一直想把JNI的相关东西整理一下的,就从今天 ...
- NHibernate构建一个ASP.NET MVC应用程序
NHibernate构建一个ASP.NET MVC应用程序 什么是Nhibernate? NHibernate是一个面向.NET环境的对象/关系数据库映射工具.对象/关系数据库映射(object/re ...
- 13.hibernate的native sql查询(转自xiaoluo501395377)
hibernate的native sql查询 在我们的hibernate中,除了我们常用的HQL查询以外,还非常好的支持了原生的SQL查询,那么我们既然使用了hibernate,为什么不都采用hi ...
- 【翻译】Sencha Touch 2入门:创建一个实用的天气应用程序之三
原文:Getting Started with Sencha Touch 2: Build a Weather Utility App (Part 3) 作者:Lee BoonstraLee is a ...
- 一个特殊的SQL Server阻塞案例分析
上周,在SQL Server数据库下面遇到了一个有意思的SQL阻塞(SQL Blocking)案例.其实个人对SQL Server的阻塞还是颇有研究的.写过好几篇相关文章. 至于这里为什么要总结一下这 ...
- 【ASP.NET】第一个ASP.NET MVC应用程序
本系列目录:ASP.NET MVC4入门到精通系列目录汇总 开发流程 新建Controller 创建Action 根据Action创建View 在Action获取数据并生产ActionResult传递 ...
- Open SQL和Native SQL到底有什么本质的区别
1.個人愚見:它們只是在实现的方式上,执行效率上不同,有的书上还说native sql存在一定风险 *& 20170521 171300 1.Open sql 是由创建数据库数据的ABAP命令 ...
随机推荐
- Linux上传下载文件命令
转载自http://lupingui.iteye.com/blog/239694 linux系统下可以直接从客户端上传文件到服务器端,命令格式: [plain] view plaincopy scp ...
- 树莓派做web服务器(nginx、Apache)
一想到Linux Web服务器,我们首先想到的是: Apache + MySql + Php. Apache:是世界使用排名第一的Web服务器软件. 可以运行在几乎所有广泛使用的计算机平台上,由于其跨 ...
- USACO Healthy Holsteins DFS
使用排列组合,遍历所有可能的情况C(1)+C(2)+C(3)……C(n)= 2^G种组合 数据规模不大,暴力过去最多也就是2^15 = 23768种情况 所以就暴力咯,不过还是Debug了一会 Sou ...
- HDU 1004 MAP【STL__map_的应用】
强大的MAP,今天终于开始好好学习一次. map内部是用红黑树维持的有序结构. 定义:map<int,string>mapStudent; 查找的时间复杂度为对数级别. 1.构造方法学习两 ...
- Ubuntu服务器上SSH Server 的安装和设置
网上有很多介绍在Ubuntu下开启SSH服务的文章,但大多数介绍的方法测试后都不太理想,均不能实现远程登录到Ubuntu上,最后分析原因是都没有真正开启ssh-server服务.最终成功的方法如下: ...
- 最新的QT git代码到code.qt.io/cgit,还有planet.qt.io有许多博客
http://code.qt.io/cgit/ http://planet.qt.io/
- 第2次增加ssh 主机信任脚本
dr-mysql01:/root# cat a1.sh #用户名 uname="$1" #密码 passwd="$2" #执行检测并安装expect模块 ep= ...
- 快的打车 技术部 在 杭州 招聘 #年前面试 年后入职#架构师 - 内推网(neitui.me)
快的打车 技术部 在 杭州 招聘 #年前面试 年后入职#架构师 - 内推网(neitui.me) 陈丹 (cd**@kuaidadi.com) 01-18 发布了内推 #年前面试 年后入职#架构师 • ...
- 采用openFileOutput获取输出流
package com.example.login.service; import java.io.BufferedReader; import java.io.File; import java.i ...
- First_1
#region 练习题 1.4 (1) ///*求一个N阶方阵所有原素的和.(改进:二维数组的大小可以自己输入)*/ //Console.WriteLine("请输入i和j的值:" ...