1.发生原因
2.解决思路
- 自开发程序需要判断切割后的行末尾是否为空格,是则在下一行开头增加一个空格(注:TDLINE切割长度不能用132,否则下一行无法存入空格)
- mm02标准程序需要增强Function Module:CONVERT_STREAM_TO_ITF_TEXT
3.增强
- 在源代码末尾处增加自定义文本处理逻辑
- 新增插入增强,限制Tcode:mm02 mm03缩小增强代码的影响范围
*{ INSERT ZBDK904950 1
IF sy-tcode = 'MM01' OR sy-tcode = 'MM02' OR sy-tcode = 'MM03'.
TYPES: BEGIN OF ty_string,
char_120 TYPE char120,
END OF ty_string.
DATA: lv_string TYPE string,
lt_string TYPE TABLE OF ty_string,
wa_string TYPE ty_string,
wa_string1 TYPE ty_string,
lv_length TYPE I,
lv_tabix TYPE sy-tabix,
wa_stream TYPE TDLINE.
CLEAR: itf_text,itf_text[],lv_string,lv_length,lt_string.
LOOP AT text_stream.
lv_tabix = sy-tabix.
IF lv_tabix - 1 > 0.
READ TABLE text_stream INDEX ( lv_tabix - 1 ) INTO wa_stream.
IF STRLEN( wa_stream ) = 69.
CONCATENATE lv_string text_stream INTO lv_string SEPARATED BY space.
ELSE.
CONCATENATE lv_string text_stream INTO lv_string.
ENDIF.
ELSE.
CONCATENATE lv_string text_stream INTO lv_string.
ENDIF.
sy-tabix = lv_tabix.
ENDLOOP.
CLEAR: lv_tabix,wa_stream.
REPLACE ALL OCCURRENCES OF cl_abap_char_utilities=>cr_lf in lv_string WITH ''.
CALL FUNCTION 'SCMS_STRING_TO_FTEXT'
EXPORTING
TEXT = lv_string
IMPORTING
length = lv_length
TABLES
ftext_tab = lt_string.
LOOP AT lt_string INTO wa_string.
CLEAR: ITF_TEXT.
ITF_TEXT-TDFORMAT = '*'.
lv_tabix = sy-tabix.
IF lv_tabix - 1 > 0.
READ TABLE lt_string INDEX ( lv_tabix - 1 ) INTO wa_string1.
IF STRLEN( wa_string1 ) < 120.
ITF_TEXT-TDLINE = | { wa_string-char_120 }|.
ELSE.
ITF_TEXT-TDLINE = wa_string-char_120.
ENDIF.
ELSE.
ITF_TEXT-TDLINE = wa_string-char_120.
ENDIF.
sy-tabix = lv_tabix.
APPEND ITF_TEXT.
ENDLOOP.
ENDIF.
*} INSERT