如何从报告输出中检索特定字段

时间:2017-02-03 16:22:32

标签: loops types abap

我的SAP系统中没有任何开发人员权限,但我找到了一种方法,可以在一个小小的“用户退出”框中编写一些ABAP代码(我不知道这是否就是你所说的)一份报告。

我正在尝试提交一份人力资源报告,并将其即将发布的PERNR再次插入同一份报告中。

有一个语法错误告诉我t_list没有名称为PERNR的组件。

我需要做些什么才能让它发挥作用?

DATA: t_list TYPE TABLE OF abaplist WITH HEADER LINE,
      seltab TYPE TABLE OF rsparams,
      selline LIKE LINE OF seltab.
*I found out that the name of the selection field in the Report-GUI is "PNPPERNR" and tested it
selline-selname = 'PNPPERNR'.
selline-sign    = 'I'.
selline-option  = 'EQ'.

SUBMIT Y5000112
USING SELECTION-SET 'V1_TEST'
EXPORTING LIST TO MEMORY
AND RETURN.

CALL FUNCTION 'LIST_FROM_MEMORY'
TABLES
  listobject = t_list
EXCEPTIONS
  not_found = 1
  OTHERS = 2.
IF sy-subrc <> 0.
  WRITE 'Unable to get list from memory'.
ELSE.
  LOOP AT t_list.
*The Problem is here: how do I get the pnppernr out of t_list, it's the first column of the report output
    selline-low = t_list-pernr.
    append selline to seltab.
  ENDLOOP.

  SUBMIT Y5000112
  WITH SELECTION-TABLE seltab
  USING SELECTION-SET 'V2_TEST'
  AND RETURN.
ENDIF.

2 个答案:

答案 0 :(得分:3)

使用功能模块LIST_TO_ASCI将t_list的内容解码为可读的内容。 This answer包含一些示例代码,包括所需的数据类型。此时,您要查找的数据可能会出现在输出中的相同列范围内。使用standard substring access methods - e。 G。 line+42(21)获取您需要的部分内容。

答案 1 :(得分:0)

vwegert的回答非常有用!
my previous answer我忘记提及LIST_TO_ASCI FM :) 我唯一可以添加的是解析结果行没有通用的解决方案,并且很大程度上取决于它的结构。通常它就像:

LOOP AT t_list.
 SPLIT t_list AT '|' INTO <required_structure>.
 selline-low = <required_structure>-pernr.
 APPEND selline TO seltab.
ENDLOOP.

其中&lt;`required_structure&gt;是你的Y5000112输出结构。但这可能不是那么简单,可能需要额外的操作。