文档变更日志查看

文摘   科技   2024-08-12 14:56   浙江  

01

前言

自开发表变更历史记录一文中介绍了使用TCODE: SCD3查看变更日志,本文介绍如何使用ABAP代码显示变更日志。


02

代码

DATA: lt_objectclass    TYPE cdobjectcl_range_tab,      lt_objectid       TYPE cdobjectv_range_tab,      lt_cdredadd       TYPE TABLE OF cdredadd,      lt_cdred_str      TYPE cdred_str_tab,      lt_fields_no_disp TYPE cddisp_fields_tab,      wa_nodisp         LIKE LINE OF lt_fields_no_disp.
lt_objectclass = VALUE #( ( sign = 'I' option = 'EQ' low = 'ZTMARA' ) ).lt_objectid = VALUE #( ( sign = 'I' option = 'EQ' low = 'M001RL' ) ).
wa_nodisp-fieldname = 'FTEXT'.APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'SCRTEXT_S'.APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'SCRTEXT_M'.APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'TEXT_CASE'.APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'KEYGUID'.APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'EXT_KEYLEN'.APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'CHNGIND'.APPEND wa_nodisp TO lt_fields_no_disp.
CALL FUNCTION 'CHANGEDOCUMENT_READ_ALL' EXPORTING i_date_of_change = '19000101' i_time_of_change = '000000' i_date_until = sy-datum i_time_until = '235959'* i_username = p_user i_read_archive_is = space it_objectclass = lt_objectclass it_objectid = lt_objectid IMPORTING et_cdredadd = lt_cdredadd et_cdred_str = lt_cdred_str EXCEPTIONS missing_input_objectclass = 0 missing_input_header = 0 no_position_found = 1 wrong_access_to_archive = 0 time_zone_conversion_error = 0 read_too_many_entries = 0 OTHERS = 2.CASE sy-subrc. WHEN 0. SORT lt_cdredadd BY objectid udate utime changenr username. CALL FUNCTION 'CHANGEDOCUMENT_DISPLAY' EXPORTING i_applicationid = sy-repid flg_autocondense = 'X' i_cb_program = sy-repid* i_callback_pf_status_set = lv_pf_status_set i_objectclas = '*' it_cdred_str = lt_cdred_str[] it_fields_no_disp = lt_fields_no_disp it_cdredadd = lt_cdredadd i_no_sort = abap_true " keep sorting from modify_cd_output_table i_screen_start_line = 1 i_screen_start_column = 5 i_screen_end_line = 30 i_screen_end_column = 185. WHEN 1. WHEN 2.ENDCASE.

效果:

  

03

方法封装

可以封装到自己的类方法中,需要的时候方便调用

方法定义

 class-methods DISPLAY_CHANGEDOCUMENT    importing      value(IT_OBJECTCLASS) type CDOBJECTCL_RANGE_TAB      value(IT_OBJECTID) type CDOBJECTV_RANGE_TAB .

方法实现

  METHOD display_changedocument.    DATA:      lt_cdredadd       TYPE TABLE OF cdredadd,      lt_cdred_str      TYPE cdred_str_tab,      lt_fields_no_disp TYPE cddisp_fields_tab,      wa_nodisp         LIKE LINE OF lt_fields_no_disp.
wa_nodisp-fieldname = 'FTEXT'. APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'SCRTEXT_S'. APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'SCRTEXT_M'. APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'TEXT_CASE'. APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'KEYGUID'. APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'EXT_KEYLEN'. APPEND wa_nodisp TO lt_fields_no_disp.
wa_nodisp-fieldname = 'CHNGIND'. APPEND wa_nodisp TO lt_fields_no_disp.
CALL FUNCTION 'CHANGEDOCUMENT_READ_ALL' EXPORTING i_date_of_change = '19000101' i_time_of_change = '000000' i_date_until = sy-datum i_time_until = '235959'* i_username = p_user i_read_archive_is = space it_objectclass = it_objectclass it_objectid = it_objectid IMPORTING et_cdredadd = lt_cdredadd et_cdred_str = lt_cdred_str EXCEPTIONS missing_input_objectclass = 0 missing_input_header = 0 no_position_found = 1 wrong_access_to_archive = 0 time_zone_conversion_error = 0 read_too_many_entries = 0 OTHERS = 2. CASE sy-subrc. WHEN 0. SORT lt_cdredadd BY objectid udate utime changenr username. CALL FUNCTION 'CHANGEDOCUMENT_DISPLAY' EXPORTING i_applicationid = sy-repid flg_autocondense = 'X' i_cb_program = sy-repid* i_callback_pf_status_set = lv_pf_status_set i_objectclas = '*' it_cdred_str = lt_cdred_str[] it_fields_no_disp = lt_fields_no_disp it_cdredadd = lt_cdredadd i_no_sort = abap_true " keep sorting from modify_cd_output_table i_screen_start_line = 1 i_screen_start_column = 5 i_screen_end_line = 30 i_screen_end_column = 185. WHEN 1. WHEN 2. ENDCASE.
ENDMETHOD.



 

END

 

温馨提示

如果你喜欢本文,请分享给有需要的朋友,想要获得更多信息,请关注我,若有问题以及建议,请在文末留言或者私信。





 

 

扫码关注我们

以便获取最新更新内容


 

ABAP三叔
ABAP开发技术分享