本来是想用BAPI:BAPI_EQUI_CREATE来实现的,但是BAPI有两个参数没找到,两个参数写不进去,如下图的这两个字段,
所以只能采用录屏的方式开开发了,IE01输入工具编号和日期,设备类别选Q,属于测量设备
输入测量设备的描述
在PRT资料業簽输入工具用途是002,分组码是3000。
点保存就可以了,成功创建量具
我们要用BDC来实现
*&---------------------------------------------------------------------*
*& Form CALL_IE01
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> p1 text
*& <-- p2 text
*&---------------------------------------------------------------------*
FORM CALL_IE01 USING US_PRT LIKE GT_SIZELIST US_TOOLNO.
DATA: LT_BDCTAB LIKE TABLE OF BDCDATA WITH HEADER LINE.
DATA RUNMODE(1) TYPE C VALUE 'N'.
DATA MSG LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA MSGTEXT(120) TYPE C.
DATA W_TEXTOUT LIKE T100-TEXT.
REFRESH LT_BDCTAB.
DEFINE DYNPRO.
clear LT_BDCTAB.
if &1 = 'X'.
LT_BDCTAB-dynbegin = 'X'.
LT_BDCTAB-program = &2.
LT_BDCTAB-dynpro = &3.
else.
LT_BDCTAB-fnam = &2.
LT_BDCTAB-fval = &3.
endif.
append LT_BDCTAB.
END-OF-DEFINITION.
DATA:
BEGIN OF LS_INPUTIE01,
EQUNR LIKE EQUI-EQUNR,
DATSL LIKE SY-DATUM,
EQTYP LIKE EQUI-EQTYP,
SHTXT LIKE ITOB-SHTXT,
PLANV LIKE EFHM-PLANV,
FGRU1 LIKE EFHM-FGRU1,
* MSG_TYPE TYPE CHAR1,
* MSG_TEXT TYPE CHAR100,
END OF LS_INPUTIE01.
LS_INPUTIE01-EQUNR = US_TOOLNO. "量具编号
LS_INPUTIE01-DATSL = SY-DATUM(4) && '01' && '01'. "生效日期今年的1月1日开始
LS_INPUTIE01-EQTYP = 'Q'.
LS_INPUTIE01-SHTXT = US_PRT-TOOL. "量具描述
LS_INPUTIE01-PLANV = '002'. "设备用途
LS_INPUTIE01-FGRU1 = '3000'. "分组
DYNPRO: 'X' 'SAPMIEQ0' '0100',
'' 'BDC_CURSOR' 'RM63E-EQTYP',
'' 'BDC_OKCODE' '/00',
'' 'RM63E-EQUNR' LS_INPUTIE01-EQUNR,
'' 'RM63E-DATSL' LS_INPUTIE01-DATSL,
'' 'RM63E-EQTYP' LS_INPUTIE01-EQTYP,
'X' 'SAPMIEQ0' '0101',
'' 'BDC_OKCODE' '=T\05',
'' 'BDC_SUBSCR' 'SAPLITO0 0102SUB_DATA',
'' 'BDC_SUBSCR' 'SAPLITO0 1020SUB_0102A',
'' 'BDC_SUBSCR' 'SAPLITO0 1025SUB_1020A',
'' 'BDC_SUBSCR' 'SAPMCRHXSUB 3001SHIFTREPORT_SHIFTNOTE',
'' 'BDC_SUBSCR' 'SAPLITO0 1021SUB_0102B',
'' 'BDC_SUBSCR' 'SAPLITO0 1000SUB_1021A',
'' 'BDC_SUBSCR' 'SAPLITO0 1022SUB_0102C',
'' 'BDC_SUBSCR' 'SAPLITO0 1000SUB_0102D',
'' 'BDC_SUBSCR' 'SAPLITO0 0152SUB_EQKO',
'' 'BDC_SUBSCR' 'SAPLITO0 1520SUB_0152A',
'' 'BDC_SUBSCR' 'SAPLITO0 1525SUB_0152B',
'' 'BDC_CURSOR' 'ITOB-SHTXT',
'' 'ITOB-SHTXT' LS_INPUTIE01-SHTXT,
'' 'BDC_SUBSCR' 'SAPLITO0 1526SUB_0152C',
'' 'BDC_SUBSCR' 'SAPLITO0 1527SUB_0152D',
* '' 'ITOB-DATAB' '2024/03/25',
'X' 'SAPMIEQ0' '0101',
'' 'BDC_OKCODE' '=BU',
'' 'BDC_SUBSCR' 'SAPMIEQ0 0263SUB_DATA',
'' 'BDC_CURSOR' 'EFHM-FGRU1',
'' 'EFHM-PLANV' LS_INPUTIE01-PLANV,
'' 'EFHM-FGRU1' LS_INPUTIE01-FGRU1,
* '' 'EFHM-BZOFFB' '01',
* '' 'EFHM-BZOFFE' '04',
'' 'BDC_SUBSCR' 'SAPLITO0 0152SUB_EQKO',
'' 'BDC_SUBSCR' 'SAPLITO0 1520SUB_0152A',
'' 'BDC_SUBSCR' 'SAPLITO0 1525SUB_0152B',
* '' 'ITOB-SHTXT' LS_INPUTIE01-SHTXT,
'' 'BDC_SUBSCR' 'SAPLITO0 1526SUB_0152C',
'' 'BDC_SUBSCR' 'SAPLITO0 1527SUB_0152D'.
* '' 'ITOB-DATAB' US_INDATA-DATSL.
CALL TRANSACTION 'IE01' USING LT_BDCTAB MODE RUNMODE UPDATE 'S'
MESSAGES INTO MSG.
READ TABLE MSG WITH KEY MSGTYP = 'S' MSGID = 'IS' MSGNR = '816'.
IF MSG[] IS INITIAL OR SY-SUBRC = 0.
LOOP AT MSG WHERE MSGTYP = 'S' AND MSGID = 'IS' AND MSGNR = '816'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = MSG-MSGID
MSGNR = MSG-MSGNR
MSGV1 = MSG-MSGV1
MSGV2 = MSG-MSGV2
MSGV3 = MSG-MSGV3
MSGV4 = MSG-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = W_TEXTOUT.
ENDLOOP.
US_PRT-MESSAGE = W_TEXTOUT.
US_PRT-HAVE = 'X'.
ELSE.
LOOP AT MSG WHERE MSGTYP = 'E'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = MSG-MSGID
MSGNR = MSG-MSGNR
MSGV1 = MSG-MSGV1
MSGV2 = MSG-MSGV2
MSGV3 = MSG-MSGV3
MSGV4 = MSG-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = W_TEXTOUT.
ENDLOOP.
US_PRT-MESSAGE = W_TEXTOUT.
IF US_PRT-MESSAGE IS INITIAL.
US_PRT-MESSAGE = '量具' && LS_INPUTIE01-EQUNR && '創建失敗!'.
ENDIF.
US_PRT-MSGTY = 'E'.
ENDIF.
ENDFORM.