CO02增强

 
080429103937.gif
0、创建数据库 ZPCO02
 
080429102140.gif
1、运行事务码 COMD
 
080429102223.gif
2、命名项目名称 ZCO02
 
080429102301.gif
3、短文描述,因为我们增强的程序与PPCO0001有关,所以描述为 PPCO0001
 
080429102436.gif
4、选择开发类及传输请求
 
080429102940.gif
5、选择红色部分,增强分配
 
080429103035.gif
6、在第一栏里输入 PPCO0001  这个就是我么要增强的程序,之后选择上面的按钮“组件
 
080429103216.gif
7、双击 EXIT_SAPLCOBT_001  进入到出口程序中
 
080429103508.gif
8、找到  SPAN { font-family: "Courier New"; font-size: 11pt; color: #000000; background: #FFFFFF; } .L0S52 { color: #0000FF; } INCLUDE ZXCO1U01. 双击进去,就是我们要写代码的地方了
 
080429103643.gif
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/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/23495244/viewspace-692264/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值