Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Function module which gives class name

dhananjay_khamkar
Participant
0 Kudos

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.

1 ACCEPTED SOLUTION

christian_wohlfahrt
Active Contributor
0 Kudos

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

9 REPLIES 9

christian_wohlfahrt
Active Contributor
0 Kudos

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

0 Kudos

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.

0 Kudos

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

0 Kudos

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

0 Kudos

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.

0 Kudos

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.

0 Kudos

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

olivergrande
Associate
Associate
0 Kudos

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

0 Kudos

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.