如何使用ABAP中的Read_Text获取销售订单行项目文本的唯一线程号?

2020-09-13 12:39发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中) 在BW中,有一种情况需要...

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

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


在BW中,有一种情况需要从SAP VA03中的销售订单行项目的"徽标/刺绣文本"字段中获取唯一的线程号。 因此,我为此创建了DSO,并将销售订单,销售订单行项目和线程号作为键,并使用READ_TEXT功能模块获取文本信息。

由于必须获得多行文本,因此在下面的代码中使用了循环语句来获取多行订单项文本数据。 它工作正常,但实际的要求是仅从订单项文本中获取唯一的线程号。 在上面的屏幕截图中,我们仅需要获取1801和1675作为该订单项的线程号。 但是我在该线程号字段中的代码从* --BEGIN THREAD直到*-END THREAD MAP中获取数据。 我们是否应该在ABAP中使用包含字符串(CS)来仅获取线程号? 即使这样做,如何仅获得唯一的线程号?

最终,数据应如下所示:

销售订单行项目线程号

39541745 10 1801

39541745 10 1675

下面是我在DSO的字段例程中使用的代码,该代码使用READ_TEXT FM获取此文本数据。

类型:ty_ZSDO120的开始,
DOC_NUMBER类型/BI0/OIDOC_NUMBER,
S_ORD_ITEM类型/BI0/OIS_ORD_ITEM,
ty_ZSDO120的结尾。

数据:i_lines类型STANDARD TABLE OF TLINE ,
ls_lines输入tline。

数据:w_tdname TYPE stxh-tdname。

数据:v_text类型字符串。

清除w_tdname。
合并SOURCE_FIELDS-DOC_NUMBER SOURCE_FIELDS-S_ORD_ITEM
入w_tdname。

*读取订单行徽标/刺绣文字
CLEAR:i_lines。
刷新:i_lines 。


*
通话功能'READ_TEXT'
导出
语言= sy-langu
id ='ZLGO'
name = w_tdname
object = 'VBBP'
TABLES
行= i_lines
例外情况
id = 01
语言= 02
名称= 03
not_found = 04
object = 05
reference_check =06。




如果sy-tabix = 1,则在i_lines处循环进入ls_lines。



将ls_lines-tdline移至v_text。 >
else。

将v_text ls_lines-tdline连接到以空格分隔的v_text。

endif。

endloop。

RESULT = v_text。

请让我知道如何在BW DSO中实现此目标。 还附在我的DSO屏幕截图中。

(61.8 kB)
3条回答
Baoming ROSE
2020-09-13 13:21

感谢您的答复 ,但是正如我提到的,我们只是想在这里获取线程号。这就是屏幕截图中的数字,例如1801,1675。这是业务需求,他们希望看到这些数字,因此我们无法致电查询为什么 想要这种方式。

模式是查找以* ZDMS_STOP *开头的行,并在此行之后获取数字,例如:1801。在每个ZDMS_STOP之后获取所有数字,然后删除重复的数字。 我该如何实现?

一周热门 更多>

相关问答