设为首页 收藏本站
查看: 850|回复: 0

[经验分享] SAP ABAP中读取项目文本的方法

[复制链接]

尚未签到

发表于 2015-9-18 08:48:28 | 显示全部楼层 |阅读模式
SAP ABAP中读取项目文本的方法
  首先,SAP中所有的项目文本都存在两张数据表中
STXH 抬头项目文本 透明表
STXL 明细项目文本 透明表
在STXH和STXL中可以找到需要的文本对象。
然后通过Read_Text函数来读取文本内容。
以读取Billing抬头文本为例。
1,先配置Billing抬头,建一个项目文本,ID:F001。
2,然后建立一张Billing,取得Billing号码,Billing抬头数据在VBRK数据表中。
3,建立一个Demo程序读取抬头项目文本。
REPORT ZZXLTEST005 .
TABLES: VBRK.
DATA: TEXTNAME(70) TYPE C.
DATA: T_READ LIKE TABLE OF TLINE WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK BLOC1 WITH FRAME TITLE TEXT-001.
  PARAMETERS: PVBELN LIKE VBRK-VBELN.
SELECTION-SCREEN END OF BLOCK BLOC1.
START-OF-SELECTION.
TEXTNAME = PVBELN.
*VBBK是从STXH中找到的。
PERFORM FRM_READ_TEXT USING 'F001' TEXTNAME 'VBBK'.
    IF SY-SUBRC = 0.
      READ TABLE T_READ INDEX 1.
      WRITE T_READ-TDLINE.
    ENDIF.
END-OF-SELECTION.
FORM FRM_READ_TEXT USING FID TEXTN OBJN.
  CALL FUNCTION 'READ_TEXT'
       EXPORTING
            ID                      = FID
            LANGUAGE                = SY-LANGU
            NAME                    = TEXTN
            OBJECT                  = OBJN
       TABLES
            LINES                   = T_READ
       EXCEPTIONS
            ID                      = 1
            LANGUAGE                = 2
            NAME                    = 3
            NOT_FOUND               = 4
            OBJECT                  = 5
            REFERENCE_CHECK         = 6
            WRONG_ACCESS_TO_ARCHIVE = 7
            OTHERS                  = 8.
ENDFORM.
  
  除此READ_TEXT之外,还有:
  READ_TEXT_INLINE
  主要是找到他的:OBJECTNAME, TEXT OBJECT, TEXT ID
  http://www.itpub.net/thread-811046-1-1.html
SAP长文本的读取和创建
  http://scnblogs.techweb.com.cn/winson/archives/78.html
  在SAP系统里面很多地方都用到了长文本,这些长文本的值以其他字符的形式存在表STXL和STXH里面,不能直接去这两个表里面去取值,而是要通过函数READ_TEXT去取,很多新手不了解的地方可能就是怎么取到READ_TEXT函数里面的那些参数值,我这边介绍两种方法,通过这两种方法都可以找到那几个参数:
  一、第一种利用跟踪查询,不是用ST05跟踪,而是去表里面跟踪查询,比如你刚刚创建了一个销售订单的长文本,这时候你可以去表STXH输入日期和刚刚的时间,然后查看在这个表里刚刚产生的这些数据,依据此项就可以找到对应的参数了,这个方法非常实用
  二、第二种前台查看,进入长文本编辑界面以后(记得是双击长文本编辑器进入),点击菜单转到—->表头,里面出现的就是对应的那些参数值,如下图:


  如果是要用ABAP代码创建文本用函数CREATE_TEXT,修改文本用SAVE_TEXT
  贴上用过的几个代码:
  创建抬头文本
call function ‘CREATE_TEXT’
    exporting
      fid       = ‘0001′
      flanguage = ‘1′
      fname     = s_deliv_numb
      fobject   = ‘VBBK’
    tables
      flines    = it_texts.
  refresh it_texts.
  创建行项目文本
call function ‘CREATE_TEXT’
      exporting
        fid       = wa_thead-tdid
        flanguage = ‘1′
        fname     = wa_thead-tdname
        fobject   = ‘VBBP’
      tables
        flines    = it_texts.
读取抬头文本
      call function ‘READ_TEXT’
        exporting
*         CLIENT                        = SY-MANDT
          id                            = ‘0001′
          language                      = ‘1′
          name                          = name
          object                        = ‘VBBK’
        tables
          lines                         = lines[]
                .
  参数的值如果是抬头文本可以到表STXH查看,如果是项目文本可以到STXL查看
  读取行项目文本
call function ‘READ_TEXT’
        exporting
*         CLIENT                        = SY-MANDT
          id                            = ‘0001′
          language                      = ‘1′
          name                          = name
          object                        = ‘VBBP’
        tables
          lines                         = lines[]
CALL FUNCTION ‘SAVE_TEXT’
          EXPORTING
           CLIENT                = SY-MANDT
            HEADER                = HEADER
            SAVEMODE_DIRECT      = ‘X’
          TABLES
            LINES                 = LINES
                  .
  
  
  http://blog.sina.com.cn/s/blog_53b2e1f70100znfn.html
  
  用途:常常会用到类似于说明或者备注这样的信息,这些信息就是长文本信息。long text.
  查看:比如销售订单中(SO) 的表单头和表单行项目都可以进行长文本的备注。查看途径: VA02-->输入订单号-->goto--->header--->texts-->show detail (一个放大镜的图标)-->goto --->header.到texts这一步就可以看到备注信息,在最后一步可以看到备注的头信息。Item的备注页可以通过类似的途径来查看,不再赘述。
  
  那么这些长文本信息存在什么地方呢?通过对表的查看,发现SO对应的表VBAP,VBAK,不管是header信息还是Item信息里面都没有存储相关的数据。事实上,SAP系统把所有的长文本信息都存在了STXH 和 STXL 这两张表里面。
  STXH :STXD SAPscript text file header,长文本的头数据
  STXL :STXD SAPscript text file lines,长文本的明细数据。是一张簇表。
  
  通过上面的信息查看,我们在表里面也可以找到数据的数据库存储信息。
  
  对于STXH ,我们可以发现他的关键字有:
  TDOBJECT 对象 很多情况下市表名,但不全是。
TDNAME   名称很多情况下是表单编号&明细号
TDID   ID  这个就是ID,
TDSPRAS 语言。
  而这些信息都可以在查看的时候看到。
  也就是说通过这些信息我们就可以定位到我们所需要的长文本信息。
  
  那在程序中,我们怎么来取这些数呢?直接取么?我们可以看到 STXL-CLUSTD是类似乱码的东西。怎么成这样的,不清楚,簇表的长字段都是这个鸟样子。那如果我们来解析,完了。
  在程序中,对于长字段,可能的操作大多数是读取。
  在这个时候我们就用: FUNCTION: READ_TEXT。
  CALL FUNCTION 'READ_TEXT'
  EXPORTING
   CLIENT                        = SY-MANDT
    id                            = ID
    language                      = LANGU
    name                          = NAME
    object                        = OBJECT
*   ARCHIVE_HANDLE                = 0
*   LOCAL_CAT                     = ' '
*  IMPORTING
*   HEADER                        = HEADER
  tables
    lines                         = LINES
EXCEPTIONS
   ID                            = 1
   LANGUAGE                      = 2
   NAME                          = 3
   NOT_FOUND                     = 4
   OBJECT                        = 5
   REFERENCE_CHECK               = 6
   WRONG_ACCESS_TO_ARCHIVE       = 7
   OTHERS                        = 8
         .
  
  上面的几个传入的参数都是上面讲过的。
  对于传出参数:
  LINES则是以一个内表的形式保存了long text,每行数据最多存72个字符。也就是说长文本中的数据被以72个一段的形式分割成了很多段,保存在内标中。这样不管长文本再长,我们都可以顺利地读取出来。并进行处理。
  对于长文本的修改和删除,还有其他的功能模块与之对应。
  SAVE_TEXT
  DELETE_TEXT
  这在用法上就大同小异了。在此不多赘述。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-115174-1-1.html 上篇帖子: SAP FICO 下篇帖子: ABAP:SAP报表性能的优化
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表