ABAP---BDC批导入
1、BDC的过程
2、BDC执行方式
3、详细步骤
1)code:SHDB
2)新建记录
填写客户信息
如果在页面中没有遇到要填写的信息,就点击下一制表页
信息录完之后点击保存,没有录完就继续下一页
创建程序
到达如下界面
回到SHDB,进入创建好的BDC记录,将录入的字段整理成表格
新建程序:
创建内表、复制BDC的源代码,修改
*&---------------------------------------------------------------------*
*& Report ZSAP_BDC
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zsap_bdc.
*-----批导入-----*
"结构,从BDC中复制的结构
TYPES:BEGIN OF ty_customer,
* data element: KUN16
kunnr_001(016),"客户编号
* data element: KTOKD
ktokd_005(004),"账户组
* data element: VKORG
vkorg_002(004),"销售组织
* data element: VTWEG
vtweg_003(002),"分销渠道
* data element: SPART
spart_004(002),"产品组
* data element: ANRED
anred_006(015),"标题
* data element: NAME1_GP
name1_007(035),"姓
* data element: STRAS_GP
stras_008(035),"街道
* data element: PSTLZ
pstlz_010(010),"邮政编码
* data element: ORT01_GP
ort01_009(035),"城市
* data element: LAND1_GP
land1_012(003),"国家
* data element: ORT02_GP
ort02_011(035),"地区
* data element: BZIRK
bzirk_016(006),"销售地区
* data element: AWAHR
awahr_017(003),"销售部门
* data element: LPRIO
lprio_021(002),"交货优先权
* data element: PERFK
perfk_024(002),"出票日期
END OF ty_customer.
"从BDC复制的变量
*----------------------------------------------------------------------*
* data definition
*----------------------------------------------------------------------*
* Batchinputdata of single transaction
DATA:bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
DATA: ctumode LIKE ctu_params-dismode.
DATA: cupdate LIKE ctu_params-updmode.
"根据结构创建内表
DATA lt_customer TYPE TABLE OF ty_customer WITH HEADER LINE.
"用于接收上载的文件名称的临时变量
DATA:lv_filename TYPE string.
"上传文件的选择屏幕元素
PARAMETERS:p_file LIKE rlgrap-filename OBLIGATORY.
"文件搜索帮助
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
"执行方法
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = ' '
IMPORTING
file_name = p_file.
START-OF-SELECTION.
"文件上载,并把数据存在内表
lv_filename = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_filename
filetype = 'ASC'
has_field_separator = 'X'
* HEADER_LENGTH = 0
read_by_line = 'X'
dat_mode = ' '
codepage = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* CHECK_BOM = ' '
* VIRUS_SCAN_PROFILE =
no_auth_check = 'X'
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
data_tab = lt_customer[]
EXCEPTIONS
file_open_error = 1
file_read_error = 2
no_batch = 3
gui_refuse_filetransfer = 4
invalid_type = 5
no_authority = 6
unknown_error = 7
bad_data_format = 8
header_not_allowed = 9
separator_not_allowed = 10
header_too_long = 11
unknown_dp_error = 12
access_denied = 13
dp_out_of_memory = 14
disk_full = 15
dp_timeout = 16
OTHERS = 17
.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
CHECK lt_customer[] IS NOT INITIAL.
LOOP AT lt_customer.
"从bdc复制的子例程调用语句,更改内表对应的字段,把不需要传的字段注释掉或者设置成空值
PERFORM bdc_dynpro USING 'SAPMF02D' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RF02D-KUNNR'
lt_customer-kunnr_001."内表对应的字段
PERFORM bdc_field USING 'RF02D-VKORG'
lt_customer-vkorg_002.
PERFORM bdc_field USING 'RF02D-VTWEG'
lt_customer-vtweg_003.
PERFORM bdc_field USING 'RF02D-SPART'
lt_customer-spart_004.
PERFORM bdc_field USING 'RF02D-KTOKD'
lt_customer-ktokd_005.
PERFORM bdc_dynpro USING 'SAPMF02D' '0110'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNA1-ORT02'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_field USING 'KNA1-ANRED'
lt_customer-anred_006.
PERFORM bdc_field USING 'KNA1-NAME1'
lt_customer-name1_007.
PERFORM bdc_field USING 'KNA1-STRAS'
lt_customer-stras_008.
PERFORM bdc_field USING 'KNA1-ORT01'
lt_customer-ort01_009.
PERFORM bdc_field USING 'KNA1-PSTLZ'
lt_customer-pstlz_010.
PERFORM bdc_field USING 'KNA1-ORT02'
lt_customer-ort02_011.
PERFORM bdc_field USING 'KNA1-LAND1'
lt_customer-land1_012.
PERFORM bdc_field USING 'KNA1-SPRAS'
'ZH'."必传
PERFORM bdc_dynpro USING 'SAPMF02D' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNA1-LIFNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
*perform bdc_field using 'KNA1-STKZN'
* ''.
PERFORM bdc_dynpro USING 'SAPMF02D' '0125'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNA1-NIELS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_dynpro USING 'SAPMF02D' '0130'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNBK-BANKS(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_dynpro USING 'SAPMF02D' '0340'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_dynpro USING 'SAPMF02D' '0370'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RF02D-KUNNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
*perform bdc_field using 'KNA1-CIVVE'
* ''.
PERFORM bdc_dynpro USING 'SAPMF02D' '0310'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNVV-VKBUR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_field USING 'KNVV-BZIRK'
lt_customer-bzirk_016.
PERFORM bdc_field USING 'KNVV-AWAHR'
lt_customer-awahr_017.
*perform bdc_field using 'KNVV-VKBUR'
* ''.
*perform bdc_field using 'KNVV-WAERS'
* ''.
*perform bdc_field using 'KNVV-KALKS'
* ''.
PERFORM bdc_dynpro USING 'SAPMF02D' '0315'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNVV-LPRIO'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=VW'.
PERFORM bdc_field USING 'KNVV-LPRIO'
lt_customer-lprio_021.
*perform bdc_field using 'KNVV-KZAZU'
* ''.
*perform bdc_field using 'KNVV-ANTLF'
* ''.
PERFORM bdc_dynpro USING 'SAPMF02D' '0320'.
PERFORM bdc_field USING 'BDC_CURSOR'
'KNVV-PERFK'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=UPDA'.
PERFORM bdc_field USING 'KNVV-PERFK'
lt_customer-perfk_024.
PERFORM bdc_transaction USING 'XD01'.
ENDLOOP.
"从BDC复制的子例程
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->TCODE text
*----------------------------------------------------------------------*
FORM bdc_transaction USING tcode.
REFRESH messtab.
CALL TRANSACTION tcode USING bdcdata
MODE 'A'"显示所有屏幕
UPDATE 'S'"同步
MESSAGES INTO messtab.
ENDFORM. "BDC_TRANSACTION
执行BDC注意事项
准备数据然后删除表头另存成Unicode txt格式
文件上载方式(此方式只适合上传txt,不适合上载Excel)
或者用
;另外说一下下载
ABAP---BDC批导入相关推荐
- 快速掌握SAP BDC数据导入
对于有任何语言编程经验的人员来说,BDC 方式导入数据不失为一种不错的选择.BDC 可以将操作过程录制的记录自动生成 ABAP 代码,并且可以基于自动生成的代码进行优化,加上诸如数据校验,数据导入日志 ...
- SAP ABAP BDC(批量数据通信)-018
SAP ABAP BDC(批量数据通信)-018 批量输入简介 批处理输入通常用于将数据从非 R/3 系统传输到 R/3 系统或在 R/3 系统之间传输数据. 它是一种数据传输技术,允许您将数据集自动 ...
- SAP BDC 数据导入
BDC.CATT批量数据维护 BDC批量数据导入... 19 SM35(包含SHDB)录屏操作... 19 生成程序... 22 带服务器端测试数据文件... 22 编辑服务器端上生成的测试数据文件. ...
- abap BDC 使用方法
1.t-code: SHDB将操作录下来 2.在程序中包含下BDC子程序,只需复制粘贴即可使用,具体代码如下: * 包含BDC用子程序 INCLUDE zbdcrecx. zbdcecx内容: *-- ...
- abap bdc附加选项
语法 CALL TRANSACTION 'TCODE' USING itab_bdcdateMODE modeUPDATE upd OPTIONS FROM optMESSAGE INTO itab_ ...
- SAP ABAP BDC 的使用及代码详解
首先介绍一下BDC即Batch Data Conversion.由于某种原因,当我们需要大量并且重复的输入保存变更删除数据的操作,且没有对应的BAPI可以使用的时候,可以使用BDC的方式进行. 其原理 ...
- ABAP BDC 实例
BDC的本质就是在SAP中,一些标准程序批量处理时,无法使用SAP系统提供的BAPI进行数据处理,而使用SHDB生成一个模板,然后在程序中调用这个模板生成的代码,用于数据的批导. 1.使用Tcode ...
- ABAP BDC返回成功但是未创建单据或没有产生相应效果
最近在调两个接口,两个接口都是使用BDC取生成数据 遇见主要的问题是数据转换的问题 问题一:原接口定义的字段长度长于BDC中对应字段的长度,这种只要定义一个符合BDC中对应字段长度的字段转换赋值一下即 ...
- abap如何找屏幕增强_因增强导致BDC录屏执行异常的梗
最近呀,写一个使用BDC批量导入数据到MIRO的程序,遇到一个很有意思的问题,愣是折腾了半天才找到原因,具体是啥问题呢,且听我细细道来.Debug的时候发现,执行完CALLTRANSACTION 'M ...
最新文章
- AtCoder AGC002E Candy Piles (博弈论)
- 【Android NDK 开发】JNI 线程 ( JNI 线程创建 | 线程执行函数 | 非 JNI 方法获取 JNIEnv 与 Java 对象 | 线程获取 JNIEnv | 全局变量设置 )
- java获取content-disposition_java – Content-Disposition附件不起作用 – 将...
- 计算机文化英文15版答案,15信高《计算机文化基础》期中考试题答案
- 直播预告丨爆款独立站如何利用数据提升经营效率?
- 北斗导航 | 基于RTK的GNSS与多源融合定位技术发展与挑战
- FineReport——JDBC 连接 MySQL8.0 版本数据库
- DB2 9 底子(730 考试)认证指南,第 3 局部: 拜访 DB2 数据(3)
- 支付宝支付系统繁忙,请稍后再试(ALI64)错误解决
- Eclipse run configrations 配置
- eclipse中 将java项目转换为web项目
- 线上风控与数据埋点三部曲(一)——流量江湖不是处女地,投放渠道需谨慎
- 用LVM在VMware中的Linux硬盘扩容
- Apache与Tomcat有什么关系和区别
- 模拟学信网登录,Cookie 序列化,在反序列化之后不能用的问题
- html中空格符号以及空格字符实体的总结
- Dva 的connect使用
- Java验证辛钦大数定理
- 推荐一款开源的ICO制作神器——greenfish
- ICMP目的网络,主机,协议,端口不可达报文的Type值,Code值分别是