SAP 中SO,PO等都有许多的文本可以编辑,文本的内容并不是存储在VBAK,VBAP等表中,而且是在STXH,STXL两个簇表中,他们的读取和修改要使用IMPORT/EXPORT DATASET的方式,也可以使用标准的function。
首先定义文本类型( SE75 )。
CALL FUNCTION 'READ_TEXT'
EXPORTING
client = sy-mandt
id = 'H006'
language = sy-langu
name = textname
object = 'VBBK'
TABLES
lines = lt_read
EXCEPTIONS
id = 1
language = 2
name = 3
not_found = 4
object = 5
reference_check = 6
wrong_access_to_archive = 7
OTHERS = 8.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
client = sy-mandt
header = ls_head
savemode_direct = 'X'
TABLES
lines = lt_read
EXCEPTIONS
id = 1
language = 2
name = 3
object = 4
OTHERS = 5.
另外标准的BAPI也可以支持修改长文本。
控制参数在*_text的table参数里面。
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
* SALESDOCUMENTIN = P_new
order_header_in = order_header_in1
IMPORTING
salesdocument = salesdocument1
TABLES
return = return_so_error
order_items_in = order_items_in1
order_items_inx = order_items_in1x
order_partners = order_partners1
order_schedules_in = order_schedules_in1
* ORDER_SCHEDULES_INX = ORDER_SCHEDULES_IN1X
order_conditions_in = order_conditions_in1
order_conditions_inx = order_conditions_inx
order_text = order_text1
* ORDER_KEYS =
extensionin = order_extension1
header的长文本
LOOP AT it_text1.
order_text1-text_id = 'I001'.
order_text1-itm_number = space.
order_text1-langu = sy-langu.
order_text1-format_col = '*'.
order_text1-text_line = it_text1-text_line.
APPEND order_text1.
CLEAR order_text1.
ENDLOOP.
item的长文本:
LOOP AT it_text1.
order_text1-text_id = 'Z022'.
order_text1-itm_number = p_posnr.
order_text1-langu = sy-langu.
order_text1-format_col = '*'.
order_text1-text_line = it_text1-text_line.
APPEND order_text1.
CLEAR order_text1.
ENDLOOP.