SAP BOM长文本存表

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’ .

  • 18
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值