您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > SAP_ABAP_BDC详细使用
传输数据的过程1.获取要传输的数据(路径+文件名+格式)2.转换数据格式,使其成为系统可接受的格式(SenderStructure→ReceiverSructure)3.传输4.反馈BDC批导入是传递大批量数据到R/3的一项标准技术。其模拟事务流程传递数据,数据就像在线输入一样进行传递。该技术的优点是会执行事务的相关检查,因此可以保证数据的一致性。批导入过程分为两步:1.创建一个批导入session,其中包括所有相关的数据。2.处理批导入session,将其中包含的数据传入R/3系统。数据传输工作台只执行第一步。大多数SAP标准数据传输程序都使用的是批导入技术。数据传输程序创建一个批导入session,其在迟后一个时间处理。批导入可以以多种方式执行:前台后台在处理过程中显示错误信息如果想对数据传输进行检查,可以在前台处理批导入或以显示错误信息的方式执行。如果想传递数据或测试其性能,应该在后台处理。特点分析简单地讲BDC就是先把相应事务的处理过程录制下来,然后让系统自动执行特定的事务过程,在执行的过程中把需要传输的数据输入进去。所以可以看出BDC的优点是并不要求使用者对业务知识有多了解,只要相应的过程可以录制下来,就可以反复执行录制的过程,把数据输入系统。但BDC有一个缺点,就是输入数据时,如果项目栏的记录很多而需要换页时,不同的程序可能换页方式不同,并且不同的显示器所显示的行项目数量也不一样多,会出现执行不下去或者遗漏数据的情况,这个问题比较棘手。获取源数据一般情况下,在进行传输之前要把数据放入内表从系统内部获取例如,以ALV形式输出数据后此时,数据存放在与ALV控件相对应的内表中从系统外部获取CALLFUNCTION’DATA_UPLOAD’把数据由系统外部上传到ABP的内表中,这里的外部数据有严格的格式要求。如果源数据是存放在EXCEL中,需要将其另存为以Tab键格开的文本文件。录屏作用:录制特定事务的执行过程,得到相应事务的数据的BDCTATA格式BDCDATA是以BDC方式进行数据传输的数据格式,如前文所说的ReceiverSructure关于BDCDATA可以在SE11下看到系统定义的标准结构。T_CODE:SHDB生成代码:录屏之后先把录制的代码保存起来,然后根据保存的代码生成BDC代码段,具体生成办法有以下2种:可以把保存号的源代码导出到本地文件(一般是text文件),然后可以从该文件中拷贝相应的代码段到特定程序。方法:选择录屏代码→“导出”按钮也可以让系统自己生成程序代码方法:选择录屏代码→“程序”按钮数据转换目的:把要输入的数据转换为BDCDATA的格式,即前面所说的SenderStructure→ReceiverSructure方法:一般的做法是数据在进入内表之前按照相应需要一条记录占据一个内表行,然后循环内表,把内表各字段的数据赋给BDCDATA执行一般有两种方法可用于执行BDC:CALLTRANSACTION和CALLFUNCTION'BDC_INSERT',其中在使用后者时候需要先打开一个SESSION,可以通过CALLFUNCTION'BDC_OPEN_GROUP'来实现该功能。一般情况下,推荐使用前者,所以主要讲该方法。下面的例子中2和3有重复。方法1(推荐)CALLTRANSACTIONTCODEUSINGBDCDATAMODECTUMODEUPDATECUPDATEMESSAGESINTOMESSTAB.参数说明:TCODE:相应事务的事务码MODE:A:showalldynprosE:showdynproonerroronlyN:donotdisplaydynproUPDATE:S:synchronouslyA:asynchronouslyL:localMESSAGES:用于存放消息,系统中定义了一个标准的消息结构BDCMSGCOLL,用于存放消息,可在SE11低下查看该标准结构的信息。如果在调用事务时指定了该表,那么不管是否有错误,相应的消息都会进入该表。方法2IFSESSION='X'.CALLFUNCTION'BDC_INSERT'EXPORTINGTCODE=TCODETABLESDYNPROTAB=BDCDATA.方法3IFE_GROUP_OPENED=''.CALLFUNCTION'BDC_OPEN_GROUP'EXPORTINGCLIENT=SY-MANDTGROUP=E_GROUPUSER=E_USERKEEP=E_KEEPHOLDDATE=E_HDATE.E_GROUP_OPENED='X'.ENDIF.CALLFUNCTION'BDC_INSERT'EXPORTINGTCODE=TCODETABLESDYNPROTAB=BDCDATA.说明:CALLFUNCTION'BDC_OPEN_GROUP'的作用就是为了打开一个SESSION,这一点通过比较2,3也可以看出来。示例(操作步骤)1.获取源数据:一般可通过CALLFUNCTION的方式从系统外部获取源数据CALLFUNCTION'WS_UPLOAD'EXPORTING*CODEPAGE=''FILENAME=P_FLNAMEFILETYPE='DAT'*HEADLEN=''*LINE_EXIT=''*TRUNCLEN=''*USER_FORM=''*USER_PROG=''*DAT_D_FORMAT=''*IMPORTING*FILELENGTH=TABLESDATA_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.IFSY-SUBRC0.*MESSAGEIDSY-MSGIDTYPESY-MSGTYNUMBERSY-MSGNO*WITHSY-MSGV1SY-MSGV2SY-MSGV3SY-MSGV4.ENDIF.关于FUNCTION'WS_UPLOAD'的详细参数可在SE37低下查看。还有一个FUNCTION'UPLOAD'有相同的功能。2.录屏第一步:进入事务记录器T_CODE:SHDB第二步:创建新记录在TransactionRecorder:RecordingOverview屏幕中选择‘Newrecording’按钮第三步:命名新记录,并输入相应的事务码其它的参数是对执行方式的详细设置,可先不考虑创建新记录第四步:执行相应的事务操作。下面的执行过程与相应事务的处理相同,事务操作完成之后,系统会提示你要不要保存输入的数据,选择‘是’。第五步:保存记录然后系统会显示录制的源代码,选择‘保存’按钮,把新的记录保存到记录条目中去如果在没有保存的情况下选择‘推出’,系统会提示你要不要把新的记录保存起来,选择‘是’。给记录取名事务码第六步:生成代码段有两种方法可用来生成代码段,第一种是让系统根据保存的记录自动生成BDC程序,方法是选择相应的记录(该记录会变成棕色),然后选择‘Program’按钮,系统会根据所选择的记录,自动生成一个Report程序,可根据该程序编写你自己的程序。或者也可以把记录中的源代码导出到本地文件。方法是双击相应的记录,显示其内容,然后选择‘导出’按钮,再按系统的要求选择存放的路径,或者需要时重新命名,这样做的好处是,输出的代码是大写的,可通过拷贝保存的代码写程序。s让系统用记录的条目生成一个BDC程序3.数据格式转换数据转换就是把用内表存放的数据转换为BDCDATA的形式。一般可以在上载数据时,是根据情况把数据按一定的结构一条一条分别存放在内表中,然后循环内表,把内表的字段赋给BDCDATA,录制的BDCDATA中包含一些其它的字段,这是让系统识别的,不用太注意,只需要把内表中要输入的数据赋给相应的bdc_field。LOOPATI_MAININTOW_MAIN.performbdc_dynprousing'SAPLMGMM''0060'.performbdc_fieldusing'BDC_CURSOR''RMMG1-MATNR'.performbdc_fieldusing'BDC_OKCODE''=AUSW'.performbdc_fieldusing'RMMG1-MATNR'物料编号I_MAIN-MATNR.performbdc_fieldusing'RMMG1-MBRSH'行业类型I_MATNR-MBRSH.performbdc_fieldusing'RMMG1-MTART'物料类型I_MATNR-MTART.performbdc_dynprousing'SAPLMGMM''0070'.performbdc_fieldusing'BDC_CURSOR''MSICHTAUSW-DYTXT(06)'.performbdc_fieldusing'BDC_OKCODE''=ENTR'.导出到本地文件performbdc_fieldusing'MSICHTAUSW-KZSEL(01)''X'.performbdc_fieldusing'MSICHTAUSW-KZSEL(02)''X'.performbdc_fieldusing'MSICHTAUSW-KZSEL(04)''X'.performbdc_fieldusing'MSICHTAUSW-KZSEL(05)''X'.performbdc_fieldusing'MSICHTAUSW-KZSEL(06)''X'.performbdc_fieldusing'MSICHTAUSW-KZSEL(12)''X'.performbdc_fieldusing'MSICHTAUSW-KZSEL(13)''X'.performbdc_dynprousing'SAPLMGMM''0080'.performbdc_fieldusing'BDC_CURSOR''RMMG1-LGORT'.performbdc_fieldusing'BDC_OKCODE''ENTR'.performbdc_fieldusing'RMMG1-WERKS'工厂I_MATNR-WERKS.performbdc_fieldusing'RMMG1-LGORT'库存地点I_MATNR-LGORT.performbdc_dynprousing'SAPLMGMM''4000'.performbdc_fieldusing'BDC_OKCODE''/00'.performbdc_fieldusing'BDC_CURSOR''MAKT-MAKTX'.performbdc_fieldusing'MAKT-MAKTX'物料描述I_MATNR-MAKTX.performbdc_dynprousing'SAPLMGMM''4000'.performbdc_fieldusing'BDC_OKCODE''/00'.performbdc_fieldusing'BDC_CURSOR''MAKT-MAKTX'.performbdc_fieldusing'MAKT-MAKTX''BDC测试数据'.performbdc_dynprousing'SAPLMGMM''4000'.performbdc_fieldusing'BDC_OKCODE''/00'.performbdc_fieldusing'MAKT-MAKTX''BDC测试数据'.performbdc_fieldusing'BDC_CURSOR''MARC-LADGR'.performbdc_fieldusing'MARC-LADGR''0001'.performbdc_dynprousing'SAPLMGMM''4000'.performbdc_fieldusing'BDC_OKCO
本文标题:SAP_ABAP_BDC详细使用
链接地址:https://www.777doc.com/doc-2857046 .html