zoukankan      html  css  js  c++  java
  • [代码]读取物料BOM行项目长文本[READ_TEXT]

    1, READ_TEXT参数填写

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

    SE37:

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

    ID: 固定值 ‘MPO’

    OBJECT:固定值 ‘BOM’

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

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

    先在MAST中找到物料BOM号,

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

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

    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, 测试结果

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

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

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

    0020行也有如下长文本,

    0030行没有长文本,

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

    以上。

  • 相关阅读:
    php yield
    原来 php 中的 json_encode() 只支持utf-8.不支持gbk啊
    mongodb 二进制安装
    Centos 6.3 安装教程
    php 测试 程序执行时间,内存使用情况
    workerman vmstat服务器状态监控服务
    php大量数据 10M数据从查询到下载 【内存溢出,查询过慢】解决方案
    PHP_EOL DIRECTORY_SEPARATOR
    利用curl 模拟多线程
    Laravel 输出最后一条sql
  • 原文地址:https://www.cnblogs.com/datie/p/11433872.html
Copyright © 2011-2022 走看看