SAP创建检验特性-BAPI(附源码)

7 篇文章 0 订阅

检验特性创建事务代码QS21

BAPI:BAPI_QPMK_SAVEREPLICA

检验特性创建分为:定性特征和定量特征 

先自己手工的用事务代码QS21创建两个,清楚哪些字段必填,定性和定量都有哪些字段



  DATA: ls_qpmk TYPE bapiqpmk_qpmk,
        lt_qpmk TYPE TABLE OF bapiqpmk_qpmk,
        ls_qpmz TYPE bapiqpmk_qpmz,
        lt_qpmz TYPE TABLE OF bapiqpmk_qpmz,
        ls_qpmt TYPE bapiqpmk_qpmt,
        lt_qpmt TYPE TABLE OF bapiqpmk_qpmt,
        lt_mstcha_insp_meth TYPE TABLE OF bapiqpmk_qpmz,
        ls_mstcha_insp_meth TYPE bapiqpmk_qpmz,
        ls_return TYPE bapiret2,
        lt_return TYPE TABLE OF bapiret2.

  DATA: ls_qmkst TYPE qmkst.

  LOOP AT t_data.
    CLEAR: ls_qpmk, ls_qpmz, ls_qpmt, ls_return,
           lt_qpmk, lt_qpmz, lt_qpmt, lt_return.

    CALL FUNCTION 'NUMBER_RANGE_ENQUEUE'
      EXPORTING
        object                 = 'QMERKMALE'
      EXCEPTIONS
        foreign_lock           = 1
        object_not_found       = 2
        system_failure         = 3
        OTHERS                 = 4.

    CALL FUNCTION 'NUMBER_GET_NEXT'
      EXPORTING
        nr_range_nr = '01'
        object      = 'QMERKMALE'
        subobject   = t_data-werks
        quantity    = '1'
      IMPORTING
*        returncode  = lt_return
        number      = t_data-mkmnr.

    CALL FUNCTION 'NUMBER_RANGE_DEQUEUE'
      EXPORTING
        object                 = 'QMERKMALE'
      EXCEPTIONS
        object_not_found       = 1
        OTHERS                 = 2.

    IF t_data-mkmnr IS INITIAL.
      t_data-type = 'E'.
      t_data-message = '生成主检验特性编号失败'.
      MODIFY t_data.

      CONTINUE.
    ENDIF.

         CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
          EXPORTING
            input          =  t_data-masseinhsw
            language       = sy-langu
          IMPORTING
            output         =  t_data-masseinhsw
          EXCEPTIONS
            unit_not_found = 1
            OTHERS         = 2.


*   ls_qpmk-function             = '009'.
    ls_qpmk-plant_qpmk           = t_data-werks."主检验特性的工厂
    ls_qpmk-mstr_char            = t_data-mkmnr."主文件检验特性
    ls_qpmk-vmstr_char           = '000001'.
    ls_qpmk-valid_from           = t_data-gueltigab."有效起始日期
    ls_qpmk-sort_field           = t_data-sortfeld."搜索字段
    ls_qpmk-status               = t_data-loekz."主记录的状态
    ls_qmkst-quantitat   = t_data-quantitaet. "  数量特性  'X’=定量,空=定性
    ls_qpmk-ind_complete         = t_data-konsistent."复制模块/参考特性

    IF t_data-quantitaet = 'X'."定量
        ls_qpmk-dec_places           = t_data-stellen."小数点右边的位数(精确的)
        ls_qpmk-mesure_unit_quant    = t_data-masseinhsw."数量数据存储的测量单位
        IF t_data-sollwert IS NOT INITIAL.
        ls_qpmk-target_val           = t_data-sollwert."一个数量特性的目标值
        ls_qpmk-ind_targ_value      = 'X'.
        ls_qmkst-sollpruef   = t_data-sollpruef.  "  检查目标值
    ENDIF.
    IF t_data-toleranzun IS NOT INITIAL.
        ls_qpmk-lw_tol_lmt           = t_data-toleranzun."规格下限
        ls_qpmk-ind_lower_limit = 'X'.
        ls_qmkst-tolerunten  = t_data-tolerunten. "	规范下限
    ENDIF.
    IF t_data-toleranzob IS NOT INITIAL.
        ls_qpmk-up_tol_lmt           = t_data-toleranzob."规格上限
        ls_qpmk-ind_upper_limit = 'X'.
        ls_qmkst-toleroben   = t_data-toleroben.  "  规范上限
    ENDIF.
    ENDIF.
    IF t_data-quantitaet IS INITIAL."定性才有
        ls_qpmk-def_code_general     = t_data-codequal."拒绝的缺陷代码: 一般
        ls_qpmk-def_code_grp_general = t_data-codegrqual."一般拒绝的缺陷代码组
    ENDIF.

    ls_qmkst-messwerte   = t_data-quantitaet. "	必须记录计量值
    ls_qmkst-pruefkat    = t_data-pruefkat.   "	要求特性属性的参考


    ls_qmkst-pumfkz      = '='.               "	检验范围
    ls_qmkst-lzeitkz     = ' '.               "	长期检验
    ls_qmkst-estukz      = t_data-estukz.     "	记录类型
    ls_qmkst-dokukz      = ' '.               "	检验结果的必需凭证
    ls_qmkst-rzwang      = t_data-rzwang.     "	特性类别
    ls_qmkst-syncro      = ' '.               "	激活同步
    ls_qmkst-addpro      = ' '.               "	采样数量已增加
    ls_qmkst-zerstprf    = ' '.               "	破坏性检验
    ls_qmkst-formelmk    = ' '.               "	计算的特性
    ls_qmkst-stichpr     = t_data-stichpr.    "  要求采样过程
    ls_qmkst-ausslos     = ' '.               "	质量记分和废品份额的相关特性
    ls_qmkst-fixiert     = ' '.               "	不能修改缺省控制标识
    ls_qmkst-bewfhlzhl   = ' '.               "	记录缺陷数
    ls_qmkst-lstkz       = ' '.               "	控制特性结果 - qm 子系统
    ls_qmkst-vorgaend    = ' '.               "	说明可以被修改
    ls_qmkst-pmmzwang    = ' '.               "	分配所需的测试设备
    ls_qmkst-fehlrec     = ' '.               "	缺陷记录已自动调用
    ls_qmkst-aendbeleg   = ' '.               "	在结果记录期间创建更改凭证
    ls_qmkst-qspcmk      = t_data-qspcmk.     "   spc特性
    ls_qmkst-keindruck   = ' '.               "	打印
    ls_qmkst-para        = ' '.               "	控制标识:"参数特性"设置/未设置
    ls_qmkst-processmk   = ' '.               "	处理特征
    MOVE ls_qmkst TO ls_qpmk-ind_control.

*    call method cl_abap_container_utilities=>fill_container_c
*      exporting
*        im_value = ls_qmkst
*      importing
*        ex_container = ls_qpmk-ind_control "Your Bapi field
*      exceptions
*        illegal_parameter_type = 1
*      others = 2.

    APPEND ls_qpmk TO lt_qpmk.

    IF t_data-pruefkat IS NOT INITIAL."要求特性属性的参考
        ls_mstcha_insp_meth-plant_qpmk = t_data-werks.
        ls_mstcha_insp_meth-mst_insp_cha = t_data-mkmnr."主文件检验特性
        ls_mstcha_insp_meth-vmstr_char = '000001'.
        ls_mstcha_insp_meth-valid_from = t_data-gueltigab.
        IF t_data-ind_selset_or_codegrp1 IS NOT INITIAL.
        ls_mstcha_insp_meth-ind_selset_or_codegrp1 = t_data-ind_selset_or_codegrp1."目录条目是一个选择集
        ls_mstcha_insp_meth-cat_type1 = t_data-cat_type1."分配的代码组或选择集的目录类型
        ls_mstcha_insp_meth-sel_set1 = t_data-sel_set1."分配的代码组或选择集
        ls_mstcha_insp_meth-psel_set1 = t_data-psel_set1."分配的选择集的工厂
    ENDIF.
    IF t_data-ind_selset_or_codegrp2 IS NOT INITIAL.
        ls_mstcha_insp_meth-ind_selset_or_codegrp2 = t_data-ind_selset_or_codegrp2.
        ls_mstcha_insp_meth-cat_type2 = t_data-cat_type2.
        ls_mstcha_insp_meth-code_group2 = t_data-code_group2.
        ls_mstcha_insp_meth-psel_set2 = t_data-psel_set2.
    ENDIF.
    IF t_data-ind_selset_or_codegrp3 IS NOT INITIAL.
        ls_mstcha_insp_meth-ind_selset_or_codegrp3 = t_data-ind_selset_or_codegrp3.
        ls_mstcha_insp_meth-cat_type3 = t_data-cat_type3.
        ls_mstcha_insp_meth-code_group3 = t_data-code_group3.
        ls_mstcha_insp_meth-psel_set3 = t_data-psel_set3.
    ENDIF.
    IF t_data-ind_selset_or_codegrp4 IS NOT INITIAL.
        ls_mstcha_insp_meth-ind_selset_or_codegrp4 = t_data-ind_selset_or_codegrp4.
        ls_mstcha_insp_meth-cat_type4 = t_data-cat_type4.
        ls_mstcha_insp_meth-code_group4 = t_data-code_group4.
        ls_mstcha_insp_meth-psel_set4 = t_data-psel_set4.
    ENDIF.
    IF t_data-ind_selset_or_codegrp5  IS NOT INITIAL.
        ls_mstcha_insp_meth-ind_selset_or_codegrp5 = t_data-ind_selset_or_codegrp5.
        ls_mstcha_insp_meth-cat_type5 = t_data-cat_type5.
        ls_mstcha_insp_meth-code_group5 = t_data-code_group5.
        ls_mstcha_insp_meth-psel_set5 = t_data-psel_set5.
    ENDIF.
    APPEND ls_mstcha_insp_meth TO lt_mstcha_insp_meth.
    ENDIF.


    ls_qpmt-plant_qpmk           = t_data-werks.
    ls_qpmt-mstr_char            = t_data-mkmnr.
    ls_qpmt-vmstr_char           = '000001'.
    ls_qpmt-langu                = '1'.
    ls_qpmt-valid_from           = t_data-gueltigab."有效起始日期
    ls_qpmt-char_descr           = t_data-kurztext.
    APPEND ls_qpmt TO lt_qpmt.

    CALL FUNCTION 'BAPI_QPMK_SAVEREPLICA'
      TABLES
        mstcha                 = lt_qpmk
        mstcha_insp_meth       = lt_mstcha_insp_meth
        mstcha_text            = lt_qpmt
        return                 = lt_return.

    READ TABLE lt_return INTO ls_return WITH KEY type = 'E'.
    IF sy-subrc EQ 0 .
      t_data-type = 'E'.
      t_data-message = ls_return-message.
      CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    ELSE.
      t_data-type = 'S'.
      t_data-message = '创建成功'.
      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.
    ENDIF.

    MODIFY t_data.
  ENDLOOP.

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

geyulai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值