此博客为原创博客,都是个人工作经历所得,转载请注明出处

Update 特殊处理程序,注意权限检查!!!

 

*&---------------------------------------------------------------------*
* Report ZMODIFY_001
* Application : MM   *
* Subject : 修改3130工厂利润中心+特殊采购成本核算 *
* Requested by : FI_LJJ *
* Execution : 201510 *
* Ref no: : 2015 *
* Author : rainy *
* Req Date : 20151010 *
***********************************************************************
* Production Order Variance Report *
***********************************************************************
***********************************************************************
*1.取数:通过料号+工厂 取出MD04 MRP清单数据, *
*2.输出:工厂:(1)3000公司下工厂时,用MRP里的再计划日期更新对应PO的 *
**
***********************************************************************
* MODIFICATIONS (latest entry at the top) *
* ------------------------------------------------------------------- *
* REL DATE NAME (COMPANY) DESCRIPTION TASK-NO *
* --- ---- ---- --------- ----------- ------- *
* *
***********************************************************************
REPORT ZMODIFY_001 MESSAGE-ID ZMM_001.

 

TYPE-POOLS: SLIS.
*TYPE-POOLS: vrm.
*----------------------------------------------------------------------
* Tables
*----------------------------------------------------------------------
TABLES:MARC.

DATA:BEGIN OF GT_ITAB OCCURS 0,
MATNR LIKE MARC-MATNR,
WERKS LIKE MARC-WERKS,
PRCTR LIKE MARC-PRCTR,"利润中心
SOBSK LIKE MARC-SOBSK,"成本核算的特殊采购类型
END OF GT_ITAB.
DATA:GT_ITAB_3130 LIKE TABLE OF GT_ITAB WITH HEADER LINE.


************************************************************************
* Select Screen *
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

SELECT-OPTIONS:S_MATNR FOR MARC-MATNR,
S_PRCTR FOR MARC-PRCTR DEFAULT 'COMMON',
S_SOBSK FOR MARC-SOBSK DEFAULT 'Z1'.

PARAMETERS:P_WERKS LIKE MARC-WERKS DEFAULT '3120'.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002 . " '说明'.

PARAMETERS:RB_01 RADIOBUTTON GROUP G1 DEFAULT 'X' USER-COMMAND RB,
RB_02 RADIOBUTTON GROUP G1.

SELECTION-SCREEN END OF BLOCK B2.

 

*&------------------------------------------------------------------*
*& INITIALIZATION
*&------------------------------------------------------------------*
INITIALIZATION.
*&I1.输入初始化
* PERFORM FRM_INIT_DATA.

 

*&------------------------------------------------------------------*
*& AT SELECTION-SCREEN
*&------------------------------------------------------------------*

AT SELECTION-SCREEN.
*&I2.权限检查
* PERFORM FRM_AUTHORITY_CHECK.
IF SY-UNAME NS 'MISD' AND SY-UNAME NS 'ABAP'.
MESSAGE E001 WITH '没有权限!'.
ENDIF.
* BREAK-POINT.
IF RB_01 EQ 'X'.
CLEAR:S_SOBSK,S_SOBSK[].
S_PRCTR(3) = 'IEQ'.
S_PRCTR-LOW = 'COMMON'.
APPEND S_PRCTR.
ELSE.
CLEAR:S_PRCTR,S_PRCTR[].
S_SOBSK(3) = 'IEQ'.
S_SOBSK-LOW = 'Z1'.
APPEND S_SOBSK.
ENDIF.

*&------------------------------------------------------------------*
*& START-OF-SELECTION
*&------------------------------------------------------------------*

START-OF-SELECTION.
DATA:G_LINES TYPE STRING.
RANGES:R_MATNR FOR MARC-MATNR.

 

*&S1.据条件取出数据
SELECT MATNR
WERKS
PRCTR
SOBSK

INTO CORRESPONDING FIELDS OF TABLE GT_ITAB
FROM MARC
WHERE MATNR IN S_MATNR
AND WERKS EQ P_WERKS
AND PRCTR IN S_PRCTR
AND SOBSK IN S_SOBSK.
IF SY-SUBRC NE 0.
MESSAGE E001 WITH '没有找到合适的数据!'.
ENDIF.

* G_LINES = LINES( GT_ITAB[] ).
* IF G_LINES = 0.
* MESSAGE E001 WITH '没有数据!'.
* ELSE.
* MESSAGE S003 WITH '找到数据' G_LINES '条!'.
* ENDIF.
* SELECT *
* INTO CORRESPONDING FIELDS OF TABLE GT_ITAB_3130
* FROM MARC
* FOR ALL ENTRIES IN GT_ITAB
* WHERE MATNR EQ GT_ITAB-MATNR
* AND WERKS EQ '3130'.

CLEAR:R_MATNR,R_MATNR[].
LOOP AT GT_ITAB.

R_MATNR(3) = 'IEQ'.
R_MATNR-LOW = GT_ITAB-MATNR.
APPEND R_MATNR.
CLEAR R_MATNR.
ENDLOOP.

G_LINES = LINES( R_MATNR[] ).
IF G_LINES = 0.
MESSAGE E001 WITH '没有数据!'.
ELSE.
MESSAGE S003 WITH '找到数据' G_LINES '条!'.
ENDIF.

*&RB_01 更新3130物料的 成本核算的特殊采购类型
IF RB_01 EQ 'X'.
UPDATE MARC SET PRCTR = 'COMMON'
WHERE MATNR IN R_MATNR
AND WERKS EQ '3130'.
IF SY-SUBRC EQ 0.
COMMIT WORK.
MESSAGE S003 WITH '成功更新数据' G_LINES '条!'.
ELSE.
ROLLBACK WORK.
MESSAGE E001 WITH '更新失败,请重试!'.
ENDIF.

ELSE.
*&RB_02 更新3130物料的 利润中心
UPDATE MARC SET SOBSK = 'Z1'
WHERE MATNR IN R_MATNR
AND WERKS EQ '3130'.
IF SY-SUBRC EQ 0.
COMMIT WORK.
MESSAGE S003 WITH '成功更新数据' G_LINES '条!'.
ELSE.
ROLLBACK WORK.
MESSAGE E001 WITH '更新失败,请重试!'.
ENDIF.
ENDIF.

posted @ 2017-03-19 14:59  Rainystuday  阅读(276)  评论(0)    收藏  举报