Definition of Inactive profit center
Hi,
can anyone explain me the meaning of Inactive Profit center.
By making incative, the posting goes through and if i lock, the postings are blocked. so what is the use of Inactive:Change, which come when I change the status..
Thanks.
inactive profit centres and how to-do procedure
The common practice to prevent postings to inactive profit centre is to lock the profit centre. Inactive does not necessary mean that it is not locked.... it merely meant that it is not longer used for posting. Otherwise, you might want to consider adding text description to indicate the inactive status.
The system does not post data to the changed version of the profit center until you have activated by choosing , thereby replacing the previous active version. When you activate the changed version, the system carries out the necessary checks. However, you can also have the system carry out these checks before activation, by choosing .
If an inactive version of a profit center exists, which you no longer require, remove it by choosing Edit ® Remove Inactive Version. Thereafter, the profit center exists in active status only.
Similar Messages
-
Delete inactive profit center-regarding
hi
i created profit centers under standard hierarchy, now i want to delete some profit centers. i deactivated profit some centers and deleted the same, but deleted profit centers saving in active status. anybody give me solutionHello
T/Code: KE54
Enter profit center.
SCREEN: Delete Profit Center
1. Enter Profit center to be deleted.
2. Click Enter.
II. Mark profit center for deletion.
1. Click on <Mark for deletion>.
2. Click on <Activate>.
3. Click <Yes>.
Next Steps:
No action Required
/ Check how to deactivate the PC before deletion.
Reg
Suresh -
Allocation of Business Partner to a profit center.
Hi,
I had earlier posted a question on how to allocate a BP to a Profit center:
Hi,
Is it possible to allocate a BP to one or more Profit centers when creating a BP Master in SAP;such that, on creation of a marketing document the Profit center is directly picked up instead of selecting it.
Please comment.
Regards,
The answer which solved it is :
Projects can be associated with a Business Partner in the Master data definition but not Profit Center.
Profit Center have associated distribution rules and are linked to G/L account or a transaction at the row level.
You could do this. Create a UDF in the BP Master to enter the profit Center information.
In the Sales Order Rows..in the Profit Center field create a Formatted Search to pull the Profit Center from the BP Master UDF
Example: Let us say your Profit Center User field on the BP Master is called U_PC
then your Formatted Search on the Marketing document would be
SELECT T0.U_PC FROM dbo.OCRD T0 WHERE T0.CardCode = $http://$4.0.0
Set it to Auto Refresh on Item Code ....check Display Saved Values
If you want 2 Profit Centers on the BP Master and the user would select it in the Marketing document then let us presume your UDF's are U_PC1 and U_PC2,
the FMS would be
SELECT T0.U_PC1 FROM dbo.OCRD T0 WHERE T0.CardCode = $http://$4.0.0
UNION ALL
SELECT T0.U_PC2 FROM dbo.OCRD T0 WHERE T0.CardCode = $http://$4.0.0
Suda
Now, since the BP has already been allocated to the profit center anytime a service type credit note is passed which links to a Liability or an "Other" Account type, the profit center still gets allocated.
Can I make any changes to the query such that only Sales or Expenditure account could be allocated to the BP, and any other account if tagged the entry is not tagged with a profit center.
This has become kindof critical for users who check the profit center report, which does not give hte correct figure because of the above issue.
Please advise.Projects can be associated with a Business Partner in the Master data definition but not Profit Center.
Profit Center have associated distribution rules and are linked to G/L account or a transaction at the row level.
You could do this. Create a UDF in the BP Master to enter the profit Center information.
In the Sales Order Rows..in the Profit Center field create a Formatted Search to pull the Profit Center from the BP Master UDF
Example: Let us say your Profit Center User field on the BP Master is called U_PC
then your Formatted Search on the Marketing document would be
<B> <Font Color=BLUE> SELECT T0.U_PC FROM [dbo\].[OCRD\] T0 WHERE T0.CardCode = $\[$4.0.0]
</FONT></B>
Set it to Auto Refresh on Item Code ....check Display Saved Values
If you want 2 Profit Centers on the BP Master and the user would select it in the Marketing document then let us presume your UDF's are U_PC1 and U_PC2,
the FMS would be
<B> <Font Color=BLUE>
SELECT T0.U_PC1 FROM [dbo\].[OCRD\] T0 WHERE T0.CardCode = $\[$4.0.0]
UNION ALL
SELECT T0.U_PC2 FROM [dbo\].[OCRD\] T0 WHERE T0.CardCode = $\[$4.0.0]
</FONT></B>
Suda -
Project with profit center was not created for entire period
Hi everybody,
I need a help with a problem here.
The alert mesage "project with profit center was not created for entire period" was displayed.
Then I searched for the creation dates and the profit center was created before the project gets its firsts postings. Therefore, some line itens don't exist in profit center (ledgers).
My two questions:
The first one, is it possible to input line itens in a retroactive way?
Everytime I need to use the project master data this alert is displayed. How can I fix avoid this message?
Thanks,Hi,
Regarding your issue, it is theoretically possible to reverse all settlements up to the start of the project and then to settle again it
is a must to check in standard if the profit center is valid from the project start date onwards.
Check the attached note 1048945.
The system generates error message KM700 ('Profit center <PRCTR> does not exist for <date>') when you enter a profit center on a project definition if the profit center is not valid in the entire period between the basic start and the basic finish date of the project definition . However, only one warning message should only be generated in this case.
regards
Waman -
Allocation of Sales and Expenditure Accounts only to a profit center.
Hi,
I had earlier posted a question on how to allocate a BP to a Profit center:
Hi,
Is it possible to allocate a BP to one or more Profit centers when creating a BP Master in SAP;such that, on creation of a marketing document the Profit center is directly picked up instead of selecting it.
Please comment.
Regards,
The answer which solved it is :
Projects can be associated with a Business Partner in the Master data definition but not Profit Center.
Profit Center have associated distribution rules and are linked to G/L account or a transaction at the row level.
You could do this. Create a UDF in the BP Master to enter the profit Center information.
In the Sales Order Rows..in the Profit Center field create a Formatted Search to pull the Profit Center from the BP Master UDF
Example: Let us say your Profit Center User field on the BP Master is called U_PC
then your Formatted Search on the Marketing document would be
SELECT T0.U_PC FROM dbo.OCRD T0 WHERE T0.CardCode = $http://$4.0.0
Set it to Auto Refresh on Item Code ....check Display Saved Values
If you want 2 Profit Centers on the BP Master and the user would select it in the Marketing document then let us presume your UDF's are U_PC1 and U_PC2,
the FMS would be
SELECT T0.U_PC1 FROM dbo.OCRD T0 WHERE T0.CardCode = $http://$4.0.0
UNION ALL
SELECT T0.U_PC2 FROM dbo.OCRD T0 WHERE T0.CardCode = $http://$4.0.0
Suda
Now, since the BP has already been allocated to the profit center anytime a service type credit note is passed which links to a Liability or an "Other" Account type, the profit center still gets allocated.
Can I make any changes to the query such that only Sales or Expenditure account could be allocated to the BP, and any other account if tagged the entry is not tagged with a profit center.
This has become critical for users who check the profit center report, which does not give the correct figure because of the above issue.
Please advise.Hi Julie,
Thanks for your reply!
We have recently upgraded to 2005B PL43.
Still it has not helped.
Secondly these report are regularly checked by our Sales manager's hence updating using DTW will be a cumbersome affair.
Is there some query which can update the fields correctly......
E.g. Can the following query be amended to get the correct result:
DECLARE @Type nvarchar(1)
SELECT @Type=T1.ActType FROM OACT T1 WHERE T1.AcctCode=$[$39.94.0]
IF @Type='I'
BEGIN
SELECT T0.U_AT_PC FROM [dbo].[OCRD] T0 WHERE T0.CardCode= $[$4.0.0]
END
ELSE
IF @Type='E'
BEGIN
SELECT T0.U_AT_PC FROM [dbo].[OCRD] T0 WHERE T0.CardCode= $[$4.0.0]
END
ELSE
BEGIN
SELECT u2018u2019
END
Need your advise.
Regards -
How to make a Profit Center to be dummy?
Hi Expert,
My actually profit center is like this:
PC0000, is dummy profit center
PC0001 - PC0009 is normally profit center
Dummy profit center should be created using Tcode: KE59, but I accidentally created my PC0000 using KE51 (and now this profit center is normal profit center, and not dummy).
I have set all other controlling area correctly, and I would like to change my PC0000 to become dummy profit center.
By using change mode, KE52, I cannot tick my PC0000 to be dummy profit center.
Kindly advise.
Thanks an regards,
sbmelHi All,
Thanks for the advice, but sadly to say that I failed to delete my profit center that created wrongly. My steps:
1) I disable the Profit Center Scenario assignment
2) I marked the profit center for deletion
3) I went to SPRO to delete this inactive profit center, test run seems OK, but actual run was not working.
4) After (SPRO) actual run for the inactive profit center deletion, the system actually re-activate back the profit center
After trying several times, I still not managed to delete the profit center.
I used back-door to insert my profit center in table/field, TKA01-DPRCT, in order to make my profit center as dummy profit center. I checked my customization settings, all seem OK, and now pending for transactional data, to see whether the back-door is actually working.
P/S: For my problem of not able to delete profit center, does anyone know what is the actual cause/problem?
Thanks,
sbmel -
Allocation of Sales and Expenditure Accounts to Profit Center.
Hi,
I had earlier posted a question on how to allocate a BP to a Profit center:
Hi,
Is it possible to allocate a BP to one or more Profit centers when creating a BP Master in SAP;such that, on creation of a marketing document the Profit center is directly picked up instead of selecting it.
Please comment.
Regards,
The answer which solved it is :
Projects can be associated with a Business Partner in the Master data definition but not Profit Center.
Profit Center have associated distribution rules and are linked to G/L account or a transaction at the row level.
You could do this. Create a UDF in the BP Master to enter the profit Center information.
In the Sales Order Rows..in the Profit Center field create a Formatted Search to pull the Profit Center from the BP Master UDF
Example: Let us say your Profit Center User field on the BP Master is called U_PC
then your Formatted Search on the Marketing document would be
SELECT T0.U_PC FROM [dbo].[OCRD] T0 WHERE T0.CardCode = $[$4.0.0]
Set it to Auto Refresh on Item Code ....check Display Saved Values
If you want 2 Profit Centers on the BP Master and the user would select it in the Marketing document then let us presume your UDF's are U_PC1 and U_PC2,
the FMS would be
SELECT T0.U_PC1 FROM [dbo].[OCRD] T0 WHERE T0.CardCode = $[$4.0.0]
UNION ALL
SELECT T0.U_PC2 FROM [dbo].[OCRD] T0 WHERE T0.CardCode = $[$4.0.0]
Suda
Now, since the BP has already been allocated to the profit center anytime a service type credit note is passed which links to a Liability or an "Other" Account type, the profit center still gets allocated.
Can I make any changes to the query such that only Sales or Expenditure account could be allocated to the BP, and any other account if tagged the entry is not tagged with a profit center.
Please advise.
Edited by: Vishal Attal on Oct 14, 2008 12:53 PM
Edited by: Vishal Attal on Oct 14, 2008 12:54 PMHi Vishal
Best will be to use the ActType field from OACT to check whether it is an "I" (Income) or "E" (Expenditure) and not an "N" (other) type.
Change query as follows:
SELECT CASE WHEN (SELECT T1.ActType FROM dbo.OACT T1 WHERE T1.AcctCode = $[$39.94.0]) <> 'N' THEN (SELECT T0.U_PC FROM dbo.OCRD T0 WHERE T0.CardCode = $[$4.0.0]) ELSE '' END
Let me know if it works
Kind regards
Peter Juby -
Friends,
Can someone tell me whats the Business reuirement to Lock a Profit center for Postings? Also why do we make a profit center inactive?
Rock
Message was edited by:
rockHi,
You can use the lock indicator to lock a profit center for postings. The lock only applies to the selected time interval. If the profit center is assigned to an object that receives a posting, the system displays an error message and the data is not posted.
<b>In Active</b>
1."Inactive: Create": The profit center is not yet productive (in the active version). When you activate the profit center, it is created as an active version.
2."Inactive: Change": The profit center exists in both an active and an inactive version. When you activate the inactive profit center, this overwrites the active version, so changing it.
3."Inactive: Delete": The profit center has been marked for deletion. When you activate the profit center, it will be deleted.
Regards
Balaji -
Profit Center status is inactive
We have profit centers that we have marked for deletion that is the status is Iactive.
But the system still allows postings to the profit center.
Have we missed a step?
Thanks
Ravi RanaHi,
In PCA you lock the profit center if you do not wish to post to the profit center.
A status of inactive is exactly that ... inactive and not active. This means that the settings you have done are not active in SAP yet. Be careful not to shorten the validity period. You should get a message if this is what you have done. Anyway, you would need to activate the status. You can see that by using the icon near the status field in the Basic Data tab. It will switch between the active and inactive status and if you look at the settings and the validity period you should see where the inactive has the changes but not the active status. Again though inactive means not live in SAP yet and the active status is what SAP checks against.
To activate use the match icon.
Hope it helps ....if it does pl assign points
Regards
Sudhanshut -
Print Sort Code in Profit Center Report
Hi,
i'd like to print the field Sort Code in the 'Profit Center Report by Linked Accounts', from Profit Centre Report, but i'm not able to do.
I can see Profit Centre field, and Name field, but not the Sort Code.
There is a way?
Thank you very much.
Regards
MarcoHi,
You will still get the answer from ERP financials. SAP Business 1 is simply a preconfigured SAP R3 system with the same modules etc. and this question is very definitely a financial module problem.
I am sure that you will get the answer there.
Good luck
Steve B -
Report Painter Report for Profit Center
Hi All,
I am creating a report for profit center in GRR1.I was using library 8A3,& ledger 8A.which uses for PCA line i tems and table used is GLPCT.which shows profit center totals by period.I ran GLPCT in SE16 and found out No data selected.I see that profit center accounting is not active in my system ECC6.0
and I didn't see any line records for profit center in any of the profit center tables.GLPCA.Now if someone knidly suggets me how to achieve this report, can I still do it profit center wise or not? which library should i use in GRR1.The layout of my report is as under.Thanks
CURRENT MONTH*
Current Yr Current Yr Prior Yr
Actual Budget Actual Variance
YEAR TO DATE
Current Yr Current Prior Yr Annual
Actual Budget Actual Budget Variance
Regards
ShaunThanks Abhijit , I can now see my report group at the bottom of the list .I assigned you full points.I posted another question regarding report painter .If you could also give me some guidance on that.When I was creating rows and updating cost elements with account numbers.I set up 3 revenue accounts and then ran the report to see if I get any data for profit centers.I did get data but when I double clicked on one of the account,it displays this messsage.I read the msg. but could not make any sense with it.for example in definning row I put account number from/to 400000- 400000 Explode. and thats a characteristic.
No valid master data for characteristic 'Account Number'
Report MEG1 does not contain any data pages.
No valid master data for characteristic 'Account Number'
Message no. GR633
Diagnosis
No valid master data within the specified interval was found for the characteristic 'Account Number'.
Explanation:
For each characteristic that is processed in a report, the Report Writer optimizes the interval limits which are relevant for selecting data from the database.
Example:
A report contains the characteristic 'account', for which an account interval from 100000 to 200000 has been entered. However, if the master data validation shows that the lowest/highest account in this interval is 110000/190000, the selection will be limited to accounts 110000 to 190000 only.
The system returns this error message if no master data exists for the interval.
This error is typically caused by an invalid version. In FI-SL Special Purpose Ledger, for example, versions are assigned to the ledger and are defined in configuration. The report definition can then contain a non-defined version. A similar situation applies to controlling (cost center accounting): here, versions are assigned to the controlling area and fiscal year and can be defined in planning.
Another cause of this error is a ledger that is not assigned to the table for which the report was created.
Technical information:
The field name for 'Account Number' is 'RACCT'.
System Response
The system cancels processing.
Procedure
Check the report definition, or the specified master data, or the intervals.
Regards
Shaun -
Calculation of customer payment performance by profit center
I want to calculate customer payment performance by profit center it is a report.
Caluation clue.
<b>Performance is a measure of when the payment was made versus the due date calculated by the payment terms</b>.
i want the logic to be included in the following code.
REPORT
TABLE DECLARATIONS
TABLES: BFOD_A, "FI subsequent BA/PC adjustment: Customer items
BSID, "Open Items
BSAD, "Cleared Items
BKPF, "Docuemnt Header
KNA1, "Customer Master
CEPCT, "Texts for Profit Center Master Data
CEPC, "Profit center master data table
SKB1, "G/L account master
VBFA, "Sales Document Flow
VBAK. "Sales Document: Header Data
CONTROLS: TABAGING TYPE TABLEVIEW USING SCREEN 9000.
FIELD-SYMBOLS: <COLUMN>.
Internal tables followed by types
TYPES: BEGIN OF T_TOTAL,
WAERS LIKE COEP-TWAER,
DAYS01 LIKE COEP-WTGBTR,
DAYS02 LIKE COEP-WTGBTR,
DAYS03 LIKE COEP-WTGBTR,
DAYS04 LIKE COEP-WTGBTR,
DAYS05 LIKE COEP-WTGBTR,
TOTAL LIKE COEP-WTGBTR,
END OF T_TOTAL.
DATA: V_DISVARIANT TYPE DISVARIANT,
REF_CUSTOM TYPE REF TO CL_GUI_CUSTOM_CONTAINER,
REF_ALV_ZRPT TYPE REF TO CL_GUI_ALV_GRID.
DATA: V_SAVE(1) TYPE C,
V_DEFAULT(1) TYPE C,
V_VARIANT TYPE DISVARIANT,
V_SORT TYPE LVC_S_SORT,
V_LAYOUT TYPE LVC_S_LAYO,
V_SAVE_TABIX LIKE SY-TABIX,
V_SAVE_TIME LIKE SY-UZEIT,
V_ALV_FIELDCAT TYPE LVC_S_FCAT,
V_SAVE_INDEX LIKE SY-TABIX,
V_ROW TYPE LVC_S_ROW,
V_ROWS TYPE LINE OF LVC_T_ROW.
DATA: BEGIN OF V_HDR,
CURKY(9) TYPE C,
CURR(20) TYPE C,
COL1(20) TYPE C,
COL2(20) TYPE C,
COL3(20) TYPE C,
COL4(20) TYPE C,
TOTAL(20) TYPE C,
END OF V_HDR.
DATA: BEGIN OF V_FIELD,
NAME(15) TYPE C,
VALUE(17) TYPE C,
END OF V_FIELD.
DATA: BEGIN OF I_BFOD_A OCCURS 0,
PRCTR LIKE BFOD_A-PRCTR,
KUNNR LIKE BFOD_A-KUNNR,
BUKRS LIKE BFOD_A-BUKRS,
GJAHR LIKE BFOD_A-GJAHR,
BELNR LIKE BFOD_A-BELNR,
BUZEI LIKE BFOD_A-BUZEI,
AUGDT LIKE BFOD_A-AUGDT,
HKONT LIKE BFOD_A-HKONT,
BUDAT LIKE BFOD_A-BUDAT,
SHKZG LIKE BFOD_A-SHKZG,
DMBTR LIKE BFOD_A-DMBTR,
DMBE2 LIKE BFOD_A-DMBE2,
END OF I_BFOD_A.
DATA: I_SET_VALUES LIKE SETVALUES OCCURS 0 WITH HEADER LINE,
I_SORT TYPE LVC_T_SORT,
I_ALV_FIELDCAT TYPE LVC_T_FCAT,
I_PRCTR_COCD TYPE FCINPCA001 OCCURS 0 WITH HEADER LINE,
I_BFODA_KUNNR LIKE I_BFOD_A OCCURS 0 WITH HEADER LINE,
Begin of changes for DEVK909110
I_REPORT TYPE ZFR0ARPR_S1 OCCURS 0 WITH HEADER LINE,
I_REPORT TYPE ZPSS_ARBYPC OCCURS 0 WITH HEADER LINE,
End of changes for DEVK909110
I_FAEDE LIKE FAEDE,
I_TOTAL TYPE T_TOTAL OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF I_BKPF OCCURS 0,
BUKRS LIKE BKPF-BUKRS,
BELNR LIKE BKPF-BELNR,
GJAHR LIKE BKPF-GJAHR,
BKTXT LIKE BKPF-BKTXT,
XBLNR LIKE BKPF-XBLNR,
HWAER LIKE BKPF-HWAER,
HWAE2 LIKE BKPF-HWAE2,
END OF I_BKPF.
*... combine BSAD and BSID
DATA: BEGIN OF I_BSYD OCCURS 0,
KUNNR LIKE BSID-KUNNR,
BUKRS LIKE BSID-BUKRS,
GJAHR LIKE BSID-GJAHR,
BELNR LIKE BSID-BELNR,
BUZEI LIKE BSID-BUZEI,
AUGDT LIKE BSID-AUGDT,
BLDAT LIKE BSID-BLDAT,
BUDAT LIKE BSID-BUDAT,
HKONT LIKE BSID-HKONT,
WAERS LIKE BSID-WAERS,
ZFBDT LIKE BSID-ZFBDT,
ZBD1T LIKE BSID-ZBD1T,
ZBD2T LIKE BSID-ZBD2T,
ZBD3T LIKE BSID-ZBD3T,
XBLNR LIKE BSID-XBLNR,
REBZG LIKE BSID-REBZG,
SHKZG LIKE BSID-SHKZG,
DMBTR LIKE BSID-DMBTR,
WRBTR LIKE BSID-WRBTR,
END OF I_BSYD.
DATA: BEGIN OF I_CEPC OCCURS 0,
PRCTR LIKE CEPC-PRCTR,
KHINR LIKE CEPC-KHINR,
END OF I_CEPC.
DATA: BEGIN OF I_CEPCT OCCURS 0,
PRCTR LIKE CEPCT-PRCTR,
MCTXT LIKE CEPCT-MCTXT,
END OF I_CEPCT.
DATA: BEGIN OF I_PRCTR OCCURS 0,
PRCTR LIKE BFOD_A-PRCTR,
END OF I_PRCTR.
DATA: BEGIN OF I_KNA1 OCCURS 0,
KUNNR LIKE KNA1-KUNNR,
NAME1 LIKE KNA1-NAME1,
END OF I_KNA1.
Working Variables Declarations
*... accumulators
DATA: V_BFOD_TXNAMT LIKE BSID-WRBTR, "transaction currency amt
V_FRCURR LIKE TCURR-FCURR, "local currency
V_TOCURR LIKE TCURR-FCURR, "local currency
V_LCURR LIKE T001-WAERS, "local currency
V_CUSTTOTUSD LIKE BFOD_A-DMBE2, "customer total grp curr
V_TOTAL LIKE BPPE-WTP03, "days total grp curr
V_CURRENT LIKE BPPE-WTP03, "days current grp curr
V_TOTAL_USD LIKE BPPE-WTP03, "days total grp curr
V_TOTAL_ROW LIKE BPPE-WTP03. "total of local curr/row
DATA: V_PRCTR LIKE CEPC-PRCTR, "profit center
V_SUBRC LIKE SY-SUBRC,
V_FLAG TYPE I,
V_DPAST TYPE I, "past due days working
V_GRAND TYPE C,
V_DIFF_COLOR TYPE C,
V_MSG(50) TYPE C,
V_SAVE_PCFN(128) TYPE C,
V_EXTENSION(4) TYPE C,
V_PREV_PRCTR LIKE CEPC-PRCTR,
V_POS LIKE SY-FDPOS,
V_SAVE_BUKRS LIKE BFOD_A-BUKRS,
V_SAVE_KHINR LIKE CEPC-KHINR,
V_PERC TYPE P DECIMALS 10,
V_ZBD1T LIKE BSID-ZBD1T,
V_ZFBDT LIKE BSID-ZFBDT,
V_GROUP_CLASS LIKE RGSBS-CLASS,
V_GROUP_NAME LIKE RGSBS-SETNR,
V_GROUP_TITLE LIKE RGSBS-TITLE,
V_SETID LIKE SETHIER-SETID,
V_FILETYPE LIKE RLGRAP-FILETYPE VALUE 'DAT',
V_CNT LIKE SY-TABIX,
V_PREV_BELNR LIKE BSID-BELNR,
V_REPORT1 LIKE I_REPORT,
V_REPORT LIKE I_REPORT,
V_TABIX LIKE SY-TABIX.
Constants
CONSTANTS:
C_0H(2) TYPE C VALUE '0H',
C_0106(4) TYPE C VALUE '0106',
C_SPACE(11) TYPE C VALUE ' ',
C_USD(3) TYPE C VALUE 'USD',
C_KBRC LIKE CEPC-KOKRS VALUE 'KBRC',
C_TXT(4) TYPE C VALUE '.txt',
C_XLS(4) TYPE C VALUE '.xls',
C_RTF(4) TYPE C VALUE '.rtf',
C_PERIOD(1) TYPE C VALUE '.',
C_TODATE LIKE CEPC-DATBI VALUE '99991231'.
RANGES: R_KUNNR FOR KNA1-KUNNR. "Customer
Selection Screen Parameters and Select-options
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS: P_KHINR LIKE CEPC-KHINR.
SELECT-OPTIONS: S_PRCTR FOR CEPC-PRCTR,
S_KUNNR FOR KNA1-KUNNR,
S_BUKRS FOR BKPF-BUKRS,
S_HKONT FOR SKB1-SAKNR.
PARAMETERS: P_BUDAT LIKE BFOD_A-BUDAT OBLIGATORY.
SELECTION-SCREEN ULINE.
SELECT-OPTIONS: S_BELNR FOR BFOD_A-BELNR,
S_AUART FOR VBAK-AUART,
S_VTWEG FOR VBAK-VTWEG,
S_VBTYP FOR VBFA-VBTYP_V.
SELECTION-SCREEN ULINE.
PARAMETERS: P_AGEDY TYPE ZZAGEMULT DEFAULT '30' OBLIGATORY.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN SKIP.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME.
PARAMETERS: P_DSVAR LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK B2.
class lcl_event_receiver: local class to handle event DOUBLE_CLICK
Definition:
CLASS LCL_EVENT_RECEIVER DEFINITION.
PUBLIC SECTION.
METHODS:
MTH_PRINT_TOP_OF_PAGE
FOR EVENT PRINT_TOP_OF_PAGE OF CL_GUI_ALV_GRID.
METHODS:
MTH_PRINT_TOP_OF_LIST
FOR EVENT PRINT_TOP_OF_LIST OF CL_GUI_ALV_GRID.
PRIVATE SECTION.
ENDCLASS. "lcl_event_receiver DEFINITION
class lcl_event_receiver: local class to handle event DOUBLE_CLICK
Implementation:
CLASS LCL_EVENT_RECEIVER IMPLEMENTATION.
METHOD MTH_PRINT_TOP_OF_PAGE.
CALL FUNCTION 'Z_CA_STD_HEADER'
EXPORTING
HEADING = SY-TITLE
P_REPID = SY-CPROG
LINE_WIDTH = SY-LINSZ.
ENDMETHOD. "MTH_PRINT_TOP_OF_PAGE
METHOD MTH_PRINT_TOP_OF_LIST.
CALL FUNCTION 'Z_CA_STD_HEADER'
EXPORTING
HEADING = SY-TITLE
P_REPID = SY-CPROG
LINE_WIDTH = SY-LINSZ.
CALL FUNCTION 'Z_CA_PRINT_SELECTION_OPTIONS'
EXPORTING
P_PGMN = SY-CPROG
P_SKIP = 'X'
P_NOTOP = 'X'.
NEW-PAGE.
ENDMETHOD. "MTH_PRINT_TOP_OF_LIST
ENDCLASS. "LCL_EVENT_RECEIVER IMPLEMENTATION
DATA: REF_EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER.
Selection Screen Prompt values
At Selection Screen
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_DSVAR.
DATA: LS_DISPLAY_VARIANT TYPE DISVARIANT.
Get the display variant
V_DISVARIANT-REPORT = SY-CPROG.
V_DISVARIANT-VARIANT = P_DSVAR.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = V_DISVARIANT
I_SAVE = 'A'
IMPORTING
ES_VARIANT = LS_DISPLAY_VARIANT
EXCEPTIONS
OTHERS = 3.
Load results to parameter
IF SY-SUBRC = 0 AND NOT LS_DISPLAY_VARIANT IS INITIAL.
P_DSVAR = LS_DISPLAY_VARIANT-VARIANT.
ENDIF.
*...performed when looking for values in fields
performs the drop down selection list
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_KHINR. "Profit center grp
PERFORM F_GET_S_KHINR.
Selection Screen validations
AT SELECTION-SCREEN.
IF P_KHINR IS INITIAL.
IF S_PRCTR[] IS INITIAL.
IF S_BUKRS[] IS INITIAL.
MESSAGE E000 WITH TEXT-300 TEXT-302.
ENDIF.
ENDIF.
ELSE.
IF S_PRCTR[] IS INITIAL.
PERFORM F_VALIDATE_KHINR.
ELSE.
*.. Error msg: Please enter either a Profit Center Group or a
profit center, but not both
MESSAGE E000 WITH TEXT-300 TEXT-301.
EXIT.
ENDIF.
ENDIF.
IF NOT S_AUART[] IS INITIAL.
MESSAGE E000 WITH TEXT-303.
ENDIF.
IF NOT S_VTWEG[] IS INITIAL.
MESSAGE E000 WITH TEXT-304.
ENDIF.
Event AT LINE-SELECTION
AT LINE-SELECTION.
CHECK SY-LSIND LE 1.
CHECK NOT I_REPORT-BELNR IS INITIAL.
SET PARAMETER ID 'BLN' FIELD I_REPORT-BELNR.
SET PARAMETER ID 'BUK' FIELD I_REPORT-BUKRS.
SET PARAMETER ID 'GJR' FIELD I_REPORT-GJAHR.
CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
CLEAR: I_REPORT-BELNR, I_REPORT-BUKRS, I_REPORT-GJAHR.
INITIALIZATION
INITIALIZATION.
START OF MAIN PROCESSING
START-OF-SELECTION.
Check aging days multiplier
IF P_AGEDY LE 0.
MESSAGE S000 WITH 'Aging Days Multiplier must be greater than zero'.
EXIT.
ENDIF.
Populate the s_prctr from a profit center group
IF NOT I_SET_VALUES[] IS INITIAL.
PERFORM F_POPULATE_PRCTR_FROM_PRCTRGRP.
ENDIF.
Build and validate prctr against cepc table
IF NOT S_PRCTR[] IS INITIAL.
PERFORM F_BUILD_I_CEPC_TABLE. "FILLS THE VALID PROFIT CTR TABLE
ENDIF.
Get base selections
PERFORM F_SELECT_DATA. "BUILD REF INTERNAL TABLES
Get additional fields and build reporting structure
PERFORM F_BUILD_I_REPORT. "BUILDS INTERNAL REPORTING TABLE
Generate ALV report
PERFORM F_WRITE_REPORT. "WRITES i_report AND RUNS CALCS
END-OF-SELECTION.
FREE: I_BFOD_A, I_KNA1, I_CEPC, I_CEPCT, I_REPORT.
Form F_DIS_MSG
FORM F_DIS_MSG USING VALUE(P_PERCENTAGE) VALUE(P_TEXT).
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = P_PERCENTAGE
TEXT = P_TEXT
EXCEPTIONS
OTHERS = 1.
ENDFORM. " F_DIS_MSG
Form F_GET_S_KHINR
Get prompt values for Profit Center Group
FORM F_GET_S_KHINR.
PERFORM F_DIS_MSG USING 100 'Get prompt values for Profit Ctr Group.'.
COMMIT WORK.
CALL FUNCTION 'K_GROUP_SELECT'
EXPORTING
BUTTONS = 'X'
CLASS = '0H '
CRUSER = '*'
FIELD_NAME = 'RPRCTR'
SEARCHFLD = 'KBRC'
SEARCHFLD_INPUT = ' '
SEARCHFLD_REQUIRED = 'X'
SET = '*'
START_COLUMN = 10
START_ROW = 5
TABLE = 'GLPCT'
TYPELIST = 'BS'
UPDUSER = '*'
IMPORTING
CLASS_NAME = V_GROUP_CLASS
SET_NAME = V_GROUP_NAME
SET_TITLE = V_GROUP_TITLE
EXCEPTIONS
NO_SET_PICKED = 1
OTHERS = 2.
IF SY-SUBRC = 0.
P_KHINR = V_GROUP_NAME.
ENDIF.
ENDFORM. " F_GET_S_KHINR
FORM F_VALIDATE_KHINR *
FORM F_VALIDATE_KHINR.
PERFORM F_DIS_MSG USING 100 'Validate Profit Center group.'.
COMMIT WORK.
CLEAR I_SET_VALUES.
REFRESH I_SET_VALUES.
CONCATENATE C_0106 C_KBRC P_KHINR INTO V_SETID.
CONDENSE V_SETID.
CALL FUNCTION 'G_SET_TREE_IMPORT'
EXPORTING
CLIENT = SY-MANDT
FIELDNAME = 'RPRCTR'
LANGU = SY-LANGU
SETID = V_SETID
TABNAME = 'GLPCT'
NO_TABLE_BUFFERING = 'X'
TABLES
SET_VALUES = I_SET_VALUES
EXCEPTIONS
SET_NOT_FOUND = 1
ILLEGAL_FIELD_REPLACEMENT = 2
ILLEGAL_TABLE_REPLACEMENT = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
E: Unable to find Profit Center Group & - please modify selection
MESSAGE E000 WITH TEXT-002 P_KHINR.
ENDIF.
IF I_SET_VALUES[] IS INITIAL.
MESSAGE E000 WITH P_KHINR TEXT-039.
ENDIF.
ENDFORM. " F_VALIDATE_KHINR
Form F_SELECT_DATA
FORM F_SELECT_DATA.
PERFORM F_DIS_MSG USING 100 'Retrieve info from SAP tables.'.
COMMIT WORK.
Build the BFOD_A internal table based on user selections
f i_cepc table is initial, it means derive all prctr under a co cd
IF S_PRCTR[] IS INITIAL.
PERFORM F_RETRIEVE_BFODA_BY_COMPANY.
ELSE.
PERFORM F_RETRIEVE_BFODA_BY_PRCTR.
ENDIF.
IF I_BFOD_A[] IS INITIAL.
*... No records fit selection criteria.
MESSAGE E000 WITH TEXT-H20.
ENDIF.
Get the text for profit center
SELECT SPRAS PRCTR DATBI KOKRS MCTXT FROM CEPCT
INTO CORRESPONDING FIELDS OF TABLE I_CEPCT
FOR ALL ENTRIES IN I_CEPC
WHERE SPRAS = SY-LANGU
AND PRCTR = I_CEPC-PRCTR.
Build an internal table of unique bfod keys for bsid and bsad
I_BFODA_KUNNR[] = I_BFOD_A[].
SORT I_BFODA_KUNNR BY KUNNR BUKRS GJAHR BELNR BUZEI.
DELETE ADJACENT DUPLICATES FROM I_BFODA_KUNNR COMPARING
KUNNR BUKRS GJAHR BELNR BUZEI.
Build BSID Internal table
SELECT MANDT BUKRS KUNNR UMSKS UMSKZ AUGDT AUGBL ZUONR GJAHR BELNR
BUZEI BUDAT HKONT BLDAT WAERS REBZG XBLNR SHKZG DMBTR
WRBTR ZFBDT ZBD1T ZBD2T ZBD3T
FROM BSID INTO CORRESPONDING FIELDS OF TABLE I_BSYD
FOR ALL ENTRIES IN I_BFODA_KUNNR
WHERE KUNNR EQ I_BFODA_KUNNR-KUNNR
AND BUKRS EQ I_BFODA_KUNNR-BUKRS
AND GJAHR EQ I_BFODA_KUNNR-GJAHR
AND BELNR EQ I_BFODA_KUNNR-BELNR
AND BUZEI EQ I_BFODA_KUNNR-BUZEI.
Build BSAD internal table
SELECT MANDT BUKRS KUNNR UMSKS UMSKZ AUGDT AUGBL ZUONR GJAHR BELNR
BUZEI HKONT BUDAT BLDAT WAERS REBZG XBLNR SHKZG DMBTR WRBTR ZFBDT
ZBD1T ZBD2T ZBD3T
FROM BSAD APPENDING CORRESPONDING FIELDS OF TABLE I_BSYD
FOR ALL ENTRIES IN I_BFODA_KUNNR
WHERE KUNNR EQ I_BFODA_KUNNR-KUNNR
AND BUKRS EQ I_BFODA_KUNNR-BUKRS
AND AUGDT GT P_BUDAT
AND GJAHR EQ I_BFODA_KUNNR-GJAHR
AND BELNR EQ I_BFODA_KUNNR-BELNR
AND BUZEI EQ I_BFODA_KUNNR-BUZEI.
IF NOT I_BSYD[] IS INITIAL.
Remove records based on selection criteria
DELETE I_BSYD WHERE
NOT BUDAT LE P_BUDAT OR
NOT HKONT IN S_HKONT.
ENDIF.
Acquire document headers
SELECT BUKRS BELNR GJAHR BKTXT XBLNR HWAER HWAE2 FROM BKPF
INTO TABLE I_BKPF
FOR ALL ENTRIES IN I_BSYD
WHERE BUKRS EQ I_BSYD-BUKRS
AND BELNR EQ I_BSYD-BELNR
AND GJAHR EQ I_BSYD-GJAHR.
Sort document lines
SORT I_BSYD BY KUNNR BUKRS GJAHR BELNR BUZEI ASCENDING.
SORT I_BKPF BY BUKRS BELNR GJAHR ASCENDING.
Create table of unique customers
SORT I_BFODA_KUNNR BY KUNNR.
DELETE ADJACENT DUPLICATES FROM I_BFODA_KUNNR COMPARING KUNNR.
Build customer table
SELECT KUNNR NAME1 FROM KNA1
INTO TABLE I_KNA1
FOR ALL ENTRIES IN I_BFODA_KUNNR
WHERE KUNNR EQ I_BFODA_KUNNR-KUNNR.
Free memory space
FREE I_BFODA_KUNNR.
ENDFORM. " F_SELECT_DATA
Form F_BUILD_I_CEPC_TABLE
build the i_cepc internal table that would populate the
valid profit centers to processed.
FORM F_BUILD_I_CEPC_TABLE.
PERFORM F_DIS_MSG USING 100 'Build the Profit Center Ref Table.'.
COMMIT WORK.
Acquire CEPC table
IF I_PRCTR[] IS INITIAL.
SORT S_PRCTR.
SELECT PRCTR KHINR
FROM CEPC
INTO TABLE I_CEPC
WHERE PRCTR IN S_PRCTR.
Sort table
SORT I_CEPC BY PRCTR KHINR.
Remove duplicate values
DELETE ADJACENT DUPLICATES FROM I_CEPC COMPARING PRCTR.
I_PRCTR[] = I_CEPC[].
Sort table
SORT I_PRCTR BY PRCTR.
ELSE.
Sort table
SORT I_PRCTR BY PRCTR.
Acquire CEPC table
SELECT PRCTR KHINR
FROM CEPC
INTO TABLE I_CEPC
FOR ALL ENTRIES IN I_PRCTR
WHERE PRCTR = I_PRCTR-PRCTR.
SOrt table
SORT I_CEPC BY PRCTR KHINR.
ENDIF.
IF I_CEPC[] IS INITIAL.
MESSAGE E000 WITH TEXT-006.
ENDIF.
ENDFORM. " F_BUILD_i_CEPC_TABLE
Form F_BUILD_I_REPORT
Build the A/R report internal table from bfod_a, bsid and bsad
It is necessary to go to BSAD/BSID to get the document currency
not present in bfod_a.
FORM F_BUILD_I_REPORT.
PERFORM F_DIS_MSG USING 100 'Build the report information.'.
COMMIT WORK.
Sort all internal tables, this is essential for later processing
SORT I_BFOD_A BY KUNNR BUKRS GJAHR BELNR BUZEI .
SORT I_BSYD BY KUNNR BUKRS GJAHR BELNR BUZEI.
SORT I_CEPC BY PRCTR KHINR.
LOOP AT I_BFOD_A.
New customer
AT NEW KUNNR.
READ TABLE I_KNA1 WITH KEY KUNNR = I_BFOD_A-KUNNR BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE I_KNA1-NAME1 TO I_REPORT-NAME1.
ENDIF.
ENDAT.
Acquire header fields
READ TABLE I_BKPF WITH KEY BUKRS = I_BFOD_A-BUKRS
BELNR = I_BFOD_A-BELNR
GJAHR = I_BFOD_A-GJAHR BINARY SEARCH.
IF SY-SUBRC NE 0.
CLEAR I_BKPF.
ENDIF.
Build base record
PERFORM F_MOVE_BASE_TO_REPORT.
Load profit center data
IF P_KHINR IS INITIAL.
IF V_PREV_PRCTR = I_BFOD_A-PRCTR.
I_REPORT-KHINR = I_CEPC-KHINR.
ELSE.
READ TABLE I_CEPC WITH KEY PRCTR = I_BFOD_A-PRCTR BINARY SEARCH.
IF SY-SUBRC = 0.
I_REPORT-KHINR = I_CEPC-KHINR.
ELSE.
CLEAR I_REPORT-KHINR.
ENDIF.
V_PREV_PRCTR = I_BFOD_A-PRCTR.
ENDIF.
ELSE.
I_REPORT-KHINR = P_KHINR.
ENDIF.
Reverse signs
IF I_REPORT-SHKZG = 'H'.
I_REPORT-DMBTR = I_REPORT-DMBTR * -1.
I_REPORT-DMBE2 = I_REPORT-DMBE2 * -1.
ENDIF.
Additional details
READ TABLE I_BSYD WITH KEY KUNNR = I_BFOD_A-KUNNR
BUKRS = I_BFOD_A-BUKRS
GJAHR = I_BFOD_A-GJAHR
BELNR = I_BFOD_A-BELNR
BUZEI = I_BFOD_A-BUZEI BINARY SEARCH.
IF SY-SUBRC = 0.
PERFORM F_FORMAT_I_REPORT_FR_BSYD.
APPEND I_REPORT.
ENDIF.
ENDLOOP.
ENDFORM. " F_BUILD_I_REPORT
Form F_FORMAT_I_REPORT_FR_BSYD
Retrieve all the information needed for reporting from BSID.
If a document has a referencing invoice (REBZG), the payment terms
and the baseline date to be used will come from the referencing
invoice.
FORM F_FORMAT_I_REPORT_FR_BSYD.
*=> get the document currency amount from bsid
I_REPORT-BLDAT = I_BSYD-BLDAT.
I_REPORT-WAERS = I_BSYD-WAERS.
PERFORM F_CONVERT_CURRENCY_FR_2_AMTS USING I_REPORT-HWAER I_BSYD-WAERS
I_BSYD-DMBTR I_BSYD-WRBTR
I_BFOD_A-DMBTR
CHANGING V_BFOD_TXNAMT.
I_REPORT-WRBTR = V_BFOD_TXNAMT.
IF I_BSYD-SHKZG = 'H'.
I_REPORT-WRBTR = I_REPORT-WRBTR * -1.
ENDIF.
V_ZBD1T = I_BSYD-ZBD1T.
V_ZFBDT = I_BSYD-ZFBDT.
*=> determine reference document (referencing invoice)
CLEAR I_REPORT-SORT.
CASE I_BSYD-REBZG.
WHEN ' '.
I_REPORT-SORT = I_BFOD_A-BELNR.
WHEN 'V'.
I_REPORT-SORT = I_BSYD-XBLNR.
WHEN OTHERS.
I_REPORT-SORT = I_BSYD-REBZG.
PERFORM F_GET_DATEPAYTERM_FR_ORIGDOC.
ENDCASE.
CLEAR I_FAEDE.
I_FAEDE-SHKZG = I_BSYD-SHKZG.
I_FAEDE-KOART = 'D'.
I_FAEDE-ZFBDT = I_BSYD-ZFBDT.
I_FAEDE-ZBD1T = I_BSYD-ZBD1T.
I_FAEDE-ZBD2T = I_BSYD-ZBD2T.
I_FAEDE-ZBD3T = I_BSYD-ZBD3T.
I_FAEDE-REBZG = I_BSYD-REBZG.
I_FAEDE-BLDAT = I_BSYD-BLDAT.
CALL FUNCTION 'DETERMINE_DUE_DATE'
EXPORTING
I_FAEDE = I_FAEDE
IMPORTING
E_FAEDE = I_FAEDE
EXCEPTIONS
ACCOUNT_TYPE_NOT_SUPPORTED = 1
OTHERS = 2.
V_DPAST = P_BUDAT - I_FAEDE-NETDT.
IF V_DPAST < 0.
I_REPORT-DPAST = 0.
ELSE.
MOVE V_DPAST TO I_REPORT-DPAST.
ENDIF.
I_REPORT-ZBD1T = V_ZBD1T.
I_REPORT-NETDT = I_FAEDE-NETDT.
Update totals
PERFORM F_BUILD_TOTALS.
ENDFORM. " F_FORMAT_I_REPORT_FR_BSYD
Form F_GET_DATEPAYTERM_FR_ORIGDOC
FORM F_GET_DATEPAYTERM_FR_ORIGDOC.
In order to go back to the original document's payment terms and
baseline date, we neeed to resort bsid/bsad to a different sort
order b-coz only these 3 fields logically matched the orig doc
SORT I_BSYD BY KUNNR BUKRS BELNR.
READ TABLE I_BSYD WITH KEY KUNNR = I_BFOD_A-KUNNR
BUKRS = I_BFOD_A-BUKRS
BELNR = I_REPORT-SORT BINARY SEARCH.
IF SY-SUBRC = 0.
V_ZBD1T = I_BSYD-ZBD1T. "payment term
V_ZFBDT = I_BSYD-ZFBDT. "baseline due date
ENDIF.
SORT I_BSYD BY KUNNR BUKRS GJAHR BELNR BUZEI.
ENDFORM. " F_GET_DATEPAYTERM_FR_ORIGDOC
Form F_WRITE_REPORT
Write A/R report summarized by profit center.
Report will be build by profit center and sum all customers
then will sum past do for profit center and catagorized
will also sum by project / wbs element.
FORM F_WRITE_REPORT.
SORT I_REPORT BY PRCTR KUNNR SORT BLDAT BELNR DPAST DESCENDING.
CALL SCREEN 9000.
ENDFORM. " F_WRITE_REPORT
Form F_POPULATE_PRCTR_FROM_PRCTRGRP
FORM F_POPULATE_PRCTR_FROM_PRCTRGRP.
LOOP AT I_SET_VALUES.
IF I_SET_VALUES-TO = I_SET_VALUES-FROM.
I_PRCTR-PRCTR = I_SET_VALUES-TO.
COLLECT I_PRCTR.
S_PRCTR-SIGN = 'I'.
S_PRCTR-OPTION = 'EQ'.
S_PRCTR-LOW = I_SET_VALUES-TO.
COLLECT S_PRCTR.
ELSE.
MESSAGE E000 WITH 'System Error, contact programmer'
I_SET_VALUES-TO I_SET_VALUES-FROM.
ENDIF.
ENDLOOP.
ENDFORM. " F_POPULATE_PRCTR_FROM_PRCTRGRP
Form F_CONVERT_CURRENCY_FR_2_AMTS
This function module will ensure proper handling of decimals
and conversion of currency. This will give you the historical
exchange rate used.
BFOD_A does not have the trans curr amt so we will get it
using: ( bsid trans curr amt / bsid loc curr amt ) *
bfod_a loc currency amt
FORM F_CONVERT_CURRENCY_FR_2_AMTS USING V_FRCURR V_TOCURR
V_OFRAMT V_OTOAMT V_NFRAMT
CHANGING V_NTOAMT.
CALL FUNCTION 'Z_CONVERT_CURRENCY_FROM_2_AMTS'
EXPORTING
FROM_CURRENCY = V_FRCURR
TO_CURRENCY = V_TOCURR
OLD_FROM_AMOUNT = V_OFRAMT
OLD_TO_AMOUNT = V_OTOAMT
NEW_FROM_AMOUNT = V_NFRAMT
IMPORTING
NEW_TO_AMOUNT = V_NTOAMT
EXCEPTIONS
OTHERS = 1.
IF SY-SUBRC <> 0.
MESSAGE E000 WITH TEXT-005.
ENDIF.
ENDFORM. " F_CONVERT_CURRENCY_FR_2_AMTS
Form F_RETRIEVE_BFODA_BY_COMPANY
FORM F_RETRIEVE_BFODA_BY_COMPANY.
Acquire BFOD_A table
SELECT PRCTR KUNNR BUKRS GJAHR BELNR BUZEI AUGDT HKONT BUDAT
SHKZG DMBTR DMBE2 FROM BFOD_A
INTO TABLE I_BFOD_A
WHERE BUKRS IN S_BUKRS.
IF I_BFOD_A[] IS INITIAL.
EXIT.
ELSE.
Remove records based on selection criteria
DELETE I_BFOD_A WHERE NOT KUNNR IN S_KUNNR OR
NOT BUDAT LE P_BUDAT OR
NOT HKONT IN S_HKONT OR
NOT BELNR IN S_BELNR OR
( NOT AUGDT IS INITIAL AND
NOT AUGDT > P_BUDAT ).
ENDIF.
Build selection option
LOOP AT I_BFOD_A.
I_PRCTR-PRCTR = I_BFOD_A-PRCTR.
COLLECT I_PRCTR.
S_PRCTR-SIGN = 'I'.
S_PRCTR-OPTION = 'EQ'.
S_PRCTR-LOW = I_BFOD_A-PRCTR.
COLLECT S_PRCTR.
ENDLOOP.
SORT S_PRCTR.
SORT I_PRCTR BY PRCTR.
PERFORM F_BUILD_I_CEPC_TABLE.
ENDFORM. " F_RETRIEVE_BFODA_BY_COMPANY
Form F_RETRIEVE_BFODA_BY_PRCTR
FORM F_RETRIEVE_BFODA_BY_PRCTR.
Acquire BFOD_A table
SELECT PRCTR KUNNR BUKRS GJAHR BELNR BUZEI AUGDT HKONT BUDAT
SHKZG DMBTR DMBE2 FROM BFOD_A
INTO TABLE I_BFOD_A
FOR ALL ENTRIES IN I_PRCTR
WHERE PRCTR = I_PRCTR-PRCTR AND
KUNNR IN S_KUNNR AND
BUKRS IN S_BUKRS.
IF I_BFOD_A[] IS INITIAL.
EXIT.
ELSE.
Remove records based on selection criteria
DELETE I_BFOD_A WHERE NOT KUNNR IN S_KUNNR OR
NOT BUKRS IN S_BUKRS OR
NOT BUDAT LE P_BUDAT OR
NOT HKONT IN S_HKONT OR
NOT BELNR IN S_BELNR OR
( NOT AUGDT IS INITIAL AND
NOT AUGDT > P_BUDAT ).
ENDIF.
ENDFORM. " F_RETRIEVE_BFODA_BY_PRCTR
Form F_MOVE_BASE_TO_REPORT
FORM F_MOVE_BASE_TO_REPORT.
I_REPORT-PRCTR = I_BFOD_A-PRCTR.
I_REPORT-KUNNR = I_BFOD_A-KUNNR.
I_REPORT-BELNR = I_BFOD_A-BELNR.
I_REPORT-BUKRS = I_BFOD_A-BUKRS.
I_REPORT-HKONT = I_BFOD_A-HKONT.
I_REPORT-AUGDT = I_BFOD_A-AUGDT.
I_REPORT-BUDAT = I_BFOD_A-BUDAT.
I_REPORT-GJAHR = I_BFOD_A-GJAHR.
I_REPORT-BUZEI = I_BFOD_A-BUZEI.
I_REPORT-SHKZG = I_BFOD_A-SHKZG.
I_REPORT-DMBTR = I_BFOD_A-DMBTR.
I_REPORT-DMBE2 = I_BFOD_A-DMBE2.
I_REPORT-HWAER = I_BKPF-HWAER.
I_REPORT-HWAE2 = I_BKPF-HWAE2.
I_REPORT-BKTXT = I_BKPF-BKTXT.
I_REPORT-XBLNR = I_BKPF-XBLNR.
ENDFORM. " F_MOVE_BASE_TO_REPORT
Module STATUS_9000 OUTPUT
text
MODULE STATUS_9000 OUTPUT.
SET PF-STATUS '9000'.
SET TITLEBAR '900'.
Launch standard ALV grid
PERFORM F_CREATE_ALV_GRID_CONTROL.
PERFORM F_LOAD_COLUMN_HEADINGS.
ENDMODULE. " STATUS_9000 OUTPUT
Module USER_COMMAND_9000 INPUT
text
MODULE USER_COMMAND_9000 INPUT.
CASE SY-UCOMM.
WHEN 'EXIT' OR 'CANC' OR 'BACK'.
CALL METHOD REF_CUSTOM->FREE.
SET SCREEN 0.
LEAVE SCREEN.
Begin of changes for Release 2 by HBE7890 - DEVK909110
WHEN 'PRIN'.
PERFORM PRINT_AGING_TOTALS.
End of changes.
ENDCASE.
ENDMODULE. " USER_COMMAND_9000 INPUT
Form F_CREATE_ALV_GRID_CONTROL
text
FORM F_CREATE_ALV_GRID_CONTROL.
Set field catalog for ALV
PERFORM F_SET_FIELDCAT.
IF REF_CUSTOM IS INITIAL.
Create ALV container
CREATE OBJECT REF_CUSTOM
EXPORTING
CONTAINER_NAME = 'ZRPT_CONTAINER'.
Create ALV grid control
CREATE OBJECT REF_ALV_ZRPT
EXPORTING
I_PARENT = REF_CUSTOM.
Adjust look and feel
PERFORM F_CHANGE_SETTINGS.
Call the ALV Build
CALL METHOD REF_ALV_ZRPT->SET_TABLE_FOR_FIRST_DISPLAY
EXPORTING
IS_LAYOUT = V_LAYOUT
IS_VARIANT = V_VARIANT
I_SAVE = V_SAVE
I_DEFAULT = V_DEFAULT
CHANGING
IT_SORT = I_SORT
IT_OUTTAB = I_REPORT[]
IT_FIELDCATALOG = I_ALV_FIELDCAT[].
Create print top of page
CREATE OBJECT REF_EVENT_RECEIVER.
SET HANDLER REF_EVENT_RECEIVER->MTH_PRINT_TOP_OF_PAGE
FOR REF_ALV_ZRPT.
Create print top of page
CREATE OBJECT REF_EVENT_RECEIVER.
SET HANDLER REF_EVENT_RECEIVER->MTH_PRINT_TOP_OF_LIST
FOR REF_ALV_ZRPT.
ENDIF.
ENDFORM. " F_CREATE_ALV_GRID_CONTROL
Form F_CHANGE_SETTINGS
text
FORM F_CHANGE_SETTINGS .
Set layout parameters
V_LAYOUT-GRID_TITLE = 'A/R by Profit Center'.
V_LAYOUT-SEL_MODE = 'A'.
V_LAYOUT-INFO_FNAME = 'LINECOLOR'.
V_LAYOUT-CWIDTH_OPT = 'X'.
V_LAYOUT-NO_MERGING = 'X'.
V_LAYOUT-NUMC_TOTAL = 'X'.
V_DEFAULT = 'X'.
V_SAVE = 'A'.
Set display variant
V_VARIANT-REPORT = SY-REPID.
IF P_DSVAR NE ''.
V_VARIANT-VARIANT = P_DSVAR.
ENDIF.
ENDFORM. " F_CHANGE_SETTINGS
Form F_SET_FIELDCAT
text
FORM F_SET_FIELDCAT .
Set field catalog for ALV
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
I_STRUCTURE_NAME = 'ZFR0ARPR_S1' "DEVK909110
I_STRUCTURE_NAME = 'ZPSS_ARBYPC' "DEVK909110
CHANGING
CT_FIELDCAT = I_ALV_FIELDCAT
EXCEPTIONS
INCONSISTENT_INTERFACE = 1
PROGRAM_ERROR = 2
OTHERS = 3.
Override any attributes
LOOP AT I_ALV_FIELDCAT INTO V_ALV_FIELDCAT.
IF V_ALV_FIELDCAT-FIELDNAME EQ 'NAME1'.
MOVE 'Customer Name' TO: V_ALV_FIELDCAT-REPTEXT,
V_ALV_FIELDCAT-SCRTEXT_L,
V_ALV_FIELDCAT-SCRTEXT_M,
V_ALV_FIELDCAT-SCRTEXT_S.
ENDIF.
IF V_ALV_FIELDCAT-FIELDNAME EQ 'SORT'.
MOVE 'Documentation' TO: V_ALV_FIELDCAT-REPTEXT,
V_ALV_FIELDCAT-SCRTEXT_L,
V_ALV_FIELDCAT-SCRTEXT_M.
MOVE 'DocRef' TO V_ALV_FIELDCAT-SCRTEXT_S.
ENDIF.
MODIFY I_ALV_FIELDCAT FROM V_ALV_FIELDCAT.
ENDLOOP.
ENDFORM. " F_SET_FIELDCAT
Form F_BUILD_TOTALS
text
FORM F_BUILD_TOTALS .
DATA: V_DAYS TYPE I,
V_INDEX(2) TYPE N.
CLEAR I_TOTAL.
Build total line
MOVE I_REPORT-HWAER TO I_TOTAL-WAERS.
MOVE I_REPORT-DMBTR TO I_TOTAL-TOTAL.
DO 5 TIMES.
V_DAYS = ( SY-INDEX - 1 ) * P_AGEDY.
V_INDEX = SY-INDEX.
IF I_REPORT-DPAST LE V_DAYS.
CONCATENATE 'I_TOTAL-DAYS' V_INDEX INTO V_FIELD-NAME.
ASSIGN (V_FIELD-NAME) TO <COLUMN>.
<COLUMN> = I_REPORT-DMBTR.
EXIT.
ELSEIF SY-INDEX EQ 5.
CONCATENATE 'I_TOTAL-DAYS' V_INDEX INTO V_FIELD-NAME.
ASSIGN (V_FIELD-NAME) TO <COLUMN>.
<COLUMN> = I_REPORT-DMBTR.
EXIT.
ENDIF.
ENDDO.
COLLECT I_TOTAL.
ENDFORM. " F_BUILD_TOTALS
CO-PA has all the information you need...
Profitability Analysis is that part of CO where operations will access its performance factors and profitability statements contain margins, standard cost variance, sales information, allocations and other related profit or loss data. This module helps analyze profitability of customers, markets and products at various levels of contribution margins. Profitability is measured down to the SD billing document line and is adjusted periodically against standard costs and other costs.
It has 2 methods of approach :
Costing based Profitability Analysis - This is primarily designed to let you analyze profits quickly for the purpose of sales management.
Account based Profitabilty Analysis - This type of Profitability Analysis enables you to reconcile cost and financial accounting at any time using accounts.
Guess, the second approach is what you are looking for... -
Profit Center Balancing error while posting MIRO
While I am passing a MIRO for a Service PO which has a WBS element as a cost object, facing a Doc Split Error u201C Balancing field profit center in the line item 001 not filled"
Service Entry was correctly posted and the Accounting Entry for it is :
1) Exp A/c Dr 100/- Profit Ctr 123
2) To GRIR Clearing A/c Cr 100/- Profit Ctr 123
You may note that the Vendor has a withholding tax code activated for invoice booking in the master and TDS is applicable in this case. VAT deduction is also applicable in this. Profit Center 786 was defaulted for the TDS Payable A/c using the T Code FAGL3KEH.
While simulating the MIRO after the above service entry sheet , I am getting the below accounting entry:
1) Vendor Cr 86/- Profit Ctr Blank
2) GRIR Clearing A/c Dr 100/- Profit Ctr 123
3) VAT Input Credit Dr 6/- Profit Ctr Blank
4) TDS Payable A/c Cr 20/- Profit Ctr 786
But the error is since the vendor line item is not getting filled with the profit center and hence the MIRO is not getting posted.
I know that this is definitely a splitting rule error but I am not sure in which split rule I should change the configuration.
Can any one please guide me since the requirement is very urgentt and critical.
Thanks a lot in advance.
GeminiHi Tarek
I have checked the following in my system :
1) Document Type RE which is being used for MIRO and the classficiation
the same in of this document type is : Business Transaction 0300 (Vendor Invoice) and Variant
is 0001 (Standard)
2) Document Split Method used in our system is 0000000012 and not a Z.......
3) Document Splitting Rules for the above combination of Vendor Invoice (0300) and Transaction Variant 0001
Profit Center is not being filled in the line item 001, which is the vendor one.
I have checked the base item category of 03000 (Vendor) and I found the following in it :
01000 Balance Sheet Account
01100 Company Code Clearing
01300 Cash Discount Clearing
05100 Taxes on Sales/Purchases
05200 Withholding Tax
06000 Material
07000 Fixed Assets
20000 Expense
30000 Revenue
But you may note that none of the above items are being checked for Automatically Split box.
Can you please advise further on this issue. Also can you provide your contact number so that I can call you since the issue is very critical in the production system.
Regards
Gemini -
Error While Importing Profit Center in DTW
Hello Expert.
I am trying to Import Profit Center In SAP B1 8.8.1 PL04, but i got the Following Error In EffectiveFrom Column.
Error is -
> CServiceData::Set Property value DateString failed ; Invalid Date Format in property "EffectiveFrom" of profit Center
'65171''
i have Already tried certain Format Like 20110701 , 2011/07/01 ,01/07/11
Could anybody Let me know how to resolve this issue.Hi Farhan,
I'm encountering the same problem trying to import profit centres into B1. I tried your suggestion below, however, a get the following new error across all records:
[Microsoft][SQL Server Native Client 10.0][SQL Server]Cannot insert the value NULL into column 'PrcCode', table 'SBODemoAU.dbo.OPRC'; column does not allow nulls. INSERT fails.65171
I definitely have values in the PrcCode field.
I have tried this on the client on 8.81 PL8 and 8.82 PL02
Please could someone from SAP help here!
Thanks
Kind regards,
Louwis -
Profit center is posted to asset account??
Hello experts,
I wonder it is correct that profit center is posted to asset account.
Now our B1 2005B does that.
For example,
In AR credit memo (or Sales return) , we input profit center XX into the documents.
Then B1 create Journal Entry as below;
Dr
Sales Revenue 100 , profit center XX
Inventory 50, profit center XX
Cr
AR 100,
Cost of Goods Sold 50, profit center XX
Inventory account is asset account, so I'd like to know this is correct and SAP's spec ? or SAP's bug?
Please give your advise,
KaoriHi Kaori,
The functionality is slightly different in the B version so I can tell you how it working in the A version and maybe you can verify this.
The Profit Center should only be allocated to accounts that has been defined as Account type 'Sales' or 'Expenditure'. If the Inventory account is given this definition it will allocate the profit center to the inventory as well.
Normally by default P&L account are set as 'Sales' or 'Expenditure' and Balance Sheet accounts set as Account type 'Other'.
Hope it helps.
Jesper
Maybe you are looking for
-
Cancellation of parked ERS invoice
Hi Gurus, How will I cancel Parked invoices of ERS? Thanks, Kumar
-
I went to add my iPod to another computer and when I did it re-bought all of my music and I would like to know how to get my money back for it? anyonr know how I can get my money back????????
-
Problems displaying album artwork
for some reason, my video ipod won't display some of the album artwork from itunes. it shows the downloaded song artwork and some other songs, but not others (like when i import one of my CD's and the itunes library automatically finds the album artw
-
Super drive and cooling issues
Whenever I play a CD of DVD in my new super drive it comes out very hot even if it was only in the machines for a few minutes. Also, my cooling fans never seem to increase or decrease. I'm not even sure they are on. I can hear them work at maximum sp
-
Can anyone tell me if the communication between a ColdFusion oracle data source and the Oracle database itself is encrypted or clear text by default? I'm assuming it is clear text unless other features, such as Oracle Advanced Security, have been im