数据导入工具BDC使用方法.docx
《数据导入工具BDC使用方法.docx》由会员分享,可在线阅读,更多相关《数据导入工具BDC使用方法.docx(36页珍藏版)》请在冰点文库上搜索。
数据导入工具BDC使用方法
目录
1.BDC的基本知识2
1.1BDC概述2
1.2BDC的处理步骤2
2.录制BDC模板3
2.1录制BDC模板3
2.2BDC模板的编辑4
2.3制作数据收集文件(数据原文件)7
2.4数据转换及上载(方法一)8
2.5数据转换及上载(方法二)20
2.6数据转换及上载(方法三)23
2.7数据转换及上载(方法四)27
2.8几种方法的比较30
3.BDC的执行及出错处理31
3.1BDC的执行31
3.2BDC的日志查看32
3.3BDC的出错分析34
3.4BDC运行时,常用的OKCODE35
1.BDC的基本知识
1.1BDC概述
BDC(BatchInputCommunication)有时也称为批输入(BatchInput),是SAP系统数据传输的主要技术之一,主要用于把数据大量大批输入到SAP系统。
1.2BDC的处理步骤
第一步:
录制BDC标准命令(BDC模板)
第二步:
制作数据收集的EXCEL文件(数据原文件)
第三步:
数据转换,并上载到SAP系统中
常用以下方法:
1.WORD邮件合并
2.SAPTOOL
3.EXCEL宏
4.ABAP程序
第四步:
到批处画面进行执行处理
注意:
做好的模板,要在测试系统反复测试后,才到生产机进行批量导入执行,否则容易出现大量错误。
主数据还好,没用使用前大部分能删除,但业务数据就不行了,只能冲销了。
2.录制BDC模板
2.1录制BDC模板
事务码:
SHDB
进入画面后,点击按钮“Newrecording”
输入以下数据后,回车
Recording(记录名):
XXXXXX(由自己指定)
Transactioncode:
PSPO(需要调用的TCODE,这里以创建科目表层科目为例)
进入画面后,如同平常创建创建科目表层科目一样处理(注意:
尽量不要有多余动作)
点击保存后,将自动回到以下画面。
如上图点击保存按钮,然后点击
按扭下载BDC模板到本地电脑中(一般作为文本文件来保存)。
2.2BDC模板的编辑
打开BDC模板文件(可以用记事本、EXCEL、WORD来打开),以EXCEL为例,先打开一个新的EXCEL表,把所有单元格设置为文本格式,然后用记事本打开BDC模板,全部选择后复制后把数据全部粘贴到EXCEL中。
仔细分析检查一下确认有无需要添加或删除的行。
对于“Fieldname”这列中出现BDC_SUBSCR或BDC_CURSOR这样的数据(如图片中黄颜色行),你可以按行来删除这样的多余命令(注意要按整行来删除)。
BDC命令行的解读:
0000TFSP0:
表示调用TCODEPSP0
BDC_OKCODE=ACC_CRE:
表示点了创建科目按钮
BDC_OKCODE/00:
表示回车
BDC_OKCODEXXXX:
一般表示为点击XXXX按扭
SAPLGL_ACCOUNT_MASTER_MAINTAIN2001X:
表示调用程序的2001画面
GLACCOUNT_SCREEN_KEY-SAKNR160001:
表示给字段赋值16001
(通常表、字段的表示格式为:
XXXXXX-ZZZZZ,XXXXXX为表名,ZZZZ为字段名)
若原录制的BDC字段不够,需要添加字段,则可在先在SAP前台画面选择中该字段然后点击F1,然后点击“Technicalinformation”,如下图:
(例:
添加创建科目表层“损益科目类型”字段,从上图我们可以看到这个字段所属的表为:
GLACCOUNT_SCREEN_COA,字段名为:
XPLACCT,则在BDC模板中加入以下行:
)
0000GLACCOUNT_SCREEN_COA-XPLACCT
对于插入行应该放在哪个屏幕哪一行,你应该找一下附近相关的字段,相近的字段为:
“资产负债表类型”(字段名为:
GLACCOUNT_SCREEN_COA-XBILK),则这一行可以放到这一行的前面或后面一行。
进一步用图来说明:
修改前:
修改后:
(修改部分为黄颜色行)
检查确认后把EXCEL中的BDC模板保存为文本文件。
2.3制作数据收集文件(数据原文件)
充分考虑业务需要及BDC的字段需要,来整理一张EXCEL表来收集数据,如下图为创建科目表层科目所需要的数据。
数据收集表做好以后,交相关业务人员收集填写。
交相关人员填写前,最好把数据收集表的填写格式要求做充分说明,比如:
科目组只能填写:
GL、PL…,科目号只能填写10位数以内。
2.4数据转换及上载(方法一)
本方法使用WORD邮件合并功能来实现,把每一条数据循环按BDC模板执行。
1.用WORD打开文本文件的BDC模板
打开WORD后,点击打开文件按钮,选择路径,注意:
指定文件类型为*.*
如上图,选择好指定的文件
如上图,选择Windows默认,
点击菜单:
工具->信函与邮件->邮件合并
点击右下角的:
“下一步”
继续点击:
“下一步”
继续点击:
“下一步”
出现上图“选择数据源”的对话框时,选择你的数据收集模板文件,然后点击打开。
出现上图时,注意选择EXCEL表中你的数据在哪个sheet表中
出现上图时,点击确认
出现上图时,点击“下一步”
出现右图中的“其他项目”时,就需要对每一个需要替换的字段进行指定。
用鼠标选择中要替换的第一个字段值,(如上图中的科目号,注意要全部选择上),然后点击右边的“其他项目”
出现上图时,点击“插入”按钮,然后再点击“关闭”按钮
如上图,一个一个地把要替代的字段全部指定好,并检查确认后,点击“下一步”
如上图,点击“下一步”
如上图,直到找不到点击“下一步”时,则选择“编辑个人信函”
出现上图对话框时,如上图选择“确定”
出现前页WORD画面时,注意翻页查看一下,是不是所有的记录都有了。
确认后选择另存为:
如上图,输入文件名,并选择好文件类型(一定要为纯文本)
(呵呵,不好意思,手误写错误了文件名,本应该为FSP0_UPLOAD.txt)
出现上图时,选择“确定”
2.上载文件
事务码:
SHDB
如上图选中一个Recording,点击修改按钮
点击上载按扭
,并选择相应的上载文件
点击打开按钮,上载文件。
如上图,上载后点击保存按钮
,然后点击
回到前一画面
如上图,到这一画面后,选择中你的Recording,点击
当弹出对话窗口时,选择“keepsession”,然后点击按扭
,这样你的BDC就送入BATCHINPUT等待处理了。
2.5数据转换及上载(方法二)
本方法使用一个名叫“saptool完全版+().exe”的工具来实现,把每一条数据循环按BDC模板执行。
1.数据文件按一定格式整理
如上图,
(1).在第一列之前增加一列;
(2).在第一行之前增加九行;
(3).第一行输入的是相应的SAP字段名;
(4).第二行是字段名说明;
(5).第三行是字段类型;
(6).第四行是字段长度;
(7).第五行至第七行,可以不填写;
(8).第八行是说明数据是否为必填写,还是可选。
(9).第九行第一单元格输入“STARTDATA”
(10).在全部数据输入后,再下一行的第一单元格输入“ENDDATA”
数据有效行:
有效的数据应该放在“STARTDATA”的下一行开始,并且应该在“ENDDATA”之前的上行止;
数据有效列:
从有字段名的第一列开始,到有字段名的最后一列。
当然,你也可以以这种EXCEL的数据表作为数据收集模板。
2.数据文件另存为文本文件
方法一:
将1中的EXCEL文件另存为以制表符分隔的文本文件
方法二:
将1中的EXCEL有数据的这一个表页全部选中并复制,再打开一个空记事本,将数据粘贴到记事本中,然后保存为文本文件。
3.使用SAPTOOL.exe将数据全部套用模板
找到“saptool完全版+().exe”文件,双击打开。
(1)第一行:
选择你的BDC模板
(2)第二行:
选择你的数据源,也就是你将EXCEL另存为文本文件的那个文件
(3)第三行:
选择生成的上载文件放在哪个文本文件里
(4)第四行:
选择运行日志放到哪里(运行出错时注意查看此日志)
全部选择好后,点击
4.使用SAP专门的程序来上载文件
事务码:
SE38
输入程序名:
ZSBDC010然后执行(这是一个开发的程序,需要用它来生成批会话,可通过SE80来生成此程序,上载源代码;保存的时候可以用下载的方式把源代码保存成文本文件)
如上图,选择你要上载的文件,并输入你的session名,然后点击执行按钮
这样你的BDC就送入BATCHINPUT等待处理了。
2.6数据转换及上载(方法三)
本方法使用excel宏实现,把每一条数据循环按BDC模板执行。
1.打开写有宏的EXCEL表,启用宏。
(你若没有这样的文件,可以上网找一找,应该很容易找到的)
2.将数据收集表放到“BDCRawData”表页
注意:
“STARTDATA”应放在第一单元格“ENDDATA”应该放在最后一行数据的下一行的第一个单元格。
3.将BDC模板放到到写有EXCEL宏的文件的“BDCTemplate”表页
注意:
(1)将原BDC文件中的第一行删除(即有TCODE的那一行)
(2)将原来的程序屏幕号与“X”合并到一个单元格
(3)将TCODE写为:
TCDE+XXXX(事务码)写到BDC模板数据最后一行的下一行
(4)在TCODE的下一行写入结束标志“ENDTCDE”
(5)模板的行有效范围:
第三行至TCODE的前
(5)模板的列有效范围:
BDC放在A到D的四列中
(6)从E列开始的列:
为注释列,放一些注释说明
把D列的格式设置为自定义格式:
0;0;
对于需要替换的字段,如上图中的D9列,对应的应该是会计科目组,你可进入表页“BDCRawData”查看一下会计科目组在哪一列,若在D列,则此处写入公式:
$D$1
这样一个字段一个字段对核对,并指定公式。
4.进入“BDCMenu”表页,执行数据转换
点击按钮“StartBDCUtility”
第一行第一个选择框:
指定你的BDC数据收集文件在哪个EXCEL文件
第一行第二个选择框:
指定你的BDC数据收集文件在哪个表页
第二行第一个选择框:
指定你的BDC模板在哪个EXCEL文件
第二行第二个选择框:
指定你的BDC模板在哪个表页
如上图选择后,点击按钮:
OK,
指定生成的上载文件存放的路径及文件名。
5.使用SAP专门的程序来上载文件
事务码:
SE38
输入程序名:
ZSBDC010然后执行
如上图,选择你要上载的文件,并输入你的session名,然后点击执行按钮
这样你的BDC就送入BATCHINPUT等待处理了。
2.7数据转换及上载(方法四)
本方法使用ABAP/4程序宏实现,把每一条数据循环按BDC模板执行。
1.定义一个内表包含
data:
beginofrecordoccurs0,
anlkl(8),"资产分类
bukrs(4),"公司代码
txt50(50),"资产描述1
txa50(50),"资产描述2
anlhtxt(50),"资产主号说明
sernr(18),"序列号
...
endofrecord.
2.定义屏幕选项
*atselection-screen
atselection-screenonvalue-requestforp_file.
callfunction'KD_GET_FILENAME_ON_F4'
exporting
static='X'
mask=',*.*,*.*.'
changing
file_name=p_file.
3.文件上载
callfunction'WS_UPLOAD'
exporting
filename=p_file
filetype='DAT'
tables
data_tab=record
exceptions
conversion_error=1
file_open_error=2
file_read_error=3
invalid_type=4
no_batch=5
unknown_error=6
invalid_table_width=7
gui_refuse_filetransfer=8
customer_error=9
others=10.
ifsy-subrc<>0.
messages023with'上传文件有误。
'.
leavelist-processing.
endif.
5.BDC命令套用
loopatrecord.
performdynprousing:
'SAPLAIST''0105''X',
'''ANLA-ANLKL'record-anlkl,"资产分类
'''ANLA-BUKRS''1000',"公司代码
'''BDC_OKCODE''=MAST',
'SAPLAIST''1000''X',
'''ANLA-ANLN2''0',
'''ANLA-TXT50'record-txt50,"资产描述1
'''ANLA-TXA50'record-txa50.
…
endloop.
6.BDC命令
clearbdcdata.
ifanespace.
move:
atobdcdata-program,
btobdcdata-dynpro,
ctobdcdata-dynbegin.
else.
move:
btobdcdata-fnam,
ctobdcdata-fval.
endif.
appendbdcdata.
7.直接送入批处理
calltransaction'AS91'
usingbdcdata
modep_tmode.
callfunction'TB_MESSAGE_BUILD_TEXT'
exporting
langu=sy-langu
msgid=sy-msgid
msgno=sy-msgno
msgv1=sy-msgv1
msgv2=sy-msgv2
msgv3=sy-msgv3
msgv4=sy-msgv4
importing
text=message-text.
moverecord-txt50tomessage-mark.
movetabixtomessage-tabix.
appendmessage.
clearmessage.
2.8几种方法的比较
方法一(Word邮件合并):
优点:
1.容易为用户理解及接受,
2.涉及字段较少时,速度快。
缺点:
1.Word邮件合并处理10000以上记录时,速度非常慢
2.字段较多时,替换字段比较麻烦
3.对于SAP4.6及以下版本的SAPBDC文件下载打开时用WORD编辑没什么问题,但对于SAP4.7以上版本,则WORD编辑时,版式比较难看,且不整齐,容易编辑出错
4.不能进行逻辑判断
方法二(SAPTOOL):
优点:
1.源文件套用BDC模板速度快
2.可按字段长度检查是否有字段超出长度
缺点:
1.不允许有不同表但有相同字段,否则出错(导入固定资产就有这样的现象)
2.不能进行逻辑判断
方法三(EXCEL宏):
优点:
1.源文件套用BDC模板速度快
2.BDC模板可根据需要添加及修改
3.可以进行逻辑判断
缺点:
1.需要对VB有一定了解
2.不能修改EXCEL中的格式
方法四(ABAP/4程序):
优点:
1.源文件套用BDC模板速度快
2.BDC模板可根据需要添加及修改
3.可以进行逻辑判断
缺点:
1.需要ABAP/4人员支持
2.添加字段时,需要修改程序
3.BDC的执行及出错处理
3.1BDC的执行
事务码:
SM35
选择你的Session,然后点击
我的建议是:
选择后台运行Background
选择扩展日志Extendedlog
然后点击
3.2BDC的日志查看
事务码:
SM35
如上图,选择你的Session,点击
再选择是哪次执行的,然后点击
查看
1.总记录有多少,(如:
30transactionsread)
2.共有多少条执行成功,(如:
0transactionsprocessed)
3.多少条记录出错,(如:
30transactionswitherrors)
4.出错记录是第几条记录(注意查看Index列)
5.出错的消息是什么(注意查看Message列)
3.3BDC的出错分析
1.查看LOG中的消息
2.通过再次执Session(注意:
再次执行只是针对出错部分执行,已执行成功的不再执行),这次选择前台处理Process/foreground,通过前台看看是什么错误
3.4BDC运行时,常用的OKCODE