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: lf_objek TYPE  objnum,
            lf_obtab TYPE  tabelle,
            lf_klart TYPE  klassenart,      "就是T-COD是MM03下面的批次分类下的对象下的类别种类
            lf_class TYPE  klasse_d,        "就是T-COD是MM03下面的批次分类下的分配表里的类别
            tmp_str TYPE string.
      DATA: lt_char TYPE TABLE OF bapi1003_alloc_values_char,
            lt_num TYPE TABLE OF bapi1003_alloc_values_num,
            lt_curr TYPE TABLE OF bapi1003_alloc_values_curr,
            lt_return TYPE TABLE OF bapiret2,
            ls_char TYPE bapi1003_alloc_values_char,
            ls_num TYPE bapi1003_alloc_values_num.

      REFRESH: it_data.

      DATA: tmp_str1 TYPE cha_class_view-sollwert,
         tmp_i   TYPE cha_class_data-sollwert.

    *     取批次特性先清空这些存放数据的变量和内表及结构
          CLEAR: lf_objek,lf_obtab,lf_klart,lf_class.
          REFRESH: lt_num,lt_char,lt_curr,lt_return.
          CLEAR: ls_num,ls_char.

    *定义一个子例程  增加前导零,
      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 'VB_BATCH_2_CLASS_OBJECT'
            EXPORTING
              i_matnr gs_pd-matnr    "输入值为物料编号
              i_charg gs_pd-charg     "输入值为批次号
              i_werks gs_pd-werks    "输入值为工厂号
            IMPORTING
              e_objek lf_objek           输出值
              e_obtab lf_obtab          输出值
              e_klart lf_klart              输出值
              e_class lf_class.            输出值

          IF lf_objek IS NOT INITIAL.

            CLEAR: lt_char, lt_num, lt_curr, lt_return.
            CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
              EXPORTING
                objectkey       lf_objek
                objecttable     lf_obtab
                classnum        lf_class
                classtype       lf_klart
              TABLES
                allocvaluesnum  lt_num             输出一个存放批次特性表里面存放的有B2000001、2、13的批次特性
                allocvalueschar lt_char               输出一个存放批次特性表里面存放的有B2000003到BVENDOR1除了B2000013的批次特性
                allocvaluescurr lt_curr
                return          lt_return.
    *循环内表 lt_char把批次特性放在我们定义的内表中
            LOOP AT lt_char INTO ls_char.
              it_data-atnam ls_char-charact. "特性名称
              it_data-atwrt ls_char-value_neutral.  "特性值
              it_data-atbez ls_char-charact_descr.  "特征描述

              APPEND it_data.

             CLEAR ls_char.
            ENDLOOP.

    循环内表lt_num把批次特性放在我们定义的内表中
            LOOP AT lt_num INTO ls_num.
    *        CLEAR it_data.
              tmp_i ls_num-value_from.
              CALL FUNCTION 'QSS0_FLTP_TO_CHAR_CONVERSION'
                EXPORTING
                  i_number_of_digits 2
                  i_fltp_value       tmp_i
                IMPORTING
                  e_char_field       tmp_str1.
              it_data-atnam ls_num-charact. "特性名称
              it_data-atwrt tmp_str1.  "特性值
              CONDENSE it_data-atwrt.
    *        DISAPART_FLOAT IT_DATA-ATWRT.
              it_data-atbez ls_num-charact_descr.  "特征描述

              APPEND it_data.

              CLEAR ls_num.

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

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

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

    具体“一个简单的打印报表”文章里也有取批次特性的用法。

  • 相关阅读:
    HDU 跑跑卡丁车
    螺旋模型
    原型模型
    CSS匹配规则参考
    索引调优
    动态加载外部css或js文件
    des算法的C#实现
    @@RowCount和“SET NOCOUNT ON”在触发器中使用的先后顺序引起的问题
    WebService生成XML文档时出错。不应是类型XXXX。使用XmlInclude或SoapInclude属性静态指定非已知的类型。
    Sql获取星期几的方法
  • 原文地址:https://www.cnblogs.com/caizjian/p/3012772.html
Copyright © 2011-2022 走看看