*&---------------------------------------------------------------------*
*& Report
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT YTEST.
TABLES:sscrfields.
*&---------------------------------------------------------------------*
*&DEFINE ALV
*&---------------------------------------------------------------------*
DATA: gv_repid TYPE sy-repid,
gs_layout TYPE lvc_s_layo,
gs_repid TYPE sy-repid,
gt_alv_filedcat TYPE lvc_t_fcat,
gs_alv_filed LIKE lvc_s_fcat.
DATA:lv_guid TYPE zt_data-guid.
DATA:lv_suser TYPE zt_data-suser.
************************************************************************
* 选择屏幕用
************************************************************************
************************************************************************
* PARAMETERS/SELECT-OPTIONS(设置屏幕).
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE TEXT-001.
SELECT-OPTIONS:s_keyid FOR lv_guid. "GUID编号
SELECT-OPTIONS:s_suser FOR lv_suser. "登录人员编号
SELECT-OPTIONS:s_aedat FOR sy-datum DEFAULT sy-datum. "操作日期
SELECTION-SCREEN END OF BLOCK bl1.
************************************************************************
* START-OF-SELECTION.
************************************************************************
START-OF-SELECTION.
* 获取日志数据
SELECT *
INTO TABLE @DATA(gt_data)
FROM zt_data
WHERE guid IN @s_keyid
AND suser IN @s_suser
AND begda IN @s_aedat.
PERFORM frm_show.
FORM frm_show .
PERFORM frm_set_fieldcat.
PERFORM frm_set_layout.
PERFORM frm_show_alv.
ENDFORM.
FORM frm_set_fieldcat .
CLEAR:gt_alv_filedcat.
PERFORM frm_fill_fieldcat USING 'GUID' TEXT-001 '' '' '' '' ''.
PERFORM frm_fill_fieldcat USING 'ZTYPE' TEXT-002 '' '' '' '' ''.
PERFORM frm_fill_fieldcat USING 'OBJID' TEXT-003 '' '' '' '' ''.
PERFORM frm_fill_fieldcat USING 'STEXT' TEXT-004 '' '' '' '' ''.
PERFORM frm_fill_fieldcat USING 'BEGDA' TEXT-005 '' '' '' '' ''.
PERFORM frm_fill_fieldcat USING 'SUSER' TEXT-007 '' '' '' '' ''.
PERFORM frm_fill_fieldcat USING 'DATA' TEXT-008 '' '' '' '10' ''.
PERFORM frm_fill_fieldcat USING 'DATA1' TEXT-009 '' '' '' '10' ''.
PERFORM frm_fill_fieldcat USING 'DATA2' TEXT-010 '' '' '' '10' ''.
PERFORM frm_fill_fieldcat USING 'MSG' TEXT-011 '' '' '' '10' ''.
ENDFORM.
FORM frm_set_layout .
gs_repid = sy-repid.
gs_layout-zebra = 'X'.
* gs_layout-cwidth_opt = 'X'.
* GS_LAYOUT-BOX_FNAME = 'SLBOX'.
ENDFORM.
FORM frm_show_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
i_callback_program = gs_repid
i_save = 'A'
it_fieldcat_lvc = gt_alv_filedcat[]
i_grid_title = CONV lvc_title( |#总条目数:{ lines( gt_data[] ) }| )
* it_sort_lvc = gs_sortinfo[]
* i_grid_settings = gs_glay
is_layout_lvc = gs_layout
* it_events = gs_event
i_callback_pf_status_set = 'PF_STATUS'
i_callback_user_command = 'USER_COMMAND'
TABLES
t_outtab = gt_data[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM.
FORM frm_fill_fieldcat USING p_fieldname
p_coltext
p_key
p_ref_table
p_ref_field
p_outputlen
p_no_zero.
DATA:ls_alv_filed LIKE gs_alv_filed.
ls_alv_filed-fieldname = p_fieldname.
ls_alv_filed-coltext = p_coltext.
ls_alv_filed-outputlen = p_outputlen.
ls_alv_filed-no_zero = p_no_zero.
ls_alv_filed-key = p_key.
ls_alv_filed-ref_table = p_ref_table.
ls_alv_filed-ref_field = p_ref_field.
APPEND ls_alv_filed TO gt_alv_filedcat.
ENDFORM.
FORM pf_status USING rt_extab TYPE slis_t_extab.
* DATA fcode TYPE rsmpe-func.
SET PF-STATUS 'S0100_1' EXCLUDING rt_extab.
ENDFORM.
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
DATA
:lv_json TYPE string,
lv_convert TYPE string,
lo_json_ser TYPE REF TO cl_trex_json_serializer,
lv_err_text TYPE string,
ls_msg TYPE lvc_s_msg1,
ls_lmess TYPE lmess,
lt_mess TYPE STANDARD TABLE OF lmess.
DATA:lr_grid TYPE REF TO cl_gui_alv_grid.
* DATA:lv_tabix TYPE sy-tabix,
* lv_indicator_text TYPE string.
* 将界面中的选择数据更新到内表中
*=====GET_GLOBALS_FROM_SLVC_FULLSCR START==========
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lr_grid.
CALL METHOD lr_grid->check_changed_data.
*=====GET_GLOBALS_FROM_SLVC_FULLSCR END============
CASE r_ucomm.
WHEN '&IC1'. "ALV双击事件
READ TABLE gt_data ASSIGNING FIELD-SYMBOL(<fs_data>) INDEX rs_selfield-tabindex.
IF sy-subrc EQ 0.
CASE rs_selfield-fieldname.
WHEN 'DATA'.
lv_json = <fs_data>-data.
WHEN 'DATA1'.
lv_json = <fs_data>-data1.
WHEN 'DATA2'.
lv_json = <fs_data>-data2.
WHEN 'MSG'.
lv_json = <fs_data>-msg.
ENDCASE.
ENDIF.
WHEN 'CREATE'.
* PERFORM frm_set_indicator USING TEXT-t03.
WHEN 'BACK'.
CLEAR:gt_data,gt_alv_filedcat.
LEAVE TO SCREEN 0.
WHEN OTHERS.
ENDCASE.
* RS_SELFIELD-ROW_STABLE = 'X'.
* RS_SELFIELD-COL_STABLE = 'X'.
rs_selfield-refresh = 'X'.
TRY.
* 将JSON转换为HTML
CALL TRANSFORMATION sjson2html SOURCE XML lv_json
RESULT XML DATA(lv_html).
CATCH cx_xslt_runtime_error INTO DATA(lo_err).
lv_err_text = lo_err->get_text( ).
WRITE: lv_err_text.
RETURN.
ENDTRY.
* 显示HTML
lv_convert = cl_abap_codepage=>convert_from( lv_html ).
cl_abap_browser=>show_html( html_string = lv_convert ).
ENDFORM.
双击ALV的字段,显示json数据
最新推荐文章于 2023-10-31 14:54:48 发布
这是一个使用SAP ABAP编程语言实现的ALV报表展示和用户交互的示例。代码中定义了ALV字段分类、布局,并通过选择屏幕接收用户输入,筛选指定条件的日志数据进行展示。同时,处理了双击事件,将选定数据的JSON内容转换为HTML并显示。
摘要由CSDN通过智能技术生成