Sunteți pe pagina 1din 2

FORM USEREXIT_SAVE_DOCUMENT_PREPARE.

"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
""""""""""$"$\SE:(4) Form USEREXIT_SAVE_DOCUMENT_PREPARE, Start
A
*$*$-Start:
(4)--------------------------------------------------------------------------------
-$*$*
ENHANCEMENT 1 ZNUEV_SO_SAVE_DOC_PREPARE. "active version

DATA : LW_VBAP TYPE VBAP,


* W_VBAP TYPE VBAP,
W_VBAP TYPE VBAPVB,
W_VBAP1 TYPE VBAPVB,

L_WBSN TYPE VBAP-PS_PSP_PNR, "Wbs Element Numeric Format


L_WBST(30) TYPE C, "Wbs Element Characte Format
L_WBST1(30) TYPE C, "Wbs Element Characte Format
L_PRCTR TYPE PRPS-PRCTR, "PRCTR
T_MGWBS TYPE TABLE OF ZSD_MG_WBS, "Mat.Grp and WBS table
W_MGWBS TYPE ZSD_MG_WBS,
LV_INDEX TYPE SY-TABIX,
LV_STR TYPE C. "WBS String - First Characeter

IF ( SY-TCODE = 'VA01' OR SY-TCODE = 'VA02' ).


CLEAR : W_VBAP,L_WBSN.
REFRESH : T_MGWBS.
READ TABLE XVBAP INTO W_VBAP WITH KEY MATNR = '000000000001000001'. "INDEX 1.
IF SY-SUBRC = 0.
L_WBSN = W_VBAP-PS_PSP_PNR.

CALL FUNCTION 'CONVERSION_EXIT_ABPSP_OUTPUT'


EXPORTING
INPUT = L_WBSN
IMPORTING
OUTPUT = L_WBST
* EXCEPTIONS
* NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
ENDIF.

CLEAR : LV_STR.
LV_STR = L_WBST+0(1).

SELECT * FROM ZSD_MG_WBS INTO TABLE T_MGWBS.

LOOP AT XVBAP INTO W_VBAP1.


LV_INDEX = SY-TABIX.
IF LV_INDEX GT 1.
CLEAR W_MGWBS.
* READ TABLE T_MGWBS INTO W_MGWBS WITH KEY MATKL = XVBAP-MATKL WBS_STRING
= LV_STR.
READ TABLE T_MGWBS INTO W_MGWBS WITH KEY MATKL = W_VBAP1-MATKL WBS_STRING
= LV_STR.
IF SY-SUBRC = 0.
CLEAR : L_WBST1.
CONCATENATE L_WBST W_MGWBS-PS_PSP_PNR INTO L_WBST1.
CALL FUNCTION 'CONVERSION_EXIT_ABPSP_INPUT'
EXPORTING
INPUT = L_WBST1
IMPORTING
OUTPUT = L_WBSN
* EXCEPTIONS
* NOT_FOUND = 1
* OTHERS = 2
.
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.
* XVBAP-PS_PSP_PNR = L_WBSN.
W_VBAP1-PS_PSP_PNR = L_WBSN.

* IF XVBAP-PRCTR IS INITIAL .
CLEAR : L_PRCTR.
* SELECT SINGLE PRCTR FROM PRPS INTO L_PRCTR WHERE PSPNR = L_WBST1.
SELECT SINGLE PRCTR FROM PRPS INTO L_PRCTR WHERE PSPNR = L_WBSN.
IF SY-SUBRC = 0.
W_VBAP1-PRCTR = L_PRCTR.
ENDIF.
* ENDIF.
IF SY-TCODE = 'VA01'.
MODIFY XVBAP FROM W_VBAP1 INDEX LV_INDEX TRANSPORTING PRCTR PS_PSP_PNR.
ELSEIF SY-TCODE = 'VA02'.
UPDATE VBAP SET PRCTR = L_PRCTR
PS_PSP_PNR = L_WBSN
WHERE VBELN = W_VBAP1-VBELN
AND POSNR = W_VBAP1-POSNR.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDIF.

ENDENHANCEMENT.
*$*$-End:
(4)--------------------------------------------------------------------------------
-$*$*

ENDFORM.

S-ar putea să vă placă și