Calculate a person's age to the report
HI I have a field that contains the Patient's birthday. The report is looking for the Patients age.
I was looking for a formula that would give the years between 2 dates, with the to date being of course today's date. I guess that we don't want to round up, that is, someone is not the next year until the actual date match.
There is a command in other script languages called Subdur (subtract duration) that would give the time between two dates. I was wondering if something like this can be had in Crystal as well.
It's possible that the problem is that the field is not only containing the date but also the time. DOn't ask me why someone's birthday field contains the time.
This is because a DateTime field in a database is allways Date+Time. I believe the next SQL server will have separate fields for Date and Time, but for now we're stuck with it.
A quick google gave these results,
[http://kenhamady.com/form06.shtml|http://kenhamady.com/form06.shtml]
[http://www.forumtopics.com/busobj/viewtopic.php?t=112815&start=0&postdays=0&postorder=asc&sid=47492f323ddca688b00cb63fb45a001d|http://www.forumtopics.com/busobj/viewtopic.php?t=112815&start=0&postdays=0&postorder=asc&sid=47492f323ddca688b00cb63fb45a001d]
[http://www.crystalkeen.com/articles/crystalreports/agecalculation.htm|http://www.crystalkeen.com/articles/crystalreports/agecalculation.htm]
Similar Messages
-
How to track personal details changes in the report without using triggers on the database tables
Hi There,
I'm having a requirement to track the oracle HRMS Personal details changes in the report not using the triggers.
ex: if some changes the address of the person, then that changed values should be populated in the report.
Please find below query:
If any of the following columns data is updated, the new value should be populated in the report.
SELECT PAPF.PERSON_ID PAPF_PERSON_ID
, PAPF.EMPLOYEE_NUMBER EMPLOYEE_NUMBER
, PAPF.FIRST_NAME FIRST_NAME
, PAPF.LAST_NAME LAST_NAME
, TO_CHAR(PAPF.DATE_OF_BIRTH ,'DD-MON-YYYY') DATE_OF_BIRTH
, ADDR.ADDRESS_LINE1 ADDRESS_1
, ADDR.ADDRESS_LINE2 ADDRESS_2
, ADDR.ADDRESS_LINE3 ADDRESS_3
, ADDR.TOWN_OR_CITY TOWN
, ADDR.REGION_1 COUNTY
, ADDR.POSTAL_CODE POST_CODE
, ADDR.COUNTRY COUNTRY
, PAY.PAYROLL_NAME PAYROLL_NAME
, PLN_TYP.NAME PLAN_TYP
, PLN.NAME PRODUCT_NAME
, BOF.NAME COVERAGE
FROM PER_ALL_PEOPLE_F PAPF
, PER_ALL_ASSIGNMENTS_F PAF
, PER_ADDRESSES ADDR
, PAY_PAYROLLS_F PAY
, BEN_PRTT_ENRT_RSLT_F PEN
, BEN_PL_TYP_F PLN_TYP
, BEN_PL_F PLN
, BEN_OIPL_F BOIPF
, BEN_OPT_F BOF
WHERE 1 = 1
AND PAPF.PERSON_ID = PAF.PERSON_ID
AND TRUNC(SYSDATE) BETWEEN PAPF.EFFECTIVE_START_DATE AND PAPF.EFFECTIVE_END_DATE
AND TRUNC(SYSDATE) BETWEEN PAF.EFFECTIVE_START_DATE AND PAF.EFFECTIVE_END_DATE
AND PAPF.PERSON_ID = ADDR.PERSON_ID
AND ADDR.PRIMARY_FLAG = 'Y'
AND ADDR.DATE_TO IS NULL
AND PAF.PAYROLL_ID = PAY.PAYROLL_ID(+)
AND PEN.PERSON_ID = PAPF.PERSON_ID
AND PEN.BUSINESS_GROUP_ID = PAPF.BUSINESS_GROUP_ID
AND TRUNC(SYSDATE) BETWEEN TRUNC(PEN.EFFECTIVE_START_DATE) AND TRUNC(PEN.EFFECTIVE_END_DATE)
AND PEN.PRTT_ENRT_RSLT_STAT_CD IS NULL
AND PEN.SSPNDD_FLAG = 'N'
AND ( PEN.ENRT_CVG_THRU_DT >= TRUNC(SYSDATE)
OR PEN.ENRT_OVRIDN_FLAG = 'Y')
AND EXISTS(SELECT PIL.PER_IN_LER_ID
FROM BEN_PER_IN_LER PIL
WHERE PIL.PER_IN_LER_ID = PEN.PER_IN_LER_ID
AND PIL.BUSINESS_GROUP_ID = PEN.BUSINESS_GROUP_ID
AND PIL.PER_IN_LER_STAT_CD NOT IN ('VOIDD','BCKDT'))
AND PEN.PL_TYP_ID = PLN_TYP.PL_TYP_ID
AND TRUNC(SYSDATE) BETWEEN PLN_TYP.EFFECTIVE_START_DATE AND PLN_TYP.EFFECTIVE_END_DATE
AND PLN_TYP.PL_TYP_ID = PLN.PL_TYP_ID
AND TRUNC(SYSDATE) BETWEEN PLN.EFFECTIVE_START_DATE AND PLN.EFFECTIVE_END_DATE
AND PLN.PL_ID = PEN.PL_ID
AND PEN.OIPL_ID = BOIPF.OIPL_ID(+)
AND TRUNC(SYSDATE) BETWEEN NVL(BOIPF.EFFECTIVE_START_DATE,HR_GENERAL.START_OF_TIME) AND NVL(BOIPF.EFFECTIVE_END_DATE,HR_GENERAL.END_OF_TIME)
AND BOIPF.OPT_ID = BOF.OPT_ID(+)
AND TRUNC(SYSDATE) BETWEEN NVL(BOF.EFFECTIVE_START_DATE,HR_GENERAL.START_OF_TIME) AND NVL(BOF.EFFECTIVE_END_DATE,HR_GENERAL.END_OF_TIME)
AND (:P_SYSDATE) BETWEEN TRUNC(PEN.ENRT_CVG_STRT_DT) AND TRUNC(PEN.ENRT_CVG_THRU_DT)
AND (CASE WHEN :P_PAYROLL_ID IS NULL THEN 'Y' ELSE NVL((SELECT 'Y' FROM DUAL WHERE PAY.PAYROLL_ID = :P_PAYROLL_ID), 'N') END) = 'Y'
AND PAPF.LAST_UPDATE_DATE = (:P_SYSDATE) ;
--AND PAPF.LAST_UPDATE_DATE BETWEEN to_date(:P_SYSDATE) and (to_date(:p_sysdate) + INTERVAL '31' Day);
--AND (:P_SYSDATE) = PAPF.LAST_UPDATE_DATE ;
Thankscheck this -
Re: Best Event-Based notifications for Sox Complience? -
Display the name of the person who creates (prints) the report
I have designed a report 'template' for other people to use.
I would like a field in the report which displays the name of the person who uses the report template to display data from the database.
The field in the Special Fields drop down menu called 'file author' does not work.
Can anyone suggest what I should use?Try inserting one text object stating "Designed by XXXX" at the footer before creating a template so that when ever the template is used for a report the text object will be printed with that Description
Raghavendra -
How do I remove a person's age from birthday calendar
With the update to Lion, iCal seems to compute a person's age from the date entered the Address Book. I want to remove this and just show the person's name in iCal.
I tried deleting the year in Address Book, and it would ALWAYS come back. As if iCloud insisted on correcting me.
SO, I tried making the change via the Address Book WEB interface at iCloud.com -- and it worked. Still, it's annoying -- and a bit worrysome -- that edits I'm making on my computer or iPhone aren't being integrated into the Cloud. Isn't that the whole point?? -
Is there a way to automatically calculate a persons' age from their birthda
Using iCal 3.0.5 and address book 4.1.1, following these instructions:
_Displaying birthdays on an iCal calendar_
http://docs.info.apple.com/article.html?path=AddressBook/4.1/en/9218.html
Results in an all-day meeting in iCal for each birthday in the address book. It shows the current birthday date, not the year the person was born.
I can add that to the "notes" section in the address book, but that will not automatically be attached to the notes on the calendar event. (or is there an option for that someplace?)
Is there a script or plugin that I can create or write to calculate the age of the birthday person and add that to the note? Or display it in a popup??
I'm very new to this, not afraid of a little coding work. Just need direction.
Message was edited by: Richard E. CookeHi Richard,
See my post here:
http://discussions.apple.com/thread.jspa?messageID=6686705�
This shareware adds the birthdays and anniversaries to iCal with ages and the possibility of multiple alarms.
Best wishes
John M -
Current age calculation in the report
Hi Experts,
How can i calculate the current age based on the date of birth in the report.
like current age = current date - birth date
some body help me out of this issue.
Rgds,
SatyaHi Satya,
Could you please update me on how you calculacted AGE..please as i am also looking for that
I shall be great full if you can send me screen shots and code required to
[email protected]
Thanks -
In the report level user wants two persons against each work center.
Hi Experts,
Please let me know the solution, I have provided scenario below.
check the query which the user is referring to report:
Example
Work center Person
KNE33102 44003850
According to the user, the names for the Work centers should be as follows:
Work center Person
KNE33102 44003850,
KNE33102 44003603
I have check the data in T-code-CR03, each work center getting two persons, as can be shown below.
Work center Person
KNE33102 44003850,
KNE33102 44003603
In RSA3 it can be seen that both the records are being extracted
Work center Start date End date Person
KNE33102 09.02.2009 31.12.2009 44003850
KNE33102 09.02.2009 31.12.2009 44003603
In BI , when checking in PSA, it can be seen that the data is also being loaded to BI (Two persons loaded against Work center-KNE33102)
Work center Start date End date Person
KNE33102 09.02.2009 31.12.2009 44003850
KNE33102 09.02.2009 31.12.2009 44003603
But when loading to the Info Object, one person has deleted. Because of this, in the report level displaying one person.
Note:-Please let me know what is the procedure, in the report level user wants two persons against each work center.Hi,
As you said in your post the data has mentioned up to 2009. can you try execute the query till to date .
Regards
sivaraju -
How to calculate Age in the RPD level
I want to create a logical column say 'Age' in the repository. I have the PERS_DOB in the PERSON dimension.
From this I wrote a query to get the age from the PERSON dimension as below.
I am wondering if I can create a logical column in the rpd using the sql or is there any way where I can get the age of the persons calculated as a logical layer in the repository.
select pers_dob, round (((trunc(sysdate)-trunc(pers_dob))/365), 0) from w_pers_d
Thanks in advance.I have created a repository variable 'currentdate' (to get the sysdate) in the rpd and created a new logical column AGE and in the expression builder I used the below and got the syntax error.
***round((currentdate-trunc("Program Info b".."Program Info b"."W_PGAD_PR_PERS_D"."PERS_DOB" )/365),0)***
***[nQSError: 27002] Near <(>: Syntax error [nQSError: 26012] .***
I thought functions round, trunc are not supported in OBIEE expression builder and tried the below and got a different syntax error.
*[nQSError: 27009] Unresolved identifier: "currentdate".*
Have anyone tried this successfully.
Please let me know.
Thanks/ -
what will be the peoplesoft query to calculate voluntary termination count and involuntary termination count? I am working on OBIA HR analytics workforce deployment reports and need to validate the reports. I also want to know the tables involved
Hi Andrew,
Part A:
I've done some restating of the question, and distributed the calculations among several fields, not all of which need to be included on the visible layout. Other than formatting the Date fields and moving the 'Completed Date' field and its label, I've left this in the default "Layout 1" produced by AppleWorks.
Field List:
Priority: Popup menu with six items: 00, J, D, 1, 2, 3 Defaults to 00
TL (time limit in months): Calculation: CHOOSE('Priority',0,1,3,4,6,12)
Received: Date. Option: Automatically insert today's date (ie. Date Record created) (may be edited)
Target Date: Calculation:
DATE(YEAR('Received')+INT(MONTH('Received')+'TL')/12,MOD(MONTH('Received')+'TL', 12),DAY('Received'))
Remaining (Days): Calculation: INT('Target Date'+1-NOW()) (see revision below)
Completed: Checkbox. Set default value to Unchecked.
Completed Date: Date: Entered manually
OnTarget: Calculation: IF('Completed',IF('Completed Date'<'Target Date',"On Target","Over"),IF(INT(NOW())>'Target Date',"Over","On Target"))
The On Target field shows the current status of the case while still open, and the state on the closing date when it was closed.
Having done that, I was unhappy with the Remaining field continuing to calculate an ever larger negative number after the case had been closed. Hence this revision below:
Remaining: Calculation: IF('Completed','Target Date'-'Completed Date',INT('Target Date'+1-NOW()))
Shows the number of days remaining while the case is open, the days remaining at completion if the case has been marked Completed and the completion date entered.
Rsults (and some further formatting of the Layout) below.
Part B:
You will need Subsummary parts when sorted on Completed and on On Target. Fields can appear on a Layout only once, so each subsummary part will need a separate Summary type field for each field to be summarized.
Regards,
Barry -
Calculate characteristic in the report runtime
Hello gurus,
I need to calculate a characteristic of the cube at runtime the report.
This feature must be calculated from the subtraction of the date entered by the user on the wanted and the expiration date of treasury paper.
If the number of days is within this range (0-30) the feature will have this value (0-30) and if this is within another range (31-60) will have the characteristic value (31-60), and so on.
At load time I can not do the calculation in this area, since it is not what is the date on which the report could only be done at runtime loved her.
I have seen that there is a user-exit for the calculation of characteristic and virtual key figures, but I have on how to use it and how to proceed.
Does anyone have any suggestions or would think I can develop something like this?
Sincerely,hello,
I've been testing what I say.
And I've created two variables formula, one that reads user-Exira by the entry of the report and a processing path replacement to pick up the characteristic value of expiration date of the document.
And the result given by making the subtraction in wanted by a ratio calculated as follows:
Date of entry: internally stores it in this format 20100116
Mat Date: 20091218
Results Calculated key figure: 20100116 to 20091218 = 8898.
The result gives me is not correct, because the rest of the operators acting as if they were numbers and dates.
How I can fix this?
Sincerely, -
How do i calculate the age given the dob?
How do i calculate the age given the dob?
Date dateOfBirth = yourObject.getDateOfBirth();
float ageInMillis = System.currentTimeMillis() - dateOfBirth.getTime(); -
How do I calculate the age given the year of birth?
How do I calculate the age given the year of birth?
Get the current year using the getYear() method. Subtract the year of birth from the current year. The age is calculated.
d. -
How to find the person.. who is running the report..
Hi,
I am using RedHat linux for the PROD server.(10.2.0.4 DB, R12.0.6 Application)
I have end users those who are running discoverer reports.
The question is how can i find exactly from which IP address the end user is running the reports.
I have the top command results.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15397 oraprd 16 0 2150m 1.0g 1.0g R 81 3.2 80:44.27 oracle
15408 oraprd 16 0 2150m 1.0g 1.0g R 73 3.1 120:38.62 oracle
15487 oraprd 22 0 2154m 493m 483m R 67 1.5 110:05.65 oracle
32155 oraprd 15 0 2187m 1.7g 1.6g S 63 5.2 113:11.06 oracle
with the help of the PID and SID.. how can i find the IP address of the End user who is running the reports. So that i can stop him from running the reports, since its running for long time.
Regards
KarthyHi;
What below query return?
select a.sid, a.serial#, b.sql_text,a.user#,a.username
from v$session a, v$sqlarea b
where a.sql_address=b.address
and a.SID='2121';
Please also see:
Re: How to i get client IP address of a system on Oracle E-biz
Re: sql to get Machine IP
Regard
Helios -
Zreport on ageing & GR/IR report
I have 1 zreport called ZAGEING.
user have following query on this
"Attached for reference is the GR/IR Report that I need help with.
For example GR 5000021442 on PO 4502027464 has had a 102 movement which should reverse this GR therefore shouldn'd show on report.
This seems to have happened through out this report that GR and IR have not cleared.
Also is there anyway that I can run this report showing the GR that we see when viewing PO with transaction ME23N."Reports have column as
Company Code / Business Area/ Vendor / PO No. / PO Item / GR/IR Document / Item / year / ageing >60/ageing >90 / ageing >120 / Total Value
GR 5000021442 is under column GR/IR Document .
I am not getting clients requirement.
Where I can see GR/IR Document . I am not able to see it in tcode MR11SHOW.
Can we we gr ir document in Purchase order history of purchase order.
Edited by: KiranCG on Jan 3, 2012 10:37 AMHi,
The user requirement is simple in this report.
Normally a PO will have toget posted with a GR and a IR document whih is called as invoie report.At the same time , a PO will have a delivery date upon which the goods need tobe delivered tothe PO plant and once the goods are deliveered an invoice will be sent for IR.Also PO will have a PO creation date.
Here what you need to ask the user is about the ageing .Like the age should be based upon the Delivery date of the PO or the PO creation date. Bases upon this date you cancalulate the GR document aging or IR document aging.
In eah PO there will be a tab called POhistory ,where inyou can see the GR and IR doument and if any GR/IR clearing is done , the learing doument too. The related table is EKBE where in you canview all the transactions happened for the PO.
MSEG, rbkp , bseg ETC tables are useful in idenntifying the fields. you can write the logic for aging,This is a simple report straight you can ask to code.
Please comeup back with your requiremjent fully so that correct guidance will be given.
Regards, -
Not Able to Generate Out of the Report by adding the new 2 fields
Hi,
I'm Very new to ABAP. I have created one report. after 2 new fields added they are EKNAM and EKGRP.
The Thing is the remaining fields are displaying in the output. The Newly added fields are not displaying the out. I was able to add this 2 fields in the head of the report. But issue is not able to get the data on these 2 fields.
Please see the below program and any one please help me out to display the data in this report for the fields eknam and ekgrp.
TABLES: eban,
lfa1,
ekko,
t024,
v_username.
DATA: BEGIN OF i_req_items OCCURS 10,
ernam LIKE eban-ernam, "Created by
lifnr LIKE eban-lifnr, "Desired vendor
ebeln LIKE eban-ebeln, "PO Number
ebelp LIKE eban-ebelp, "PO Item
eknam LIKE t024-eknam, "Pur.Grp Name
ekgrp LIKE t024-ekgrp, "Pur.Grp Number
flief LIKE eban-flief, "Fixed vendor
name1 LIKE lfa1-name1, "Vendor name
badat LIKE eban-badat, "Creation date
erdat LIKE eban-erdat, "Change date
banfn LIKE eban-banfn, "Requisition no.
bnfpo LIKE eban-bnfpo, "Req. item no.
bsart LIKE eban-bsart, "Document type
knttp LIKE eban-knttp, "Acct.assgmt category
txz01 LIKE eban-txz01, "PO item description
menge LIKE eban-menge, "Quantity
preis LIKE eban-preis, "Price
peinh LIKE eban-peinh, "Price unit
value(14) TYPE p DECIMALS 2, "Item Value
END OF i_req_items.
DATA: BEGIN OF i_reqs OCCURS 10,
ernam LIKE eban-ernam, "Created by
persn LIKE usr21-persnumber, "Person number
uname LIKE adrp-name_text, "User name
lifnr LIKE eban-lifnr, "Vendor
name1 LIKE lfa1-name1, "Vendor name
badat LIKE eban-badat, "Creation date
banfn LIKE eban-banfn, "Requisition no.
bnfpo LIKE eban-bnfpo, "Req. item no.
bsart LIKE eban-bsart, "Document type
knttp LIKE eban-knttp, "Acct.assgmt category
txz01 LIKE eban-txz01, "PO item description
eknam like t024-eknam, "Purchase Grp Name
ekgrp like t024-ekgrp, "Purchase Grp Number
value(14) TYPE p DECIMALS 2, "Item Value
END OF i_reqs.
DATA: BEGIN OF i_req_keys OCCURS 0,
ernam LIKE eban-ernam, "Created by
lifnr LIKE eban-lifnr, "Desired vendor
erdat LIKE eban-erdat, "Create or Change date
banfn LIKE eban-banfn, "Requisition no.
bnfpo LIKE eban-bnfpo, "Req. item no.
eknam like t024-eknam, "Purchase Grp Name
ekgrp like t024-ekgrp, "Purchase Grp number
END OF i_req_keys.
DATA: BEGIN OF i_req_keeper OCCURS 0,
ernam LIKE eban-ernam, "Created by
lifnr LIKE eban-lifnr, "Desired vendor
banfn LIKE eban-banfn, "Requisition no
END OF i_req_keeper.
DATA: wa_reqitems LIKE i_req_items.
DATA: BEGIN OF i_export OCCURS 10,
record(150) TYPE c,
END OF i_export.
CONSTANTS
CONSTANTS:
c_doccat LIKE eban-bstyp VALUE 'B',
c_creind LIKE eban-estkz VALUE 'R',
c_delflag LIKE eban-loekz VALUE 'L',
c_write(5) TYPE c VALUE 'WRITE',
c_slash(1) TYPE c VALUE '/',
*start ESPZC U8DK900439
c_delimiter TYPE x VALUE '09',
c_delimiter TYPE c VALUE cl_abap_char_utilities=>horizontal_tab,
*end ESPZC U8DK900439
c_sc(1) TYPE c VALUE ';',
c_x(1) TYPE c VALUE 'X',
c_usd(1) TYPE c VALUE '2',
c_export LIKE authb-filename VALUE '/BAY2/UBEM_SPLIT_REQS'.
WORKING VARIABLES
DATA: w_report_id LIKE syst-repid,
w_sttime LIKE syst-uzeit,
w_rpt_pagno LIKE syst-pagno,
w_rc LIKE sy-subrc,
w_datelow LIKE eban-badat,
w_datehigh LIKE eban-badat,
w_export LIKE c_export,
w_records TYPE i,
w_message(50) TYPE c.
TYPES number TYPE i.
SELECTION SCREEN / PARAMETERS
SELECTION-SCREEN BEGIN OF BLOCK org WITH FRAME TITLE text-001.
PARAMETERS: p_purorg LIKE eban-ekorg OBLIGATORY DEFAULT 'US02'.
SELECT-OPTIONS: s_doctyp FOR eban-bsart,
s_date FOR eban-badat.
PARAMETERS: p_timper(2) TYPE n.
SELECTION-SCREEN: COMMENT 37(37) text-002.
SELECTION-SCREEN END OF BLOCK org.
SELECTION-SCREEN BEGIN OF BLOCK outp WITH FRAME TITLE text-003.
PARAMETERS: p_onlin RADIOBUTTON GROUP outp DEFAULT 'X',
p_servr RADIOBUTTON GROUP outp.
SELECTION-SCREEN END OF BLOCK outp.
AT SELECTION SCREEN
AT SELECTION-SCREEN.
IF p_servr = c_x.
CLEAR w_rc.
PERFORM authority_check_dataset USING w_export
CHANGING w_rc.
IF w_rc <> 0.
MESSAGE e532 WITH text-006 w_export.
ENDIF.
CLEAR w_rc.
PERFORM verify_unix_path_and_file CHANGING w_rc.
IF w_rc <> 0.
MESSAGE e531 WITH w_message.
ENDIF.
ENDIF.
INITIALIZATION EVENT
INITIALIZATION.
PERFORM get_filename.
MOVE syst-uzeit TO w_sttime.
MOVE syst-repid TO w_report_id.
CLEAR: w_rpt_pagno.
START-OF-SELECTION.
PERFORM get_data.
IF p_onlin = c_x.
IF w_records GT 0.
PERFORM print_report_header.
PERFORM write_report.
ELSE.
MESSAGE i531 WITH text-007.
ENDIF.
ELSEIF p_servr = c_x.
PERFORM write_export.
ENDIF.
END-OF-SELECTION.
---- F O R M R O U T I N E S -
*& FORM get_filename
FORM get_filename.
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = c_export
IMPORTING
file_name = w_export
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
ENDFORM. " get_filename
FORM authority_check_dataset
FORM authority_check_dataset USING p_filename
CHANGING p_rc.
CALL FUNCTION 'AUTHORITY_CHECK_DATASET'
EXPORTING
activity = c_write
filename = p_filename
EXCEPTIONS
no_authority = 1
activity_unknown = 2
OTHERS = 3.
p_rc = sy-subrc.
ENDFORM. "authority_check_dataset
FORM verify_unix_path_and_file
FORM verify_unix_path_and_file CHANGING p_rc.
*start ESPZC U8DK900439
OPEN DATASET w_export FOR OUTPUT IN TEXT MODE
MESSAGE w_message.
OPEN DATASET w_export FOR OUTPUT IN TEXT MODE ENCODING DEFAULT
MESSAGE w_message.
*end ESPZC U8DK900439
p_rc = sy-subrc.
ENDFORM. "verify_unix_path_and_file
FORM get_data
FORM get_data.
CLEAR w_datelow.
CLEAR w_datehigh.
w_datelow = s_date-low - p_timper.
w_datehigh = s_date-high + p_timper.
w_datehigh = s_date-high.
SELECT ernam lifnr ebeln ebelp flief badat erdat banfn bnfpo bsart
knttp menge preis peinh txz01
FROM eban
INTO CORRESPONDING FIELDS OF TABLE i_req_items
WHERE bstyp = c_doccat
AND estkz = c_creind
AND knttp <> space
AND bsart IN s_doctyp
AND loekz <> c_delflag
AND ekorg EQ p_purorg
AND ( ( badat BETWEEN w_datelow and w_datehigh ) OR
( erdat BETWEEN w_datelow AND w_datehigh ) ).
AND erdat BETWEEN w_datelow AND w_datehigh.
IF sy-subrc = 0.
LOOP AT i_req_items.
IF i_req_items-lifnr IS INITIAL.
IF NOT i_req_items-flief IS INITIAL.
MOVE i_req_items-flief TO i_req_items-lifnr.
MODIFY i_req_items.
ENDIF.
IF NOT i_req_items-ebeln IS INITIAL.
SELECT lifnr FROM ekko
INTO i_req_items-lifnr
WHERE ebeln = i_req_items-ebeln.
ENDSELECT.
MODIFY i_req_items.
ENDIF.
ENDIF.
IF i_req_items-erdat GT i_req_items-badat.
MOVE i_req_items-erdat TO i_req_items-badat.
MODIFY i_req_items.
ENDIF.
ENDLOOP.
PERFORM weed_out_unique_records.
PERFORM apply_time_period.
SORT i_req_items BY ernam lifnr banfn bnfpo.
LOOP AT i_req_items.
i_req_items-value = ( i_req_items-menge *
( i_req_items-preis / i_req_items-peinh ) ).
MODIFY i_req_items.
ENDLOOP.
Getting vendor name from table LFA1 -
CLEAR i_req_items.
LOOP AT i_req_items.
SELECT SINGLE name1 FROM lfa1
INTO i_req_items-name1
WHERE lifnr = i_req_items-lifnr.
MODIFY i_req_items.
ENDLOOP.
LOOP AT i_req_items.
MOVE-CORRESPONDING i_req_items TO i_reqs.
Getting user name from view v_username -
SELECT SINGLE name_text
FROM v_username INTO i_reqs-uname
WHERE bname = i_reqs-ernam.
APPEND i_reqs.
ENDLOOP.
ENDIF.
DESCRIBE TABLE i_reqs LINES w_records.
ENDFORM. "Get_data
FORM print_report_header
FORM print_report_header.
ADD 1 TO w_rpt_pagno.
CALL FUNCTION '/BAY2/UBEXBH_BAYER_HEADR_FUN'
EXPORTING
f_jobname = text-020
f_business_group = text-021
f_report_title = text-022
f_repid = w_report_id
f_sysid = syst-sysid
f_linsz = syst-linsz
f_pagno = w_rpt_pagno
f_mandt = syst-mandt
f_datum = syst-datum
f_uzeit = w_sttime.
FORMAT COLOR COL_HEADING.
WRITE: /1 text-010, "Created by CWID & user name
29 text-011, "Vendor #
38 text-012, "Vendor Name
69 text-013, "Req Number
79 text-014, "/Item
87 text-015, "Created On
98 text-017, "A (AcctAssgmtCat)
100(14) text-019 RIGHT-JUSTIFIED, "Item Value
116(30) text-018, "Item Description
148 text-030, "Pur.Grp Name
170 text-031. "Pur.Grp Number
FORMAT COLOR OFF.
ULINE.
ENDFORM. "print_report_header
*& Form WRITE_REPORT
FORM write_report.
LOOP AT i_reqs.
WRITE: /1 i_reqs-ernam,
9(18) i_reqs-uname,
29 i_reqs-lifnr,
38(30) i_reqs-name1,
69 i_reqs-banfn,
79 c_slash,
80 i_reqs-bnfpo,
87 i_reqs-badat,
98 i_reqs-knttp,
100(14) i_reqs-value CURRENCY c_usd,
116(30) i_reqs-txz01,
145 i_reqs-eknam,
160 i_reqs-ekgrp.
ENDLOOP.
ENDFORM. "write_report
*& Form WRITE_EXPORT
FORM write_export.
DATA: l_value(14) TYPE c,
l_bsart(100) TYPE c,
l_uname(7) TYPE c,
l_records(5) TYPE c,
l_header(150) TYPE c,
l_params(150) TYPE c,
i_char TYPE i.
LOOP AT i_reqs.
CLEAR l_value.
CLEAR l_uname.
l_value = i_reqs-value.
l_uname = sy-uname.
CONCATENATE: i_reqs-uname
i_reqs-ernam
i_reqs-lifnr
i_reqs-name1
i_reqs-banfn
i_reqs-bnfpo
i_reqs-badat
i_reqs-knttp
l_value
i_reqs-txz01 INTO i_export
SEPARATED BY c_delimiter.
APPEND i_export.
ENDLOOP.
CONCATENATE: text-008 "Created By Name
text-009 "CWID
text-011 "Vendor No
text-012 "Vendor Name
text-013 "Req Number
text-023 "Item
text-015 "Created On
text-017 "A
text-019 "Item Value
text-018 "Item Description
text-030 "Purchase Grp name
text-031 "Purchase Grp number
INTO l_header SEPARATED BY c_delimiter.
INSERT l_header INTO i_export INDEX 1.
IF sy-batch IS INITIAL.
MOVE sy-uname TO l_uname.
ELSE.
MOVE text-024 TO l_uname.
ENDIF.
PERFORM collect_bsart CHANGING l_bsart
i_char.
l_records = w_records.
CONCATENATE: sy-sysid
p_purorg
l_bsart(i_char)
s_date-low
s_date-high
p_timper
l_uname
sy-datum
l_records INTO l_params
SEPARATED BY c_delimiter.
INSERT l_params INTO i_export INDEX 1.
LOOP AT i_export.
CONDENSE i_export NO-GAPS.
TRANSFER i_export TO w_export.
ENDLOOP.
CLOSE DATASET w_export.
MESSAGE s533 WITH text-028 w_export text-029.
ENDFORM. "write_export
*& FORM collect_bsart
FORM collect_bsart CHANGING p_bsart
p_char.
CLEAR p_bsart.
LOOP AT s_doctyp.
IF sy-tabix = 1.
p_bsart = s_doctyp-low.
ELSE.
CONCATENATE: p_bsart c_sc s_doctyp-low INTO p_bsart.
ENDIF.
ENDLOOP.
CONDENSE p_bsart NO-GAPS.
p_char = strlen( p_bsart ).
ENDFORM. "collect_bsart
*& Form WEED_OUT_UNIQUE_RECORDS
FORM weed_out_unique_records.
DATA: i_l_req_items LIKE i_req_items OCCURS 0 WITH HEADER LINE.
DATA: i_l_req_final_items LIKE i_req_items OCCURS 0 WITH HEADER LINE.
DATA: l_count TYPE i,
l_sy_tabix LIKE sy-tabix,
l_banfn LIKE eban-banfn.
REFRESH i_l_req_items.
REFRESH i_l_req_final_items.
CLEAR l_banfn.
i_l_req_items[] = i_req_items[].
i_l_req_final_items[] = i_req_items[].
SORT i_req_items BY ernam lifnr.
SORT i_l_req_items BY ernam lifnr.
SORT i_l_req_final_items BY ernam lifnr.
LOOP AT i_l_req_items.
l_banfn = i_l_req_items-banfn.
CLEAR l_count.
LOOP AT i_req_items
WHERE ernam = i_l_req_items-ernam
AND lifnr = i_l_req_items-lifnr.
IF i_req_items-banfn <> l_banfn.
ADD +1 TO l_count.
ENDIF.
ENDLOOP.
IF NOT ( l_count > 0 ).
LOOP AT i_l_req_final_items
WHERE ernam = i_l_req_items-ernam
AND lifnr = i_l_req_items-lifnr.
DELETE i_l_req_final_items.
ENDLOOP.
ENDIF.
ENDLOOP.
REFRESH i_req_items.
i_req_items[] = i_l_req_final_items[].
ENDFORM. " WEED_OUT_UNIQUE_RECORDS
*& Form APPLY_TIME_PERIOD
FORM apply_time_period.
DATA: l_i_req_keys LIKE i_req_keys.
DATA: l_days_diff TYPE p,
l_no_of_key_recs TYPE i,
l_next_item LIKE sy-tabix,
l_finished_with_keys TYPE c VALUE 'N',
l_add_line TYPE c VALUE 'N',
l_count TYPE i,
l_req_ernam LIKE eban-ernam,
l_req_lifnr LIKE lfa1-lifnr,
l_req_banfn LIKE eban-banfn,
l_save_tabix like sy-tabix.
REFRESH: i_req_keys, i_req_keeper.
LOOP AT i_req_items.
MOVE-CORRESPONDING i_req_items TO
i_req_keys.
IF i_req_items-erdat IS INITIAL.
i_req_keys-erdat = i_req_items-badat.
ENDIF.
APPEND i_req_keys.
ENDLOOP.
SORT i_req_keys BY ernam lifnr erdat.
CLEAR l_no_of_key_recs.
DESCRIBE TABLE i_req_keys LINES l_no_of_key_recs.
LOOP AT i_req_keys.
IF l_add_line = 'Y'.
MOVE-CORRESPONDING i_req_keys
TO i_req_keeper.
APPEND i_req_keeper.
l_add_line = 'N'.
ENDIF.
IF l_finished_with_keys = 'Y'.
EXIT.
ENDIF.
CLEAR l_next_item.
l_save_tabix = sy-tabix.
COMPUTE l_next_item = sy-tabix + 1.
IF l_next_item = l_no_of_key_recs.
l_finished_with_keys = 'Y'.
ENDIF.
clear: l_i_req_keys.
READ TABLE i_req_keys INDEX l_next_item
INTO l_i_req_keys.
sy-tabix = l_save_tabix.
CLEAR l_days_diff.
l_days_diff = l_i_req_keys-erdat -
i_req_keys-erdat.
IF l_i_req_keys-ernam =
i_req_keys-ernam AND
l_i_req_keys-lifnr =
i_req_keys-lifnr AND
l_i_req_keys-banfn <>
i_req_keys-banfn AND
l_days_diff <= p_timper.
MOVE-CORRESPONDING i_req_keys
TO i_req_keeper.
APPEND i_req_keeper.
l_add_line = 'Y'.
ENDIF.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM i_req_keeper
COMPARING ALL FIELDS.
SORT i_req_keeper BY ernam lifnr banfn.
LOOP AT i_req_items.
CLEAR l_count.
CLEAR: l_req_ernam,
l_req_lifnr,
l_req_banfn.
l_req_ernam = i_req_items-ernam.
l_req_lifnr = i_req_items-lifnr.
l_req_banfn = i_req_items-banfn.
LOOP AT i_req_keeper
WHERE ernam = i_req_items-ernam
AND lifnr = i_req_items-lifnr
AND banfn = i_req_items-banfn.
ADD +1 TO l_count.
ENDLOOP.
IF NOT ( l_count > 0 ).
LOOP AT i_req_items
WHERE ernam = l_req_ernam
AND lifnr = l_req_lifnr
AND banfn = l_req_banfn.
DELETE i_req_items.
ENDLOOP.
ENDIF.
ENDLOOP.
ENDFORM. " APPLY_TIME_PERIODRajesh,
Put a breakpoint and try to debug the report step by step.
You will findout the reason very easily.
Whenever you have a select and are trying to append into an internal table, keep checking your internal table if it is been populated with the correct records.
This way, you will findout the cause and can correct is accordingly.
Thanks,
Suresh Ganti
Maybe you are looking for
-
System wont boot, no signal to monitor
Hi all: 1st my system specs = mo bo = 875p neo-FIS2R v1 cpu = P4 3Ghz 800mhz fsb ram = 2gb pc3200 400mhz 4x512mb ddr dimms graphics card = MSI geforce fx 5900 128mb sound = hercules digifire 7.1 optical drives = 1 LG dvd rom drive & 1 LG dual layer d
-
Hey folks, I've got some hand crafted, valid, WS-I compliant WSDL + imported XSD that I've been using for awhile now to generate an Apache Axis 1.2 beta Document Literal Web Service implementation. I'm now trying to use the same WSDL to generate a BE
-
Hi, I am stil exploring my new MBP and i found out that to play avi files in front row i have to download perian, although i can still play .avi movies in vlc. zso i wanted to know if there is any difference in watching in front row and vlc in terms
-
Show incoming redirected calls as they are redirected on 8100?
Hi Everyone, Let me describe my problem: I have a client with a BB 8100. He also had a desktop phone with a green number on it. So it have to work like if someone is calling this green number, then the desktop phone redirects the calls to my client's
-
HT4623 How do I restore a ipad2
How do u restore ipad2