click 的个人资料Click's Blog照片日志列表更多 ![]() | 帮助 |
|
10月24日 日期型F4帮助:f4_date
*需求:只有显示年月,但要有日期的search help
PARAMETERS:p1(6) TYPE c. AT SELECTION-SCREEN ON VALUE-REQUEST FOR p1. DATA:l_date TYPE sy-datum. CALL FUNCTION 'F4_DATE' EXPORTING date_for_first_month = sy-datum IMPORTING select_date = l_date EXCEPTIONS calendar_buffer_not_loadable = 1 date_after_range = 2 date_before_range = 3 date_invalid = 4 factory_calendar_not_found = 5 holiday_calendar_not_found = 6 parameter_conflict = 7 OTHERS = 8. IF sy-subrc <> 0. MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4. ENDIF. p1 = l_date+0(6). 10月19日 很好很强大的各国语言版本中文:很好,很强大 英文:Very good, very strong 意大利:Molto buon, molto forte 西班牙:Muy bueno, muy fuerte 葡萄牙:Muito bom, muito forte 法语:Très bon, très fort 德语:Sehr gut, sehr stark 日语:非常によい、非常に強い 10月18日 YM的算号器,很好很强大REPORT z_testym15 .
PARAMETERS:
sys_id(3) DEFAULT '000' , sys_numb(2) DEFAULT '00' , msg_ser(15) DEFAULT 'SUPERJXY' , ins_no(10) DEFAULT '0000000000'. START-OF-SELECTION.
DATA key(10). PERFORM get_sp_value USING sys_id sys_numb msg_ser ins_no CHANGING key. END-OF-SELECTION.
WRITE key. *&---------------------------------------------------------------------*
*& Form get_sp_value *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_PF_SID text * -->P_PF_SYSNO text * -->P_PF_SERVER text * <--P_PF_VALUE text *----------------------------------------------------------------------* FORM get_sp_value USING p_pf_sid p_pf_sysno p_pf_server p_pf_instno CHANGING p_pf_value. CONSTANTS: lc_part_len TYPE i VALUE 5, lc_pw_len TYPE i VALUE 10, lc_allowed_chars(38) TYPE c VALUE '-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_'. DATA: lf_string(20) TYPE c, lf_key TYPE i, lf_part(lc_part_len) TYPE c, lf_finalf(lc_pw_len) TYPE c, lf_finalx TYPE xstring, lf_xbuffer TYPE xstring, lf_opf(10) TYPE c, lf_langu LIKE sy-langu, lf_subrc LIKE sy-subrc, lf_len TYPE i, lo_conv_to_x TYPE REF TO cl_abap_conv_out_ce. CLEAR: lf_string, lf_finalx, lf_opf.
CONCATENATE p_pf_sid p_pf_sysno p_pf_server INTO lf_string.
* Large letters only
TRANSLATE lf_string TO UPPER CASE. lf_langu = sy-langu.
SET LOCALE LANGUAGE 'E'. lo_conv_to_x = cl_abap_conv_out_ce=>create( encoding = '1100' ). lf_len = STRLEN( lf_string ). IF lf_string(lf_len) CN lc_allowed_chars.
ELSE. * Fold the input string to a lc_part_len long string
WHILE lf_len > 0. lf_part = lf_string(lc_part_len). SHIFT lf_string BY lc_part_len PLACES. lf_len = STRLEN( lf_string ). CALL METHOD lo_conv_to_x->reset. CALL METHOD lo_conv_to_x->write( data = lf_part n = -1 ). lf_xbuffer = lo_conv_to_x->get_buffer( ). lf_finalx = lf_finalx BIT-XOR lf_xbuffer. ENDWHILE. lf_key = 12.
PERFORM scramble USING lf_finalx
lf_key lc_part_len CHANGING lf_finalf lf_subrc. IF NOT lf_finalf IS INITIAL.
p_pf_value = lf_finalf. ELSE. CLEAR p_pf_value. ENDIF. ENDIF. ENDFORM. "get_sp_value
*&---------------------------------------------------------------------*
*& Form scramble *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* * -->P_LF_FINALX text * -->P_LF_KEY text * -->P_LC_PART_LEN text * <--P_LF_finalf text * <--P_LF_SUBRC text *----------------------------------------------------------------------* FORM scramble USING iv_xstring TYPE xstring iv_key TYPE i iv_src_len TYPE i CHANGING lf_finalf lf_subrc LIKE sy-subrc. CONSTANTS: lc_max_len TYPE i VALUE 20,
lc_mask(4) TYPE x VALUE '0000003F', lc_random(64) TYPE x VALUE 'F0ED53B83244F1F876C67959FD4F13A2' & 'C15195EC5483C234774943A27DE26596' & '5E5398789A17A33CD383A8B829FBDCA5' & '55D702778413ACDDF9B83116610E6DFA'. DATA: lv_key_index(4) TYPE x,
lv_rand_index(4) TYPE x, lv_xkey(4) TYPE x, lv_xkey_shl_1(4) TYPE x, lv_xkey_shr_5(4) TYPE x, lv_scramble_byte TYPE x, lv_dest(lc_max_len) TYPE x, lv_index TYPE i, lv_len TYPE i. CLEAR lf_subrc.
IF iv_src_len EQ 0. EXIT. ENDIF.
lv_len = XSTRLEN( iv_xstring ). IF iv_src_len GT lc_max_len OR iv_src_len GT lv_len. lf_subrc = 2. EXIT. ENDIF. lv_xkey = iv_key.
lv_xkey_shl_1 = iv_key * 2. lv_xkey_shr_5 = iv_key DIV 32. lv_rand_index = lv_xkey BIT-XOR lv_xkey_shr_5 BIT-XOR lv_xkey_shl_1. lv_rand_index = lv_rand_index BIT-AND lc_mask. lv_index = 0.
DO iv_src_len TIMES. CATCH SYSTEM-EXCEPTIONS compute_int_times_overflow = 1. lv_key_index = ( iv_key * lv_index * lv_index ) - lv_index. ENDCATCH. IF sy-subrc <> 0. lf_subrc = 1. EXIT. ENDIF. lv_scramble_byte = lc_random+lv_rand_index(1) BIT-XOR lv_key_index+3(1). lv_dest+lv_index(1) = iv_xstring+lv_index(1) BIT-XOR lv_scramble_byte. lv_index = lv_index + 1. lv_rand_index = lv_rand_index + 1. lv_rand_index = lv_rand_index BIT-AND lc_mask. ENDDO. IF lf_subrc <> 0. EXIT. ENDIF. WRITE lv_dest(iv_src_len) TO lf_finalf.
ENDFORM. " scramble 10月16日 在top_of_page事件中实现超过60位可打印的alv header(grid) 因为在 I_CALLBACK_HTML_TOP_OF_PAGE 中用cl_dd_document创建的alv头不能打印,而用REUSE_ALV_COMMENTARY_WRITE在top_of_page中输出的头虽然可以打印,但SLIS_T_LISTHEADER-INFO只有60位,有一定的局限性。所以在需要输出更长文本时,可以在top_of_page中使用以下代码实现
FORM f_top_of_page . DATA: lr_content TYPE REF TO cl_salv_form_element, lr_rows TYPE REF TO cl_salv_form_layout_grid, lr_row TYPE REF TO cl_salv_form_layout_flow, lr_grid_status TYPE REF TO cl_salv_form_layout_grid. DATA: l_row TYPE i VALUE '1'. DATA: l_string TYPE string. CREATE OBJECT lr_rows. lr_content = lr_rows. * 需要输出的文本 l_string = '1234567890abcdefgh1234567890abcdefgh'. * 相当于H (Header) lr_row = lr_rows->add_row( ). lr_row->create_header_information( text = l_string ). lr_row = lr_rows->add_row( ). lr_row = lr_rows->add_row( ). lr_grid_status = lr_row->create_grid( ). * 相当于S(Selection) lr_grid_status->create_label( row = l_row column = 1 text = l_string ). " Key lr_grid_status->create_text( row = l_row column = 2 text = l_string ). " Info lr_grid_status->create_text( row = l_row column = 3 text = l_string ). " Info ADD 1 TO l_row. lr_grid_status->create_label( row = l_row column = 1 text = l_string ). lr_row = lr_rows->add_row( ). lr_row = lr_rows->add_row( ). * 相当于A (Action) lr_row->create_action_information( text = l_string ). cl_salv_form_content=>set( lr_content ). ENDFORM. " F_TOP_OF_PAGE 10月10日 在user command事件中改变alv grid某列的显示模式(checkbox变普通)建一个status命名stu_100,建一个按钮ucomm为CHANGE
*&---------------------------------------------------------------------*
*& Report ZCTEST15 *& *&---------------------------------------------------------------------* *& 在user command事件中改变alv grid某列的显示模式(checkbox变普通) *& by click 2007.10.10 *&---------------------------------------------------------------------* REPORT zctest15 NO STANDARD PAGE HEADING.
TYPE-POOLS slis. DEFINE mac_field. clear iw_fieldcat. iw_fieldcat-col_pos = &1. iw_fieldcat-fieldname = &2. iw_fieldcat-seltext_l = &3. iw_fieldcat-intlen = &4. iw_fieldcat-checkbox = &5. iw_fieldcat-edit = &6. append iw_fieldcat to it_fieldcat. END-OF-DEFINITION. TYPES:
BEGIN OF ty_data, chk TYPE c, para1 TYPE char10, para2 TYPE char10, END OF ty_data. DATA: it_data TYPE TABLE OF ty_data, iw_data TYPE ty_data, it_exclude TYPE ui_functions, iw_exclude TYPE ui_func, iw_layout TYPE slis_layout_alv, it_fieldcat TYPE slis_t_fieldcat_alv, iw_fieldcat TYPE slis_fieldcat_alv. DATA:
w_repid TYPE sy-repid VALUE sy-repid. INITIALIZATION.
mac_field : '1' 'CHK' '选择' '1' 'X' 'X', '2' 'PARA1' '变量1' '10' space space, '3' 'PARA2' '变量2' '10' space space. iw_layout-colwidth_optimize = 'X'. START-OF-SELECTION.
DO 10 TIMES. CLEAR iw_data. iw_data-para1 = sy-index. iw_data-para2 = sy-index * sy-index. APPEND iw_data TO it_data. ENDDO. CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING is_layout = iw_layout it_fieldcat = it_fieldcat i_callback_program = w_repid i_callback_pf_status_set = 'F_STATUS' i_callback_user_command = 'F_UCOMM' TABLES t_outtab = it_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. *&---------------------------------------------------------------------*
*& Form F_STATUS *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f_status USING lit_extab TYPE slis_t_extab. SET PF-STATUS 'STU_100'. ENDFORM. " F_STATUS *&---------------------------------------------------------------------* *& Form F_UCOMM *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f_ucomm USING l_ucomm LIKE sy-ucomm liw_selfield TYPE slis_selfield . CASE l_ucomm. WHEN 'CHANGE'. PERFORM f_change. ENDCASE. ENDFORM. " F_UCOMM *&---------------------------------------------------------------------*
*& Form f_change *&---------------------------------------------------------------------* * text *----------------------------------------------------------------------* FORM f_change . DATA: ref_grid TYPE REF TO cl_gui_alv_grid. DATA: liw_layout TYPE lvc_s_layo, lit_fieldcat TYPE lvc_t_fcat, liw_fieldcat TYPE lvc_s_fcat. * 取得当前alv的grid和fieldcat CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR' IMPORTING e_grid = ref_grid et_fieldcat_lvc = lit_fieldcat. * 更新数据到内表 CALL METHOD ref_grid->check_changed_data. * 更改fieldcat READ TABLE lit_fieldcat INTO liw_fieldcat INDEX 1. liw_fieldcat-checkbox = space. liw_fieldcat-edit = space. MODIFY lit_fieldcat FROM liw_fieldcat INDEX 1. * 重新显示alv
CALL METHOD ref_grid->set_frontend_fieldcatalog EXPORTING it_fieldcatalog = lit_fieldcat. * 以前走的老路,也可以实现,但是复杂了点 ** 隐藏toolbar * liw_layout-no_toolbar = 'X'. ** 重新显示alv * CALL METHOD ref_grid->set_table_for_first_display * EXPORTING * is_layout = liw_layout * CHANGING * it_outtab = it_data * it_fieldcatalog = lit_fieldcat. ENDFORM. " f_change |
|
|