[代码]读取物料BOM行项目长文本[READ_TEXT]

1, READ_TEXT参数填写

可以通过函数READ_TEXT读取物料BOM行项目和抬头上的长文本。本文着重介绍如何读取物料BOM行项目上的长文本。

SE37:

<img class="alignnone size-full wp-image-4901" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNS01Ni01MC5wbmc=.jpg" width="727" height="344" />

读取物料BOM行项目长文本时,函数READ_TEXT的参数如下:

ID: 固定值 ‘MPO’

OBJECT:固定值 ‘BOM’

NAME:客户端号(3位)+ BOM 类别(1位)+BOM号(8位)+BOM 项目节点号(8位)+内部计数器(8位)

name中的BOM相关数据保存在表STPO(BOM行项目表),MAST(物料BOM表)中

先在MAST中找到物料BOM号,

<img class="alignnone size-full wp-image-4905" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0xMS0zOS0xLnBuZw==.jpg" width="705" height="160" />

然后通过BOM号STLNR就能到STPO中找到NAME参数中用到的BOM数据了,

<img class="alignnone size-full wp-image-4904" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0xMy0xOS5wbmc=.jpg" width="660" height="195" />

这个行项目的长文本信息是保存在表STXH中,如下,READ_TEXT对应的参数其实就是根据这个表中的内容填写的。

<img class="alignnone size-full wp-image-4902" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0wOC0yOC5wbmc=.jpg" width="501" height="222" />

2, 例子代码

完整的例子代码如下:

代码中没有直接从STPO,MAST读取BOM数据,而是通过函数 CS_BOM_EXPL_MAT_V2进行物料BOM展开。

REPORT ztest_read_longtxt_mbom.

DATA:git_stb TYPE STANDARD TABLE OF stpox,
     gwa_stb TYPE stpox.
DATA:git_line TYPE STANDARD TABLE OF tline WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b_kopvor
                 WITH FRAME TITLE text-001.
PARAMETERS: p_matnr1 LIKE mast-matnr MEMORY ID mat,
            p_werks1 LIKE mast-werks OBLIGATORY MEMORY ID wrk, "plant
            p_stlan1 LIKE mast-stlan DEFAULT ‘1‘ MODIF ID mod. "BOM Usage
SELECTION-SCREEN END OF BLOCK b_kopvor.

* 物料BOM展开
CALL FUNCTION ‘CS_BOM_EXPL_MAT_V2‘
  EXPORTING
    mtnrv                 = p_matnr1
    werks                 = p_werks1
    stlan                 = p_stlan1
    datuv                 = sy-datum
    ehndl                 = ‘1‘
    mmory                 = ‘1‘
    capid                 = ‘PP01‘
    aufsw                 = ‘ ‘
    mbwls                 = ‘ ‘
    mehrs                 = ‘ ‘
  TABLES
    stb                   = git_stb
  EXCEPTIONS
    alt_not_found         = 1
    call_invalid          = 2
    material_not_found    = 3
    missing_authorization = 4
    no_bom_found          = 5
    no_plant_data         = 6
    no_suitable_bom_found = 7.

LOOP AT git_stb INTO gwa_stb.
  PERFORM frm_read_text TABLES git_line
                         USING gwa_stb-stlnr "Bill of material
                               gwa_stb-stlkn "BOM item node number
                               gwa_stb-stpoz "Internal counter
                               gwa_stb-stlty."BOM category

ENDLOOP.
LOOP AT git_line.
  WRITE:/ git_line-tdformat, git_line-tdline.
ENDLOOP.

*&---------------------------------------------------------------------*
*&      Form  FRM_READ_TEXT
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*      -->P_GIT_LINE  text
*      -->P_GWA_STB_STLNR  text
*      -->P_GWA_STB_STLKN  text
*      -->P_GWA_STB_STPOZ  text
*      -->P_GWA_STB_STLTY  text
*----------------------------------------------------------------------*
FORM frm_read_text  TABLES   it_line STRUCTURE tline
                    USING    i_stlnr
                             i_stlkn
                             i_stpoz
                             i_stlty.

  DATA:lwa_line TYPE csltx_line.
  DATA:lit_tline      TYPE STANDARD TABLE OF tline,
       lwa_tline      TYPE tline,
       lwa_textheader TYPE thead.
  DATA: BEGIN OF lwa_htext,
          tdobject LIKE thead-tdobject,
          tdname   LIKE thead-tdname,
          tdid     LIKE thead-tdid,
          tdspras  LIKE thead-tdspras.
  DATA: END OF lwa_htext.

* Fill textheader
  CLEAR lwa_htext.
  lwa_htext-tdid         = ‘MPO‘.
  lwa_htext-tdspras      = sy-langu.
  lwa_htext-tdobject     = ‘BOM‘.
  lwa_htext-tdname(3)    = sy-mandt.
  lwa_htext-tdname+3(1)  = i_stlty. "BOM category
  lwa_htext-tdname+4(8)  = i_stlnr. "Bill of material
  lwa_htext-tdname+12(8) = i_stlkn. "BOM item node number
  lwa_htext-tdname+20(8) = i_stpoz. "Internal counter

* read longtext into table textlines
  CALL FUNCTION ‘READ_TEXT‘
    EXPORTING
      id       = lwa_htext-tdid
      language = lwa_htext-tdspras
      name     = lwa_htext-tdname
      object   = lwa_htext-tdobject
    IMPORTING
      header   = lwa_textheader
    TABLES
      lines    = lit_tline
    EXCEPTIONS
      OTHERS   = 1.

  APPEND LINES OF lit_tline TO it_line.

ENDFORM.

3, 测试结果

输入选择条件,点击运行,

<img class="alignnone size-full wp-image-4906" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0yMC0xMS5wbmc=.jpg" width="509" height="232" />

将物料BOM每个行项目上的长文本write出来,

<img class="alignnone size-full wp-image-4907" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0yMC01NS5wbmc=.jpg" width="326" height="246" />

前台CS03查看一下物料BOM 0010行项目上的长文本,

<img class="alignnone size-full wp-image-4908" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0yMi00Ny5wbmc=.jpg" width="589" height="457" />

<img class="alignnone size-full wp-image-4909" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0yNi0yMy5wbmc=.jpg" width="491" height="213" />

0020行也有如下长文本,

<img class="alignnone size-full wp-image-4910" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0yNi0yMy0xLnBuZw==.jpg" width="491" height="213" />

0030行没有长文本,

<img class="alignnone size-full wp-image-4911" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJhaWR1c2FwLmNvbS93cC1jb250ZW50L3VwbG9hZHMvMjAxNy0wNy0wNF8xNi0yOS0zMi5wbmc=.jpg" width="672" height="505" />

由此可以看到程序输出的长文本正确。

以上。

原文地址:https://www.cnblogs.com/datie/p/11433872.html

时间: 2024-08-25 11:03:53

[代码]读取物料BOM行项目长文本[READ_TEXT]的相关文章

用ME_CONFIRMATION_UPDATE处理采购订单行项目确认视图

用function module: ME_CONFIRMATION_UPDATE ,可以处理采购订单行项目确认视图,实现增删改操作. CALL FUNCTION 'ME_CONFIRMATION_UPDATE' EXPORTING I_EBELN =    " 采购订单号 TABLES XEKES   =    "对应新增和修改 YEKES   =    "对应删除 因为没有找到读取采购订单行项目确认视图的函数,所以自己写了一个: CALL FUNCTION 'ZPP142_

项目复习期总结3:CSS引入方式,注释,命名规范,背景,行高,文本属性

目录: 1.CSS注释的书写 怎么写?好处? 2.CSS引入方式  各种的优缺点 3.选择器的写法与选择器的优先级 4.CSS命名规范 5.背景,行高 6.文本(text与font开头)等所有属性 ① CSS注释书写规范: 1.单行注释:    直接写在属性值的后面,如: ① .search{ border:1pxsolid#fff;/*定义搜索输入框边框*/ background:url(../images/icon.gif)no-report#333;/*定义搜索框的背景*/ } ② .wr

使用函数BAPISDORDER_GETDETAILEDLIST读取S/4HANA中Sales Order行项目数据

事务码MM03查看物料主数据,如下图所示的行项目数据,包含物料ID,描述信息,数量,单价等等: 使用如下代码进行行项目读取: DATA: ls_read TYPE order_view, lt_item TYPE TABLE OF bapisdit, lt_header TYPE table of sales_key. APPEND INITIAL LINE TO lt_header ASSIGNING FIELD-SYMBOL(<header>). " 代表读取行项目 ls_rea

从把3000行代码重构成15行代码谈起

如果你认为这是一个标题党,那么我真诚的恳请你耐心的把文章的第一部分读完,然后再下结论.如果你认为能够戳中您的G点,那么请随手点个赞. 把三千行代码重构为15行 那年我刚毕业,进了现在这个公司.公司是搞数据中心环境监控的,里面充斥着嵌入式.精密空调.总线.RFID的概念,我一个都不懂.还好,公司之前用Delphi写的老客户端因为太慢,然后就搞了个Webform的替代,恰好我对Asp.Net还算了解,我对业务的不了解并不妨碍我称成为这个公司的一个程序员.小公司也有小公司的好,人少,进去很快负责代码开

从把三千行代码重构成15行代码谈起[转]

从把三千行代码重构成15行代码谈起 如果你认为这是一个标题党,那么我真诚的恳请你耐心的把文章的第一部分读完,然后再下结论.如果你认为能够戳中您的G点,那么请随手点个赞. 把三千行代码重构为15行 那年我刚毕业,进了现在这个公司.公司是搞数据中心环境监控的,里面充斥着嵌入式.精密空调.总线.RFID的概念,我一个都不懂.还好,公司之前用Delphi写的老客户端因为太慢,然后就搞了个Webform的替代,恰好我对Asp.Net还算了解,我对业务的不了解并不妨碍我称成为这个公司的一个程序员.小公司也有

OAF 中对文字实现html效果及对超级长文本实现默认换行

今天遇到一个需求,客户注册页面客户化了一个超级长的注册须知,内容很多.但是样式相对又要做起来好看点. 注册须知的内容使用多个message拼接而成. 老大说rawText支持html样式,于是我想到了三种解决方案: 1.在messageCompaonentLayout里面放messageTextInput,再将其disabled掉,messageCompaonentLayout设置宽度为80%. 2.在messageCompaonentLayout里面放messageStyledText,mes

ABAP程序中关于长文本的处理方法

现象描述 长文本在SAP的运用主要体现在一些notes的记录,或者一些比较长的文本的存取,比如工作流的审批意见,采购申请和采购订单的附加说明等等.如下图: 处理过程 1:SAP中所有的长文本都存在两张表中: STXH 长文本的抬头信息 STXL 长文本的明细信息 但是长文本在使用前,需要先进行配置,如果不配置是不可能往表STXH和STXL中写入文本值的.配置在视图V_TTXIDI和视图V_TTXOBI中进行. SE16维护视图V_TTXOBI SE16维护视图V_TTXIDI 2:在上图中,找到

2016.4.26_longtext长文本【ABAP】

写了一个alv,其中一个字段是长文本,点进去这个字段是长文本界面,输入长文本后保存可将输入内容保存在数据库表中. 用来保存长文本的自建表结构: 数据: 选择屏幕(数据都是随便找的): alv界面(屏幕9000): 点击longtext图标进入的长文本界面(屏幕9001): 主程序代码: REPORT YLONGTEXT NO STANDARD PAGE HEADING. ***************************************************************

物料BOM和生产订单BOM的区别

物料BOM和生产订单BOM的区别[@[email protected]] 一般企业生产部在SAP创建生产订单的时候,就会产生一个生产订单BOM,这里的生产订单BOM是读取的物料BOM. 由于其它原因,需要修改成品的某几个零部件,在创建订单的时候,就可以修改订单BOM,物料BOM不会受任何的影响. 其实在生产订单的BOM读取完物料BOM之后就与物料BOM没有任何的关系了,下达订单之后,物料BOM订单BOM已经没有任何联系了,所以生产过程当中的物料消耗都与订单BOM有关系了.