*&------------------------------------------------
*& Module get_document_data INPUT
*&------------------------------------------------
MODULE GET_DOCUMENT_DATA INPUT.
DATA: L_SGTXT LIKE ZCM04-SGTXT.
* DATA: L_CNT TYPE I.
SELECT * FROM ZCM03 WHERE DOCNUMBER EQ ZCM03-DOCNUMBER
AND DOCYEAR = ZCM03-DOCYEAR.
EXIT.
ENDSELECT.
IF SY-SUBRC NE 0.
MESSAGE E000 WITH 'Document number' ZCM03-DOCNUMBER
' does not exist'.
ENDIF.
SELECT * INTO CORRESPONDING FIELDS OF TABLE ZCM04TAB FROM
ZCM04
WHERE DOCNUMBER EQ ZCM03-DOCNUMBER.
****mark by liuchun 20070925****
* SORT ZCM04TAB BY MATNR . "Elven 20070403
LOOP AT ZCM04TAB.
ZCM04TAB-PERSISTENT = 'X'.
MODIFY ZCM04TAB INDEX SY-TABIX TRANSPORTING PERSISTENT.
LASTDOCITEM = ZCM04TAB-DOCITEM.
ENDLOOP.
IF ZCM03-DOCSTAS EQ '0'.
*nancy add 0618 for lock table zcm03 document sn
DATA: ENQH LIKE SEQG3 OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'ENQUEUE_EZ_ZCM03'
EXPORTING
MODE_SFLIGHT = 'E'
MANDT = SY-MANDT
DOCNUMBER = ZCM03-DOCNUMBER
_SCOPE = 2
EXCEPTIONS
FOREIGN_LOCK = 01
SYSTEM_FAILURE = 02.
IF SY-SUBRC <> 0.
CALL FUNCTION 'ENQUEUE_READ'
EXPORTING
GCLIENT = SY-MANDT
GNAME = 'ZCM03'
GARG = ''
GUNAME = SPACE
TABLES
ENQ = ENQH
EXCEPTIONS
FCOMMUNICATION_FAILURE = 1
SYSTEM_FAILURE = 2.
IF NOT ENQH[] IS INITIAL.
READ TABLE ENQH WITH KEY GARG+3(10) = ZCM03-DOCNUMBER.
IF SY-SUBRC = 0.
MESSAGE E000 WITH ZCM03-DOCNUMBER 'locked by user' ENQH-GUNAME.
ENDIF.
ENDIF.
ENDIF.
*nancy add 0618 for lock table zcm03 document en
***LBG20080411.ADD.SN
IF G_OBJECT EQ SPACE.
CONCATENATE 'DOCTYPE' ZCM03-DOCTYPE INTO G_OBJECT.
CONDENSE G_OBJECT.
ENDIF.
L_CNT = 0.
CLEAR L_PLANT.
SELECT SINGLE WERKS INTO L_PLANT FROM ZCM04
WHERE DOCNUMBER = ZCM03-DOCNUMBER AND
DOCYEAR = ZCM03-DOCYEAR.
SELECT COUNT(*) INTO L_CNT FROM ZMM048
WHERE WERKS = L_PLANT AND BJECT = G_OBJECT
AND VALUE = 'ACTIVE'.
IF L_CNT > 0 AND ZCM03-RELSTATUS NE SPACE.
* ECHO20081120.ADD.SN FOR EPDV electronic approve.
IF ZCM03-RELSTATUS NE 'R'.
MESSAGE S000 WITH 'Document number' ZCM03-DOCNUMBER
'Has realeased or is realeasing,can not MODIFY!'.
ENDIF.
* ECHO20081120.ADD.EN
ENDIF.
***LBG20080411.ADD.EN
***LBG20080331.ADD.EN
SELECT SINGLE SGTXT INTO L_SGTXT FROM ZCM04 WHERE
DOCNUMBER EQ ZCM03-DOCNUMBER
AND SGTXT = 'Auto Generate'.
IF SY-SUBRC NE 0.
IF P_WERKS NE SPACE AND ZCM03-DOCTYPE ='4'.
TRANSACTION = 'D'.
ELSE.
TRANSACTION = 'U'.
ENDIF.
ENDIF.
IF SY-SUBRC EQ 0.
TRANSACTION = 'D'.
MESSAGE S000 WITH 'Document number' ZCM03-DOCNUMBER
' can not be changed.'.
ENDIF.
* ENDIF.
ELSE.
TRANSACTION = 'D'.
MESSAGE S000 WITH 'Document number' ZCM03-DOCNUMBER
' can not be changed.'.
ENDIF.
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/14397246/viewspace-666167/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/14397246/viewspace-666167/