删除:
FUNCTION zfm_mm_008_del. *"---------------------------------------------------------------------- *"*"本地接口: *" IMPORTING *" VALUE(I_MATNR) TYPE MATNR *" VALUE(I_WERKS) TYPE WERKS_D *" EXPORTING *" VALUE(E_CODE) TYPE CHAR1 *" VALUE(E_MSG) TYPE STRING *"---------------------------------------------------------------------- CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT' EXPORTING input = i_matnr IMPORTING output = i_matnr EXCEPTIONS length_error = 1 OTHERS = 2. IF sy-subrc <> 0. * Implement suitable error handling here ENDIF. SELECT COUNT(*) FROM equk WHERE matnr EQ @i_matnr AND werks EQ @i_werks. IF sy-subrc NE 0. e_code = 'S'. e_msg = '配额不存在,不需要删除!'. RETURN. ENDIF. DATA lv_mode TYPE rfpdo-allgazmd VALUE 'N'. IF sy-uname EQ 'PAK'. lv_mode = 'A'. ENDIF. PERFORM bdc_dynpro USING 'SAPDM06Q' '0200'. PERFORM bdc_field USING 'BDC_CURSOR' 'EQUK-MATNR'. PERFORM bdc_field USING 'BDC_OKCODE' '/00'. PERFORM bdc_field USING 'EQUK-MATNR' i_matnr. PERFORM bdc_field USING 'EQUK-WERKS' i_werks. PERFORM bdc_dynpro USING 'SAPDM06Q' '0205'. PERFORM bdc_field USING 'BDC_CURSOR' 'EQUK-BDATU(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=SA'. PERFORM bdc_dynpro USING 'SAPDM06Q' '0205'. PERFORM bdc_field USING 'BDC_CURSOR' 'EQUK-BDATU(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=LOES'. PERFORM bdc_dynpro USING 'SAPLSPO1' '0200'. PERFORM bdc_field USING 'BDC_OKCODE' '=YES'. PERFORM bdc_dynpro USING 'SAPDM06Q' '0205'. PERFORM bdc_field USING 'BDC_CURSOR' 'EQUK-BDATU(01)'. PERFORM bdc_field USING 'BDC_OKCODE' '=BU'. CALL TRANSACTION 'MEQ1' USING bdcdata MODE lv_mode UPDATE 'S' MESSAGES INTO msgtab. CLEAR:bdcdata,bdcdata[]. IF NOT line_exists( msgtab[ msgtyp = 'E' ] ). e_code = 'S'. e_msg = '配额删除成功!'. ELSE. DATA: lc_message TYPE char100. e_code = 'E'. e_msg = '配额删除失败!'. LOOP AT msgtab INTO wa_mess. CLEAR lc_message. CALL FUNCTION 'MESSAGE_TEXT_BUILD' EXPORTING msgid = wa_mess-msgid msgnr = wa_mess-msgnr msgv1 = wa_mess-msgv1 msgv2 = wa_mess-msgv2 msgv3 = wa_mess-msgv3 msgv4 = wa_mess-msgv4 IMPORTING message_text_output = lc_message. e_msg = e_msg && lc_message. CLEAR:wa_mess,lc_message. ENDLOOP. ENDIF. ENDFUNCTION.
创建
FUNCTION zfm_mm_008_create.
*"----------------------------------------------------------------------
*"*"本地接口:
*" IMPORTING
*" VALUE(IS_HEAD) TYPE ZSMM0010
*" EXPORTING
*" VALUE(E_CODE) TYPE CHAR1
*" VALUE(E_MSG) TYPE STRING
*" TABLES
*" IT_ITEM STRUCTURE ZSMM0011
*"----------------------------------------------------------------------
DATA:
lv_bdatu TYPE c LENGTH 10,
lv_scmng TYPE c LENGTH 10,
lv_quote TYPE c LENGTH 3,
lv_line TYPE n LENGTH 2,
lv_p TYPE p DECIMALS 0,
lv_fieldname TYPE c LENGTH 30.
lv_p = is_head-scmng.
lv_scmng = lv_p.
CALL FUNCTION 'CONVERT_DATE_TO_EXTERNAL'
EXPORTING
date_internal = is_head-bdatu
IMPORTING
date_external = lv_bdatu
EXCEPTIONS
date_internal_is_invalid = 1
OTHERS = 2.
DATA: lc_message TYPE char100.
DATA lv_mode TYPE rfpdo-allgazmd VALUE 'N'.
IF sy-uname EQ 'PAK'.
lv_mode = 'A'.
ENDIF.
*开始新的画面
PERFORM bdc_dynpro USING 'SAPDM06Q' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR' 'EQUK-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'EQUK-MATNR' is_head-matnr.
PERFORM bdc_field USING 'EQUK-WERKS' is_head-werks.
**开始新的画面
PERFORM bdc_dynpro USING 'SAPDM06Q' '0205'.
PERFORM bdc_field USING 'BDC_CURSOR' 'EQUK-SCMNG(01)'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'EQUK-BDATU(01)' lv_bdatu.
PERFORM bdc_field USING 'EQUK-SCMNG(01)' lv_scmng.
*开始新的画面
PERFORM bdc_dynpro USING 'SAPDM06Q' '0205'.
PERFORM bdc_field USING 'BDC_CURSOR' 'EQUK-SCMNG(01)'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ZEIT'.
*开始新的画面
PERFORM bdc_dynpro USING 'SAPDM06Q' '0501'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM06Q-BDATU'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTE'.
PERFORM bdc_field USING 'RM06Q-VDATU' '20220101'.
PERFORM bdc_field USING 'RM06Q-BDATU' lv_bdatu.
*开始新的画面
PERFORM bdc_dynpro USING 'SAPDM06Q' '0215'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM06Q-SOBIN(01)'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
lv_line = 0 .
LOOP AT it_item INTO DATA(ls_item).
lv_line = lv_line + 1.
lv_quote = ls_item-quote.
CONCATENATE 'EQUP-BESKZ(' lv_line ')' INTO lv_fieldname.
PERFORM bdc_field USING lv_fieldname ls_item-beskz.
CONCATENATE 'RM06Q-SOBIN(' lv_line ')' INTO lv_fieldname.
PERFORM bdc_field USING lv_fieldname ls_item-sobes.
CONCATENATE 'EQUP-LIFNR(' lv_line ')' INTO lv_fieldname.
PERFORM bdc_field USING lv_fieldname ls_item-lifnr.
CONCATENATE 'EQUP-QUOTE(' lv_line ')' INTO lv_fieldname.
PERFORM bdc_field USING lv_fieldname lv_quote.
ENDLOOP.
*开始新的画面事件
PERFORM bdc_dynpro USING 'SAPDM06Q' '0215'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.
CLEAR msgtab[].
CALL TRANSACTION 'MEQ1' USING bdcdata
MODE lv_mode UPDATE 'S' MESSAGES INTO msgtab.
CLEAR:bdcdata,bdcdata[].
IF NOT line_exists( msgtab[ msgtyp = 'E' ] ).
e_code = 'S'.
e_msg = e_msg && '配额协议维护成功!'.
ELSE.
e_code = 'E'.
e_msg = '配额协议维护失败!'.
LOOP AT msgtab INTO wa_mess.
CLEAR lc_message.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = wa_mess-msgid
msgnr = wa_mess-msgnr
msgv1 = wa_mess-msgv1
msgv2 = wa_mess-msgv2
msgv3 = wa_mess-msgv3
msgv4 = wa_mess-msgv4
IMPORTING
message_text_output = lc_message.
e_msg = e_msg && lc_message.
CLEAR:wa_mess,lc_message.
ENDLOOP.
ENDIF.
ENDFUNCTION.
网友评论