标签: alv

是否可以在不复制 GUI 状态的情况下将用户定义的函数添加到 CL_SALV_TREE?

是否可以将用户定义的函数添加到实例中,CL_SALV_TREE而无需将 GUI 状态复制到使用此实例的报告中?

我想要做的是添加一个带有add_function方法的自定义函数。

REPORT zzy.

CLASS lcl_main DEFINITION FINAL CREATE PRIVATE.
  PUBLIC SECTION.
    CLASS-METHODS:
      main.
ENDCLASS.

CLASS lcl_main IMPLEMENTATION.
  METHOD main.
    DATA: lt_table TYPE STANDARD TABLE OF t000.
    TRY .
      cl_salv_tree=>factory(
        IMPORTING
          r_salv_tree = DATA(lo_salv_tree)
        CHANGING
          t_table = lt_table
      ).
      DATA(lo_salv_functions) = lo_salv_tree->get_functions( ).
      lo_salv_functions->add_function(
        name = 'EXPORT_TO_EXCEL'
        icon = '@J2@'
        tooltip = 'Export as Excel'
        position = if_salv_c_function_position=>right_of_salv_functions
      ).
      lo_salv_functions->set_all( abap_true ).

      lo_salv_tree->display( ).
    CATCH cx_salv_error.
      ASSERT 0 = 1.
    ENDTRY.
  ENDMETHOD.
ENDCLASS.

START-OF-SELECTION. …
Run Code Online (Sandbox Code Playgroud)

abap dynpro alv

5
推荐指数
1
解决办法
6113
查看次数

添加/更改内部表 ALV 上的列名称

我需要的是向这两列添加标题(以黄色突出显示),但我不知道该怎么做。

\n

没有标题的栏目

\n
FORM display_alv. \n    DATA: gr_functions TYPE REF TO cl_salv_functions.\n    DATA: gr_display TYPE REF TO cl_salv_display_settings.    \n    DATA: gr_columns TYPE REF TO cl_salv_columns_table.    \n    DATA: gr_column TYPE REF TO cl_salv_column_table.    \n    DATA: gr_sorts TYPE REF TO cl_salv_sorts.    \n    DATA: gr_agg TYPE REF TO cl_salv_aggregations.    \n    DATA: gr_selections TYPE REF TO cl_salv_selections.\n    \n    gr_functions = alv->get_functions( ).    \n    gr_functions->set_all( abap_true ).\n    \n    gr_display = alv->get_display_settings( ).    \n    gr_display->set_striped_pattern( cl_salv_display_settings=>true ).    \n    gr_display->set_list_header( \'Relat\xc3\xb3rio RVs\' ).\n    \n    gr_columns = alv->get_columns( …
Run Code Online (Sandbox Code Playgroud)

abap alv

5
推荐指数
1
解决办法
8669
查看次数

从 ALV 检索过滤数据

当该 ALV 上还使用了过滤器时,是否有一种简单的方法可以检索显示的 ALV 数据?

使用的 ALV 是CL_GUI_ALV_GRID. 向用户展示时,默认情况下会在其上放置一个过滤器。用户还有一个按钮来处理 ALV 中的数据。即使用户将自己的过滤器放在 ALV 上,我如何确保该过程仅适用于显示的数据?

例如:一个 ALV 是从一个有 10 行的 itab 创建的,但是因为在 ALV 上还有一个过滤器,所以只显示了 8 行。按下按钮时,我只想处理当前向用户显示的 8 行。

我曾尝试为此目的找到一个功能模块,但我只能找到一个适用于 ALV 中选定行的 FM。

编辑:此外,有一个方法叫做get_filtered_entries,但它只检索那些未显示的条目。使用它来翻译显示的条目将非常耗时。get_filtered_entries

提前致谢。

abap filter alv

4
推荐指数
1
解决办法
6129
查看次数

对象仍处于非活动版本

我已经创建了一个基本的应用程序来获取 SAP ABAP 中的公司详细信息,其中包含以下详细信息。

  1. 包名:ZSPT_930AM_PKG_1
  2. 应用程序名称:ZSPT_930AM_CMPNY_INFO_1
  3. 交易代码:Z39CD
  4. 传输请求编号:EC6K900010
  5. 子请求编号:EC6K900011

我已经激活了我的应用程序和配置,如包,T-Code 也工作正常,但是当我尝试发布我的传输请求时,我仍然收到以下错误。请在下面附上的图 5 中找到错误。

这是我的包裹 这是我的申请,你可以看到申请的状态是ACTIVE 我的应用程序的交易代码 这是我的运输请求组织者,这里我的请求是 EC6K900010 这是我的错误

我已经验证了我的所有配置,但仍然不知道我哪里出错了,它仍然显示对象处于非活动状态。有人请帮我解决这个问题。

abap sap-basis alv

4
推荐指数
1
解决办法
4208
查看次数

使用cl_salv_table显示数据时发生意外的数据库提交

在ABAP程序中,使用class显示本地表时,我注意到数据的意外持久性cl_salv_table

为了重现,我创建了一个最小的代码示例。该程序进行插入,在ALV中显示数据,然后执行ROLLBACK WORK。我希望插入的值在回滚之前存在于数据库中,而在回滚之后不存在。

但是,如果在插入和回滚之间显示ALV网格,则数据将保留在回滚之后,并立即对其他事务可见。

这是预期的行为吗?如果是,该如何避免呢?我们确实经常使用此类,并且看起来当我们实际上不想要时,可能会无意间将值提交给数据库。


这是代码:

*&---------------------------------------------------------------------*
*& Report  zok_alv_commit
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zok_alv_commit.

SELECTION-SCREEN BEGIN OF BLOCK b1.

PARAMETERS: p_showtb TYPE boolean AS CHECKBOX DEFAULT abap_false.

SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.

  DATA: lt_table TYPE TABLE OF zok_alv,
        ls_table TYPE zok_alv.

  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  " Create new GUID and insert into table
  """"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
  TRY.
      ls_table-guid = cl_system_uuid=>create_uuid_c22_static( ).
    CATCH cx_uuid_error.
      " Error creating UUID
      MESSAGE e836(/basf/dps3_apodata).
  ENDTRY.
  WRITE: |Create guid { ls_table-guid } |, …
Run Code Online (Sandbox Code Playgroud)

sap abap alv

4
推荐指数
1
解决办法
183
查看次数

使用 CL_SALV_TABLE 在一个屏幕上显示两个表

我想问是否可以使用 class 在一个屏幕上显示两个相关的表(例如,按 PO 号)CL_SALV_TABLE

如果没有,还有什么其他课程可以工作?

先感谢您!

abap alv

3
推荐指数
1
解决办法
6696
查看次数

如何在ALV网格中选择整行?

我需要在代码中返回到 ALV 中的特定行cl_gui_alv_grid。我使用set_current_cell_via_id,它有效,但只选择了一个单元格。如何以编程方式选择整行?

cl_gui_alv_grid set_current_cell_via_id 的结果

谢谢

完整代码:

DATA gr_alvgrid TYPE REF TO cl_gui_alv_grid.
DATA gt_t005t TYPE TABLE OF t005t.
PARAMETERS dummy.

AT SELECTION-SCREEN OUTPUT.
  IF gr_alvgrid IS NOT BOUND.
    CREATE OBJECT gr_alvgrid
      EXPORTING
        i_parent = cl_gui_container=>screen0.
    SELECT * FROM t005t INTO TABLE gt_t005t WHERE spras = 'E'.
    gr_alvgrid->set_table_for_first_display(
        EXPORTING i_structure_name = 'T005T'
        is_layout = VALUE #( sel_mode = 'D' )
        CHANGING it_outtab = gt_t005t ).
  ENDIF.
  DATA sroid TYPE lvc_s_roid.
  DATA irow TYPE i VALUE 2.
  SROID-ROW_ID = …
Run Code Online (Sandbox Code Playgroud)

abap alv

2
推荐指数
1
解决办法
455
查看次数

如何排除 ALV 工具栏中不必要的按钮?

因此,在参数的TOOLBAR事件中有一个表格,我可以访问该表格以手动更改所有按钮。CL_GUI_ALV_GRIDE_OBJECTMT_TOOLBAR

在工具栏中包含/排除标准按钮是否有比在工具栏事件中像自定义按钮一样简单地创建它们更好的方法?

abap toolbar alv

1
推荐指数
1
解决办法
1万
查看次数

调用 REUSE_ALV_GRID_DISPLAY 时崩溃“字段符号尚未分配”

在显示 ALV 时,我在执行程序时收到崩溃报告。为了创建 ALV,我遵循了一些教程和内容,目前它看起来像这样:

TYPE-POOLS: slis. 
*build field catalog
DATA: it_fieldcat TYPE slis_t_fieldcat_alv,
    wa_fieldcat TYPE slis_fieldcat_alv,
    repid TYPE sy-repid.

REFRESH it_fieldcat.
CLEAR wa_fieldcat.
wa_fieldcat-reptext_ddic = 'Table ID'.
wa_fieldcat-fieldname    = 'table_id'.
wa_fieldcat-tabname      = 'lt_where_used_data_of_coll'.
wa_fieldcat-outputlen    = '18'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-reptext_ddic = 'Table Description'.
wa_fieldcat-fieldname    = 'table_description'.
wa_fieldcat-tabname      = 'lt_where_used_data_of_coll'.
wa_fieldcat-outputlen    = '40'.
APPEND wa_fieldcat TO it_fieldcat.

CLEAR wa_fieldcat.
wa_fieldcat-reptext_ddic = 'Numer of Records Found'.
wa_fieldcat-fieldname    = 'nr_of_records'.
wa_fieldcat-tabname      = 'lt_where_used_data_of_coll'.
wa_fieldcat-outputlen    = '30'.
APPEND wa_fieldcat TO it_fieldcat. …
Run Code Online (Sandbox Code Playgroud)

abap alv

1
推荐指数
1
解决办法
7486
查看次数

cl_salv_bs_runtime_info=>get_data_ref() 不返回数据

我有这个代码,它适用于很多报告:

if IV_SELECTION_SET_VARIANT is INITIAL.
  SUBMIT (IV_REPORT_NAME)
     WITH SELECTION-TABLE selection_table
    AND RETURN.
ELSE.
  SUBMIT (IV_REPORT_NAME)
     WITH SELECTION-TABLE selection_table
     USING SELECTION-SET IV_SELECTION_SET_VARIANT
    AND RETURN.
endif.


FIELD-SYMBOLS <lt_data>             TYPE ANY TABLE.
FIELD-SYMBOLS <lt_data_line>        TYPE ANY TABLE.

DATA          lr_data               TYPE REF TO data.
DATA          lr_data_line          TYPE REF TO data.
DATA          lr_data_descr          TYPE REF TO cl_abap_datadescr.
DATA          lr_data_line_descr    TYPE REF TO cl_abap_datadescr.

cl_salv_bs_runtime_info=>get_data_ref(
     IMPORTING r_data_descr      = lr_data_descr
                          r_data_line_descr = lr_data_line_descr ).

IF lr_data_descr IS NOT BOUND.
  ev_result_json = '[]'.
  EXIT.
ENDIF.
Run Code Online (Sandbox Code Playgroud)

但对于 AdHoc 查询,该行为 …

abap alv sap-query

1
推荐指数
1
解决办法
2009
查看次数

ALV网格用于在线声明

如何在ALV网格中显示内联声明的数据类型?

例如:

SELECT *
INTO TABLE @DATA(lt_result)
FROM table.
Run Code Online (Sandbox Code Playgroud)

如何lt_result在ALV网格中显示?

sap abap alv

0
推荐指数
1
解决办法
605
查看次数

从用户命令导航时出现 ALV 刷新问题

我有 2 个屏幕 7000 和 7001,7000 屏幕包含一个按钮,当我们单击它时,它必须导航到 7001 屏幕,但它没有按预期工作。SCREEN 7000 也有一些细节可以显示为 alv。

屏幕正在导航到屏幕 7001,但数据未刷新。任何人都可以帮忙吗?我正在使用 alv 网格容器。对于两个屏幕,我使用相同的 alv 网格

示例代码:

screen 7000 PAI:
WHEN 'DISPLAY'.
      call SCREEN 7001.

screen 7001 PBO:
 GET REFERENCE OF m_instance->gt_field INTO lr_output.

  CREATE OBJECT gr_grid
    EXPORTING
      i_parent = cl_gui_container=>default_screen.

  CALL FUNCTION 'ZLSO_GENERATE_GENERIC_FIELDCAT'
    EXPORTING
      ir_input_value   = lr_output
    IMPORTING
      et_fieldcat_fcat = lt_fldcat
    EXCEPTIONS
      xc_invalid_type  = 1
      xc_empty_table   = 2
      xc_unknown_error = 3
      OTHERS           = 4.
  IF sy-subrc <> 0.
    MESSAGE ' Error in generating ALV' TYPE 'E'.
  ENDIF. …
Run Code Online (Sandbox Code Playgroud)

abap dynpro alv

0
推荐指数
1
解决办法
8557
查看次数

动态为 ALV 网格的单元格着色 (CL_SALV_TABLE)

我需要动态地为 ALV 网格的单元格着色。我用CL_SALV_TABLE

例如,在我的例子中,我根据参数从数据表中选择数据。我想在 ALV 网格中显示所选结果。-> 到目前为止,一切都按我的需要进行。

现在,我想将网格中具有初始值或零值的单元格着色为红色。

这可能吗?如果是,该怎么做?

abap alv

0
推荐指数
1
解决办法
7429
查看次数

标签 统计

abap ×13

alv ×13

dynpro ×2

sap ×2

filter ×1

sap-basis ×1

sap-query ×1

toolbar ×1