{实施数据批量导入教程、BDC实例详细讲解步骤
BDC导入教程
![BDC导入教程](https://img.taocdn.com/s3/m/05ea0e2de2bd960590c67703.png)
MSN:ZHANGQIAO243@QQ:183083099导入教程BDC导入教程BDC(Batch Data Conversion):在SAP系统里,由于某种原因,可能需要重复输入数据,(数据不同,但是操作是相同的,典型的情形就是切换系统的时候,旧系统的数据需要导入SAP),大致过程不外乎是这样: 输入一个t-code,进入一个某个屏幕,然后输入一个值(有时还要加上一些附加的checkbox选项等),点执行或者确定按钮,进入另一个屏幕,在某些字段输入值(也可能是标注checkbox选中或者不选中)或者修改这些字段里的值。
然后按“Eneter”……最后按“SAVE”……,一条记录完成了,继续下一条,如此循环。
上面所述的情形,如果让一个“人”来做的话,可能是真是受不了的。
但是对于计算机来说,就很简单了。
SAP通过一个特殊的程序(T-code:SHDB)把用户的一次业务操作的所有过程记录下来。
下面介绍一个简单的BDC导入过程首先在CJ20N中创建项目MSN:ZHANGQIAO243@QQ:183083099新建项目TEST23MSN:ZHANGQIAO243@QQ:183083099MSN:ZHANGQIAO243@QQ:183083099创建WBS,TEST2311,TEST2312,TEST2313选中项目定义,点击编辑-状态-下达,如果不下达会导致后面无法挂接物料MSN:ZHANGQIAO243@QQ:183083099下达后点击保存输入T-CODE:SHDB,进入如下界面MSN:ZHANGQIAO243@QQ:183083099点击,出现如下界面,输入录制的名称和录制的事物代码:CN21MSN:ZHANGQIAO243@QQ:183083099点击进行录制,自动跳转到CN21的界面MSN:ZHANGQIAO243@QQ:183083099输入网络参数文件,网络类型,工厂,MRP控制者后回车进入如下界面MSN:ZHANGQIAO243@QQ:183083099输入需要挂接物料的WBS元素后回车点击,进入如下界面MSN:ZHANGQIAO243@QQ:183083099作业说明中输入变压器采购,回车,然后选中此行项目MSN:ZHANGQIAO243@QQ:183083099点击最下方的,进行物料挂接输入物料号,需求数量MSN:ZHANGQIAO243@QQ:183083099完成后回车MSN:ZHANGQIAO243@QQ:183083099点击确认,进入如下界面MSN:ZHANGQIAO243@QQ:183083099录制的程序就会显示,点击进行导出,存为TXT文件MSN:ZHANGQIAO243@QQ:183083099再点击保存返回到最初的界面MSN:ZHANGQIAO243@QQ:183083099新建EXCEL CN21.XLS,输入你需要导入的数据和名称MSN:ZHANGQIAO243@QQ:183083099将先前存储的TXT用WORD打开选择工具-信函与邮件-邮件合并MSN:ZHANGQIAO243@QQ:183083099点击右键合并的下一步直到第三步MSN:ZHANGQIAO243@QQ:183083099点击浏览导入先前建立的EXCEL文件(就是选择导入的数据源),出现如下图MSN:ZHANGQIAO243@QQ:183083099点击确定点击确定在工具栏点击鼠标右键将邮件合并工具栏显示MSN:ZHANGQIAO243@QQ:183083099从打开的WORD中选择需要替换的字段,这个就需要对字段比较熟悉,知道哪些是需要输入的(可以通过F1帮助查看字段信息,确认需替换的字段的名称)。
abap bdc代码
![abap bdc代码](https://img.taocdn.com/s3/m/41e99d092f3f5727a5e9856a561252d381eb2074.png)
abap bdc代码ABAP BDC代码的应用与实践ABAP(Advanced Business Application Programming)是一种高级商务应用编程语言,它被广泛应用于SAP系统中。
BDC(Batch Data Communication)是ABAP中的一种重要技术,用于批量处理数据的输入和输出。
本文将介绍ABAP BDC代码的应用与实践。
1. BDC的基本原理BDC的基本原理是通过模拟用户的输入和操作,将数据批量输入到SAP系统中。
它可以模拟用户的键盘输入、菜单选择、屏幕操作等,实现批量数据的处理。
2. BDC的实现步骤BDC的实现步骤主要包括以下几个方面:(1)准备数据:首先需要准备好待处理的数据,可以从外部系统导入或者手动输入。
(2)创建BDC表:根据数据结构和处理逻辑,创建相应的BDC表,用于存储待处理的数据。
(3)转换数据:将待处理的数据转换成BDC表的格式,确保数据的准确性和完整性。
(4)执行BDC程序:通过调用BDC程序,将BDC表中的数据批量输入到SAP系统中。
(5)处理返回结果:根据返回结果,进行后续的处理和判断。
3. BDC的应用场景BDC广泛应用于SAP系统中各个模块的数据处理,包括物料管理、销售订单、采购订单、财务会计等。
例如,可以通过BDC实现物料的批量创建、销售订单的批量录入、采购订单的批量更新等。
4. BDC的优势和不足BDC的优势在于可以实现大规模数据的批量处理,提高工作效率和准确性。
同时,BDC还可以避免手工输入和重复劳动。
然而,BDC也存在一些不足之处,例如对于复杂的业务逻辑和屏幕操作,BDC可能无法完全满足需求,需要通过其他方式进行处理。
5. BDC的进一步发展随着技术的不断进步,BDC也在不断发展和完善。
例如,通过与Web 服务、RFC等技术的结合,可以实现更加灵活和高效的数据处理方式。
此外,BDC还可以与其他编程语言进行集成,实现更加复杂和强大的功能。
ABAP笔记:BDC完整版例子
![ABAP笔记:BDC完整版例子](https://img.taocdn.com/s3/m/1123b813a66e58fafab069dc5022aaea998f41b9.png)
ABAP笔记:BDC完整版例⼦BDC(batch data communication)是SAP常⽤的⼀种数据传输⽅法。
⽤于⼀些数据量⼤,但是对速度⼜要求不⾼的数据传输。
在实施中,很多开发顾问都忽略了BDC的⽇志和出错管理。
这给⽤户在使⽤中带来了很⼤的不便。
⽐如:哪些数据是成功⽣成的,哪些是失败的?那些失败的,原因的是什么?程序问题还是数据问题?我觉得,既然是要做⼀套程序,那就应该尽可能地为客户考虑,减少⽇后的维护量。
对于BDC程序来讲,⽇志和出错管理应该是必备的。
下⾯讲⼀下,BDC的两种通⽤写法。
1. Call Transaction: 顾名思义,就是直接调⽤BDC进⾏数据批量导⼊。
优点:⽅便快捷,程序处理⽅便。
缺点:⽇志管理能⼒差,需⾃⼰建透明表来维护数据。
我只是把它⽤作测试⽤途,不做正式使⽤。
2. BDC Insert:这是⼀种不直接运⾏,⽽是将BDC程序⽣成session,间接运⾏的⼀种⽅法。
优点:通过T-code SM35可以进⾏运⾏管理及⽇志管理,⽅便查错。
缺点:相对⽅法1来说实现起来⽐较繁琐。
我主要是⽤这种⽅法来实现BDC功能。
下⾯主要来谈⼀下BDC Insert这种⽅法。
1. 需要在程序中调⽤ function 'BDC_INSERT'来把BDCDATA⽣成SESSION.2. 程序RSBDCSUB是执⾏SESSION的专⽤程序,要建⽴相应的VARIANT,后续建⽴JOB中使⽤3. 建⽴BATCH JOB来定期执⾏RSBDCSUB,从⽽实现,SESSION⾃动执⾏的⽬的4. 当然,不使⽤程序RSBDCSUB和JOB,每次⼿⼯在SM35中执⾏SESSION也是可以的下⾯是我写的⼀个实例:*----------------------------------------------------------------------** Program Name: Z_KEVIN_ADV_BDC* Project : N/A* Author : Kevin.Zhang* Date : 2007.1.1* Module : N/A* Description : Advanced BDC**** Special features: N/A***----------------------------------------------------------------------** Modifications:* Author Date Commented as Description*----------- -------- ----------- ----------------------------------***----------------------------------------------------------------------*REPORT Z_KEVIN_ADV_BDC.*$*$----------------------------------------------------------------$*$**$*$ Global Types, Data Statements, Ranges, Constants $*$**$*$----------------------------------------------------------------$*$**-----------------------------------------------------------------------* Tables*-----------------------------------------------------------------------TABLES: COAS, CEPC.*-----------------------------------------------------------------------* Internal Tables and Work Areas*-----------------------------------------------------------------------DATA: BEGIN OF GT_TABLE OCCURS 0, "internal order tableAUART LIKE AUFK-AUART, "order typeAUFNR LIKE AUFK-AUFNR, "order numberKTEXT LIKE AUFK-KTEXT, "descriptionBUKRS LIKE AUFK-BUKRS, "company codeGSBER LIKE AUFK-GSBER, "business areaPRCTR LIKE AUFK-PRCTR, "profit centerFUNCA LIKE AUFK-FUNC_AREA, "function areaEND OF GT_TABLE.DATA: BEGIN OF GT_EXISTS OCCURS 0. "existed IOINCLUDE STRUCTURE GT_TABLE.DATA: END OF GT_EXISTS.DATA: BEGIN OF GT_PRFT_CNTR OCCURS 0."the profit center not existing IOINCLUDE STRUCTURE GT_TABLE.DATA: END OF GT_PRFT_CNTR.DATA: BEGIN OF GT_SUBMIT OCCURS 0. "the submitted IOINCLUDE STRUCTURE GT_TABLE.DATA: END OF GT_SUBMIT.DATA: BEGIN OF GT_BDCDATA OCCURS 0. "BDC DATAINCLUDE STRUCTURE BDCDATA.DATA: END OF GT_BDCDATA.DATA: BEGIN OF GT_MESSTAB OCCURS 10. "message tableINCLUDE STRUCTURE BDCMSGCOLL.DATA: END OF GT_MESSTAB.DATA: GT_IMESG LIKE MESG OCCURS 0 WITH HEADER LINE.*-----------------------------------------------------------------------* Variables*-----------------------------------------------------------------------DATA: GV_GROUP(12) TYPE C VALUE 'INTERNAL_ORD', "BDC NameGV_USER(12) TYPE C, "BDC UserGV_KEEP(1) TYPE C VALUE 'X', " ' '=Delete,'X'=keep after processingGV_HOLDDATE LIKE SY-DATUM. "DateDATA: GV_FLAG(1) TYPE C,GV_LIN TYPE I. "number of ordersDATA: GV_C170(170),GV_C_ULINE(50) VALUE '__________________________________________________'. *$*$----------------------------------------------------------------$*$**$*$ Selection Screen $*$**$*$----------------------------------------------------------------$*$**-----------------------------------------------------------------------* Selection Screen*-----------------------------------------------------------------------PARAMETERS: BDCTYPE(1) TYPE C DEFAULT 'B' NO-DISPLAY,BDCMODE LIKE BDCRUN-BDC_AMODUS DEFAULT 'A' NO-DISPLAY. SELECTION-SCREEN COMMENT 10(70) TEXT-001.PARAMETERS: IN_FILE(128) DEFAULT 'C:/TEMP/*.txt'.SELECTION-SCREEN SKIP 1.*-----------------------------------------------------------------------* At Selection Screen*-----------------------------------------------------------------------*--------- AT SELECTION-SCREEN ON VALUE-REQUEST ----------AT SELECTION-SCREEN ON VALUE-REQUEST FOR IN_FILE.CALL FUNCTION 'WS_FILENAME_GET'EXPORTINGDEF_FILENAME = '*.txt'DEF_PATH = 'C:/DATA'MASK = ',All Files,*.*,Text Files,*.txt;*.doc.'MODE = 'O'TITLE = 'Please choose file to use 'IMPORTINGFILENAME = IN_FILEEXCEPTIONSINV_WINSYS = 1NO_BATCH = 2SELECTION_CANCEL = 3SELECTION_ERROR = 4OTHERS = 5.*$*$----------------------------------------------------------------$*$**$*$ Main Program $*$**$*$----------------------------------------------------------------$*$**--------- START-OF-SELECTION ----------START-OF-SELECTION.REFRESH GT_TABLE.* Uploading the data which will be inserted into the internal tableCALL FUNCTION 'WS_UPLOAD'EXPORTINGFILENAME = IN_FILEFILETYPE = 'DAT'TABLESDATA_TAB = GT_TABLEEXCEPTIONSCONVERSION_ERROR = 1FILE_OPEN_ERROR = 2FILE_READ_ERROR = 3INVALID_TABLE_WIDTH = 4INVALID_TYPE = 5NO_BATCH = 6UNKNOWN_ERROR = 7OTHERS = 8.IF SY-SUBRC <> 0.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000''Unable to upload input file 'IN_FILE '' ''.ENDIF.SORT GT_TABLE BY AUFNR GSBER DESCENDING.DELETE ADJACENT DUPLICATES FROM GT_TABLE COMPARING AUFNR. PERFORM OPEN_GROUP.PERFORM FILL_BDC_DATA.PERFORM BDC_CLOSE_GROUP.PERFORM WRITE_REPORT.*--------- END-OF-SELECTION ----------*$*$----------------------------------------------------------------$*$**$*$ Subroutines $*$**$*$----------------------------------------------------------------$*$**&---------------------------------------------------------------------**& Form OPEN_GROUP*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM OPEN_GROUP.GV_USER = SY-UNAME.CALL FUNCTION 'BDC_OPEN_GROUP'EXPORTINGCLIENT = SY-MANDTGROUP = GV_GROUPHOLDDATE = GV_HOLDDATEKEEP = GV_KEEPUSER = GV_USER.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDFORM. " OPEN_GROUP*&---------------------------------------------------------------------**& Form FILL_BDC_DATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM FILL_BDC_DATA.CLEAR GT_TABLE.LOOP AT GT_TABLE.CLEAR GT_MESSTAB.CLEAR GT_BDCDATA.REFRESH GT_BDCDATA.REFRESH GT_MESSTAB.CLEAR GV_FLAG.* Check if Profit Center exists.SELECT SINGLE * FROM CEPCWHERE PRCTR = GT_TABLE-PRCTR.IF SY-SUBRC <> 0.CLEAR GT_PRFT_CNTR.MOVE-CORRESPONDING GT_TABLE TO GT_PRFT_CNTR.APPEND GT_PRFT_CNTR.GV_FLAG = 'X'.ENDIF.* check if Internal Order has already been created.SELECT SINGLE * FROM COASWHERE AUFNR = GT_TABLE-AUFNR.IF SY-SUBRC = 0.CLEAR GT_EXISTS.MOVE-CORRESPONDING GT_TABLE TO GT_EXISTS.APPEND GT_EXISTS.GV_FLAG = 'X'.ENDIF.IF GV_FLAG <> 'X'.PERFORM BDCDATA USING: 'X' 'SAPMKAUF' '0100', "order type' ' 'COAS-AUART' GT_TABLE-AUART,' ' 'BDC_OKCODE' '=KOKR'.PERFORM BDCDATA USING: 'X' 'SAPLSPO4' '0300', "control area' ' 'SVALD-VALUE(01)' '1000',' ' 'BDC_OKCODE' '=FURT'.PERFORM BDCDATA USING: 'X' 'SAPMKAUF' '0100', "ok code' ' 'BDC_OKCODE' '/00'.PERFORM BDCDATA USING: 'X' 'SAPMKAUF' '0600', "order master data ' ' 'COAS-AUFNR' GT_TABLE-AUFNR,' ' 'COAS-KTEXT' GT_TABLE-KTEXT,' ' 'COAS-BUKRS' GT_TABLE-BUKRS,' ' 'COAS-GSBER' GT_TABLE-GSBER,' ' 'COAS-PRCTR' GT_TABLE-PRCTR,' ' 'COAS-FUNC_AREA' GT_TABLE-FUNCA,' ' 'BDC_OKCODE' '=SICH'.* PERFORM CALL_TRANSACTION. "for test purposePERFORM BDC_INSERT.MOVE-CORRESPONDING GT_TABLE TO GT_SUBMIT.APPEND GT_SUBMIT.ENDIF.ENDLOOP.ENDFORM. " FILL_BDC_DATA*&---------------------------------------------------------------------**& Form BDC_INSERT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM BDC_INSERT.CALL FUNCTION 'BDC_INSERT'EXPORTINGTCODE = 'KO01'TABLESDYNPROTAB = GT_BDCDATA.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.ENDIF.ENDFORM. " BDC_INSERT*&---------------------------------------------------------------------**& Form BDC_CLOSE_GROUP*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM BDC_CLOSE_GROUP.CALL FUNCTION 'BDC_CLOSE_GROUP'.IF SY-SUBRC <> 0.* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. ENDIF.ENDFORM. " BDC_CLOSE_GROUP*&---------------------------------------------------------------------**& Form CALL_TRANSACTION*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM CALL_TRANSACTION.CALL TRANSACTION 'KO01' USING GT_BDCDATA MODE BDCMODEMESSAGES INTO GT_MESSTAB.* IF SYST-SUBRC <> 0.* CALL FUNCTION 'WRITE_MESSAGE'* EXPORTING* MSGID = SY-MSGID* MSGNO = SY-MSGNO* MSGTY = SY-MSGTY* MSGV1 = SY-MSGV1* MSGV2 = SY-MSGV2* MSGV3 = SY-MSGV3* MSGV4 = SY-MSGV4* MSGV5 = ' '* IMPORTING* ERROR = ERROR* MESSG = MESSG* MSGLN = MSGLN.ENDFORM. " CALL_TRANSACTION*&---------------------------------------------------------------------**& Form BDCDATA*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** -->P_0310 text* -->P_0311 text*----------------------------------------------------------------------*FORM BDCDATA USING P_BEGIN P_FIELD1 P_FIELD2. CLEAR GT_BDCDATA.CASE P_BEGIN.WHEN 'X'.GT_BDCDATA-PROGRAM = P_FIELD1.GT_BDCDATA-DYNPRO = P_FIELD2.GT_BDCDATA-DYNBEGIN = 'X'.WHEN SPACE.GT_BDCDATA-FNAM = P_FIELD1.GT_BDCDATA-FVAL = P_FIELD2.ENDCASE.APPEND GT_BDCDATA.ENDFORM. " BDCDATA*&---------------------------------------------------------------------**& Form WRITE_REPORT*&---------------------------------------------------------------------** text*----------------------------------------------------------------------** --> p1 text* <-- p2 text*----------------------------------------------------------------------*FORM WRITE_REPORT.DESCRIBE TABLE GT_EXISTS LINES GV_LIN.IF GV_LIN >= 1.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000''The following Internal Orders already exist.' '' '' ''. PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GV_C_ULINE '' '' ''.LOOP AT GT_EXISTS.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GT_EXISTS-AUFNR '' '' ''. ENDLOOP.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GV_C_ULINE '' '' ''.ENDIF.DESCRIBE TABLE GT_PRFT_CNTR LINES GV_LIN.IF GV_LIN >= 1.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000''The following Profit centers do not exist.' '' '' ''. PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GV_C_ULINE '' '' ''.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000''Internal Order Profit Center.' '' '' ''.LOOP AT GT_PRFT_CNTR.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GT_PRFT_CNTR-AUFNRGT_PRFT_CNTR-PRCTR '' ''. ENDLOOP.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GV_C_ULINE '' '' ''.ENDIF.DESCRIBE TABLE GT_SUBMIT LINES GV_LIN.IF GV_LIN >= 1.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000''BDC was created for the following Internal Orders.''' '' ''.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GV_C_ULINE '' '' ''.LOOP AT GT_SUBMIT.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GT_SUBMIT-AUFNR '' '' ''. ENDLOOP.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GV_C_ULINE '' '' ''.ENDIF.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000''The following Internal Orders have no Business Area.''' '' ''.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GV_C_ULINE '' '' ''.DELETE GT_TABLE WHERE NOT GSBER = ' '.LOOP AT GT_TABLE.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GT_TABLE-AUFNR '' '' ''. ENDLOOP.PERFORM COLLECT_MESSAGES USING 'Z3' 'I' '000'GV_C_ULINE '' '' ''.ENDFORM. " WRITE_REPORT*&---------------------------------------------------------------------**& Form COLLECT_MESSAGES*&---------------------------------------------------------------------** Collects messgaes into rep tree table and writes them to * screen for regular reporting*----------------------------------------------------------------------** -->P_MSGID message id* -->P_MSGTY messgae type* -->P_MSGNR msg number* -->P_MSG1 text 1* -->P_MSG2 text 2* -->P_MSG3 text 3* -->P_MSG4 text 4*----------------------------------------------------------------------*FORM COLLECT_MESSAGES USING P_MSGIDP_MSGTYP_MSGNRP_MSGV1P_MSGV2P_MSGV3P_MSGV4.CLEAR GT_IMESG.GT_IMESG-ARBGB = P_MSGID.GT_IMESG-MSGTY = P_MSGTY.GT_IMESG-TXTNR = P_MSGNR.GT_IMESG-MSGV1+0(2) = '@ '.GT_IMESG-MSGV1+2(48) = P_MSGV1.GT_IMESG-MSGV2 = P_MSGV2.GT_IMESG-MSGV3 = P_MSGV3.GT_IMESG-MSGV4 = P_MSGV4.APPEND GT_IMESG.CONCATENATE P_MSGV1 P_MSGV2 P_MSGV3 P_MSGV4 INTO GV_C170 SEPARATED BY SPACE.WRITE:/ GV_C170.ENDFORM. " collect_messages。
SAP-ABAP-BDC详细使用
![SAP-ABAP-BDC详细使用](https://img.taocdn.com/s3/m/71c5ab345b8102d276a20029bd64783e09127dfb.png)
SAP-ABAP-BDC详细使用传输数据的过程1.2.3.4.获取要传输的数据(路径+文件名+格式)转换数据格式,使其成为系统可接受的格式(SenderStructure→ReceiverSructure)传输反馈BDC批导入是传递大批量数据到R/3的一项标准技术。
其模拟事务流程传递数据,数据就像在线输入一样进行传递。
该技术的优点是会执行事务的相关检查,因此可以保证数据的一致性。
批导入过程分为两步:1.创建一个批导入eion,其中包括所有相关的数据。
2.处理批导入eion,将其中包含的数据传入R/3系统。
数据传输工作台只执行第一步。
大多数SAP标准数据传输程序都使用的是批导入技术。
数据传输程序创建一个批导入eion,其在迟后一个时间处理。
批导入可以以多种方式执行:前台后台在处理过程中显示错误信息如果想对数据传输进行检查,可以在前台处理批导入或以显示错误信息的方式执行。
如果想传递数据或测试其性能,应该在后台处理。
特点分析简单地讲BDC就是先把相应事务的处理过程录制下来,然后让系统自动执行特定的事务过程,在执行的过程中把需要传输的数据输入进去。
所以可以看出BDC的优点是并不要求使用者对业务知识有多了解,只要相应的过程可以录制下来,就可以反复执行录制的过程,把数据输入系统。
但BDC有一个缺点,就是输入数据时,如果项目栏的记录很多而需要换页时,不同的程序可能换页方式不同,并且不同的显示器所显示的行项目数量也不一样多,会出现执行不下去或者遗漏数据的情况,这个问题比较棘手。
获取源数据一般情况下,在进行传输之前要把数据放入内表从系统内部获取例如,以ALV形式输出数据后此时,数据存放在与ALV控件相对应的内表中从系统外部获取CALLFUNCTION’DATA_UPLOAD’把数据由系统外部上传到ABP的内表中,这里的外部数据有严格的格式要求。
如果源数据是存放在E某CEL中,需要将其另存为以Tab键格开的文本文件。
SAP BDC批量导入数据
![SAP BDC批量导入数据](https://img.taocdn.com/s3/m/607f9e4ccf84b9d528ea7a6b.png)
SAP BDC批量導入數據EvansBatch Input(批導入)Batch Input是一種資料批量輸入SAP系統的輔助程式,SAP系統的資料、格式可以通過Batch Input錄入SAP系統Batch Input的機制是類比事務處理將資料錄入R/3系統Batch Input類似SAP的CATT,控制性更好,處理能力更強1、首先我們需要把需要批導入事務的操作步驟記錄下來,可以用T-CODE‚SHDB‛來記錄。
在COMMAND LINE中輸入‚SHDB‛。
2、進入TRANSACTION RECORDER介面3、點‚NEW RECORDER‛創建一個記錄,現在以修改訂單為例,鍵入記錄名‚ZAMAO‛,輸入事務代碼‚VA02‛,然後‚START RECORDING‛。
4、下面的任務就是記錄下修改訂單的操作步驟。
5、填入訂單號碼,按確定6、現在來增加一下訂單的PO DATE。
7、填入‚2006.10.01‛,點‚保存‛。
8、這樣就完成了一個最最簡單的BDC錄取工作,錄完之後會出現系統運行的操作的跟蹤,包括程式號,螢幕號,欄位名,值等等,下面的任務是根據這些寫到程式裏面以完成SAP自動跑訂單修改的這一動作。
9、首先必須定義BDC變數:* BDC tableDATA: t_bdc LIKE bdcdata OCCURS 0 WITH HEADER LINE,t_bdcmsg LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.DATA: BEGIN OF t_log OCCURS 0,information(289) TYPE c, “返回信息END OF t_log.DATA: v_mode TYPE c VALUE …N‟.其中TABLE t_bdc中記錄的具體的操作步驟,而TABLE t_bdcmsg是記錄系統返回的資訊,成功與否都記錄到自定義的資訊表t_log中。
如何使用MySQL进行数据批量导入和导出
![如何使用MySQL进行数据批量导入和导出](https://img.taocdn.com/s3/m/a695813ecd1755270722192e453610661ed95af4.png)
如何使用MySQL进行数据批量导入和导出数据导入和导出是每个数据库管理员都需要掌握的重要技能。
MySQL作为一种常用的关系型数据库管理系统,具有强大的数据导入和导出功能。
本文将介绍如何使用MySQL进行数据批量导入和导出,包括导入导出的准备工作、导入导出的方法以及常见问题和注意事项。
一、导入导出的准备工作在进行数据导入和导出之前,需要做一些准备工作。
首先,确保你的MySQL 服务器已经正确安装并且正在运行。
其次,需要准备好要导入或导出的数据文件。
导入数据时,可以使用常见的数据格式文件,如CSV、TXT等。
导出数据时,可以选择将数据导出为SQL文件或常见的数据格式文件。
最后,确保你具备足够的权限来执行数据导入和导出操作。
二、数据导入的方法1. 使用LOAD DATA INFILE语句LOAD DATA INFILE语句是MySQL提供的一种快速导入大量数据的方法。
以下是使用LOAD DATA INFILE语句导入数据的基本步骤:(1) 创建一个表来存储导入的数据。
```sqlCREATE TABLE table_name (column1 datatype,column2 datatype,...);```(2) 使用LOAD DATA INFILE语句导入数据。
```sqlLOAD DATA INFILE 'data_file_path'INTO TABLE table_nameFIELDS TERMINATED BY ',' -- 根据实际情况指定字段分隔符LINES TERMINATED BY '\n' -- 根据实际情况指定行分隔符(column1, column2, ...);```2. 使用mysql命令行工具除了使用LOAD DATA INFILE语句,你还可以使用mysql命令行工具来导入数据。
以下是使用mysql命令行工具导入数据的基本步骤:(1) 创建一个数据库。
SAP BDC数据导入简介
![SAP BDC数据导入简介](https://img.taocdn.com/s3/m/a0532717bb68a98271fefac8.png)
BDC数据导入简介在SAP项目实施过程中,批量导入数据主要有三种方法,包括LSMW、CATT、BDC.下面简单介绍以下BDC导入数据的操作方法。
关于BDC,我查询到两种叫法,一个是Batch input communication,另一个是Batch data conversion.但是不知道这两种叫法哪一个是正确的,或者都正确。
BDC的处理步骤分为四步,如下:1.录制BDC标准命令,即BDC模板,就是将在SAP系统中处理的步骤录制下来,然后保存为文本文件到本地。
2.制作数据收集的EXCEL文件,这个文件是数据的原文件,可以根据不同的数据转换方法来定义不同的格式。
3.数据转换,并将转换后的数据上载到SAP系统当中,数据转换的方法常用有4种,WORD邮件合并、SAP TOOL、EXCEL宏、ABAP程序,我介绍SAP TOOL的数据转换方法。
4.到批处理画面进行批处理。
注意:做好的模板,要在测试系统中反复测试后,才能到生产机进行批量导入执行,否则容易出现大量错误,如果是主数据,可以大部分删除,如果是业务数据,就只能冲销了。
举例:大港油田226系统中供水公司工作中心的导入。
操作步骤:一.录制BDC模板执行事务代码SHDB,进入如下界面。
点击new recording.1.在记录字段填写记录名,由自己指定,这里填写KING.2.在Transaction code字段输入要执行的事务代码,这个是工作中心的导入,因此填写IR01.填写完成后,点击Start recording开始录制。
录制的过程就是创建一个工作中心的过程,创建完一个工作中心后,点击保存,出现如下界面。
点击按钮,将BDC模板下载到本地,文件名为bdc_recording的文本文件。
新建一个EXCEL文件,将单元格的格式改文本格式,将bdc_recording文本文件中的内容复制到这个EXCEL当中,我们来查看bdc_recording文件的结构。
ABAP调用BDC过程详解
![ABAP调用BDC过程详解](https://img.taocdn.com/s3/m/bb049cc95fbfc77da269b1fc.png)
ABAP 调用BDC 过程详解调用BDC导入数据到系统,可以有大致三种方法:第一: 导出源程序,通过,通过word自带导入工具把导入表中数据导入源程序.特点:优缺点: 适应于数据量较少, 缺点操作复杂,不适合与基层人员和无基础人员.第二: 生产源程序,选择通过模版导入,下载系统模板填充后上传,再导入数据.优缺点: 使用与数据量较少情况,操作也不简单,但是不需要编程基础.第三: abap 编程实现.优缺点: 当然需要较强的abap编程知识,编写完成,即可实现傻瓜式导入,复用性强,操作简单.本文就详细介绍abap调用BDC导入数据的过程.abap实现BDC导入的本质是通过abap程序调用BDC的一些内置方法, 通过循环内表,abap 把数据和操作写入BDCDATA表,然后执行这张表.1.调用F4_FILENAME 之类方法打开文件选择框(略).2.调用TEXT_CONVERT_XLS_TO_SAP之类方法导入数据到内表,保证内表.(略)3.调用BDC导入数据.3.1.数据声明:DATA:BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. "执行的参数传递表. DATA:MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE."返回执行结果.3.2.常用方法.*form: bdc_dynapro 分配屏幕参数子程序.*form: bdc_field. 分配字段参数子程序.*form: bdc_transaction 调用食物代码并传递指定的参数.当然这些方法在生产程序时都包含在include bdcrecx1文件中. 当然生成的文件可能不能满足你的需要可以自己编辑include文件,然后包含自己的文件.3.2.1 form bdc_transaction源码*-------------------------------------------------------------------FORM BDC_TRANSACTION USING TCODE CTUMODE.DATA: L_MSTRING(480).DATA: L_SUBRC LIKE SY-SUBRC.REFRESH MESSTAB.CALL TRANSACTION TCODE USING BDCDATAMODE CTUMODEUPDATE 'A'MESSAGES INTO MESSTAB.L_SUBRC = SY-SUBRC.write: / 'CALL TRANSACTION',TCODE,'returncode:',L_SUBRC,'RECODE:', sy-index.LOOP AT MESSTAB.SELECT SINGLE * FROM T100 WHERE SPRSL = MESSTAB-MSGSPRAAND ARBGB = MESSTAB-MSGIDAND MSGNR = MESSTAB-MSGNR.IF SY-SUBRC = 0.L_MSTRING = T100-TEXT.IF L_MSTRING CS '&1'.REPLACE '&1' WITH MESSTAB-MSGV1 INTO L_MSTRING.REPLACE '&2' WITH MESSTAB-MSGV2 INTO L_MSTRING.REPLACE '&3' WITH MESSTAB-MSGV3 INTO L_MSTRING.REPLACE '&4' WITH MESSTAB-MSGV4 INTO L_MSTRING.ELSE.REPLACE '&' WITH MESSTAB-MSGV1 INTO L_MSTRING.REPLACE '&' WITH MESSTAB-MSGV2 INTO L_MSTRING.REPLACE '&' WITH MESSTAB-MSGV3 INTO L_MSTRING.REPLACE '&' WITH MESSTAB-MSGV4 INTO L_MSTRING.ENDIF.CONDENSE L_MSTRING.write: / MESSTAB-MSGTYP,L_MSTRING(250).ELSE.WRITE: / MESSTAB.ENDIF.ENDLOOP.REFRESH BDCDATA.ENDFORM.3.2.2. bdc_dynpro通用源码*作用: 指定bdc_dynpro的实参,告知系统dialog程序名称:SAPLMGMM,及screen number:0060 perform bdc_dynpro using 'SAPLMGMM' '0060'. *-------------------------------------------------------FORM BDC_DYNPRO USING PROGRAM DYNPRO.CLEAR BDCDATA.BDCDATA-PROGRAM = PROGRAM.BDCDATA-DYNPRO = DYNPRO.BDCDATA-DYNBEGIN = 'X'.APPEND BDCDATA.ENDFORM.3.2.3. bdc_field 通用源码.*作用指定bdc_field的实参,告知系统把光标放在哪个字段,这里是“RMMG1-MATNR,物料” perform bdc_field using 'BDC_CURSOR'*--------------------------------------------------------FORM BDC_FIELD USING FNAM FVAL.CLEAR BDCDATA.BDCDATA-FNAM = FNAM.BDCDATA-FVAL = FVAL.APPEND BDCDATA.ENDFORM.3.2.4. 源程序调用.先看录屏生产的记录表及生产程序.复制do……….. enddo之间数据,数据为一个完整写入数据过程.调用 loop at itab(存放导入数据表)修改其中一些字段,当然要了解字段含义比如:perform bdc_field using 'DATABROWSE-TABLENAME''zymq004'.此BDC要修改一个表一些字段,而生成程序表名为 recode-tablename_001.显然表名确定,所以只需修改为表名,而非变量即可.一些字段,如perform bdc_field using 'ZYMQ004-YJBMBM'gt_data-yjbmbm.则把字段改为导入内表的字段名,这样就可以表中读入.这样就可以了.。
ABAP_批量导入货源清单_BDC实现
![ABAP_批量导入货源清单_BDC实现](https://img.taocdn.com/s3/m/4adc6fbe65ce0508763213ab.png)
delete temp_itab index 1."删除第一行的表名
delete temp_itab where matnr = ' '."删除供应商码为空的
if sy-subrc = 0."如果的却删除到了供应商的话,告诉一下用户
message i899(MM) with '存在为空的数据行被忽略'.
*&---------------------------------------------------------------------*
*& Report Z_TZ_UPLOAD
*&
*&---------------------------------------------------------------------*
form upload_to_itab. "把文件导入内表
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = s_fname
filetype = 'DAT'
importing
filelength = size
' ' 'RMMG1-MBRSH' itab-mbrsh,
' ' 'RMMG1-MTART' itab-mtart,
'X' 'SAPLMGMM' '0070',
' ' 'BDC_OKCODE' '=ENTR',
数据导入工具-BDC使用方法
![数据导入工具-BDC使用方法](https://img.taocdn.com/s3/m/7d18c1fe3169a4517623a318.png)
目录1. BDC的基本知识 (2)1.1 BDC概述 (2)1.2 BDC的处理步骤 (2)2. 录制BDC模板 (3)2.1 录制BDC模板 (3)2.2 BDC模板的编辑 (4)2.3 制作数据收集文件(数据原文件) (7)2.4 数据转换及上载(方法一) (8)2.5 数据转换及上载(方法二) (20)2.6 数据转换及上载(方法三) (23)2.7 数据转换及上载(方法四) (27)2.8 几种方法的比较 (30)3. BDC的执行及出错处理 (31)3.1 BDC的执行 (31)3.2 BDC的日志查看 (32)3.3 BDC的出错分析 (34)3.4 BDC运行时,常用的OKCODE (35)1.BDC的基本知识1.1BDC概述BDC(Batch Input Communication)有时也称为批输入(Batch Input),是SAP系统数据传输的主要技术之一,主要用于把数据大量大批输入到SAP系统。
1.2BDC的处理步骤第一步:录制BDC标准命令(BDC模板)第二步:制作数据收集的EXCEL文件(数据原文件)第三步:数据转换,并上载到SAP系统中常用以下方法:1.WORD邮件合并2.SAP TOOL3.EXCEL宏4.ABAP程序第四步:到批处画面进行执行处理注意:做好的模板,要在测试系统反复测试后,才到生产机进行批量导入执行,否则容易出现大量错误。
主数据还好,没用使用前大部分能删除,但业务数据就不行了,只能冲销了。
2.录制BDC模板2.1录制BDC模板事务码:SHDB进入画面后,点击按钮“New recording”输入以下数据后,回车Recording(记录名):XXXXXX (由自己指定)Transaction code: PSPO (需要调用的TCODE,这里以创建科目表层科目为例)进入画面后,如同平常创建创建科目表层科目一样处理(注意:尽量不要有多余动作) 点击保存后,将自动回到以下画面。
2024版SAP数据批量导入教程与BDC实例详细讲解
![2024版SAP数据批量导入教程与BDC实例详细讲解](https://img.taocdn.com/s3/m/a6e8b4b3fbb069dc5022aaea998fcc22bcd1439e.png)
SAP数据批量导入教程与BDC实例详细讲解contents •引言•SAP数据批量导入概述•BDC实例详细讲解:准备阶段•BDC实例详细讲解:执行阶段•SAP数据批量导入实践:案例分享•总结与展望目录01引言03实现数据自动化处理通过编写脚本或使用第三方工具,可以实现数据的自动导入和处理,进一步提高工作效率。
01提高数据导入效率通过批量导入,可以快速将大量数据导入SAP 系统,提高数据处理的效率。
02减少手动输入错误手动输入数据容易出错,而批量导入可以大大减少这种错误的发生。
目的和背景教程范围SAP数据导入基本概念:介绍SAP数据导入的相关概念和术语,帮助读者更好地理解后续内容。
第三方工具介绍:介绍一些常用的第三方工具,如SAP Data Services、Winshuttle等,以及它们的特点和使用方法。
BDC(Batch Data Communication)详解:详细讲解BDC的原理、使用方法和最佳实践,包括如何创建BDC会话、编写BDC程序等。
批量导入实例演示:通过具体实例演示如何使用BDC和第三方工具进行SAP数据批量导入,包括数据准备、02SAP数据批量导入概述批量导入的定义与作用定义批量导入是指将大量数据从外部源快速、高效地导入到SAP系统中的过程。
提高数据录入效率通过自动化工具,减少手动录入,加快数据处理速度。
保证数据准确性减少人为错误,确保数据的完整性和准确性。
促进业务连续性支持定期或实时的数据更新,确保系统数据的实时性和一致性。
SAP系统中的批量导入工具BDC(Batch Data Communicati…SAP提供的标准工具,用于批量导入数据。
它允许用户创建事务脚本,模拟用户在前端执行的事务。
LSMW(Legacy System Migrati…用于从非SAP系统迁移数据到SAP系统。
它支持多种数据源格式,并提供数据转换和映射功能。
Data Services(DS)SAP的数据集成工具,提供ETL(提取、转换、加载)功能,支持复杂的数据转换和清洗需求。
SAP批量处理BDC使用实例教程
![SAP批量处理BDC使用实例教程](https://img.taocdn.com/s3/m/ce12aa19f705cc17542709ac.png)
SAP批量处理BDC使用实例教程
1〕输入TCode:SHDB进入BDC录制初始界面,该界面可以实现已创立BDC Session 信息的查看、删除及锁定等操作
2〕单击工具栏Newrecording 按钮创立一个新的BDC,系统将弹出Create Recording 对话框,要求输入记录名称(此名称可以不用Y或Z开头来定义)和录制程序的事务码,本例以创立物料主数据MM01为例。
3〕单击Startrecording 按钮,程序直接跳转到事务码mm01下,
4〕输入自定义的物料名和行业领域,物料类型后,按工具栏的继续按钮,系统将弹出Select View列表,要求选择物料主档中所维护的具体视图,我们选“根本数据1〞,单击继续。
5〕进入物料信息维护界面,维护物料主档数据,我们这里选填了4项。
物料名称,根本计量单位,物料组及普通工程类别组。
6)完成后点保存,界面自动跳转到如下列图界面,红色圈住的地方就是我们需要填值的。
7〕点保存后,点返回,如下列图:
8) 点击工具栏按钮:Program,出现下列图对话框,输入程序名称,注意这里的名称一定要按Z或Y开头命名。
9〕点继续,在下方的对话框中插入标题,然后点击源代码
10〕输入开发类,本例是以STMP开发类。
点击:本地对象
11〕界面转到abap编辑界面
12〕我们对生成的代码稍稍做下修改。
如下
13〕激活运行,单项选择:调用事务,然后执行。
14〕有10个物料成功创立
15〕用Tcode:se12到MARA表里就可以查看刚批量添加的数据了。
BDC操作手册
![BDC操作手册](https://img.taocdn.com/s3/m/cd4d97204b35eefdc8d333a4.png)
最终用户使用手册
总览
目的
STEP 1: BDC的使用 (1)
STEP 1: BDC的使用
技巧与提示
事务代码:SHDB
说明:通过此操作可以制作模板,导入数据. 路径:
首先准备需要导入的资料。
T- CODE :SHDB 进入初始界面
点击进入如下界面,输入自定义的记录名,T-code.
点击开始录屏
保存,显示以下界面
点击,导出文件,保存为TXT.
将导出的TXT文档用word 打开:
选择工具-》信函与邮件-》邮件合并
点击“邮件合并“,右边出现工具栏。
共有6个步骤。
进入第三步骤。
点击“浏览“,选择最开始整理的需要导入的EXCEL.
点击“打开“
由于资料存放在sheet1中,所以选择sheet1$
直接点击“确定”,
点击“视图”-》“工具”-》“邮件合并”,打开邮件合并工具,
选中需要替换的字段,譬如BDCTEST06,(要用鼠标拖拉选中),点击
对应字段选择mate-num,点击插入,发现字段已经变化了;
依次将所有导入的字段数据全部进行插入域操作。
点击可以对照检查。
确定没有问题后,点击,对文档进行合并,
生成一个WORD 文档,将该文档保存成TXT格式
点击保存,弹出如下界面。
直接点击“确定”
返回录制的屏幕
进入“EDIT”->DELETE ROW
出现以下界面
点击确定
点击,导入数据,选择刚才生成的TXT文档,
点击
点击确定
使用MM03检查,全部已经导入。
BDC
![BDC](https://img.taocdn.com/s3/m/d4c4cf6727d3240c8447efb1.png)
BDC是Batch Data Conversion的简称,即通过SHDB把用户一次性的业务操作记录全部记录下,然后供用户使用,然后执行所建立的导入程序批量处理数据。
下面以供应商主数据的批量导入作为案例来说明BDC工具的导入方法。
Step1.录屏通过Tcode:SHDB进入执行new recording,出现以下对话框在以上对话框上分别输入记录:ZXK01 ,这是建立记录的文件名;Transaction code:XK01,这是你要录屏的事务代码,Recording parameters下的选项都可以保持不变,然后鼠标单击start recording,就开始了供应商创建的录屏工作。
(此处省略,但注意录屏时,最好保持屏幕不要随意拖动)录屏结束后,系统会出现以下界面然后点击导到本地文件(*.txt文件)。
Ttep2.编辑和准备导入文件通过已准备好的Tcode:ZPPB001进入BDC导入程序,输入事务代码XK01SHDB模板上选择刚才导出的TXT文件,BDC格式文件右边的空格栏中输入C:\Users\hik\Desktop\888.txt,用于等会儿记录程序的变量和常量。
接着,点击Generate File。
此时,就在你的本地文件出现了文件888.txt,打开888.txt 如下:对于固定值或者默认值,就在其左边输入=,如要设为变量,则输入以“&0001”(0001是四位的流水号)的格式输入,对以上的文件更改如下:以上“=8100”即表示固定值(默认值),而“&0001”则表示常量,也就是我们需要批量导入的字段。
Step3.准备BDC导入文件打开EXCEL文件,(如果您原先已有供应商主数据,只需打开excel文件),将变量数据从左到右按顺序填写到excel表中。
输入完毕后,将文件另存为.txt 文件。
Step4.执行BDC导入程序重新回到BDC导入程序的界面(TCODE:ZPPB001)在Logic level1 (tab delimited)选择原先修改过的txt文件888.txt在Data file右边选择刚才准备好的数据文件:BDC导入文件.txt在执行之前,还要选择“调用模式”,系统调用模式有三种:A 表示所有的导入过程都一步步显示出来,需要人工点击enter才能进行,在测试时建议选择此选项,若大批量导入时,莫选择A。
19BDC批处理使用方法
![19BDC批处理使用方法](https://img.taocdn.com/s3/m/f7ffd406a8114431b80dd815.png)
一.说明SAP系统有多种批处理工具,例如LSMW、SCAT、BDC等,各有侧重点,本文专门介绍BDC的应用操作。
BDC 是Batch Data Conversion的简称,对应的事物码是SHDB,是一款轻量化的批处理工具。
运用SHDB,一般通过对业务操作(指定事物码)进行录像生成脚本,如果重复次数少,可以手工修改脚本中字段的值再次执行;对于大量业务操作,则采用导出脚本模板,加工成批量执行脚本后,再导入执行,加工脚本过程一般采用Office的邮件合并方式(参见《利用Office 2007 邮件合并生成批处理脚本》)。
SHDB不能进入后台录像,将后台配置转换成事物码或SM30、SM34维护参见《后台配置转至前台操作》、《以维护视图或视图簇的方式进行配置》。
LSMW操作说明由多篇文档组成,参见《LSMW批处理使用方法(01)_总述及操作界面说明》(共13个文档)。
二.操作本文讲解SHDB操作,示例背景是对公司代码0001逐月打开物料帐期,公司代码0001是ERP系统的示例公司代码(一般不使用),初始帐期1998年3月,在此需将帐期从1998年4月逐月开帐期至1999年12月,共计21个重复操作。
操作流程是在SHDB环境中创建一个记录,用T-CODE:MMPV打开1998年4月的帐期,并进行录屏生成脚本。
导出脚本成为一个模板,结合Office的邮件并合生成20个执行脚本(1998年5月至1999年12月),再将执行脚本导入并执行。
关于MMPV更详细的说明参见《设定物料凭证结算期间(Period)》。
在前台输入事物码SHDB进入,如图1 所示,下面列表显示已有的记录(Recording)。
点击“新建记录”按钮,弹出对话框如图2 所示。
图1 SHDB初始界面图2显示创建记录(Recording)参数设置对话框,其中“记录”栏填写个新记录的名称,“事务代码”栏填写进行录像的事物码;由于T-CODE:MMPV涉及多屏操作,所以“提交后继续”选项打上选择标志。
ABAP开发整理-BDC应用
![ABAP开发整理-BDC应用](https://img.taocdn.com/s3/m/ba3af809eff9aef8941e0619.png)
BDC应用BDC 常用于批量导入,批量修改,定制触发某业务,例如符合某条件程序自动创建采购订单等.TCODE :SHDB操作流程:进入SHDB选择New recording内容填写完毕后点击Start Recording进入录制的TOCDE进行录屏,录屏期间注意不要有过多的重复操作,避免后退操作,尽可能的使用点击按钮进入,少使用回车。
业务完毕以后保存进入到Change Recording 界面点保存,然后回退到Recording Overview界面,选中刚刚创建的BDC (ZTEST01)点击Programe(根据需求可以选择Programe、Function Module等).选完以后点源代码进入代码界面.(如果退出了代码编辑界面忘记Program名字可以在SHDB 界面选择goto- > ABAP Editor进入ABAP编辑界面)关键代码如下:这段代码就是模拟操作的执行代码,BDC_DYNPRO 指系统在哪个屏幕,BDC_FIELD指系统的光标在哪个字段,OK_CODE 指系统点哪个按钮.此段代码可以摘出来单独放到其他Program中去执行,也可以在本Program中增加其他逻辑,单独摘出来的时候需要注意定义Include bdcrecx1.若不想用Include就要定义DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. 且BDC_DYNPRO 和BDC_FIELD 也要自己实现( 标准里面COPY一个).实例代码这段代码只是执行BDC部分,前期数据整理未贴上FORM process_group .DATA: lv_temp(2) TYPE c."累加变量LOOP AT itab_main1.count2 = count2 + 1.PERFORM bdc_dynpro USING 'SAPLKPP0' '1000'.PERFORM bdc_field USING 'BDC_OKCODE' '==CSPB'.PERFORM bdc_field USING 'KPP1B-ONLY' ''.PERFORM bdc_field USING 'KPP1B-FORPL' 'X'.PERFORM bdc_field USING 'KPP0B-VALUE(01)' itab_main1-versn.PERFORM bdc_field USING 'KPP0B-VALUE(02)' s_perbl-low.PERFORM bdc_field USING 'KPP0B-VALUE(03)' s_perbl-high.PERFORM bdc_field USING 'KPP0B-VALUE(04)' itab_main1-gjahr.PERFORM bdc_field USING 'KPP0B-VALUE(06)' itab_main1-kostl.PERFORM bdc_field USING 'KPP0B-VALUE(07)' space.PERFORM bdc_field USING 'KPP0B-VALUE(08)' space.PERFORM bdc_field USING 'KPP0B-VALUE(09)' itab_main1-kstar .PERFORM bdc_field USING 'KPP0B-VALUE(10)' space.PERFORM bdc_field USING 'KPP0B-VALUE(11)' space.PERFORM bdc_dynpro USING 'SAPLKPP2' '0110'.PERFORM bdc_field USING 'BDC_OKCODE' '==CBUC'.DATA : s TYPE string.DATA : n TYPE string.DATA : temp(3) TYPE n.DATA : count4(2) TYPE n.FIELD-SYMBOLS <fs>.lv_temp = s_perbl-low+1(2).DO .count4 = count4 + 1.s = 'Z-BDC03'.n = 'PERBL'.temp = lv_temp.lv_temp = temp+1(2).CONCATENATE s '('count4')' INTO s.CONCATENATE n lv_temp INTO n.ASSIGN COMPONENT n OF STRUCTURE itab_main1 to <fs>.PERFORM bdc_field USING s <FS>.CLEAR: n,s.lv_temp = lv_temp + 1.IF lv_temp > s_perbl-high.CLEAR count4.CLEAR: lv_temp, temp.EXIT.ENDIF.ENDDO.CALL TRANSACTION 'KP06' USING itab_bdcdata MODE 'E'."根据什么模式执行批量处理(A-显示所有 E-显示错误 N-后台处理 P-后台处理;调试 ) REFRESH itab_bdcdata.ENDLOOP.ENDFORM. " PROCESS_GROUP。
MySQL数据库批量数据导入与导出方法
![MySQL数据库批量数据导入与导出方法](https://img.taocdn.com/s3/m/83e0b730f68a6529647d27284b73f242336c3106.png)
MySQL数据库批量数据导入与导出方法MySQL是一种常用的关系型数据库管理系统,它提供了许多功能强大的工具和命令来管理数据库。
其中,批量数据导入与导出是开发者和管理员经常需要用到的功能。
本文将介绍MySQL数据库的批量数据导入和导出方法,帮助读者快速、高效地进行数据迁移和备份。
一、批量数据导入方法在进行大规模数据导入时,手动逐条插入数据显然是不现实的。
MySQL提供了多种批量数据导入的方法,以下是其中几种常用的方法:1. LOAD DATA INFILE语句LOAD DATA INFILE语句可以从文本文件或CSV文件直接导入数据到MySQL数据库中。
它的语法如下:```sqlLOAD DATA INFILE 'file_name'INTO TABLE table_name[FIELDS[TERMINATED BY 'field_delimiter'][ENCLOSED BY 'enclosing_character'][ESCAPED BY 'escape_character']][LINES[STARTING BY 'line_prefix'][TERMINATED BY 'line_delimiter']]...```- `file_name`指定需要导入数据的文件路径,可以是绝对路径或相对路径。
- `table_name`指定目标表的名称。
- `FIELD`和`LINES`子句用于指定字段和行的分隔符。
举个例子,假设有一个名为`students`的表,它有`id`、`name`和`age`三个字段。
现在有一个名为`data.txt`的文本文件,每行包含id、name和age以逗号分隔。
我们可以使用以下命令将数据导入到`students`表中:```sqlLOAD DATA INFILE 'data.txt'INTO TABLE studentsFIELDS TERMINATED BY ','LINES TERMINATED BY '\n';```2. 使用MySQL命令行工具导入MySQL命令行工具提供了`mysqlimport`和`mysql`命令,可以方便地导入数据。
通过反射注解批量插入数据到DB的实现方法
![通过反射注解批量插入数据到DB的实现方法](https://img.taocdn.com/s3/m/7d7765996429647d27284b73f242336c1eb930de.png)
通过反射注解批量插⼊数据到DB的实现⽅法批量导⼊思路最近遇到⼀个需要批量导⼊数据问题。
后来考虑运⽤反射做成⼀个⼯具类,思路是⾸先定义注解接⼝,在bean类上加注解,运⾏时通过反射获取传⼊Bean 的注解,⾃动⽣成需要插⼊DB的SQL,根据设置的参数值批量提交。
不需要写具体的SQL,也没有DAO的实现,这样⼀来批量导⼊的实现就和具体的数据库表彻底解耦。
实际批量执⾏的SQL如下:insert into company_candidate(company_id,user_id,card_id,facebook_id,type,create_time,weight,score) VALUES (?,?,?,?,?,?,?,?) ON DUPLICATE KEY UPDATE type=?,weight=?,score=?第⼀步,定义注解接⼝注解接⼝Table中定义了数据库名和表名。
RetentionPolicy.RUNTIME表⽰该注解保存到运⾏时,因为我们需要在运⾏时,去读取注解参数来⽣成具体的SQL。
@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)public @interface Table {/*** 表名* @return*/String tableName() default "";/*** 数据库名称* @return*/String dbName();}注解接⼝TableField中定义了数据库表名的各个具体字段名称,以及该字段是否忽略(忽略的话就会以数据库表定义默认值填充,DB⾮null字段的注解不允许出现把ignore注解设置为true)。
update注解是在主键在DB重复时,需要更新的字段。
@Documented@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.FIELD)public @interface TableField {/*** 对应数据库字段名称* @return*/String fieldName() default "";/*** 是否是主键* @return*/boolean pk() default false;/*** 是否忽略该字段* @return*/boolean ignore() default false;/*** 当数据存在时,是否更新该字段* @return*/boolean update() default false;}第⼆步,给Bean添加注解给Bean添加注解(为了简洁省略了import和set/get⽅法以及其他属性),@TableField(fieldName = "company_id")表⽰companyId字段对应DB表的字段名为"company_id",其中updateTime属性的注解含有ignore=true,表⽰该属性值会被忽略。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
(实施)数据批量导入教程、BDC实例详细讲解步骤SAP数据批量导入教程文章第59页第4部分为BDC批导入处理教程1.前言1.1.ECATT解释Extended puter Aided Test Tool(T-code:SECATT)ECATT是SAP自带的功能测试工具,主要目标用来作SAP业务流程的自动化测试,每个测试都会生成一个详细的日志来显示测试流程和测试结果。
和CATT相比,CATT操作简单,类似于BDC的录屏功能,用于常用的简单业务数据导入,基本已被ECATT完全取代。
除了CATT功能之后,ECATT主要应用于基于GUI Windows/Gui Java自动化测试,同时也为外部工具提供了第三方接口(获BC-ECATT授权)。
所有的测试脚本,无论是ECATT自已生成的还是外部工具的他们都应该具有相同的数据对象类型,与SAP结合在一起并保存在相同的位置。
在R/3的功能测试中,ECATT录屏功能简单实用,测试脚本、测试数据、系统数据分别存放,可重复使用,并附有详细测试报告以及纠错功能,作为自带工具简单实用。
对于WEB方面的测试的话就要借用第三方的测试软件,如知名的Mercury的QTP。
1.2.LSMW解释Legacy System Migration Workbench (T-code: LSMW)LSMW, 是SAP推荐用来从旧的系统或非SAP系统把大批量或周期性的数据迁移到SAP的主力工具,类似于ECATT/SCATT,其优点可以在一个Session中处理大批量数据,并灵活易学易用。
如果用BDC和ECATT只能根据定制好的画面输入参数。
一旦没有这个值系统就会报错。
比喻我们根据业务对FI Account Document或者主数据一些参数作了扩展,一旦参数缺失或者不匹配,不得不终止Session,通过SM35手动去更正或者重新录屏。
LSMW具有一般的通用性,他导入模板的设计过程包括15个步骤,每个都是独立的单元并可进行单独的更新和修改,而不影响其它的模块只需作一些调整做出相应mapping,将必要的数据指定对应的字段就可行了,无需额外的编码。
当然,LSMW局限在于只能导入固定类型的主数据,如Customer/Vendor Master,Material Master,Financial Document, G/L Account。
如果是自定义的ABAP程序来导入主数据就行不通了。
同样做了一个FI Account Document的例子,对出现重复的统计的Line Item时显得也不是特别得心应手。
1.3.BDC解释Batch Data Conversion (T-code: SHDB)BDC同样是通过SHDB把用户一次性的业务操作记录全部记录下,然后供用户使用。
开发人员可以生成程序构建数据源。
只要存在重复的业务操作,自然会想到BDC录屏。
1.4.区别LSMW: legacy system Migration workbench(遗产(旧)系统移值工作台)BDC : Batch Data munication(批处理)CATT :puter Aided Test Too (计算机辅助输入测试)数据导入速度:LSMW=BDC>CATT制作难度:BDC>LSMW>CATT跨服务器传输(复制):LSMW用导出导入,不用传输,不用建立程序最方便。
CATT都要传输,BDC传输或者生成ABAP程序。
其实LSMW最终是产生批处理,所以速度和BDC相等,CATT是模拟前端屏幕输入,速度慢,而且某些屏幕字段抓取不了。
2.ECATT批导入处理教程2.1.SECATT批导入处理教程一以创建物料主数据基本视图举例。
输入事务码:SECATT,键入回车:创建Test Scipt,选择该选项输入自定义程序名:ZSECATT01点击“新建”按钮进入下面的界面,输入文本说明及事务码所属模块:保存至《本地对象》:点击“模式”按钮,进入下面界面,填入事务代码:MM01,连续键入回车两次:开始记录创建物料的过程;物料号码要手工重新输入一次,所有有关的选项要重新选择一遍:回车进入创建物料主数据基本视图的界面,把需要输入的项目填写完整后回车进入下面界面,然后点击“YES”。
点击“YES”,进入下面界面:点击下图图标,系统显示创建的程序名称“MM01_01”:双击程序名称“MM01_01”,进入下面界面:单击DYNPRO MODE PROG DYNR字段,进入下面界面:双击FIELD MODE. NAME ,修改字段使之变成变量,该值可以自定义成任何名称(中文除外),见下面界面:把需要导入的数据修改完毕之后键入《回车》,然后单击确认;依次对变量进行修改并确认,待全部变量修改完成之后保存;然后单击键,确认修改的字段并将I/E/V 栏位的标识由V 改为I ,再次保存;单击退回到初始界面;选择第一项,开始创建Test Configuration 输入创建的程序名称(建议和Test Script 的名称一样);点击“新建”按钮,进入下面的界面,输入标题和所属模块:单击Configuration视图;输入上面创建的程序名保存:保存至本地对象;单击Variants 选择Extemal Variants/Path file 单击下拉菜单选择要输出的文件路径(注:模版导出的路径和数据导入时的路径要一致);单击图标,制作好的导入模板导出进行编辑;文件保存时可以自定义文件的名称;单击保存:至此,ECATT 批导入处理程序和导入模版制作完成。
下面介绍ECATT模版的制作和处理过程:下图是SECATT输出到本地文件中的模板(模版输出时为TXT格式,打开时需要以XLS的格式打开):对该模板进行编辑,将*和*ECATTDEFAULT两个标识放置到最后,需要在每一行的首个单元格内标明V1,如果还有第二条则标明V2回到SAP 系统SECATT界面,单击《执行》键:选择Variants视图,制定文件路径;单击Shared视图,按照下图选择控制参数:单击VI Control视图,选择要使用的导入方式,同时按照下图红框中的选项设置参数;导入成功或错误系统会报出相应消息;导入方式有以下几种:前台:表示导入时若发生问题可以在前台清晰的看到错误步骤,一步步进行干预;错误:导入时报错,干预后可以通过,导入完毕后在系统可以记录错误日志;后台:无论是否有错误发生程序照常进行工作,直至导入结束,同样也提供错误日志;设置完导入的条件后,点击“执行”按钮进行数据批导入的执行,执行成功后见下面界面:至此,ECATT的批导入处理教程一,介绍完毕。
下面介绍ECATT的批导入处理教程二。
2.2.SECATT批导入处理教程二以创建物料主数据基本视图举例:在事务代码栏输入事务代码SECATT点击新建创建Test Script点击模式,弹出下面窗口进入物料主数据维护界面根据系统配置输入物料号(如果是外部编号)、行业、物料类型等至此,ECATT 批导入处理程序和导入模版制作完成。
下面介绍ECATT模版的制作和处理过程:所有的屏幕都维护完成后,点击“是”,弹出下面窗口这样ECATT 的Test Script 就创建好了,点击保存该Test ScriptTest Configuration 成功保存至此,ECATT 的批导入处理教程介绍完毕。
3. LSMW 批导入处理教程3.1. 总述在SAP 系统中,批处理操作有多种方法。
如果是对一个事物码(T-CODE )进行批处理操作,常用的是LSMW 。
LSMW 全称是Legacy System Migration Workbench 。
它能够对静态数据(如各个主数据)、动态数据(如初始化库存)、业务数据(如销售订单)等进行成批操作,是上线数据准备的主力武器。
LSMW 的原理是对需要批处理操作的流程进行录像,然后设定模板,再将准备好的数据传入到SAP 系统进行预转换,如果合适就进行实际的转换。
LSMW 导入数据操作分为以下几大步骤: 1. 准备需要导入的数据 2. 转换模板定义 3. 读取数据并预转换 4. 实际转换在操作界面有20个步骤。
而在ECC 6.0中,标准步骤只有14个,我们按14个步骤进行讲解。
3.2. 操作界面说明 1. 管理界面批导入的事物码(TCODE)就是LSMW ,在主窗口界面输入就可以进入输入事物码后,如果是第一次运行,则出现如下界面点击VI Control ,在这里设置数据导入过程中的一些参数,例如是前台运行,还是后台运行,设置好后点击执行批导入这是一个欢迎界面,将选择框打上对勾则下次进入不再显示,按确认键进入到LSMW的管理界面(我们暂且以“管理界面”来命名):这个界面主要解决以下几方面问题:(1)批导入对象的管理,包括新增、修改、删除、查找、导出、导入等操作。
(2)进入到其它工作界面,主要有录像操作界面、分步操作界面。
我们如果要进行一个批处理操作,则需要输入或通过选择确定Project、Subproject、Object,如下图,然后再进行具体的操作:2. 分步操作界面在管理界面选择Project、Subproject、Object,如上图所示,按执行按钮运行键进入分步操作界面,如下图所示:在上图中显示了分步操作的菜单,用鼠标双击各菜单行可进入不同界面。
这里共有20个步骤,在实际操作中我们不需要这么多,只需要14个就可以了。
3.3.实际操作步骤做一个完整的批处理操作,需要很多步骤。
这些步骤分为几大部分:1.数据准备(步骤1)2.创建批处理对象(步骤2)3.模板定义(步骤3至步骤9),此部份又可分为三个小部份屏幕录像(步骤3)源表定义(步骤4至步骤6)转换字段对应(步骤7至步骤9)4.预转换(步骤10至步骤15),此部份又可分为两个小部份读取源表数据(步骤10至步骤13)预转换(步骤14至步骤15)实际转换(步骤16至步骤18)在以上操作中,除前三个步骤外,步骤4至步骤18均在分步操作界面下运行。
步骤1:数据准备数据准备一般使用Excel整理数据,如下图:对于每种物料,它的物料编码、物料名称、物料组是不尽相同的,这需要设为变量;而行业领域(M)、物料类型(ROH)、计量单位全部为(PC),可以设为常量。
步骤2:创建批处理对象一个批处理对象是个树形结构,包括三层:Project、Subproject、Object,我们分称为项目、子项目、对象。
本步骤就是创建一个批处理对象(Object)。
如果此对象(Object)已存在,可以不用创建,用输入或选择的方法找到指定的对象。
在主界面输入事物码LSMW,进入系统工作界面,如下图所示:输入需要创建的项目对象名称。
批处理对象命名分为三层,分别为项目名(Project)、子项目名(Subproject)、对象名(Object)。