FUNCTION Z02FI_SUN_INF_AFE
.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_ZZAFE) TYPE BSEG-ZZAFE
*" REFERENCE(I_ZZBUKRS) LIKE Z02FITSSDOC_H-ZZBUKRS
*" REFERENCE(I_ZZGJAHR) LIKE Z02FITSSDOC_H-ZZGJAHR
*" REFERENCE(I_ZZBELNR) LIKE Z02FITSSDOC_H-ZZBELNR
*" REFERENCE(I_ZZBUZEI) TYPE BUZEI OPTIONAL
*" VALUE(I_FUNDCTR) TYPE CHAR100 DEFAULT 'petrochinahalfaya'
*" TABLES
*" ZZMSGT STRUCTURE ZZMSGT
*"----------------------------------------------------------------------
DATA : LS_Z02FITSSAFE TYPE Z02FITSSAFE .
DATA : L_OBJNR LIKE JEST -OBJNR .
DATA : L_LINE LIKE BSVX -STTXT .
DATA : LS_PRPS TYPE PRPS .
DATA : L_UP LIKE PRHI - UP .
DATA : L_MSG LIKE Z02FITSSLOG -ZZMSG .
DATA : LS_ZZMSGT TYPE ZZMSGT .
DATA : BEGIN OF LT_BPEG OCCURS 0 ,
BELNR LIKE BPEG -BELNR ,
WTGES LIKE BPEG -WTGES ,
END OF LT_BPEG .
CLEAR :LS_Z02FITSSAFE ,L_OBJNR ,L_LINE ,LS_PRPS ,LT_BPEG ,LT_BPEG[] ,L_UP .
SELECT SINGLE * FROM PRPS INTO LS_PRPS WHERE POSID = I_ZZAFE .
LS_Z02FITSSAFE -ZZAFE = I_ZZAFE .
LS_Z02FITSSAFE -ZZFUNDCTR = I_FUNDCTR .
LS_Z02FITSSAFE -ZZAFE_DESP = LS_Z02FITSSAFE -ZZAFE_NAME = LS_PRPS -POST1 .
SELECT SINGLE UP INTO L_UP FROM PRHI WHERE POSNR = LS_PRPS -PSPNR .
IF L_UP IS NOT INITIAL .
LS_Z02FITSSAFE -ZZAFE_PARENT = L_UP .
ENDIF .
L_OBJNR = LS_PRPS -OBJNR .
CALL FUNCTION 'STATUS_TEXT_EDIT'
EXPORTING
CLIENT = SY -MANDT
OBJNR = L_OBJNR
SPRAS = SY -LANGU
BYPASS_BUFFER = 'X'
IMPORTING
LINE = L_LINE
EXCEPTIONS
OBJECT_NOT_FOUND = 1
OTHERS = 2 .
IF SY -SUBRC EQ 0 .
IF L_LINE CS 'CLSD' .
LS_Z02FITSSAFE -ZZAFE_STATUS = 'Y' .
ELSE .
LS_Z02FITSSAFE -ZZAFE_STATUS = 'N' .
ENDIF .
ENDIF .
SELECT BELNR WTGES INTO TABLE LT_BPEG
FROM BPEG
WHERE OBJNR = LS_PRPS -OBJNR
AND WRTTP = '41' .
SORT LT_BPEG ASCENDING BY BELNR .
LOOP AT LT_BPEG .
CASE SY -TABIX .
WHEN 1 .
LS_Z02FITSSAFE -ZZAFE_AMT_ORI = LT_BPEG -WTGES .
WHEN 2 .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ1 = LT_BPEG -WTGES .
WHEN 3 .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ2 = LT_BPEG -WTGES .
WHEN 4 .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ3 = LT_BPEG -WTGES .
WHEN 5 .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ4 = LT_BPEG -WTGES .
WHEN OTHERS .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ5 = LS_Z02FITSSAFE -ZZAFE_AMT_ADJ5 + LT_BPEG -WTGES .
ENDCASE .
ENDLOOP .
LS_Z02FITSSAFE -ZZAFE_MAX = '0.1' .
MODIFY Z02FITSSAFE FROM LS_Z02FITSSAFE .
IF SY -SUBRC EQ 0 .
COMMIT WORK .
LS_ZZMSGT -ZZMSGTYPE = 'S' .
CONCATENATE 'The AFE information' I_ZZAFE ' was synchronized successfully' INTO LS_ZZMSGT -ZZMSG SEPARATED BY SPACE .
APPEND LS_ZZMSGT TO ZZMSGT .
ELSE .
ROLLBACK WORK .
ENDIF .
ENDFUNCTION .
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_ZZAFE) TYPE BSEG-ZZAFE
*" REFERENCE(I_ZZBUKRS) LIKE Z02FITSSDOC_H-ZZBUKRS
*" REFERENCE(I_ZZGJAHR) LIKE Z02FITSSDOC_H-ZZGJAHR
*" REFERENCE(I_ZZBELNR) LIKE Z02FITSSDOC_H-ZZBELNR
*" REFERENCE(I_ZZBUZEI) TYPE BUZEI OPTIONAL
*" VALUE(I_FUNDCTR) TYPE CHAR100 DEFAULT 'petrochinahalfaya'
*" TABLES
*" ZZMSGT STRUCTURE ZZMSGT
*"----------------------------------------------------------------------
DATA : LS_Z02FITSSAFE TYPE Z02FITSSAFE .
DATA : L_OBJNR LIKE JEST -OBJNR .
DATA : L_LINE LIKE BSVX -STTXT .
DATA : LS_PRPS TYPE PRPS .
DATA : L_UP LIKE PRHI - UP .
DATA : L_MSG LIKE Z02FITSSLOG -ZZMSG .
DATA : LS_ZZMSGT TYPE ZZMSGT .
DATA : BEGIN OF LT_BPEG OCCURS 0 ,
BELNR LIKE BPEG -BELNR ,
WTGES LIKE BPEG -WTGES ,
END OF LT_BPEG .
CLEAR :LS_Z02FITSSAFE ,L_OBJNR ,L_LINE ,LS_PRPS ,LT_BPEG ,LT_BPEG[] ,L_UP .
SELECT SINGLE * FROM PRPS INTO LS_PRPS WHERE POSID = I_ZZAFE .
LS_Z02FITSSAFE -ZZAFE = I_ZZAFE .
LS_Z02FITSSAFE -ZZFUNDCTR = I_FUNDCTR .
LS_Z02FITSSAFE -ZZAFE_DESP = LS_Z02FITSSAFE -ZZAFE_NAME = LS_PRPS -POST1 .
SELECT SINGLE UP INTO L_UP FROM PRHI WHERE POSNR = LS_PRPS -PSPNR .
IF L_UP IS NOT INITIAL .
LS_Z02FITSSAFE -ZZAFE_PARENT = L_UP .
ENDIF .
L_OBJNR = LS_PRPS -OBJNR .
CALL FUNCTION 'STATUS_TEXT_EDIT'
EXPORTING
CLIENT = SY -MANDT
OBJNR = L_OBJNR
SPRAS = SY -LANGU
BYPASS_BUFFER = 'X'
IMPORTING
LINE = L_LINE
EXCEPTIONS
OBJECT_NOT_FOUND = 1
OTHERS = 2 .
IF SY -SUBRC EQ 0 .
IF L_LINE CS 'CLSD' .
LS_Z02FITSSAFE -ZZAFE_STATUS = 'Y' .
ELSE .
LS_Z02FITSSAFE -ZZAFE_STATUS = 'N' .
ENDIF .
ENDIF .
SELECT BELNR WTGES INTO TABLE LT_BPEG
FROM BPEG
WHERE OBJNR = LS_PRPS -OBJNR
AND WRTTP = '41' .
SORT LT_BPEG ASCENDING BY BELNR .
LOOP AT LT_BPEG .
CASE SY -TABIX .
WHEN 1 .
LS_Z02FITSSAFE -ZZAFE_AMT_ORI = LT_BPEG -WTGES .
WHEN 2 .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ1 = LT_BPEG -WTGES .
WHEN 3 .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ2 = LT_BPEG -WTGES .
WHEN 4 .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ3 = LT_BPEG -WTGES .
WHEN 5 .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ4 = LT_BPEG -WTGES .
WHEN OTHERS .
LS_Z02FITSSAFE -ZZAFE_AMT_ADJ5 = LS_Z02FITSSAFE -ZZAFE_AMT_ADJ5 + LT_BPEG -WTGES .
ENDCASE .
ENDLOOP .
LS_Z02FITSSAFE -ZZAFE_MAX = '0.1' .
MODIFY Z02FITSSAFE FROM LS_Z02FITSSAFE .
IF SY -SUBRC EQ 0 .
COMMIT WORK .
LS_ZZMSGT -ZZMSGTYPE = 'S' .
CONCATENATE 'The AFE information' I_ZZAFE ' was synchronized successfully' INTO LS_ZZMSGT -ZZMSG SEPARATED BY SPACE .
APPEND LS_ZZMSGT TO ZZMSGT .
ELSE .
ROLLBACK WORK .
ENDIF .
ENDFUNCTION .