随着SAP软件在企业的应用比重不断扩大,如何将SAP后台Oracle数据库中的数据信息导入到AO软件中供审计人员进行分析筛选是我们经常需要面对的问题。由于目前AO软件提供的数据导入模板无法覆盖到全部财务软件,使得在现场审计时经常遇到无法导入数据或导入数据需要做大量数据转换整理的情况,这严重影响了审计人员查处违法违纪问题及案件线索的效率。如何解决数据导入问题就显得尤其重要。
创新互联公司网站建设服务商,为中小企业提供成都网站设计、网站制作服务,网站设计,网站托管维护等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联公司。
在某公司审计中,笔者所在的审计组在向AO软件导入企业财务数据备份文件时,由于内置财务数据模板与SAP系统备份不匹配,导致无法将该公司的财务数据导入AO软件供审计人员分析筛选。
经过分析研究,审计人员先将SAP系统备份导入到鼎信诺审计软件中进行财务数据整理,然后再将整理后的财务数据导出到excel表格中,最后将所得的excel文件导入AO软件完成财务数据重建。具体过程如下:
第一步:提取财务数据备份文件。利用鼎信诺前端取数工具dataget.exe,进入取数界面之后,点击确认进入SAP系统取数工具界面(如图1所示)。以SAP客户端的方式登录,并连接SAP服务器,选择所需的账套以及相应的会计年度,按照提示操作,将取得的财务数据保存到指定目录下,例如:C:\Documents and Settings\gwzhangjing\桌面\SAP(如图2所示)。
图1为鼎信诺前端取数工具界面。
图2为SAP系统取数工具界面。
第二步:将取得的财务数据导入鼎信诺审计软件。先创建对应的项目,并且登录该项目。然后,点击主界面右侧区域准备阶段中的“前端数据导入”,选择保存到指定目录中对应的财务数据备份文件,将数据导入到建好的项目中,完成账表重建(如图3所示)。
图3为前端数据导入界面。
第三步:导出excel数据表。对导入到鼎信诺审计软件中的数据进行整理,使审计人员能够对所需数据进行初步筛选,将有价值的财务数据导出生成excel表(如图4所示)。
图4为将数据导出生成excel表。
第四步:编制生成财务数据采集标准表。将从鼎信诺审计软件中导出的excel表,按照AO软件自带模板的格式进行转换,调整对应的科目名称生成科目表、科目余额表、记账凭证表、辅助余额表、辅助余额期初表等标准表,以便将其导入AO时顺利完成账表重建(如图5所示)。
图5为财务数据采集标准表。
第五步:将生成的数据采集标准表导入AO软件。在得到财务数据标准表后,依照AO软件的数据采集向导,逐步完成财务信息的重建,从而满足了审计人员对财务数据分析筛选的要求(如图6所示)。
图6为将标准表导入AO软件。
审计人员利用上述方法,对导入的财务数据进行分析,发现该公司向其下属公司违规出借资金问题,提高了审计效率,扩大了审计成果。
在SM30里,找到相应表,按“表示图-打印”,然后会进入打印的界面,这个界面里有你此表的所有数据,且可以在“系统-列表-保存-本地文件-电子表格”里保存至EXCEL。呵呵刚才自己也在找这个解决办法。
以下是基本程序,根据情况只要稍稍修改就可以了~~
1、 REPORT ZLLLL.
data:begin OF ZMSTUDENT,
ZMSID TYPE ZMSID,
ZMCNO TYPE ZMCNO,
ZMKNO TYPE ZMKNO,
ZMNAME TYPE ZMNAME,
ZMSSEX TYPE ZMSSEX,
ZMSAGE TYPE ZMSAGE,
ZMSTEL TYPE ZMSTEL,
END OF ZMSTUDENT.
DATA:itab LIKE TABLE OF ZMSTUDENT WITH HEADER LINE,(存放表)
bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE,(执行的参数传递表)
message_table LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.(返回执行结果)
DATA: BEGIN OF it_message OCCURS 0,
msgtp TYPE bdc_mart,
matnr LIKE makt-matnr,
text(40),
END OF it_message.
SELECTION-SCREEN BEGIN OF BLOCK BLK WITH FRAME TITLE TEXT-001.
PARAMETERS:P_TYP TYPE CTU_MODE OBLIGATORY DEFAULT'N',
P_FILE LIKE RLGRAP-FILENAME OBLIGATORY.
SELECTION-SCREEN END OF BLOCK BLK.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM SELECT_FILE.
START-OF-SELECTION.
PERFORM GET_FILE_DATA.
PERFORM pross_data.
*-----------------------------------------------------------------
form SELECT_FILE .
DATA : l_FILETAB TYPE FILETABLE,
L_WAFTAB LIKE LINE OF L_FILETAB,
L_RC TYPE I.
CALL METHOD CL_GUI_FRONTEND_SERVICES=FILE_OPEN_DIALOG
EXPORTING
WINDOW_TITLE = '打开文件'
initial_DIRECTORY = 'C:/'
CHANGING
FILE_TABLE = L_FILETAB
RC = L_RC
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5
.
IF sy-subrc 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
EXIT.
ELSE.
READ TABLE l_filetab INTO l_waftab INDEX 1.
p_file = l_waftab-filename.
CLEAR: l_filetab,
l_waftab.
ENDIF.
endform. " SELECT_FILE
*----------------------------------------------------------------
form GET_FILE_DATA .
DATA lt_excel TYPE TABLE OF alsmex_tabline WITH HEADER LINE.
DATA l_index LIKE sy-tabix.
FIELD-SYMBOLS .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_file
i_begin_col = '1'
i_begin_row = '2'
i_end_col = '50'
i_end_row = '50000'
TABLES
intern = lt_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
* 将EXCEL格式中的数据导入到内表TAB_LOAD中
LOOP AT lt_excel.
MOVE lt_excel-col TO l_index.
* ASSIGN COMPONENT l_index OF STRUCTURE itab TO .
* MOVE lt_excel-value TO .
* AT END OF row.
* TRANSLATE gt_user-uname TO UPPER CASE.
CASE L_INDEX.
WHEN'1'.
MOVE lT_EXCEL-VALUE TO ZMSTUDENT-ZMSID.
WHEN'2'.
MOVE lT_EXCEL-VALUE TO ZMSTUDENT-ZMCNO.
WHEN'3'.
MOVE lT_EXCEL-VALUE TO ZMSTUDENT-ZMKNO.
WHEN'4'.
MOVE lT_EXCEL-VALUE TO ZMSTUDENT-ZMNAME.
WHEN'5'.
MOVE lT_EXCEL-VALUE TO ZMSTUDENT-ZMSSEX.
WHEN'6'.
move lt_excel-value to zmstudent-zmsage.
when'7'.
move lt_excel-value to zmstudent-zmstel.
endcase.
at end of row.
APPEND itab.
CLEAR itab.
ENDAT.
ENDLOOP.
endform. " GET_FILE_DATA
*----------------------------------------------------------------
form PROSS_DATA .
DATA: l_line1(6).
data: aa(3), bb(3) ,cc(3).
DATA:LC(5).
LOOP AT itab.
perform bdc_dynpro using 'ZMLL001' '2000'.(需要用到的程序名和屏幕号)
perform bdc_field using 'BDC_CURSOR'
'LS_ZMSTUDENT-ZMSTEL'.
perform bdc_field using 'BDC_OKCODE'
'SAVE'.
MOVE ITAB-ZMCNO TO AA.(因为zmcno字段是num型的,所以这里要把它放大一个char型的字段里)
MOVE ITAB-ZMKNO TO BB.
MOVE ITAB-ZMSAGE TO CC.
*****************以下这段是录屏截得的代码~~~~~*******************
perform bdc_field using 'LS_ZMSTUDENT-ZMSID'
itab-zmsid.
* record-ZMSID_001.
perform bdc_field using 'LS_ZMSTUDENT-ZMCNO'
AA.
* itab-ZMCNO.
* record-ZMCNO_002.
perform bdc_field using 'LS_ZMSTUDENT-ZMKNO'
BB.
* itab-ZMKNO.
* record-ZMKNO_003.
perform bdc_field using 'LS_ZMSTUDENT-ZMNAME'
itab-ZMNAME.
* record-ZMNAME_004.
perform bdc_field using 'LS_ZMSTUDENT-ZMSSEX'
itab-ZMSSEX.
* record-ZMSSEX_005.
perform bdc_field using 'LS_ZMSTUDENT-ZMSAGE'
CC.
* itab-ZMSAGE.
* record-ZMSAGE_006.
perform bdc_field using 'LS_ZMSTUDENT-ZMSTEL'
itab-ZMSTEL.
* record-ZMSTEL_007.
ENDLOOP.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK1'.
CALL TRANSACTION 'ZMM' USING bdcdata MODE p_typ
UPDATE 'L'
MESSAGES INTO message_table.
DESCRIBE TABLE message_table LINES l_line1.
READ TABLE message_table INDEX l_line1.
IF sy-subrc = 0.
it_message-msgtp = message_table-msgtyp.
* it_message-matnr = itma-matnr.
SELECT SINGLE text
FROM t100
INTO it_message-text
WHERE sprsl = sy-langu AND
arbgb = message_table-msgid AND
msgnr = message_table-msgnr.
REPLACE FIRST OCCURRENCE OF ' ' IN it_message-text WITH message_table-msgv1.
REPLACE FIRST OCCURRENCE OF ' ' IN it_message-text WITH message_table-msgv2.
REPLACE FIRST OCCURRENCE OF ' ' IN it_message-text WITH message_table-msgv3.
REPLACE FIRST OCCURRENCE OF ' ' IN it_message-text WITH message_table-msgv4.
ENDIF.
APPEND it_message.
CLEAR it_message.
CLEAR:message_table,message_table[],bdcdata,bdcdata[].
endform. " PROSS_DATA
*----------------------------------------------------------------
form BDC_DYNPRO using program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
endform. " BDC_DYNPRO
*----------------------------------------------------------------
form BDC_FIELD using fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
endform. " BDC_FIELD
一般向SAP中导入数据使用catt 或者 batch input
调用SAP标准的业务操作导入数据,比如:物料主数据,供应商主数据等。
除非是自己建立的数据表,否则不建议向SAP的表中直接导入数据。
SAP为“System Applications and Products”的简称,是SAP公司的产品——企业管理解决方案的软件名称。