- INSERT DATA
DATA:lv_temp TYPE char14,
gt_log TYPE TABLE OF zbms_log WITH HEADER LINE..
DATA: p_dbname(10) VALUE 'DATA'.
DATA: l_sql_error TYPE REF TO cx_sy_native_sql_error,
l_error_text TYPE string.
CONCATENATE sy-datum sy-uzeit INTO lv_temp.
TRY.
EXEC SQL.
CONNECT TO :p_dbname
endexec.
clear l_error_text.
catch cx_sy_native_sql_error into l_sql_error.
call method l_sql_error->get_text
receiving
result = l_error_text.
endtry.
if not l_error_text is initial.
gt_log-zname = 'ZFM_PROJWBS'.
"gt_log-znum
gt_log-zdate = sy-datum.
gt_log-ztime = sy-uzeit.
gt_log-zuser = sy-uname.
gt_log-zmess = '连接到数据库失败:' && l_error_text && ',请联系管理员!'.
gt_log-ztype = 'E'.
"append gt_log.
modify zbms_log from gt_log.
if sy-subrc = 0.
commit work .
else.
rollback work.
endif.
message '运行失败!' type 'E'.
stop.
endif.
try.
loop at t_input INTO DATA(wa_input).
exec sql.
insert into ZTBMS_DATA_PROJWBS
( ZFCHTWBS,
ZSJBH,
ZFCBH,
ZFCHTMS,
ZFCMC,
ZFCLX,
ZLYXSWBS,
ZXMXSWBS,
ZLYXSMS,
ZXMXSMS,
LoadTime )
values(:wa_input-ZFCHTWBS,
:wa_input-ZSJBH,
:wa_input-ZFCBH,
:wa_input-ZFCHTMS,
:wa_input-ZFCMC,
:wa_input-ZFCLX,
:wa_input-ZLYXSWBS,
:wa_input-ZXMXSWBS,
:wa_input-ZLYXSMS,
:wa_input-ZXMXSMS,
TO_DATE(:lv_temp,'yyyymmddhh24miss'))
ENDEXEC.
ENDLOOP.
CLEAR l_error_text.
* catch cx_sy_native_sql_error into l_sql_error.
* l_error_text = l_sql_error->get_text( ).
CATCH cx_sy_native_sql_error INTO l_sql_error.
CALL METHOD l_sql_error->get_text
RECEIVING
result = l_error_text.
ENDTRY.
"操作Oracle数据库时,异常处理
IF NOT l_error_text IS INITIAL. "如果捕获到异常,记录日志,回滚
gt_log-zname = 'ZFM_PROJWBS'.
"gt_log-znum
gt_log-zdate = sy-datum.
gt_log-ztime = sy-uzeit.
gt_log-zuser = sy-uname.
gt_log-zmess = l_error_text.
gt_log-ztype = 'E'.
"append gt_log.
MODIFY zbms_log FROM gt_log.
IF sy-subrc = 0.
COMMIT WORK .
ELSE.
ROLLBACK WORK.
ENDIF.
EXEC SQL.
rollback
ENDEXEC.
MESSAGE '运行失败!' TYPE 'E'.
ELSE. "如果无异常,提交插入数据
gt_log-zname = 'ZFM_PROJWBS'.
gt_log-zdate = sy-datum.
gt_log-ztime = sy-uzeit.
gt_log-zuser = sy-uname.
gt_log-zmess = '成功'.
gt_log-ztype = 'S'.
"append gt_log.
MODIFY zbms_log FROM gt_log.
IF sy-subrc = 0.
COMMIT WORK .
ELSE.
ROLLBACK WORK.
ENDIF.
EXEC SQL.
commit
ENDEXEC.
MESSAGE '运行成功!' TYPE 'S'.
ENDIF.
EXEC SQL.
DISCONNECT :p_dbname
endexec.
2.SELECT DATA
try.
DELETE from zbms_sjgl. "'
EXEC SQL.
OPEN p_dbname FOR
SELECT CRMID , CRMDESC
FROM ZTBMS_DATA2SAP_CRM
ENDEXEC.
DO.
EXEC SQL.
FETCH NEXT p_dbname INTO :WA_ZBMS_SJGL_1
ENDEXEC.
IF sy-subrc <> 0.
EXIT.
ELSE.
MOVE-CORRESPONDING WA_ZBMS_SJGL_1 to wa_zbms_sjgl.
append wa_zbms_sjgl to gt_zbms_sjgl.
ENDIF.
ENDDO.
clear l_error_text.
catch cx_sy_native_sql_error into l_sql_error.
call method l_sql_error->get_text
receiving
result = l_error_text.
endtry.
3.UPDATE DATA