1 Introduction
In the passage We will introduce that how to save in the long text . We will use FM ‘SAVE_TEXT’ .
2 Code
LOOP AT IT_STPOX WHERE IDNRK = GS_ALV-IDNRK AND POSNR = GS_ALV-POSNR AND STLAL = GS_ALV-STLAL.
UPDATE STPO SET LTXSP = '1' WHERE STLTY = IT_STPOX-STLTY AND STLNR = IT_STPOX-STLNR AND STLKN = IT_STPOX-STLKN AND STPOZ = IT_STPOX-STPOZ.
CONCATENATE IT_STPOX-STLTY IT_STPOX-STLNR IT_STPOX-STLKN IT_STPOX-STPOZ INTO GV_NAME1.
DATA: U_NAME TYPE TDOBNAME,
U_TDID TYPE TDID,
U_TDOBJECT TYPE TDOBJECT,
U_SPLIT TYPE STRING.
DATA LV_NUM TYPE I.
data lv_mod type i.
CLEAR:GS_THEAD,GS_LINES,LV_NUM,LV_MOD.
REFRESH GT_LINES.
GS_THEAD-MANDT = SY-MANDT .
GS_THEAD-TDOBJECT = 'BOM'. "文本对象
GS_THEAD-TDNAME = SY-MANDT && GV_NAME1.
GS_THEAD-TDID ='MPO'. "文本ID
GS_THEAD-TDSPRAS = SY-LANGU."语言
CLEAR:lv_mod,LV_NUM.
LV_NUM = LV_LEN DIV 40.
lv_mod = lv_len mod 40.
LV_NUM = LV_NUM + 1.
DO LV_NUM TIMES.
IF SY-INDEX EQ 1.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+0(40).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX EQ 2.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+40(40).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX EQ 3.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+80(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+80(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 4.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+120(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+120(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 5.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+160(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+160(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 6.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+200(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+200(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 7.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+240(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+240(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 8.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+280(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+280(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 9.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+320(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+320(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 10.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+360(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+360(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 11.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+400(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+400(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 12.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+440(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+440(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 13.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+480(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+480(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 14.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+520(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+520(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 15.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+560(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+560(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 16.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+600(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+600(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 17.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+640(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+640(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 18.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+680(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+680(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 19.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+720(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+720(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 20.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+760(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+760(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 21.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+800(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+800(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 22.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+840(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+840(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 23.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+880(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+880(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 24.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+920(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+920(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 25.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+960(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+960(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 26.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1000(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1000(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 27.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1040(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1040(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 28.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1080(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1080(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 29.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1120(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1120(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 30.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1160(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1160(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 31.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1200(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1200(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 32.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1240(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1240(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 33.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1280(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1280(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 34.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1320(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1320(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 35.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1360(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1360(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 36.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1400(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1400(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ELSEIF SY-INDEX EQ 37.
IF SY-INDEX EQ LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1440(LV_MOD).
APPEND GS_LINES TO GT_LINES.
ELSEIF SY-INDEX LT LV_NUM.
GS_LINES-TDFORMAT = '*'.
GS_LINES-TDLINE = GS_ALV-POTX1+1440(40).
APPEND GS_LINES TO GT_LINES.
ENDIF.
ENDIF.
ENDDO.
CALL FUNCTION 'SAVE_TEXT'
EXPORTING
CLIENT = SY-MANDT
HEADER = GS_THEAD
INSERT = 'X'
SAVEMODE_DIRECT = 'X'
TABLES
LINES = GT_LINES[]
EXCEPTIONS
ID = 1
LANGUAGE = 2
NAME = 3
OBJECT = 4
OTHERS = 5.
IF SY-SUBRC <> 0.
ROLLBACK WORK .
GS_ALV-MESSAGE = text-058.
GS_ALV-LED = ICON_LED_YELLOW.
ELSE.
COMMIT WORK AND WAIT .
ENDIF.
IF SY-SUBRC = 0.
COMMIT WORK AND WAIT .
ENDIF.
FREE GT_LINES[].
ENDLOOP.
3 Summary
We save long-txt data in the STXL . And the format is Hexadecimal . And
we read the data use FM ‘READ_TEXT’ .