FUNCTION z_html_optimize.
*"----------------------------------------------------------------------
*"*"Локальный интерфейс:
*" IMPORTING
*" REFERENCE(WHOLE_WORDS) TYPE FLAG DEFAULT ' '
*" REFERENCE(LINE_LEN) TYPE INT4 DEFAULT 255
*" CHANGING
*" REFERENCE(CT_TAB) TYPE RSPC_T_TEXT
*"----------------------------------------------------------------------
TYPE-POOLS abap.
DATA:
l_in_len TYPE i,
l_free_len TYPE i,
l_diff TYPE i,
ls_out TYPE solisti1,
lt_out TYPE rspc_t_text.
FIELD-SYMBOLS:
<s_in> LIKE LINE OF ct_tab.
LOOP AT ct_tab ASSIGNING <s_in>.
l_in_len = STRLEN( <s_in>-line ).
l_free_len = line_len - STRLEN( ls_out-line ).
IF l_in_len <= l_free_len.
CONCATENATE ls_out-line <s_in>-line INTO ls_out-line.
CONDENSE ls_out-line.
ELSE.
IF whole_words = abap_true.
IF l_free_len >= l_in_len.
CONCATENATE ls_out-line <s_in>-line INTO ls_out-line.
CONDENSE ls_out-line.
APPEND ls_out TO lt_out.
CLEAR ls_out.
ELSE.
APPEND ls_out TO lt_out.
CLEAR ls_out.
CONCATENATE ls_out-line <s_in>-line INTO ls_out-line.
CONDENSE ls_out-line.
ENDIF.
ELSE.
IF l_free_len > 0.
CONCATENATE ls_out-line <s_in>-line(l_free_len) INTO ls_out-line.
CONDENSE ls_out-line.
ENDIF.
APPEND ls_out TO lt_out.
CLEAR ls_out.
IF l_free_len < 0.
l_free_len = 0.
ENDIF.
l_diff = l_in_len - l_free_len.
IF l_diff > 0.
CONCATENATE ls_out-line <s_in>-line+l_free_len(l_diff) INTO ls_out-line.
CONDENSE ls_out-line.
ENDIF.
ENDIF.
ENDIF.
AT LAST.
IF l_in_len <= l_free_len.
APPEND ls_out TO lt_out.
ELSE.
IF whole_words = abap_true.
APPEND ls_out TO lt_out.
ELSE.
IF l_diff > 0.
APPEND ls_out TO lt_out.
ENDIF.
ENDIF.
ENDIF.
ENDAT.
ENDLOOP.
ct_tab[] = lt_out[].
ENDFUNCTION.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
7 | |
6 | |
5 | |
4 | |
4 | |
4 | |
4 | |
3 | |
2 | |
2 |