12-31-2005 6:14 AM
Hi All,
I have used classes in my rpogram.
I want to save excise data.
FM 'YMB_POST_GOODS_MOVEMENT' is working fine...
CALL FUNCTION 'YMB_POST_GOODS_MOVEMENT'
EXPORTING
XBLNR_SD =
IMPORTING
EMKPF = LS_EMKPF
TABLES
XMSEG = LT_MSEG
XMKPF = LS_MKPF
XMBEW = LT_MBEW
XMARD = LT_MARD
XMARC = LT_MARC
XEKBE = LT_EKBE
XVM07M = LS_VM07M
XMDCP = LT_MDCP
XPBAT = LT_PBAT
XMCMSEG = LT_MCMSEG
XMCBEST = LT_MCBEST
XMARV = LT_MARV.
ES_EMKPF_OLD = LS_EMKPF.
IF LS_EMKPF-MBLNR IS INITIAL.
MESSAGE S514(L9) WITH ES_EMKPF_OLD-MSGV1.
ELSE.
SET PARAMETER ID 'MBN' FIELD LS_EMKPF-MBLNR.
SET PARAMETER ID 'MJA' FIELD LS_EMKPF-MJAHR.
MESSAGE S012(YM01) WITH 'Material document & posted' LS_EMKPF-MBLNR.
Send message with the new document
LS_KEY-MAT_DOC = LS_EMKPF-MBLNR.
LS_KEY-DOC_YEAR = LS_EMKPF-MJAHR.
CALL METHOD NEW_DOCUMENT
EXPORTING
I_REFDOC = 'R02'.
I_FROM_POSTING = ABAP_TRUE.
IS_KEY = LS_KEY.
************************************************************************
Send a message that a new document has been inserted
************************************************************************
DATA:
I_SYSTEM_MESSAGE TYPE ABAP_BOOL VALUE ' ',
I_DELAYED TYPE ABAP_BOOL VALUE ' ',
I_LATE_UPDATE TYPE ABAP_BOOL VALUE ' ',
I_MESSAGE_ID TYPE TY_MESSAGE_ID,
I_IREF_SENDER TYPE REF TO LIF_MIGO_FRAME,
ME TYPE REF TO LCL_MIGO_CONTROLAREA,
P_QUEUE_MODE TYPE ABAP_BOOL,
L_ID TYPE ES_OBJECT_ID,
L_TYP TYPE OJ_NAME,
BEGIN OF LS_MATDOC,
MBLNR TYPE MBLNR,
MJAHR TYPE MJAHR,
END OF LS_MATDOC.
Send around a message with the goods news
LS_MESSAGE-DATA1 = I_REFDOC.
IF I_FROM_POSTING = ABAP_TRUE.
LS_MESSAGE-DATA2 = 'POSTED'.
ENDIF.
GET REFERENCE OF IS_KEY INTO LS_MESSAGE-DREF.
me = '2<\FUNCTION-POOL=MIGO\CLASS=LCL_MIGO_KERNEL>'.
CALL METHOD LCL_MIGO_FRAME=>MESSAGE_SEND
EXPORTING
I_IREF_SENDER = me
I_MESSAGE_ID = 'NEW_DOCUMENT'
IS_MESSAGE = LS_MESSAGE.
My problem is that I haven't getting value of me.
In MIGO it gives
<u>'2<\FUNCTION-POOL=MIGO\CLASS=LCL_MIGO_KERNEL>'</u>
Class CLASS=LCL_MIGO_KERNEL has been used in FM YMB_post_goods_Movement
It doesn't take above value directly by assigning variable.
Can any one give me idea how to get it....
PLease help Iam new in CLasses And Methods
Thanks In Advance,
Dhanu.
12-31-2005 4:30 PM
Hi Dhanu!
My big question is: which result do you expect by 'message_send'?
But let's start with some explanations:
ME is a special key word. Its a reference to current object.
Let's asume, we have a object e.g. a flight booking with OO-methods. Then you can have several (independent) instances in one program (e.g. booking for two persons). Now inside booking a print ticket might be a printing function. To get two different (correct) names on tickets, inside booking something like 'print this ticket' is needed. Then call me->print <i>inside</i> of booking method will print only ticket of this person.
LCL_MIGO_FRAME is a local class just inside transaction MIGO (because definition and implementation is just inside includes of MIGO-transaction, not available for all via SE24).
It looks like only registered senders and receivers should be handled with this... and you don't seem to be a 'registered' user.
Isn't the message
MESSAGE S012(YM01) WITH 'Material document & posted' LS_EMKPF-MBLNR.
enough? Because a correct 'ME' you can only get in a class-program with an object creation - but a goods movement via BAPI will not use MIGO's methods for screen handling -> and only here inside correct calling would be possible.
Maybe it' easier to search for an other way to get your required (additional) functionality.
Regards,
Christian
12-31-2005 4:30 PM
Hi Dhanu!
My big question is: which result do you expect by 'message_send'?
But let's start with some explanations:
ME is a special key word. Its a reference to current object.
Let's asume, we have a object e.g. a flight booking with OO-methods. Then you can have several (independent) instances in one program (e.g. booking for two persons). Now inside booking a print ticket might be a printing function. To get two different (correct) names on tickets, inside booking something like 'print this ticket' is needed. Then call me->print <i>inside</i> of booking method will print only ticket of this person.
LCL_MIGO_FRAME is a local class just inside transaction MIGO (because definition and implementation is just inside includes of MIGO-transaction, not available for all via SE24).
It looks like only registered senders and receivers should be handled with this... and you don't seem to be a 'registered' user.
Isn't the message
MESSAGE S012(YM01) WITH 'Material document & posted' LS_EMKPF-MBLNR.
enough? Because a correct 'ME' you can only get in a class-program with an object creation - but a goods movement via BAPI will not use MIGO's methods for screen handling -> and only here inside correct calling would be possible.
Maybe it' easier to search for an other way to get your required (additional) functionality.
Regards,
Christian
01-02-2006 7:17 AM
Hi Christian,
Thanks for the reply,
My problem is that Acually I am working on Interface for
GR w.r.t. PO.
PO deatails are in the form of barcode.
Posting of document without excise data has successfuly done .And Right now trying to post excise data .
Excise Data also collected by FM yj1iexgm_process_saving
after that I want to post excise data.
Is it posiblle to post excise data seperately just after posted Mat Doc OR its a necessary to post it at the same time of other data..
If you doesn't mind give u'r email id.
I will send you Complete code used to post Mat Doc.
then u can see........
Thanks Once again.
Dhanu.
01-02-2006 4:41 PM
Hi Dhanu!
As far as I understand, excise data is a special tax stuff - so I thought this is handled automatically by correct customizing with help of PO data.
Then a calling of BAPI_GOODSMVT_CREATE would be enough. If there is an additional posting needed, then still a separate call of <whatever> would be needed, not an internal message info of MIGO.
To get a better understanding: what do you need to do for excise posting? Please give a short 'business' description and code description/example.
Let's stay inside the forum, then you have the chance that other (more experienced) experts can join the discussion.
Regards,
Christian
01-05-2006 9:37 AM
Hi Dhanu!
Have a look at class CL_IM_CIN_PLUG_IN_TO_MIGO. There I found a lot of the excise function modules in coding. I think, when this plug is active, MIGO (and Bapi) will take care of the excise booking themself.
Regards,
Christian
01-06-2006 6:27 AM
Hi Christian,
Thanks I haven seen class given by you .
But problem is that I have created Y program for creating GR w.r.t. po so its not possible to take care of excise data by MIGO itself .
Its complete Y Developement.
It takes PO data in text for.
Split it to respective fields and then post it by bapi_goodsmvt_create. Up to this its OK but this bapi doesn't take care of Excise data thats why I have used function modules.
Please see function module<u> MB_POST_GOODS_MOVEMENT</u>
I am waiting for your answer ..
Thanks An And Regards,
Dhanu.
01-06-2006 6:27 AM
Hi Christian,
Thanks I haven seen class given by you .
But problem is that I have created Y program for creating GR w.r.t. po so its not possible to take care of excise data by MIGO itself .
Its complete Y Developement.
It takes PO data in text for.
Split it to respective fields and then post it by bapi_goodsmvt_create. Up to this its OK but this bapi doesn't take care of Excise data thats why I have used function modules.
Please see function module<u> MB_POST_GOODS_MOVEMENT</u>
I am waiting for your answer ..
Thanks An And Regards,
Dhanu.
01-10-2006 12:09 PM
Hi Dhanu!
Like I see these J1I... function modules: they are only working inside of SAP's standard MIGO transaction. A separate call from an own program will not have necessary global data (like 'me').
I just don't have time to develop an own version on one of my systems - which would be necessary to give you more detailed help, sorry.
So currently I can give you just the hint: try to get this running in exits (BADI) of MIGO instead of calling FM in z-reports. Because I think, MB_POST_GOODS_MOVEMENT should work like the online transaction (and if not, some help of SAP might be given).
Regards,
Christian
01-03-2006 4:18 PM
Hallo Dhanu,
you can use a type describtor:
DATA: my_name TYPE abap_abstypename.
my_name = cl_abap_classdescr=>get_class_name( me )
Please see also the class documentation and the documentation about the <i>RTTS - Run Time Type Services</i> .
Regards,
Oliver
01-05-2006 6:00 AM
Hi All,
Thanks for these replyes.
I am providing the code for Goods Mvt. And Excise data..
Plesae help me
Code to Bapi_Goodamvt_Create.
->
CALL FUNCTION 'BAPI_GOODSMVT_CREATE'
EXPORTING
GOODSMVT_HEADER = GOODSMVT_HEADER
GOODSMVT_CODE = GOODSMVT_CODE
TESTRUN = GM_TESTRUN
IMPORTING
MATERIALDOCUMENT = MATERIALDOCUMENT
MATDOCUMENTYEAR = MATDOCUMENTYEAR
TABLES
GOODSMVT_ITEM = GOODSMVT_ITEM
GOODSMVT_SERIALNUMBER = GOODSMVT_SERIALNUMBER
RETURN = RETURN.
DATA : TJ_1IEXCDTL LIKE J_1IEXCDTL OCCURS 0 WITH HEADER LINE.
IF RETURN IS INITIAL.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = WAIT
IMPORTING
RETURN = RETURN.
IF NOT MATERIALDOCUMENT IS INITIAL.
IF NOT ( MATERIALDOCUMENT IS INITIAL
AND MATDOCUMENTYEAR IS INITIAL ).
********Prepares excise header nad collect excise data ********and save it
PERFORM SIMULATE_EXCISE_HEADER CHANGING MATERIALDOCUMENT MATDOCUMENTYEAR.
IF SY-SUBRC = 0.
MESSAGE S999(YM01) WITH 'Material Document No.'
MATERIALDOCUMENT
' Year '
MATDOCUMENTYEAR.
ENDIF.
ENDIF.
ELSE.
IF RETURN IS INITIAL.
MESSAGE S999(YM01) WITH 'No error(s) found'.
ELSE.
DATA : BEGIN OF ERR_TAB OCCURS 0,
MSGID LIKE SY-MSGID,
MSGTY LIKE SY-MSGTY,
MSGNO LIKE SY-MSGNO,
MSGV1 LIKE SY-MSGV1,
MSGV2 LIKE SY-MSGV2,
MSGV3 LIKE SY-MSGV3,
MSGV4 LIKE SY-MSGV4,
LINENO LIKE MESG-ZEILE,
END OF ERR_TAB.
CLEAR : ERR_TAB.
REFRESH : ERR_TAB.
FREE : ERR_TAB.
LOOP AT RETURN.
ERR_TAB-MSGID = RETURN-ID.
ERR_TAB-MSGTY = RETURN-TYPE.
ERR_TAB-MSGNO = RETURN-NUMBER.
ERR_TAB-MSGV1 = RETURN-MESSAGE_V1.
ERR_TAB-MSGV2 = RETURN-MESSAGE_V2.
ERR_TAB-MSGV3 = RETURN-MESSAGE_V3.
ERR_TAB-MSGV4 = RETURN-MESSAGE_V4.
ERR_TAB-LINENO = RETURN-ROW.
APPEND ERR_TAB.
ENDLOOP.
CALL FUNCTION 'C14Z_MESSAGES_SHOW_AS_POPUP'
TABLES
I_MESSAGE_TAB = ERR_TAB.
ENDIF.
ENDIF.
ENDFORM. " BAPI_GOODS_MVMT
**********For posting excise data*********
FORM SIMULATE_EXCISE_HEADER CHANGING MATERIALDOCUMENT MATDOCUMENTYEAR.
CALL FUNCTION 'YMMF_PREPARE_EXCISE_HEADER'
EXPORTING
IS_GOHEAD = GOHEAD
I_EXNUM = J_1IEXHEAD-EXNUM
I_EXDAT = J_1IEXHEAD-EXDAT
G_MOVEMENT = G_MOVEMENT
IMPORTING
ES_EXHEAD = J_1IEXHEAD.
PERFORM SIMULATE_EXCISE_DETAIL CHANGING MATERIALDOCUMENT MATDOCUMENTYEAR.
********Saves excise data
PERFORM UPDATE_EXCISE CHANGING MATERIALDOCUMENT MATDOCUMENTYEAR.
ENDFORM. " SIMULATE_EXCISE_HEADER
*&----
*
*& Form SIMULATE_EXCISE_DETAIL
*&----
*
text
*----
*
--> p1 text
<-- p2 text
*----
*
FORM SIMULATE_EXCISE_DETAIL CHANGING MATERIALDOCUMENT MATDOCUMENTYEAR.
*
*************Very very important function module to save excise data
********It doesn't save the data but collects the data to be stored
******Added by ddk
DATA : LS_MKPF LIKE MKPF ,
LT_J_1IEXITEM TYPE TABLE OF J_1IEXITEM ,
LT_MSEG LIKE MSEG OCCURS 0 WITH HEADER LINE,
LT_RG23D LIKE TABLE OF J_1IRG23D,
LT_PART2 LIKE J_1IPART2 OCCURS 0 WITH HEADER LINE,
LT_PART1 LIKE TABLE OF J_1IPART1,
LT_GRXREF LIKE TABLE OF J_1IGRXREF,
LT_RGSUM LIKE J_1IRGSUM OCCURS 0 WITH HEADER LINE,
LT_RG1 LIKE TABLE OF J_1IRG1,
LT_GRXSUB LIKE TABLE OF J_1IGRXSUB,
LS_ACCBAL TYPE YMMS_S_ACCBAL OCCURS 0 WITH HEADER LINE,
TJ_1IEXCDTL LIKE TABLE OF J_1IEXCDTL.
SELECT SINGLE * FROM MKPF INTO LS_MKPF
WHERE MBLNR = MATERIALDOCUMENT
AND MJAHR = MATDOCUMENTYEAR.
SELECT * FROM MSEG
INTO TABLE LT_MSEG
WHERE MBLNR = MATERIALDOCUMENT
AND MJAHR = MATDOCUMENTYEAR.
PERFORM GLOBAL_COUNTER.
APPEND TJ_1IEXITEM TO LT_J_1IEXITEM.
MODIFY LT_J_1IEXITEM FROM TJ_1IEXITEM.
CALL FUNCTION 'YNIK_PROCESS_SAVING'
EXPORTING
IS_MKPF = LS_MKPF
G_MOVEMENT = G_MOVEMENT
GS_EXHEAD = J_1IEXHEAD
IMPORTING
ES_EXCHDR = J_1IEXCHDR
TABLES
CT_EXITEM = TJ_1IEXITEM
CT_EXCDTL = TJ_1IEXCDTL
CT_RG23D = LT_RG23D
IT_MSEG = LT_MSEG
CT_ACCIT =
CT_ACCOUNT =
CT_PART2 = LT_PART2
CT_PART1 = LT_PART1
CT_GRXREF = LT_GRXREF
CT_RGSUM = LT_RGSUM
CT_RG1 = LT_RG1
CT_GRXSUB = LT_GRXSUB
CHANGING
CS_EXHEAD = J_1IEXHEAD.
PERFORM UPDATE_EXCISE CHANGING MATERIALDOCUMENT MATDOCUMENTYEAR.
ENDFORM. "SIMULATE_EXCISE_DETAIL
***************added by nik****************************
*********************************************************
*********************************************************
FORM UPDATE_EXCISE CHANGING MATERIALDOCUMENT MATDOCUMENTYEAR.
***************************DATA DECLARATION*******************************
TYPES: TY_MESSAGE_DATA TYPE CHAR25,
BEGIN OF TY_S_MESSAGE,
DATA1 TYPE TY_MESSAGE_DATA,
DATA2 TYPE TY_MESSAGE_DATA,
DREF TYPE REF TO DATA,
OREF TYPE REF TO OBJECT,
END OF TY_S_MESSAGE,
BEGIN OF TY_S_REFDOCKEY,
PO_NUMBER TYPE EBELN,
PO_ITEM TYPE EBELP,
MAT_DOC TYPE MBLNR,
DOC_YEAR TYPE MJAHR,
DELIVERY_NOTE TYPE LFSNR1,
INBOUND_DELIVERY TYPE VBELN_VL,
OUTBOUND_DELIVERY TYPE VBELN_VL,
SHIPPING_UNIT TYPE XVSEL,
TRANSPORT TYPE TKNUM,
TRANSPORTIDENT TYPE TRAID,
TRANSPORT_MEANS TYPE TRATY,
GUID TYPE GUID_22,
REFID TYPE REFID_D,
ORDER_NUMBER TYPE AUFNR,
ORDER_ITEM TYPE CO_POSNR,
ORDER_OPERATION TYPE VORNR,
RESERVATION_NUMBER TYPE RSNUM,
RESERVATION_ITEM TYPE RSPOS,
RESERVATION_TYPE TYPE RSART,
END OF TY_S_REFDOCKEY,
BEGIN OF TY_S_ANSWERS,
RECIPIENT TYPE REF TO LIF_MIGO_FRAME.
INCLUDE TYPE TY_S_MESSAGE.
TYPES:END OF TY_S_ANSWERS,
TY_T_ANSWERS TYPE STANDARD TABLE OF TY_S_ANSWERS
WITH NON-UNIQUE KEY RECIPIENT,
TY_S_GOITEM TYPE GOITEM,
TY_S_EMKPF TYPE EMKPF,
TY_MESSAGE_ID TYPE CHAR40,
TY_TRACE_LINE(150) TYPE C,
BEGIN OF PTY_S_MESSAGE_QUEUE,
MESSAGE_ID TYPE TY_MESSAGE_ID,
SENDER TYPE REF TO LIF_MIGO_FRAME,
MESSAGE TYPE TY_S_MESSAGE,
END OF PTY_S_MESSAGE_QUEUE,
BEGIN OF PTY_S_REGISTERED_MESSAGE,
MESSAGE_ID TYPE TY_MESSAGE_ID,
COMPONENT TYPE REF TO LIF_MIGO_FRAME,
END OF PTY_S_REGISTERED_MESSAGE.
DATA: PT_REGISTERED_SENDERS TYPE HASHED TABLE
OF PTY_S_REGISTERED_MESSAGE
WITH UNIQUE KEY MESSAGE_ID COMPONENT,
PT_REGISTERED_MESSAGES TYPE SORTED TABLE
OF PTY_S_REGISTERED_MESSAGE
WITH NON-UNIQUE KEY MESSAGE_ID.
DATA: LS_EMKPF TYPE TY_S_EMKPF,
LS_VM07M LIKE VM07M OCCURS 0 WITH HEADER LINE,
XVM07M LIKE VM07M OCCURS 0 WITH HEADER LINE,
LS_MKPF LIKE MKPF OCCURS 0 WITH HEADER LINE,
LT_MBEW LIKE MBEW OCCURS 0 WITH HEADER LINE,
LT_MARD LIKE SMARD OCCURS 0 WITH HEADER LINE,
LT_MARC LIKE SMARC OCCURS 0 WITH HEADER LINE,
LT_MARV LIKE SMARV OCCURS 0 WITH HEADER LINE,
LT_EKBE LIKE EKBE OCCURS 0 WITH HEADER LINE,
LT_MDCP LIKE MDCP OCCURS 0 WITH HEADER LINE,
LT_PBAT LIKE PBAT OCCURS 0 WITH HEADER LINE,
LT_MCMSEG LIKE MCMSEG OCCURS 0 WITH HEADER LINE,
LT_MCBEST LIKE MCBEST OCCURS 0 WITH HEADER LINE,
LT_MARM LIKE MARM OCCURS 0 WITH HEADER LINE,
LT_MSEG LIKE MSEG OCCURS 0 WITH HEADER LINE.
DATA: ES_EMKPF_OLD LIKE LS_EMKPF,
TRACE_MESSAGES TYPE ABAP_BOOL,
TRACE_RECEIVERS TYPE ABAP_BOOL,
I_DATA1(50) TYPE C,
I_DATA2(50) TYPE C,
PT_TRACE TYPE STANDARD TABLE OF TY_TRACE_LINE,
POREF_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT,
ET_ANSWERS TYPE TY_T_ANSWERS,
PT_MESSAGE_QUEUE TYPE TABLE OF PTY_S_MESSAGE_QUEUE.
DATA:LS_MESSAGE TYPE TY_S_MESSAGE,
IS_MESSAGE TYPE TY_S_MESSAGE,
I_REFDOC TYPE REFDOC,
I_FROM_POSTING TYPE ABAP_BOOL VALUE ' ',
LS_KEY TYPE TY_S_REFDOCKEY,
IS_KEY TYPE TY_S_REFDOCKEY,
L_TAFKZ TYPE T321-TAFKZ.
CONSTANTS:
ABAP_TRUE TYPE ABAP_BOOL VALUE 'X',
ABAP_FALSE TYPE ABAP_BOOL VALUE ' ',
ABAP_UNDEFINED TYPE ABAP_BOOL VALUE '-',
ABAP_ON TYPE ABAP_BOOL VALUE 'X',
ABAP_OFF TYPE ABAP_BOOL VALUE ' '.
*****************************END OF DATA DECLARATION******************
XBLNR cannot be given to MB_POST because it resets the XBLNR
assigned automatically for Brazil in BUCHEN_NUMMERNVERGABE "qla
SELECT SINGLE * FROM MKPF INTO LS_MKPF
WHERE MBLNR = MATERIALDOCUMENT
AND MJAHR = MATDOCUMENTYEAR.
APPEND LS_MKPF.
SELECT SINGLE * FROM MSEG
INTO LT_MSEG
WHERE MBLNR = MATERIALDOCUMENT
AND MJAHR = MATDOCUMENTYEAR.
APPEND LT_MSEG.
SELECT SINGLE * FROM MBEW
INTO CORRESPONDING FIELDS OF LT_MBEW
WHERE MATNR = GOODSMVT_ITEM-MATERIAL AND BWKEY = GOODSMVT_ITEM-PLANT.
APPEND LT_MBEW.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LT_MARD FROM MARD AS M
INNER JOIN MSEG AS B ON M~MATNR = B~MATNR
INNER JOIN MARV AS A ON A~BUKRS = B~BUKRS
WHERE M~MATNR = GOODSMVT_ITEM-MATERIAL AND M~LGORT = GOODSMVT_ITEM-STGE_LOC.
LT_MARD-XDBUP = 'X'.
APPEND LT_MARD.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LT_MARC FROM MARC AS M
INNER JOIN MSEG AS B ON M~MATNR = B~MATNR
INNER JOIN MARV AS A ON A~BUKRS = B~BUKRS
WHERE M~MATNR = GOODSMVT_ITEM-MATERIAL AND M~WERKS = GOODSMVT_ITEM-PLANT.
APPEND LT_MARC.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LT_MARV
FROM MARV AS A INNER JOIN MSEG AS B ON A~BUKRS = B~BUKRS
INNER JOIN MBEW AS F ON F~MATNR = B~MATNR
WHERE A~BUKRS = TGOITEM-BUKRS.
APPEND LT_MARV.
SELECT SINGLE * FROM EKBE
INTO CORRESPONDING FIELDS OF LT_EKBE
WHERE BELNR = MATERIALDOCUMENT
AND GJAHR = MATDOCUMENTYEAR.
APPEND LT_EKBE.
SELECT SINGLE * FROM T156M "755953
INTO CORRESPONDING FIELDS OF LS_VM07M "755953
WHERE BUSTM = LT_MSEG-BUSTM.
SELECT SINGLE A~ZEILE D~LFGJA D~LFMON BWKEY WEBRE EKORG G~EKGRP B~ERNAM DISMM MTVFP XPBED B~MTART
SPART A~WAERS QSSHK KALN1 A~LIFNR HKMAT B~GEWEI VRGNG KALNR
INTO CORRESPONDING FIELDS OF LS_VM07M
FROM MSEG AS A INNER JOIN
MARA AS B ON B~MATNR = A~MATNR INNER JOIN MARD AS C ON C~MATNR = B~MATNR
INNER JOIN MARC AS D ON D~MATNR = B~MATNR INNER JOIN MKPF AS E ON E~MBLNR = A~MBLNR
INNER JOIN EKKO AS G ON G~EBELN = A~EBELN INNER JOIN MBEW AS F ON F~MATNR = A~MATNR
INNER JOIN EKPO AS X ON X~EBELN = G~EBELN
INNER JOIN T156 AS Y ON Y~BWART = A~BWART
INNER JOIN T156S AS Z ON Z~BWART = A~BWART
WHERE A~MATNR = GOODSMVT_ITEM-MATERIAL AND A~WERKS = GOODSMVT_ITEM-PLANT.
LS_VM07M-ZEILV = LT_MSEG-ZEILE .
LS_VM07M-BWAER = LT_MSEG-WAERS.
LS_VM07M-EK_LIFCH = LT_MSEG-LIFNR.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF LT_MARM FROM MARM AS K
INNER JOIN MSEG AS A ON K~MATNR = A~MATNR.
LS_VM07M-BUMRZ = LT_MARM-UMREZ.
LS_VM07M-BUMRN = LT_MARM-UMREN.
APPEND LS_VM07M.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LT_MDCP FROM MSEG AS A INNER JOIN
MARA AS B ON B~MATNR = A~MATNR INNER JOIN MARD AS C ON C~MATNR = B~MATNR
INNER JOIN MARC AS D ON D~MATNR = B~MATNR INNER JOIN MKPF AS E ON E~MBLNR = A~MBLNR
INNER JOIN EKKO AS F ON F~EBELN = A~EBELN
WHERE A~MATNR = GOODSMVT_ITEM-MATERIAL AND A~WERKS = GOODSMVT_ITEM-PLANT.
APPEND LT_MDCP.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LT_PBAT FROM MSEG AS A INNER JOIN
MARA AS B ON B~MATNR = A~MATNR INNER JOIN MARD AS C ON C~MATNR = A~MATNR
INNER JOIN MARC AS D ON D~MATNR = A~MATNR INNER JOIN MKPF AS E ON E~MBLNR = A~MBLNR
INNER JOIN EKKO AS F ON F~EBELN = A~EBELN
WHERE A~MATNR = GOODSMVT_ITEM-MATERIAL AND A~WERKS = GOODSMVT_ITEM-PLANT.
LT_PBAT-SHKZO = LT_PBAT-SHKZG.
APPEND LT_PBAT.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LT_MCMSEG FROM MSEG AS A INNER JOIN
MARA AS B ON B~MATNR = A~MATNR INNER JOIN MARD AS C ON C~MATNR = A~MATNR
INNER JOIN MARC AS D ON D~MATNR = A~MATNR INNER JOIN MKPF AS E ON E~MBLNR = A~MBLNR
INNER JOIN MBEW AS F ON F~MATNR = A~MATNR
INNER JOIN EKKO AS G ON G~EBELN = A~EBELN
WHERE A~MATNR = GOODSMVT_ITEM-MATERIAL AND A~WERKS = GOODSMVT_ITEM-PLANT.
APPEND LT_MCMSEG.
SELECT SINGLE *
INTO CORRESPONDING FIELDS OF LT_MCBEST FROM MSEG AS A INNER JOIN
MARA AS B ON BMATNR = AMATNR INNER JOIN MARD AS C ON CMATNR = AMATNR
INNER JOIN MARC AS D ON DMATNR = AMATNR INNER JOIN MKPF AS E ON EMBLNR = AMBLNR
INNER JOIN MBEW AS F ON FMATNR = AMATNR
INNER JOIN EKKO AS G ON GEBELN = AEBELN
INNER JOIN S032 AS M ON MLGORT = CLGORT
WHERE AMATNR = GOODSMVT_ITEM-MATERIAL AND AWERKS = GOODSMVT_ITEM-PLANT.
APPEND LT_MCBEST.
CALL FUNCTION 'YNIK_POST_GOODS_MOVEMENT'
EXPORTING
XBLNR_SD =
IMPORTING
EMKPF = LS_EMKPF
TABLES
XMSEG = LT_MSEG
XMKPF = LS_MKPF
XMBEW = LT_MBEW
XMARD = LT_MARD
XMARC = LT_MARC
XEKBE = LT_EKBE
XVM07M = LS_VM07M
XMDCP = LT_MDCP
XPBAT = LT_PBAT
XMCMSEG = LT_MCMSEG
XMCBEST = LT_MCBEST
XMARV = LT_MARV.
ES_EMKPF_OLD = LS_EMKPF.
IF LS_EMKPF-MBLNR IS INITIAL.
MESSAGE S514(L9) WITH ES_EMKPF_OLD-MSGV1.
ELSE.
SET PARAMETER ID 'MBN' FIELD LS_EMKPF-MBLNR.
SET PARAMETER ID 'MJA' FIELD LS_EMKPF-MJAHR.
MESSAGE S012(YM01) WITH 'Material document & posted' LS_EMKPF-MBLNR.
Send message with the new document
LS_KEY-MAT_DOC = LS_EMKPF-MBLNR.
LS_KEY-DOC_YEAR = LS_EMKPF-MJAHR.
CALL METHOD NEW_DOCUMENT
EXPORTING
I_REFDOC = 'R02'.
I_FROM_POSTING = ABAP_TRUE.
IS_KEY = LS_KEY.
************************************************************************
Send a message that a new document has been inserted
************************************************************************
DATA:
I_SYSTEM_MESSAGE TYPE ABAP_BOOL VALUE ' ',
I_DELAYED TYPE ABAP_BOOL VALUE ' ',
I_LATE_UPDATE TYPE ABAP_BOOL VALUE ' ',
I_MESSAGE_ID TYPE TY_MESSAGE_ID,
I_IREF_SENDER TYPE REF TO LIF_MIGO_FRAME,
ME TYPE REF TO LCL_MIGO_CONTROLAREA,
P_QUEUE_MODE TYPE ABAP_BOOL,
L_ID TYPE ES_OBJECT_ID,
L_TYP TYPE OJ_NAME,
BEGIN OF LS_MATDOC,
MBLNR TYPE MBLNR,
MJAHR TYPE MJAHR,
END OF LS_MATDOC.
Send around a message with the goods news
LS_MESSAGE-DATA1 = I_REFDOC.
IF I_FROM_POSTING = ABAP_TRUE.
LS_MESSAGE-DATA2 = 'POSTED'.
ENDIF.
GET REFERENCE OF IS_KEY INTO LS_MESSAGE-DREF.
Data: me type ref to lcl_migo_frame.
me = '2<FUNCTION-POOL=MIGOCLASS=LCL_MIGO_KERNEL>'.
CALL METHOD LCL_MIGO_FRAME=>MESSAGE_SEND
EXPORTING
I_IREF_SENDER = me
I_MESSAGE_ID = 'NEW_DOCUMENT'
IS_MESSAGE = LS_MESSAGE.
****************************************************************
CALL METHOD oref_arch->object_publish_distinct
EXPORTING
i_matdoc_number = ls_emkpf-mblnr
i_matdoc_year = ls_emkpf-mjahr.
ENDIF.
Read the flag stored by TA_AUTOMATISCH (MM07MLVS) to determine
whether a direct call to LT06 (create transport request) is
set up in customizing of table T321.
In this case, we execute COMMIT WORK AND WAIT, so that the
material document is surely on the database as LT06 reads it.
IMPORT LVS_TAFKZ = L_TAFKZ FROM MEMORY ID 'MIGO'. "201156
IF L_TAFKZ = 'X'.
COMMIT WORK AND WAIT. "201156
CALL METHOD RESET.
CALL TRANSACTION 'LT06'. "201156
ELSE. "201156
COMMIT WORK. "201156
*perform commit.
CALL METHOD RESET.
ENDIF. "201156
ENDIF.
ENDFORM. "update_excise
****************************commit commands************************
FORM COMMIT.
**************************************************************************
**************************************************************************
*1)
GP_ACTIVE = EP_ACTIVE.
***************************************************************************
*2)
GT_EKPO = EKPO.
REFRESH GT_EKPO.
REFRESH GT_EKPO_EBELN.
G_EKPO_LINES = 0.
CLEAR REFRESH_FLAG.
*************************************************************************
*3)
REFRESH T_EKBE.
REFRESH T_EKBE_KEYS.
G_EKBE_LINES = 0.
CLEAR REFRESH_FLAG.
**************************************************************************
*4)
CLEAR GD_MLWERE-SUBMITTED.
CLEAR GD_IPOT_TBL.
CLEAR GD_IPOT_TBL[].
********************************************************************************
**5)
REFRESH T_EKBZ.
REFRESH T_EKBZ_KEYS.
G_EKBZ_LINES = 0.
CLEAR REFRESH_FLAG.
************************************************************************************
**6)
REFRESH T_EKKN.
REFRESH T_EKKN_KEYS.
G_EKKN_LINES = 0.
CLEAR REFRESH_FLAG.
*perform save_text_to_db.
*************************************************************************************
**7)
*FORM SAVE_TEXT_TO_DB .
IF G_MOVEMENT-PLANT_IND EQ ABAP_TRUE.
ls_exhead-docno = gs_exchdr-docno.
ls_exhead-docyr = gs_exchdr-docyr.
ls_exhead-trntyp = gs_exchdr-trntyp.
IF G_MOVEMENT-INBOUND EQ ABAP_TRUE.
DATA GS_EXCHDR LIKE J_1IEXCHDR.
GS_EXCHDR = J_1IEXCHDR.
CONCATENATE GS_EXCHDR-TRNTYP GS_EXCHDR-DOCNO
GS_EXCHDR-DOCYR INTO LOC_TDNAME.
ELSE.
CONCATENATE GS_EXCHDR-EXGRP GS_EXCHDR-RDOC
GS_EXCHDR-RYEAR INTO LOC_TDNAME.
ENDIF.
ENDIF.
IF G_MOVEMENT-DEPOT_IND EQ ABAP_TRUE.
IF G_MOVEMENT-INBOUND EQ ABAP_TRUE.
CONCATENATE GS_EXCHDR-RDOC GS_EXCHDR-RYEAR
INTO LOC_TDNAME.
ELSE.
CONCATENATE SY-MANDT GS_EXCHDR-RDOC GS_EXCHDR-RYEAR
INTO LOC_TDNAME.
ENDIF.
ENDIF.
**************************************************************************************
*8)
PERFORM COMMIT_TEXT_TO_DB USING LOC_TDNAME.
PERFORM REFRESH_DATA.
**************************************************************************************
*9)
PERFORM FORM_TRACE USING 'POST_ITEMS_ALL'.
*10)
**************************************************************************************
PERFORM COVER_EL_SET_AVAIL_INDIC(SAPLBPFF) "KI4K064540
USING PARA-DIALOG_UPD IF FOUND. "KI4K064540
****************************************************************************************
**11)
PERFORM INIT_TABLES.
*****************************************************************************************
**12)
******************************************************************************************
REFRESH: TBPIG,
TBPIJ,
TBPTR,
T_BPGE_DELTA,
T_BPJA_DELTA,
G_T_FMREF_POST,
XBPJA,
ZBPJA,
T_OR_PR_COMMIT.
PERFORM INIT_ALL_GLOBALS_AFTER_POSTING USING SPACE.
**********************************************************************
**12)
DATA : XCOMMIT(1) TYPE C,
SAVE_MBLNR LIKE MKPF-MBLNR,
SAVE_XABLN LIKE MKPF-XABLN.
CLEAR: XCOMMIT, SAVE_MBLNR, SAVE_XABLN.
**********************************************************************
**13)
*CLASS LCL_SYNCHRONISATION_SERVICE IMPLEMENTATION.
METHOD CONSTRUCTOR.
Set handler to static event
SET HANDLER ME->ON_AFTER_TRANSACTION.
ENDMETHOD.
METHOD ON_AFTER_TRANSACTION.
CALL FUNCTION 'INIT_EVENT_RAISE'
EXCEPTIONS
WRONG_TUUID = 1.
ENDMETHOD.
*ENDCLASS.
*
ENDFORM. "end of commit
*ENDFORM. "update_excise
*****************************end commit*****************************
**********************************all forms*************************
FORM COMMIT_TEXT_TO_DB USING P_TDNAME.
CALL FUNCTION 'COMMIT_TEXT'
EXPORTING
NAME = P_TDNAME
SAVEMODE_DIRECT = 'X'.
ENDFORM. "commit_text_to_db
***********************************************************************
FORM REFRESH_DATA.
DATA:BEGIN OF IT_THEAD OCCURS 0 .
INCLUDE STRUCTURE THEAD.
*
DATA:
IT_THEAD like thead OCCURS 0 ,
CHANGE,
END OF IT_THEAD.
DATA: TMP_LINE LIKE TLINE OCCURS 0 WITH HEADER LINE,
LOC_HEAD LIKE THEAD,
GT_TEXT LIKE J_1IVTTXID OCCURS 0 WITH HEADER LINE ,
IT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE,
G_FLG_FIRST_TIME VALUE 'X',
P_TDNAME(70) TYPE C.
DATA : CATALOG LIKE TCATALOG OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'GET_TEXT_MEMORY'
TABLES
TEXT_MEMORY = CATALOG.
IF NOT catalog[] IS INITIAL.
CALL FUNCTION 'FREE_TEXT_MEMORY'
EXCEPTIONS
not_found = 1.
ENDIF.
LOOP AT CATALOG WHERE TDOBJECT(3) = 'J1I'.
CALL FUNCTION 'DELETE_TEXT_FROM_CATALOG'
EXPORTING
OBJECT = CATALOG-TDOBJECT
NAME = CATALOG-TDNAME
ID = CATALOG-TDID
LANGUAGE = '*'
LOCAL_CAT = ' '
.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDLOOP.
REFRESH: IT_THEAD, GT_TEXT,IT_LINES .
CLEAR : IT_THEAD, GT_TEXT.
G_FLG_FIRST_TIME = 'X' .
ENDFORM. "refresh_data
******************************************************************************
FORM FORM_TRACE USING ROUTINE.
DATA: TRACE_FLAG TYPE C,
INT0 TYPE I VALUE 0,
ON VALUE 'X'.
CHECK TRACE_FLAG = ON.
PERFORM FILL_TRACE USING ROUTINE SPACE SPACE INT0 INT0.
*
ENDFORM. "FORM_TRACE
*******************************************************************************
FORM COVER_EL_SET_AVAIL_INDIC USING U_DIALOG_UPD TYPE OAX.
CALL FUNCTION 'BP_COVER_EL_SET_AVAIL_INDIC'
EXPORTING
I_DIALOG_UPD = U_DIALOG_UPD.
ENDFORM. "COVER_EL_SET_AVAIL_INDIC
*******************************************************************************
FORM INIT_TABLES.
PERFORM FORM_TRACE USING 'INIT_TABLES'.
DATA: BEGIN OF TBPGE OCCURS 0. "nur für BP_MODIFY_INDEX
INCLUDE STRUCTURE BPGE_ID.
DATA: END OF TBPGE.
DATA: BEGIN OF XPROJ OCCURS 0.
INCLUDE STRUCTURE PROJ.
DATA: END OF XPROJ.
key
DATA: BEGIN OF PROJ_KEY,
MANDT LIKE PROJ-MANDT,
PSPNR LIKE PROJ-PSPNR.
DATA: END OF PROJ_KEY.
*----
prps -
*
DATA: BEGIN OF XPRPS OCCURS 10.
INCLUDE STRUCTURE PRPS.
DATA: END OF XPRPS.
key
DATA: BEGIN OF PRPS_KEY,
MANDT LIKE PRPS-MANDT,
PSPNR LIKE PRPS-PSPNR.
DATA: END OF PRPS_KEY.
*----
budget -
*
Trägerdaten BPTR
von DB gelesene Werte incl. ON COMMIT zu verbuchende Sätze
DATA: BEGIN OF TBPTR OCCURS 0.
INCLUDE STRUCTURE BPTR_ID.
DATA: END OF TBPTR.
Jahresbudget BPJA
DATA: BEGIN OF TBPJA OCCURS 0.
INCLUDE STRUCTURE BPJA_ID.
DATA: PD_OBJNR LIKE PROJ-OBJNR, " Hierachieobjekt
WLGBPX LIKE BPVC-WKGBTR, " GesamtBudget
WLGVRT LIKE BPJA-WLJHR, " verteilt
WLGVFG LIKE BPJA-WLJHR, " verfügt
WLJHR_NCOV LIKE BPJA-WLJHR, " current budget - not for cover
WLJHV_NCOV LIKE BPJA-WLJHV, " distributed budget- not for cov
WLJHR_COV LIKE BPJA-WLJHR, " current budget - for cover
WLJHV_COV LIKE BPJA-WLJHV, " distributed budget - for cover
ANZ_VG TYPE I, " Anzahl Budgetierungsvorgänge
number of calls for repeated check or document chain
purchase order -> goods entry -> invoice
CNT_ORGVG TYPE I,
CHANGED, " Gesamtbudget/Verfüg. verändert
LEVEL_CONV_INDEX LIKE SY-TABIX," Index in der Sammlung der
" Fehlergradänderungstabellen
POTYP TYPE FM_POTYP, " Position type 2-rev 3-exp "nb
NEG_BUD TYPE FM_NEG_BUDGET_FLG," negative budget allowed "nb
VGROUP LIKE TBPFC-VGROUP, "note 523114
KOKRS LIKE TKA01-KOKRS, " n. 726745
END OF TBPJA.
DATA: BEGIN OF TBPJA_OLD OCCURS 0.
INCLUDE STRUCTURE TBPJA.
DATA: END OF TBPJA_OLD.
*begin of insertion note 525002
DATA: BEGIN OF TBPJA_PLAN OCCURS 0.
INCLUDE STRUCTURE TBPJA.
DATA: END OF TBPJA_PLAN.
DATA: RMRU_ERROR.
*end of insertion note 525002
DATA: RMRU. "note695818
ON COMMIT zu verbuchende Deltawerte
DATA: BEGIN OF T_BPJA_DELTA OCCURS 0.
INCLUDE STRUCTURE BPJA_ID.
DATA: END OF T_BPJA_DELTA.
von DB gelesene Werte incl. ON COMMIT zu verbuchende Deltawerte
weil es 1 Commit für mehrere Belege geben kann!
DATA: BEGIN OF XBPJA OCCURS 0.
INCLUDE STRUCTURE BPJA.
DATA: ID,
END OF XBPJA.
Pufferung nur für Verfügt-Sperren-Sätze:
Schon in die Verbuchung abgesetzte,
aber noch nicht gebuchte Verfügungen
(Pufferung Nicht-Verfügt-Sperren-Sätze: XBPJA)
DATA: BEGIN OF ZBPJA OCCURS 0.
INCLUDE STRUCTURE BPJA.
DATA: ID,
END OF ZBPJA.
Arbeitstabelle, die bei der Verfügt-Sperre während
der Rahmen-Exklusiv-Sperre Gültigkeit hat:
von DB gelesene Werte incl. Verfügt-Sperren
anderer Benutzer;
enthält auch XBPJA
DATA: BEGIN OF YBPJA OCCURS 0.
INCLUDE STRUCTURE BPJA.
DATA: ID,
END OF YBPJA.
Geamtbudget BPGE
ON COMMIT zu verbuchende Deltawerte
DATA: BEGIN OF T_BPGE_DELTA OCCURS 0.
INCLUDE STRUCTURE BPGE_ID.
DATA: END OF T_BPGE_DELTA.
*----
index -
*
TBPIJ: Puffer für BP_READ_INDEX
DATA: BEGIN OF TBPIJ OCCURS 0.
INCLUDE STRUCTURE BPIJ_ID.
DATA: END OF TBPIJ.
BPIJ_KEY
DATA: BEGIN OF BPIJ_KEY,
MANDT LIKE BPIJ-MANDT,
CO_OBJNR LIKE BPIJ-CO_OBJNR,
POSIT LIKE BPIJ-POSIT,
TRGKZ LIKE BPIJ-TRGKZ,
WRTTP LIKE BPIJ-WRTTP,
GJAHR LIKE BPIJ-GJAHR,
GEBER LIKE BPIJ-GEBER,
WAERS LIKE BPIJ-WAERS,
GNJHR LIKE BPIJ-GNJHR,
FAREA LIKE BPIJ-FAREA,
END OF BPIJ_KEY.
TBPIG: Puffer für BP_READ_INDEX
DATA: BEGIN OF TBPIG OCCURS 0.
INCLUDE STRUCTURE BPIG_ID.
DATA: END OF TBPIG.
BPIG_KEY
DATA: BEGIN OF BPIG_KEY,
MANDT LIKE BPIG-MANDT,
CO_OBJNR LIKE BPIG-CO_OBJNR,
POSIT LIKE BPIG-POSIT,
TRGKZ LIKE BPIG-TRGKZ,
WRTTP LIKE BPIG-WRTTP,
GEBER LIKE BPIG-GEBER,
WAERS LIKE BPIG-WAERS,
FAREA LIKE BPIG-FAREA,
END OF BPIG_KEY.
*----
ledger -
*
bpcu
DATA: BEGIN OF TBPCU OCCURS 2.
INCLUDE STRUCTURE BPCU.
DATA: END OF TBPCU.
objnr
DATA: BEGIN OF TOBJNR OCCURS 0,
OBJNR LIKE BPJA-OBJNR.
DATA: END OF TOBJNR.
*----
fehlerhafte objekte -
*
DATA: BEGIN OF E_OBJ OCCURS 10,
OBJNR LIKE ONR00-OBJNR,
POSIT LIKE BPJA-POSIT,
FAREA LIKE BPJA-FAREA,
END OF E_OBJ.
icosel
DATA: BEGIN OF ICOSEL OCCURS 0.
INCLUDE STRUCTURE COSEL.
DATA: END OF ICOSEL.
posit
DATA: BEGIN OF TPOSIT OCCURS 0,
POSIT LIKE BPJA-POSIT.
DATA: END OF TPOSIT.
geber
DATA: BEGIN OF TGEBER OCCURS 0,
GEBER LIKE BPJA-GEBER.
DATA: END OF TGEBER.
function area
DATA: BEGIN OF TFAREA OCCURS 0,
FAREA LIKE BPJA-FAREA.
DATA: END OF TFAREA.
wrttp
DATA: BEGIN OF TVALUE OCCURS 1,
WRTTP LIKE BPJA-WRTTP.
DATA: END OF TVALUE.
DATA: BEGIN OF TWRTTP OCCURS 2,
VF_WRTTP LIKE BPJA-WRTTP,
BU_WRTTP LIKE BPJA-WRTTP,
END OF TWRTTP.
value type table for revenue check "nb
DATA: BEGIN OF T_REV_VALUE OCCURS 0, "nb
ASD_VALUE TYPE CO_WRTTP, "nb
BUD_VALUE TYPE CO_WRTTP, "nb
REV_VALUE TYPE CO_WRTTP, "nb
END OF T_REV_VALUE. "nb
vorga
DATA: BEGIN OF TVORGA OCCURS 2,
VORGA LIKE BPJA-VORGA,
END OF TVORGA.
*----Gesammelte Exceptions
DATA: BEGIN OF T_EXCEPTIONS OCCURS 2,
SUBRC LIKE SY-SUBRC,
END OF T_EXCEPTIONS.
*---- Tabelle mit Objekten für Neuaufbau
DATA: BEGIN OF T_OBJ_VK OCCURS 0,
WRTTP LIKE BPIJ-WRTTP,
GJAHR LIKE BPIJ-GJAHR,
GNJHR LIKE BPIJ-GNJHR,
OBJNR LIKE BPIJ-CO_OBJNR,
POSIT LIKE BPIJ-POSIT,
GEBER LIKE BPIJ-GEBER,
FAREA LIKE BPIJ-FAREA,
BUCAR,
POCAR,
NOAVACHECK, "P45K018157
COCAR,
COVER, "Element takes part in cover eligibility
END OF T_OBJ_VK.
*----Schlüssel für T_OBJ_VK
DATA: BEGIN OF T_OBJ_VK_KEY,
WRTTP LIKE BPIJ-WRTTP,
GJAHR LIKE BPIJ-GJAHR,
GNJHR LIKE BPIJ-GNJHR,
OBJNR LIKE BPIJ-CO_OBJNR,
POSIT LIKE BPIJ-POSIT,
GEBER LIKE BPIJ-GEBER,
FAREA LIKE BPIJ-FAREA,
END OF T_OBJ_VK_KEY.
TYPES: BEGIN OF GJAHR,
GJAHR LIKE BPJA-GJAHR,
GNJHR LIKE BPJA-GNJHR,
CARR_DYN LIKE FM01G-CARRDYN,
COVER_ACTIVE LIKE FM01Y-COVER_ACTIV,
FAREA_ACTIVE LIKE FM01-FAREA_ACTIVE,
REV_CHECK TYPE FM_REV_AVA_CHECK, "nb
END OF GJAHR,
T_GJAHR TYPE GJAHR OCCURS 0.
*----Beachte: T_GJAHR und T_GJAHR_GEN müssen
dieselbe Struktur haben
*---- Tabelle mit Geschäftsjahren für Neuaufbau
DATA: T_GJAHR TYPE T_GJAHR WITH HEADER LINE.
*----Tabelle mit Geschäftsjahren allgemein
(auch die GJahre, für die kein Neuaufbau gemacht
wird, aber Änderungen vorgenommen wurden)
DATA: T_GJAHR_GEN TYPE T_GJAHR WITH HEADER LINE.
Verfügungen für Neuaufbau / Schnittstelle HF03_AVAIL....
DATA: BEGIN OF T_BPASE OCCURS 0.
INCLUDE STRUCTURE BPASE.
DATA: END OF T_BPASE.
*----Schlüssel für Zugriff auf T_BPASE
DATA: BEGIN OF BPASE_KEY,
LEDNR LIKE BPASE-LEDNR,
OBJNR LIKE BPASE-OBJNR,
POSIT LIKE BPASE-POSIT,
TRGKZ LIKE BPASE-TRGKZ,
GJAHR LIKE BPASE-GJAHR,
GNJHR LIKE BPASE-GNJHR,
GEBER LIKE BPASE-GEBER,
WRTTP LIKE BPASE-WRTTP,
VORGA LIKE BPASE-VORGA,
TWAER LIKE BPASE-TWAER,
FAREA LIKE BPASE-FAREA,
END OF BPASE_KEY.
DATA : BEGIN OF UP_OBJ OCCURS 0,
OBJNR LIKE BPIN-OBJNR,
UEBNR LIKE BPIN-OBJNR,
FAREA LIKE BPIN-FAREA,
POSIT LIKE BPIN-POSIT,
UEBPS LIKE BPIN-POSIT,
END OF UP_OBJ.
*----Tabelle für 'Weg nach oben'
DATA: BEGIN OF T_UP_OBJ OCCURS 0.
INCLUDE STRUCTURE UP_OBJ.
DATA: BUCAR,
COCAR,
COVER, "cover eligibility
END OF T_UP_OBJ.
Puffer für Verfügtwerte auf Aufträgen ohne Projekt
DATA: BEGIN OF T_OR_COMMIT OCCURS 0,
OBJNR LIKE COSP-OBJNR,
GJAHR LIKE COSP-GJAHR,
COMMIT_K LIKE COSP-WKG001,
COMMIT_O LIKE COSP-WOG001,
END OF T_OR_COMMIT.
DATA: BEGIN OF T_OR_COMMIT_KEY,
OBJNR LIKE COSP-OBJNR,
GJAHR LIKE COSP-GJAHR,
END OF T_OR_COMMIT_KEY.
Puffer für Verfügtwerte auf Aufträgen zum Projekt
DATA: BEGIN OF T_OR_PR_COMMIT OCCURS 0,
KOKRS LIKE BPVC-KOKRS,
OBJNR LIKE BPVC-OBJNR,
TRGKZ LIKE TCJO1-TRGKZ,
AVA_ALL,
GJAHR LIKE BPVC-GJAHR,
DB_IST LIKE BPVC-WKGBTR,
DB_SETTLEMENT LIKE BPVC-WKGBTR,"Abrechnung Ist
DB_PLAN LIKE BPVC-WKGBTR,
TMP_IST LIKE BPVC-WKGBTR,
TMP_SETTLEMENT LIKE BPVC-WKGBTR, "Abrechnung Ist
TMP_PLAN LIKE BPVC-WKGBTR,
NOT_ON_DB, "Es existieren keine Werte auf DB
NO_OLD_TOTALS, "Keine alten Gesamtplanwerte
END OF T_OR_PR_COMMIT.
DATA: BEGIN OF T_OR_PR_COMMIT_KEY,
KOKRS LIKE BPVC-KOKRS,
OBJNR LIKE BPVC-OBJNR,
TRGKZ LIKE TCJO1-TRGKZ,
AVA_ALL,
END OF T_OR_PR_COMMIT_KEY.
Fehlermeldungen pro Buchungssatz
DATA: BEGIN OF TINDEX OCCURS 0,
RFPOS LIKE BPVC-RFPOS,
GJAHR LIKE BPVC-GJAHR,
GNJHR LIKE BPVC-GNJHR,
OBJNR LIKE BPVC-OBJNR, " Orginalobjekt
POSIT LIKE BPVC-POSIT, " Position Orginalobjekt
GEBER LIKE BPVC-GEBER, " Geldgeber
FAREA LIKE BPVC-FAREA, " Funktionsbereich
BP_OBJNR LIKE BPIJ-BP_OBJNR, " Budgetobjekt
BP_POSIT LIKE BPIJ-BP_POSIT, " Position Budgetobjekt
BP_FAREA LIKE BPIJ-BP_FAREA, " Funktion Budgetobjekt
VF_WRTTP LIKE BPIJ-WRTTP, " Verfügt-Werttyp
END OF TINDEX.
*----
bp_check_funds: kommunikation -
*
bpvc
DATA: BEGIN OF XBPVC OCCURS 10.
INCLUDE STRUCTURE BPVC.
data taken from buffer xbpvc_old and inverted for "KI4K043355
activity based initalization is marked with buffer flag "KI4K043355
DATA: BUFFER_FLG, "KI4K043355
END OF XBPVC.
activity based initialization "KI4K041455
DATA: BEGIN OF XBPVC_OLD OCCURS 0. "KI4K041455
INCLUDE STRUCTURE BPVC. "KI4K041455
DATA: CALL_ORGVG LIKE COBK-ORGVG, "KI4K041497
ORGVG_TYPE, "KI4K041497
END OF XBPVC_OLD. "KI4K041455
Meldungsgrad-Konvertierung
*DATA: G_T_LEVEL_CONVERSION TYPE BPAVC_T_LEVEL_CONVERSION
WITH HEADER LINE.
TYPES: BEGIN OF BPAVC_LEVEL_CONVERSION,
ORIG LIKE TBPFC-ACTION,
NEW LIKE TBPFC-ACTION,
END OF BPAVC_LEVEL_CONVERSION,
BPAVC_T_LEVEL_CONVERSION TYPE BPAVC_LEVEL_CONVERSION OCCURS 3,
BPAVC_TT_LEVEL_CONVERSION TYPE BPAVC_T_LEVEL_CONVERSION OCCURS 4.
*----
-
Sammlung der Fehlergradänderungstabellen
DATA: G_T_COL_LEVEL_CONVERSION TYPE BPAVC_TT_LEVEL_CONVERSION.
*----
verfügung -
*
bpvc
DATA: BEGIN OF TMP_BPVC OCCURS 0.
INCLUDE STRUCTURE BPVC.
DATA: END OF TMP_BPVC.
--Tabelle TBPFC mit Einträgen zur aktuellen Applik und Profil---
DATA: BEGIN OF T_TBPFC OCCURS 0.
INCLUDE STRUCTURE TBPFC.
DATA: END OF T_TBPFC.
*----Tabelle TBPFC mit allen Einträgen
DATA: BEGIN OF XTBPFC OCCURS 0.
INCLUDE STRUCTURE TBPFC.
DATA: END OF XTBPFC.
*----Tabelle TBPFD mit allen Einträgen zur Applik
DATA: BEGIN OF XTBPFD OCCURS 0.
INCLUDE STRUCTURE TBPFD.
DATA: END OF XTBPFD.
*----Tabelle TBPFE mit allen Einträgen zur Applik
DATA: BEGIN OF XTBPFE OCCURS 0.
INCLUDE STRUCTURE TBPFE.
DATA: END OF XTBPFE.
Tabelle mit geprüften Objekten
DATA: BEGIN OF T_BPO OCCURS 0,
ORG_OBJNR LIKE BPVC-OBJNR, "bebuchtes Objekt
ORG_POSIT LIKE BPVC-POSIT,
ORG_GEBER LIKE BPVC-GEBER,
ORG_FAREA LIKE BPVC-FAREA,
BIN_OBJNR LIKE BPIJ-CO_OBJNR,
BIN_POSIT LIKE BPIJ-POSIT,
TRGKZ LIKE TCJO1-TRGKZ,
WAERS LIKE BPIJ-WAERS, "Währung der VK für Ledger
PERIV LIKE TKA01-LMONA, "Periodenversion für Ledger
AKTIV, "VK ist aktiv
BHI_OBJNR LIKE BPIJ-BP_OBJNR, "Obj. mit Hierarchieinfo(Profil)
AVA_ALL LIKE BPHI-AVA_ALL, "VK gegen Gesamt
KOKRS LIKE TKA01-KOKRS, "KoKrs des Org.Objektes
FIKRS LIKE FM01-FIKRS, "FiKrs des Org.Objektes
ORG_AUTYP LIKE AUFK-AUTYP, "Auftr.typ des bebuchten Auftr.
POTYP TYPE FM_POTYP, "position type "nb
END OF T_BPO.
DATA: BEGIN OF T_BPO_KEY,
ORG_OBJNR LIKE BPVC-OBJNR,
ORG_POSIT LIKE BPVC-POSIT,
ORG_GEBER LIKE BPVC-GEBER,
ORG_FAREA LIKE BPVC-FAREA,
BIN_OBJNR LIKE BPIJ-CO_OBJNR,
BIN_POSIT LIKE BPIJ-POSIT,
TRGKZ LIKE TCJO1-TRGKZ,
END OF T_BPO_KEY.
Tabelle mit budgettragenden Objekten für ein Buchungsobjekt
DATA: BEGIN OF T_BPO_BT OCCURS 0,
GJAHR LIKE BPIJ-GJAHR, "für GJahr
GNJHR LIKE BPIJ-GNJHR, "Genehmigungsjahr
VF_WRTTP LIKE BPIJ-WRTTP, "Verfügtwerttyp
OBJNR LIKE BPIJ-BP_OBJNR, "budgettragendes Objekt
POSIT LIKE BPIJ-BP_POSIT,
FAREA LIKE BPIJ-BP_FAREA,
VORGA LIKE BPJA-VORGA,
BEKNZ LIKE BPVC-BEKNZ,
DELTA_PW LIKE BPJA-WLJHR, "Deltaplanwert
DELTA_IW LIKE BPJA-WLJHR, "Deltaistwert
POTYP TYPE FM_POTYP, "position type 2-rev 3-exp "nb
NEG_BUD TYPE FM_NEG_BUDGET_FLG, "can carry negative budget "nb
END OF T_BPO_BT.
Zeile mit budgettragenden Objekten für ein Buchungsobjekt
DATA: BPO_BT_LINE LIKE T_BPO_BT.
DATA: BEGIN OF T_BPO_BT_KEY,
GJAHR LIKE BPIJ-GJAHR,
GNJHR LIKE BPIJ-GNJHR,
VF_WRTTP LIKE BPIJ-WRTTP,
END OF T_BPO_BT_KEY.
Tabelle mit Hierachieobjekten aus TBP_HI, die für VK relevant sind
DATA: BEGIN OF T_HIOBJ OCCURS 0,
OBJNR LIKE BPHI-OBJNR,
AVA_ALL LIKE BPHI-AVA_ALL, "VK gegen Gesamt
RELE LIKE BPHI-RELE, "VK gegen Freigaben
AVA LIKE BPHI-AVA, "VK in Objektwährung "MCUR
BPROF LIKE TBP1C-PROFIL, "Budgetprofil
APPLIK LIKE TBP1C-APPLIK, "Applikation
AKT_ART LIKE TBP1C-AKT_ART, "Aktivierungsart
PROZBAT LIKE TBP1C-PROZBAT, "Ausschöpfungsgrad f. L_VCOM
AKTIV, "VK ist aktiv
ACTIVATE, "VK zu aktivieren
END OF T_HIOBJ.
Wie t_hiobj nur mit neuen Einstellungen und Kurstyp "MCUR
DATA: BEGIN OF T_HIOBJ_P_NEW OCCURS 0, "MCUR
OBJNR LIKE BPHI-OBJNR, "MCUR
AVA_ALL LIKE BPHI-AVA_ALL, "VK gegen Gesamt "MCUR
RELE LIKE BPHI-RELE, "VK gegen Freigaben "MCUR
AVA LIKE BPHI-AVA, "VK in Objektwährung "MCUR
BPROF LIKE TBP1C-PROFIL, "Budgetprofil "MCUR
APPLIK LIKE TBP1C-APPLIK, "Applikation "MCUR
AKT_ART LIKE TBP1C-AKT_ART, "Aktivierungsart "MCUR
PROZBAT LIKE TBP1C-PROZBAT, "Ausschöpfungsgrad f. L_VCOM
AKTIV, "VK ist aktiv "MCUR
ACTIVATE, "VK zu aktivieren "MCUR
KURST LIKE TBP1C-KURST,
END OF T_HIOBJ_P_NEW.
Tabelle mit alten Budgetprofileinstellungen
DATA: BEGIN OF T_VK_PAR_IM OCCURS 0, "MCUR
OBJNR LIKE BPHI-OBJNR, "MCUR
AVA_ALL LIKE BPHI-AVA_ALL, "VK gegen Gesamt "MCUR
RELE LIKE BPHI-RELE, "VK gegen Freigaben "MCUR
AVA LIKE BPHI-AVA, "VK in Objektwährung "MCUR
END OF T_VK_PAR_IM. "MCUR
*Flag indicates the first call of BP_MODIFY_INDEX
DATA: L_FIRST_CALL VALUE 'X'.
Table tbp_hi is saved in tbp_hi_old when BP_MODIFY_INDEX is called
for the first time
DATA: TBP_HI_OLD LIKE BPHI_ID OCCURS 100.
Tabelle mit Inv.maßnahmen, für die VK etwas zu tun hat
DATA: BEGIN OF T_OBJ_IM OCCURS 0,
OBJNR LIKE BPJA-OBJNR,
POSIT LIKE BPJA-POSIT,
GEBER LIKE BPJA-GEBER,
FAREA LIKE BPJA-FAREA,
HI_OBJNR LIKE BPHI-OBJNR,
END OF T_OBJ_IM.
Tabelle der flachen Projekte (nur Level 1 PSP-Elemente).
DATA: BEGIN OF T_PROJ_FLAT OCCURS 0,
OBJNR LIKE PROJ-OBJNR,
PSPHI LIKE PRPS-PSPHI,
END OF T_PROJ_FLAT.
Tabelle der Objektnummern von PSP-Elementen, für die " n. 507155
die Prüfungen der VK nicht durchgeführt werden sollen. " n. 507155
DATA: BEGIN OF T_PR_OBJ_EXCL OCCURS 0, " n. 507155
OBJNR LIKE PRPS-OBJNR, " n. 507155
END OF T_PR_OBJ_EXCL. " n. 507155
Tabelle der Objektnummern von Aufträgen, für die " n. 599298
die Prüfungen der VK nicht durchgeführt werden sollen. " n. 599298
DATA: BEGIN OF T_OR_OBJ_EXCL OCCURS 0, " n. 599298
OBJNR LIKE AUFK-OBJNR, " n. 599298
END OF T_OR_OBJ_EXCL. " n. 599298
Tabelle mit Objekten, bei denen ON COMMIT der Systemstatus
"VK aktiv" gesetzt werden soll.
DATA: BEGIN OF T_STAT_OBJNR OCCURS 0,
OBJNR LIKE JEST-OBJNR,
STAT LIKE JEST-STAT,
ACTIVE,
ENQUEUE,
END OF T_STAT_OBJNR.
Tabelle mit bereits aufgerufenen Vorgängen
DATA: BEGIN OF T_ORGVG OCCURS 6,
TYPE, " K = KOSTEN, Z = ZAHLUNGEN
ORGVG LIKE COBK-ORGVG,
ORGVG_SUPPL, " Unterteilung des ORGVG,
" falls mehrere Aufrufe
" unter demselben ORGVG
" innerhalb eines Belegaufrufs
" notwendig
CHECK, "perform availability control?
END OF T_ORGVG.
table with already determined commitment type profiles
DATA: G_T_FM01I LIKE FM01I OCCURS 0 WITH HEADER LINE.
table with commitment type profile assigned to funds management
area in a specified fiscal year
DATA: G_T_BPFPV LIKE TBPFPV OCCURS 0 WITH HEADER LINE.
table with cover eligibility profile assigned to funds management
area in a specified fiscal year
DATA: G_T_BPCEPV LIKE TBPCEPV OCCURS 0 WITH HEADER LINE. "KI4K038529
Verfügt-Sperre ***************************************************
DATA: BEGIN OF G_T_BPJA_ENQ_EX OCCURS 0.
INCLUDE STRUCTURE BPJA_KEY.
DATA: END OF G_T_BPJA_ENQ_EX.
Mailanschluß *****************************************************
*---- Objektdefinition für SAPoffice -
*
DATA: BEGIN OF MAIL_OBJECT_HD OCCURS 2,
MAIL_ID LIKE SY-TABIX.
INCLUDE STRUCTURE SOOD1.
DATA: END OF MAIL_OBJECT_HD.
*---- temporäre Objektnummern im Mail
DATA: BEGIN OF MAIL_TMP_OBJNR OCCURS 0,
MAIL_ID LIKE SY-TABIX,
TMP_OBJNR LIKE IONRA-OBJNR,
END OF MAIL_TMP_OBJNR.
DATA: BEGIN OF T_TMP_OBJNR OCCURS 0,
TMP_OBJNR LIKE IONRA-OBJNR,
OBJNR LIKE IONRA-OBJNR,
TMP_AUFNR LIKE IONRA-AUFNR,
AUFNR LIKE IONRA-AUFNR,
VORNR LIKE AFVC-VORNR,
PSPNR_NEW LIKE PRPS-PSPNR,
END OF T_TMP_OBJNR.
*---- Mail -
*
DATA: BEGIN OF MAIL_HEAD OCCURS 0, "mail header
MAIL_ID LIKE SY-TABIX.
INCLUDE STRUCTURE SOLI.
DATA: END OF MAIL_HEAD.
DATA: BEGIN OF MAIL_CONT OCCURS 5, "contents
MAIL_ID LIKE SY-TABIX.
INCLUDE STRUCTURE SOLI.
DATA: END OF MAIL_CONT.
*---- selection -
*
DATA: BEGIN OF MAIL_PARA OCCURS 0,
MAIL_ID LIKE SY-TABIX.
INCLUDE STRUCTURE SELC.
DATA: END OF MAIL_PARA.
DATA: BEGIN OF MAIL_PARB OCCURS 0,
MAIL_ID LIKE SY-TABIX.
INCLUDE STRUCTURE SOOP1.
DATA: END OF MAIL_PARB.
*---- receivers -
*
DATA: BEGIN OF MAIL_RECEIVERS OCCURS 2,
MAIL_ID LIKE SY-TABIX.
INCLUDE STRUCTURE SOOS1.
DATA: END OF MAIL_RECEIVERS.
*--Tabellen zum Nachlesen von Objekten - TRFM--
*
*----Objekte, von denen Indices ausgehen auf veränderte Objekte hin:
Schlüssel für Jahres-Indices
*DATA: G_T_OBJ_IX TYPE BPAVC_T_OBJ_IX WITH HEADER LINE.
*----Tabelle, die an die T_OBJ angehängt wird:
Nachgelesene Elemente aus allen Durchläufen, da die T_OBJ bei
jedem Durchlauf wieder alle bisher angehängten Sätze durch IMPORT
verliert
DATA: BEGIN OF T_OBJ OCCURS 0,
OBJNR LIKE BPIN-OBJNR, "RW-Objekt
POSIT LIKE BPIN-POSIT, "Position
FAREA LIKE BPIN-FAREA, "Funktionsbereich (FM)
UEBNR LIKE BPIN-UEBNR, "Uebergeordnetes Objekt
UEBPS LIKE BPIN-POSIT, "Uebergeordnete Position
UEBID LIKE SY-TABIX, "Index uebergeordneter Satz
LEVEL TYPE I, "level Hochsummieren
OBJHI LIKE BPIN-OBJHI, "Objekt Tabelle BPHI
GEBER LIKE BPIN-GEBER, "Geldgeber
ID,
READ, "Objekt gelesen
NOINP, "Generell kein Input
NOOUT, "Generell keine Anzeige
NOKABP, "Kein Input Strukturwerte
NOSYNC, "Kein Rollup Jahre
NOSYNCG, "Kein Rollup Gesamt
NOINPG, "Generell kein Input Gesamt
IM_PLAN_BLOCK, "no input due to IM version block "note 173351
NOAVACHECK, "Keine Verfügb. "P45K018157
INTERN, "Satz nur interne Verwendung
EPOS, "Einzelposten schreiben(X=yes) ??
STAKZ, "Objekt ist statistisch(X=yes)
PLINT, "Objekt ist planintegriert(X=yes)
FIXEDPRICE, "Objekt hat Festpreis "P45K018157
BUCAR_PAY, "Budgettraeger Zahlungen
BUCAR_COM, "Budgettraeger Verpfl.
POCAR, "Kontierungstraeger
COCAR_PAY, "Verfügungsträger ZB
COCAR_COM, "Verfügungsträger PB
ERROR, "Ueberschreitung
IND_1, "Individual 1
IND_2, "Individual 2
IND_3, "Individual 3
INDEX(7), "Verbindung CJDI_DISP
KNZAEPO LIKE FMFPO-KNZAEPO, "Positionstyp HHM
NEGBUD LIKE FMCI-NEGBUD, "Negativ budgetierbar "RBNB
CVFLG LIKE VFMPG-CVFLG, "Ausgleichspos HHM "DKOM
UBFLG LIKE VFMPG-UBFLG, "BewirtschKontoHHM "DKOM
TWAER LIKE BPIN-TWAER, "Transaktionswaehrung
CURTYP, "Waehrungstyp
PROF_TAB(3) TYPE N, " line in G_T_TBP1C,
debit type in T_OBJ only necessary for payment "note 98508
scheduling PS (german: Zahlungsplan) because "note 98508
both types can be planned within one transaction: "note 98508
1: Costs and credit-side payments "note 98508
2: Revenues and debit-side payments "note 98508
commit item determines if 1 or 2 "note 98508
BELTP LIKE BPIN-BELTP, "note 98508
profit center for valuation in unit costing (new with 4.5A)
PRCTR LIKE BPIN-PRCTR,
OWAER LIKE BPIN-OWAER, "MCUR
OLEDNR LIKE BPIN-LEDNR, "MCUR
END OF T_OBJ.
DATA: BEGIN OF G_T_OBJ_ERG OCCURS 0.
INCLUDE STRUCTURE T_OBJ.
DATA: END OF G_T_OBJ_ERG.
*----Tabelle für Ausgabenpositionen
DATA: BEGIN OF G_T_EXPEND_POSIT OCCURS 0,
POSIT LIKE BPJA-POSIT,
KNZAEPO LIKE FMFPO-KNZAEPO, "position type FM
NEGBUD TYPE FM_NEG_BUDGET_FLG, "nb
END OF G_T_EXPEND_POSIT.
*----Tabelle mit Objekten, die erst noch geprüft werden
müssen, ehe sie endgültig in T_OBJ_VK aufgenommen
werden
DATA: BEGIN OF T_OBJ_VK_PRELIM OCCURS 0.
INCLUDE STRUCTURE T_OBJ_VK.
DATA: END OF T_OBJ_VK_PRELIM.
*----FM cover eligibility:
reference sender - receiver and amount
DATA: G_T_FMREF LIKE FMREF_ID OCCURS 0 WITH HEADER LINE,
*----Only used for the budgeting side of the AVC:
G_T_OFMREF LIKE FMREF OCCURS 0 WITH HEADER LINE.
reference sender - receiver to be posted ON COMMIT
DATA: G_T_FMREF_POST LIKE FMREF_ID OCCURS 0 WITH HEADER LINE.
reduction of cross assignments on the database
DATA: G_T_FMREF_DB_RED LIKE FMREF OCCURS 0.
*----FM: senders with their available budget (cover eligibility)
TYPES: BEGIN OF BPAVC_SENDER_COV_EL,
OBJNR LIKE FMREF-OBJNR,
POSIT LIKE FMREF-POSIT,
GEBER LIKE FMREF-GEBER,
FAREA TYPE FM_FAREA, "fcov
GJAHR LIKE FMREF-GJAHR,
GNJHR LIKE FMREF-GNJHR, "RI4K001969
WRTTP LIKE FMREF-WRTTP,
COVER_TYP LIKE FMCOVERBUD-COVER_TYP, "internal format: 2
END OF BPAVC_SENDER_COV_EL.
DATA: F_SENDER_COV_EL TYPE BPAVC_SENDER_COV_EL.
TYPES: BEGIN OF SENDER_COV_EL_AVAIL.
INCLUDE STRUCTURE F_SENDER_COV_EL.
TYPES: AVAILABLE LIKE BPJA-WLJHR,
END OF SENDER_COV_EL_AVAIL,
T_SENDER_COV_EL_AVAIL
TYPE SENDER_COV_EL_AVAIL OCCURS 0.
DATA: G_T_SENDER_COV_EL_AVAIL TYPE T_SENDER_COV_EL_AVAIL
WITH HEADER LINE.
TYPES: BEGIN OF BPAVC_SENDER_COV_EL_AVAIL,
OBJNR LIKE FMREF-OBJNR,
POSIT LIKE FMREF-POSIT,
GEBER LIKE FMREF-GEBER,
FAREA TYPE FM_FAREA, "fcov
GJAHR LIKE FMREF-GJAHR,
GNJHR LIKE FMREF-GNJHR,
WRTTP LIKE FMREF-WRTTP,
COVER_TYP LIKE FMCOVERBUD-COVER_TYP, "internal format: 2
AVAIL_INDIC,
END OF BPAVC_SENDER_COV_EL_AVAIL,
BPAVC_T_SENDER_COV_EL_AVAIL
TYPE BPAVC_SENDER_COV_EL_AVAIL OCCURS 0.
DATA: G_T_SENDER_COV_EL_NO_AVAIL TYPE BPAVC_T_SENDER_COV_EL_AVAIL
WITH HEADER LINE.
*----FM: senders with their assigned budget (cover eligibility) "rp
TYPES: BEGIN OF BPAVC_SENDER_ASSIGNED, "rp
OBJNR LIKE FMREF-OBJNR, "rp
POSIT LIKE FMREF-POSIT, "rp
GEBER LIKE FMREF-GEBER, "rp
FAREA TYPE FM_FAREA, "fcov
GJAHR LIKE FMREF-GJAHR, "rp
GNJHR LIKE FMREF-GNJHR, "rp
WRTTP LIKE FMREF-WRTTP, "rp
ASSIGNED LIKE BPJA-WLJHR, "rp
END OF BPAVC_SENDER_ASSIGNED, "rp
BPAVC_T_SENDER_ASSIGNED "rp
TYPE BPAVC_SENDER_ASSIGNED OCCURS 0.
DATA: G_T_SENDER_ASSIGNED TYPE BPAVC_T_SENDER_ASSIGNED "rp
WITH HEADER LINE. "rp
*----buffer of determined FAREA to be checked (User-Exit results)
DATA: BEGIN OF G_T_FAREA_CHECK OCCURS 0,
FM_AREA LIKE FM01-FIKRS,
FAREA LIKE BPIJ-FAREA,
FAREA_CHECK LIKE BPIJ-BP_FAREA,
END OF G_T_FAREA_CHECK.
CLEAR: TBPGE,
TBPJA,
TINDEX,
T_BPASE,
T_GJAHR,
T_GJAHR_GEN,
E_OBJ,
T_STAT_OBJNR,
G_T_FMREF,
G_T_FMREF_DB_RED,
G_T_COL_LEVEL_CONVERSION, "KI4K038009
G_T_SENDER_COV_EL_AVAIL,
G_T_SENDER_COV_EL_NO_AVAIL,
G_T_SENDER_ASSIGNED, "rp
XBPVC_OLD. "KI4K043360
REFRESH: TBPGE,
TBPJA,
G_T_FMREF,
G_T_FMREF_DB_RED,
TINDEX,
T_BPASE,
T_GJAHR,
T_GJAHR_GEN,
E_OBJ,
T_STAT_OBJNR,
G_T_COL_LEVEL_CONVERSION, "KI4K038009
G_T_SENDER_COV_EL_AVAIL,
G_T_SENDER_COV_EL_NO_AVAIL,
G_T_SENDER_ASSIGNED, "rp
XBPVC_OLD. "KI4K043360
LOOP AT T_OR_PR_COMMIT WHERE NOT TMP_IST IS INITIAL OR
NOT TMP_PLAN IS INITIAL.
CLEAR: T_OR_PR_COMMIT-TMP_IST,
T_OR_PR_COMMIT-TMP_PLAN.
MODIFY T_OR_PR_COMMIT.
ENDLOOP.
ENDFORM. "init_tables
********************************************************************************
FORM INIT_ALL_GLOBALS_AFTER_POSTING USING U_ALL_BUFFERS.
PERFORM FORM_TRACE
USING 'INIT_ALL_GLOBALS_AFTER_POSTING'.
Die hier ausgesternten Initialisierungen werden schon innerhalb
der normalen Buchung ausgeführt
initialisation for normal postings once more
IF NOT ( U_ALL_BUFFERS IS INITIAL ).
*PERFORM init_mail.
*PERFORM init_tables.
DATA: BEGIN OF TBPIG OCCURS 0.
INCLUDE STRUCTURE BPIG_ID.
DATA: END OF TBPIG,
BEGIN OF TBPIJ OCCURS 0.
INCLUDE STRUCTURE BPIJ_ID.
DATA: END OF TBPIJ,
BEGIN OF TBPTR OCCURS 0.
INCLUDE STRUCTURE BPTR_ID.
DATA: END OF TBPTR,
BEGIN OF T_BPGE_DELTA OCCURS 0.
INCLUDE STRUCTURE BPGE_ID.
DATA: END OF T_BPGE_DELTA,
BEGIN OF T_BPJA_DELTA OCCURS 0.
INCLUDE STRUCTURE BPJA_ID.
DATA: END OF T_BPJA_DELTA,
G_T_FMREF_POST LIKE FMREF_ID OCCURS 0 WITH HEADER LINE,
BEGIN OF XBPJA OCCURS 0.
INCLUDE STRUCTURE BPJA.
DATA: ID,
END OF XBPJA,
BEGIN OF ZBPJA OCCURS 0.
INCLUDE STRUCTURE BPJA.
DATA: ID,
END OF ZBPJA,
BEGIN OF T_OR_PR_COMMIT OCCURS 0,
KOKRS LIKE BPVC-KOKRS,
OBJNR LIKE BPVC-OBJNR,
TRGKZ LIKE TCJO1-TRGKZ,
AVA_ALL,
GJAHR LIKE BPVC-GJAHR,
DB_IST LIKE BPVC-WKGBTR,
DB_SETTLEMENT LIKE BPVC-WKGBTR,"Abrechnung Ist
DB_PLAN LIKE BPVC-WKGBTR,
TMP_IST LIKE BPVC-WKGBTR,
TMP_SETTLEMENT LIKE BPVC-WKGBTR, "Abrechnung Ist
TMP_PLAN LIKE BPVC-WKGBTR,
NOT_ON_DB, "Es existieren keine Werte auf DB
NO_OLD_TOTALS, "Keine alten Gesamtplanwerte
END OF T_OR_PR_COMMIT.
REFRESH: TBPIG,
TBPIJ,
TBPTR,
T_BPGE_DELTA,
T_BPJA_DELTA,
G_T_FMREF_POST,
XBPJA,
ZBPJA,
T_OR_PR_COMMIT.
ENDIF.
additional initialisations of global data
CLEAR PARA.
PARA-CHECK_FUNDS = 'X'.
PARA-CHECK_FUNDS_FORCE = ' '.
PARA-SOFT_ASS = ' '. "
PARA-ENQUEUE = 'X'.
para-enq_mode = con_enqm_excl.
PARA-ENQ_MODE = CON_ENQM_SHARED.
CLEAR: TBPIG,
TBPIJ,
TBPTR,
T_BPGE_DELTA,
T_BPJA_DELTA,
G_T_FMREF_POST,
XBPJA,
ZBPJA,
T_OR_PR_COMMIT.
DATA: BEGIN OF TBPJA OCCURS 0.
INCLUDE STRUCTURE BPJA_ID.
DATA: PD_OBJNR LIKE PROJ-OBJNR, " Hierachieobjekt
WLGBPX LIKE BPVC-WKGBTR, " GesamtBudget
WLGVRT LIKE BPJA-WLJHR, " verteilt
WLGVFG LIKE BPJA-WLJHR, " verfügt
WLJHR_NCOV LIKE BPJA-WLJHR, " current budget - not for cover
WLJHV_NCOV LIKE BPJA-WLJHV, " distributed budget- not for cov
WLJHR_COV LIKE BPJA-WLJHR, " current budget - for cover
WLJHV_COV LIKE BPJA-WLJHV, " distributed budget - for cover
ANZ_VG TYPE I, " Anzahl Budgetierungsvorgänge
number of calls for repeated check or document chain
purchase order -> goods entry -> invoice
CNT_ORGVG TYPE I,
CHANGED, " Gesamtbudget/Verfüg. verändert
LEVEL_CONV_INDEX LIKE SY-TABIX," Index in der Sammlung der
" Fehlergradänderungstabellen
POTYP TYPE FM_POTYP, " Position type 2-rev 3-exp "nb
NEG_BUD TYPE FM_NEG_BUDGET_FLG," negative budget allowed "nb
VGROUP LIKE TBPFC-VGROUP, "note 523114
KOKRS LIKE TKA01-KOKRS, " n. 726745
END OF TBPJA.
DATA: BEGIN OF TBPJA_OLD OCCURS 0.
INCLUDE STRUCTURE TBPJA.
DATA: END OF TBPJA_OLD.
DATA: BEGIN OF YBPJA OCCURS 0.
INCLUDE STRUCTURE BPJA.
DATA: ID,
END OF YBPJA.
DATA: BEGIN OF XBPVC OCCURS 10.
INCLUDE STRUCTURE BPVC.
data taken from buffer xbpvc_old and inverted for "KI4K043355
activity based initalization is marked with buffer flag "KI4K043355
DATA: BUFFER_FLG, "KI4K043355
END OF XBPVC.
DATA: BEGIN OF XBPVC_OLD OCCURS 0. "KI4K041455
INCLUDE STRUCTURE BPVC. "KI4K041455
DATA: CALL_ORGVG LIKE COBK-ORGVG, "KI4K041497
ORGVG_TYPE, "KI4K041497
END OF XBPVC_OLD.
DATA: BEGIN OF TMP_BPVC OCCURS 0.
INCLUDE STRUCTURE BPVC.
DATA: END OF TMP_BPVC.
DATA: BEGIN OF T_BPO OCCURS 0,
ORG_OBJNR LIKE BPVC-OBJNR, "bebuchtes Objekt
ORG_POSIT LIKE BPVC-POSIT,
ORG_GEBER LIKE BPVC-GEBER,
ORG_FAREA LIKE BPVC-FAREA,
BIN_OBJNR LIKE BPIJ-CO_OBJNR,
BIN_POSIT LIKE BPIJ-POSIT,
TRGKZ LIKE TCJO1-TRGKZ,
WAERS LIKE BPIJ-WAERS, "Währung der VK für Ledger
PERIV LIKE TKA01-LMONA, "Periodenversion für Ledger
AKTIV, "VK ist aktiv
BHI_OBJNR LIKE BPIJ-BP_OBJNR, "Obj. mit Hierarchieinfo(Profil)
AVA_ALL LIKE BPHI-AVA_ALL, "VK gegen Gesamt
KOKRS LIKE TKA01-KOKRS, "KoKrs des Org.Objektes
FIKRS LIKE FM01-FIKRS, "FiKrs des Org.Objektes
ORG_AUTYP LIKE AUFK-AUTYP, "Auftr.typ des bebuchten Auftr.
POTYP TYPE FM_POTYP, "position type "nb
END OF T_BPO.
DATA: BEGIN OF T_BPO_BT OCCURS 0,
GJAHR LIKE BPIJ-GJAHR, "für GJahr
GNJHR LIKE BPIJ-GNJHR, "Genehmigungsjahr
VF_WRTTP LIKE BPIJ-WRTTP, "Verfügtwerttyp
OBJNR LIKE BPIJ-BP_OBJNR, "budgettragendes Objekt
POSIT LIKE BPIJ-BP_POSIT,
FAREA LIKE BPIJ-BP_FAREA,
VORGA LIKE BPJA-VORGA,
BEKNZ LIKE BPVC-BEKNZ,
DELTA_PW LIKE BPJA-WLJHR, "Deltaplanwert
DELTA_IW LIKE BPJA-WLJHR, "Deltaistwert
POTYP TYPE FM_POTYP, "position type 2-rev 3-exp "nb
NEG_BUD TYPE FM_NEG_BUDGET_FLG, "can carry negative budget "nb
END OF T_BPO_BT.
DATA: BEGIN OF T_ORGVG OCCURS 6,
TYPE, " K = KOSTEN, Z = ZAHLUNGEN
ORGVG LIKE COBK-ORGVG,
ORGVG_SUPPL, " Unterteilung des ORGVG,
" falls mehrere Aufrufe
" unter demselben ORGVG
" innerhalb eines Belegaufrufs
" notwendig
CHECK, "perform availability control?
END OF T_ORGVG.
DATA: BEGIN OF T_TMP_OBJNR OCCURS 0,
TMP_OBJNR LIKE IONRA-OBJNR,
OBJNR LIKE IONRA-OBJNR,
TMP_AUFNR LIKE IONRA-AUFNR,
AUFNR LIKE IONRA-AUFNR,
VORNR LIKE AFVC-VORNR,
PSPNR_NEW LIKE PRPS-PSPNR,
END OF T_TMP_OBJNR.
addititonal initialisations of global tables
CLEAR TBPJA_OLD. REFRESH TBPJA_OLD.
CLEAR YBPJA. REFRESH YBPJA.
CLEAR XBPVC. REFRESH XBPVC.
CLEAR XBPVC_OLD. REFRESH XBPVC_OLD. "KI4K041455
CLEAR TMP_BPVC. REFRESH TMP_BPVC.
CLEAR T_BPO. REFRESH T_BPO.
CLEAR T_BPO_BT. REFRESH T_BPO_BT.
CLEAR T_ORGVG. REFRESH T_ORGVG.
CLEAR T_TMP_OBJNR. REFRESH T_TMP_OBJNR.
Refresh buffer of cover eligibility
CALL FUNCTION 'BP_COVER_EL_INIT'. "decoupling IS-PS
PERFORM COVER_EL_INIT(SAPLBPFF) IF FOUND. "KI4K064540
ENDFORM. "init_all_globals_after_posting
Please go through this code .....
Thanks in advance.
Dhanu.