Required Purchase requisition outstanding aging report code
Hello Gurus!
Purchase requisition outstanding aging report code . plz help me in this .each responce will b fully appriciated with good points.
regards
sirish.
Hi Sonali,
You need to use EBAN, EBKN Tables.
Regards,
Satish
Similar Messages
-
Require coding for purchase requisation outstanding aging report
Hi Gurus,
I got a requirment to develop purchase requisation outstanding aging report.Please provide me the coding for purchase requisation outstanding aging report.
Points will be rewarded for every reply.
Regards ,
Sonali.Hi Sonali,
You need to use EBAN, EBKN Tables.
Regards,
Satish -
Profit Center in Aging Reports
Dear All,
I have a requirement of creating an Aging report (Which we have built on AR Data Source, 0FI_AR_4).
Now, i have a requirement to show the Profit Center drilldown in this report. Profit Center is present in the Base tables (BSID / BSAD (AR EXTRACTOR)) but cannot be used as its not getting populated (due to Document Split Principle in ECC, which only updates data in new GL tables).
Our understanding is that the details of profit center gets populated in FAGLFLEXA table and not in and of the old FI table (BSEG /BSID / BSAD) which makes it very difficult to pull profit center for Account receivables data.
We are not sure whether taking GL and AR data in an DSO will solve my problem but thatu2019s the last option we have and the receivables (not aging) break-up can be shown only by Customer ( Like in SAP Report S_AC0_52000887 ).
Please let us know if you have any suggestions / solutions / inputs for this issue or if we have some wrong understanding here.
Regards,
DennisHere goes the code. Enhance your Data source 0FI_AR_4 for profit center. (here ZZPRCTR)
Unhide the field in RSA6. Then write this code in your CMOD user exit for 0FI_AR_4 extractor.
DATA: L_SYTABIX LIKE SY-TABIX.
DATA: WA_DTFIAR_3 LIKE DTFIAR_3.
DATA: IT_DTFIAR_3 LIKE DTFIAR_3 OCCURS 0 WITH HEADER LINE.
TYPES: BEGIN OF TP_JOIN,
RBUKRS TYPE DTFIAR_3-BUKRS,
FISCPER TYPE DTFIAR_3-FISCPER,
BELNR TYPE DTFIAR_3-BELNR,
BUZEI TYPE DTFIAR_3-BUZEI,
UPOSZ TYPE DTFIAR_3-UPOSZ,
STATUSPS TYPE DTFIAR_3-STATUSPS,
KUNNR TYPE DTFIAR_3-KUNNR,
KKBER TYPE DTFIAR_3-KKBER,
MABER TYPE DTFIAR_3-MABER,
KOART TYPE DTFIAR_3-KOART,
UMSKZ TYPE DTFIAR_3-UMSKZ,
BLART TYPE DTFIAR_3-BLART,
BSCHL TYPE DTFIAR_3-BSCHL,
FISCVAR TYPE DTFIAR_3-FISCVAR,
BLDAT TYPE DTFIAR_3-BLDAT,
BUDAT TYPE DTFIAR_3-BUDAT,
CPUDT TYPE DTFIAR_3-CPUDT,
AUGDT TYPE DTFIAR_3-AUGDT,
MADAT TYPE DTFIAR_3-MADAT,
NETDT TYPE DTFIAR_3-NETDT,
SK1DT TYPE DTFIAR_3-SK1DT,
SK2DT TYPE DTFIAR_3-SK2DT,
ZFBDT TYPE DTFIAR_3-ZFBDT,
ZBD1T TYPE DTFIAR_3-ZBD1T,
ZBD2T TYPE DTFIAR_3-ZBD2T,
ZBD3T TYPE DTFIAR_3-ZBD3T,
ZBD1P TYPE DTFIAR_3-ZBD1P,
ZBD2P TYPE DTFIAR_3-ZBD2P,
LAND1 TYPE DTFIAR_3-LAND1,
ZLSCH TYPE DTFIAR_3-ZLSCH,
ZTERM TYPE DTFIAR_3-ZTERM,
ZLSPR TYPE DTFIAR_3-ZLSPR,
RSTGR TYPE DTFIAR_3-RSTGR,
MANSP TYPE DTFIAR_3-MANSP,
MSCHL TYPE DTFIAR_3-MSCHL,
MANST TYPE DTFIAR_3-MANST,
LCURR TYPE DTFIAR_3-LCURR,
DMSOL TYPE DTFIAR_3-DMSOL,
DMHAB TYPE DTFIAR_3-DMHAB,
HSL TYPE DTFIAR_3-DMSHB,
SKNTO TYPE DTFIAR_3-SKNTO,
RTCUR TYPE DTFIAR_3-WAERS,
WRSOL TYPE DTFIAR_3-WRSOL,
WRHAB TYPE DTFIAR_3-WRHAB,
TSL TYPE DTFIAR_3-WRSHB,
SKFBT TYPE DTFIAR_3-SKFBT,
WSKTO TYPE DTFIAR_3-WSKTO,
KTOPL TYPE DTFIAR_3-KTOPL,
HKONT TYPE DTFIAR_3-HKONT,
SAKNR TYPE DTFIAR_3-SAKNR,
FILKD TYPE DTFIAR_3-FILKD,
AUGBL TYPE DTFIAR_3-AUGBL,
XBLNR TYPE DTFIAR_3-XBLNR,
REBZG TYPE DTFIAR_3-REBZG,
REBZJ TYPE DTFIAR_3-REBZJ,
REBZZ TYPE DTFIAR_3-REBZZ,
VBELN TYPE DTFIAR_3-VBELN,
XREF1 TYPE DTFIAR_3-XREF1,
XREF2 TYPE DTFIAR_3-XREF2,
XREF3 TYPE DTFIAR_3-XREF3,
SGTXT TYPE DTFIAR_3-SGTXT,
XNEGP TYPE DTFIAR_3-XNEGP,
XARCH TYPE DTFIAR_3-XARCH,
UMSKS TYPE DTFIAR_3-UMSKS,
UPDMOD TYPE DTFIAR_3-UPDMOD,
ZUONR TYPE DTFIAR_3-ZUONR,
AWTYP TYPE DTFIAR_3-AWTYP,
AWKEY TYPE DTFIAR_3-AWKEY,
BSTAT TYPE DTFIAR_3-BSTAT,
DMBTR TYPE DTFIAR_3-DMBTR,
DMBE2 TYPE DTFIAR_3-DMBE2,
DMBE3 TYPE DTFIAR_3-DMBE3,
GJAHR TYPE DTFIAR_3-GJAHR,
HWAE2 TYPE DTFIAR_3-HWAE2,
HWAE3 TYPE DTFIAR_3-HWAE3,
MONAT TYPE DTFIAR_3-MONAT,
PROJK TYPE DTFIAR_3-PROJK,
DRCRK TYPE DTFIAR_3-SHKZG,
WRBTR TYPE DTFIAR_3-WRBTR,
PRCTR TYPE DTFIAR_3-ZZPRCTR,
END OF TP_JOIN.
DATA: IT_JOIN TYPE TP_JOIN OCCURS 0 WITH HEADER LINE.
FI_AR_4 data source enhancement for Profit ctr.
WHEN '0FI_AR_4'.
MOVE C_T_DATA[] TO IT_DTFIAR_3[].
SELECT
BELNR
BUZEI
BUDAT
RBUKRS
HSL
GJAHR
TSL
PRCTR
RTCUR
DRCRK
FROM FAGLFLEXA INTO CORRESPONDING FIELDS OF TABLE IT_JOIN
FOR ALL ENTRIES IN IT_DTFIAR_3 WHERE BELNR = IT_DTFIAR_3-BELNR
AND BUZEI = IT_DTFIAR_3-BUZEI
AND GJAHR = IT_DTFIAR_3-GJAHR
AND RBUKRS = IT_DTFIAR_3-BUKRS.
LOOP AT IT_JOIN.
L_SYTABIX = SY-TABIX.
READ TABLE IT_DTFIAR_3 WITH KEY BELNR = IT_JOIN-BELNR
BUZEI = IT_JOIN-BUZEI
GJAHR = IT_JOIN-GJAHR
BUKRS = IT_JOIN-RBUKRS.
IF SY-SUBRC = 0.
IT_JOIN-AUGBL = IT_DTFIAR_3-AUGBL.
IT_JOIN-AUGDT = IT_DTFIAR_3-AUGDT.
IT_JOIN-AWKEY = IT_DTFIAR_3-AWKEY.
IT_JOIN-AWTYP = IT_DTFIAR_3-AWTYP.
IT_JOIN-BELNR = IT_DTFIAR_3-BELNR.
IT_JOIN-BLART = IT_DTFIAR_3-BLART.
IT_JOIN-BLDAT = IT_DTFIAR_3-BLDAT.
IT_JOIN-BSCHL = IT_DTFIAR_3-BSCHL.
IT_JOIN-BSTAT = IT_DTFIAR_3-BSTAT.
IT_JOIN-BUDAT = IT_DTFIAR_3-BUDAT.
IT_JOIN-BUZEI = IT_DTFIAR_3-BUZEI.
IT_JOIN-CPUDT = IT_DTFIAR_3-CPUDT.
IT_JOIN-DMBE2 = IT_DTFIAR_3-DMBE2.
IT_JOIN-DMBE3 = IT_DTFIAR_3-DMBE3.
IT_JOIN-DMBTR = IT_JOIN-HSL.
IF IT_DTFIAR_3-SHKZG = 'H'.
IT_JOIN-DMHAB = IT_JOIN-HSL.
ELSEIF IT_DTFIAR_3-SHKZG = 'S'.
IT_JOIN-DMSOL = IT_JOIN-HSL.
ENDIF.
IT_JOIN-FILKD = IT_DTFIAR_3-FILKD.
IT_JOIN-FISCPER = IT_DTFIAR_3-FISCPER.
IT_JOIN-FISCVAR = IT_DTFIAR_3-FISCVAR.
IT_JOIN-GJAHR = IT_DTFIAR_3-GJAHR.
IT_JOIN-HKONT = IT_DTFIAR_3-HKONT.
IT_JOIN-HWAE2 = IT_DTFIAR_3-HWAE2.
IT_JOIN-HWAE3 = IT_DTFIAR_3-HWAE3.
IT_JOIN-KKBER = IT_DTFIAR_3-KKBER.
IT_JOIN-KOART = IT_DTFIAR_3-KOART.
IT_JOIN-KTOPL = IT_DTFIAR_3-KTOPL.
IT_JOIN-KUNNR = IT_DTFIAR_3-KUNNR.
IT_JOIN-LAND1 = IT_DTFIAR_3-LAND1.
IT_JOIN-LCURR = IT_DTFIAR_3-LCURR.
IT_JOIN-MABER = IT_DTFIAR_3-MABER.
IT_JOIN-MADAT = IT_DTFIAR_3-MADAT.
IT_JOIN-MANSP = IT_DTFIAR_3-MANSP.
IT_JOIN-MANST = IT_DTFIAR_3-MANST.
IT_JOIN-MONAT = IT_DTFIAR_3-MONAT.
IT_JOIN-MSCHL = IT_DTFIAR_3-MSCHL.
IT_JOIN-NETDT = IT_DTFIAR_3-NETDT.
IT_JOIN-PROJK = IT_DTFIAR_3-PROJK.
IT_JOIN-REBZG = IT_DTFIAR_3-REBZG.
IT_JOIN-REBZJ = IT_DTFIAR_3-REBZJ.
IT_JOIN-REBZZ = IT_DTFIAR_3-REBZZ.
IT_JOIN-RSTGR = IT_DTFIAR_3-RSTGR.
IT_JOIN-SAKNR = IT_DTFIAR_3-SAKNR.
IT_JOIN-SGTXT = IT_DTFIAR_3-SGTXT.
IT_JOIN-SK1DT = IT_DTFIAR_3-SK1DT.
IT_JOIN-SK2DT = IT_DTFIAR_3-SK2DT.
IT_JOIN-SKFBT = IT_DTFIAR_3-SKFBT.
IT_JOIN-SKNTO = IT_DTFIAR_3-SKNTO.
IT_JOIN-STATUSPS = IT_DTFIAR_3-STATUSPS.
IT_JOIN-UMSKS = IT_DTFIAR_3-UMSKS.
IT_JOIN-UMSKZ = IT_DTFIAR_3-UMSKZ.
IT_JOIN-UPDMOD = IT_DTFIAR_3-UPDMOD.
IT_JOIN-UPOSZ = IT_DTFIAR_3-UPOSZ.
IT_JOIN-VBELN = IT_DTFIAR_3-VBELN.
IT_JOIN-WRBTR = IT_JOIN-TSL.
IF IT_DTFIAR_3-SHKZG = 'H'.
IT_JOIN-WRHAB = IT_JOIN-TSL.
ELSEIF IT_DTFIAR_3-SHKZG = 'S'.
IT_JOIN-WRSOL = IT_JOIN-TSL.
ENDIF.
IT_JOIN-WSKTO = IT_DTFIAR_3-WSKTO.
IT_JOIN-XARCH = IT_DTFIAR_3-XARCH.
IT_JOIN-XBLNR = IT_DTFIAR_3-XBLNR.
IT_JOIN-XNEGP = IT_DTFIAR_3-XNEGP.
IT_JOIN-XREF1 = IT_DTFIAR_3-XREF1.
IT_JOIN-XREF2 = IT_DTFIAR_3-XREF2.
IT_JOIN-XREF3 = IT_DTFIAR_3-XREF3.
IT_JOIN-ZBD1P = IT_DTFIAR_3-ZBD1P.
IT_JOIN-ZBD1T = IT_DTFIAR_3-ZBD1T.
IT_JOIN-ZBD2P = IT_DTFIAR_3-ZBD2P.
IT_JOIN-ZBD2T = IT_DTFIAR_3-ZBD2T.
IT_JOIN-ZBD3T = IT_DTFIAR_3-ZBD3T.
IT_JOIN-ZFBDT = IT_DTFIAR_3-ZFBDT.
IT_JOIN-ZLSCH = IT_DTFIAR_3-ZLSCH.
IT_JOIN-ZLSPR = IT_DTFIAR_3-ZLSPR.
IT_JOIN-ZTERM = IT_DTFIAR_3-ZTERM.
IT_JOIN-ZUONR = IT_DTFIAR_3-ZUONR.
ENDIF.
MODIFY IT_JOIN FROM IT_JOIN index L_SYTABIX.
ENDLOOP.
MOVE IT_JOIN[] to C_T_DATA[]. -
Regarding Customer ageing report logic in R/3.
Dear
Experts
i have requirement to develop customer ageing report logic for input 30,60,90,180,360
i don' t have any idea hw can i take these values in input& hw can i caluclate the values
i searched in sdn, i did n't get any suitable answer..
Regards
SpandanaHello,
Go to transaction code FDI4
Select Form Type RFFRRD20 Line item analysis
Give your form name and description
Structure (Two axis) - as defaulted
Click on Create
You will have lead column
Delete the rows 2, 3 and 4
Double click on column 1
Enter the customer numbers from 1 to 999999
First column double click (A)
Slelect following values
Due date analysis 1
Days for net due date 0 to 30
Give the short name, medium name and long text for the column.
Repeat this step in next columns like 31 to 60, 61 to 90, 91 to 120 and 121 to 99999 days etc in other columns and select due date analysis 1. (B,C,D,E)
Create one more column by way of formula. To create a new column you need to double click on blue line. Put formula add all five columns you have created above. (F = ABCDE)
You prepare one more column with
Due date analysis 2 (G)
Now you prepare one more column add (F+G) = This will be total open items = over due and not due.
Now go to FDI1 and prepare a report - assign the form created in FDI4 to the report.
Characteristics you need to select are
Account Type (Select Account Type as D for customers)
Currency
Customer
Document Type
Special G/L Ind
Company Code
Change the output types and options according to your requirement.
Refer FDI2 and FDI3 for other standard reports created.
Refer FDI5 and FDI6 for other standard forms created.
Save your report and execute.
Regards,
Ravi -
ME52N: Purchase Requisition Change GL Account Number
Requirement: ABAP auto-change the GL Account field number in a Purchase Requisition after the Material Group is changed.
Background: This custom logic has been successfully applied to all types of Purchase Requisitions using BADI ME_PROC_REQ_CUST, with the exception of a Purchase Requisition type that is called a 'Service Limits'. There are differences that are important to note between a 'Service Limits' Purchase Requisition and the other Purchase Requisitions that had custom code added without any problems.
1)This type of Purchase Requisition uses a item category of 'B', and the logic has a tendency to flow through SAP differently.
2)This type of Purchase Requisition's GL Account number is under-intensified on the 'item' subscreen, and cannot be changed manually on that screen like the others..
3)In order for the GL Account to be changed manually, or for the GL Account to be changed once my code has changed the GL Account Number, the user must select the 'Limits' tab and select the Account Assignment arrow, then a popup appears where the GL Account can be changed manually, or, my coded GL Account number change then occurs.
Problem: I want the custom code to be able to change the GL Account NUmber without having to go into thge 'Limits' tab, where the icon has to be selected. I believe the problem is that the field is protected, because it displays as under-intensified, thus, preventing my new GL Account NUmber from displaying. I also have the subsequent SAP code below that appears to reject set_exkn because protect is set to 'X'.
CODE1: Is my custom code.
CODE2: Is the SAP code that my will flow into where this field appears to be unchangeable.
My question:
I am thinking that this GL Account field is protected and cannot be changed because it is under-intensified on the subscreen on the Purchase Requisition. Can it be changed with custom code, a way to 'unprotect it'? Or, are there settings that should be changed in SPRO for the Purchase Requisition to allow this functionality to change the GL Account number.
Thank-You
(CODE1)
METHOD IF_EX_ME_PROCESS_REQ_CUST~PROCESS_HEADER.
*Purchase Requisition Item Declarations
DATA: LT_ITEMS TYPE MMPUR_REQUISITION_ITEMS.
DATA: LS_ITEM TYPE MEREQ_ITEM.
FIELD-SYMBOLS: <FS_ITEM> TYPE LINE OF MMPUR_REQUISITION_ITEMS.
*Purchase Requisition Accounting Declarations.
DATA: LT_ACCT TYPE MMPUR_ACCOUNTING_LIST.
DATA: LS_ACCT TYPE EXKN.
DATA: LS_SETX TYPE MEPOACCOUNTING_DATAX.
FIELD-SYMBOLS: <FS_ACCT> TYPE LINE OF MMPUR_ACCOUNTING_LIST.
CALL METHOD IM_HEADER->GET_ITEMS
RECEIVING
RE_ITEMS = LT_ITEMS.
LOOP AT LT_ITEMS ASSIGNING <FS_ITEM>.
LS_ITEM = <FS_ITEM>-ITEM->GET_DATA( ).
LT_ACCT = <FS_ITEM>-ITEM->IF_ACCT_CONTAINER_MM~GET_ITEMS( ).
LOOP AT LT_ACCT ASSIGNING <FS_ACCT>.
LS_ACCT = <FS_ACCT>-MODEL->GET_EXKN( ).
LS_ACCT-SAKTO = 'N500300 '.
LS_SETX-SAKTO = 'X'.
<FS_ACCT>-MODEL->SET_EXKN( LS_ACCT ).
<FS_ACCT>-MODEL->SET_EXKNX( LS_SETX ).
ENDLOOP.
ENDLOOP.
ENDMETHOD.
(CODE2)
METHOD if_accounting_model_mm~set_exkn.
DATA: ls_buffer LIKE LINE OF my_data_input_buffer,
ls_bufferx LIKE LINE OF my_data_input_bufferx,
l_buffered TYPE sy-subrc,
l_data_old TYPE exkn,
l_data_oldx TYPE mepoaccounting_datax,
l_data_newx TYPE mepoaccounting_datax,
l_indx TYPE sy-tabix. "1478013
*PROTECT EQ 'X'
CHECK my_state->protect EQ mmpur_no.
Edited by: Tom Matys on Dec 12, 2011 10:55 AMYour PO release strategy must have been based on Cost Center as one of characteristics.
Pl check & confirm.
Regards
Bhavesh Mistry -
Hi
I require Inventory (raw material) ageing report. Ageing date must be calculated from date of goods receipt.
For example:
I have 100 units of Raw Material A.
Goods receipts date were as follows:
30 units: 1st April 2009
45 units: 1st July 2009
25 units: 1st September 2009
So inventory aging as on 30th September must be:
(days calculated from GR date to 30th Sept)
0 - 30 Days --> 25 units
31 - 60 Days --> 45 units
61 - 90 Days --> 30 units
Let me know TCode from where i can get the inventory ageing as mentioned above or let me know the TCodes / Tables which be helpful for developing report.Hi,
Check teh Standard Reports:
MC.9 - INVCO: Material Analysis Selection, Stock
MC.B - INVCO: Material Analysis Selection, Turnover
MC40 - INVCO: ABC Analysis of Usage Values
MC44 - INVCO:Analysis of Inventory Turnover
MC49 - INVCO: Mean Stock Values
MC50 - INVCO: Analysis of Dead Stock
Regards,
Kishore K -
Hi Experts,
I have a requirement to implement Inventory Aging report . The report should show total qty of inventory on hand in buckets of
(0-30 days), (31-60 days) and so on upto a year for given plant and material .
I also need to show value of inventory on hand in similiar buckets .
Is it possible to fullfill this requirement using 2LIS_03_BX extractor ?
I am assuming the distribution in buckets would need to be done at run time . If so how to design the buckets in the query ?
Thanks in advance
ArunYou can create this report using IC_C03 not just BX extractor. You need to do the ageing with reference to the materials and then sum to get the value at plant level.
For this report to work, its assumed that inventory is managed in FIFO method. The formula is derived with based ONLY on the receipt value. First you need to get the receipt values with reference to the time buckets (0 - 30, 31 - 60, 61 - 90 etc). So restrict the relevent movement types for the std KF - 0RECVS_VAL. Then do the offset in the Calendar day.
Once you have all the receipt bucket values, then you can create the ageing formula using the if else condition in the query which goes like
Ageing 0 - 30 -> ((Receipt value 0 - 30 <= Closing Stock value ) * Receipt Value 0 - 30)+ ((Receipt value 0 - 30 > Closing Stock value ) * Closing Stock value))
Ageing 31 - 60 -> ((Receipt value 31 - 60 <= Closing Stock value + Ageing 0 - 30) * Receipt Value 31 -60 )+ ((Receipt value 31 - 60 + Ageing 0 - 30 > Closing Stock value ) * Closing Stock value- Ageing 0 - 30))
The same formula can be extended up any time bucket you require (Eg Ageing 1Yr - 3 Yr, Ageing 3Yr - 5Yr, Ageing > 5 Yr etc). provided you make the receipt buckets properly.
The ageing formula is calculated during the run time, so the query performance can be slightly bad. However there is no standard R/ 3 report equvalent to this. Unless you make a abap report.
Cheers
Deepesh -
Best Practice while creating Contract, Purchase Requisition, Purchase Order
Hi
What is the best practice with respect to Contract & Purchase Requisition?
IN T Code ME31K, there is a button Reference to PReq, meaning that we can create contract with using Purchase Requisition. (We have done the same)
While creating the Purchase Order using Contract, we could find Purchase Requisition reference in the Purchase Order; similarly when we created the Purchase Order using Purchase Requisition, we could find Contract reference in the Purchase Order.
I have done the following:
1. Create a Contract.
2. Create a Purchase Requisition
3. Assign Requisition and Create Purchase Order using T Code ME57.
4. Create Purchase Order
Here in this case we could find references of both Contract & Purchase Requisition.
I just want to know what Practice should we adopt / advise while creating Contract, Purchase Requisition. & Purchase Order?
Regards,Hi,
In ME51N Screen, enter Contract number in the "AGREEMENT" TAB and if more items in the contract, you can mention the item number in the next TAB to the AGREEMENT TAB and then proceed with creating PR by entering other details. This TAB you can find in the 4th column from extreme right end of PR screen.
Regards,
Biju K
Edited by: Bijay Kumar Barik on Sep 10, 2009 2:23 PM -
Purchase requisition to Purchase order conversion
MRP generated the stock transport purchase requisition. (between two company codes)
When i converting the PR to PO, system creating Stock transport purchase order, item category as "U" instead of Standard Purchase order, doc type: NB.
We are using STO between two company codes, PO Doc type should be "NB",Delivery type" NLCC and Checking rule: B - SD Delivery.
Please give suggestion, where i'm missing the configuration.
Thanks
SUNILHi Sunil,
Looks like you did everything correctly, except -
Special procurement key which you assigned in the MRP2 view of material master in the receiving plant:
Check the configuration of the Special procurement key if it has U:
Materials Management> Consumption based planning>Master Data-->Define Special Procurement Types
The two digit key which is assigned in your material master can be looked in the above configuration what is maintained in it:
If you see: Special procurement U Stock transfer.....that is the culprit.
Fix it or you might have used a wrong key in the material master (check and change it)...
Regards -
Hi Friends,
We have a requirement to create stock ageing report in BIW.
If i create the report based on the material documnet date which is coming in 0IC_C03 cube,i will get correct ageing as far as manufacturing plant is concerned.
But we have defined the sales depots also as plants in our R/3,so if i take the material doc date from the ic_c03 cube,my ageing will be wrong for my sales depots because here it will consider the documnet(material) received into the depot date and will not consider the material manufacture(updated into system by 101 movement).
So in my depots,i will get the wrong ageing based on the material received date and not the manuf date.
So how do i go about this issue.
Awaiting your inputs..
Thanks & Regards
Sudhakar MHi
You can look for some standard date fileds in MM03 transaction under Production for material manufacturing data and map this field in BW to fetch data and use the field in your query for ageing
Assign points if useful
Regards
N Ganesh -
Report - who is the current approver for purchase requisition
Hi Experts
Is there a report that can give information the status / who is the current approver for purchase requisition?
currently if we open the PR directly, we can only know the release strategy, release code, status of approver, but we cannot have the information who is the person that should approve this PR.
Thanks in advance
Prashanth.vHi All.
Unfortunately we want to have this information for our end user, and they will not have the access to SE16.
Another thinks is from CDHDR we will have the information if changes are made in PR. So it will give information user that already approve the PR
What we want to have is a report of outstanding PR (not yet released) that have information who is the user (the user complete name / user id) that should approve the PR.
Thanks In Advance
Prashanth.Venkategowda -
Report on list of purchase requisitions and related POs..
Hi,
I have a requirement to generate a simple abap report to display a list of purchase requisitions and its related POs. If my understanding is correct, for a single purchase requisition, multiple POs can exist, right ? Can someone help me with the select query for this ? also can you let me know typically what can be the basic fields displayd in such a report ?
I need to understand the relationship between the tables involved for pur req and Pur orders.
thanksHi check this code... to get PO and PR related to SO..
REPORT z_so_info.
TABLES: vbak, vbap, afko, afpo.
*Field catalog
TYPE-POOLS: slis.
DATA: lv_repid TYPE sy-repid VALUE sy-repid,
xfield TYPE slis_t_fieldcat_alv,
afield TYPE slis_fieldcat_alv.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(25) text-002.
SELECT-OPTIONS: so_so FOR vbak-vbeln OBLIGATORY.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-003.
PARAMETERS:
p_kunnr LIKE vbak-kunnr, " sold-to
p_kunwe LIKE vbak-kunnr. " ship-to
SELECTION-SCREEN END OF BLOCK b2.
*Constants
CONSTANTS: c_zor TYPE vbak-auart VALUE 'ZOR',
c_we TYPE vbpa-parvw VALUE 'WE',
c_ag TYPE vbpa-parvw VALUE 'AG'.
c_space TYPE space.
*Ranges
RANGES: ra_parvw FOR vbpa-parvw,
ra_kunnr FOR vbpa-kunnr.
*Tables
DATA: BEGIN OF gt_output OCCURS 0,
vbeln LIKE vbak-vbeln, " sales order number
posnr LIKE vbap-posnr, " SO item number
matnr LIKE vbap-matnr, " material number
sh LIKE vbpa-kunnr, " Ship-to
sp LIKE vbpa-kunnr, " Sold-to
lifnr LIKE ekko-lifnr, " Vendor
bstnk LIKE vbak-bstnk, " PO number
banfn LIKE vbep-banfn, " Purchase requi
po_st TYPE char30, " PO status text
pstyv TYPE vbap-pstyv, " Item catagory
aufnr LIKE afpo-aufnr, " Production Order
prd_stat TYPE string, " Prd order status
END OF gt_output.
DATA: wa_output LIKE gt_output.
FIELD-SYMBOLS: <fs_output> LIKE gt_output.
*Table for sales order and PO
TYPES : BEGIN OF gs_data,
vbeln TYPE vbak-vbeln,
posnr TYPE vbap-posnr,
pstyv TYPE vbap-pstyv,
matnr TYPE vbap-matnr,
END OF gs_data.
DATA: gt_data TYPE STANDARD TABLE OF gs_data,
wa_data TYPE gs_data.
*Table for Production Orders
TYPES: BEGIN OF gs_prd,
aufnr TYPE afpo-aufnr,
posnr TYPE afpo-posnr,
kdauf TYPE afpo-kdauf,
kdpos TYPE afpo-kdpos,
wepos TYPE afpo-wepos, "Goods Receipt Indicator
elikz TYPE afpo-elikz, "Delivery Completed Indicator
objnr TYPE aufk-objnr, "Object number
getri TYPE afko-getri, "Confirmed Order Finish Date
gltri TYPE afko-gltri, "Actual finish date
END OF gs_prd.
DATA: gt_prd TYPE STANDARD TABLE OF gs_prd,
wa_prd TYPE gs_prd.
*Table for partner data
TYPES: BEGIN OF gs_partner,
vbeln TYPE vbak-vbeln,
posnr TYPE vbap-posnr,
parvw TYPE vbpa-parvw,
kunnr TYPE vbpa-kunnr,
END OF gs_partner.
DATA: gt_partner TYPE STANDARD TABLE OF gs_partner,
wa_partner TYPE gs_partner.
TYPES: BEGIN OF gs_po,
ebeln TYPE ekkn-ebeln,
ebelp TYPE ekkn-ebelp,
vbeln TYPE ekkn-vbeln,
vbelp TYPE ekkn-vbelp,
END OF gs_po.
DATA: gt_po TYPE STANDARD TABLE OF gs_po,
wa_po TYPE gs_po.
TYPES: BEGIN OF gs_preq,
vbeln TYPE vbep-vbeln,
posnr TYPE vbep-posnr,
banfn TYPE vbep-banfn,
END OF gs_preq.
DATA: gt_preq TYPE STANDARD TABLE OF gs_preq,
wa_preq TYPE gs_preq.
TYPES: BEGIN OF gs_po_stat,
ebeln TYPE ekko-ebeln,
procstat TYPE ekko-procstat,
lifnr TYPE ekko-lifnr,
END OF gs_po_stat.
DATA: gt_po_stat TYPE STANDARD TABLE OF gs_po_stat,
wa_po_stat TYPE gs_po_stat.
*Field symbols
FIELD-SYMBOLS: <fs> TYPE tj02t-txt04,
<fs_temp> TYPE tj02t-txt04,
<fs_stat> TYPE char30.
START-OF-SELECTION.
PERFORM fr_build_range.
PERFORM fr_get_data.
PERFORM fr_build_fc.
PERFORM fr_output.
*& Form fr_get_data
text
--> p1 text
<-- p2 text
FORM fr_get_data.
*Get SO
SELECT avbeln aposnr apstyv amatnr
FROM vbap AS a
JOIN vbak AS b
ON avbeln = bvbeln
JOIN vbpa AS c
ON bvbeln = cvbeln
INTO TABLE gt_data
WHERE b~vbeln IN so_so
AND b~auart EQ c_zor "Only Sales Orders
AND c~kunnr IN ra_kunnr. "from selection screen
DELETE ADJACENT DUPLICATES FROM gt_data COMPARING vbeln posnr.
*get data of the production order
IF NOT gt_data[] IS INITIAL.
SELECT aaufnr aposnr akdauf akdpos awepos aelikz
b~objnr
FROM afpo AS a
JOIN aufk AS b
ON aaufnr = baufnr
INTO TABLE gt_prd
FOR ALL ENTRIES IN gt_data
WHERE a~kdauf EQ gt_data-vbeln
AND a~kdpos EQ gt_data-posnr.
ENDIF.
*Get partner data
IF NOT gt_data[] IS INITIAL.
SELECT vbeln posnr parvw kunnr
FROM vbpa
INTO TABLE gt_partner
FOR ALL ENTRIES IN gt_data
WHERE vbeln EQ gt_data-vbeln.
ENDIF.
*Get Purchase Order
IF NOT gt_data[] IS INITIAL.
SELECT ebeln ebelp vbeln vbelp
FROM ekkn
INTO TABLE gt_po
FOR ALL ENTRIES IN gt_data
WHERE vbeln EQ gt_data-vbeln
AND vbelp EQ gt_data-posnr.
SELECT vbeln posnr banfn
FROM vbep
INTO TABLE gt_preq
FOR ALL ENTRIES IN gt_data
WHERE vbeln EQ gt_data-vbeln
AND posnr EQ gt_data-posnr.
ENDIF.
IF NOT gt_po[] IS INITIAL.
SELECT aebeln aprocstat a~lifnr
FROM ekko AS a
JOIN ekpo AS b
ON aebeln = bebeln
INTO TABLE gt_po_stat
FOR ALL ENTRIES IN gt_po
WHERE b~ebeln EQ gt_po-ebeln
AND b~ebelp EQ gt_po-ebelp.
ENDIF.
*Move data to output table
LOOP AT gt_data INTO wa_data.
wa_output-vbeln = wa_data-vbeln.
wa_output-posnr = wa_data-posnr.
wa_output-pstyv = wa_data-pstyv.
wa_output-matnr = wa_data-matnr.
READ TABLE gt_po INTO wa_po WITH KEY vbeln = wa_data-vbeln
vbelp = wa_data-posnr.
IF sy-subrc EQ 0.
wa_output-bstnk = wa_po-ebeln.
READ TABLE gt_po_stat INTO wa_po_stat WITH KEY ebeln = wa_po-ebeln.
IF sy-subrc EQ 0.
wa_output-lifnr = wa_po_stat-lifnr.
CASE wa_po_stat-procstat.
WHEN '01'.
wa_output-po_st = 'Version in process'.
WHEN '02'.
wa_output-po_st = 'Active'.
WHEN '03'.
wa_output-po_st = 'In release'.
WHEN '04'.
wa_output-po_st = 'Partially released'.
WHEN '05'.
wa_output-po_st = 'Released Completely'.
WHEN '08'.
wa_output-po_st = 'Rejected'.
ENDCASE.
ENDIF. "inner read subrc
ENDIF. "outer read subrc
READ TABLE gt_preq INTO wa_preq WITH KEY vbeln = wa_data-vbeln
posnr = wa_data-posnr.
IF sy-subrc EQ 0.
wa_output-banfn = wa_preq-banfn.
ENDIF.
READ TABLE gt_prd INTO wa_prd WITH KEY kdauf = wa_data-vbeln
kdpos = wa_data-posnr.
IF sy-subrc EQ 0.
wa_output-aufnr = wa_prd-aufnr.
*get the purchase requisition for production order as well
SELECT SINGLE banfn
FROM ebkn
INTO wa_output-banfn
WHERE aufnr EQ wa_prd-aufnr.
*Get the status of the production order
PERFORM fr_get_prd_stat USING wa_prd-objnr
CHANGING wa_output-prd_stat.
ENDIF. " sy-subrc
READ TABLE gt_partner INTO wa_partner WITH KEY vbeln = wa_data-vbeln
parvw = c_we.
IF sy-subrc EQ 0.
wa_output-sh = wa_partner-kunnr.
ENDIF.
READ TABLE gt_partner INTO wa_partner WITH KEY vbeln = wa_data-vbeln
parvw = c_ag.
IF sy-subrc EQ 0.
wa_output-sp = wa_partner-kunnr.
ENDIF.
APPEND wa_output TO gt_output.
CLEAR: wa_data, wa_prd,wa_partner,wa_output.
ENDLOOP.
ENDFORM. " fr_get_data
*& Form fr_build_range
text
--> p1 text
<-- p2 text
FORM fr_build_range .
*Range for partner function
MOVE 'I' TO ra_parvw-sign.
MOVE 'EQ' TO ra_parvw-option.
MOVE 'SH' TO ra_parvw-low. " we
APPEND ra_parvw.
CLEAR ra_parvw.
MOVE 'I' TO ra_parvw-sign.
MOVE 'EQ' TO ra_parvw-option.
MOVE 'SP' TO ra_parvw-low. " ag
APPEND ra_parvw.
CLEAR ra_parvw.
*Range for ship-to and sold-to
MOVE 'I' TO ra_kunnr-sign.
MOVE 'EQ' TO ra_kunnr-option.
MOVE p_kunnr TO ra_kunnr-low.
APPEND ra_kunnr.
CLEAR ra_kunnr.
MOVE 'I' TO ra_kunnr-sign.
MOVE 'EQ' TO ra_kunnr-option.
MOVE p_kunwe TO ra_kunnr-low.
APPEND ra_kunnr.
CLEAR ra_kunnr.
ENDFORM. " fr_build_range
*& Form fr_build_fc
text
--> p1 text
<-- p2 text
FORM fr_build_fc .
sales order number
afield-fieldname = 'VBELN'.
afield-seltext_s = 'Sales #'.
afield-ref_tabname = 'VBAK'.
APPEND afield TO xfield. CLEAR afield.
sales ITEM number
afield-fieldname = 'POSNR'.
afield-seltext_s = 'Item #'.
afield-ref_tabname = 'VBAP'.
APPEND afield TO xfield. CLEAR afield.
Material Number
afield-fieldname = 'MATNR'.
afield-seltext_s = 'Material #'.
afield-ref_tabname = 'VBAP'.
afield-outputlen = 10.
APPEND afield TO xfield. CLEAR afield.
*Vendor Number
afield-fieldname = 'LIFNR'.
afield-seltext_s = 'Vendor Num.'.
afield-ref_tabname = 'EKKO'.
APPEND afield TO xfield. CLEAR afield.
ship-to-party
afield-fieldname = 'SH'.
afield-seltext_s = 'Ship-to'.
afield-ref_tabname = 'VBPA'.
APPEND afield TO xfield. CLEAR afield.
sold-to-party
afield-fieldname = 'SP'.
afield-seltext_s = 'Sold-to'.
afield-ref_tabname = 'VBPA'.
APPEND afield TO xfield. CLEAR afield.
*PO number
afield-fieldname = 'BSTNK'.
afield-seltext_s = 'PO NUM'.
afield-ref_tabname = 'EKKO'.
APPEND afield TO xfield. CLEAR afield.
*PO status
afield-fieldname = 'PO_STAT'.
afield-seltext_s = 'Step'.
afield-ref_tabname = 'zbacklog_v2'.
APPEND afield TO xfield. CLEAR afield.
*PO step status
afield-fieldname = 'PO_ST'.
afield-seltext_s = 'PO.Status'.
afield-ref_tabname = 'zbacklog_v2'.
APPEND afield TO xfield. CLEAR afield.
*Purchase requisition
afield-fieldname = 'BANFN'.
afield-seltext_s = 'Pur. Req.'.
afield-ref_tabname = 'VBEP'.
APPEND afield TO xfield. CLEAR afield.
*Item catagory
afield-fieldname = 'PSTYV'.
afield-seltext_s = 'Itm. Catg'.
afield-ref_tabname = 'VBAP'.
APPEND afield TO xfield. CLEAR afield.
*Prodcution Order number
afield-fieldname = 'AUFNR'.
afield-seltext_m = 'Prod.Order'.
afield-ref_tabname = 'AFKO'.
APPEND afield TO xfield. CLEAR afield.
*PRODCUTION status
afield-fieldname = 'PRD_STAT'.
afield-seltext_s = 'Prd. Step'.
afield-ref_tabname = 'zbacklog_v2'.
afield-outputlen = 20.
APPEND afield TO xfield. CLEAR afield.
*PRODUCTION step status
afield-fieldname = 'PRD_ST'.
afield-seltext_s = 'Prd. Status'.
afield-ref_tabname = 'zbacklog_v2'.
APPEND afield TO xfield. CLEAR afield.
ENDFORM. " fr_build_fc
*& Form fr_output
text
--> p1 text
<-- p2 text
FORM fr_output .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
i_callback_program = sy-repid
I_CALLBACK_PF_STATUS_SET = ' '
I_CALLBACK_USER_COMMAND = ' '
I_STRUCTURE_NAME =
IS_LAYOUT =
it_fieldcat = xfield[]
i_default = 'X'
i_save = 'A'
TABLES
t_outtab = gt_output
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " fr_output
*& Form fr_get_prd_stat
text
-->P_WA_PRD_OBJNR text
FORM fr_get_prd_stat USING p_objnr CHANGING p_prd_stat.
DATA: lt_status TYPE STANDARD TABLE OF jstat,
wa_status TYPE jstat,
lv_status TYPE tj02t-txt04,
lv_temp2 TYPE char5,
lv_buff TYPE string.
CALL FUNCTION 'STATUS_READ'
EXPORTING
client = sy-mandt
objnr = p_objnr
only_active = 'X'
TABLES
status = lt_status
EXCEPTIONS
object_not_found = 1
OTHERS = 2.
LOOP AT lt_status INTO wa_status.
IF wa_status-stat(1) EQ 'I'.
SELECT txt04 FROM tj02t
INTO lv_status
WHERE istat EQ wa_status-stat
AND spras EQ 'E'.
ENDSELECT.
lv_temp2 = lv_status.
CONCATENATE lv_temp2 p_prd_stat INTO p_prd_stat
SEPARATED BY ','.
ENDIF.
CLEAR: wa_status, lv_status, lv_temp2.
ENDLOOP.
lv_buff = p_prd_stat.
*Status of Production Order
IF lv_buff CS 'CRTD'.
p_prd_stat = 'Not Active'.
ENDIF.
IF lv_buff CS 'REL'.
IF lv_buff CS 'GMPS'.
p_prd_stat = 'Printed In Prod'.
ELSE.
p_prd_stat = 'Printed'.
ENDIF.
ENDIF.
IF lv_buff CS 'TECO'.
p_prd_stat = 'Technically Compt.'.
ENDIF.
ENDFORM. " fr_get_prd_stat -
Dear All,
Is there any report avl which gives PO aging means that the PO has been completed within these days in which GR and IR completed or not.
RegardsHi,
Hope Purchasing documents by material report with transaction code ME2M and Mandatory input of value "EINT" in the scope of list feild and Input of value "WE107" in selection parameters feild apart from your other inputs should solve the issue.
or
Use ME80Fn..general Purchasing Analysis
Thanks
Prashanth -
I need a code for VENDOR AGEING REPORT
plz help me i am in urgent need of source code of
VENDOR AGEING REPORT.
if any body help me regarding this above report i will be
great ful to him/her.
bcoz deadline is today.
i need ur urgent help, i treid very much but i failed,
so hope help from anybody there.REPORT zvender_os NO STANDARD PAGE HEADING
LINE-SIZE 132
LINE-COUNT 65.
Tables
TABLES: bsik, "open items (A/C: Secondary Index for Customers)
lfa1, "customer master
lfb1,
rf140, "temp stru (Work Fields for Corrence(SAPF140*))
bsak, "cleared items (A/c Secnd Index for Cust(Clrms))
skat.
constants and variables
TYPE-POOLS: slis.
DATA: fieldcat TYPE slis_t_fieldcat_alv,
fieldcat1 TYPE slis_t_fieldcat_alv,
fieldcat_ln TYPE slis_fieldcat_alv,
layout_in TYPE slis_layout_alv,
layout_in1 TYPE slis_layout_alv,
sortcat TYPE slis_t_sortinfo_alv,
sortcat1 TYPE slis_t_sortinfo_alv,
sortcat_ln LIKE LINE OF sortcat,
eventcat1 TYPE slis_t_event,
eventcat TYPE slis_t_event,
eventcat_ln LIKE LINE OF eventcat,
col_pos TYPE i.
DATA: targ_month(2) TYPE n, "0001
targ_year(4) TYPE n, "0001
targ_mth_abs TYPE p, "0001
doc_month(2) TYPE n, "0001
doc_year(4) TYPE n, "0001
doc_mth_abs TYPE p, "0001
mth_result TYPE p, "0001
doc_days TYPE p,
targ_days TYPE p,
addl_days TYPE p,
ext_days TYPE p,
v_days(3) TYPE c,
v_kkber LIKE knkk-kkber.
DATA:
BEGIN OF inrec OCCURS 1000, "0001
lifnr LIKE bsik-lifnr,
belnr LIKE bsik-belnr,
gjahr LIKE bsik-gjahr,
bldat LIKE bsik-bldat,
xblnr LIKE bsik-xblnr,
blart LIKE bsik-blart,
sgtxt LIKE bsik-sgtxt,
shkzg LIKE bsik-shkzg,
dmbtr LIKE bsik-dmbtr,
zfbdt LIKE bsik-zfbdt,
zbd1t LIKE bsik-zbd1t,
zbd2t LIKE bsik-zbd2t,
zbd3t LIKE bsik-zbd3t,
zuonr LIKE bsik-zuonr,
END OF inrec.
DATA:
BEGIN OF inrect OCCURS 1000, "0001
lifnr LIKE bsik-lifnr,
belnr LIKE bsik-belnr,
gjahr LIKE bsik-gjahr,
bldat LIKE bsik-bldat,
xblnr LIKE bsik-xblnr,
blart LIKE bsik-blart,
sgtxt LIKE bsik-sgtxt,
shkzg LIKE bsik-shkzg,
dmbtr LIKE bsik-dmbtr,
zfbdt LIKE bsik-zfbdt,
zbd1t LIKE bsik-zbd1t,
zbd2t LIKE bsik-zbd2t,
zbd3t LIKE bsik-zbd3t,
zuonr LIKE bsik-zuonr,
END OF inrect,
BEGIN OF t_item OCCURS 1000, " 0001
lifnr LIKE bsik-lifnr,
belnr LIKE bsik-belnr,
gjahr LIKE bsik-gjahr,
bldat LIKE bsik-bldat,
xblnr LIKE bsik-xblnr,
blart LIKE bsik-blart,
sgtxt LIKE bsik-sgtxt,
zfbdt LIKE bsik-zfbdt,
dmbtr LIKE bsik-dmbtr,
days(3) TYPE c,
zuonr LIKE bsik-zuonr,
END OF t_item,
t_line LIKE t_item OCCURS 1000 WITH HEADER LINE, " 0001
BEGIN OF itab OCCURS 1000,
lifnr LIKE lfa1-lifnr,
total LIKE bsik-dmbtr,
zfuture LIKE bsik-dmbtr,
zcurrent LIKE bsik-dmbtr,
crbal LIKE bsik-dmbtr,
30days LIKE bsik-dmbtr,
60days LIKE bsik-dmbtr,
90days LIKE bsik-dmbtr,
99days LIKE bsik-dmbtr,
120days LIKE bsik-dmbtr,
180days LIKE bsik-dmbtr,
365days LIKE bsik-dmbtr,
bzirk LIKE knvv-bzirk,
vkbur LIKE knvv-vkbur,
vwerk LIKE knvv-vwerk,
vkgrp LIKE knvv-vkgrp,
klimk LIKE knkk-klimk,
cashd LIKE knkk-cashd,
grupp LIKE knkk-grupp,
erdat LIKE lfa1-erdat,
name1 LIKE lfa1-name1,
name2 LIKE lfa1-name2,
stras LIKE lfa1-stras,
ort01 LIKE lfa1-ort01,
telf1 LIKE lfa1-telf1,
psort(10),
sperr LIKE lfa1-sperr,
totsal LIKE bsik-dmbtr,
txt50 LIKE skat-txt50,
gsber LIKE bsik-gsber,
END OF itab.
DATA: sel_tab TYPE TABLE OF rsparams WITH HEADER LINE,
p_debit(1) TYPE c,
p_credit(1) TYPE c.
DATA: t_variant LIKE disvariant OCCURS 0 WITH HEADER LINE.
parameters and select-options
SELECTION-SCREEN BEGIN OF BLOCK blck0 WITH FRAME TITLE text-002.
PARAMETERS: stida LIKE sy-datum DEFAULT sy-datum OBLIGATORY,
p_bukrs LIKE t001-bukrs DEFAULT 'PIIL' MEMORY ID buk
OBLIGATORY.
P_BUKRS LIKE T001-BUKRS DEFAULT 'CC01' OBLIGATORY. "0003
SELECT-OPTIONS: s_lifnr FOR bsik-lifnr ,
s_vkbur FOR knvv-vkbur,
s_vkgrp FOR knvv-vkgrp,
s_bzirk FOR knvv-bzirk,
s_konda FOR knvv-konda,
s_kdgrp FOR knvv-kdgrp NO-DISPLAY ,
s_kvgr2 FOR knvv-kvgr2 NO-DISPLAY ,
s_kkber FOR knkk-kkber NO-DISPLAY ,
s_grupp FOR knkk-grupp NO-DISPLAY ,
s_ctlpc FOR knkk-ctlpc,
s_akont FOR lfb1-akont,
s_gsber FOR bsik-gsber.
PARAMETERS: p_future AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK blck0.
SELECTION-SCREEN BEGIN OF BLOCK blck1 WITH FRAME TITLE text-002.
PARAMETERS: p_abs RADIOBUTTON GROUP zrad,
p_due RADIOBUTTON GROUP zrad DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK blck1.
*SELECTION-SCREEN BEGIN OF BLOCK blck2 WITH FRAME TITLE text-003.
*PARAMETERS: c_run RADIOBUTTON GROUP zrac DEFAULT 'X',
c_blk RADIOBUTTON GROUP zrac,
c_all RADIOBUTTON GROUP zrac.
*SELECTION-SCREEN END OF BLOCK blck2.
*SELECTION-SCREEN BEGIN OF BLOCK blck3 WITH FRAME TITLE text-004.
*PARAMETERS: p_debit AS CHECKBOX DEFAULT 'X' ,
p_credit AS CHECKBOX DEFAULT 'X' NO-DISPLAY,
*selection-screen end of block blck3.
start-of-selection.
START-OF-SELECTION.
PERFORM BUILD_EVENTCAT.
p_debit = 'X'.
p_credit = 'X'.
PERFORM get_customer_invoices.
filter records based on selection criteria
PERFORM filter_records.
END-OF-SELECTION.
PERFORM add_sort_field.
PERFORM modify_field.
PERFORM write_report.
*& Form FILTER_RECORDS
To collect all the required data from DB and store them in
internal table.
--> p1 text
<-- p2 text
FORM filter_records.
delete records based on selection criteria
LOOP AT itab.
SELECT vkbur vkgrp vwerk erdat konda kdgrp bzirk kvgr2
INTO (itab-vkbur, itab-vkgrp, itab-vwerk, knvv-erdat,
knvv-konda, knvv-kdgrp,itab-bzirk,knvv-kvgr2)
FROM knvv WHERE lifnr = itab-lifnr
ORDER BY erdat DESCENDING.
AKS :- Not Required for PI
CASE itab-vkbur.
WHEN 'SA1'.
itab-vkbur = 'SF25'.
WHEN 'QLD1'.
itab-vkbur = 'SF23'.
WHEN 'WA1'.
itab-vkbur = 'SF26'.
ENDCASE.
AKS.
EXIT.
ENDSELECT.
IF itab-vkbur IN s_vkbur AND
itab-vkgrp IN s_vkgrp AND
knvv-konda IN s_konda AND
knvv-kdgrp IN s_kdgrp AND
itab-bzirk IN s_bzirk AND
knvv-kvgr2 IN s_kvgr2.
ELSE.
DELETE itab.
CONTINUE.
ENDIF.
SELECT SINGLE klimk grupp cashd
INTO (itab-klimk, itab-grupp, itab-cashd)
FROM knkk WHERE lifnr = itab-lifnr
AND kkber IN s_kkber
AND ctlpc IN s_ctlpc
AND grupp IN s_grupp.
IF SY-SUBRC NE 0.
DELETE ITAB.
CONTINUE.
ENDIF.
SELECT SINGLE skat~txt50
INTO (itab-txt50)
FROM lfb1 INNER JOIN skat
ON lfb1akont EQ skatsaknr
WHERE lfb1~lifnr = itab-lifnr
AND lfb1~akont IN s_akont
AND skat~spras EQ 'EN'.
IF sy-subrc NE 0.
DELETE itab.
CONTINUE.
ENDIF.
SELECT SINGLE name1 name2 telf1 erdat stras ort01 sperr
INTO (itab-name1, itab-name2, itab-telf1,
itab-erdat, itab-stras, itab-ort01, itab-sperr )
FROM lfa1
WHERE lifnr = itab-lifnr
IF sy-subrc NE 0 .
DELETE itab.
CONTINUE.
ENDIF.
AKS For Filteration of Customer base on Block Area.
IF c_all NE 'X'.
IF c_run EQ 'X' AND itab-sperr EQ 'X'.
DELETE itab.
CONTINUE.
ELSE.
IF c_blk EQ 'X' AND itab-sperr NE 'X'.
DELETE itab.
CONTINUE.
ENDIF.
ENDIF.
ENDIF.
MODIFY itab.
ENDLOOP.
ENDFORM. " FILTER_RECORDS
*& Form GET_CUSTOMER_INVOICES
text
--> p1 text
<-- p2 text
FORM get_customer_invoices.
DATA:ztotcre LIKE bsik-dmbtr.
DATA:ztotsal LIKE bsik-dmbtr.
DATA: fsdate LIKE sy-datum.
DATA: l_perio(4) TYPE c.
MOVE stida TO rf140-stida.
MOVE rf140-stida+4(2) TO targ_month.
MOVE rf140-stida+0(4) TO targ_year.
MOVE rf140-stida+6(2) TO targ_days.
targ_mth_abs = ( targ_year * 12 ) + targ_month.
CALL FUNCTION 'ZGET_PERIOD_FROM_DATE'
EXPORTING
i_date = stida
IMPORTING
e_perio = l_perio.
CONCATENATE l_perio '0401' INTO fsdate.
select open items.
IF p_due EQ 'X'.
SELECT lifnr belnr gjahr bldat xblnr blart sgtxt " 0001
shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
zuonr
FROM bsik INTO TABLE inrect
WHERE bukrs = p_bukrs
AND budat LE stida
AND lifnr IN s_lifnr
AND gsber IN s_gsber
AND umskz NE 'T'
AND umskz NE 'F'
AND umskz NE 'R'
AND umskz NE 'P'
AND umskz NE 'J'
AND umskz NE 'L'.
LOOP AT INREC.
IF INREC-SHKZG = 'H'.
INREC-DMBTR = INREC-DMBTR * -1.
ENDIF.
MOVE-CORRESPONDING INREC TO T_ITEM. " 0001
PERFORM COLLECT_INVOICE USING INREC-lifnr INREC-DMBTR
INREC-ZFBDT INREC-ZBD1T
INREC-ZBD2T INREC-ZBD3T.
APPEND T_ITEM.
CLEAR T_ITEM.
ENDLOOP.
LOOP AT inrect.
inrec-lifnr = inrect-lifnr.
inrec-belnr = inrect-belnr.
inrec-gjahr = inrect-gjahr.
inrec-bldat = inrect-bldat.
inrec-xblnr = inrect-xblnr.
inrec-blart = inrect-blart.
inrec-sgtxt = inrect-sgtxt.
inrec-shkzg = inrect-shkzg.
inrec-dmbtr = inrect-dmbtr.
CALL FUNCTION 'NJ_CAL_DATE_IN_INTERVAL'
EXPORTING
date = inrect-zfbdt
days = inrect-zbd1t
months = 00
signum = '+'
years = 00
IMPORTING
calc_date = inrec-zfbdt.
inrec-zbd1t = inrect-zbd1t.
inrec-zbd2t = inrect-zbd2t.
inrec-zbd3t = inrect-zbd3t.
inrec-zuonr = inrect-zuonr.
APPEND inrec.
CLEAR inrec.
ENDLOOP.
ELSE.
SELECT lifnr belnr gjahr bldat xblnr blart sgtxt " 0001
shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
zuonr
FROM bsik INTO TABLE inrec
WHERE bukrs = p_bukrs
AND budat LE stida
AND lifnr IN s_lifnr
AND gsber IN s_gsber
AND umskz NE 'T'
AND umskz NE 'F'
AND umskz NE 'R'
AND umskz NE 'P'
AND umskz NE 'J'
AND umskz NE 'L'.
ENDIF.
SORT inrec BY lifnr shkzg zfbdt .
LOOP AT inrec.
AT NEW lifnr.
For Customers Credit Balance Transaction to be display in Report
End of Credit Balance
ztotcre = 0.
ztotsal = 0.
ENDAT.
IF inrec-shkzg = 'H'.
inrec-dmbtr = inrec-dmbtr * -1.
ztotcre = ztotcre + inrec-dmbtr.
ELSE.
IF inrec-blart = 'RV'.
IF inrec-bldat GE fsdate.
ztotsal = ztotsal + inrec-dmbtr.
ENDIF.
ENDIF.
ztotcre = ztotcre + inrec-dmbtr.
endif.
IF p_debit EQ 'X'.
IF ztotcre > 0.
MOVE-CORRESPONDING inrec TO t_item. " 0001
PERFORM collect_invoice USING inrec-lifnr ztotcre
inrec-zfbdt inrec-zbd1t
inrec-zbd2t inrec-zbd3t
ztotsal.
APPEND t_item.
CLEAR t_item.
ztotcre = 0.
ztotsal = 0.
ENDIF.
ENDIF.
ENDIF.
IF p_credit EQ 'X'.
AT END OF lifnr.
IF ztotcre < 0.
MOVE-CORRESPONDING inrec TO t_item. " 0001
PERFORM collect_invoice USING inrec-lifnr ztotcre
inrec-zfbdt inrec-zbd1t
inrec-zbd2t inrec-zbd3t
ztotsal.
APPEND t_item.
CLEAR t_item.
ztotcre = 0.
ztotsal = 0.
APPEND t_item.
CLEAR t_item.
ENDIF.
ENDAT.
ENDIF.
ENDLOOP.
select cleared items
IF p_due EQ 'X'.
REFRESH inrect. CLEAR inrect.
SELECT lifnr belnr gjahr bldat xblnr blart sgtxt
shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
zuonr
FROM bsak INTO TABLE inrect
WHERE bukrs = p_bukrs
AND budat LE stida
AND augdt > stida
AND lifnr IN s_lifnr
AND gsber IN s_gsber
REFRESH inrec. CLEAR inrec.
LOOP AT inrect.
inrec-lifnr = inrect-lifnr.
inrec-belnr = inrect-belnr.
inrec-gjahr = inrect-gjahr.
inrec-bldat = inrect-bldat.
inrec-xblnr = inrect-xblnr.
inrec-blart = inrect-blart.
inrec-sgtxt = inrect-sgtxt.
inrec-shkzg = inrect-shkzg.
inrec-dmbtr = inrect-dmbtr.
CALL FUNCTION 'NJ_CAL_DATE_IN_INTERVAL'
EXPORTING
date = inrect-zfbdt
days = inrect-zbd1t
months = 00
signum = '+'
years = 00
IMPORTING
calc_date = inrec-zfbdt.
inrec-zbd1t = inrect-zbd1t.
inrec-zbd2t = inrect-zbd2t.
inrec-zbd3t = inrect-zbd3t.
inrec-zuonr = inrect-zuonr.
APPEND inrec.
CLEAR inrec.
ENDLOOP.
ELSE.
REFRESH inrec. CLEAR inrec.
SELECT lifnr belnr gjahr bldat xblnr blart sgtxt
shkzg dmbtr zfbdt zbd1t zbd2t zbd3t
zuonr
FROM bsak INTO TABLE inrec
WHERE bukrs = p_bukrs
AND budat LE stida
AND augdt > stida
AND lifnr IN s_lifnr
AND gsber IN s_gsber
ENDIF.
SORT inrec BY lifnr shkzg zfbdt .
LOOP AT inrec.
AT NEW lifnr.
ztotcre = 0.
ztotsal = 0.
ENDAT.
IF inrec-shkzg = 'H'.
inrec-dmbtr = inrec-dmbtr * -1.
ztotcre = ztotcre + inrec-dmbtr.
ELSE.
IF inrec-blart = 'RV'.
IF inrec-bldat GE fsdate.
ztotsal = ztotsal + inrec-dmbtr.
ENDIF.
ENDIF.
ztotcre = ztotcre + inrec-dmbtr.
endif.
IF p_debit EQ 'X'.
IF ztotcre > 0.
MOVE-CORRESPONDING inrec TO t_item. " 0001
PERFORM collect_invoice USING inrec-lifnr ztotcre
inrec-zfbdt inrec-zbd1t
inrec-zbd2t inrec-zbd3t
ztotsal.
APPEND t_item.
CLEAR t_item.
ztotcre = 0.
ztotsal = 0.
ENDIF.
ENDIF.
ENDIF.
IF p_credit EQ 'X'.
AT END OF lifnr.
IF ztotcre < 0.
MOVE-CORRESPONDING inrec TO t_item. " 0001
PERFORM collect_invoice USING inrec-lifnr ztotcre
inrec-zfbdt inrec-zbd1t
inrec-zbd2t inrec-zbd3t
ztotsal.
APPEND t_item.
CLEAR t_item.
ztotcre = 0.
ztotsal = 0.
APPEND t_item.
CLEAR t_item.
ENDIF.
ENDAT. " 0001
ENDIF.
ENDLOOP.
ENDFORM. " GET_CUSTOMER_INVOICES
*& Form COLLECT_INVOICE
text
-->P_bsik_lifnr text
-->P_bsik_DMBTR text
-->P_bsik_ZFBDT text
-->P_bsik_ZFBDT1 text
-->P_bsik_ZFBDT2 text
-->P_bsik_ZFBDT3 text
FORM collect_invoice USING pp_lifnr
pp_dmbtr
pp_zfbdt
pp_zbd1t
pp_zbd2t
pp_zbd3t
pp_ztotsal.
doc_month = pp_zfbdt+4(2).
doc_year = pp_zfbdt+0(4).
doc_mth_abs = ( doc_year * 12 ) + doc_month.
mth_result = ( targ_mth_abs - doc_mth_abs ).
logic given by Mr. Ashok Singhvi
doc_days = pp_zfbdt+6(2).
addl_days = ( doc_days - targ_days ).
IF addl_days <= 0.
ADD 1 TO mth_result.
ENDIF.
IF NOT pp_zbd3t IS INITIAL.
MOVE pp_zbd3t TO ext_days.
ELSEIF NOT pp_zbd2t IS INITIAL.
MOVE pp_zbd2t TO ext_days.
ELSEIF NOT pp_zbd1t IS INITIAL.
MOVE pp_zbd1t TO ext_days.
ELSE.
CLEAR ext_days.
ENDIF.
CHECK with Andrew whether this is working or not
if extended payment terms exist, subtract no of mths from mth_result
IF NOT ext_days IS INITIAL.
CASE ext_days.
WHEN 30.
SUBTRACT 1 FROM mth_result.
WHEN 60.
SUBTRACT 2 FROM mth_result.
WHEN 90.
SUBTRACT 3 FROM mth_result.
WHEN 120.
SUBTRACT 4 FROM mth_result.
ENDCASE.
ENDIF.
change to key date
IF pp_dmbtr > 0.
IF p_future = 'X'. " 0001
IF mth_result <= 0.
itab-zcurrent = pp_dmbtr.
t_item-days = 'CUR'.
ELSEIF mth_result = 1.
itab-30days = pp_dmbtr.
t_item-days = '30D'.
ELSEIF mth_result = 2.
itab-60days = pp_dmbtr.
t_item-days = '60D'.
ELSEIF mth_result = 3.
itab-90days = pp_dmbtr.
t_item-days = '90D'.
ELSEIF mth_result > 3 AND mth_result <= 4 .
itab-99days = pp_dmbtr.
t_item-days = '99D'.
ELSEIF mth_result > 4 AND mth_result <= 6 .
itab-120days = pp_dmbtr.
t_item-days = '120D'.
ELSEIF mth_result > 6 AND mth_result <= 12 .
itab-180days = pp_dmbtr.
t_item-days = '180D'.
ELSEIF mth_result > 12 .
itab-365days = pp_dmbtr.
t_item-days = '365D'.
ENDIF.
ELSE.
IF mth_result < 0.
itab-zfuture = pp_dmbtr.
t_item-days = 'FUT'.
ELSEIF mth_result = 0.
itab-zcurrent = pp_dmbtr.
t_item-days = 'CUR'.
ELSEIF mth_result = 1.
itab-30days = pp_dmbtr.
t_item-days = '30D'.
ELSEIF mth_result = 2.
itab-60days = pp_dmbtr.
t_item-days = '60D'.
ELSEIF mth_result = 3.
itab-90days = pp_dmbtr.
t_item-days = '90D'.
ELSEIF mth_result > 3 AND mth_result <= 4 .
itab-99days = pp_dmbtr.
t_item-days = '99D'.
ELSEIF mth_result > 4 AND mth_result <= 6 .
itab-120days = pp_dmbtr.
t_item-days = '120D'.
ELSEIF mth_result > 6 AND mth_result <= 12 .
itab-180days = pp_dmbtr.
t_item-days = '180D'.
ELSEIF mth_result > 12 .
itab-365days = pp_dmbtr.
t_item-days = '365D'.
ENDIF.
ENDIF. " 0001
itab-crbal = 0.
itab-total = pp_dmbtr.
ELSE.
IF p_future = 'X'. " 0001
IF mth_result <= 0.
itab-zcurrent = pp_dmbtr.
t_item-days = 'CUR'.
ELSEIF mth_result = 1.
itab-30days = pp_dmbtr.
t_item-days = '30D'.
ELSEIF mth_result = 2.
itab-60days = pp_dmbtr.
t_item-days = '60D'.
ELSEIF mth_result = 3.
itab-90days = pp_dmbtr.
t_item-days = '90D'.
ELSEIF mth_result > 3 AND mth_result <= 4 .
itab-99days = pp_dmbtr.
t_item-days = '99D'.
ELSEIF mth_result > 4 AND mth_result <= 6 .
itab-120days = pp_dmbtr.
t_item-days = '120D'.
ELSEIF mth_result > 6 AND mth_result <= 12 .
itab-180days = pp_dmbtr.
t_item-days = '180D'.
ELSEIF mth_result > 12 .
itab-365days = pp_dmbtr.
t_item-days = '365D'.
ENDIF.
ELSE.
IF mth_result < 0.
itab-zfuture = pp_dmbtr.
t_item-days = 'FUT'.
ELSEIF mth_result = 0.
itab-zcurrent = pp_dmbtr.
t_item-days = 'CUR'.
ELSEIF mth_result = 1.
itab-30days = pp_dmbtr.
t_item-days = '30D'.
ELSEIF mth_result = 2.
itab-60days = pp_dmbtr.
t_item-days = '60D'.
ELSEIF mth_result = 3.
itab-90days = pp_dmbtr.
t_item-days = '90D'.
ELSEIF mth_result > 3 AND mth_result <= 4 .
itab-99days = pp_dmbtr.
t_item-days = '99D'.
ELSEIF mth_result > 4 AND mth_result <= 6 .
itab-120days = pp_dmbtr.
t_item-days = '120D'.
ELSEIF mth_result > 6 AND mth_result <= 12 .
itab-180days = pp_dmbtr.
t_item-days = '180D'.
ELSEIF mth_result > 12 .
itab-365days = pp_dmbtr.
t_item-days = '365D'.
ENDIF.
ENDIF. " 0001
itab-total = pp_dmbtr.
itab-crbal = 0.
ENDIF.
itab-lifnr = pp_lifnr.
itab-totsal = pp_ztotsal.
COLLECT itab.
CLEAR itab.
ENDFORM. " COLLECT_INVOICE
*& Form ADD_SORT_FIELD
text
--> p1 text
<-- p2 text
FORM add_sort_field.
DATA: l_amount(9) TYPE n.
IF p_future = 'X'.
LOOP AT itab.
l_amount = 999999999.
IF itab-365days > 0.
l_amount = l_amount - itab-365days.
CONCATENATE 'A' l_amount INTO itab-psort.
ELSEIF itab-180days > 0.
l_amount = l_amount - itab-180days.
CONCATENATE 'B' l_amount INTO itab-psort.
ELSEIF itab-120days > 0.
l_amount = l_amount - itab-120days.
CONCATENATE 'C' l_amount INTO itab-psort.
ELSEIF itab-99days > 0.
l_amount = l_amount - itab-99days.
CONCATENATE 'D' l_amount INTO itab-psort.
ELSEIF itab-90days > 0.
l_amount = l_amount - itab-90days.
CONCATENATE 'E' l_amount INTO itab-psort.
ELSEIF itab-60days > 0.
l_amount = l_amount - itab-60days.
CONCATENATE 'F' l_amount INTO itab-psort.
ELSEIF itab-30days > 0.
l_amount = l_amount - itab-30days.
CONCATENATE 'G' l_amount INTO itab-psort.
ELSEIF itab-zcurrent > 0.
l_amount = l_amount - itab-zcurrent.
CONCATENATE 'H' l_amount INTO itab-psort.
ELSEif itab-zfuture > 0.
L_AMOUNT = L_AMOUNT - ITAB-zfuture.
CONCATENATE 'F' L_AMOUNT INTO ITAB-PSORT.
ELSE.
l_amount = ABS( itab-total ).
CONCATENATE 'I' l_amount INTO itab-psort.
ENDIF.
MODIFY itab.
ENDLOOP.
ELSE.
LOOP AT itab.
l_amount = 999999999.
IF itab-365days > 0.
l_amount = l_amount - itab-365days.
CONCATENATE 'A' l_amount INTO itab-psort.
ELSEIF itab-180days > 0.
l_amount = l_amount - itab-180days.
CONCATENATE 'B' l_amount INTO itab-psort.
ELSEIF itab-120days > 0.
l_amount = l_amount - itab-120days.
CONCATENATE 'C' l_amount INTO itab-psort.
ELSEIF itab-99days > 0.
l_amount = l_amount - itab-99days.
CONCATENATE 'D' l_amount INTO itab-psort.
ELSEIF itab-90days > 0.
l_amount = l_amount - itab-90days.
CONCATENATE 'E' l_amount INTO itab-psort.
ELSEIF itab-60days > 0.
l_amount = l_amount - itab-60days.
CONCATENATE 'F' l_amount INTO itab-psort.
ELSEIF itab-30days > 0.
l_amount = l_amount - itab-30days.
CONCATENATE 'G' l_amount INTO itab-psort.
ELSEIF itab-zcurrent > 0.
l_amount = l_amount - itab-zcurrent.
CONCATENATE 'H' l_amount INTO itab-psort.
ELSEIF itab-zfuture > 0.
l_amount = l_amount - itab-zfuture.
CONCATENATE 'I' l_amount INTO itab-psort.
ELSE.
l_amount = ABS( itab-total ).
CONCATENATE 'J' l_amount INTO itab-psort.
ENDIF.
MODIFY itab.
ENDLOOP.
ENDIF.
ENDFORM. " ADD_SORT_FIELD
*& Form WRITE_REPORT
text
--> p1 text
<-- p2 text
FORM write_report.
PERFORM build_fieldcat.
PERFORM build_sortcat.
PERFORM build_eventcat.
PERFORM build_layout.
PERFORM start_list_viewer.
ENDFORM. " WRITE_REPORT
*& Form BUILD_FIELDCAT
text
--> p1 text
<-- p2 text
FORM build_fieldcat.
lifnr
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'lfa1'.
fieldcat_ln-fieldname = 'LIFNR'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
APPEND fieldcat_ln TO fieldcat.
Name1
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'lfa1'.
fieldcat_ln-fieldname = 'NAME1'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-seltext_l = 'Name'.
APPEND fieldcat_ln TO fieldcat.
City Details
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'lfa1'.
fieldcat_ln-fieldname = 'ORT01'.
fieldcat_ln-seltext_l = 'City'.
fieldcat_ln-col_pos = col_pos.
APPEND fieldcat_ln TO fieldcat.
Credit Limit
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'KNKK'.
fieldcat_ln-fieldname = 'KLIMK'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-emphasize = 'C41'.
APPEND fieldcat_ln TO fieldcat.
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = 'CRBAL'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-seltext_l = 'Cr. Bal.'.
fieldcat_ln-seltext_m = 'Cr. Bal.'.
fieldcat_ln-seltext_s = 'Cr. Bal.'.
APPEND fieldcat_ln TO fieldcat.
Total Amount
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-fieldname = 'TOTAL'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-seltext_l = 'Out.St.Amt.'.
fieldcat_ln-seltext_m = 'Out.St.Amt.'.
fieldcat_ln-seltext_s = 'Out.St.Amt.'.
fieldcat_ln-ref_tabname = 'zbsik'.
fieldcat_ln-ref_fieldname = 'ZDMBTR'.
APPEND fieldcat_ln TO fieldcat.
IF p_future NE 'X'.
Future
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = 'ZFUTURE'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = 'Future Due'.
fieldcat_ln-seltext_m = 'Future Due'.
fieldcat_ln-seltext_s = 'Future Due'.
APPEND fieldcat_ln TO fieldcat.
ENDIF.
Current
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = 'ZCURRENT'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = 'Normal Due'.
fieldcat_ln-seltext_m = 'Normal Due'.
fieldcat_ln-seltext_s = 'Normal Due'.
APPEND fieldcat_ln TO fieldcat.
30 Days
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = '30DAYS'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = '0-30 Days'.
fieldcat_ln-seltext_m = '0-30 Days'.
fieldcat_ln-seltext_s = '0-30 Days'.
APPEND fieldcat_ln TO fieldcat.
60 Days
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = '60DAYS'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = '31-60 Days'.
fieldcat_ln-seltext_m = '31-60 Days'.
fieldcat_ln-seltext_s = '31-60 Days'.
APPEND fieldcat_ln TO fieldcat.
90 Days
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = '90DAYS'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = '61-90 Days'.
fieldcat_ln-seltext_m = '61-90 Days'.
fieldcat_ln-seltext_s = '61-90 Days'.
APPEND fieldcat_ln TO fieldcat.
99 Days
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = '99DAYS'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = '91-120 Days'.
fieldcat_ln-seltext_m = '91-120 Days'.
fieldcat_ln-seltext_s = '91-120 Days'.
APPEND fieldcat_ln TO fieldcat.
*120Days
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = '120DAYS'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = '121-180 Days'.
fieldcat_ln-seltext_m = '121-180 Days'.
fieldcat_ln-seltext_s = '121-180 Days'.
APPEND fieldcat_ln TO fieldcat.
*180 Days
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = '180DAYS'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = '181-365 Days'.
fieldcat_ln-seltext_m = '181-365 Days'.
fieldcat_ln-seltext_s = '181-365 Days'.
APPEND fieldcat_ln TO fieldcat.
*365 Days
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'bsik'.
fieldcat_ln-ref_fieldname = 'DMBTR'.
fieldcat_ln-fieldname = '365DAYS'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-do_sum = 'X'.
fieldcat_ln-hotspot = 'X'.
fieldcat_ln-emphasize = 'C41'.
fieldcat_ln-seltext_l = '>365 Days'.
fieldcat_ln-seltext_m = '>365 Days'.
fieldcat_ln-seltext_s = '>365 Days'.
APPEND fieldcat_ln TO fieldcat.
Last Payment Date
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'KNKK'.
fieldcat_ln-fieldname = 'CASHD'.
fieldcat_ln-col_pos = col_pos.
APPEND fieldcat_ln TO fieldcat.
Street Name
ADD 1 TO COL_POS.
CLEAR FIELDCAT_LN.
FIELDCAT_LN-REF_TABNAME = 'lfa1'.
FIELDCAT_LN-FIELDNAME = 'STRAS'.
FIELDCAT_LN-COL_POS = COL_POS.
APPEND FIELDCAT_LN TO FIELDCAT.
Telephone
ADD 1 TO COL_POS.
CLEAR FIELDCAT_LN.
FIELDCAT_LN-REF_TABNAME = 'lfa1'.
FIELDCAT_LN-FIELDNAME = 'TELF1'.
FIELDCAT_LN-COL_POS = COL_POS.
APPEND FIELDCAT_LN TO FIELDCAT.
Credit Group
ADD 1 TO COL_POS.
CLEAR FIELDCAT_LN.
FIELDCAT_LN-REF_TABNAME = 'KNKK'.
FIELDCAT_LN-FIELDNAME = 'GRUPP'.
FIELDCAT_LN-COL_POS = COL_POS.
APPEND FIELDCAT_LN TO FIELDCAT.
*Sales District
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'KNVV'.
fieldcat_ln-fieldname = 'BZIRK'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-seltext_l = 'S_Distt'.
fieldcat_ln-seltext_m = 'S_Distt'.
fieldcat_ln-seltext_s = 'S_Distt'.
APPEND fieldcat_ln TO fieldcat.
Sales Office
ADD 1 TO col_pos.
CLEAR fieldcat_ln.
fieldcat_ln-ref_tabname = 'KNVV'.
fieldcat_ln-fieldname = 'VKBUR'.
fieldcat_ln-col_pos = col_pos.
fieldcat_ln-seltext_l = 'S_Off'.
fieldcat_ln-seltext_m = 'S_Off'.
fieldcat_ln-seltext_s = 'S_Off'.
APPEND fieldcat_ln TO fieldcat.
Cust Creat Date
ADD 1 TO COL_POS.
CLEAR FIELDCAT_LN.
FIELDCAT_LN-REF_TABNAME = 'lfa1'.
FIELDCAT_LN-FIELDNAME = 'ERDAT'.
FIELDCAT_LN-COL_POS = COL_POS.
APPEND FIELDCAT_LN TO FIELDCAT. -
Purchase organizartion field in vendor aging report
Report is vendor liability aging : lifnr from lfa1, ( bukrs from lfb1 and posting date from bsik both fields are maindatory ).
I have to add one field EKORG . I am using LFM1 table.
i am picking lifnr ekorg from LFM1 table & then picking for all entries on bsik with lifnr equality in lfm1.
& then selecting lfa1-lifnr from i_bsik-lifnr equality.
is lfm1 write table to add field ekorg in vendor liability aging report ?
Problem is : earlier report without LFM1-EKORG was showing more vendors ,amount , g-total.
but with lfm1-ekorg field ( vendors are less, effecting total, amount)
Any solution ?
Thanks.>
Ravi Kumar wrote:
> Report is vendor liability aging : lifnr from lfa1, ( bukrs from lfb1 and posting date from bsik both fields are maindatory ).
> I have to add one field EKORG . I am using LFM1 table.
> i am picking lifnr ekorg from LFM1 table & then picking for all entries on bsik with lifnr equality in lfm1.
> & then selecting lfa1-lifnr from i_bsik-lifnr equality.
> is lfm1 write table to add field ekorg in vendor liability aging report ?
> Problem is : earlier report without LFM1-EKORG was showing more vendors ,amount , g-total.
> but with lfm1-ekorg field ( vendors are less, effecting total, amount)
>
> Any solution ?
> Thanks.
the relation from vendor to ekorg is 1:n (LFM1, the same vendor can be defined for various purchasing organisations.
the relation from company code to ekorg can be n:m (depending on the configuration)
explanation: depending on your configuration, ekorg can be bound to one and only one company code (bsik) -> the business process for this would be: one purchasing organisation (ekorg) purchases for one company code only. on the other hand, the binding to a company code is not mandatory, the business process being: one purchasing organisation (ekorg) does the work centrally for all child company codes. last not least: you can leave all of your purchasing organisations 'unbound', so that all of them are able to purchase for all company codes ...
with this in mind, check your selections again.
Maybe you are looking for
-
Problem Flash video inserted in a webpage made in DW CS5 and played back in IE8 plays back at a frame rate that is too low (looks "choppy"). Flash video inserted in a webpage and played back in IE8 plays back fine and smoothly / correct frame rate. I
-
hi everyone, i m developing a po in smartforms. now i want to give the select-option on selection screen and accordingly i want to print po.s continuesly as given by user in in select-options,.so can u tell em how its is deal in prog
-
MacBook Pro Calendar + To Do
How do I sync my iCal "to do" list, the one that is actually attached to the calendar, to my iPod Touch? Do I have to reenter the to-dos in the calendar notes section at the bottom of the card? That would mean I would have to go through the calendar
-
[help] Java Exercise
I'm using the Java: How to program(Deitel ed.6 Chapter3) book and when i try to compile the source code, I get some error message. public class GradeBookTest public static void main( String[] args ) GradeBook gradeBook1 = new GradeBook
-
MacBook won't run off of the battery
My daughter's MacBook is a couple years old. Everytime she tries to use the computer without it hooked to the AC source, it will shut down when the battery reaches 94% battery power. I've reset the SMC with no results. She then hooks the computer to