2017-02-03 9 views
0

У меня нет каких-либо прав разработчика в моей SAP-системе, но я нашел способ написать некоторый ABAP-код в крошечном поле «User-Exit» (я не знаете, если это то, что вы называете) внутри отчета.Как получить определенное поле из вывода отчета

Я пытаюсь представить HR-отчет и снова подключить его выходящий 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

Используйте функциональный модуль LIST_TO_ASCI для декодирования содержимого t_list в нечто читаемым. This answer содержит примерный код, включая требуемые типы данных. На этом этапе данные, которые вы ищете, вероятно, будут иметь место в том же диапазоне столбцов на выходе. Используйте standard substring access methods - e. г. line+42(21), чтобы получить нужную вам часть строки.

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. 

< где `required_structure> это ваш выходной Y5000112 структуру. Но это может быть не так просто и может потребовать дополнительных манипуляций.