无法通过BDC从Excel导入数据

2020-09-04 14:22发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


内部表: IT_FINAL

工作区: WA_FINAL

下面的Excel文件

下面的自定义表格

BDC录制过程:SE11--显示表---创建条目---保存。

报告YBDC_PROJECT。
 *包含Z声明。
 *包括YBDC。
 *包括YBUILD_ALV。
 类型:Itab的Begin,
  EMP_CODE类型PERSNO,
  EMP_NAME键入PAD_CNAME,
  EMP_JOIN_DATE类型BEGDA,
  EMP_DEPT类型Y_DEPT,
  EMP_DESIGNATION类型Y_DESIG,
  SAL_HRA Type P长度10,
  SAL_BASIC Type P长度10,
  SAL_CNV Type P长度10,
  总计P型长度15
 Itab的结尾。
 数据:itab的IT_FINAL类型标准表,
  WA_FINAL就像IT_FINAL行一样,
  RAWSTRUCT类型TRUXS_T_TEXT_DATA,
  IT_FCAT类型SLIS_T_FIELDCAT_ALV,
  WA_FCAT类似于IT_FCAT行。
 SELECTION屏幕-带帧的B1块的开始。
  参数:Loc_file类型rlgrap文件名。
 选择-屏幕结束B1。
 在SELECTION屏幕上loc_file的Value-REQUEST上。
 执行上载。
 执行转换。
 执行创建。
 执行ALV。
 *&------------------------------------------------  --------------------- *
 *&表格上传
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *
 表格UPLOAD。
  调用函数" F4_FILENAME"
  出口
  PROGRAM_NAME = SYST-CPROG
  DYNPRO_NUMBER = SYST-DYNNR
  FIELD_NAME =''
  输入
  FILE_NAME = loc_file
  。
 最终形式。 上载
 *&------------------------------------------------  --------------------- *
 *&表格创建
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *
 表单创建。
 断点。
  在IT_FINAL处循环进入WA_FINAL。
  调用函数'YBDC_PROJECT2'
  出口
  CTU ='X'
  模式='N'
  更新='L'
 *组=
 *用户=
 *保持=
 * HOLDDATE =
  NODATA ='/'
  TBMA_001 ='X'
  TBMA_VAL_002 ='YIT_EMP_MASTER'
  VIMA_VAL_003 ='YIT_EMP_MASTER'
  EMP_CODE_004 = WA_FINAL-EMP_CODE" 9"
  EMP_NAME_005 = WA_FINAL-EMP_NAME"'USER TEST 9'
  EMP_JOIN_DATE_006 = WA_FINAL-EMP_JOIN_DATE" '03 .08.2010'
  EMP_DEPT_007 = WA_FINAL-EMP_DEPT"'IT DEPARTMENT'
  EMP_DESIGNATION_008 = WA_FINAL-EMP_DESIGNATION"'TRAINEE'
 *重要
 * SUBRC =
 *桌子
 * MESSTAB =
  。
  结局。
 ENDFORM。  " 创造
 *&------------------------------------------------  --------------------- *
 *&表格转换
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *
 表单转换。
  调用函数" TEXT_CONVERT_XLS_TO_SAP"
  出口
 * I_FIELD_SEPERATOR =
 * I_LINE_HEADER =
  I_TAB_RAW_DATA = RAWSTRUCT
  I_FILENAME = LOC_FILE
  桌子
  I_TAB_CONVERTED_DATA = IT_FINAL
  例外情况
  CONVERSION_FAILED = 1
  其他= 2
  。
  删除IT_FINAL索引1。
 最终形式。  " 兑换
 表格ALV。
 使用'X''EMP_CODE''雇员代码''1''IT_FINAL''20'''执行BUILD_FCAT。
 使用'X''EMP_NAME''雇员名称''2''IT_FINAL''20'''执行BUILD_FCAT。
 使用'X''EMP_JOIN_DATE''加入日期''3''IT_FINAL''15'''执行BUILD_FCAT。
 使用'X''EMP_DEPT''部门''4''IT_FINAL''15'''执行BUILD_FCAT。
 使用'X''EMP_DESIGNATION''名称''5''IT_FINAL''15'''执行BUILD_FCAT。
 使用'X''SAL_HRA''房屋租金津贴''6''IT_FINAL''25''X'执行BUILD_FCAT。
 使用'X''SAL_BASIC''Basic Salary''7''IT_FINAL''10''X'执行BUILD_FCAT。
 使用" X"," SAL_CNV","运输津贴"," 8"," IT_FINAL"," 25"," X"执行BUILD_FCAT。
 使用'''TOTAL''Total''9''IT_FINAL''15'''执行BUILD_FCAT。
  调用函数" REUSE_ALV_GRID_DISPLAY"
  出口
  IT_FIELDCAT = IT_FCAT
  桌子
  T_OUTTAB = IT_FINAL
  。
 ENDFORM。
 使用CHECKBOX的BUILD_FCAT表格
  FIELDNAME
  SELTEXT_M
  COL_POS
  标签名称
  输出镜头
  编辑。
  WA_FCAT-CHECKBOX =复选框。
  WA_FCAT-FIELDNAME = FIELDNAME。
  WA_FCAT-SELTEXT_M = SELTEXT_M。
  WA_FCAT-COL_POS = COL_POS。
  WA_FCAT-TABNAME = TABNAME。
  WA_FCAT-outputlen = outputlen。
  WA_FCAT-edit =编辑。
  将WA_FCAT追加到IT_FCAT。
  清除WA_FCAT。
 最终形式。  " BUILD_FCAT 

(6.0 kB)

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


内部表: IT_FINAL

工作区: WA_FINAL

下面的Excel文件

下面的自定义表格

BDC录制过程:SE11--显示表---创建条目---保存。

报告YBDC_PROJECT。
 *包含Z声明。
 *包括YBDC。
 *包括YBUILD_ALV。
 类型:Itab的Begin,
  EMP_CODE类型PERSNO,
  EMP_NAME键入PAD_CNAME,
  EMP_JOIN_DATE类型BEGDA,
  EMP_DEPT类型Y_DEPT,
  EMP_DESIGNATION类型Y_DESIG,
  SAL_HRA Type P长度10,
  SAL_BASIC Type P长度10,
  SAL_CNV Type P长度10,
  总计P型长度15
 Itab的结尾。
 数据:itab的IT_FINAL类型标准表,
  WA_FINAL就像IT_FINAL行一样,
  RAWSTRUCT类型TRUXS_T_TEXT_DATA,
  IT_FCAT类型SLIS_T_FIELDCAT_ALV,
  WA_FCAT类似于IT_FCAT行。
 SELECTION屏幕-带帧的B1块的开始。
  参数:Loc_file类型rlgrap文件名。
 选择-屏幕结束B1。
 在SELECTION屏幕上loc_file的Value-REQUEST上。
 执行上载。
 执行转换。
 执行创建。
 执行ALV。
 *&------------------------------------------------  --------------------- *
 *&表格上传
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *
 表格UPLOAD。
  调用函数" F4_FILENAME"
  出口
  PROGRAM_NAME = SYST-CPROG
  DYNPRO_NUMBER = SYST-DYNNR
  FIELD_NAME =''
  输入
  FILE_NAME = loc_file
  。
 最终形式。 上载
 *&------------------------------------------------  --------------------- *
 *&表格创建
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *
 表单创建。
 断点。
  在IT_FINAL处循环进入WA_FINAL。
  调用函数'YBDC_PROJECT2'
  出口
  CTU ='X'
  模式='N'
  更新='L'
 *组=
 *用户=
 *保持=
 * HOLDDATE =
  NODATA ='/'
  TBMA_001 ='X'
  TBMA_VAL_002 ='YIT_EMP_MASTER'
  VIMA_VAL_003 ='YIT_EMP_MASTER'
  EMP_CODE_004 = WA_FINAL-EMP_CODE" 9"
  EMP_NAME_005 = WA_FINAL-EMP_NAME"'USER TEST 9'
  EMP_JOIN_DATE_006 = WA_FINAL-EMP_JOIN_DATE" '03 .08.2010'
  EMP_DEPT_007 = WA_FINAL-EMP_DEPT"'IT DEPARTMENT'
  EMP_DESIGNATION_008 = WA_FINAL-EMP_DESIGNATION"'TRAINEE'
 *重要
 * SUBRC =
 *桌子
 * MESSTAB =
  。
  结局。
 ENDFORM。  " 创造
 *&------------------------------------------------  --------------------- *
 *&表格转换
 *&------------------------------------------------  --------------------- *
 *文字
 * -------------------------------------------------  --------------------- *
 *-> p1文字
 * <-p2文字
 * -------------------------------------------------  --------------------- *
 表单转换。
  调用函数" TEXT_CONVERT_XLS_TO_SAP"
  出口
 * I_FIELD_SEPERATOR =
 * I_LINE_HEADER =
  I_TAB_RAW_DATA = RAWSTRUCT
  I_FILENAME = LOC_FILE
  桌子
  I_TAB_CONVERTED_DATA = IT_FINAL
  例外情况
  CONVERSION_FAILED = 1
  其他= 2
  。
  删除IT_FINAL索引1。
 最终形式。  " 兑换
 表格ALV。
 使用'X''EMP_CODE''雇员代码''1''IT_FINAL''20'''执行BUILD_FCAT。
 使用'X''EMP_NAME''雇员名称''2''IT_FINAL''20'''执行BUILD_FCAT。
 使用'X''EMP_JOIN_DATE''加入日期''3''IT_FINAL''15'''执行BUILD_FCAT。
 使用'X''EMP_DEPT''部门''4''IT_FINAL''15'''执行BUILD_FCAT。
 使用'X''EMP_DESIGNATION''名称''5''IT_FINAL''15'''执行BUILD_FCAT。
 使用'X''SAL_HRA''房屋租金津贴''6''IT_FINAL''25''X'执行BUILD_FCAT。
 使用'X''SAL_BASIC''Basic Salary''7''IT_FINAL''10''X'执行BUILD_FCAT。
 使用" X"," SAL_CNV","运输津贴"," 8"," IT_FINAL"," 25"," X"执行BUILD_FCAT。
 使用'''TOTAL''Total''9''IT_FINAL''15'''执行BUILD_FCAT。
  调用函数" REUSE_ALV_GRID_DISPLAY"
  出口
  IT_FIELDCAT = IT_FCAT
  桌子
  T_OUTTAB = IT_FINAL
  。
 ENDFORM。
 使用CHECKBOX的BUILD_FCAT表格
  FIELDNAME
  SELTEXT_M
  COL_POS
  标签名称
  输出镜头
  编辑。
  WA_FCAT-CHECKBOX =复选框。
  WA_FCAT-FIELDNAME = FIELDNAME。
  WA_FCAT-SELTEXT_M = SELTEXT_M。
  WA_FCAT-COL_POS = COL_POS。
  WA_FCAT-TABNAME = TABNAME。
  WA_FCAT-outputlen = outputlen。
  WA_FCAT-edit =编辑。
  将WA_FCAT追加到IT_FCAT。
  清除WA_FCAT。
 最终形式。  " BUILD_FCAT 

(6.0 kB)
付费偷看设置
发送
7条回答
渐行渐远_HoldOn
1楼 · 2020-09-04 14:49.采纳回答

您好Shashank

*文件中的日期格式错误。

*如果文件有标题行,则应放置代码。

FM TEXT_CONVERT_XLS_TO_SAP的I_LINE_HEADER ='X'

*请勿对所有字段使用此代码" WA_FCAT-CHECKBOX = CHECKBOX。

如果要在ALV中使用复选框,则您的字段应为1个字符的长度。

喜欢:标记类型c

最好的问候


*包含Z声明。
*包含YBDC。
*包含YBUILD_ALV。
类型:Itab的开头,
EMP_CODE类型PERSNO,
EMP_NAME类型PAD_CNAME,
EMP_JOIN_DATE类型BEGDA,
EMP_DEPT类型char20,
EMP_DESIGNATION类型char20,
SAL_HRA类型P长度10,
SAL_BASIC类型P长度10,
SAL_CNV类型P长度10,
TOTAL类型 P长度15,
Itab的结尾。
数据:Itab的标准表,
WA_FINAL,如IT_FINAL行,
RAWSTRUCT类型,TRUXS_T_TEXT_DATA,
IT_FCAT类型,SLIS_T_FIELDCAT_ALV,
WA_FCAT 类似于IT_FCAT的行。
SELECTION-屏幕B1带有帧的开始。
参数:Loc_file类型rlgrap-文件名。
SELECTION-屏幕B1块的结尾。
在SELECTION屏幕上-值- 请求loc_file。
执行UPLOAD。
执行转换。
执行创建。
执行ALV。
*&----------------- -------------------------------------------------- -*
*&表单上传
*&----------------------------------- ------------------ ---------------- *
*文字
* ------------------------ ---------------------------------------------- *
*-> p1文本
* <-p2文本
* ------------------------------- --------------------------------------- *
上载表格。
致电 函数'F4_FILENAME'
导出
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME =''
导入
FILE_NAME = loc_file

终端格式。 "上传
*&------------------------------------------- -------------------------- *
*&表格CREATE
*&----------- -------------------------------------------------- -------- *
*文字
* -------------------------------- -------------------------------------- *
*-> p1文字
* <-p2文字
* --------------------------------------- ------------------------------- *
表单创建。
断点。
*循环 在IT_FINAL处进入WA_FINAL。
*调用函数'YBDC_PROJECT2'
*导出
* CTU ='X'
*模式='N'
*更新='L'
* *组=
**用户=
**保持=
**保留日期=
* NODATA ='/'
* TBMA_001 ='X'
* TBMA_VAL_002 ='YIT_EMP_MASTER '
* VIMA_VAL_003 ='YIT_EMP_MASTER'
* EMP_CODE_004 = WA_FINAL-EMP_CODE"'9'
* EMP_NAME_005 = WA_FINAL-EMP_NAME"'用户测试9'
* EMP_JOIN_DATE_006 = WA_FINAL-EMP_ATE '03。 .2010'
* EMP_DEPT_007 = WA_FINAL-EMP_DEPT"'IT DEPARTMENT'
* EMP_DESIGNATION_008 = WA_FINAL-EMP_DESIG 国家"'TRAINEE'
**导入
** SUBRC =
**桌子
** MESSTAB =
*。
* ENDLOOP。
ENDFORM。 "创建
*&------------------------------------------- -------------------------- *
*&表格CONVERT
*&----------- -------------------------------------------------- -------- *
*文字
* -------------------------------- -------------------------------------- *
*-> p1文字
* <-p2文字
* --------------------------------------- ------------------------------- **
表单转换。
调用函数'TEXT_CONVERT_XLS_TO_SAP'
导出
* I_FIELD_SEPERATOR =
I_LINE_HEADER ='X'
I_TAB_RAW_DATA = RAWSTRUCT
I_FILENAME = LOC_FILE

I_TAB_CONVERTED_DATA = IT_FINAL
异常
CONVERSION_FAILED = 1 = 2

最终形式。" CONVERT
形式ALV。
使用'X''EMP_CODE''Employee Code''1''IT_FINAL''20'来执行BUILD_FCAT"。
使用'X''EMP_NAME''雇员姓名''2''IT_FINAL''20'''执行BUILD_FCAT。
使用'X''EMP_JOIN_DATE''加入日期''3''IT_FINAL''15'执行BUILD_FCAT ''。
使用'执行BUILD_FCAT X''EMP_DEPT''部门''4''IT_FINAL''15'''。
使用'X''EMP_DESIGNATION''名称''5''IT_FINAL''15'''执行BUILD_FCAT。
使用'X''SAL_HRA''房屋租金津贴''6''IT_FINAL''25''X'执行BUILD_FCAT。
使用'X''SAL_BASIC''基本工资''7''IT_FINAL'' 10''X'。
使用'X''SAL_CNV''输送津贴''8''IT_FINAL''25''X'执行BUILD_FCAT。
使用''TOTAL''Total''执行BUILD_FCAT 9''IT_FINAL''15'''。
调用函数'REUSE_ALV_GRID_DISPLAY'
导出
IT_FIELDCAT = IT_FCAT

T_OUTTAB = IT_FINAL

ENDFORM。 >使用CHECKBOX FIELDNAME
SELTEXT_M
COL_POS
TABNAME
outputlen
编辑。
" WA_FCAT-CHECKBOX = CHECKBOX。
WA_FCAT-FIELDNAME = FIELDNAME。< br> WA_FCAT-SELTEXT_M = SELTEXT_M。
WA_FCAT-COL_POS = COL_POS。
WA_FCAT-TABNAME = TABNAME。
WA_FCAT-outputlen = outputlen。
WA_FCAT-edit =编辑。
将WA_FCAT附加到 IT_FCAT。
清除WA_FC AT。
最终形式。 " BUILD_FCAT

南山jay
3楼-- · 2020-09-04 14:50

所以,

首先,

在SELECTION屏幕上值请求loc_file。
 执行上载。
 执行转换。
 执行创建。
 在SELECTION屏幕上,使用

替换为

。
 执行上载。



 选择开始
 执行转换。
 执行创建。
 第二,您的函数在调试中出错:CONVERSION_FAILED 

当我读取一个外部文件时,我读取了字符串或CHAR中的内容,然后尝试转换为 数据以正确的格式。

我认为这是您的日期,格式错误

bbpeas
4楼-- · 2020-09-04 15:03

马修·比林汉姆(Matthew Billingham)我只想说我没有报告任何评论,只是想让你扩大要点,我对你的答复表示满意。

敬请帮助我。

悻福寶寶
5楼-- · 2020-09-04 14:53

如果您想学习BDC,建议您尝试使用与SE11/SE16不同的事务。

我认为到目前为止提供的信息是有帮助的,我没什么可补充的。

nice_wp
6楼-- · 2020-09-04 14:39

我认为评论您的回答以帮助OP至关重要。 我不确定OP是否仅通过阅读代码就能理解问题所在,为什么像以前那样更改代码以及为什么应该解决问题。

clever101
7楼-- · 2020-09-04 14:54
Sandra Rossi 不,它尚未解决,但我正在尝试。

一周热门 更多>