问题描述
我找到了一种导出分层ALV的方法,如下所示:
I found a way to export a hierarchical ALV like this: ABAP: Report via GUI has 18 columns, via RFC 6 (hierarchical ALV)
不幸的是,我不知道高级
Unfortunately I don't know in advanced if the report uses hierarchical ALV or not.
如果我对报告 RFSKPL00
应用以上答案的代码,那么我在 cl_salv_bs_runtime_info => get_data()
处得到一个异常:
If I apply the code of above answer to the report RFSKPL00
, then I get an exception in cl_salv_bs_runtime_info=>get_data()
here:
if t_data_line is requested.
import t_data_line to t_data_line from memory id cl_salv_bs_runtime_info=>c_memid_data_line.
if sy-subrc ne 0.
raise exception type cx_salv_bs_sc_runtime_info <=========
exporting
textid = 'ERROR'.
endif.
endif.
如何(通过abap代码)检查报表是否使用分层ALV?
How can I check (via abap code) if a report uses hierarchical ALV or not?
推荐答案
我想要相同的信息,而Sandra的回答并没有帮助我/我没有用,因为参数根本不起作用填。但是 cl_salv_bs_runtime_info
还有另一个函数可以解决我的问题, get_metadata
。它有一个参数 is_hierseq
可以按预期填充。
I wanted the same information and the answer by Sandra didn't help me/didn't work, because the parameters just wouldn't fill. But cl_salv_bs_runtime_info
has another function that solved my problem, get_metadata
. It has a parameter is_hierseq
that gets filled as expected.
DATA: runtime_metadata TYPE cl_salv_bs_runtime_info=>s_type_metadata,
lr_data_descr TYPE REF TO cl_abap_datadescr,
lr_data_line_descr TYPE REF TO cl_abap_datadescr,
lr_data TYPE REF TO data,
lr_data_line TYPE REF TO data.
FIELD-SYMBOLS: <lt_data> TYPE ANY TABLE,
<lt_data_line> TYPE ANY TABLE.
------------------------------------------------------------------------------
" initialising runtime analysis
cl_salv_bs_runtime_info=>set( EXPORTING display = abap_false
metadata = abap_true
data = abap_true ).
***** Calling reports in different ways:
*** calling using SUBMIT:
* ALV grid output:
*SUBMIT bcalv_grid_07 AND RETURN.
* hierarchical output:
*SUBMIT SALV_DEMO_HIERSEQ_SIMPLE AND RETURN.
*** calling using CALL TRANSACTION:
* ALV grid / hierarchical output:
CALL TRANSACTION 'MB51'.
* Testing output mode using metadata
runtime_metadata = cl_salv_bs_runtime_info=>get_metadata( ).
IF runtime_metadata-is_hierseq IS INITIAL.
* ALV Grid / SALV
cl_salv_bs_runtime_info=>get_data_ref( IMPORTING
r_data_descr = lr_data_descr ).
CREATE DATA lr_data TYPE HANDLE lr_data_descr.
ASSIGN lr_data->* TO <lt_data>.
cl_salv_bs_runtime_info=>get_data( IMPORTING
t_data = <lt_data> ).
ELSE.
* hierarchical
cl_salv_bs_runtime_info=>get_data_ref(IMPORTING
r_data_descr = lr_data_descr
r_data_line_descr = lr_data_line_descr).
CREATE DATA lr_data TYPE HANDLE lr_data_descr.
CREATE DATA lr_data_line TYPE HANDLE lr_data_line_descr.
ASSIGN lr_data->* TO <lt_data>.
ASSIGN lr_data_line->* TO <lt_data_line>.
cl_salv_bs_runtime_info=>get_data( IMPORTING
t_data = <lt_data>
t_data_line = <lt_data_line> ).
ENDIF.
对于ALV / SALV, 将包含输出,在分层列表的情况下,它将是
< lt_data_line>
。
In the case of an ALV/SALV, <lt_data>
will contain the output, in the case of a hierarchical list it will be <lt_data_line>
instead.
这篇关于检查报告是否使用分层ALV的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!