一个关于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命令 ...
随机推荐
- 字符串查找函数 find()函数
find()函数可以帮助你在两个字符串之间,查找很多他们的关系... #include<iostream> #include<string> using namespace s ...
- USACO March. 2012
Connect the Cows Times17 水题 Landscaping Flowerpot Tractor 广搜 搜到边界就可以终止了 没什么难度 #include <stdio.h&g ...
- Android短信拦截和电话拦截
MainActivity: package com.wyl.bctest; import android.support.v7.app.ActionBarActivity; import androi ...
- 我的Python成长之路---第三天---Python基础(10)---2016年1月16日(雾霾)
二.collections collections是对Python现有的数据类型的补充,在使用collections中的对象要先导入import collections模块 1.Counter——计数 ...
- POJ 2451 Uyuw's Concert(半平面交nlgn)
//#pragma comment(linker, "/STACK:16777216") //for c++ Compiler #include <stdio.h> # ...
- Git 配置editor编辑器
Git 配置editor编辑器 在ubuntu系统下,Git默认的编辑器是命令行,学名叫V什么的,使用起来诸多不便 在编辑提交日志的时候,用的比较多. 可以选择unbuntu默认的文档编辑器作为git ...
- 转:一道笔试题-将int型数组强制转换为char*,再求strlen,涉及大小端
写出如下程序运行结果: #include<stdio.h> #include<string.h> int main() { int a[2000]; char *p = (ch ...
- python 拼写检查代码(怎样写一个拼写检查器)
原文:http://norvig.com/spell-correct.html 翻译:http://blog.youxu.info/spell-correct.html 怎样写一个拼写检查器 Pete ...
- JavaDoc的生成规则---ShinePans
使用方法: javadoc [options] [packagenames] [sourcefiles] [@files] -overview <file> 从 HTML ...
- phantomjs环境搭建已经运行
1.下载phantomjs http://phantomjs.org/ 2.运行 新建phantomjs.bat,记得改目录路径 里面内容为: D:\java\phantomjs\phantomjs. ...