如何将财政总账数据手工导入AO操作系统
来源:本站  时间:2013-07-08 00:00:00
冯  浩
    从2011年开始,郑州市市、县(区)两级财政系统全部使用了《方正春元财政总账管理系统》(V2.2.60),其后台数据库为oracle 10g。目前,AO软件没有相应的数据转换模板,需要通过手工进行数据导入,才能在AO中开展审计工作。现简要介绍如何将该系统数据通过手工方式导入AO,从而生成电子账套。
    一、数据获取及数据还原
    审计组可以让被审单位提供预算内总账的oracle数据库DMP备份文件,如郑州市市本级的为:zzsgkzw_20120408.dmp。
这里的数据还原是指将DMP备份数据导入到审计人员电脑的oracle 10g中。在导入之前,审计人员可以在oracle 10g中完成建立用户表空间、用户名、登录密码、定义角色等基础工作。如此例中,创建用户表空间为:CZJ,创建用户名为:FH,登录密码为:fenghao,数据库实例为AUDITDB,原始数据保存路径为:E:\郑州市财政局预算内2011年\zzsgkzw_20120408.dmp。在C:命令提示符界面中输入以下命令,即可完成DMP数据导入oracle,命令如下:
IMP FH/FENGHAO@AUDITDB FILE=E:\郑州市财政局预算内2011年\zzsgkzw_20120408.dmp  FULL=Y  IGNORE=Y
    二、重要数据表
    经分析,确定的重要表有:
序号
表名
中文含义
备注
1
accountant_subject
科目表
 
2
budget_subject
预算项目表
功能分类
3
budget_subject_item
预算支出表
经济分类
4
budget_subject_income
预算收入表
收入科目
5
enterprise
预算部门表
 
6
money_kind
资金性质表
 
7
remain_budget
余额表
 
8
voucher_budget
凭证主表
 
9
voucher_detail_budget
凭证明细表
 
10
table_manager
表说明表
可以查询表信息
11
field_manager
字段说明表
可以查询字段信息
(具体各表字段略去,读者可以通过查询字段说明表获取信息)
    三、数据整理过程
    数据整理工作在SQL Server 2008中进行,主要操作步骤如下:
    (一)将数据导入SQL Server 2008
    1、在SQL Server 2008中新建一个数据库,如:“郑州市财政局预算内”;
    2、打开SQL Server 导入和导出向导;
在选择数据源界面中,选择数据源为:Microsoft OLE DB Provider for Oracle,点击属性按钮,在数据链接属性界面中,输入服务器名称:AUDITDB,用户名称:FH ,密码:FENGHAO ,并选中“允许保存密码”选项,然后测试连接;
    3、在“选择目标”界面中,选择身份验证为:使用Windows 身份验证,数据库:郑州市财政局预算内,然后点击下一步;
    4、在指定表复制或查询界面中,选择“复制一个或多个表或视图的数据”选项;
    5、在选择源表和源视图中,选中上述ACCOUNTANT_DUBGET等重要表,并可以在“编辑映射”功能中,对各表的一些字段的数据类型及长度定义进行更加合适的定义;
    6、查看数据类型映射,并点下一步,选中“立即运行”,点击下一步,将数据表导入SQL Server 2008数据库中;
    (二)数据整理
    1、删除非审计年度(2011年)记录
为了减少数据量,可以将表中非2011年度的记录删除,如删除ACCOUNTANT_SUBJECT表中记录的SQL语句如下(其余表省略):
--删除ACCOUNTANT_SUBJECT表中的非2011年度记录
DELETE
FROM FH.ACCOUNTANT_SUBJECT
WHERE SET_YEAR <>'2011'
    2、更新凭证明细表的摘要
    在预算总账管理当中,每一条记录都有与其相应的功能分类、经济分类、预算部门、资金性质等若干项重要属性,而在AO电子账套数据中,这些属性无法直观地看到。针对这一问题,我们可以将这些重要属性添加在凭证摘要中,作为摘要的一部分,在进行数据分析时,只需通过检索摘要,就可以实现对记录属性查询的目的。主要通过UPDATE语句来实现。
    3、修改余额表
    经观察,在余额表中(REMAIN_BUDGET)中,只显示有最末级科目的余额,而没有上级科目的余额,如果不对科目余额表进行处理而直接导入AO,AO中的科目余额表的一级科目的期初余额将无法正确显示(多数为0)。为此,需要对科目余额表进行修改,使其能够满足需要。解决这一问题并不复杂,我们可以通过对set_code,AS_CODE字段的分组,计算出各级科目的余额,并将结果保存在一张新余额表(如REMAIN_BUDGET_NEW)中即可,语句如下:
select set_code,as_code,SUM(balance) as balance_new
into fh.REMAIN_BUDGET_NEW
from fh.REMAIN_BUDGET group by set_code,AS_CODE  order by SET_CODE,len(as_code),AS_CODE
    4、按账套拆分记录
    通过分析得知,字段SET_CODE的含义为账套代码,通过对凭证明细表SET_CODE字段进行唯一性检索:select distinct set_code from fh.VOUCHER_DETAIL_BUDGET.
可以清楚地看到,电子数据中共包括0001、0003、0004…0024等19个账套。接下来就需要将这十九套账凭证主表、凭证明细表、余额表、科目表一一拆分开来,然后,再逐一导入AO中生成十九个电子账套。
    四、手工导入AO要点提示
    (一)ACCOUNTANT_BUDGET(科目表)导入环节:
科目方向字段:IS_DEBIT  ( 1为借  0为贷)。
    (二)REMAIN_BUDGET(余额表)导入环节:
余额是按年存储的,不是按月存储的;余额存储方式是:只存储余额,余额方向由正负来表示。
    (三)VOUCHER_BUDGET(凭证主表)导入环节:
凭证表的关联字段VOUCHER_ID;
凭证日期由凭证年度:SET_YEAR 凭证月份:V_MONTH 凭证日:V_DAY三个字段组成;
凭证主表与凭证明细表的关联号字段:VOUCHER_ID。
    (四)voucher_detail_budget(凭证明细表)导入环节:
凭证表的关联字段、凭证流水号均选择VOUCHER_ID,分录序号由AO系统自动生成;
发生额:分别有借方发生额字段(deb_money)和贷方发生额字段(cre_money)。
最后,将账表重建即可。
打印此文 关闭窗口