SAP PP CO02 反冲一键修改

用户因实际业务要求 

生产订单 组件 的反冲,想一键打上标记。

而CO02是标准功能,本着稳定第一的原则,不建议在co02里面去调整,建议自己开发一个程序去修改resb-RGEKZ 字段。

逻辑,输入生产订单号 aufnr 和目标rgekz. 

根据aufnr在caufv里面查找对应的预留rsnum,然后根据预留rsnum 修改resb

本想用SAP标准BAPI   BAPI_ALM_ORDER_COMPONENT ,不知道为什么在ECC的EHP7 里面调不通,只能直接修改resb的rgekz 

上代码

*&---------------------------------------------------------------------*
*& Report  ZPRT_PPORDER_COMPON_RGEKZ_UPD
*&
*&---------------------------------------------------------------------*
*& author gavin
*& date :20220716
*& from :
*& tcd :zpp07
*&---------------------------------------------------------------------*

REPORT ZPRT_PPORDER_COMPON_RGEKZ_UPD.
TYPE-POOLS: SLIS.
TABLES:CAUFV,RESB.

DATA:STDATUM LIKE SY-DATUM,
      STUZEIT LIKE SY-UZEIT.

DATA:runnercnt TYPE I,
      sumrcnt TYPE I.
DATA:pdate TYPE sy-datum.

DATA:BEGIN OF TCAUFV OCCURS 0,
    AUFNR LIKE CAUFV-AUFNR,
    RSNUM LIKE CAUFV-RSNUM,
  END OF TCAUFV.

DATA:BEGIN OF TResb OCCURS 0,
  RSNUM LIKE CAUFV-RSNUM,
  RSPOS LIKE resb-RSPOS,
  RSART LIKE resb-RSART,
END OF TResb.

*&---------------------------------------------------------------------*
*& 选择界面
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK BLK1 WITH FRAME TITLE TXT1 .

SELECT-OPTIONS:
    S_AUFNR FOR CAUFV-AUFNR."订单号
PARAMETERS:PRGEKZ AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK BLK1.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK DESC WITH FRAME TITLE BLKTEXT1.
SELECTION-SCREEN COMMENT 1(78) TXT5.
*SELECTION-SCREEN SKIP.
*SELECTION-SCREEN COMMENT 1(78) TXT2.
*SELECTION-SCREEN SKIP.
*SELECTION-SCREEN COMMENT 1(78) TXT3.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN COMMENT 1(78) TXT4.
SELECTION-SCREEN END OF BLOCK DESC.

INITIALIZATION.
  TXT1 = '请输入选择条件'.
  BLKTEXT1 = '使用场景和逻辑简介&使用统计'.
  TXT5 = '需求来源:XXX  功能:依据提供的生产工单号修改其对应的所有组件的倒冲属性为 反冲标记'.

  pdate = 20220716.CLEAR sumrcnt.
  PERFORM getrunstatic(ZPRT_FI_SCCB1L) USING pdate sy-REPID CHANGING runnercnt sumrcnt.
  TXT4 = '运行情况:总共' && runnercnt && '用户运行了' && sumrcnt && '次,'.
  pdate = sy-datum.pdate+4(4) = '0101'.CLEAR sumrcnt.
  PERFORM getrunstatic(ZPRT_FI_SCCB1L) USING pdate sy-REPID CHANGING runnercnt sumrcnt.
  TXT4 = TXT4 && '本年度总共' && runnercnt && '用户运行了' && sumrcnt && '次,'.
  pdate = sy-datum.pdate+6(2) = '01'.CLEAR sumrcnt.
  PERFORM getrunstatic(ZPRT_FI_SCCB1L) USING pdate sy-REPID CHANGING runnercnt sumrcnt.
  TXT4 = TXT4 && '本月度总共' && runnercnt && '用户运行了' && sumrcnt && '次'.


START-OF-SELECTION.

  STDATUM = SY-DATUM.
  STUZEIT = SY-UZEIT.

  PERFORM GETDATA."获取数据
*  IF SY-UNAME EQ 'BW'.
*    PERFORM SAVE2BPCTAB.
*    PERFORM SAVE2BPCTAB1.
*  ENDIF.
  PERFORM WRITERPTRUNRECORD(ZDIA_SO_C_FROM_XLSMODEL) USING sy-TCODE SY-CPROG sy-datum sy-UZEIT '20220716' 'PPXXX'.

*&---------------------------------------------------------------------*
*&      Form  GETDATA
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
FORM GETDATA.
  DATA:IMETHOD LIKE BAPI_ALM_ORDER_METHOD OCCURS  0 WITH HEADER LINE,
       ICOMPONENT LIKE BAPI_ALM_ORDER_COMPONENT OCCURS 0 WITH HEADER LINE,
       ICOMPONENT_UP LIKE BAPI_ALM_ORDER_COMPONENT_UP OCCURS 0 WITH HEADER LINE,
       EXTENSION_IN    LIKE    BAPIPAREX OCCURS 0 WITH HEADER LINE,
       RETURN    LIKE    BAPIRET2 OCCURS 0 WITH HEADER LINE.

  SELECT AUFNR RSNUM INTO TABLE TCAUFV
    FROM CAUFV WHERE AUFNR IN S_AUFNR.

  CLEAR IMETHOD[].
  IMETHOD-METHOD = 'CHANGE'.
  IMETHOD-OBJECTTYPE = 'COMPONENT'.
  APPEND imethod.

  LOOP AT TCAUFV.

*    CLEAR IMETHOD[].
*    IMETHOD-METHOD = 'CHANGE'.
*    IMETHOD-OBJECTTYPE = 'COMPONENT'.
*    IMETHOD-OBJECTKEY = TCAUFV-AUFNR.
*    IMETHOD-REFNUMBER = '1'.
*    APPEND imethod.
*
*    CLEAR Imethod.
*    IMETHOD-METHOD = 'SAVE'.

*    clear TRESB[].
*    SELECT RSNUM RSPOS RSART into TABLE TRESB
*      FROM RESB
*      WHERE RSNUM = TCAUFV-RSNUM.

*    clear ICOMPONENT[]. clear ICOMPONENT_UP[].
*    loop at tresb.
    update resb set RGEKZ = PRGEKZ WHERE RSNUM  = TCAUFV-RSNUM .
*      ICOMPONENT-RESERV_NO = tresb-RSNUM.
*      ICOMPONENT-RES_ITEM = tresb-RSPOS.
*      ICOMPONENT-RES_TYPE = tresb-RSART.
*      ICOMPONENT-BACKFLUSH = PRGEKZ.
*      append ICOMPONENT.
*
*      ICOMPONENT_UP-BACKFLUSH = 'X'.
*      append ICOMPONENT_UP.
*  ENDLOOP.

*    CALL FUNCTION 'BAPI_ALM_ORDER_COMPONENT'
*      TABLES
*        IT_METHODS      = IMETHOD
*        IT_COMPONENT    = ICOMPONENT
*        IT_COMPONENT_UP = ICOMPONENT_UP
*        RETURN          = RETURN.
*
  IF SY-SUBRC = 0.
      WRITE:'工单号:' ,TCAUFV-AUFNR  , '预留:' , TCAUFV-RSNUM , '修改 反冲标记RGEKZ=',PRGEKZ ,' 成功 '.
  ENDIF.

ENDLOOP.

ENDFORM.                    "GETDATA

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

gavin_gxh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值