SAP - ABAP - BDC详细使用
更新时间:2024-04-16 10:06:01 阅读量: 综合文库 文档下载
- sap是什么意思呀推荐度:
- 相关推荐
传输数据的过程
1. 2. 3. 4.
获取要传输的数据(路径+文件名+格式)
转换数据格式,使其成为系统可接受的格式(Sender Structure → Receiver Sructure) 传输 反馈
BDC
批导入是传递大批量数据到R/3的一项标准技术。其模拟事务流程传递数据,数据就像在线输入一样进行传递。该技术的优点是会执行事务的相关检查,因此可以保证数据的一致性。
批导入过程分为两步:
1. 创建一个批导入session ,其中包括所有相关的数据。 2. 处理批导入session,将其中包含的数据传入R/3系统。
数据传输工作台只执行第一步。
大多数SAP标准数据传输程序都使用的是批导入技术。数据传输程序创建一个批导入session,其在迟后一个时间处理。批导入可以以多种方式执行: ? ? ?
前台 后台
在处理过程中显示错误信息
如果想对数据传输进行检查,可以在前台处理批导入或以显示错误信息的方式执行。如果想传递数据或测试其性能,应该在后台处理。
特点分析
简单地讲BDC就是先把相应事务的处理过程录制下来,然后让系统自动执行特定的事务过程,在执行的过程中把需要传输的数据输入进去。所以可以看出BDC的优点是并不要求使用者对业务知识有多了解,只要相应的过程可以录制下来,就可以反复执行录制的过程,把数据输入系统。但BDC有一个缺点,就是输入数据时,如果项目栏的记录很多而需要换页时,不同的程序可能换页方式不同,并且不同的显示器所显示的行项目数量也不一样多,会出现执行不下去或者遗漏数据的情况,这个问题比较棘手。
获取源数据
一般情况下,在进行传输之前要把数据放入内表 ? 从系统内部获取
例如,以ALV形式输出数据后
此时,数据存放在与ALV控件相对应的内表中 ? 从系统外部获取
CALL FUNCTION’DATA_UPLOAD’
把数据由系统外部上传到ABP的内表中,这里的外部数据有严格的格式要求。如果源数据是存放在EXCEL中,需要将其另存为以Tab键格开的文本文件。
录屏
作用:录制特定事务的执行过程,得到相应事务的数据的BDCTATA格式 BDCDATA是以BDC方式进行数据传输的数据格式,如前文所说的Receiver Sructure 关于BDCDATA可以在SE11下看到系统定义的标准结构。 T_CODE:SHDB 生成代码:
录屏之后先把录制的代码保存起来,然后根据保存的代码生成BDC代码段,具体生成办法有以下2种:
? 可以把保存号的源代码导出到本地文件(一般是text文件),然后可以从该文件中
拷贝相应的代码段到特定程序。 方法:选择录屏代码→“导出”按钮 ? 也可以让系统自己生成程序代码
方法:选择录屏代码→“程序”按钮
数据转换
目的:把要输入的数据转换为BDCDATA的格式,即前面所说的Sender Structure → Receiver Sructure 方法:一般的做法是数据在进入内表之前按照相应需要一条记录占据一个内表行,然后循环内表,把内表各字段的数据赋给BDCDATA
执行
一般有两种方法可用于执行BDC:CALL TRANSACTION和CALL FUNCTION
'BDC_INSERT',其中在使用后者时候需要先打开一个SESSION,可以通过CALL FUNCTION 'BDC_OPEN_GROUP'来实现该功能。一般情况下,推荐使用前者,所以主要讲该方法。下面的例子中2和3有重复。
方法1(推荐)
CALL TRANSACTION TCODE USING BDCDATA MODE CTUMODE UPDATE CUPDATE
MESSAGES INTO MESSTAB. 参数说明:
TCODE:相应事务的事务码 MODE: A: show all dynpros
E: show dynpro on error only N: do not display dynpro
UPDATE: S: synchronously A: asynchronously L: local
MESSAGES:用于存放消息,系统中定义了一个标准的消息结构BDCMSGCOLL,用于存放消息,可在SE11低下查看该标准结构的信息。如果在调用事务时指定了该表,那么不管是否有错误,相应的消息都会进入该表。
方法2
IF SESSION = 'X'.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = TCODE TABLES DYNPROTAB = BDCDATA.
方法3
IF E_GROUP_OPENED = ' '.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT GROUP = E_GROUP USER = E_USER KEEP = E_KEEP HOLDDATE = E_HDATE. E_GROUP_OPENED = 'X'. ENDIF.
CALL FUNCTION 'BDC_INSERT'
EXPORTING TCODE = TCODE TABLES DYNPROTAB = BDCDATA.
说明:CALL FUNCTION 'BDC_OPEN_GROUP'的作用就是为了打开一个SESSION,这一点通过比较2,3也可以看出来。
示例(操作步骤)
1. 获取源数据:
一般可通过CALL FUNCTION的方式从系统外部获取源数据
CALL FUNCTION 'WS_UPLOAD' EXPORTING
* CODEPAGE = ' ' FILENAME = P_FLNAME FILETYPE = 'DAT' * HEADLEN = ' ' * LINE_EXIT = ' ' * TRUNCLEN = ' ' * USER_FORM = ' ' * USER_PROG = ' ' * DAT_D_FORMAT = ' ' * IMPORTING
* FILELENGTH = TABLES
DATA_TAB = I_MAIN * 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 * NO_AUTHORITY = 10 * OTHERS = 11 .
IF SY-SUBRC <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.
关于FUNCTION 'WS_UPLOAD'的详细参数可在SE37低下查看。 还有一个FUNCTION 'UPLOAD'有相同的功能。 2. 录屏
第一步:进入事务记录器 T_CODE:SHDB 第二步:创建新记录
在Transaction Recorder: Recording Overview屏幕中选择‘New recording’按钮
创建新记录
第三步:命名新记录,并输入相应的事务码 其它的参数是对执行方式的详细设置,可先不考虑
给记录取名 事务码
第四步:执行相应的事务操作。
下面的执行过程与相应事务的处理相同,事务操作完成之后,系统会提示你要不要保存输入的数据,选择‘是’。
第五步:保存记录
然后系统会显示录制的源代码,选择‘保存’按钮,把新的记录保存到记录条目中去
如果在没有保存的情况下选择‘推出’,系统会提示你要不要把新的记录保存起来,选择‘是’。
第六步:生成代码段
有两种方法可用来生成代码段,第一种是让系统根据保存的记录自动生成BDC程序,方法是选择相应的记录(该记录会变成棕色),然后选择‘Program’按钮,系统会根据所选择的记录,自动生成一个Report程序,可根据该程序编写你自己的程序。
让系统用记录的条目生成一个BDC程序
或者也可以把记录中的源代码导出到本地文件。方法是双击相应的记录,显示其内容,然后选择‘导出’按钮,再按系统的要求选择存放的路径,或者需要时重新命名,这样做的好处是,输出的代码是大写的,可通过拷贝保存的代码写程序。s
导出到本地文件
3. 数据格式转换
数据转换就是把用内表存放的数据转换为BDCDATA的形式。一般可以在上载数据时,是根据情况把数据按一定的结构一条一条分别存放在内表中,然后循环内表,把内表的字段赋给BDCDATA ,录制的BDCDATA中包含一些其它的字段,这是让系统识别的,不用太注意,只需要把内表中要输入的数据赋给相应的bdc_field。
LOOP AT I_MAIN INTO W_MAIN.
perform bdc_dynpro using 'SAPLMGMM' '0060'. perform bdc_field using 'BDC_CURSOR' 'RMMG1-MATNR'. perform bdc_field using 'BDC_OKCODE' '=AUSW'.
perform bdc_field using 'RMMG1-MATNR' \物料编号 I_MAIN-MATNR.
perform bdc_field using 'RMMG1-MBRSH' \行业类型 I_MATNR-MBRSH.
perform bdc_field using 'RMMG1-MTART' \物料类型 I_MATNR-MTART. perform bdc_dynpro using 'SAPLMGMM' '0070'. perform bdc_field using 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(06)'. perform bdc_field using 'BDC_OKCODE' '=ENTR'.
perform bdc_field using 'MSICHTAUSW-KZSEL(01)' 'X'.
perform bdc_field using 'MSICHTAUSW-KZSEL(02)' 'X'.
perform bdc_field using 'MSICHTAUSW-KZSEL(04)' 'X'.
perform bdc_field using 'MSICHTAUSW-KZSEL(05)' 'X'.
perform bdc_field using 'MSICHTAUSW-KZSEL(06)' 'X'.
perform bdc_field using 'MSICHTAUSW-KZSEL(12)' 'X'.
perform bdc_field using 'MSICHTAUSW-KZSEL(13)' 'X'.
perform bdc_dynpro using 'SAPLMGMM' '0080'. perform bdc_field using 'BDC_CURSOR' 'RMMG1-LGORT'. perform bdc_field using 'BDC_OKCODE' 'ENTR'.
perform bdc_field using 'RMMG1-WERKS' \ I_MATNR-WERKS.
perform bdc_field using 'RMMG1-LGORT' \ I_MATNR-LGORT. perform bdc_dynpro using 'SAPLMGMM' '4000'. perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BDC_CURSOR' 'MAKT-MAKTX'.
perform bdc_field using 'MAKT-MAKTX' \ I_MATNR-MAKTX. perform bdc_dynpro using 'SAPLMGMM' '4000'. perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'BDC_CURSOR' 'MAKT-MAKTX'. perform bdc_field using 'MAKT-MAKTX' 'BDC perform bdc_dynpro using 'SAPLMGMM' '4000'. perform bdc_field using 'BDC_OKCODE' '/00'.
perform bdc_field using 'MAKT-MAKTX' 'BDC perform bdc_field using 'BDC_CURSOR' 'MARC-LADGR'.
工厂 库存地点物料描述测试数据'. 测试数据'.
perform bdc_field using 'MARC-LADGR' '0001'.
perform bdc_dynpro using 'SAPLMGMM' '4000'. perform bdc_field using 'BDC_OKCODE' 'PICK'.
perform bdc_field using 'MAKT-MAKTX' 'BDC测试数据'. perform bdc_field using 'BDC_CURSOR' 'MARC-DISMM'. perform bdc_field using 'MARC-DISMM' 'M0'.
perform bdc_field using 'MARC-DISPO' '000'.
perform bdc_field using 'MARC-DISLS' '2D'.
perform bdc_dynpro using 'SAPLMGMM' '4000'. perform bdc_field using 'BDC_OKCODE' 'PICK'.
perform bdc_field using 'BDC_CURSOR' 'MAKT-MAKTX'. perform bdc_field using 'MAKT-MAKTX' 'BDC测试数据'. perform bdc_field using 'MARC-BESKZ' 'X'.
perform bdc_field using 'MARC-FHORI' '000'.
perform bdc_field using 'MARC-DZEIT' \ I_MATNR-DZEIT. perform bdc_dynpro using 'SAPLSPO1' '0300'. perform bdc_field using 'BDC_OKCODE' '=YES'. perform bdc_transaction using 'MM01'.
ENDLOOP.
4. 执行
上面的代码段中已经包含执行部分:
perform bdc_transaction using 'MM01'.
这是由于数据结构的特点适合这样处理。
另外需要注意,在执行BDC的之前要打开一个SESSION,执行完毕之后要关闭该SESSION,这是通过打开和关闭BDC_GROUP实现的。
perform open_group.
perform close_group.
相应的代码分别为 FORM OPEN_GROUP. IF SESSION = 'X'. SKIP.
WRITE: /(20) 'Create group'(I01), GROUP. SKIP.
* open batchinput group
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING CLIENT = SY-MANDT GROUP = GROUP USER = USER KEEP = KEEP
HOLDDATE = HOLDDATE. WRITE: /(30) 'BDC_OPEN_GROUP'(I02), (12) 'returncode:'(I05), SY-SUBRC. ENDIF. ENDFORM.
FORM CLOSE_GROUP. IF SESSION = 'X'.
* close batchinput group
CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: /(30) 'BDC_CLOSE_GROUP'(I04), (12) 'returncode:'(I05), SY-SUBRC. ELSE.
IF E_GROUP_OPENED = 'X'.
CALL FUNCTION 'BDC_CLOSE_GROUP'. WRITE: /.
WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06). ENDIF. ENDIF. ENDFORM.
正在阅读:
SAP - ABAP - BDC详细使用04-16
2012年临沧市小学六年级学业水平检测11-03
实践性知识_教师专业发展的知识基础07-21
远方作文500字07-01
地铁工程试验检测方案04-09
爱爱医资源-执业医师笔试考试历年150个“主要”考点汇总05-15
指间MUD 萌新跳坑入门指南03-18
2013高考山东文综试题及答案01-01
教育部关于高校产业规范化建设中组建高校资产经营有限公司的若干(精)05-09
校园快递调研报告11-06
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 使用
- 详细
- ABAP
- SAP
- BDC
- 江苏省中等职业学校2017-2018学年学业水平考试语文模拟试卷2
- 关于对我市大学生志愿者进行2011年度考
- NETGEAR WGR614v10快速安装指南 - 图文
- 6计算机网络基础ok
- 桩基专项安全施工方案 - 图文
- 新视野四级试卷B卷及答案
- 湘教版地理七下《亚洲及欧洲》word教案 - 图文
- 开班仪式流程
- 企业财产保险合同
- 八卦象数疗法配方大汇总
- 江苏省扬州中学2015届高三1月质量检测英语试题无听力
- 低压无功补偿控制器的设计
- 浅谈工程量清单计价法与定额计价法的利弊
- 2013届高考物理冲刺套卷(大纲版,十三) - 图文
- 水平定向钻机
- ANSYS 14.5功能亮点
- 西方经济学阶段测试题
- 暑期八年级复习3
- 理工C阅读理解新增文章
- 幼儿园督导评估自评报告