bapi讀budget的代碼
FUNCTION Z02FI_SUN_INF_BUDGET.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_ZZBUDGET) LIKE BSEG-ZZBUDGET
*" 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 OPTIONAL
*"----------------------------------------------------------------------
DATA: LS_HEADERINFO TYPE BAPIPLNHDR,
LT_INDEXSTRUCTURE TYPE TABLE OF BAPIACPSTRU WITH HEADER LINE,
LT_COOBJECT TYPE TABLE OF BAPIPCPOBJ WITH HEADER LINE,
LT_PERVALUE TYPE TABLE OF BAPIPCPVAL WITH HEADER LINE,
LT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
DATA:LS_Z02FITSSBUDG TYPE Z02FITSSBUDG.
DATA: L_BFLAG.
DATA: L_PSPNR LIKE PRPS-PSPNR.
DATA: L_UP LIKE PRHI-UP.
DATA: L_MSG LIKE Z02FITSSLOG-ZZMSG.
DATA: LS_ZZMSGT TYPE ZZMSGT.
DATA:N(2) TYPE N VALUE 12.
FIELD-SYMBOLS: <F_FIELD1>,
<F_FIELD2>.
DATA:L_STR1 TYPE STRING,
L_STR2 TYPE STRING.
CLEAR:LS_HEADERINFO,LT_INDEXSTRUCTURE,LT_INDEXSTRUCTURE[],LT_COOBJECT,LT_COOBJECT[],LT_PERVALUE ,LT_PERVALUE[],LT_RETURN,LT_RETURN[],
L_BFLAG,L_STR1,L_STR2,LS_Z02FITSSBUDG,L_UP,L_PSPNR.
LS_HEADERINFO-CO_AREA = '1000'.
LS_HEADERINFO-FISC_YEAR = I_ZZBUDGET+0(4).
LS_HEADERINFO-PERIOD_FROM = '001'.
LS_HEADERINFO-PERIOD_TO = '012'.
LS_HEADERINFO-VERSION = '0'.
LS_HEADERINFO-PLAN_CURRTYPE = 'C'.
LT_INDEXSTRUCTURE-OBJECT_INDEX = '000001'.
LT_INDEXSTRUCTURE-VALUE_INDEX = '000001'.
APPEND LT_INDEXSTRUCTURE.
LT_COOBJECT-OBJECT_INDEX = '000001'.
LT_COOBJECT-WBS_ELEMENT = I_ZZBUDGET.
APPEND LT_COOBJECT.
LT_PERVALUE-VALUE_INDEX = '000001'.
LT_PERVALUE-COST_ELEM = '9999999999'.
APPEND LT_PERVALUE.
CALL FUNCTION 'BAPI_COSTACTPLN_READPRIMCOST'
EXPORTING
HEADERINFO = LS_HEADERINFO
TABLES
INDEXSTRUCTURE = LT_INDEXSTRUCTURE
COOBJECT = LT_COOBJECT
PERVALUE = LT_PERVALUE
RETURN = LT_RETURN.
READ TABLE LT_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC EQ 0."讀取Budget information有錯誤
L_BFLAG = 'X'.
LOOP AT LT_RETURN.
CLEAR L_MSG.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = LT_RETURN-ID
MSGNR = LT_RETURN-NUMBER
MSGV1 = LT_RETURN-MESSAGE_V1
MSGV2 = LT_RETURN-MESSAGE_V2
MSGV3 = LT_RETURN-MESSAGE_V3
MSGV4 = LT_RETURN-MESSAGE_V4
IMPORTING
MESSAGE_TEXT_OUTPUT = L_MSG.
CONCATENATE 'Read the information of document' I_ZZBELNR 'item' I_ZZBUZEI 'occured error' INTO L_MSG SEPARATED BY SPACE.
CALL FUNCTION 'Z02FI_SUN_INF_SSLOG'
EXPORTING
I_ZZBUKRS = I_ZZBUKRS
I_ZZGJAHR = I_ZZGJAHR
I_ZZBELNR = I_ZZBELNR
I_ZZBUZEI = I_ZZBUZEI
I_ZZMSG = L_MSG
TABLES
ZZMSGT = ZZMSGT.
ENDLOOP.
ELSE."讀取Budget information沒 有錯誤
READ TABLE LT_PERVALUE INDEX 1.
IF SY-SUBRC EQ 0.
DO 12 TIMES.
N = SY-INDEX.
CLEAR: L_STR1,L_STR2.
CONCATENATE 'LS_Z02FITSSBUDG-ZZBUDGET_M' N INTO L_STR1.
ASSIGN (L_STR1) TO <F_FIELD1>.
CONCATENATE 'LT_PERVALUE-VAR_VAL_PER' N INTO L_STR2.
ASSIGN (L_STR2) TO <F_FIELD2>.
<F_FIELD1> = <F_FIELD2>.
ENDDO.
LS_Z02FITSSBUDG-ZZBUDGET = I_ZZBUDGET.
LS_Z02FITSSBUDG-ZZFUNDCTR = I_FUNDCTR.
LS_Z02FITSSBUDG-ZZYEAR = I_ZZBUDGET+0(4).
LS_Z02FITSSBUDG-ZZBUDGST = 'Y'.
SELECT SINGLE PSPNR POST1 INTO (L_PSPNR,LS_Z02FITSSBUDG-ZZBUDGET_DESP) FROM PRPS WHERE POSID = I_ZZBUDGET.
SELECT SINGLE UP INTO L_UP FROM PRHI WHERE POSNR = L_PSPNR.
IF L_UP IS NOT INITIAL.
LS_Z02FITSSBUDG-ZZBUDGET_PARENT = L_UP.
ENDIF.
LS_Z02FITSSBUDG-ZZBUDGET_CURR = 'USD'.
LS_Z02FITSSBUDG-ZZBUDGET_MAX = 0.
MODIFY Z02FITSSBUDG FROM LS_Z02FITSSBUDG."更新數據庫
IF SY-SUBRC EQ 0.
LS_ZZMSGT-ZZMSGTYPE = 'S'.
CONCATENATE 'The Budget' I_ZZBUDGET ' was synchronized successfully' INTO LS_ZZMSGT-ZZMSG SEPARATED BY SPACE.
APPEND LS_ZZMSGT TO ZZMSGT.
COMMIT WORK AND WAIT.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
*"----------------------------------------------------------------------
*"*"Local Interface:
*" IMPORTING
*" REFERENCE(I_ZZBUDGET) LIKE BSEG-ZZBUDGET
*" 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 OPTIONAL
*"----------------------------------------------------------------------
DATA: LS_HEADERINFO TYPE BAPIPLNHDR,
LT_INDEXSTRUCTURE TYPE TABLE OF BAPIACPSTRU WITH HEADER LINE,
LT_COOBJECT TYPE TABLE OF BAPIPCPOBJ WITH HEADER LINE,
LT_PERVALUE TYPE TABLE OF BAPIPCPVAL WITH HEADER LINE,
LT_RETURN TYPE TABLE OF BAPIRET2 WITH HEADER LINE.
DATA:LS_Z02FITSSBUDG TYPE Z02FITSSBUDG.
DATA: L_BFLAG.
DATA: L_PSPNR LIKE PRPS-PSPNR.
DATA: L_UP LIKE PRHI-UP.
DATA: L_MSG LIKE Z02FITSSLOG-ZZMSG.
DATA: LS_ZZMSGT TYPE ZZMSGT.
DATA:N(2) TYPE N VALUE 12.
FIELD-SYMBOLS: <F_FIELD1>,
<F_FIELD2>.
DATA:L_STR1 TYPE STRING,
L_STR2 TYPE STRING.
CLEAR:LS_HEADERINFO,LT_INDEXSTRUCTURE,LT_INDEXSTRUCTURE[],LT_COOBJECT,LT_COOBJECT[],LT_PERVALUE ,LT_PERVALUE[],LT_RETURN,LT_RETURN[],
L_BFLAG,L_STR1,L_STR2,LS_Z02FITSSBUDG,L_UP,L_PSPNR.
LS_HEADERINFO-CO_AREA = '1000'.
LS_HEADERINFO-FISC_YEAR = I_ZZBUDGET+0(4).
LS_HEADERINFO-PERIOD_FROM = '001'.
LS_HEADERINFO-PERIOD_TO = '012'.
LS_HEADERINFO-VERSION = '0'.
LS_HEADERINFO-PLAN_CURRTYPE = 'C'.
LT_INDEXSTRUCTURE-OBJECT_INDEX = '000001'.
LT_INDEXSTRUCTURE-VALUE_INDEX = '000001'.
APPEND LT_INDEXSTRUCTURE.
LT_COOBJECT-OBJECT_INDEX = '000001'.
LT_COOBJECT-WBS_ELEMENT = I_ZZBUDGET.
APPEND LT_COOBJECT.
LT_PERVALUE-VALUE_INDEX = '000001'.
LT_PERVALUE-COST_ELEM = '9999999999'.
APPEND LT_PERVALUE.
CALL FUNCTION 'BAPI_COSTACTPLN_READPRIMCOST'
EXPORTING
HEADERINFO = LS_HEADERINFO
TABLES
INDEXSTRUCTURE = LT_INDEXSTRUCTURE
COOBJECT = LT_COOBJECT
PERVALUE = LT_PERVALUE
RETURN = LT_RETURN.
READ TABLE LT_RETURN WITH KEY TYPE = 'E'.
IF SY-SUBRC EQ 0."讀取Budget information有錯誤
L_BFLAG = 'X'.
LOOP AT LT_RETURN.
CLEAR L_MSG.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = LT_RETURN-ID
MSGNR = LT_RETURN-NUMBER
MSGV1 = LT_RETURN-MESSAGE_V1
MSGV2 = LT_RETURN-MESSAGE_V2
MSGV3 = LT_RETURN-MESSAGE_V3
MSGV4 = LT_RETURN-MESSAGE_V4
IMPORTING
MESSAGE_TEXT_OUTPUT = L_MSG.
CONCATENATE 'Read the information of document' I_ZZBELNR 'item' I_ZZBUZEI 'occured error' INTO L_MSG SEPARATED BY SPACE.
CALL FUNCTION 'Z02FI_SUN_INF_SSLOG'
EXPORTING
I_ZZBUKRS = I_ZZBUKRS
I_ZZGJAHR = I_ZZGJAHR
I_ZZBELNR = I_ZZBELNR
I_ZZBUZEI = I_ZZBUZEI
I_ZZMSG = L_MSG
TABLES
ZZMSGT = ZZMSGT.
ENDLOOP.
ELSE."讀取Budget information沒 有錯誤
READ TABLE LT_PERVALUE INDEX 1.
IF SY-SUBRC EQ 0.
DO 12 TIMES.
N = SY-INDEX.
CLEAR: L_STR1,L_STR2.
CONCATENATE 'LS_Z02FITSSBUDG-ZZBUDGET_M' N INTO L_STR1.
ASSIGN (L_STR1) TO <F_FIELD1>.
CONCATENATE 'LT_PERVALUE-VAR_VAL_PER' N INTO L_STR2.
ASSIGN (L_STR2) TO <F_FIELD2>.
<F_FIELD1> = <F_FIELD2>.
ENDDO.
LS_Z02FITSSBUDG-ZZBUDGET = I_ZZBUDGET.
LS_Z02FITSSBUDG-ZZFUNDCTR = I_FUNDCTR.
LS_Z02FITSSBUDG-ZZYEAR = I_ZZBUDGET+0(4).
LS_Z02FITSSBUDG-ZZBUDGST = 'Y'.
SELECT SINGLE PSPNR POST1 INTO (L_PSPNR,LS_Z02FITSSBUDG-ZZBUDGET_DESP) FROM PRPS WHERE POSID = I_ZZBUDGET.
SELECT SINGLE UP INTO L_UP FROM PRHI WHERE POSNR = L_PSPNR.
IF L_UP IS NOT INITIAL.
LS_Z02FITSSBUDG-ZZBUDGET_PARENT = L_UP.
ENDIF.
LS_Z02FITSSBUDG-ZZBUDGET_CURR = 'USD'.
LS_Z02FITSSBUDG-ZZBUDGET_MAX = 0.
MODIFY Z02FITSSBUDG FROM LS_Z02FITSSBUDG."更新數據庫
IF SY-SUBRC EQ 0.
LS_ZZMSGT-ZZMSGTYPE = 'S'.
CONCATENATE 'The Budget' I_ZZBUDGET ' was synchronized successfully' INTO LS_ZZMSGT-ZZMSG SEPARATED BY SPACE.
APPEND LS_ZZMSGT TO ZZMSGT.
COMMIT WORK AND WAIT.
ELSE.
ROLLBACK WORK.
ENDIF.
ENDIF.
ENDIF.
ENDFUNCTION.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.