技术开发 频道

SAP中抓取文本的函数——Read_Text

【IT168 技术文章】

    在SAP系统中,有时候会有大段文本内容需要保存,例如:销售发货(VL03N),在单据的概览中 ,有一个[文本]项,在此处可以填写单据的大段文本描述,那么该内容保存在哪里呢?

    第一反应是找对应表的字段,那么你可能要失望了。在SAP系统中,可以供我们使用的数据库字段最大长度是255个文本字符(注:此处可能不正确),对于很长的文本肯定是不能直接保存到某个表的字段中的(注:至于具体保存在何处,还需要请教)。因此我们要使用系统函数Read_Text来进行读取,以下是该函数的调用方法:

    DATA: il_tline LIKE tline OCCURS 0 WITH HEADER LINE.

            vl_tdname LIKE thead
-tdname.


    CALL FUNCTION
'READ_TEXT'

            EXPORTING

              client                        
= sy-mandt

              id                          
= 'Z001'

              language                    
= '1'

              name                        
= vl_tdname

              object                        
= 'VBBK'
    

    
*       ARCHIVE_HANDLE                = 0

    
*       LOCAL_CAT                     = ' '

    
*     IMPORTING

    
*       HEADER                        =

            TABLES

              lines                        
= il_tline

           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.

    
*     MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

    
*             WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

          ENDIF.

    在上面的示例代码中,红色字体部分是需要输入以及输出的参数,调用这个函数的关键就是在于如何找到各输入参数应该填写的内容,下面就以销售发货/外向交货(VL03N)为例,介绍读取[计划员备注]文本是如何查找对应参数的。
    
    1、  输入TCODE:VL03N,显示一个凭证

    2、  在[概览]的[文本]处,进入修改状态,输入相应的段落文字,双击文本内容。

 

    3、  进入文本内容行编辑器界面,点击菜单[转到]-->[表头]

    

    4、  见下图,上面的四行就是需要输入的参数,其中:

   

    文本名 :’011000218’,为凭证号,对应name参数

    语  言:ZH,但是此处参数类型为C(1),不能直接使用SY-LANGU变量,根据系统配置不同,在我的系统中使用1,对应language参数,

    标  识:Z001,该标识由SAP系统配置而来,对应ID参数

    文本对象:VBBK,对应object参数

    相对于Read_Text函数,有一个Save_Text正好是用来往系统中写文本字段,具体用户和Read_Text基本相似.

0
相关文章