QS21是创建检验特性,QS23是修改检验特性,我们可以使用BAPI_QPMK_SAVEREPLICA这个BAPI来代码实现。无论是创建还是修改都是同一个BAPI来实现,用字段BAPIQPMK_QPMK-FUNCTION来区分创建还是修改,009是创建,004是修改
如果是手动创建,需要输入工厂,检验特性编号,生效日期。
下一个画面,输入定量定性预设码,状态是已核发,短文描述,搜索描述。
点击控制指示码,可以做一些检验特性的控制
点击保存,跳过一些特性设置,就成功建立的检验特性
如下是BAPI的使用代码实现
*&---------------------------------------------------------------------*
*& Form bapi_qs21
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> LT_HEAD
*&---------------------------------------------------------------------*
FORM BAPI_QPMK USING US_TEXING LIKE GT_SIZELIST.
DATA LS_QPMK LIKE QPMK.
CLEAR LS_QPMK.
SELECT SINGLE * INTO LS_QPMK FROM QPMK
WHERE ZAEHLER = US_TEXING-WERKS
AND MKMNR = US_TEXING-VERWMERKM.
IF SY-SUBRC = 0.
RETURN. "檢驗特性存在,則不用創建
ENDIF.
DATA LT_MSTCHA LIKE TABLE OF BAPIQPMK_QPMK WITH HEADER LINE.
DATA LT_MSTCHA_TEXT LIKE TABLE OF BAPIQPMK_QPMT WITH HEADER LINE.
DATA LT_RETURN LIKE TABLE OF BAPIRET2 WITH HEADER LINE.
CLEAR: LT_MSTCHA,LT_MSTCHA[],
LT_MSTCHA_TEXT,LT_MSTCHA_TEXT[],
LT_RETURN,LT_RETURN[].
IF LS_QPMK IS INITIAL.
LT_MSTCHA-FUNCTION = '009'.
ELSE.
LT_MSTCHA-FUNCTION = '004'.
ENDIF.
LT_MSTCHA-PLANT_QPMK = US_TEXING-WERKS."主检验特性的工厂
LT_MSTCHA-MSTR_CHAR = US_TEXING-VERWMERKM."主文件检验特性
LT_MSTCHA-VMSTR_CHAR = '000001'.
LT_MSTCHA-VALID_FROM = US_TEXING-IDATE."有效起始日期
LT_MSTCHA-SORT_FIELD = US_TEXING-CHAR_DESCR. "特性短文
* LT_MSTCHA-CHARACTERISTIC_NAME = LT_MSTCHA-SORT_FIELD.
* LT_MSTCHA-INFOFIELD3 = LT_MSTCHA-SORT_FIELD.
LT_MSTCHA-STATUS = '2'."主记录的状态,2已核發
IF GT_SIZELIST-PROP = '1'. "定性,指示碼Z100,
CLEAR GT_TQ27.
READ TABLE GT_TQ27 WITH KEY STEUERKZ = 'Z100'.
ELSEIF GT_SIZELIST-PROP = '2'. "定量,指示碼Z200,
CLEAR GT_TQ27.
READ TABLE GT_TQ27 WITH KEY STEUERKZ = 'Z200'.
ENDIF.
DATA LS_QMKST LIKE QMKST.
MOVE-CORRESPONDING GT_TQ27 TO LS_QMKST.
MOVE LS_QMKST TO LT_MSTCHA-IND_CONTROL.
LT_MSTCHA-IND_COMPLETE = ''."复制模块/参考特性
APPEND LT_MSTCHA.
LT_MSTCHA_TEXT-PLANT_QPMK = LT_MSTCHA-PLANT_QPMK.
LT_MSTCHA_TEXT-MSTR_CHAR = LT_MSTCHA-MSTR_CHAR.
LT_MSTCHA_TEXT-VMSTR_CHAR = LT_MSTCHA-VMSTR_CHAR.
LT_MSTCHA_TEXT-LANGU = 'M'. "繁体字
LT_MSTCHA_TEXT-VALID_FROM = LT_MSTCHA-VALID_FROM."有效起始日期
LT_MSTCHA_TEXT-CHAR_DESCR = LT_MSTCHA-SORT_FIELD.
APPEND LT_MSTCHA_TEXT.
CALL FUNCTION 'BAPI_QPMK_SAVEREPLICA'
TABLES
MSTCHA = LT_MSTCHA
* MSTCHA_INSP_METH = LT_MSTCHA_INSP_METH
MSTCHA_TEXT = LT_MSTCHA_TEXT
RETURN = LT_RETURN.
READ TABLE LT_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC EQ 0 .
US_TEXING-MSGTY = 'E'.
US_TEXING-MESSAGE = LT_RETURN-MESSAGE.
CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
RETURN.
ELSE.
* T_DATA-TYPE = 'S'.
IF LS_QPMK IS INITIAL.
US_TEXING-MESSAGE = US_TEXING-MESSAGE && '/' && US_TEXING-VERWMERKM && '特性創建改成功'.
ELSE.
US_TEXING-MESSAGE = US_TEXING-MESSAGE && '/' && US_TEXING-VERWMERKM && '特性修改成功'.
ENDIF.
US_TEXING-HAVE2 = 'X'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'.
ENDIF.
ENDFORM.
另外还有特性值的获取