百度不收录我的网站,网站部分乱码,注册资金多少有什么区别,千锋教育怎么样在 ABAP 中#xff0c;字段目录是使用 ALV #xff08;ABAP List Viewer#xff09; 定义内部表中的数据显示方式的关键元素。它提供对 ALV 中显示的字段的各种属性的控制#xff0c;例如列标题、对齐方式、可见性、可编辑性等。关键概念#xff1a;
Field Catelog 字段目…在 ABAP 中字段目录是使用 ALV ABAP List Viewer 定义内部表中的数据显示方式的关键元素。它提供对 ALV 中显示的字段的各种属性的控制例如列标题、对齐方式、可见性、可编辑性等。关键概念
Field Catelog 字段目录这是一个表对于现代 ALV 网格通常为 lvc_t_fcat 类型对于旧 ALV 网格通常为 slis_t_fieldcat_alv其中包含有关 ALV 中显示的内部表的每个字段的元数据。
它定义了每列的显示方式例如列标题、字段对齐方式、输出长度。
创建字段目录您可以手动定义字段目录也可以使用 LVC_FIELDCATALOG_MERGE 等功能模块根据数据字典结构 DDIC 自动创建一个字段目录。生成目录后您可以对其进行修改以调整字段属性。
Field catalog
全局结构类型的所有字段都以相同的名称出现在数据表中。现在需要对字典结构进行更改或显示额外的列。
在这种情况下我们可以调用函数模块 LVC_FIELDCATALOG_MERGE 该模块将字典结构的字段目录返回到 lvc_t_fcat 类型的表。
现在我们可以循环它并可以进行我们想要的任何更改。
不支持 REUSE_*ALV* 功能模块。我建议切换到 CL_SALV_* 类。文档更好有更多的示例程序 DEMO_SALV_*您可以获得支持。如果你想获得基于字典的字段描述 duh你需要一个字典结构。如果您使用 在 ABAP 级别组装结构类型 TYPE ... BEGIN OF ... END OF ... 据我所知各个字段的字典类型首先转换为 ABAP 类型然后才组装成结构类型。无论如何原始字段的字典引用会丢失。不要在代码中定义输出表的结构而是使用字典结构。
结构 slis_fieldcat_alv 提供了几种不同的文本组件这些组件用作列标签。选择的文本取决于当前列宽这通常取决于显示的数据的长度。确保你相应地更改它们
通常的技术是通过传递 I_STRUCTURE_NAME您可以获得与此 DDIC 结构更改参数 ct_fieldcat对应的字段目录。然后您可以根据需要修改此内部表并将修改后的表传递给 REUSE_ALV_GRID_DISPLAY。
在我不区分不同大小的文本版本的情况下我使用以下宏将所有文本字段设置为相同的值。
define set_field
data:lt_fcat type lvc_t_fcat.
data:tabname type ref to data,tabline type ref to data.field-symbols:gt type standard table,gs type any.call function LVC_FIELDCATALOG_MERGEexportingi_structure_name DDIC_STRUCTUREchangingct_fieldcat lt_fcatexceptionsinconsistent_interface 1program_error 2others 3. Creating tablecall method cl_alv_table_createcreate_dynamic_tableexportingit_fieldcatalog lt_fcatimportingep_table tabname.assign tabname-* to gt.
create data tabline like line of gt.
assign tabline-* to gs.示例代码 Report zalv.
DATA: t_fcat TYPE lvc_t_fcat. INTERNAL TABLE
FIELD-SYMBOLS: TYPE lvc_s_fcat.CALL FUNCTION LVC_FIELDCATALOG_MERGEEXPORTINGi_structure_name SFLIGHTCHANGINGct_fieldcat t_fcatEXCEPTIONSinconsistent_interface 1program_error 2OTHERS 3.IF sy-subrc 0.MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.ENDIF.LOOP AT t_fcat ASSIGNING .CASE -fieldname .WHEN PLANETYPE.-coltext PLANE.WHEN SEATSMAX.-no_out X.ENDCASE.ENDLOOP.REPORT zalv.
TYPES:BEGIN OF stu,carrid TYPE sflight-carrid,connid TYPE sflight-connid,fldate TYPE sflight-fldate,w_check,END OF stu.
DATA:fs_itab TYPE stu, INTERNAL TABLEt_itab LIKE TABLE OF fs_itab. WORK AREA
DATA:r_grid TYPE REF TO cl_gui_alv_grid,r_container TYPE REF TO cl_gui_custom_container.
DATA:t_fcat TYPE lvc_t_fcat,wa_fcat TYPE lvc_s_fcat.
SELECT carrid connid fldate FROM
sflight INTO CORRESPONDING FIELDS OF TABLE t_itab.
CALL SCREEN 100.
*---------------------------------------------------------------------
* Module STATUS_0100 OUTPUT
*---------------------------------------------------------------------
MODULE status_0100 OUTPUT.SET PF-STATUS SCREEN.SET TITLEBAR TITLE.
ENDMODULE. STATUS_0100 OUTPUT
*---------------------------------------------------------------------
* Module USER_COMMAND_0100 INPUT
*---------------------------------------------------------------------
*text
*--------------------------------------------------------------------
MODULE user_command_0100 INPUT.CASE sy-ucomm.WHEN BACK.LEAVE TO SCREEN 0.ENDCASE.
ENDMODULE. USER_COMMAND_0100 INPUT
*---------------------------------------------------------------------
* Module SET_HANDLER OUTPUT
*-------------------------------------------------------------------
*text
*----------------------------------------------------------------------
MODULE set_handler OUTPUT.CREATE OBJECT r_containerEXPORTINGcontainer_name CONTAINER.CREATE OBJECT r_gridEXPORTINGi_parent r_container.
*POPULATING THE FIELD CATALOG.wa_fcat-fieldname W_CHECK.wa_fcat-coltext CHECK.wa_fcat-checkbox X.wa_fcat-edit X.wa_fcat-col_pos 1.APPEND wa_fcat TO t_fcat.CLEAR wa_fcat.wa_fcat-fieldname CARRID.wa_fcat-ref_table SFLIGHT.wa_fcat-ref_field CARRID.wa_fcat-col_pos 2.APPEND wa_fcat TO t_fcat.CLEAR wa_fcat.wa_fcat-fieldname CONNID.wa_fcat-ref_table SFLIGHT.wa_fcat-ref_field CONNID.wa_fcat-col_pos 3.APPEND wa_fcat TO t_fcat.CLEAR wa_fcat.CALL METHOD r_grid-set_table_for_first_displayCHANGINGit_fieldcatalog t_fcatit_outtab t_itab.
ENDMODULE. SET_HANDLER OUTPUTREPORT zalv.
TYPES:BEGIN OF stu,carrid TYPE sflight-carrid,connid TYPE sflight-connid,fldate TYPE sflight-fldate,w_check,END OF stu.
DATA:
fs_itab TYPE stu, INTERNAL TABLE
t_itab LIKE TABLE OF fs_itab. WORK AREA
DATA:
r_grid TYPE REF TO cl_gui_alv_grid,
r_container TYPE REF TO cl_gui_custom_container.
DATA:
t_fcat TYPE lvc_t_fcat,
wa_fcat TYPE lvc_s_fcat.
SELECT carrid connid fldate FROM
sflight INTO CORRESPONDING FIELDS OF TABLE t_itab.
CALL SCREEN 100.
*---------------------------------------------------------------------
* Module STATUS_0100 OUTPUT
*---------------------------------------------------------------------
MODULE status_0100 OUTPUT.SET PF-STATUS SCREEN.SET TITLEBAR TITLE.
ENDMODULE. STATUS_0100 OUTPUT
*---------------------------------------------------------------------
* Module USER_COMMAND_0100 INPUT
*---------------------------------------------------------------------
*text
*--------------------------------------------------------------------
MODULE user_command_0100 INPUT.CASE sy-ucomm.WHEN BACK.LEAVE TO SCREEN 0.ENDCASE.
ENDMODULE. USER_COMMAND_0100 INPUT
*---------------------------------------------------------------------
* Module SET_HANDLER OUTPUT
*-------------------------------------------------------------------
*text
*----------------------------------------------------------------------
MODULE set_handler OUTPUT.CREATE OBJECT r_containerEXPORTINGcontainer_name CONTAINER.CREATE OBJECT r_gridEXPORTINGi_parent r_container.
*POPULATING THE FIELD CATALOG.wa_fcat-fieldname W_CHECK.wa_fcat-coltext CHECK.wa_fcat-checkbox X.wa_fcat-edit X.wa_fcat-col_pos 1.APPEND wa_fcat TO t_fcat.CLEAR wa_fcat.wa_fcat-fieldname CARRID.wa_fcat-ref_table SFLIGHT.wa_fcat-ref_field CARRID.wa_fcat-col_pos 2.APPEND wa_fcat TO t_fcat.CLEAR wa_fcat.wa_fcat-fieldname CONNID.wa_fcat-ref_table SFLIGHT.wa_fcat-ref_field CONNID.wa_fcat-col_pos 3.APPEND wa_fcat TO t_fcat.CLEAR wa_fcat.CALL METHOD r_grid-set_table_for_first_displayCHANGINGit_fieldcatalog t_fcatit_outtab t_itab.
ENDMODULE. SET_HANDLER OUTPUT参考链接
https://answers.sap.com/questions/3380700/using-the-fm-lvcfieldcatalogmerge.htmlhttps://answers.sap.com/questions/6058081/fieldcatalog-merge-in-alv-report.htmlhttps://wiki.scn.sap.com/wiki/display/ABAP/Fieldcatalogtypeshttps://ultimasolution.pl/refresh-alv-grid-and-keep-position-and-current-cell-abap