DATA: r_tabdescr TYPE REF TO cl_abap_structdescr.
DATA: wa_field TYPE dfies,
t_dfies TYPE ddfields.
DATA: gt_fieldcat TYPE lvc_t_fcat,
gs_fieldcat TYPE lvc_s_fcat,
FIELD-SYMBOLS:<gt_out> TYPE STANDARD TABLE,
<gs_out> TYPE any,
<fs1> TYPE any.
r_tabdescr ?= cl_abap_structdescr=>describe_by_data( ztpp0003 ). "获取原结构字段
CALL METHOD cl_salv_data_descr=>read_structdescr
EXPORTING
r_structdescr = r_tabdescr
RECEIVING
t_dfies = t_dfies.
"加入动态字段
LOOP AT gt_ztpp0003 INTO DATA(gs_ztpp0003).
CLEAR gs_fieldcat.
gs_fieldcat-fieldname = 'Z' && gs_ztpp0003-pdatu.
gs_fieldcat-scrtext_l = gs_ztpp0003-pdatu.
gs_fieldcat-outputlen = 6.
APPEND gs_fieldcat TO gt_fieldcat2.
ENDLOOP.
"加入原结构字段
LOOP AT t_dfies INTO wa_field.
CLEAR gs_fieldcat.
MOVE-CORRESPONDING wa_field TO gs_fieldcat.
gs_fieldcat-coltext = gs_fieldcat-scrtext_m.
APPEND gs_fieldcat TO gt_fieldcat.
ENDLOOP.
"创建动态内表
DATA: dy_table TYPE REF TO data.
DATA: dy_str TYPE REF TO data.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = gt_fieldcat
IMPORTING
ep_table = dy_table.
ASSIGN dy_table->* TO <gt_out>.
"创建动态内表的工作区
CREATE DATA dy_str LIKE LINE OF <gt_out>.
ASSIGN dy_str->* TO <gs_out>.
"处理字段
DATA:lv_str TYPE string.
LOOP AT gt_ztpp0003 INTO gs_ztpp0003.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_OUTPUT' 去前导零
EXPORTING
input = gs_ztpp0003-matnr
IMPORTING
output = gs_ztpp0003-matnr.
MOVE-CORRESPONDING gs_ztpp0003 TO <gs_out>.
lv_str = 'Z' && gs_ztpp0003-pdatu.
ASSIGN COMPONENT lv_str OF STRUCTURE <gs_out> TO <fs1>. "动态字段
<fs1> = gs_ztpp0003-plnmg.
AT END OF matnr.
APPEND <gs_out> TO <gt_out>.
CLEAR <gs_out>.
ENDAT.
ENDLOOP.
SAP ALV字段动态展示代码实现
于 2024-05-22 16:08:11 首次发布