首页 > 其他分享 >ABAP物料特征值 批次特征值取数

ABAP物料特征值 批次特征值取数

时间:2023-11-23 17:00:11浏览次数:48  
标签:特征值 JOIN lt 取数 ABAP ls lv TYPE allocvalueschar

这里用到两次replace拼接物料和批次之间的空格

    "批次特征值
    SELECT a~matnr,a~charg,b~objek,c~atwrt,e~zcwms FROM @lt_data AS a
           INNER JOIN inob AS b ON b~klart = '023' AND b~obtab = 'MCH1' AND objek = replace( replace( concat( rpad( a~matnr, 40, '*' ), a~charg   ),
                                                                                                     '*', ' + ' ),
                                                                                   '+', ' ' )
           INNER JOIN ausp AS c ON b~cuobj = CAST( c~objek AS NUMC ) AND c~klart = b~klart
           INNER JOIN cabn AS d ON c~atinn = d~atinn AND d~atnam IN ('ZBATCH_CSPC')
           INNER JOIN ksml  AS f ON c~atinn = f~imerk
           INNER JOIN klah  AS g ON f~clint = g~clint AND g~class = 'ZBATCH'
           LEFT  JOIN zmmt031 AS e ON c~atwrt = e~zbin
        WHERE a~emlif IS INITIAL
       INTO TABLE @DATA(lt_ausp1).
    SORT lt_ausp1 BY matnr charg.

*    "物料特征值
*    SELECT DISTINCT
*           a~matnr,
*           d~atnam,  "类型
*           c~atwrt,  "特征值
*           e~atwtb,  "特征值描述
*           g~class
*            FROM @lt_data AS a
*              INNER JOIN ausp  AS c ON c~objek = a~matnr AND datub >= @sy-datum
*              INNER JOIN cabn  AS d ON c~atinn = d~atinn
*              INNER JOIN cawnt AS e ON c~atinn = e~atinn AND lpad( c~atzhl,4,'0' ) = e~atzhl AND spras = '1'
*              INNER JOIN ksml  AS f ON c~atinn = f~imerk
*              INNER JOIN klah  AS g ON f~clint = g~clint
*            WHERE a~emlif IS INITIAL
*           INTO TABLE @DATA(lt_ausp2).
*    SORT lt_ausp2 BY matnr.

 

 

物料特征值因为上面是直接数据库里取数,但是金额字段显示为科学计数法,需要用BAPI转换成数量。也可以直接用下面BAPI取特征值

 

    DATA: lv_objectkey       TYPE bapi1003_key-object,
          lv_classnumnew     TYPE bapi1003_key-classnum,
          lt_return          TYPE STANDARD TABLE OF bapiret2,
          lt_allocvaluesnum  TYPE STANDARD TABLE OF bapi1003_alloc_values_num,    "数值型特性值
          ls_allocvaluesnum  TYPE  bapi1003_alloc_values_num,
          lt_allocvalueschar TYPE STANDARD TABLE OF bapi1003_alloc_values_char,   "字符型特性值
          ls_allocvalueschar TYPE  bapi1003_alloc_values_char,
          lt_allocvaluescurr TYPE STANDARD TABLE OF bapi1003_alloc_values_curr,   "金额型特性值
          ls_allocvaluescurr TYPE  bapi1003_alloc_values_curr,
          lv_num_char        TYPE qsollwertc.

    "特征值
      IF ls_data-matkl(3) = 'A01'.
        lv_classnumnew = 'ZR01_ZZ'.    "纸类
      ELSEIF ( ls_data-matkl(3) = 'A02' OR ls_data-matkl(3) = 'A03' OR ls_data-matkl(3) = 'A04' ).
        lv_classnumnew = 'ZR01_FZZ'.   "非纸类
      ENDIF.
      lv_objectkey = ls_data-matnr.

      CLEAR lt_allocvalueschar.
      CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
        EXPORTING
          objectkey       = lv_objectkey            "物料编码
          objecttable     = 'MARA'
          classnum        = lv_classnumnew          "分类编号
          classtype       = '001'                   "分类的类型
        TABLES
          allocvaluesnum  = lt_allocvaluesnum       "数值型特性值
          allocvalueschar = lt_allocvalueschar      "字符型特性值
          allocvaluescurr = lt_allocvaluescurr      "货币型特性值
          return          = lt_return.              "返回值.

      LOOP AT lt_allocvalueschar INTO ls_allocvalueschar.
        CASE ls_allocvalueschar-charact.
          WHEN 'ZR01_002'.
            ms_out-zr01_002  = ls_allocvalueschar-value_neutral_long.
            ms_out-zr01_002t = ls_allocvalueschar-value_char_long..
          WHEN OTHERS.
        ENDCASE.
      ENDLOOP.
      LOOP AT lt_allocvaluesnum INTO ls_allocvaluesnum.
        CASE ls_allocvaluesnum-charact.
          WHEN 'ZR01_009'. "长度              CLEAR:lv_num_char.
            CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'   "科学计数法转换成char
              EXPORTING
                i_number_of_digits       = 0
                i_fltp_value             = ls_allocvaluesnum-value_from
                i_value_not_initial_flag = 'X'
                i_screen_fieldlength     = 16
              IMPORTING
                e_char_field             = lv_num_char.

            CONDENSE lv_num_char NO-GAPS.
            ms_out-zr01_009 = lv_num_char.
          WHEN OTHERS.
        ENDCASE.
      ENDLOOP.

 

标签:特征值,JOIN,lt,取数,ABAP,ls,lv,TYPE,allocvalueschar
From: https://www.cnblogs.com/yangliu11223/p/17851969.html

相关文章

  • ABAP 辨析CO|CN|CA|NA|CS|NS|CP|NP -分享
     1、文档说明本篇文档将通过举例,解析字符的比较运算符之间的用法和区别,涉及到的操作符:CO|CN|CA|NA|CS|NS|CP|NP2、用法和区别用法总览  以下举例,几乎都使用一个字符变量和一个硬编码字符进行对比的方式,忽略尾部空格,所以需要注意  凡是比较尾部空格的,需要特别注意变......
  • pgsql获取数据所有的表的字段和字段属性
    selectDISTINCTORDINAL_POSITIONasrn,table_nameas"tb_name",column_nameas"en_name",(caseudt_nameWHEN'numeric'THEN'number'WHEN'decimal'THEN'number'WHEN'int4'THEN......
  • DOJ-team-match 7-20210919小学组-取数游戏
    DOJ-team-match7-20210919小学组-取数游戏取数游戏题目传送门首先明确一下贪心策略:两人必然会从大往小取当自己无法得分时,最优策略就是不让对方得分当自己可以得分时,得分所以,最后只需要便利数组,当A或B能得分时便得分,不能得分就不得分,但是不管能否得分都需要将最大的数取......
  • 三种办法遍历对象数组,获取数组对象中所有的属性值(key,value);四种方法查找对象数组里面
    一,获取对象数组中某属性的所有值如果是要获取具体第几个属性的值,倒是可以用arr[i].name的方法来实现。若是全部的属性的值,并返回一个新的数组嘞,思路是加循环遍历方法如下。1、from方法vararr=[{id:1,name:"小明"},{id:2......
  • 浏览器标签页切换获取数据
    refresh(){/*浏览器标签页切换会触发"visibilitychange"事件*/document.addEventListener('visibilitychange',e=>{//切换显示标签if(document.visibilityState==='visible'){this.getTabelData()......
  • Oracle、达梦:获取数据库对象、获取对象的DDL-数据定义语言
    一、获取据库对象(Oracle、达梦)ALL_OBJECTS表数据库所有对象表:包括表、视图、物化视图、函数……等--查询所有对象SELECT*fromALL_OBJECTS--筛选条件-OWENR:哪个数据库。-OBJECT_TYPE类型:SELECTOBJECT_NAME,OBJECT_TYPEfromALL_OBJECTSWHEREOWNER='M......
  • 利用 ALV 实现增删改查系列之四:如何捕捉 SAP ABAP ALV 报表行项目删除时抛出的事件试
    这个教程ALV系列的前三篇文章如下:69.利用ALV实现增删改查系列之一:让ALV报表进入可编辑状态70.利用ALV实现增删改查系列之二:仅让ALV报表某一列允许被编辑72.利用ALV实现增删改查系列之三:如何给SAPABAPALV报表的修改功能添加自定义校验逻辑笔者的知......
  • 使用 ABAP + OLE 消费 Windows DLL 文件里的代码和服务
    在SAPABAP中,我们可以使用OLE(ObjectLinkingandEmbedding)技术来实现对WindowsDLL文件的代码和服务的消费。以下是一个详细的解决方案:首先,我们需要明确OLE技术在ABAP中的应用。OLE是由微软开发的一种技术,它允许对象(即应用程序功能)被嵌入到其他应用程序中。在ABA......
  • 关于 SAP ABAP OLE 技术和一些局限性介绍
    OLE(ObjectLinkingandEmbedding)是一种用于在不同应用程序之间共享信息和功能的技术。它允许在一个应用程序中嵌入另一个应用程序的内容或链接到其内容。这种技术最初由微软开发,旨在促进不同软件之间的交互和数据共享。在SAPABAP开发中,OLE技术允许在SAP应用程序中集成和与其他......
  • SAP 行业向云端转型,给传统的 On-Premise 系统的 ABAP Basis 带来的机遇和挑战
    对于SAPOn-Premise系统的ABAPBasis从业人员来说,SAP行业的云端转型无疑带来了一定的冲击和挑战。这主要体现在以下几个方面:首先,Cloud云端的SAP系统的维护和管理与On-Premise的SAP系统不同。在Cloud环境中,很多基础设施和服务都是由云服务提供商来提供和管理的。例......