zoukankan      html  css  js  c++  java
  • 取物料特性

    定义结构存放特性值:

      DATA: BEGIN OF wa_mchb,
            atnam LIKE cabn-atnam, "特征名称
            atbez LIKE cabnt-atbez, "特征描述
            atwrt LIKE cawn-atwrt, "特性值
      END OF wa_mchb.

      DATA:   it_data LIKE wa_mchb OCCURS WITH HEADER LINE.  ”定义内表存放特性值

    *取物料组特性
      DATA: lt_class      TYPE TABLE OF sclass.        里面放着物料主数据t-cod是MM03里分类下的分配表
      DATA: lt_objectdata TYPE TABLE OF clobjdat.  里面放着物料主数据t-cod是MM03里分类下的物料特性表
      DATA: ls_objectdata TYPE clobjdat.                 物料特性结构
      DATA: lf_object      LIKE ausp-objek.               一个对象的变量:就是把物料编号增加前导零到18位赋给 lf_object

    *定义一个子例程  增加前导零,
      DEFINE  zm_convert_alpha_input2.
        call function 'CONVERSION_EXIT_MATN1_INPUT'
          exporting
            input        &1
          importing
            output       &1
          exceptions
            length_error 1
            others       2.
        if sy-subrc <> 0.
    * Implement suitable error handling here
        endif.

    *    清空工作区和内表准备存放物料特性
          CLEAR: lf_object,ls_objectdata.
          REFRESH: lt_class,lt_objectdata.

    *    调用刚才定义的增加前导零,把物料编号增加前导零到18位赋给 lf_object

    zm_convert_alpha_input2: gs_pd-matnr.

    * 调用该函数取出物料特性值

          CALL FUNCTION 'CLAF_CLASSIFICATION_OF_OBJECTS'
            EXPORTING
              classtype          '001'
              object             lf_object
            TABLES
              t_class            lt_class
              t_objectdata       lt_objectdata
            EXCEPTIONS
              no_classification  1
              no_classtypes      2
              invalid_class_type 3
              OTHERS             4.
          IF sy-subrc <> 0.
          ENDIF.

    *循环内表里把特性值名称、特性值、特性值描述取出来放在自定义的内表it_data里.
          LOOP AT lt_objectdata INTO ls_objectdata.
            it_data-atnam ls_objectdata-atnam.  "特性名称
            it_data-atwrt ls_objectdata-ausp1.  "特性值
            IF it_data-atwrt '?'.
              it_data-atwrt ''.
            ENDIF.
            it_data-atbez ls_objectdata-smbez.  "特征描述

            APPEND it_data.

            CLEAR: ls_objectdata.
          ENDLOOP.

          SORT it_data BY atnam atbez.  "排序批次特性表
          DELETE ADJACENT DUPLICATES FROM it_data COMPARING ALL FIELDS. "删除重复的数据。

    然后就是把特性表里的特性值读出来放在所要显示的内表中,这里的内表是gt_tab。

    注意:我们在取特性值的时候是要传递一些内表中的比如物料这些信息的,所以在取特性值的前提下我们要先loop  那些内表,这里是内表gt_pd,这里我没有做循环。

    提示:

    这边我们在取特性值之前我还可以先转换一下单位

    *    单位转换
          CALL FUNCTION 'CONVERSION_EXIT_CUNIT_OUTPUT'
            EXPORTING
              input    gs_pd-meins
              language '1'
            IMPORTING
              output   gs_pd-meins.

          MODIFY gt_pd FROM gs_pd."
          MOVE-CORRESPONDING gs_pd TO it_data.  

  • 相关阅读:
    批量编译当前目录下4gl文件
    oracle数据库查看表
    Oracle中授权(grant)和同义词(synonym)
    Oracle中的instr()函数 详解及应用
    T100的程序错误提示方法
    六种 主流ETL 工具的比较
    oracle恢复数据到某个时间点
    Oracle统计一个小时内,一天内、一个星期内、一个月内、一年内的数据
    Linux top命令的用法详细详解
    Win10操作系统无法访问局域网共享文件夹的问题
  • 原文地址:https://www.cnblogs.com/caizjian/p/3012685.html
Copyright © 2011-2022 走看看