用户要求长文本每次编辑需要记录时间,编辑人
CALL FUNCTION 'LANGTEXT_ONLY'
EXPORTING
object = gc_tdobject
object_nr = lv_object
spras = '1'
txtid = gc_tdid
x_xaktyp = 'V'
text_history = abap_true
text_property = abap_true
IMPORTING
result = ls_result.
使用该函数如下图:
如果选择多个行项目,要求只弹一次文本编辑框,同时更改多行
"获取第一行的数据
READ TABLE gt_alv INTO gw_alv WITH KEY sel = 'X'.
lv_object = sy-repid && gw_alv-aufnr && gw_alv-kdauf.
lv_tdname = lv_object.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = gc_tdid
language = '1'
name = lv_tdname
object = gc_tdobject
TABLES
lines = it_line2
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
使用该函数弹框编辑文本
CALL FUNCTION 'LANGTEXT_ONLY'
EXPORTING
object = gc_tdobject
object_nr = lv_object
spras = '1'
txtid = gc_tdid
x_xaktyp = 'V'
text_history = abap_true
text_property = abap_true
IMPORTING
result = ls_result.
IF ls_result-function EQ 'U' OR ls_result-function EQ 'I'.
CALL FUNCTION 'POPUP_TO_CONFIRM_STEP'
EXPORTING
titel = 'Save Confirm'
textline1 = 'Save?'
textline2 = ''
cancel_display = space
IMPORTING
answer = lv_answer.
IF lv_answer EQ 'J'.
COMMIT WORK.
*--长文本获取
lv_tdname = lv_object.
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = gc_tdid
language = '1'
name = lv_tdname
object = gc_tdobject
TABLES
lines = it_line
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
IF sy-subrc EQ 0.
"跟第一行的长文本比较,只保存本次编辑的内容
DESCRIBE TABLE it_line2 LINES i_line.
LOOP AT it_line INTO DATA(is_line).
i_line2 = i_line2 + 1.
IF i_line2 <= i_line.
DELETE it_line.
ENDIF.
ENDLOOP.
"如果有多次修改的情况,获取本次修改的内容复制给其它W/O数据
LOOP AT gt_alv INTO gw_alv WHERE sel = 'X'.
lv_tdname = sy-repid && gw_alv-aufnr && gw_alv-kdauf.
IF lv_tdname = lv_object.
CONTINUE."跳过上面保存的那一条
ENDIF.
*--长文本保存
header-tdobject = gc_tdobject.
header-tdname = lv_tdname.
header-tdid = gc_tdid.
header-tdspras = '1'.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client = sy-mandt
header = header
savemode_direct = 'X'
TABLES
lines = it_line
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
IF sy-subrc EQ 0.
CLEAR:header,lv_tdname.
ENDIF.
ENDLOOP.
ELSE.
CALL FUNCTION 'FREE_TEXT_MEMORY'
EXCEPTIONS
not_found = 1
OTHERS = 2.
ENDIF.
ENDIF.
ENDIF.