将成功消息捕获到BDC呼叫事务方法中的问题

2020-08-31 10:12发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) SPAN {font-fami...

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

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


SPAN {font-family:" Courier New"; 字体大小:10pt; 颜色:#000000; 背景:#FFFFFF; } .L0S31 {font-style:italic; 颜色:#808080; } .L0S32 {color:#3399FF; } .L0S33 {color:#4DA619; } .L0S52 {color:#0000FF; } .L0S55 {color:#800080; } .L0S70 {color:#808080; }


类型:LINE_TYPE的开始,
ANLN1类型ANLN1,
BLDAT(10)C类型,
BUDAT(10)C类型,
UBZDT(10)C类型,< br> ANBTR(100)TYPE C,
MENGE(100)TYPE C,
MEINS TYPE MEINS,
LINE_TYPE的结尾。

DATA IT_MAT TYPE_LINE_TYPE的表,带有标题行。 br>带标题行的ALSMEX_TABLINE的数据IT_EXCEL类型表。
带标题行的BDCDATA的数据IT_BDCDATA类型表。
数据:BDCMSGCOLL初始大小为1的IT_MESSAGE类型标准表,
WA_MESSAGE类型BDCMSG。
带有标题标题文本001的B1块的选择屏幕开始。
参数P_FILE类型IBIPPARMS-PATH的参数。
块B1的选择屏幕结束。

数据:P_MSG(1000) C类型,
V_TOTAL(1000)C类型。

在选择屏幕上按P_FILE的值请求。
执行浏览文件。

开始选择。
> PERFORM UPLOAD_EXCEL_FILE。
PERFORM CONVERT_IT_EXCEL_TO_IT_MAT。
PERFORM VALIDATE_DATA。



FORM BROWSE_FILE。
调用功能'F4_FILENAME'
EXPO RTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME =''
导入
FILE_NAME = P_FILE


ENDFORM。
< br> FORM UPLOAD_EXCEL_FILE。
呼叫功能'ALSM_EXCEL_TO_INTERNAL_TABLE'
导出
FILENAME = P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 7
I_END 表
INTERN = IT_EXCEL
例外情况
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 2
其他= 3

如果SY-SUBRC <>0。
消息ID SY -MSGID类型SY-MSGTY编号SY-MSGNO
与SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4。
ENDIF。

ENDFORM。 br>遍历IT_EXCEL。
案例IT_EXCEL-COL。
当1.
IT_MAT-ANLN1 = IT_EXCEL-VALUE。
当2.
IT_MAT-BLDAT = IT_EXCEL-VALUE。
>何时3.
IT_MAT-BUDAT = IT_EXCEL-VALUE。
何时4.
IT_MAT-UBZDT = IT_EXCEL-VALUE。
何时5.
IT_MAT-ANBTR = IT_EXCEL-VALUE。< br> 6时。
IT_MAT-MENGE = IT_EXCEL-VALUE。
7时。< br> IT_MAT-MEINS = IT_EXCEL-VALUE。
附加IT_MAT。
清除:IT_MAT,IT_EXCEL。
ENDCASE。
ENDLOOP。

ENDFORM。

FORM VALIDATE_DATA。
遍历IT_MAT。
清除:p_msg,V_TOTAL。
刷新IT_BDCDATA。
如果SY-TABIX = 1.
继续。
ENDIF。


PERFORM fill_screen使用'SAPLAMDP''0100'。
PERFORM fill_field使用'BDC_OKCODE''/00'。
PERFORM fill_field使用'RAIFP3-XBANL''X'。
PERFORM fill_field使用'RAIFP2 -ANLN1'IT_MAT-ANLN1。
*使用'RAIFP2-ANLN2'IT_MAT-ANLN2.PERFORM填充字段。使用'RAIFP1-BLDAT'IT_MAT-BLDAT.PERFORM填充字段。
使用'RAIFP1-BUDAT'IT_MAT进行PERFORM填充字段 -BUDAT。
使用'RAIFP1-UBZDT'来执行填充字段IT_MAT-UBZDT。
使用'RAIFP2-ANBTR'来进行填充字段IT_MAT-ANBTR。
使用'RAIFP2-MENGE'来进行填充字段IT_MAT-MENGE。
使用'RAIFP2-MEINS'IT_MAT-MEINS执行PERF填充字段。


使用'SAPLAMDP''0100'执行PERFORM填充屏幕。
使用'BDC_OKCODE''= S执行PERFORM填充字段 HWD'。


使用'SAPMSSY0''0120'执行PERFORM填充屏幕。
使用'BDC_OKCODE''= BUCH'执行PERF填充字段。


使用IT_BDCDATA MODE进行交易'ABNAN' 'A'更新'A'消息到it_message。
将it_message消息放入WA_MESSAGE。
通话功能'FORMAT_MESSAGE'
导出
ID = SY-MSGID
LANG ='-D'< br> NO = SY-MSGNO
V1 = SY-MSGV1
V2 = SY-MSGV2
V3 = SY-MSGV3
V4 = SY-MSGV4
导入
MSG = p_msg < br> EXCEPTIONS
NOT_FOUND = 1
其他= 2

IF sy-subrc <> 0.
*在此处实施适当的错误处理
ENDIF。
ENDLOOP。< br> CONCATENATE IT_MAT-ANLN1 IT_MAT-BLDAT IT_MAT-BUDAT将p_msg转换为V_TOTAL(按空格分隔)。
WRITE:/V_TOTAL。
ENDLOOP。
ENDFORM。



表单使用p_pgm p_screen。
清除IT_BDCDATA。
IT_BDCDATA程序= p_pgm。
IT_BDCDATA-dynpro = p_screen。
IT_BDCDATA-dynbegin ='X'。
APPEND IT_BDCDATA。
ENDFORM。
>
FORM fill_field使用p_fnam p_fval。
清除IT_BDCDATA。
如果p_fval不初始。
IT_BDCDATA-fnam = p_fnam。
IT_BDCDATA-fval = p_fval。
附加IT_BDCDATA。
ENDIF。
ENDFORM。

当我通过BDC上传记录时,没有将成功消息捕获到it_message中。

即使我上传记录时也出错,它在it_message中显示记录。

但是它的内容显示在it_message中。