是否可以将用户定义的函数添加到实例中,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) 我需要的是向这两列添加标题(以黄色突出显示),但我不知道该怎么做。
\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) 当该 ALV 上还使用了过滤器时,是否有一种简单的方法可以检索显示的 ALV 数据?
使用的 ALV 是CL_GUI_ALV_GRID. 向用户展示时,默认情况下会在其上放置一个过滤器。用户还有一个按钮来处理 ALV 中的数据。即使用户将自己的过滤器放在 ALV 上,我如何确保该过程仅适用于显示的数据?
例如:一个 ALV 是从一个有 10 行的 itab 创建的,但是因为在 ALV 上还有一个过滤器,所以只显示了 8 行。按下按钮时,我只想处理当前向用户显示的 8 行。
我曾尝试为此目的找到一个功能模块,但我只能找到一个适用于 ALV 中选定行的 FM。
编辑:此外,有一个方法叫做get_filtered_entries,但它只检索那些未显示的条目。使用它来翻译显示的条目将非常耗时。get_filtered_entries
提前致谢。
我已经创建了一个基本的应用程序来获取 SAP ABAP 中的公司详细信息,其中包含以下详细信息。
我已经激活了我的应用程序和配置,如包,T-Code 也工作正常,但是当我尝试发布我的传输请求时,我仍然收到以下错误。请在下面附上的图 5 中找到错误。
我已经验证了我的所有配置,但仍然不知道我哪里出错了,它仍然显示对象处于非活动状态。有人请帮我解决这个问题。
在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) 我想问是否可以使用 class 在一个屏幕上显示两个相关的表(例如,按 PO 号)CL_SALV_TABLE。
如果没有,还有什么其他课程可以工作?
先感谢您!
我需要在代码中返回到 ALV 中的特定行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) 因此,在参数的TOOLBAR事件中有一个表格,我可以访问该表格以手动更改所有按钮。CL_GUI_ALV_GRIDE_OBJECTMT_TOOLBAR
在工具栏中包含/排除标准按钮是否有比在工具栏事件中像自定义按钮一样简单地创建它们更好的方法?
在显示 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) 我有这个代码,它适用于很多报告:
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 查询,该行为 …
如何在ALV网格中显示内联声明的数据类型?
例如:
SELECT *
INTO TABLE @DATA(lt_result)
FROM table.
Run Code Online (Sandbox Code Playgroud)
如何lt_result在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) 我需要动态地为 ALV 网格的单元格着色。我用CL_SALV_TABLE。
例如,在我的例子中,我根据参数从数据表中选择数据。我想在 ALV 网格中显示所选结果。-> 到目前为止,一切都按我的需要进行。
现在,我想将网格中具有初始值或零值的单元格着色为红色。
这可能吗?如果是,该怎么做?