工单更改历史记录(轉載)

一、自定义表结构

二、生产工单出口增强

三、查询报表

一、自定义表结构

表ZPCO02

MANDT MANDT CLNT 3 0 客户端 
AUFNR AUFNR CHAR 12 0 订单号 
MATNR MATNR CHAR 18 0 物料号 
FILED FIELDNAME CHAR 30 0 字段名 
AENAM AENAM CHAR 12 0 对象更改人员的名称 
LAEDA LAEDA DATS 8 0 上次更改的日期 
TCODE TCODE CHAR 20 0 事务代码
CHNID CDCHNGIND CHAR 1 0 修改类型 (U, I, E, D)
HOSTIP CHAR20 CHAR 20 0 字符 20
HOST MSHOST2 CHAR 32 0 Name of Application Server
VALUE_OLD CHAR20 CHAR 20 0 字符 20
VALUE_NEW CHAR20 CHAR 20 0 字符 20
TIMES CDUZEIT TIMS 6 0 时间已更改 
LOOPID SYTABIX INT4 10 0                                                             
ALPOS ALPOS CHAR 1 0 指示符:替代项目
STTXT CO_STTXT CHAR 40 0 系统状态

BDMNG BDMNG QUAN 13 3 需求量

二、生产工单出口增强

PPCO0001

EXIT_SAPLCOBT_001

ZXCO1U01

check sy-tcode ne 'CO01'.

*&保存工单更改的历史记录
tables:caufv,resb.
data: begin of old_resb  occurs 0,  "更改后未保存之RESB.
         aufnr like resb-aufnr,
         posnr like resb-posnr,
         matnr like resb-matnr,
         rsnum like resb-rsnum,
         rspos like resb-rspos,
         xloek like resb-xloek,
         bdmng like resb-bdmng,
         objnr like resb-objnr,
         lgort like resb-lgort,
         end of old_resb.

data: begin of new_resb occurs 0.  "数据库中的RESB.
        include structure old_resb.
data: end of new_resb.
data: begin of obj_resb occurs 0.  "插入的RESB
        include structure old_resb.
data: end of obj_resb.

data: i_zpco02 like zpco02 occurs 0 with header line.
data: i_temp   like zpco02 occurs 0 with header line.

data: iporg like msxxlist-hostadr,
      ipdec(16) type c,
      host(18)  type c.
data: char1(20) type c,
      char2(20) type c.


data: licl type c.

data: inst_flg type c value 'N',
      chan_had type c value 'N'.
*      teco_flg TYPE c VALUE 'N',
*      read_flg TYPE c .
data: l_str type string.

data: i_msgty like sy-msgty.
data: tabix like sy-tabix.

*BREAK-POINT.

clear: i_temp, iporg, ipdec, host.
**  Get user IP,hostname
call function 'TH_USER_INFO'    " Get user IP,hostname
  exporting
    client   = sy-mandt
    user     = sy-uname
  importing
    hostaddr = iporg
    terminal = host
  exceptions
    others   = 1.

**"Conv.IP addr to format 'xxx.xxx.xxx.xxx'
call function 'GWY_IPADR2STRING'  "Conv.IP addr
  exporting
    ipadr   = iporg
  importing
    string  = ipdec.

***Common var.
move: sy-mandt to i_temp-mandt,
      sy-uname to i_temp-aenam,
      sy-datum to i_temp-laeda,
      sy-uzeit to i_temp-times,
      sy-tcode to i_temp-tcode,
         ipdec to i_temp-hostip,
          host to i_temp-host,
* { INCERT
          header_table-sttxt to i_temp-sttxt,  "工单状态
* INCERT } DEVK905414 ADD:工单状态取值
          header_table-aufnr to i_temp-aufnr.


***Check M/O header
select single gamng gltrp gstrp into (caufv-gamng, caufv-gltrp,caufv-gstrp)
         from caufv where aufnr eq header_table-aufnr.
**qty
if header_table-gamng ne caufv-gamng.
  move: caufv-gamng to char1, header_table-gamng to char2.
  move-corresponding i_temp to i_zpco02.
  move: '更改工单总数' to i_zpco02-filed,
        'U'            to i_zpco02-chnid,
        char1          to i_zpco02-value_old,
        char2          to i_zpco02-value_new.
  append i_zpco02.
  inst_flg = 'Y'.
  chan_had = 'Y'.
endif.
**增加开始日期修改记录(MODIFY BY LU.X 2010.09.26)
if header_table-gstrp ne caufv-gstrp.
  move-corresponding i_temp to i_zpco02.
  move: '更改开始时间' to i_zpco02-filed,
        'U'        to i_zpco02-chnid,
        caufv-gstrp        to i_zpco02-value_old,
        header_table-gstrp to i_zpco02-value_new.
  append i_zpco02.
  inst_flg = 'Y'.
endif.

if header_table-gltrp ne caufv-gltrp.
  move-corresponding i_temp to i_zpco02.
  move: '更改完成时间' to i_zpco02-filed,
        'U'        to i_zpco02-chnid,
        caufv-gltrp        to i_zpco02-value_old,
        header_table-gltrp to i_zpco02-value_new.
  append i_zpco02.
  inst_flg = 'Y'.
endif.

 


if inst_flg = 'Y'.
  insert zpco02 from table i_zpco02 accepting duplicate keys.
  inst_flg = 'N'.
endif.

loop at component_table where vbkz eq 'U'
                           or vbkz eq 'I'
                           or vbkz eq 'D'.
  clear licl.
  case component_table-vbkz.
    when 'I'.
      move-corresponding i_temp to i_zpco02.
      move: '新增组件' to i_zpco02-filed,
            'I'        to i_zpco02-chnid,
            ''         to i_zpco02-value_old, "old_resb-matnr
            component_table-matnr to i_zpco02-value_new,
            '新增的组件'   to i_zpco02-matnr,
*           read_flg       TO i_zpco02-readf,
            component_table-alpos to i_zpco02-alpos,
            component_table-bdmng to i_zpco02-bdmng,
            sy-tabix       to i_zpco02-loopid.
      append i_zpco02.
      inst_flg = 'Y'.

    when 'D'.
      move-corresponding i_temp to i_zpco02.
      move: '删除组件' to i_zpco02-filed,
            'D'        to i_zpco02-chnid,
            resb-xloek to i_zpco02-value_old,
            component_table-xloek to i_zpco02-value_new,
            component_table-matnr to i_zpco02-matnr,
*            read_flg       TO i_zpco02-readf,
            component_table-alpos to i_zpco02-alpos,
            sy-tabix       to i_zpco02-loopid.
      append i_zpco02.
      inst_flg = 'Y'.


    when 'U'.
* { INCERT
      if component_table-xloek is not initial.
* { INCERT
        search i_temp-sttxt for 'TECO'.
        case sy-subrc.
          when 4.
* } DEVK910121
            move-corresponding i_temp to i_zpco02.
            move: '删除组件' to i_zpco02-filed,
                  'D'        to i_zpco02-chnid,
                  resb-xloek to i_zpco02-value_old,
                  component_table-xloek to i_zpco02-value_new,
                  component_table-matnr to i_zpco02-matnr,
*            read_flg       TO i_zpco02-readf,
                  component_table-alpos to i_zpco02-alpos,
                  sy-tabix       to i_zpco02-loopid.
            append i_zpco02.
            inst_flg = 'Y'.
* { INCERT
        endcase.
* } DEVK910121 忽略由工单关闭引起的组件删除
      else.
* INCERT } DEVK905414 FIX BUG:删除组件无记录
        select single matnr bdmng lgort into  (resb-matnr, resb-bdmng,resb-lgort)
                 from resb  where aufnr eq component_table-aufnr
                              and posnr eq component_table-posnr
                              and matnr eq component_table-matnr
                              and rsnum eq component_table-rsnum
                              and rspos eq component_table-rspos.
        if component_table-matnr ne resb-matnr.
          move-corresponding i_temp to i_zpco02.
          move: '更改组件' to i_zpco02-filed,
                'U'        to i_zpco02-chnid,
                resb-matnr to i_zpco02-value_old,
                component_table-matnr to i_zpco02-value_new,
                '更改的工单组件' to i_zpco02-matnr,
*             read_flg       TO i_zpco02-readf,
                component_table-alpos to i_zpco02-alpos,
                  sy-tabix       to i_zpco02-loopid.
          append i_zpco02.
          inst_flg = 'Y'.

        elseif component_table-bdmng ne resb-bdmng.
* { DELETE
*          CHECK chan_had NE 'Y'.
* DELETE } DEVK905414 FIX BUG:抬头数量修改引起的组件数量修改无记录
          move: component_table-bdmng to char1, resb-bdmng to char2.
          move-corresponding i_temp to i_zpco02.
          move: '需求数量' to i_zpco02-filed,
          'U'   to i_zpco02-chnid,
          char2 to i_zpco02-value_old,
          char1 to i_zpco02-value_new,
          component_table-matnr to i_zpco02-matnr,
*      read_flg       TO i_zpco02-readf,
          component_table-alpos to i_zpco02-alpos,
          sy-tabix       to i_zpco02-loopid.
          append i_zpco02.
          inst_flg = 'Y'.
*      wangkai 发料仓库变更的记录
        elseif component_table-lgort ne resb-lgort .
          move: component_table-lgort to char1, resb-lgort to char2.
          move-corresponding i_temp to i_zpco02.
          move: '发料仓库' to i_zpco02-filed,
           'U'   to i_zpco02-chnid,
           char2 to i_zpco02-value_old,
           char1 to i_zpco02-value_new,
           component_table-matnr to i_zpco02-matnr,
*      read_flg       TO i_zpco02-readf,
           component_table-alpos to i_zpco02-alpos,
           sy-tabix       to i_zpco02-loopid.
          append i_zpco02.
          inst_flg = 'Y'.
* { INCERT
        endif.
* INCERT } DEVK905414
      endif.
  endcase.

endloop.

if inst_flg = 'Y'.
  insert zpco02 from table i_zpco02 accepting duplicate keys.
  if sy-subrc eq 0.
    inst_flg = 'N'.
    chan_had = 'N'.
    free: i_zpco02.
    clear: i_temp.
  endif.
endif.

三、查询报表

REPORT  ZCOHS.
tables: zpco02, afko.
data: i_zpco02 like zpco02 occurs 0 with header line.
data: i_clear  like zpco02 occurs 0 with header line.
*data: i_aufnr
selection-screen begin of block block1 with frame. title text-001 .
select-options s_aufnr for  afko-aufnr."生产订单
*SELECT-OPTIONS s_matnr FOR ZPCO02-MATNR.
select-options s_aenam for zpco02-aenam."更改者
select-options s_laeda for zpco02-laeda modif id gp2."修改日期
"PARAMETERS:    p_clear AS CHECKBOX MODIF ID gp1.
selection-screen end of block block1 .

 

top-of-page.
  perform. write_header.

at selection-screen output.
  loop at screen.
    if screen-group1 = 'GP1'.
      screen-intensified = '1'.
      modify screen.
      continue.
    endif.
  endloop.

*&---------------------------------------------------------------------*
*&   Event START-OF-SELECTION
*&---------------------------------------------------------------------*
start-of-selection.

  perform. get_data.
*&---------------------------------------------------------------------*
*&   Event END-OF-SELECTION
*&---------------------------------------------------------------------*
end-of-selection.
  perform. report_output.

 form. get_data .
  select zpco02~mandt zpco02~aufnr zpco02~matnr zpco02~filed zpco02~aenam zpco02~laeda zpco02~tcode
         zpco02~chnid zpco02~hostip zpco02~host zpco02~value_old zpco02~value_new zpco02~times zpco02~loopid
         zpco02~alpos zpco02~sttxt zpco02~bdmng
    into corresponding fields of table i_zpco02
    from zpco02
    inner join afpo on zpco02~aufnr = afpo~aufnr
    where  afpo~posnr = 1
      and  afpo~elikz = ''
      and  zpco02~aufnr in s_aufnr
      and  zpco02~aenam in s_aenam
      and  zpco02~laeda in s_laeda
      .

  check i_zpco02[] is initial or sy-subrc eq 4.
  message id 'ZX' type 'S'
          number '000' with '没有找到数据'.

endform.                    " get_data
*&---------------------------------------------------------------------*
*&      Form  write_header
*&---------------------------------------------------------------------*
form. write_header .
  data: l_pos1 type i,
        l_pos2 type i,
        l_pos3 type i,
        l_title(33) type c value '工单更改历史记录'.
*   CONCATENATE l_title v_bom_til INTO l_title.

  l_pos1 = sy-linsz / 2 - 15.
  l_pos2 = sy-linsz - 15.
  l_pos3 = l_pos2 + 6.
  skip 2.
  write /l_pos1 l_title.
  uline at /l_pos1(16).
  skip.
  write at: /(11) '生产订单',
             (16) '组件/表头',
             (16) '更改动作',
             (20) '新字段值',
             (20) '旧字段值',
             (08) '替代',
             (08) '需求数',
             (08) '更改帐号',
             (15) '更改者IP',
             (10) '更改者PC',
             (10) '更改日期',
             (10) '更改时间',
* { INCERT
             (35) '工单状态'.
* INCERT } DEVK910078

  uline.
endform.                    " write_header
*&---------------------------------------------------------------------*
*&      Form  report_output
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
form. report_output .
* { REPLACE
*  SORT i_zpco02 BY aufnr aenam laeda.
  sort i_zpco02 by aufnr laeda times matnr.
* REPLACE } DEVK910078
  data qty(13) type c .
  loop at i_zpco02.
    write at: /(11) i_zpco02-aufnr ,  " '生产订单',
               (16) i_zpco02-matnr ,  "  '物料号码',
               (16) i_zpco02-filed .  "  '更改动作',
* { INCERT
    set left scroll-boundary.
* INCERT } DEVK910078
    if i_zpco02-filed = '新增组件' .
      qty = i_zpco02-bdmng .
    else .
      qty = ''.
   endif .
      write at:  (20) i_zpco02-value_new
                      color 2,  "  '新字段值',
                 (20) i_zpco02-value_old
                      color 3,  "  '旧字段值',
                 (08) i_zpco02-alpos
                      color 4,
                 (08) qty
                      color 5,          "  '需求数'
                 (08) i_zpco02-aenam ,  "  '更改帐号',
                 (15) i_zpco02-hostip , "  '更改者IP',
                 (10) i_zpco02-host ,   "  '更改者PC',
                 (10) i_zpco02-laeda ,  "  '更改日期',
                 (10) i_zpco02-times ,  "  '更改时间'.
                 (35) i_zpco02-sttxt.  "'工单状态'.

    endloop.

  endform.                    " report_output

转载于:https://www.cnblogs.com/yanglikun/p/4078615.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/472832.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

MapReduce 计算框架如何运作

learn from 从0开始学大数据(极客时间) 1. MapReduce 作业启动和运行机制 作业涉及三类关键进程: 大数据应用进程 这类进程是启动 MapReduce 程序的主入口,主要是指定 Map 和 Reduce 类、输入输出文件路径等,并提交作业…

python能做机器人吗_python深度学习 人工智能是做机器人吗?

我们经常听到”Python“与”人工智能“这两个词, 也很容易混淆这两个词, 那么Python和人工智能到底什么关系呢? Python人工智能工程师待遇怎么样? 通过这篇文章详细解答一下: 关于Python Python是一门计算机程序语言&a…

linux忘记mysql密码_Linux下忘记Mysql密码的找回方法(图)

Mysql隔一段时间不访问,也许你会忘记访问密码,这时该怎么办,重装mysql吗?这个代价也太大了,我们这里介绍两种恢复密码的方法。方法一:因为Mysql密码存储于数据库mysql中的user表中,所以我们只要…

单元测试的7种境界

1. 以各种借口拒绝单元测试Unit Test,比较常用的是“你没有足够的时间(进行单元测试)”。  无论是对单元测试的老手还是新手编写单元测试还是有一定得工作量的,而且单元测试也需要掌握大量的测试框架和工具(光一个junit或testng你很难工作地很happy)。…

Yarn 资源调度框架

learn from 从0开始学大数据(极客时间) Hadoop 主要是由三部分组成: 分布式文件系统 HDFS分布式计算框架 MapReduce分布式集群资源调度框架 Yarn Yarn 的架构

python连接sql数据库_python连接SQL数据库

前言 上次通过学习,懂得了如何通过不同的对象来定位页面的元素(id,class_name,tag_name,xpath,css等),可以实现模拟点击的功能。当然,这只是初期的web自动化的一点小成绩。当你觉得这些都应用的差不多的情况下&#xf…

mysql mtop 使用_MYSQLMTOP监控环境搭建

MySQLMTOP是一个由PythonPHP开发的MySQL企业级监控系统。系统由Python实现多进程数据采集和告警,PHP实现WEB展示和管理。最重要是MySQL服务器无需安装任何Agent,只需在监控WEB界面配置相关数据库信息功能非常强大:可对上百台MySQL数据库的状态…

javascript正则表达式入门

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html><head><title> RegExp对象</title><script>/*function validation(obj){//1.得到文本框的值//var …

Hive是如何让MapReduce实现SQL操作的?

learn from 从0开始学大数据&#xff08;极客时间&#xff09; 1. MapReduce 实现 SQL 的原理 SELECT pageid, age, count(1) FROM pv_users GROUP BY pageid, age;实现过程&#xff1a; 2. Hive 的架构 Hive 能够直接处理我们输入的 SQL 语句&#xff08;Hive SQL 语法与 标…

python脚本编程手册_Python 入门指南 — Python2.7 手册 2.7 documentation - 脚本之家在线手册...

Python 入门指南 Release:2.7 Date:December 06, 2014 Python 是一门简单易学且功能强大的编程语言。它拥有高效的高级数据结构&#xff0c;并且能够用简单而又高效的方式进行面向对象编程。Python 优雅的语法和动态类型&#xff0c;再结合它的解释性&#xff0c;使其在大多数平…

mysql spring隔离级别_MySQL事务与Spring隔离级别实现

1、事务具有ACID特性原子性(atomicity)&#xff1a;一个事务被事务不可分割的最小工作单元&#xff0c;要么全部提交&#xff0c;要么全部失败回滚。一致性(consistency)&#xff1a;数据库总是从一致性状态到另一个一致性状态&#xff0c;它只包含成功事务提交的结果隔离型(is…

关闭程序

System.Diagnostics.Process.GetCurrentProcess().Kill();//关闭程序转载于:https://www.cnblogs.com/CandiceW/p/4204564.html

Java JDK 安装配置

文章目录1. 下载安装2. 配置环境变量3. 检查安装成功1. 下载安装 下载地址&#xff1a;https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html&#xff08;需要注册下载&#xff09; 以下操作环境&#xff1a;WIN 10 2. 配置环境变量 JAVA_HOME 为…

mqtt如何判断设备离线_反渗透纯水设备膜元件如何离线清洗?

原标题&#xff1a;反渗透纯水设备膜元件如何离线清洗&#xff1f;在反渗透设备正常运行&#xff0c;无故障时&#xff0c;反渗透系统一般都用在线清洗保养、冲击性杀菌以及定期保护。但是&#xff0c;如果当反渗透膜元件重度污染时&#xff0c;在线清洗就显得无能为力了&#…

mysql的表servers_ERROR 1146 (42S02): Table 'mysql.servers' doesn't exist

修改用户权限&#xff0c;刷新权限表&#xff0c;报1146mysql> flush privileges;ERROR1146 (42S02): Table mysql.servers doesnt existmysql> use mysql;mysql> show tables;可以看到servers表&#xff0c;在系统mysql 目录下&#xff0c;可以看到server.ibd 和serv…

HelloJava,我的第一个Java程序

HelloWorld.java public class HelloWorld { // HelloWorld 需要和文件名一致&#xff0c;因为 public// 一个文件最多一个 public 类// 如果该文件没有 public 类&#xff0c;则文件名随意取public static void main(String[] args) {float i 10.2f;i;//浮点数可以 System.…

python冒泡算法_python_冒泡算法

什么是冒泡算法&#xff1f; -- 像鱼吐泡泡一样&#xff0c;每次都是向上冒出一个水泡 如何逻辑整理&#xff1f; -- 先拿第一个值和剩下的值&#xff0c;一一比较&#xff0c;必能找到最大的或者最小的 -- 比较过程中&#xff0c;第一个值小于剩下的某个值&#xff0c;交换位置…

MongoDB的Java驱动使用整理 (转)

MongoDB Java Driver 简单操作 一、Java驱动一致性 MongoDB的Java驱动是线程安全的&#xff0c;对于一般的应用&#xff0c;只要一个Mongo实例即可&#xff0c;Mongo有个内置的连接池&#xff08;池大小默认为10个&#xff09;。 对于有大量写和读的环境中&#xff0c;为了确保…

Java 变量、数据类型

文章目录1. 变量、常量2. 数据类型1. 变量、常量 final 修饰常量 public class Variable {static final int YEAR 365;// 常量使用 final 修饰, 不可修改&#xff0c;类似C的 conststatic int day 0;// 成员变量public static void main(String[] args){System.out.println…

html背景图不显示_批量显示多张有序排列的图标,使用精灵图CSS Sprites这种办法...

让你显示一个天气图标你会怎么显示呢&#xff1f;让你做一个简单的动图你会怎么采用什么方式呢&#xff1f;让你输出一个长期固定的图标列表你会怎么编写代码呢&#xff1f;如果不管性能&#xff0c;不用css&#xff0c;不用js&#xff0c;可能你会这么写html&#xff1a;<类…