ITPub博客

首页 > Linux操作系统 > Linux操作系统 > CO02增强

CO02增强

原创 Linux操作系统 作者:hzq2010 时间:2011-04-11 21:14:22 0 删除 编辑
 
0、创建数据库 ZPCO02
 
1、运行事务码 COMD
 
2、命名项目名称 ZCO02
 
3、短文描述,因为我们增强的程序与PPCO0001有关,所以描述为 PPCO0001
 
4、选择开发类及传输请求
 
5、选择红色部分,增强分配
 
6、在第一栏里输入 PPCO0001  这个就是我么要增强的程序,之后选择上面的按钮“组件
 
7、双击 EXIT_SAPLCOBT_001  进入到出口程序中
 
8、找到  SPAN { font-family: "Courier New"; font-size: 11pt; color: #000000; background: #FFFFFF; } .L0S52 { color: #0000FF; } INCLUDE ZXCO1U01. 双击进去,就是我们要写代码的地方了
 
9、把增强代码写入进来,调试、激活、传到服务器。
 
如下是代码部分:
  SPAN { font-family: "Courier New"; font-size: 11pt; color: #000000; background: #FFFFFF; } .L1S31 { font-style. italic; color: #808080; } .L1S32 { color: #3399FF; } .L1S33 { color: #4DA619; } .L1S52 { color: #0000FF; } TABLES:caufv,resb.
DATABEGIN 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,
END OF old_resb.

DATABEGIN OF new_resb OCCURS 0"数据库中的RESB.
        INCLUDE STRUCTURE old_resb.
DATAEND OF new_resb.
DATABEGIN OF obj_resb OCCURS 0"插入的RESB
        INCLUDE STRUCTURE old_resb.
DATAEND 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(16TYPE c,
host(18TYPE c.
DATA: char1(20TYPE c,
char2(20TYPE c.

DATA: inst_flg TYPE c VALUE 'N',
chan_had TYPE c VALUE 'N'.
* teco_flg TYPE c VALUE 'N',
* read_flg TYPE c .

*BREAK-POINT.

CHECK sy-tcode EQ 'CO02'.
** 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,
header_table-aufnr TO i_temp-aufnr.
***Check M/O header
**check if status eq 'TECO'.
*LOOP AT status_table WHERE objnr EQ header_table-objnr
* AND stat EQ 'I0045'.
*
* MOVE: 'Y' TO teco_flg.
*ENDLOOP.

*CHECK teco_flg NE 'Y'.
*CHECK read_flg NE 'Y'.

SELECT SINGLE gamng gltrp INTO (caufv-gamng, caufv-gltrp)
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.
**date
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.
*DELETE component_table WHERE vbkz EQ 'I'.
LOOP AT component_table WHERE vbkz EQ 'U'
OR vbkz EQ 'I'
OR vbkz EQ 'D'.
  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,
      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'.
      SELECT SINGLE matnr bdmng INTO (resb-matnr, resb-bdmng)
      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.
        CHECK chan_had NE 'Y'.
        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'.
      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'.
* MESSAGE ID 'ZX' TYPE 'W'
* NUMBER '000' WITH 'SAP系统已记录您的更改!'.
  ENDIF.
ENDIF.

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/23495244/viewspace-692264/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2010-03-11

  • 博文量
    196
  • 访问量
    168065