zoukankan      html  css  js  c++  java
  • 服务确定撤销/删除/关闭 (ml81n)

    FUNCTION zrfc_mm006.
    *"----------------------------------------------------------------------
    *"*"Local interface:
    *"  IMPORTING
    *"     VALUE(CALLNO) TYPE  ZCALLNO
    *"     VALUE(SHEET_NO) LIKE  ESSR-LBLNI OPTIONAL
    *"     VALUE(BLDAT) LIKE  ESSR-BLDAT DEFAULT SY-DATUM
    *"     VALUE(BUDAT) LIKE  ESSR-BUDAT DEFAULT SY-DATUM
    *"     VALUE(OPERATE) TYPE  CHAR1
    *"     VALUE(EBELN) LIKE  BAPIESSRC-PO_NUMBER OPTIONAL
    *"     VALUE(EBELP) LIKE  BAPIESSRC-PO_ITEM OPTIONAL
    *"  EXPORTING
    *"     VALUE(E_SHEET_NO) LIKE  ESSR-LBLNI
    *"     VALUE(FLAG) LIKE  BAPIRET2-TYPE
    *"     VALUE(MESSAGE) LIKE  BAPIRET2-MESSAGE
    *"----------------------------------------------------------------------
    *备注:删除服务确定表单,必须先撤销 .
    
    DATA:   lv_row         LIKE essr-lblni,
            lv_message     LIKE bapiret2-message.
    DATA    lv_datano      TYPE zdatano.
    DATA    lv_mode        TYPE char1 VALUE 'N'.
    DATA    ls_sheetheader TYPE bapiessrc.
    
    *******数据检查
    IF operate = 'R' OR operate = 'D'.
        IF sheet_no IS INITIAL.
          flag = 'E'.
          message = '请输入确定表单号'.
          RETURN.
        ENDIF.
    ELSEIF operate = 'F'.
        IF ebeln IS INITIAL OR ebelp IS INITIAL .
          flag = 'E'.
          message = '请输入采购订单和项目'.
          RETURN.
        ENDIF.
    ENDIF.
    
    ******撤销服务确定表单
    IF operate = 'R'.
    
    PERFORM bdc_dynpro      USING 'SAPLMLSR' '0400'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=SELP'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RM11P-NEW_ROW'.
    PERFORM bdc_field       USING 'RM11P-NEW_ROW'
                                  lv_row.
    PERFORM bdc_dynpro      USING 'SAPLMLSR' '0340'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RM11R-LBLNI'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTE'.
    PERFORM bdc_field       USING 'RM11R-LBLNI'
                                  sheet_no.
    PERFORM bdc_dynpro      USING 'SAPLMLSR' '0400'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=AKCH'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RM11P-NEW_ROW'.
    PERFORM bdc_field       USING 'RM11P-NEW_ROW'
                                  lv_row.
    PERFORM bdc_dynpro      USING 'SAPLMLSR' '0400'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ACCR'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RM11P-NEW_ROW'.
    PERFORM bdc_field       USING 'RM11P-NEW_ROW'
                                  lv_row.
    PERFORM bdc_dynpro      USING 'SAPLMLSR' '0400'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=SAVE'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'RM11P-NEW_ROW'.
    PERFORM bdc_field       USING 'RM11P-NEW_ROW'
                                  lv_row.
    PERFORM bdc_dynpro      USING 'SAPLSPO1' '0300'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=YES'.
    PERFORM bdc_dynpro      USING 'SAPLMLSR' '0110'.
    PERFORM bdc_field       USING 'BDC_CURSOR'
                                  'IMKPF-BUDAT'.
    PERFORM bdc_field       USING 'BDC_OKCODE'
                                  '=ENTE'.
    PERFORM bdc_field       USING 'IMKPF-BLDAT'
                                  bldat.
    PERFORM bdc_field       USING 'IMKPF-BUDAT'
                                  budat.
    REFRESH messtab.
    
    CALL TRANSACTION 'ML81N' USING bdcdata
                     MODE   lv_mode
                     UPDATE 'L'
                     MESSAGES INTO messtab.
    
    CLEAR gt_return.
    CALL FUNCTION 'CONVERT_BDCMSGCOLL_TO_BAPIRET2'
     TABLES
       imt_bdcmsgcoll       = messtab
       ext_return           = gt_return.
    
    ******删除已撤销的服务确定表单
    ELSEIF operate = 'D'.
       CLEAR: gt_return.
       CALL FUNCTION 'BAPI_ENTRYSHEET_DELETE'
         EXPORTING
           entrysheet       = sheet_no
         TABLES
           return           = gt_return.
    
    ******关闭服务采购订单
    ELSEIF operate = 'F'.
    ls_sheetheader-po_number = ebeln.          "采购订单
    ls_sheetheader-po_item   = ebelp.          "采购订单行项目
    ls_sheetheader-doc_date  = bldat.          "凭证日期
    ls_sheetheader-post_date = budat.          "过账日期
    ls_sheetheader-fin_entry = 'F'.            "标识:关闭
    CLEAR gt_return.
    CALL FUNCTION 'BAPI_ENTRYSHEET_CREATE'
      EXPORTING
        entrysheetheader                  = ls_sheetheader
     IMPORTING
        entrysheet                        = e_sheet_no
      TABLES
        return                            = gt_return.
    ENDIF.
    
    ******返回消息处理
      CLEAR:gs_return, message, lv_message.
      READ TABLE gt_return INTO gs_return WITH KEY type = 'E'.
      IF sy-subrc NE 0.
        flag =  'S'.
        IF  operate = 'R'.
            CONCATENATE '服务确认表单:' sheet_no ' 撤销成功' INTO message.
            ELSEIF operate = 'D'.
            CONCATENATE '表单确认表单:' sheet_no ' 删除成功' INTO message.
        ENDIF.
    
      ELSE.
        LOOP AT gt_return INTO gs_return WHERE type CA 'AEX'.
            MESSAGE ID     gs_return-id
                    TYPE   gs_return-type
                    NUMBER gs_return-number
                    WITH   gs_return-message_v1 gs_return-message_v2
                           gs_return-message_v3 gs_return-message_v4
                           INTO lv_message.
            CONCATENATE message lv_message INTO message SEPARATED BY ''.
        ENDLOOP.
        SHIFT message LEFT DELETING LEADING  ''.
        flag = 'E'.
    
      ENDIF.
    
        CLEAR:gt_log,gs_log.
        lv_datano     = lv_datano + 1.
        gs_log-datano = lv_datano.
        gs_log-name   = 'ZRFC_MM006'.
        gs_log-cdate  = sy-datum.
        GET TIME.
        gs_log-ctime  = sy-uzeit.
        gs_log-callno = callno.
        gs_log-flag   = flag.
        gs_log-log    = message.
        CONCATENATE sheet_no  bldat  budat  operate ebeln ebelp e_sheet_no
        INTO gs_log-content.
        CONDENSE gs_log-content NO-GAPS.
        gs_log-length = STRLEN( gs_log-content ).
        APPEND gs_log TO gt_log.
    
       IF gt_log IS NOT INITIAL.
         INSERT zrfc_mm01in_log FROM TABLE gt_log.
         IF sy-subrc = 0.
           COMMIT WORK.
         ENDIF.
       ENDIF.
    
    ENDFUNCTION.
  • 相关阅读:
    阅读进度条的实现
    获取radio选中的值
    Vue的学习(六)
    Vue的学习(三)
    C#委托详解
    C#泛型和非泛型
    C#装箱和拆箱
    C#内存泄漏的事例
    C#windows服务开发(一)
    C#windows服务开发
  • 原文地址:https://www.cnblogs.com/caizjian/p/6074218.html
Copyright © 2011-2022 走看看