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' ''.
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' ''.
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' ''.
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' ''.
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' ''.
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' ''.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
PERFORM bdc_dynpro USING 'SAPLMLSR' ''.
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 .
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 + .
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 = .
COMMIT WORK.
ENDIF.
ENDIF. ENDFUNCTION.

服务确定撤销/删除/关闭 (ml81n)的更多相关文章

  1. linux下tomcat服务的启动、关闭与错误跟踪

    linux下tomcat服务的启动.关闭与错误跟踪,远程连接到服务器以后,通常通过以下几种方式启动关闭tomcat服务: 1).启动tomcat服务 进入tomcat主目录下的bin目录,然后执行如下 ...

  2. 利用 bat 批量处理命令实现手动控制mysql /Oracle 服务的开启和关闭

    利用 bat 批量处理命令实现手动控制mysql /Oracle 服务的开启和关闭 因为最近在学习数据库的知识,主要学习的是oracle 数据库,然而好巧啊,java也是在学习,我们老师现在要我们做一 ...

  3. CentOS下SVN服务的启动与关闭

    CentOS下SVN服务的启动与关闭 操作系统:CentOS 6.5  SVN版本:1.8.11 启动SVN服务:  svnserve -d -r /home/svn /home/svn 为版本库的根 ...

  4. centos 6 与 centos 7 服务开机启动、关闭设置的方法

    简单说明下 centos 6 与 centos 7 服务开机启动.关闭设置的方法: centos 6 :使用chkconfig命令即可. 我们以apache服务为例: #chkconfig --add ...

  5. Linux 服务的加入删除,自己主动执行及状态

    CAMS 在安装过程中会自己主动加入相关的服务.在安装的最后过程中会提示用户是否启动服务使服务生效,须要注意的是一个服务被加入后并不表示该服务在系统启动过程中会自己主动执行,仅表示能够使用servic ...

  6. C# ASP.NET 控制windows服务的 开启和关闭 以及重启

    用ASP.NET控制Windows服务的开启与关闭效果如图 代码 首页页面需要添加引用 页面的pageload中 实例化windows服务 protected void Page_Load(objec ...

  7. mysql 使用zip包进行安装以及服务启动后立即关闭问题

             本实例使用的mysql版本为 mysql-8.0.15-winx64 1.下载zip包 官网地址:https://dev.mysql.com/downloads/mysql/ 2.安 ...

  8. leaflet结合geoserver利用WFS服务实现图层删除功能(附源码下载)

    前言 leaflet 入门开发系列环境知识点了解: leaflet api文档介绍,详细介绍 leaflet 每个类的函数以及属性等等 leaflet 在线例子 leaflet 插件,leaflet ...

  9. 应用场景:vue表格撤销删除与保存按钮的显隐

    应用场景:vue表格撤销删除与保存按钮的显隐

随机推荐

  1. Linux的环境变量总结

    请见Github博客:http://wuxichen.github.io/Myblog/linux/2014/10/11/LinuxEnvironmentVariables.html

  2. 一个包含所有c++的头文件的头文件

    #include <bits/stdc++.h> 做CF看见别人用这个函数,然后就能直接用vector,set,string那些函数了,摸不着头脑,感觉特神奇就百度了一下,才发现这个是C+ ...

  3. OpenStack导入镜像后Launch不起来的几个问题

    Dashboard上显示state为error 没有其他报错 用nova list找到虚拟机的id 然后nova show,可以得到fault详细信息 也可以查看下面两个log /var/log/no ...

  4. 获取系统的emoji表情定制键盘

    首先 ,想要获取系统的表情,要首先知道表情对应的UTF8 的编码方式,我将其中一部分的图片展示出来 ,然后用UIButton 排列,iOS 7后又增加了300多个表情符号,这些都可以百度查到,现在上代 ...

  5. Socket编程模式

    Socket编程模式 本文主要分析了几种Socket编程的模式.主要包括基本的阻塞Socket.非阻塞Socket.I/O多路复用.其中,阻塞和非阻塞是相对于套接字来说的,而其他的模式本质上来说是基于 ...

  6. thiscall仅仅应用于“C++”成员函数(this指针存放于CX寄存器,参数从右到左压)

    _stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈.VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上" ...

  7. FreePascal的VMT与Delphi不一致,没有负方向

    因为不需要与C++兼容嘛:http://www.freepascal.org/docs-html/prog/progsu168.html 如果要想取得它真正的VMT,可以Pointer强行转换+100 ...

  8. Main方法的执行过程(转)

    要运行一个 main 方法 , 首先要知道 main 方法所在的 Class, 在命令行中指定这个 Class 名 Class Lava{ Private int speed = 4; Void fl ...

  9. Use Node.js DDP Client on Arduino Yun to Access Meteor Server

    Use Node.js DDP Client on Arduino Yun to Access Meteor Server 概述 在Arduino Yun上安装 Node.js, 并測试与 Meteo ...

  10. Android中使用"running services"查看service进程内存

    从Android 2.0开始,在Settings中加入了一个新的activity("Running Services" activity),它用于显示当前运行的每个Services ...