用户因实际业务要求
生产订单 组件 的反冲,想一键打上标记。
而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