SAP中有很多地方用到了长文本,这些长文本保存在表STXL和STXH里面,STXH保存抬头长文本,STXL保存行项目文本。

我们查询STXL可以知道,长文本的信息不是存储在表里的某个字段,而是存储在文本表里面的多行数据,拼接在一块才是长文本信息.可以通过函数READ_TEXT去读取长文本。

常规长文本的位置:物料主数据、采购申请、采购订单、销售订单、工艺路线、BOM、生产订单等。

SAP自带标准长文本查询程序 RSTXTC3 ,使用SE38可以直接调用查询详细信息。

如何读取SAP中的长文本信息。

方法一 使用 FUNCTION‘READ_TEXT’ 读取长文本的详细信息

 DATA : line  LIKE TABLE OF tline WITH HEADER LINE .

 FIELD-SYMBOLS:<it_lines> LIKE LINE OF line.

 DATA ltext   TYPE string.    "read_text中文描述

      CALL FUNCTION 'READ_TEXT'
        EXPORTING
          language                      = sy-langu  "语言
          id                            = 'GRUN'
          NAME                          = '000000008010485965'
          OBJECT                        = 'MATERIAL'
        TABLES
          lines                         =  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 = 0 and line[] is not INITIAL.

      LOOP AT line ASSIGNING <it_lines>.

           CONCATENATE ltext <it_lines>-tdline  INTO ltext.
           CONDENSE ltext NO-GAPS.

     ENDLOOP.

  ENDIF.

从上面的源代码我们用’read_text’函数来读取长文本比较麻烦,需要定义几个变量,使用函数之后还要自己进行字段拼接,使用起来比较麻烦。

其实系统有给我们提供类方法直接取出文本信息,不过它内核还是read_text,只是给你封装好了。

cl_eso_extraction_tools=>extract_long_text_by_id

cl_esh_if_data_provider_tools=>extract_long_text_by_id

cl_esh_ex_conv_sapscript_text=>extract_long_text_by_id

以上三个封装函数均可实现读取长文本,三个方法的属性均为共有和静态,可直接调用,传入的参数值也一样。

方法二使用已经封装好的静态method实现

data ltext2  TYPE string.   "extract_long_text_by_id中文描述

 CALL METHOD cl_eso_extraction_tools=>extract_long_text_by_id
      EXPORTING
           iv_langu        = sy-langu "语言
           iv_text_id      = 'GRUN'  " 文本标识
           iv_name         =  '000000008010485965' "文本名
           iv_object       =  'MATERIAL'   " 文本对象
         IMPORTING
           ev_search_terms = ltext2.

Comments are closed.

Post Navigation