最近有个需求就是通过程序保存对应的长文本,其实使用起来跟READ_TEXT类似,程序已封装好两个FORM如下
一个是把对应需要保存的长文本封装成TLINE
FORM FRM_SET_LONGTEXT TABLES PT_TLINE STRUCTURE TLINE
USING PV_LONGTEXT.
DATA:LV_LINE TYPE I,
LV_TIME TYPE I,
LV_DECIMAL TYPE P LENGTH 16 DECIMALS 3,
LV_STR TYPE STRING,
LV_BEGIN TYPE I,
LV_END TYPE I,
LS_TLINE TYPE TLINE.
LV_LINE = STRLEN( PV_LONGTEXT ).
LV_DECIMAL = LV_LINE / 132.
LV_STR = LV_DECIMAL. CONDENSE LV_STR NO-GAPS.
SPLIT LV_STR AT '.' INTO DATA(LV_T1) DATA(LV_T2).
LV_TIME = LV_T1 + 1.
LV_BEGIN = 0.
IF LV_LINE < 132.
LV_END = LV_LINE.
ELSE.
LV_END = 132.
ENDIF.
DO LV_TIME TIMES.
LS_TLINE-TDLINE = PV_LONGTEXT+LV_BEGIN(LV_END).
APPEND LS_TLINE TO PT_TLINE.
LV_BEGIN += 132.
LV_END = LV_LINE - LV_BEGIN.
IF LV_END > 132.
LV_END = 132.
ENDIF.
ENDDO.
ENDFORM.
第二个就是保存对应的长文本
FORM FRM_CREATE_LONGTEXT TABLES PT_TLINE STRUCTURE TLINE
USING PV_FID TYPE THEAD-TDID
PV_NAME TYPE THEAD-TDNAME
PV_FOBJECT TYPE THEAD-TDOBJECT
CHANGING PV_MSG.
CALL FUNCTION 'CREATE_TEXT'
EXPORTING
FID = PV_FID "TEXT ID
FLANGUAGE = SY-LANGU "语言代码
FNAME = PV_NAME "文本名称
FOBJECT = PV_FOBJECT "文本对象
TABLES
FLINES = PT_TLINE
EXCEPTIONS
NO_INIT = 1
NO_SAVE = 2
OTHERS = 3.
IF SY-SUBRC NE 0.
MESSAGE ID SY-MSGID TYPE ZIF_BC_CONSTANTS=>GC_S NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4 INTO PV_MSG.
ENDIF.
ENDFORM.
代码基本上能直接使用