BDC在AIAB中大加欢迎

2020-08-13 13:19发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)尊敬的大师, 我正在根据T.C...

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

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


尊敬的大师,

我正在根据T.CODE的资产开发一个BDC:AIAB。

我的要求是每个主要资产都不允许有多个订单项。但仅限我的BDC

仅允许一个订单项。(当我自动上传10个订单项时,自动添加了9个订单项

项目将被替换,第10个订单项仅存储在第一个订单项位置。

但是SAP手动输入允许(999个订单项)

我该如何解决此问题?

这是我的代码。

报告ZFI_AUS

没有标准的页面标题行大小为255。

*包括bdcrecx1。

包括ZFI_BDC001。

types:t_itab的开头

BUKRS(004)类型c,

anln1(012)类型c,

konty(004)类型c,

anln2(012)类型c,

prozs(005)类型c,

betrr(010)类型c,

t_itab的结尾。

数据:带有标题行的t_itab的i_itab类型标准表,

w_itab类型t_itab。

DATA:l_row TYPE i VALUE 0。

*************************************************** *************************

  • 选择屏幕*

*************************************************** *************************

带有FRAME TITLE文本002的块文件的选择屏幕开始。

选择屏幕跳过

选择屏幕开始显示行。

选择屏幕评论5(16)文字002。

选择屏幕位置25。

参数:p_file1 TYPE本地文件。

选择屏幕行尾。

SELECTION-SCREEN END OF BLOCK文件。

在p_file1的值请求选择屏幕上。

执行文件选择。

选择开始。

执行data_upload。

执行open_group。

在i_itab循环。

*使用" AIAB"执行bdc_transaction。

使用'SAPMA15B''0110'执行bdc_dynpro。

使用" BDC_CURSOR"执行bdc_field

'AICOM-ANLN1'。

使用" BDC_OKCODE"执行bdc_field

'= AUSF'。

使用" AICOM-BUKRS"执行bdc_field

'KSL'。

使用" AICOM-ANLN1"执行bdc_field

i_itab-anln1。

使用" AICOM-ANLN2"执行bdc_field

'0'。

使用" P_DISVAR"执行bdc_field

'1SAP'。

使用" ANLB-AFABE"执行bdc_field

'1'。

使用'SAPMSSY0''0120'执行bdc_dynpro。

使用" BDC_CURSOR"执行bdc_field

'07/03'。

使用" BDC_OKCODE"执行bdc_field

'=&ALL'。

使用'SAPMSSY0''0120'执行bdc_dynpro。

使用" BDC_CURSOR"执行bdc_field

'07/03'。

使用" BDC_OKCODE"执行bdc_field

'= BURG'。

使用'SAPLSPO2''0100'执行bdc_dynpro。

使用" BDC_OKCODE"执行bdc_field

'= OPT2'。

使用'SAPLKOBS''0130'执行bdc_dynpro。

使用" BDC_CURSOR"执行bdc_field

'COBRB-PROZS(01)'。

使用" BDC_OKCODE"执行bdc_field

'/00'。

使用'COBRB-KONTY(01)'执行bdc_field

'FXA'。

使用'DKOBR-EMPGE(01)'执行bdc_field

  • '160101'。

i_itab-anln2。

使用'COBRB-PROZS(01)'执行bdc_field

  • '100'。

i_itab-prozs。

使用'COBRB-BETRR(01)'执行bdc_field

  • '100'。

i_itab-betrr。

使用'SAPLKOBS''0130'执行bdc_dynpro。

使用" BDC_CURSOR"执行bdc_field

'COBRB-KONTY(01)'。

使用" BDC_OKCODE"执行bdc_field

'= BACK'。

使用'SAPMSSY0''0120'执行bdc_dynpro。

使用" BDC_CURSOR"执行bdc_field

'07/03'。

使用" BDC_OKCODE"执行bdc_field

'= BUCH'。

使用'SAPLSPO1''0200'执行bdc_dynpro。

使用" BDC_OKCODE"执行bdc_field

'=是'。

l_row = l_row + 1。

使用" AIAB"执行bdc_transaction。

  • 使用'AIAB'执行bdc_transaction。

endloop。

* enddo。

执行close_group。

*使用数据集执行close_dataset。

&----


*&表格FILE_SELECTION

&----


  • 文字

----


  • -> p1文字

  • <-p2文字

----


FORM FILE_SELECTION。

CALL FUNCTION'F4_FILENAME'

导入

文件名= p_file1。

ENDFORM。 " FILE_SELECTION

&----


*&表格DATA_UPLOAD

&----


  • 文字

----


  • -> p1文字

  • <-p2文字

----


FORM DATA_UPLOAD。

CALL FUNCTION'WS_UPLOAD'

导出

文件名= p_file1

文件类型='DAT'

表格

data_tab = i_itab

例外情况

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

其他= 11。

IF sy-subrc EQ 0。

写:/'程序:',SY-CPROG。

写:/'文件名:',p_file1。

在/1(119)syline上写。

ELSE。

  • 消息"转换错误"。

ENDIF。

ENDFORM。 " DATA_UPLOAD

3条回答
闻人可可
2020-08-13 13:41

你好王侯

似乎您没有增加行号变量(或增加但未使用它)。

就像变量l_row(我假设您使用的是行号)。 它没有在BDC部分中使用。

您可以尝试使用类似的东西:

将'COBRB-KONTY('+ lv_row +')'连接为lv_string

(lv_string是本地声明的字符串变量)

,然后将BDC称为:

使用" BDC_CURSOR"执行bdc_field

lv_string。

使用lv_string执行bdc_field

'FXA'。

我基本上建议的是,对于行号动态变化的每个字段,请使用lv_row变量。 同样,遍历每个主要资产编号的所有行项目,然后调用bdc_transaction子例程。 意思是,如果您有10个订单项,请将它们全部集中到一个交易调用中。

谢谢

Aritra

一周热门 更多>