检查报告是否使用分层ALV [英] Check if Report uses hierarchical ALV or not

查看:92
本文介绍了检查报告是否使用分层ALV的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我找到了一种导出分层ALV的方法,如下所示: ABAP:通过GUI报告有18列,通过RFC 6(分层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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆