I need help on sum
Post Author: genesis
CA Forum: Formula
Hello I need help on sum
this is my example
W/O Status Datew1681 008 05/01/2007 7:00 amw1681 009 05/01/2007 8:10 amw1681 010 05/01/2007 9:00 am
I need to sum how long to to move from step 008, 009 and 010
W/O Status Datew1681 008 05/01/2007 7:00 amw1681 009 05/01/2007 8:10 am 1:10 Hourw1681 010 05/01/2007 9:00 am 0:50 minutes
The table & field that hold date value is WO_TASK_STATUS.ENTRY_DATE
Post Author: bryanflora
CA Forum: Formula
Insure you already order the data in W/O then Status.Write a formula like this:{WO_TASK_STATUS.ENTRY_DATE} - Previous({WO_TASK_STATUS.ENTRY_DATE})Because it get the field value from the previous row, so in right order is important.
Similar Messages
-
Need help with sum from previous years
Hi All,
In a report i have 4 fields. The first field shows the YTD invoice totals for the current FY 2010 (which i accomplished). The other 3 fields are :
2nd field Sum of the value of invoices for the FY 1YEAR prior to the current year
3rd field Sum of the value of invoices for the FY 2YEAR's prior to the current year.
4th field Sum of the value of invoices for the FY 3YEAR's prior to the current year.
How can i get the desired results for the second,third and the fourth fields, please need help or advice.
ThanksHi
If you have the values for several years in the same report you should be able to do what you want using the analytic LEAD and LAG.
LAG will retrieve values from previous rows whereas LEAD will retrieve values from following rows.
The basic syntax is the same and look like this:
LAG(value, offset) OVER ({optional_partition_clause} ORDER BY mandatory_order_clause)
The ORDER BY clause is mandatory and cannot be omitted. However, this ORDER BY has nothing to do with the sort order you manually create in the worksheet. Generally, most people will set their sort order the same as the ORDER BY in the calculation.
Here's an example that gets year to date from 2 financial years ago:
LAG(YTD,2) OVER (ORDER BY FY)
You have to understand that Discoverer will pull values from previous rows not from previous cells as displayed on the report, although if the cells may happen to be rows too then it will appear as though it is pulling previous cells. I personally am very experienced with analytuc functions and can make manipulate data within Discoverer just about any way that I want. Generally, if I can see data on the screen even when they are in different cells or rows I can create functions to manipulate it. This capability only comes about as a result of experience and I would strongly advise you to practice with the analytics and see if you can at least master some of them. You'll find your Discoverer capabilities will improve dramatically and you will become a great asset at work.
When working with a new report I generally duplicate the report as a table so that I can see the values. Then if I need to sort the items in order to line up the values I want to work with I do so. Having worked out what sort order I need I can then see what offset I use then I create the analytic and use it in the main worksheet.
Hope this helps
Best wishes
Michael -
Actuate to BIP Conversion Need Help with Sum and Distinct
Hi,
I am in the process of converting an Actuate report to BI Publisher .rtf format. Within the actuate report I have encountered the following code in one of the fields:
Sum([ssCalc])Distinct([ssProfessional_Id])
From what I understand this Actuate code is grouping by distinct ssProfessional_Id then taking the sum of the ssCalc field.
In my .rtf template I have the following:
<?for-each-group:ssSRA;./ssCIN?>
<?ssCalc?>
<?end for-each-group?>
I need to convert the Actuate code into the place where I currently have <?ssCalc?> in my template but I have no idea how I can translate translate this. Does anyone have any suggestions?????
Thanks,
FredFred
Can you post the XML, easier to help then
Tim -
Hi,
There is one program need to calculat the SUB-TOTAL AMOUNT FOR SAME DOCUMENT NUMBER.
Means: Need to sumup betrg for the same belnr.
QUESTION:
How can I write the sorce cord In AT END OF...ENDAT.
TO SUMUP THE AMOUNT FOR SAME DOCUMENT NUMBER.
Please help!!
Thanks.
Here is the sourc code.
DATA: BEGIN OF t OCCURS 0,
bukrs LIKE knb1-bukrs,
*<<<<< CR01
zuonr Like bsid-zuonr, "sort key "CR01
*>>>>> CR01
belnr LIKE bsid-belnr,
kunnr LIKE kna1-kunnr,
bldat LIKE bsid-bldat,
budat LIKE bsid-budat,
netdt LIKE bsega-netdt,
waers LIKE bsid-waers,
wrbtr LIKE bsid-wrbtr,
shkzg LIKE bsid-shkzg,
xblnr LIKE bsid-xblnr, "WD041005a
sgtxt LIKE bsid-sgtxt,
dmbtr LIKE bsid-dmbtr,
END OF t.
Description of Interface-record RECON
DATA: BEGIN OF s,
belnr(10), " document number
*<<<< CR01 STRAT ADD ZUONR
zuonr(10), "sort key " CR01
*>>>> CR01 END ADD ZUONR
filler1(1),
KUNNR(5), " customer no."WD290705a
kunnr LIKE kna1-kunnr, " customer no."WD290705a
filler2(1),
bldat(10), " date
filler3(1),
budat(10),
filler4(1),
netdt(10), " due date for payment
filler5(1),
betrg(14), " amount
filler6(1),
waers(3), " currency
filler7(1), " document field - blank
compcode(4), " company-code "fw070905
filler8(1), " comment - blank
sgtxt(50), " Text "INS MG020207
filler9(1),
kmmnt(30),
filler10(1),
vbeln(12) ,
filler11(1),
xblnr(16), "WD041005a hier Referenznr rein
filler12(1),
lifn2(11),
filler13(1), " remark - blank
dmbtr(14),
filler14(1),
twaer(3),
END OF s.
DATA: BEGIN OF outtab OCCURS 1000,
s LIKE s,
END OF outtab.
*<<<<< INS MG020207
TYPES: BEGIN OF ty_outalv,
belnr(10), " document number
*<<<< CR01 START ADD ZUONR
zuonr, " sort key " CR01
*>>>>CR01 END ADD AUONR
kunnr LIKE kna1-kunnr, " customer no."WD290705a
bldat(10), " date
budat(10), " posting date
netdt(10), " due date for payment
betrg(14), " amount
waers(3), " currency
compcode(4), " company-code "fw070905
sgtxt(30), " comment
kmmnt(30), " comment
vbeln(12), " delivery number
xblnr(16), "WD041005a hier Referenznr rein
lifn2(11), " customer number
dmbtr(14),
twaer(3), " currency company code
END OF ty_outalv.
DATA: gt_outalv TYPE STANDARD TABLE OF ty_outalv.
DATA: gs_outalv TYPE ty_outalv.
*>>>>> INS MG020207
DATA: l_date TYPE sy-datum.
DATA: g_date TYPE sy-datum.
DATA: g_budat TYPE bsik-budat.
*<<<< CR01 START ADD DATA STATEMENT
DATA: wk_belnr LIKE bsid-zuonr,
wk_x_belnr LIKE bsid-zuonr,
ZUONR LIKE BSID-ZUONR,
WRBTR LIKE BSID-WRBTR,
WK_ZUONR LIKE BSID-ZUONR,
WK_WRBTR LIKE BSID-WRBTR.
*>>>> CR01 END ADD DATA STATEMENT
DATA: l_it_bsik TYPE STANDARD TABLE OF bsik. "INS MG050706
DATA: l_wa_bsik TYPE bsik. "INS MG050706
TYPE-POOLS: slis. "INS MG020207
DATA: "INS MG020207
gt_fieldcat TYPE slis_t_fieldcat_alv, "INS MG020207
gs_layout TYPE slis_layout_alv, "INS MG020207
gs_fieldcat TYPE slis_fieldcat_alv. "INS MG020207
END-OF-SELECTION.
SORT t.
LOOP AT t.
AT NEW bukrs.
CLEAR anz_dl.
CLEAR htext-anzahl.
CLEAR htext-datei.
htext-text1 = ' records writen in file '.
CLEAR p_pfad.
CONCATENATE
i_pfad
'CU_CC'
t-bukrs
sy-datum+6(2)
sy-datum+4(2)
sy-datum(4)
sy-uzeit
'.txt'
INTO p_pfad.
CLEAR outtab.
REFRESH outtab.
REFRESH: gt_outalv. "INS MG020207
ENDAT.
IF t-shkzg = 'H'.
h_betrg = t-wrbtr * -1.
ELSE.
h_betrg = t-wrbtr.
h_dmbtr = t-dmbtr.
ENDIF.
s-filler1 = s-filler2 = s-filler3 = s-filler4 = s-filler5 = ';'.
s-filler6 = s-filler7 = s-filler8 = ';'.
s-filler9 = s-filler10 = s-filler11 = s-filler12 = s-filler13 = ';'.
s-filler14 = ';'.
s-belnr = t-belnr.
IF t-xblnr NE space. "WD041005a
s-xblnr = t-xblnr. "WD041005a
ELSE. "WD041005a
s-xblnr = t-belnr. "WD041005a
ENDIF. "WD041005a
WHILE s-xblnr(1) EQ '0'. "INS MG130606
SHIFT s-xblnr LEFT. "INS MG130606
ENDWHILE. "INS MG130606
WRITE t-kunnr TO s-kunnr NO-ZERO.
s-lifn2 = s-kunnr.
shift s-lifn2 RIGHT.
s-lifn2(1) = 'R'.
S-KUNNR = T-KUNNR+5(5).
s-bldat+2(1) = '/'.
s-bldat+5(1) = '/'.
s-bldat0(2) = t-bldat4(2).
s-bldat3(2) = t-bldat6(2).
s-bldat6(4) = t-bldat0(4).
s-budat+2(1) = '/'.
s-budat+5(1) = '/'.
s-budat0(2) = t-budat4(2).
s-budat3(2) = t-budat6(2).
s-budat6(4) = t-budat0(4).
s-netdt+2(1) = '/'.
s-netdt+5(1) = '/'.
s-netdt0(2) = t-netdt4(2).
s-netdt3(2) = t-netdt6(2).
s-netdt6(4) = t-netdt0(4).
s-waers = t-waers.
s-dmbtr = t-dmbtr.
s-sgtxt = t-sgtxt.
CLEAR s-twaer.
SELECT SINGLE waers INTO s-twaer
FROM t001
WHERE bukrs = t-bukrs.
IF h_betrg < 0.
hs_betrg+0(1) = '-'.
ELSE.
hs_betrg+0(1) = ' '.
ENDIF.
WRITE h_betrg CURRENCY t-waers TO hs_betrg+1 NO-GROUPING
NO-SIGN
LEFT-JUSTIFIED.
REPLACE ',' WITH '.' INTO hs_betrg.
WRITE hs_betrg TO s-betrg.
IF h_dmbtr < 0.
hs_betrg+0(1) = '-'.
ELSE.
hs_betrg+0(1) = ' '.
ENDIF.
WRITE h_dmbtr CURRENCY t-waers TO hs_betrg+1 NO-GROUPING
NO-SIGN
LEFT-JUSTIFIED.
REPLACE ',' WITH '.' INTO hs_betrg.
WRITE hs_betrg TO s-dmbtr.
s-compcode = t-bukrs. "fw070905
IF p_downl = 'X'.
MOVE s TO outtab-s.
APPEND outtab.
ADD 1 TO anz_dl.
ENDIF.
gs_outalv-belnr = s-belnr. "INS MG020207
*<<<< CR01 START ADD as_outalv-zuonr
gs_outalv-zuonr = s-zuonr. "CR01
*>>>> CR01 EDD ADD as_outalv-zuonr
gs_outalv-kunnr = s-kunnr. "INS MG020207
gs_outalv-bldat = s-bldat. "INS MG020207
gs_outalv-netdt = s-netdt. "INS MG020207
gs_outalv-betrg = s-betrg. "INS MG020207
gs_outalv-waers = s-waers. "INS MG020207
gs_outalv-compcode = s-compcode. "INS MG020207
gs_outalv-budat = s-budat. "INS MG020207
gs_outalv-sgtxt = s-sgtxt.
gs_outalv-kmmnt = s-kmmnt.
gs_outalv-vbeln = s-vbeln.
gs_outalv-xblnr = s-xblnr.
gs_outalv-lifn2 = s-lifn2.
gs_outalv-dmbtr = s-dmbtr.
gs_outalv-twaer = s-twaer.
APPEND gs_outalv TO gt_outalv. "INS MG020207
AT END OF bukrs.
WRITE anz_dl TO htext-anzahl.
WRITE p_pfad TO htext-datei.
CONDENSE htext.
IF p_downl = 'X'.
SKIP 2.
WRITE: / htext.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
filename = p_pfad
filetype = 'ASC'
TABLES
data_tab = outtab
EXCEPTIONS
file_write_error = 1
no_batch = 2
gui_refuse_filetransfer = 3
invalid_type = 4
no_authority = 5
unknown_error = 6
header_not_allowed = 7
separator_not_allowed = 8
filesize_not_allowed = 9
header_too_long = 10
dp_error_create = 11
dp_error_send = 12
dp_error_write = 13
unknown_dp_error = 14
access_denied = 15
dp_out_of_memory = 16
disk_full = 17
dp_timeout = 18
file_not_found = 19
dataprovider_exception = 20
control_flush_error = 21
OTHERS = 22.
IF sy-subrc <> 0.
write: / 'Error creating File:', P_Pfad, sy-subrc.
MESSAGE e405 WITH text-002 p_pfad.
ENDIF.
ENDIF.
*<<<<< INS MG020207
IF p_alvd EQ 'X'.
PERFORM build_layout_data.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
i_structure_name = 'GT_OUTALV'
is_layout = gs_layout
it_fieldcat = gt_fieldcat[]
i_callback_top_of_page = 'TOP-OF-PAGE'
TABLES
t_outtab = gt_outalv.
ENDIF.
*>>>>> INS MG020207
ENDAT.
ENDLOOP.HI
Have alook at below program
*& Report ZINTERNALTABLE
REPORT zinternaltable.
TYPES:BEGIN OF itab,
num TYPE i,
name(10) TYPE c,
amt type i,
END OF itab.
DATA : wa_itab TYPE itab,
it_itab TYPE STANDARD TABLE OF itab.
DATA : v_lines TYPE i.
wa_itab-num = 1.
wa_itab-name = 'nag'.
wa_itab-amt = 1000.
append wa_itab TO it_itab.
wa_itab-num = 1.
wa_itab-name = 'nag'.
wa_itab-amt = 2000.
append wa_itab TO it_itab.
wa_itab-num = 1.
wa_itab-name = 'nag'.
wa_itab-amt = 1500.
append wa_itab TO it_itab.
wa_itab-num = 2.
wa_itab-name = 'sri'.
wa_itab-amt = 500.
append wa_itab tO it_itab.
wa_itab-num = 2.
wa_itab-name = 'sri'.
wa_itab-amt = 600.
append wa_itab TO it_itab.
wa_itab-num = 2.
wa_itab-name = 'sri'.
wa_itab-amt = 700.
append wa_itab TO it_itab.
wa_itab-num = 3.
wa_itab-name = 'ganesh'.
wa_itab-amt = 1200.
append wa_itab TO it_itab.
wa_itab-num = 3.
wa_itab-name = 'ganesh'.
wa_itab-amt = 1300.
append wa_itab TO it_itab.
wa_itab-num = 3.
wa_itab-name = 'ganesh'.
wa_itab-amt = 1400.
append wa_itab TO it_itab.
wa_itab-num = 4.
wa_itab-name = 'suresh'.
wa_itab-amt = 900.
append wa_itab TO it_itab.
wa_itab-num = 4.
wa_itab-name = 'suresh'.
wa_itab-amt = 300.
append wa_itab TO it_itab.
sort it_itab.
LOOP AT it_itab INTO wa_itab.
at first.
write :/ 'details of sales order:'.
uline.
endat.
at new num.
write :/ 'serial num:', wa_itab-num.
uline.
endat.
WRITE :/ wa_itab-num , wa_itab-name , wa_itab-amt.
at end of num.
uline.
sum.
write :/ 'total amount:',wa_itab-amt.
uline.
endat.
at last.
sum.
uline.
write:/ 'grand total:',wa_itab-amt.
endat.
ENDLOOP.
describe table it_itab lines v_lines.
WRITE:/'no of records :', v_lines.
Regards
Nagesh.Paruchuri -
Need help with summing column when using if-then-else
Using logic
<?xdofx:if INVOICE_BILL_AMT_IN_INV_CURR is null then INVPROC_BILL_AMOUNT else INVOICE_BILL_AMT_IN_INV_CURR end if?> for column field.
Having trouble summing the column using the logic above.
Any suggestions would be very much appreciated.
Thanks,
NancyThanks Tim,
That worked. Got rid of my error. However, if the field is null (=''), I get a total.
11.05 + 1429.70 = 1440.75
If the not null (!='') I am not getting a total.
103.74 + 173.13 =
BTW, recently took XML class. Leta Davis highly recommended your blog and I have gotten a lot of great tips from it.
Thanks,
Nancy -
Need to calculate sum in an e-text file for positive pay--PLEASE HELP!!!!
Hi All,
Need some help formatting e-text output in positive pay. In the trailer record I need to display the sum of all checks run in that payment process. However if the check is "VOID", I should not add that check amount to the summary total in the trailer record. So, I need to conditionally sum the check amounts in the payment register.
Here is my XML:
<?xml version="1.0" encoding="UTF-8" ?>
- <PositivePayDataExtract>
- <OutboundPayment>
- <PaymentSourceInfo>
<ApplicationInternalID>200</ApplicationInternalID>
<ApplicationName>SQLAP</ApplicationName>
<PaymentServiceRequestID>50175</PaymentServiceRequestID>
- <FunctionalCategory>
<Code>PAYABLES_DISB</Code>
<Meaning>Payables Disbursements</Meaning>
</FunctionalCategory>
- <PayerOrganization>
<OrganizationInternalID>484</OrganizationInternalID>
- <OrganizationType>
<Code>OPERATING_UNIT</Code>
<Meaning>Operating Unit</Meaning>
</OrganizationType>
<OrganizationName>US_OU</OrganizationName>
</PayerOrganization>
<EmployeePaymentFlag>N</EmployeePaymentFlag>
</PaymentSourceInfo>
- <PaymentNumber>
<DocCategory />
<SequenceName />
<SequenceValue />
<PaymentReferenceNumber>64812</PaymentReferenceNumber>
<LogicalGroupReference />
<CheckNumber>180159</CheckNumber>
</PaymentNumber>
<PaymentDate>2012-07-10</PaymentDate>
<PaymentDueDate />
<MaturityDate />
- *<PaymentStatus>*
*<Code>VOID</Code>*
<Meaning>Void</Meaning>
</PaymentStatus>
- <Payee>
<PartyInternalID>848060</PartyInternalID>
<PartyNumber>46702</PartyNumber>
<Name>ABC INT</Name>
<TaxRegistrationNumber />
<LegalEntityRegistrationNumber>9999</LegalEntityRegistrationNumber>
<AlternateName />
<SupplierNumber>12975</SupplierNumber>
- <Address>
<AddressInternalID>32488</AddressInternalID>
<AddressLine1>48078ABC ST</AddressLine1>
<AddressLine2 />
<AddressLine3 />
<AddressLine4 />
<City>ABC</City>
<County />
<State>AB</State>
<Country>US</Country>
<ISO3DigitCountry>USA</ISO3DigitCountry>
<CountryName>UB</CountryName>
<PostalCode>12345-7890</PostalCode>
<AddressName>ABC</AddressName>
<Addressee />
<AlternateAddressName />
<PreFormattedConcatenatedAddress>ABC</PreFormattedConcatenatedAddress>
<PreFormattedMailingAddress>ABCD</PreFormattedMailingAddress>
</Address>
- <ContactInfo>
- <ContactLocators>
<PhoneNumber />
<FaxNumber />
<EmailAddress />
<Website />
</ContactLocators>
</ContactInfo>
<SupplierSiteCode>ABC</SupplierSiteCode>
</Payee>
- <TradingPartner>
<PartyInternalID>848060</PartyInternalID>
<PartyNumber>46702</PartyNumber>
<Name>ABC INT</Name>
<TaxRegistrationNumber />
<LegalEntityRegistrationNumber>12345</LegalEntityRegistrationNumber>
<AlternateName />
<SupplierNumber>12975</SupplierNumber>
- <ContactInfo>
- <ContactLocators>
<PhoneNumber />
<FaxNumber />
<EmailAddress />
<Website />
</ContactLocators>
</ContactInfo>
<AdditionalInformation />
</TradingPartner>
<PayeeBankAccount />
- <Payer>
<PartyInternalID>788764</PartyInternalID>
<PartyNumber>39224</PartyNumber>
<Name>UB_LE</Name>
- <PartyType>
<Code />
<Meaning />
</PartyType>
<TaxRegistrationNumber />
<LegalEntityRegistrationNumber>12345</LegalEntityRegistrationNumber>
<LegalEntityInternalID>40287</LegalEntityInternalID>
<LegalEntityName>UB_LE</LegalEntityName>
- <Address>
<AddressInternalID>24652</AddressInternalID>
<AddressLine1>ABC STREET</AddressLine1>
<AddressLine2 />
<AddressLine3 />
<City>TREY</City>
<County>Hari</County>
<State>TX</State>
<Country>US</Country>
<ISO3DigitCountry>USA</ISO3DigitCountry>
<CountryName>United States</CountryName>
<PostalCode>12345</PostalCode>
<PreFormattedConcatenatedAddress>ABC STREET, TREY, TX 12345</PreFormattedConcatenatedAddress>
<PreFormattedMailingAddress>ABC STREET, TREY, TX 12345</PreFormattedMailingAddress>
<AddressName>ABCD Services (U.S.) Inc.</AddressName>
</Address>
- <ContactInfo>
- <ContactLocators>
<PhoneNumber />
<FaxNumber />
<EmailAddress />
<Website />
</ContactLocators>
</ContactInfo>
</Payer>
- <BankAccount>
<BankAccountInternalID>64034</BankAccountInternalID>
<BankName>XXX BANK</BankName>
<AlternateBankName />
<BankNumber />
<BranchInternalID>1236444</BranchInternalID>
<BranchName>24</BranchName>
<AlternateBranchName />
<BranchNumber>12345</BranchNumber>
<BankAccountName>43</BankAccountName>
<AlternateBankAccountName>INTERNAL</AlternateBankAccountName>
<BankAccountNumber>123</BankAccountNumber>
<MaskedBankAccountNumber>123</MaskedBankAccountNumber>
<UserEnteredBankAccountNumber>123</UserEnteredBankAccountNumber>
<BankAccountSuffix />
<SwiftCode>ABC</SwiftCode>
<IBANNumber />
<CheckDigits />
- <BankAccountType>
<Code />
<Meaning />
</BankAccountType>
- <BankAccountCurrency>
<Code>USD</Code>
</BankAccountCurrency>
- <BankAddress>
<AddressInternalID>56057</AddressInternalID>
<AddressLine1>111 ABC ST</AddressLine1>
<AddressLine2 />
<AddressLine3 />
<AddressLine4 />
<City>SanJo</City>
<County />
<State>IN</State>
<Province />
<Country>US</Country>
<ISO3DigitCountry>USA</ISO3DigitCountry>
<CountryName>United States</CountryName>
<PostalCode>12345</PostalCode>
<PreFormattedConcatenatedAddress>ABC STREET</PreFormattedConcatenatedAddress>
<PreFormattedMailingAddress>ABC STREET</PreFormattedMailingAddress>
</BankAddress>
- <DescriptiveFlexField>
<AttributeCategory>Yes</AttributeCategory>
<Attribute1 />
<Attribute2>108</Attribute2>
<Attribute3 />
<Attribute4 />
<Attribute5 />
<Attribute6 />
<Attribute7 />
<Attribute8 />
<Attribute9 />
<Attribute10 />
<Attribute11 />
<Attribute12 />
<Attribute13 />
<Attribute14 />
<Attribute15 />
</DescriptiveFlexField>
- <FederalBankAccountInfo>
<FederalRFCIdentifier />
<FederalAgencyLocationCode />
<FederalAbbreviatedAgencyCode />
<FederalEmployerIdentificationNumber />
</FederalBankAccountInfo>
- <EFTUserNumber>
<AccountLevelEFTNumber />
<BranchLevelEFTNumber />
</EFTUserNumber>
</BankAccount>
- <Beneficiary>
<Name>ABC INT</Name>
</Beneficiary>
- <PaymentAmount>
*<Value>2612.39</Value>*
- <Currency>
<Code>USD</Code>
<Name>US Dollar</Name>
</Currency>
</PaymentAmount>
<PaymentAmountText>Two Thousand Six Hundred Twelve Dollars And Thirty-Nine Cents*******************************************************</PaymentAmountText>
- <PaymentMethod>
<PaymentMethodInternalID>CHECK</PaymentMethodInternalID>
<PaymentMethodName>Check</PaymentMethodName>
<PaymentMethodFormatValue>CHECK</PaymentMethodFormatValue>
</PaymentMethod>
<PayAlongFlag>N</PayAlongFlag>
- <SettlementPriority>
<Code />
<Meaning />
</SettlementPriority>
- <AmountWithheld>
<Value />
- <Currency>
<Code>USD</Code>
</Currency>
</AmountWithheld>
- <DiscountTaken>
- <Amount>
<Value>0</Value>
- <Currency>
<Code>USD</Code>
</Currency>
</Amount>
</DiscountTaken>
- <BankCharges>
- <BankChargeBearer>
<Code />
<Meaning />
</BankChargeBearer>
- <Amount>
<Value>0</Value>
- <Currency>
<Code>USD</Code>
</Currency>
</Amount>
</BankCharges>
- <DeliveryChannel>
<Code />
<Meaning />
<FormatValue />
</DeliveryChannel>
- <PaymentReason>
<Code />
<Meaning />
<FormatValue />
</PaymentReason>
<PaymentReasonComments />
<RemittanceMessage />
<RemittanceMessage />
<RemittanceMessage />
- <BankInstruction>
<BankInstructionCode />
<Meaning />
<FormatValue />
</BankInstruction>
- <BankInstruction>
<BankInstructionCode />
<Meaning />
<FormatValue />
</BankInstruction>
<BankInstructionDetails />
<PaymentTextMessage />
<PaymentTextMessage />
<PaymentTextMessage />
<PaymentDetails />
- <RegulatoryReporting>
<DeclarationFlag>N</DeclarationFlag>
- <Amount>
<Value>0</Value>
- <Currency>
<Code />
</Currency>
</Amount>
</RegulatoryReporting>
- <FederalPaymentInfo>
<FederalAllotmentCode />
<FederalOffsetEligibilityFlag />
<FederalAccountingSymbol />
</FederalPaymentInfo>
<DocumentPayableCount>1</DocumentPayableCount>
- <DocumentPayable>
- <DocumentNumber>
<DocumentInternalIDSegment1>21202</DocumentInternalIDSegment1>
<DocumentInternalIDSegment2>174838</DocumentInternalIDSegment2>
<DocumentInternalIDSegment3>1</DocumentInternalIDSegment3>
<DocumentInternalIDSegment4 />
<DocumentInternalIDSegment5 />
<ApplicationInternalID>200</ApplicationInternalID>
<ApplicationDocumentSubType>PAYABLES_DOC</ApplicationDocumentSubType>
<ApplicationUniqueInternalID>21202</ApplicationUniqueInternalID>
<ReferenceNumber>183464</ReferenceNumber>
- <UniqueRemittanceIdentifier>
<Number />
<CheckDigit />
</UniqueRemittanceIdentifier>
<DocCategory>STD INV</DocCategory>
<SequenceName>USA_Payables_Purchases</SequenceName>
<SequenceValue>24389</SequenceValue>
</DocumentNumber>
<PONumber>UNMATCHED</PONumber>
- <DocumentStatus>
<Code>REMOVED_PAYMENT_VOIDED</Code>
<Meaning>Removed - Payment Voided</Meaning>
</DocumentStatus>
<DocumentDate>2012-04-23</DocumentDate>
<DocumentCreationDate>2012-07-10</DocumentCreationDate>
<PaymentDueDate>2012-05-23</PaymentDueDate>
- <DocumentType>
<Code>STANDARD</Code>
<Meaning>Standard</Meaning>
</DocumentType>
<DocumentDescription>STORAGE 04/01/12 - 06/30/12</DocumentDescription>
<ExpenseReportCreditCardNumber />
<EmployeePaymentFlag>N</EmployeePaymentFlag>
- <TotalDocumentAmount>
<Value>2612.39</Value>
- <Currency>
<Code>USD</Code>
</Currency>
</TotalDocumentAmount>
- <PaymentAmount>
<Value>2612.39</Value>
- <Currency>
<Code>USD</Code>
</Currency>
</PaymentAmount>
<PayAloneFlag>N</PayAloneFlag>
- <SettlementPriority>
<Code />
<Meaning />
</SettlementPriority>
- <AmountWithheld>
<Value />
- <Currency>
<Code>USD</Code>
</Currency>
</AmountWithheld>
- <DiscountTaken>
- <Amount>
<Value>0</Value>
- <Currency>
<Code>USD</Code>
</Currency>
</Amount>
<DiscountDate />
</DiscountTaken>
- <BankCharges>
- <BankChargeBearer>
<Code />
<Meaning />
</BankChargeBearer>
</BankCharges>
- <DeliveryChannel>
<Code />
<Meaning />
<FormatValue />
</DeliveryChannel>
- <PaymentReason>
<Code />
<Meaning />
<FormatValue />
</PaymentReason>
<PaymentReasonComments />
<RemittanceMessage />
<RemittanceMessage />
<RemittanceMessage />
- <Charge>
- <TotalDocumentChargeAmount>
<Value />
- <Currency>
<Code>USD</Code>
</Currency>
</TotalDocumentChargeAmount>
</Charge>
- <TotalDocumentTaxAmount>
<Value />
- <Currency>
<Code>USD</Code>
</Currency>
</TotalDocumentTaxAmount>
- <CreditAmountApplied>
<Value />
- <Currency>
<Code>USD</Code>
</Currency>
</CreditAmountApplied>
- <InterestAmountApplied>
<Value />
- <Currency>
<Code>USD</Code>
</Currency>
</InterestAmountApplied>
<InterestRate />
- <DocumentPayableLine>
<LineNumber>1</LineNumber>
<PONumber />
- <LineType>
<Code>ITEM</Code>
<Meaning />
</LineType>
<LineDescription />
- <LineGrossAmount>
<Value>0</Value>
- <Currency>
<Code>USD</Code>
</Currency>
</LineGrossAmount>
<UnitPrice />
<Quantity />
- <UnitOfMeasure>
<Code />
<Meaning />
</UnitOfMeasure>
- <Tax>
<TaxCode />
<TaxRate />
</Tax>
</DocumentPayableLine>
- <DocumentPayableLine>
<LineNumber>2</LineNumber>
<PONumber />
- <LineType>
<Code>ITEM</Code>
<Meaning />
</LineType>
<LineDescription />
- <LineGrossAmount>
<Value>2612.39</Value>
- <Currency>
<Code>USD</Code>
</Currency>
</LineGrossAmount>
<UnitPrice />
<Quantity />
- <UnitOfMeasure>
<Code />
<Meaning />
</UnitOfMeasure>
- <Tax>
<TaxCode />
<TaxRate />
</Tax>
</DocumentPayableLine>
- <DocumentPayableLine>
<LineNumber>3</LineNumber>
<PONumber />
- <LineType>
<Code>TAX</Code>
<Meaning />
</LineType>
<LineDescription />
- <LineGrossAmount>
<Value>0</Value>
- <Currency>
<Code>USD</Code>
</Currency>
</LineGrossAmount>
<UnitPrice />
<Quantity />
- <UnitOfMeasure>
<Code />
<Meaning />
</UnitOfMeasure>
- <Tax>
<TaxCode>USA_SALES_TAX</TaxCode>
<TaxRate>0</TaxRate>
</Tax>
</DocumentPayableLine>
- <Extend>
<CLL_ERROR>ORA-20070: INVALID COUNTRY CODE</CLL_ERROR>
</Extend>
<DocumentPayerLegalEntityName>UB_LE</DocumentPayerLegalEntityName>
<DocumentPayerLegalEntityRegNumber>9999</DocumentPayerLegalEntityRegNumber>
<DocumentPayerTaxRegNumber />
</DocumentPayable>
- <Extend>
<CLL_ERROR>ORA-20070: INVALID COUNTRY CODE</CLL_ERROR>
</Extend>
<VoucherNumber>11020</VoucherNumber>
<RoutingNumber />
</OutboundPayment>
I tried the following way and it did not work:
Sum(OutboundPayment[OutboundPayment/PaymentStatus/Code=’ISSUED’]/PaymentAmount /Value)
I tried another way and even this did not work:
decode(PaymentStatus/Code, 'VOID', ‘0’, PaymentAmount/Value*100)
Can you please let me know how I can do this.
Thanks in advance.Can you provide code on how I can create a loop?
I'm not getting any error when calculating sum.
Here is what I'm trying to do, lets say I have two checks:
CHK1
Amount:200.00
Status: Issued
CHK2
Amount: 500.00
Status: Void
When calculatiing the tota for the checksl, I should see the total as 200 only because, the Check2 has been voided and it is considered zero.
I tried the following ways and it did not work:
Sum(OutboundPayment[OutboundPayment/PaymentStatus/Code=’ISSUED’]/PaymentAmount /Value)
I tried another way and even this did not work:
decode(PaymentStatus/Code, 'VOID', ‘0’, PaymentAmount/Value*100)
Please help!!!!!! -
Need help to develop Pythagoras theorem-
Hi i need help to develop proofs 2,3,4
of pythagoras theorems in java as demonstrations
These are applets can anyone help me with it or give me an idea of how to go about developing it -
the site is the following
http://www.uni-koeln.de/ew-fak/Mathe/Projekte/VisuPro/pythagoras/pythagoras.html
then double click on the screen to make it startPardon my ASCII art, but I've always liked the following, simple, geometric proof:
a b
---------------------------------------+
| | |
a| I | II |
| | |
---------------------------------------+
| | |
| | |
| | |
| | |
| | |
b| IV | III |
| | |
| | |
| | |
| | |
| | |
| | |
---------------------------------------+It almost goes without saying that I+II+III+IV == (a+b)^2, and II == IV == a*b,
I == a*a and III == b*b, showing that (a+b)^2 == a^2+a*b+a*b+b^2.
I hope the following sketch makes sense, stand back, ASCII art alert again: a b
---------------------------------------+
| . VI |
| . . |a
| V . |
| +
| |
| . |
b| . |
| |
| IX |
| . |
| . |b
| |
+ |
| . |
a| . . VII |
| VIII . |
---------------------------------------+
a bThe total area equals (a+b)^2 again and equals the sum of the smaller areas:
(a+b)^2 == V+VI+VII+VIII+IX. Let area IX be c^2 for whatever c may be.
V+VII == VI+VIII == a*b, so a^2+b^2+2*ab= c^2+2*a*b; IOW a^2+b^2 == c^2
Given this fundamental result, the others can easily be derived from this one,
or did I answer a question you didn't ask?
kind regards,
Jos -
Need help in creating a chart from 3 datasets
Need help in creating a chart in SSRS from 3 datasets
Can someone help me in creating a chart from 3 datasets, however datasource is same.Thank you Olaf...
could anyone help me in using union all with the below
WITH a AS (
SELECT
clientid,
DATEPART(year, row_date) AS 'Year',
DATEPART(month, row_date) AS 'Month',
value ,
CASE metricid WHEN 16 THEN 'FCR' ELSE 'Cases' END AS metric
FROM XXXXXX AS V
WHERE metricid IN (16, 11)
AND row_date BETWEEN '2012-01-01' AND '2014-10-01'
AND value IS NOT NULL)
, b AS (
SELECT clientid ,
Year ,
Month ,
value AS 'Cases',
metric
FROM a
WHERE metric = 'cases')
, c AS (
SELECT clientid ,
Year ,
Month ,
value AS 'FCR',
metric
FROM a
WHERE metric = 'FCR')
, d AS (
SELECT b.YEAR, b.MONTH, c.FCR, b.Cases
FROM b INNER JOIN c
ON c.clientid = b.clientid
AND c.[YEAR] = b.[year]
AND c.[month] = b.[month]
WHERE c.fcr <> 0 AND b.cases <> 0
,E AS (
SELECT [Year], [Month], SUM(FCR) AS FCR, SUM(Cases) AS Cases
FROM d
GROUP BY [Year], [Month])
select YEAR, MONTH,
CASE MONTH
WHEN 1 THEN 'Jan'
WHEN 2 THEN 'Feb'
WHEN 3 THEN 'Mar'
WHEN 4 THEN 'Apr'
WHEN 5 THEN 'May'
WHEN 6 THEN 'Jun'
WHEN 7 THEN 'Jul'
WHEN 8 THEN 'Aug'
WHEN 9 THEN 'Sep'
WHEN 10 THEN 'Oct'
WHEN 11 THEN 'Nov'
WHEN 12 THEN 'Dec'
END AS MonthName
,e.FCR AS FCRCases
,e.Cases AS TotalCases
,CASE
WHEN [month] IN (11, 12, 1) THEN 1
WHEN [month] IN (2, 3, 4) THEN 2
WHEN [month] IN (5, 6, 7) THEN 3
WHEN [month] IN (8, 9, 10) THEN 4
END AS 'Quarter'
--,CONVERT(DECIMAL(18, 2),(e.FCR/e.Cases)*100) AS FCRRaw
from e
order by YEAR, MONTH
**************2nd query*************
WITH a AS (
SELECT
clientid,
DATEPART(year, row_date) AS 'Year',
DATEPART(month, row_date) AS 'Month',
value,
CASE metricid WHEN 56 THEN 'numerator' ELSE 'denominator' END AS metric
FROM XXXXXXX.[Values] AS V
WHERE metricid IN (56, 10)
--WHERE metricid IN (11,16)
AND row_date BETWEEN '2013-10-01' AND '2014-02-01'
AND value IS NOT NULL)
, b AS (
SELECT clientid ,
Year ,
Month ,
value AS 'numerator',
metric
FROM a
WHERE metric = 'numerator')
, c AS (
SELECT clientid ,
Year ,
Month ,
value AS 'denominator',
metric
FROM a
WHERE metric = 'denominator')
, d AS (
SELECT b.YEAR, b.MONTH, c.denominator, b.numerator
FROM b INNER JOIN c
ON c.clientid = b.clientid
AND c.[YEAR] = b.[year]
AND c.[month] = b.[month]
WHERE c.denominator <> 0 AND b.numerator <> 0
, e AS (
SELECT [Year], [Month], SUM(numerator) AS numerator, SUM(denominator) AS denominator
FROM d
GROUP BY [Year], [Month]
SELECT *,
CASE
WHEN [month] IN (11, 12, 1) THEN 1
WHEN [month] IN (2, 3, 4) THEN 2
WHEN [month] IN (5, 6, 7) THEN 3
WHEN [month] IN (8, 9, 10) THEN 4
END AS 'Quarter'
FROM e
ORDER BY 1,2
******************3rd query**************
WITH a AS (
SELECT --L.[LocationGroupId],
-- T.locationid,
-- T.AccountId,
TR.datestamp,
/*Convert(NVARCHAR, DatePArt(year, TR.datestamp)) + '-' + Convert(NVARCHAR, DatePArt(month, TR.datestamp)) + '-01'*/
TR.Period AS ValueDate,
CASE WHEN TR.TargetResultState = 0 THEN 0 WHEN TR.TargetResultState = 1 THEN 1 WHEN TR.TargetResultState = 2 THEN 1 ELSE 0 END AS Met,
CASE WHEN CONVERT(DATE, Convert(NVARCHAR, DatePArt(year, TR.datestamp)) + '-' + Convert(NVARCHAR, DatePArt(month, TR.datestamp)) + '-01') > T.Startdate AND CONVERT(DATE, Convert(NVARCHAR, DatePArt(year, TR.datestamp))
+ '-' + Convert(NVARCHAR, DatePArt(month, TR.datestamp)) + '-01') < T.Enddate THEN 1 ELSE 0 END AS ActiveTarget
FROM XXXXXX AS TR
INNER JOIN dbo.Target T ON TR.TargetID = T.ID
--INNER JOIN dbo.Location L ON T.Locationid = L.Id
WHERE --locationid <> - 1 AND
TR.Period IN ('201306', '201307', '201308', '201309', '201310', '201311', '201312', '201401'))
select ValueDate, SUM(Met) AS Met, Count(ActiveTarget) AS ActiveTargets,
right(ValueDate,2) as Month
,left(ValueDate,4) as Year
,CASE
WHEN right(ValueDate,2) IN (11, 12, 1) THEN 1
WHEN right(ValueDate,2) IN (2, 3, 4) THEN 2
WHEN right(ValueDate,2) IN (5, 6, 7) THEN 3
WHEN right(ValueDate,2) IN (8, 9, 10) THEN 4
END AS 'Quarter'
from a
group by ValueDate
order by ValueDate -
Need help with INSERT and WITH clause
I wrote sql statement which correctly work, but how i use this statment with INSERT query? NEED HELP. when i wrote insert i see error "ORA 32034: unsupported use of with clause"
with t1 as(
select a.budat,a.monat as period,b.vtweg,
c.gjahr,c.buzei,c.shkzg,c.hkont, c.prctr,
c.wrbtr,
c.matnr,
c.menge,
a.monat,
c.zuonr
from ldw_v1.BKPF a,ldw_v1.vbrk b, ldw_v1.bseg c
where a.AWTYP='VBRK' and a.BLART='RV' and a.BUKRS='8431' and a.awkey=b.vbeln
and a.bukrs=c.bukrs and a.belnr=c.belnr and a.gjahr=c.gjahr and c.koart='D'
and c.ktosl is null and c.gsber='4466' and a.gjahr>='2011' and b.vtweg='01'
,t2 as(
select a.BUKRS,a.BELNR, a.GJAHR,t1.vtweg,t1.budat,t1.monat from t1, ldw_v1.bkpf a
where t1.zuonr=a.xblnr and a.blart='WL' and bukrs='8431'
,tcogs as (
select t2.budat,t2.monat,t2.vtweg, bseg.gjahr,bseg.hkont,bseg.prctr,
sum(bseg.wrbtr) as COGS,bseg.matnr,bseg.kunnr,sum(bseg.menge) as QUANTITY
from t2, ldw_v1.bseg
where t2.bukrs=bseg.bukrs and t2.belnr=bseg.BELNR and t2.gjahr=bseg.gjahr and BSEG.KOART='S'
group by t2.budat,t2.monat,t2.vtweg, bseg.gjahr,bseg.hkont,bseg.prctr,
bseg.matnr,bseg.kunnr
,t3 as
select a.budat,a.monat,b.vtweg,
c.gjahr,c.buzei,c.shkzg,c.hkont, c.prctr,
case when c.shkzg='S' then c.wrbtr*(-1)
else c.wrbtr end as NTS,
c.matnr,c.kunnr,
c.menge*(-1) as Quantity
from ldw_v1.BKPF a,ldw_v1.vbrk b, ldw_v1.bseg c
where a.AWTYP='VBRK' and a.BLART='RV' and a.BUKRS='8431' and a.awkey=b.vbeln
and a.bukrs=c.bukrs and a.belnr=c.belnr and a.gjahr=c.gjahr and c.koart='S'
and c.ktosl is null and c.gsber='4466' and a.gjahr>='2011' and b.vtweg='01'
,trevenue as (
select t3.budat,t3.monat,t3.vtweg, t3.gjahr,t3.hkont,t3.prctr,
sum(t3.NTS) as NTS,t3.matnr,t3.kunnr,sum(t3.QUANTITY) as QUANTITY
from t3
group by t3.budat,t3.monat,t3.vtweg, t3.gjahr,t3.hkont,t3.prctr,t3.matnr,t3.kunnr
select NVL(tr.budat,tc.budat) as budat,
NVL(tr.monat,tc.monat) as monat,
NVL(tr.vtweg,tc.vtweg) as vtweg,
NVL(tr.gjahr, tc.gjahr) as gjahr,
tr.hkont as NTS_hkont,
tc.hkont as COGS_hkont,
NVL(tr.prctr,tc.prctr) as prctr,
NVL(tr.MATNR, tc.MATNR) as matnr,
NVL(tr.kunnr, tc.kunnr) as kunnr,
NVL(tr.Quantity, tc.Quantity) as Quantity,
tr.NTS as NTS,
tc.COGS as COGS
from trevenue TR full outer join tcogs TC
on TR.BUDAT=TC.BUDAT and TR.MONAT=TC.MONAT and TR.GJAHR=TC.GJAHR
and TR.MATNR=TC.MATNR and TR.KUNNR=TC.KUNNR and TR.QUANTITY=TC.QUANTITY
and TR.VTWEG=TC.VTWEG and TR.PRCTR=TC.PRCTR
Edited by: user13566113 on 25.03.2011 5:26Without seeing what you tried it is hard to say what you did wrong, but this is how it would work
SQL> create table t ( n number );
Table created.
SQL> insert into t
2 with test_data as
3 (select 1 x from dual union all
4 select 2 x from dual union all
5 select 3 x from dual union all
6 select 4 x from dual)
7 select x from test_data;
4 rows created.
SQL> -
Need help with conditional query
guys this is just an extension of this post that Frank was helping me with. im reposting because my requirements have changes slightly and im having a hell of a time trying to modify the query.
here is the previous post.
need help with query that can look data back please help.
CREATE TABLE "FGL"
"FGL_GRNT_CODE" VARCHAR2(60),
"FGL_FUND_CODE" VARCHAR2(60),
"FGL_ACCT_CODE" VARCHAR2(60),
"FGL_ORGN_CODE" VARCHAR2(60),
"FGL_PROG_CODE" VARCHAR2(60),
"FGL_GRNT_YEAR" VARCHAR2(60),
"FGL_PERIOD" VARCHAR2(60),
"FGL_BUDGET" VARCHAR2(60)
)data
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7600','4730','02','11','00','400');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7240','4730','02','10','1','100');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7240','4730','02','10','1','0');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7600','4730','02','11','1','400');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('360055','360055','7200','4730','02','10','1','400');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('360055','360055','7600','4730','02','10','1','400');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7240','4730','02','10','14','200');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7600','4730','02','10','14','100');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7240','4730','02','10','14','200');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7240','4730','02','10','2','100');
Insert into FGL (FGL_GRNT_CODE,FGL_FUND_CODE,FGL_ACCT_CODE,FGL_ORGN_CODE,FGL_PROG_CODE,FGL_GRNT_YEAR,FGL_PERIOD,FGL_BUDGET) values ('240055','240055','7240','4730','02','11','2','600');
I need to find the greatest grant year for the grant by a period parameter.
once i find the greatest year i need to check the value of period 14 for that grant for the previous year and add it to the budget amount for that grant. however if their is an entry in the greatest year for period 00 then i need to ignore the period 14 of previous year and do this calculation current period +(current period - greatest year 00)
hope that makes sense so in other words with the new data above. if i was querying period two of grant year 11. i would end up with $800
because the greatest year is 11 it contains a period 0 with amount of $400 so my total should be
period 2 amount $ 600
period 0 amount $ 400 - period 2 amount of $600 = 200
600+200 = $800
if i query period 1 of grant 360055 i would just end up with 800 of grnt year 10.
i have tried to modify that query you supplied to me with no luck. I have tried for several day but im embarrased to say i just can get it to do what im trying to do .
can you please help me out.
here is the query supplied by frank kulash who gracefully put this together for me.
WITH got_greatest_year AS
SELECT fgl.* -- or whatever columns are needed
, MAX ( CASE
WHEN fgl_period = :given_period
THEN fgl_grnt_year
END
) OVER () AS greatest_year
FROM fgl
SELECT SUM (fgl_budget) AS total_budget -- or SELECT *
FROM got_greatest_year
WHERE ( fgl_grnt_year = greatest_year
AND fgl_period = :given_period
OR ( fgl_grnt_year = greatest_year - 1
AND fgl_period = 14
;MiguelHi, Miguel,
Are you waying that, when the greatest year that has :given_period also has period='00' (or '0', or whatever you want to use), then you want to double the budget from the given_period (as well as subtract the budget from the '00', and not count the pevious year's '14')? If so, add another condition to the CASE statement which decides what you're SUMming:
WITH got_greatest_year AS
SELECT TO_NUMBER (fgl_grnt_year) AS grnt_year
, fgl_period
, TO_NUMBER (fgl_budget) AS budget
, MAX ( CASE
WHEN fgl_period = :given_period
THEN TO_NUMBER (fgl_grnt_year)
END
) OVER () AS greatest_year
FROM fgl
, got_cnt_00 AS
SELECT grnt_year
, fgl_period
, budget
, greatest_year
, COUNT ( CASE
WHEN grnt_year = greatest_year
AND fgl_period = '00'
THEN 1
END
) OVER () AS cnt_00
FROM got_greatest_year
SELECT SUM ( CASE
WHEN grnt_year = greatest_year -- New
AND fgl_period = :given_period -- New
AND cnt_00 > 0 THEN budget * 2 -- New
WHEN grnt_year = greatest_year
AND fgl_period = :given_period THEN budget
WHEN grnt_year = greatest_year
AND fgl_period = '00' THEN -budget
WHEN grnt_year = greatest_year - 1
AND fgl_period = '14'
AND cnt_00 = 0 THEN budget
END
) AS total_budget
FROM got_cnt_00
;You'll notice this is the same as the previous query I posted, except for 3 lines maked "New". -
Need help with home work see what you got
1. The MEMBERS table has the phone number broken into three fields:
CountryCode - e,g., '1' for the United States
AreaCode - e.g., three digits for the United States
Phone - e.g., 7 digits, with or without a dash between the first three digits (Exchange) and last four digits (Line)
Any or all of the fields may be missing (null) or blank or contain only spaces.
Write a T-SQL statement to concatenate the three fields into a complete phone number
with the format: CountryCode(AreaCode)Exchange-Line, e.g., 1(816)123-4567
If no Phone is present, return a blank string.
If no area code is present, return only the Phone number. Do not return an empty pair of parentheses or the CountryCode.
2. The PERSON_CAMPAIGN table contains a row for each war/conflict the member served in. A member may have served in multiple conflicts
For this purpose, each row contains:
PersonID - unique member identifier
Campaign - name of war/conflict
Write a T-SQL statement to return one row per member with all campaigns concatenated into a single field and separated by commas
E.g., PersonID Campaigns
12345678 Global War on Terror, Iraq, Afghanistan
3. The MEMBER_STATISTICS table contains one row per post.
For this purpose, each row contains the post's:
Division - a way of grouping posts by their member size
Department - the state in which the post is located
PostNumber - unique post identifier
Reinstated - count of members whose annual subscription had lapsed for at least two years but who have now subscribed for the current year
Write a T-SQL statement to determine the top ten posts in each division based on the number of reinstated members, with a minimum of 50 reinstated members.
Rank them by highest to lowest reinstated count.
Return their Division, Rank, Department, PostNumber, ReinstatedI got 3 home work questions think i have the first two need help with the last one please.
Kinda stuck on #3 hard I can see data not sure witch to sum or count?
1. The MEMBERS table has the phone number broken into three fields:
CountryCode - e,g., '1' for the United States
AreaCode - e.g., three digits for the United States
Phone - e.g., 7 digits, with or without a dash between the first three digits (Exchange) and last four digits (Line)
Any or all of the fields may be missing (null) or blank or contain only spaces.
Write a T-SQL statement to concatenate the three fields into a complete phone number
with the format: CountryCode(AreaCode)Exchange-Line, e.g., 1(816)123-4567
If no Phone is present, return a blank string.
If no area code is present, return only the Phone number. Do not return an empty pair of parentheses or the CountryCode.
ANSWER******************
Notes: created a funtion to format the phone
Then used the this function in a select to concatenate Phone
CREATE FUNCTION dbo.FORMATPHONE (@CountryCode int, @AreCode int, @Phone VARCHAR(14))
RETURNS VARCHAR(14)
AS BEGIN
DECLARE @ReturnPhone VARCHAR(14)
DECLARE @NewPhone VARCHAR(14)
-- Note case sets newphone to null if phone null or '' also to see if phone has '-' in it if not inserts into newphone
case
when @Phone is null or @Phone = ''
Then SET @NewPhone = Null
when @Phone = substring(@Phone,4,1)='-'
Then SET @NewPhone = @Phone
else
SET @NewPhone = substring(@Phone,1,3)+'-'+ substring(@Phone,4,4)
End
case
when @NewPhone is null then SET @ReturnPhone = @NewPhone
elese case
when @AreCode is null or @AreCode = '' then SET @ReturnPhone = @NewPhone
else
SET @ReturnPhone = @CountryCode + '(' + @AreCode + ')' + @NewPhone
END
END
RETURN @ReturnPhone
END
select dbo.FORMATPHONE(CountryCode,AreCode,Phone)
from MEMBERS
2. The PERSON_CAMPAIGN table contains a row for each war/conflict the member served in. A member may have served in multiple conflicts
For this purpose, each row contains:
PersonID - unique member identifier
Campaign - name of war/conflict
Write a T-SQL statement to return one row per member with all campaigns concatenated into a single field and separated by commas
E.g., PersonID Campaigns
12345678 Global War on Terror, Iraq, Afghanistan
ANSWER******************
SELECT PersonID,
STUFF(( SELECT ',' + Campaign AS [text()]
FROM PERSON_CAMPAIGN
WHERE (PersonID = Results.ID)
FOR XML PATH('')
), 1, 1, '' )
AS Campaigns
FROM PERSON_CAMPAIGN Results
3. The MEMBER_STATISTICS table contains one row per post.
For this purpose, each row contains the post's:
Division - a way of grouping posts by their member size
Department - the state in which the post is located
PostNumber - unique post identifier
Reinstated - count of members whose annual subscription had lapsed for at least two years but who have now subscribed for the current year
Write a T-SQL statement to determine the top ten posts in each division based on the number of reinstated members, with a minimum of 50 reinstated members.
Rank them by highest to lowest reinstated count.
Return their Division, Rank, Department, PostNumber, Reinstated -
Need help choosing optimal hardware for a laptop that will run AE CS5
BACKGROUND INFO (Questions listed below)
I need some help figuring out the best hardware configuration for a new laptop. I’m a student at a design school and I will be using the laptop to mainly run After Effects and to a lesser extent Photoshop and Illustrator. I don’t need to worry about 3D rendering software or Premier Pro. I am primarily interested in getting the best performance during editing. I am not looking for the best performance for final output. I would prefer to sacrifice final output times for better editing/interface performance.
I will be working with standard definition content and perhaps HD up to 720p on occasion. I do not need to operate in resolutions higher than 720p. My projects are generally animation and use many sources and many layers.
I’ve been reading up on optimal hardware configurations for CS5 but my understanding is still a little foggy and I would like to use this thread to figure out how to build the best machine for my budget. The budget is about $1400 to $1600 CANADIAN after tax.
I DON’T need help finding the laptop. I will search for it on my own. I just need to understand the best hardware to purchase within my budget.
I realize that it is probably impossible to buy the laptop I want with the hardware configuration I need “off the shelf”. Instead I will be looking for a good base model (~$900-$1100) and I will purchase the necessary hardware upgrades separately. I will not be purchasing a Mac.
Right now I’m thinking of a machine built something like this:
- 15”-16” screen (17” models are too big/heavy)
- Mid to high end i5 processor OR entry level i7 quad core
- 8GB RAM (I would go to 12GB, but it’s hard to find a 15”-16” laptop with 3 memory slots)
- SSD to replace HDD (However, if possible, I would like a laptop with dual HDD support or swap the optical drive for another HDD. If I had access to 2 drives, I would have and HDD/SSD combo).
- Medium/high end NVIDIA GPU to take advantage of OpenGL while editing.
QUESTIONS
1) Does the “Render Multiple Frames Simultaneously” option enhance general editing performance (applying filters, scrubbing through the timeline, reverting history states)? Or does it ONLY help speed up RAM previews and final output? Does it reduce the length of RAM previews?
1b) Is this option even necessary to enable on 64bit systems? (As far as I understand it was used to solve a problem where 32bit systems/software would only recognize 4GB of RAM per instance of AE).
1c) If I turn this option on to help with RAM previews, would I be hindering general editing performance in any way? Or does this option have basically zero drawbacks?
2) How come “Actual CPUs that will be used” will read 0 even if the sum total of RAM assigned to the CPUs plus the RAM reserved for other applications is less than the total available system RAM (on a 64bit system)? For example, I currently have 4GB RAM and 2 installed CPUs. I have 1.5GB reserved for other programs and when I set 0.75GB per CPU both CPUs are used. However when I set 1GB per CPU then 0 CPUs are used, even though the total RAM adds up to only 3.5GB.
CPU
3.) Considering the fact that I am more concerned with smooth performance while editing rather than final output speeds, would it be better to get a dual core i5 clocked around 2.5 or a quad core i7 clocked around 1.8?
4.) What is the difference between an i3 and an i5 processor even if they are clocked at the same speed? How does an i5 460M compare on the grand scheme of things?
RAM
6.) Should the quantity of RAM that I get (8GB vs 12GB) be based on the number of cores in my CPU? If so, how should I be calculating optimal RAM based on # of cores. Should I also be counting threads, or just actual physical cores?
STORAGE/SWAP
7.) Should I replace the HDD with an SSD? I'm looking for snappy interface performance while editing. I would think that if the RAM fills up it would be best to have the SSD for scratch/cache.
8.) What performance benchmarks are most important when considering an SSD for After Effects? (4k writes? IOs per second? Max read/write?)
9.) I can afford the OCZ Vertex2 120GB SSD. Would this be a good choice if an SSD is recommended?
10.) Would it be better to have 8GB of RAM and an SSD, or 12GB of RAM and an HDD? Explain why.
GPU
10.) After Effects utilizes OpenGL to enhance editing performance. I will not really be using Premier Pro, so catering to the CUDA Mercury Engine is not a concern. Do high end gaming cards provide significant gains in OpenGL performance? Or do OpenGL performance gains taper off around the mid-range GPUs? (i.e. can you justify buying a high end GTX 260M graphics card for enhanced editing performance versus an "entry level" dedicated card like the 310M?)
11.) What hardware specs are most important when considering a GPU for editing performance in AE? (Memory size? # of Pixel shaders? Core speed? Shader speed?)
Thanks so much for any answers you can offer to these questions.Please make sure that you've read through this page and what it points to.
> 1) Does the “Render Multiple Frames Simultaneously” option
enhance general editing performance (applying filters, scrubbing through
the timeline, reverting history states)? Or does it ONLY help speed up
RAM previews and final output? Does it reduce the length of RAM
previews?
It only increases rendering speed for RAM previews and rendering for final output. In After Effects CS5, it doesn't decrease the length of RAM previews. (In CS4, it does.)
1b) Is this option even necessary to enable on 64bit
systems? (As far as I understand it was used to solve a problem where
32bit systems/software would only recognize 4GB of RAM per instance of
AE).
You misunderstood. Yes, it's still relevant on 64-bit computers. Moreso, in a way. (I'd rather not spend my entire Sunday writing out detailed answers to satisfy idle curiosity, so I'm not going to give all the technical detail to that answer.)
> 1c) If I turn this option on to help with RAM previews,
would I be hindering general editing performance in any way? Or does
this option have basically zero drawbacks?
It takes a small but nonzero time for the background processes to start up when they need to be used and shut down when they're done. And as they sit waiting, they take up a little bit of memory. So, it's not exactly correct to say that there are no downsides to leaving it on. But it's close. I leave it on.
> 2) How come “Actual CPUs that will be used” will read 0 even
if the sum total of RAM assigned to the CPUs plus the RAM reserved for
other applications is less than the total available system RAM (on a
64bit system)? For example, I currently have 4GB RAM and 2 installed
CPUs. I have 1.5GB reserved for other programs and when I set 0.75GB per
CPU both CPUs are used. However when I set 1GB per CPU then 0 CPUs are
used, even though the total RAM adds up to only 3.5GB.
4GB - 1.5GB for other software leaves 2.5 GB for After Effects.
If you have 1GB assigned per background CPU, then the foreground takes 1.2x that = 1.2GB. That leaves 1.3GB for background processes, which is enough for one background process. There's no point in starting only one background process to do rendering, so it doesn't bother. (Note: When background processes are rendering, the foreground process isn't rendering.)
> 3.) Considering the fact that I am more concerned with
smooth performance while editing rather than final output speeds, would
it be better to get a dual core i5 clocked around 2.5 or a quad core i7
clocked around 1.8?
Get the quad-core. That gives you a greater total number of cycles. And After Effects works very well with mutliple processors, even beyond Render Multiple Frames Simultaneously multiprocessing. An entirely unrelated sort of multiprocessing (multithreading) spreads work out to multiple processors.
> 6.) Should the quantity of RAM that I get (8GB vs 12GB) be based on the number of cores in my CPU? If
so, how should I be calculating optimal RAM based on # of cores. Should
I also be counting threads, or just actual physical cores?
The optimum amount is the amount that you can cram into the computer. I'm not kidding. Spend your budget on RAM until you have 4GB installed per processor (and I'm counting the virtual processors due to hyperthreading). If you have a quad-core, that's 8 CPUs with hyperthreading, so the optimum amount of RAM installed is 32GB. You can work with less, but you did ask about optimum. For HD work (i.e., 1920 pixels across), you're OK with more like 3GB installed per CPU. That's what I have at home: 24GB in a quad-core. You're going to assign 2/3 or so of the RAM to After Effects, so 3GB installed per CPU is 2GB per core for HD work in After Effects.
> 10.) Would it be better to have 8GB of RAM and an SSD, or 12GB of RAM and an HDD? Explain why.
12GB of RAM. Because After Effects likes RAM. (If you're thinking of deliberatly using virtual memory to swap memory to the hard disk, don't. That's a performance killer.)
> 10.) After Effects utilizes OpenGL to enhance editing performance.
Not really. If you're on a limited budget, don't even think about the GPU until you've already got the most RAM, the fastest CPUs, the largest number of CPUs, two fast hard disks, and a couple of good monitors. Then, and only then, should you even consider getting soemthing beyond a non-stock graphics card. Yes, OpenGL can be used to accelerate some things, but that's only for the low-fidelity preview renderer. (Pardon the bluntness, but I want to make sure that you heed this.) -
Need Help in trying to understand class objects
I need help on understanding following problem.I have two files for that, which are as follows:
first file
public class Matrix extends Object {
private int matrixData[][]; // integer array to store integer data
private int rowMatrix; // number of rows
private int colMatrix; // number of columns
public Matrix( int m, int n )
{ /*Constructor: initializes rowMatrix and colMatrix,
and creates a double subscripted integer array matrix
of rowMatrix rows and colMatrixm columns. */
rowMatrix = m;
colMatrix = n;
matrixData = new int[rowMatrix][colMatrix];
public Matrix( int data[][] )
{ /* Constructor: creates a double subscripted integer array
and initilizes the array using values of data[][] array. */
rowMatrix = data.length;
colMatrix = data[0].length;
matrixData = new int [rowMatrix][colMatrix];
for(int i=0; i<rowMatrix; i++)
for(int j=0; j<colMatrix; j++)
matrixData[i][j] = data[i][j];
public int getElement( int i, int j)
{ /* returns the element at the ith row and jth column of
this matrix. */
return matrixData[i][j];
public boolean setElement( int x, int i, int j)
{ /* sets to x the element at the ith row and jth column
of this matrix; this method should also check the
consistency of i and j (i.e., if i and j are in the range
required for subscripts; only in this situation the operation
can succeed); the method should return true if the operation
succeeds, and should return false otherwise.
for(i=0;i<rowMatrix;i++){
for(j=0;j<colMatrix;j++){
x = matrixData[i][j];
if(i<rowMatrix && j<colMatrix){
return true;
else{
return false;
public Matrix transposeMatrix( )
{ /*returns a reference to an object of the class Matrix,
that contains the transpose of this matrix. */
Verify tata;
Matrix trans;
//Matrix var = matrixData[rowMatrix][colMatrix];
for(int row=0;row<rowMatrix;row++){
for(int col=0;col<colMatrix;col++){
matrixData[rowMatrix][colMatrix] = matrixData[colMatrix][rowMatrix];
trans = new Matrix(matrixData);
return trans;
public Matrix multipleMatrix( Matrix m )
/*returns a reference to an object of the class Matrix,
that contains the product of this matrix and matrix m. */
m = new Matrix(matrixData);
//Matrix var = matrixData[rowMatrix][colMatrix];
for(int row=0;row<rowMatrix;row++){
for(int col=0;col<colMatrix;col++){
//trans[row][col] = getElement(row,col);
return m;
public int diffMatrix( Matrix m )
/*returns the sum of the squared element-wise differences
of this matrix and m ( reference to the formula in the description
of assignment 5) */
return 0;
public String toString( )
/* overloads the toString in Object */
String output = " row = " + rowMatrix + " col="+colMatrix + "\n";
for( int i=0; i<rowMatrix; i++)
for( int j=0; j<colMatrix; j++)
output += " " + getElement(i,j) + " ";
output += "\n";
return output;
Second file
public class Verify extends Object {
public static void main( String args[] )
int[][] dataA = {{1,1,1},{2,0,1},{1,2,0},{4,0,0}}; // data of A
int[][] dataB = {{1,2,2,0},{1,0,3,0},{1,0,3,4}}; // data of B
Matrix matrixA = new Matrix(dataA); // matrix A
System.out.println("Matrix A:"+matrixA);
Matrix matrixB = new Matrix(dataB); // matrix B
System.out.println("Matrix B:"+matrixB);
// Calculate the left-hand matrix
Matrix leftFormula = (matrixA.multipleMatrix(matrixB)).transposeMatrix();
System.out.println("Left Side:"+leftFormula);
// Calculate the right-hand matrix
Matrix rightFormula = (matrixB.transposeMatrix()).multipleMatrix(matrixA.transposeMatrix());
System.out.println("Right Side:"+rightFormula);
// Calculate the difference between left-hand matrix and right-hand matrix
// according to the formula in assignment description
double diff = leftFormula.diffMatrix(rightFormula);
if( diff < 1E-6 ) // 1E-6 is a threshold
System.out.println("Formula is TRUE");
else
System.out.println("Formula is FALSE");
}My basic aim is to verify the formula
(A . B)' =B' . A' or {(A*B)tranpose = Btranspose * A transpose}Now My problem is that I have to run the verify class file and verify class file will call the matrix class and its methods when to do certain calculations (for example to find left formula it calls tranposematrix() and multipleMatrix();)
How will I be able to get the matrix which is to be transposed in transposeMatrix method (in Matrix class)becoz in the method call there is no input for transposematrix() and only one input for multipleMatrix(matrix m).
please peeople help me put in this.
thanking in advancePlease don't crosspost.
http://forum.java.sun.com/thread.jspa?threadID=691969
The other one is the crosspost.Okay, whatever. I'm not really concerned with which one is the original. I just view the set of threads overall as being a crosspost, and arbitrarily pick one to point others toward.
But either way
knightofdurham... pick one thread and post only in
the one.Indeed. And indicate such in the other one. -
hi friends,
I need to learn hr abap.I need help from u ...if anyone have hr abap documents or books please give me..or suggest me some basic hr abap book names
Thank u.
Pinky.sample programs
REPORT ZPETROL_EXCLUDE .
TABLES SSCRFIELDS.
SELECTION-SCREEN BEGIN OF SCREEN 100.
SELECTION-SCREEN SKIP 9.
PARAMETERS NUMBER(200) TYPE C.
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN:
BEGIN OF LINE,
PUSHBUTTON 2(10) TEXT-001 USER-COMMAND PROC,
END OF LINE.
SELECTION-SCREEN END OF SCREEN 100.
CALL SCREEN 100.
AT SELECTION-SCREEN.
CASE SSCRFIELDS.
WHEN 'PROC'.
SET PARAMETER ID: 'NUM' FIELD NUMBER.
CALL TRANSACTION 'ZP_PALLOWANCE'.
LEAVE TO SCREEN 0.
ENDCASE.
SECOND PRG
REPORT ZPR_PETROL_ALLOWANCE NO STANDARD PAGE
HEADING .
*-- Infotypes
INFOTYPES : 0000, "Actions
0002, "Personal Data
0008. "Basic pay details
*-- Tables
TABLES : PERNR, "Standard Selections for HR Master Data Reporting
PC207, "Payroll Results: Results Table
PCL1, "HR Cluster 1
PCL2, "HR Cluster 2
T510, "Pay scales
T549A, "Payroll areas
T549Q, "Payroll Periods
PA0002. "Personal details
*-- Internal Tables
*-- Internal Table Declaration For Holding The Data
DATA: BEGIN OF INT_PETROL OCCURS 0,
PERNR LIKE PA0008-PERNR, "Personnel Number
TRFST LIKE PA0008-TRFST, "Pay Scale Level
NAME(40), "Name of Employee
PALLOWANCE TYPE P DECIMALS 2, "Petrol Allowance Amount
END OF INT_PETROL.
DATA: BEGIN OF PA0015_DATA OCCURS 0,
PERNR LIKE PA0015-PERNR,
BETRG LIKE PA0015-BETRG,
END OF PA0015_DATA.
DATA:BEGIN OF INT_PETROL2 OCCURS 0,
PERNR LIKE PA0008-PERNR, "Personnel Number
VORNA LIKE PA0002-VORNA, "First Name
NACHN LIKE PA0002-NACHN, "Last Name
TRFST LIKE PA0008-TRFST, "Pay Scale Level
NAME(40), "Name of Employee
PALLOWANCE TYPE P DECIMALS 2, "Petrol Allowance Amount
END OF INT_PETROL2.
DATA : TITLE TYPE LVC_TITLE.
DATA: BEGIN OF PER_NO OCCURS 0,
PERNR LIKE PA0008-PERNR,
TRFST LIKE PA0008-TRFST,
END OF PER_NO.
DATA: BEGIN OF MSG OCCURS 0,
MSG1(100) TYPE C,
END OF MSG.
DATA: FLAG TYPE I VALUE '0',
DIS_FLAG TYPE I VALUE '0'.
DATA: INT_PETROL3 LIKE STANDARD TABLE OF INT_PETROL2 INITIAL SIZE 0
WITH HEADER LINE.
DATA: INT_PETROL1 LIKE STANDARD TABLE OF INT_PETROL INITIAL SIZE 0 WITH
HEADER LINE.
DATA: WA_PET_ALLOWANCE TYPE ZBPETROL_ALL. "WORKAREA FOR INSERTING
VALUES.
*DATA: P_LGART1 LIKE T512T-LGART VALUE '0010'. "CHANGE WAGE TYPE HERE
DATA: P_LGART1 LIKE T512T-LGART VALUE '0077'. "CHANGE WAGE TYPE HERE
DATA: BEGIN OF INT_0015 OCCURS 0,
PERNR(038),
BEGDA(010),
BETRG(018),
END OF INT_0015.
*-- Internal Table To Store Error Records.
DATA: E_INT_0015 LIKE INT_0015 OCCURS 0 WITH HEADER LINE.
*-- Batch Input Data of Single Transaction
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
*-- Internal Table For Export and Import Payroll Results
DATA: INT_RGDIR LIKE PC261 OCCURS 0 WITH HEADER LINE,
LGTXT LIKE T512T-LGTXT.
DATA: BEGIN OF EMP_NO OCCURS 0,
PERNR(4) TYPE C,
END OF EMP_NO.
DATA: BEGIN OF EMP_NO1 OCCURS 0,
PERNR TYPE I,
END OF EMP_NO1.
DATA EMPNO LIKE STANDARD TABLE OF EMP_NO INITIAL SIZE 0.
DATA EMPNO1 LIKE STANDARD TABLE OF EMP_NO1 INITIAL SIZE 0 WITH HEADER
LINE.
DATA LEN1 TYPE I.
DATA: ERR LIKE MESSAGE.
DATA TEMP_NUM(200) TYPE C.
*-- Includes
*-- International Include
INCLUDE RPC2CD09. "Cluster CD data definition
INCLUDE RPC2CA00. "Cluster CA Data-Definition
INCLUDE RPPPXD00. "Data Definition buffer PCL1/PCL2 Buffer INCLUDE RPPPXD10.
"Common part buffer PCL1/PCL2 INCLUDE RPPPXM00. "Buffer Handling routine
*-- Country Specific Include
INCLUDE PC2RXIN0. "Cluster IN data definition
INCLUDE RPC2RX09.
*-- ALV Declaration
TYPE-POOLS : SLIS.
DATA: INT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
INT_EVENTS TYPE SLIS_T_EVENT,
INT_LAYOUT TYPE SLIS_LAYOUT_ALV,
WS_EVENTS TYPE SLIS_ALV_EVENT,
WS_REPID LIKE SY-REPID.
*-- Initialization
INITIALIZATION.
WS_REPID = SY-REPID.
*-- At Selection-Screen
START-OF-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 1(30) TEXT-002.
SELECTION-SCREEN POSITION 33.
PARAMETERS: P_RATE TYPE P DECIMALS 2.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-003.
SELECTION-SCREEN BEGIN OF BLOCK B3.
PARAMETERS: P_UPLOAD AS CHECKBOX,
P_FG RADIOBUTTON GROUP G1,
P_BG RADIOBUTTON GROUP G1.
SELECTION-SCREEN END OF BLOCK B3.
SELECTION-SCREEN BEGIN OF BLOCK B4.
PARAMETERS: P_DI AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK B4.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN.
*-- Wate Type Text
SELECT SINGLE LGTXT INTO LGTXT FROM T512T WHERE SPRSL = 'E' AND
MOLGA = '40' AND LGART = P_LGART1 .
*-- Data Retrieval From Logical Database PNP
GET PERNR.
PROVIDE PERNR FROM P0000 VORNA NACHN FROM P0002 BETWEEN PN-BEGDA AND
PN-ENDDA.
INT_PETROL1-PERNR = P0000-PERNR.
CONCATENATE P0002-VORNA P0002-NACHN INTO INT_PETROL1-NAME SEPARATED
BY SPACE.
ENDPROVIDE.
*-- Clear Data
CLEAR: RGDIR, INT_RGDIR.
REFRESH: RGDIR, INT_RGDIR.
*-- Read All The Payroll Runs For An Employee
CD-KEY-PERNR = PERNR-PERNR.
RP-IMP-C2-CU.
CHECK RP-IMP-CD-SUBRC EQ 0.
*-- Clear Data
REFRESH: RT.
Read IN Cluster.
LOOP AT RGDIR WHERE FPBEG >= PN-BEGDA AND FPEND <= PN-ENDDA.
MOVE-CORRESPONDING RGDIR TO INT_RGDIR.
APPEND INT_RGDIR.
CLEAR INT_RGDIR.
ENDLOOP.
Read the last record.
SORT INT_RGDIR BY SEQNR DESCENDING.
READ TABLE INT_RGDIR INDEX 1.
RX-KEY-SEQNO = INT_RGDIR-SEQNR.
RX-KEY-PERNR = PERNR-PERNR.
RP-IMP-C2-IN.
CHECK RP-IMP-IN-SUBRC EQ 0.
READ TABLE RT WITH KEY LGART = P_LGART1.
IF SY-SUBRC = 0.
INT_PETROL1-PALLOWANCE = RT-BETRG.
ENDIF.
APPEND INT_PETROL1.
CLEAR INT_PETROL1.
SELECT TRFST PERNR
INTO CORRESPONDING FIELDS OF TABLE PER_NO
FROM PA0008
WHERE TRFST LIKE 'L%'
AND BET01 > 0.
SORT PER_NO.
DELETE ADJACENT DUPLICATES FROM PER_NO.
*-- END-OF-SELECTION.
END-OF-SELECTION.
LOOP AT INT_PETROL1.
READ TABLE PER_NO WITH KEY PERNR = INT_PETROL1-PERNR.
IF SY-SUBRC = 0.
INT_PETROL-TRFST = PER_NO-TRFST.
MODIFY INT_PETROL1 FROM INT_PETROL TRANSPORTING TRFST.
ENDIF.
ENDLOOP.
SORT INT_PETROL1.
DELETE ADJACENT DUPLICATES FROM INT_PETROL1.
CONCATENATE 'From' ' : ' PN-BEGDA6(2) '.' PN-BEGDA4(2) '.' PN-
BEGDA+0(4)
' To' ' : ' PN-ENDDA6(2) '.' PN-ENDDA4(2) '.' PN-ENDDA+0(4)
INTO TITLE.
IF P_DI = 'X'. "TO DISPLAY PETROL ALLOWANCE ONLY
IF PNPTIMRA = 'X'. "CHECK OTHER PERIOD CHECKED
DIS_FLAG = 1.
ENDIF.
IF PNPTIMR9 = 'X'. "CHECK TO SEE CURRENT PERIOD SELECTED
CASES - NO RATE GIVEN, RATE GIVEN
CURRENT PERIOD UPLOADED BUT PAYROLL NOT WRITTEN SO NO RESULT FROM LDB
SELECT RATE INTO P_RATE FROM ZBPETROL_ALL WHERE BEGDA = PN- BEGDA AND ENDDA = PN-ENDDA.
ENDSELECT.
IF SY-DBCNT = 0.
MESSAGE I455(0) WITH 'NO PETROL RATE EXSISTS'.
ELSE.
FLAG = 1.
ENDIF. "OF SY-DBCNT
IF P_RATE > 0 AND FLAG = 1. " PETROL RATE EXSISTS.
SELECT PERNR SUM( BETRG ) INTO TABLE PA0015_DATA
FROM PA0015
WHERE BEGDA BETWEEN PN-BEGDA AND PN-ENDDA
GROUP BY PERNR.
SELECT APERNR ATRFST BVORNA BNACHN
INTO CORRESPONDING FIELDS OF TABLE INT_PETROL3
FROM PA0008 AS A
INNER JOIN PA0002 AS B ON BPERNR = APERNR
WHERE A~TRFST LIKE 'L%'
AND A~BET01 > 0.
SORT INT_PETROL3.
DELETE ADJACENT DUPLICATES FROM INT_PETROL3.
REFRESH INT_PETROL1.
LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport
employee name
CONCATENATE INT_PETROL2-VORNA INT_PETROL2-NACHN INTO
INT_PETROL2-NAME SEPARATED BY SPACE.
MODIFY INT_PETROL3 FROM INT_PETROL2 TRANSPORTING NAME.
ENDLOOP.
LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport
one
table to another table
READ TABLE PA0015_DATA WITH KEY PERNR = INT_PETROL2-PERNR.
IF SY-SUBRC = 0.
INT_PETROL-PERNR = INT_PETROL2-PERNR.
INT_PETROL-TRFST = INT_PETROL2-TRFST.
INT_PETROL-NAME = INT_PETROL2-NAME.
INT_PETROL-PALLOWANCE = PA0015_DATA-BETRG.
APPEND INT_PETROL TO INT_PETROL1.
ENDIF.
ENDLOOP.
DIS_FLAG = 1.
ENDIF. "P_RATE > 0 AND FLAG = 1.
IF P_RATE > 0 AND FLAG = 0. "CURRENT PERIOD AND DATA NOT UPLOADED
SELECT APERNR ATRFST BVORNA BNACHN
INTO CORRESPONDING FIELDS OF TABLE INT_PETROL3
FROM PA0008 AS A
INNER JOIN PA0002 AS B ON BPERNR = APERNR
WHERE A~TRFST LIKE 'L%'
AND A~BET01 > 0.
SORT INT_PETROL3.
DELETE ADJACENT DUPLICATES FROM INT_PETROL3.
REFRESH INT_PETROL1.
LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport
employee name
CONCATENATE INT_PETROL2-VORNA INT_PETROL2-NACHN INTO
INT_PETROL2-NAME SEPARATED BY SPACE.
MODIFY INT_PETROL3 FROM INT_PETROL2 TRANSPORTING NAME.
ENDLOOP.
PERFORM GET_VALUE. "TO CONVERT THE FIRST SCREEN PERNR INTO
NUMBER FORMATE
LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport
one
table to another table
READ TABLE EMPNO1 WITH KEY PERNR = INT_PETROL2-PERNR.
IF SY-SUBRC <> 0.
INT_PETROL-PERNR = INT_PETROL2-PERNR.
INT_PETROL-TRFST = INT_PETROL2-TRFST.
INT_PETROL-NAME = INT_PETROL2-NAME.
APPEND INT_PETROL TO INT_PETROL1.
ENDIF.
ENDLOOP.
PERFORM CAL_ALLOWANCE.
ENDIF. " OF P_RATE > 0
DIS_FLAG = 1.
ENDIF. " OF CURRENT PERIOD CHECK.
ENDIF. " OF CHECK DISPLAY.
*----BDC
IF P_UPLOAD = 'X'.
IF PNPTIMRA = 'X'. "CHECK OTHER PERIOD CHECKED
MESSAGE I455(0) WITH 'Petrol Allowance cannot be uploaded'.
LEAVE SCREEN.
ENDIF.
IF P_RATE > 0.
IF P_RATE > 0 OR P_RATE = 0.
IF PNPTIMR9 = 'X'. "CHECK TO SEE CURRENT PERIOD SELECTED
WA_PET_ALLOWANCE-BEGDA = PN-BEGDA.
WA_PET_ALLOWANCE-ENDDA = PN-ENDDA.
WA_PET_ALLOWANCE-RATE = P_RATE.
WA_PET_ALLOWANCE-CURR = 'INR'.
INSERT INTO ZBPETROL_ALL VALUES WA_PET_ALLOWANCE.
SELECT A~PERNR A~TRFST B~VORNA B~NACHN
INTO CORRESPONDING FIELDS OF TABLE INT_PETROL3
FROM PA0008 AS A
INNER JOIN PA0002 AS B ON B~PERNR = A~PERNR
WHERE A~TRFST IN ('L1' , 'L2' , 'L3')
AND A~BET01 > 0.
SORT INT_PETROL3.
DELETE ADJACENT DUPLICATES FROM INT_PETROL3.
REFRESH INT_PETROL1.
LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport
employee name
CONCATENATE INT_PETROL2-VORNA INT_PETROL2-NACHN INTO
INT_PETROL2-NAME SEPARATED BY SPACE.
MODIFY INT_PETROL3 FROM INT_PETROL2 TRANSPORTING NAME.
ENDLOOP.
PERFORM GET_VALUE. "TO CONVERT THE FIRST SCREEN PERNR INTO
NUMBER FORMATE
LOOP AT INT_PETROL3 INTO INT_PETROL2. "loop to transport
one
table to another table
READ TABLE EMPNO1 WITH KEY PERNR = INT_PETROL2-PERNR.
IF SY-SUBRC <> 0.
INT_PETROL-PERNR = INT_PETROL2-PERNR.
INT_PETROL-TRFST = INT_PETROL2-TRFST.
INT_PETROL-NAME = INT_PETROL2-NAME.
APPEND INT_PETROL TO INT_PETROL1.
ENDIF.
ENDLOOP.
PERFORM CAL_ALLOWANCE.
DIS_FLAG = 1.
SORT INT_PETROL1.
LOOP AT INT_PETROL1.
MOVE: INT_PETROL1-PERNR TO INT_0015-PERNR,
INT_PETROL1-PALLOWANCE TO INT_0015-BETRG.
CONCATENATE PN-ENDDA6(2) PN-ENDDA4(2) PN-ENDDA+0(4) INTO
INT_0015-BEGDA SEPARATED BY '.'.
APPEND INT_0015.
CLEAR INT_0015.
ENDLOOP.
LOOP AT INT_0015.
PERFORM F_BDCDATA.
IF P_FG = 'X'.
CALL TRANSACTION 'PA30' USING BDCDATA MODE 'A' UPDATE 'S'.
ELSE.
CALL TRANSACTION 'PA30' USING BDCDATA MODE 'N' UPDATE 'S'.
ENDIF.
*-- Handling Error records.
IF SY-SUBRC <> 0.
*-- Handling Error Messages
PERFORM ERROR_MSG.
MOVE-CORRESPONDING INT_0015 TO E_INT_0015.
APPEND E_INT_0015.
CLEAR E_INT_0015.
ENDIF.
REFRESH BDCDATA.
ENDLOOP.
*-- Downloading Error Records.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = 'C:\Errors.Txt'
FILETYPE = 'ASC'
TABLES
DATA_TAB = E_INT_0015.
*-- Downloading Error Messages.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = 'C:\Err_Msg.Txt'
FILETYPE = 'ASC'
TABLES
DATA_TAB = MSG.
ENDIF. " FOR CURRENT PERIOD
ENDIF.
ELSE.
MESSAGE I455(0) WITH 'Enter Petrol Rate'.
LEAVE TO SCREEN 0.
ENDIF. " FOR PETROL RATE
ENDIF. " FOR UPLOAD
IF DIS_FLAG = 1.
INT_LAYOUT-SUBTOTALS_TEXT = TEXT-004.
INT_LAYOUT-TOTALS_TEXT = TEXT-004.
INT_LAYOUT-ZEBRA = 'X'.
PERFORM FILL_FIELDCAT.
PERFORM GET_EVENTS_ALV.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_CALLBACK_PROGRAM = WS_REPID
IS_LAYOUT = INT_LAYOUT
IT_FIELDCAT = INT_FIELDCAT[]
I_DEFAULT = 'X'
I_SAVE = 'X'
IT_EVENTS = INT_EVENTS
TABLES
T_OUTTAB = INT_PETROL1
EXCEPTIONS
PROGRAM_ERROR = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
*& Form GET_VALUE
text
FORM GET_VALUE.
GET PARAMETER ID: 'NUM' FIELD TEMP_NUM.
IF TEMP_NUM <> ''.
LEN1 = STRLEN( TEMP_NUM ).
PERFORM GET_PERNR.
APPEND TEMP_NUM TO EMPNO.
LOOP AT EMPNO INTO EMP_NO.
CALL FUNCTION 'CHECK_AND_CONVERT_NUMERICS'
EXPORTING
DFELD = ' '
DMZEI = ','
DTYPE = 'STRING'
DYPNO = ' '
EFELD = EMP_NO-PERNR
FNAME = ' '
PROGR = ' '
IMP_DECIMALS = '0'
IMPORTING
ERROR =
IFELD = EMP_NO1-PERNR
MESSG = ERR
MSGLN =
IF ( ERR-MSGID = '' ).
APPEND EMP_NO1 TO EMPNO1.
CLEAR EMP_NO1-PERNR.
ELSE.
MESSAGE I455(0) WITH 'Could not convert employee number'.
LEAVE TO SCREEN 0.
ENDIF.
ENDLOOP.
ENDIF.
ENDFORM. "GET_VALUE
*& Form GET_PERNR
text
FORM GET_PERNR.
SPLIT TEMP_NUM AT ',' INTO EMP_NO TEMP_NUM.
APPEND EMP_NO TO EMPNO.
CLEAR EMP_NO.
SEARCH TEMP_NUM FOR ','.
IF SY-SUBRC = 0.
PERFORM GET_PERNR.
ENDIF.
ENDFORM. "GET_PERNR
*& Form ERROR_MSG
text
--> p1 text
<-- p2 text
FORM ERROR_MSG.
IF SY-SUBRC <> 0.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
LANG = SY-LANGU
IMPORTING
MSG = MSG-MSG1.
APPEND MSG.
CLEAR MSG.
ENDIF.
ENDFORM. "ERROR_MSG
*& Form F_BDCDATA
text
FORM F_BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMP50A' '1000'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=INS'.
PERFORM BDC_FIELD USING 'RP50G-PERNR'
INT_0015-PERNR.
PERFORM BDC_FIELD USING 'RP50G-TIMR6'
'X'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'RP50G-CHOIC'.
PERFORM BDC_FIELD USING 'RP50G-CHOIC'
'0015'.
PERFORM BDC_DYNPRO USING 'MP001500' '2000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'Q0015-BETRG'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'P0015-LGART'
'0077'. "CHANGE WAGE TYPE HERE
ALSO
PERFORM BDC_FIELD USING 'Q0015-BETRG'
INT_0015-BETRG.
PERFORM BDC_FIELD USING 'P0015-WAERS'
'INR'.
PERFORM BDC_FIELD USING 'P0015-BEGDA'
INT_0015-BEGDA.
PERFORM BDC_DYNPRO USING 'MP001500' '2000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'P0015-LGART'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=UPD'.
PERFORM BDC_FIELD USING 'P0015-LGART'
'0077'. "CHANGE WAGE TYPE HERE
ALSO
PERFORM BDC_FIELD USING 'Q0015-BETRG'
INT_0015-BETRG.
PERFORM BDC_FIELD USING 'P0015-WAERS'
'INR'.
PERFORM BDC_FIELD USING 'P0015-BEGDA'
INT_0015-BEGDA.
ENDFORM. "F_BDCDATA
*& Form BDC_DYNPRO
text
-->P_0732 text
-->P_0733 text
FORM BDC_DYNPRO USING VALUE(P_0732) TYPE C
VALUE(P_0733) TYPE C.
CLEAR BDCDATA.
BDCDATA-PROGRAM = P_0732.
BDCDATA-DYNPRO = P_0733.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. " BDC_DYNPRO
*& Form BDC_FIELD
text
-->P_0755 text
-->P_0756 text
FORM BDC_FIELD USING VALUE(P_0755) TYPE C
VALUE(P_0756) TYPE C.
CLEAR BDCDATA.
BDCDATA-FNAM = P_0755.
BDCDATA-FVAL = P_0756.
APPEND BDCDATA.
ENDFORM. " BDC_FIELD
*& Form CAL_ALLOWANCE
text
FORM CAL_ALLOWANCE.
LOOP AT INT_PETROL1 INTO INT_PETROL.
IF INT_PETROL-TRFST = 'L1'.
INT_PETROL-PALLOWANCE = P_RATE * 100. "CHANGE TO SELECT WHEN
DISPLAY
ELSEIF INT_PETROL-TRFST = 'L2'.
INT_PETROL-PALLOWANCE = P_RATE * 150.
ELSEIF INT_PETROL-TRFST = 'L3'.
INT_PETROL-PALLOWANCE = P_RATE * 150.
ELSEIF INT_PETROL-TRFST = 'L4'.
INT_PETROL-PALLOWANCE = P_RATE * 200.
ELSEIF INT_PETROL-TRFST = 'L5'.
INT_PETROL-PALLOWANCE = P_RATE * 250.
ENDIF.
MODIFY INT_PETROL1 FROM INT_PETROL TRANSPORTING PALLOWANCE.
ENDLOOP.
ENDFORM. "CAL_ALLOWANCE
*& Form FILL_FIELDCAT
text
--> p1 text
<-- p2 text
FORM FILL_FIELDCAT.
INT_FIELDCAT-COL_POS = 1.
INT_FIELDCAT-TABNAME = 'INT_PETROL1'.
INT_FIELDCAT-FIELDNAME = 'PERNR'.
INT_FIELDCAT-SELTEXT_L = TEXT-005.
INT_FIELDCAT-OUTPUTLEN = 10.
INT_FIELDCAT-KEY = 'X'.
APPEND INT_FIELDCAT.
CLEAR INT_FIELDCAT.
INT_FIELDCAT-COL_POS = 2.
INT_FIELDCAT-TABNAME = 'INT_PETROL1'.
INT_FIELDCAT-FIELDNAME = 'NAME'.
INT_FIELDCAT-SELTEXT_L = TEXT-006.
INT_FIELDCAT-OUTPUTLEN = 25.
INT_FIELDCAT-KEY = 'X'.
APPEND INT_FIELDCAT.
CLEAR INT_FIELDCAT.
INT_FIELDCAT-COL_POS = 3.
INT_FIELDCAT-TABNAME = 'INT_PETROL1'.
INT_FIELDCAT-FIELDNAME = 'TRFST'.
INT_FIELDCAT-SELTEXT_L = TEXT-007.
INT_FIELDCAT-OUTPUTLEN = 5.
INT_FIELDCAT-KEY = 'X'.
APPEND INT_FIELDCAT.
CLEAR INT_FIELDCAT.
INT_FIELDCAT-COL_POS = 4.
INT_FIELDCAT-TABNAME = 'INT_PETROL1'.
INT_FIELDCAT-FIELDNAME = 'PALLOWANCE'.
INT_FIELDCAT-SELTEXT_L = TEXT-008.
INT_FIELDCAT-OUTPUTLEN = 16.
INT_FIELDCAT-KEY = 'X'.
APPEND INT_FIELDCAT.
CLEAR INT_FIELDCAT.
ENDFORM. " FILL_FIELDCAT
*& Form GET_EVENTS_ALV
text
--> p1 text
<-- p2 text
FORM GET_EVENTS_ALV.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 1
IMPORTING
ET_EVENTS = INT_EVENTS[]
EXCEPTIONS
LIST_TYPE_WRONG = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
READ TABLE INT_EVENTS INTO WS_EVENTS WITH KEY NAME =
SLIS_EV_TOP_OF_PAGE.
IF SY-SUBRC = 0.
WS_EVENTS-FORM = 'TOP'.
MODIFY INT_EVENTS FROM WS_EVENTS INDEX SY-TABIX.
ENDIF.
ENDFORM. " GET_EVENTS_ALV
*& Form TOP-OF-PAGE
text
FORM TOP.
*-- ALV Declarations
DATA: WS_HEADER TYPE SLIS_T_LISTHEADER,
WA_HEADER TYPE SLIS_LISTHEADER.
*-- Title
WA_HEADER-TYP = 'H'.
WA_HEADER-INFO = TEXT-009.
APPEND WA_HEADER TO WS_HEADER.
CLEAR WA_HEADER.
WA_HEADER-TYP = 'H'.
WA_HEADER-INFO = TITLE.
APPEND WA_HEADER TO WS_HEADER.
CLEAR WA_HEADER.
WA_HEADER-TYP = 'H'.
WA_HEADER-INFO = ' '.
APPEND WA_HEADER TO WS_HEADER.
CLEAR WA_HEADER.
WA_HEADER-TYP = 'H'.
WA_HEADER-INFO = ' '.
APPEND WA_HEADER TO WS_HEADER.
CLEAR WA_HEADER.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
IT_LIST_COMMENTARY = WS_HEADER
I_LOGO = 'LOGO'.
ENDFORM. "TOP-OF-PAGE
You can see some Standard Program examples in this one ...
http://www.sapdevelopment.co.uk/programs/programshr.htm
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?Offer=SAlgwn12604#Certification
http://www.erpgenie.com/faq/hr.htm.
http://www.planetsap.com/hr_abap_main_page.htm
http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/HR_tutorial.html
Check these links -
http://help.sap.com/saphelp_erp2005vp/helpdata/en/8a/6a46347969e94be10000009b38f83b/frameset.htm
Re: INFOTYPE
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPD/PAPD.pdf
http://www.sap-img.com/sap-hr.htm
HR abap
Go through the SAp doc for HR programming and start doing.
Refer this link
http://www.sapdevelopment.co.uk/fmodules/fmshr.htm
http://www.sapdevelopment.co.uk/hr/hrhome.htm
http://www.sapdevelopment.co.uk/hr/hrhome.htm
See:
http://help.sap.com/saphelp_46c/helpdata/en/4f/d5268a575e11d189270000e8322f96/content.htm
sites regarding hr-abap:
http://www.sapdevelopment.co.uk/hr/hrhome.htm
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPA/PAPA.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PAPD/PAPD.pdf
http://help.sap.com/printdocu/core/Print46c/en/data/pdf/PYINT/PYINT_BASICS.pdf
http://www.atomhr.com/training/Technical_Topics_in_HR.htm
http://www.planetsap.com/hr_abap_main_page.htm
You can see some Standard Program examples in this one ...
http://www.sapdevelopment.co.uk/programs/programshr.htm
http://searchsap.techtarget.com/originalContent/0,289142,sid21_gci1030179,00.html?Offer=SAlgwn12604#Certification
http://www.erpgenie.com/faq/hr.htm.
http://www.planetsap.com/hr_abap_main_page.htm
http://www.sapbrain.com/TUTORIALS/FUNCTIONAL/HR_tutorial.html
These are the FAQ's that might helps you as well.
http://www.sap-img.com/human/hr-faq.htm
http://www.sapgenie.com/faq/hr.htm
http://www.planetsap.com/hr_abap_main_page.htm
http://www.atomhr.com/library_full.htm
HR Long texts Upload
Look at the below link
BDC - hr maintain text
Please refer to the following sample program for accessing PCH LDB.
For concept to start with refer url:
http://www.sap-press.de/download/dateien/860/sappress_mysap_hr_technical_principles2.pdf -
Need help in creating Knowledge module to aggregrate source data.
Hi Guys,
I am new to ODI and I am trying to create a Knowledge module. I went through the docs relating to Knowledge modules and APIs, so hopefully did my home work, I still find writing KM to be very challenging for the scenario, I have.
The following is my scenario.
I have two tables Employee and Department. Employee is the source and Department is the target. I need to sum salaries of all the employees belonging to a given department. And then insert the data into Department table.
Structure of the tables is as follows:
Employee(Source Table name)
Employee_id
Salary
Dept_id
Department(Target table name)
id
total_salary
Both target and source are on the same server. The user of this KM would drag and drop both source and target tables into interface and then map the columns. In the above case, Dept_id to id and salary to total_salary and then use this IKM. And off-course the user would indicate what columns would be aggregated on and what would be used as group by. One way to tag that, would be to use those UD1,UD2 tags in target column properties. (If there is another way to tag a column to indicate a column to be used for aggregation and a given column to be used in group by during run time in source, please let me know)
I choose to write IKM for this.
The challenging part is that I am having hard time figuring out the columns of source table as to what column should be used as group by and what column to be aggregated on. Since the tags are defined on Target columns and not on source columns. So have to figure out the appropriate columns through the mapping at run time.
The following is what I am planning to write in (Insert new rows ) command. And the part where I need help is how to compose select statement.
iinsert into <%=odiRef.getTable("L","TARG_NAME","A")%>
<%=odiRef.getColList("", "[COL_NAME]", ",\n\t", "", "((INS and !TRG) and REW)")%>
<%=odiRef.getColList(",", "[COL_NAME]", ",\n\t", "", "((INS and TRG) and REW)")%>
Select
source.column1,sum(source.column2) from <%=odiRef.getFrom()%> GROUP BY source.column1
Thanks.I did try as per your advise.
Filter is not making a difference. Irrespective of me adding a filter or not, ODI generates a sql that has GROUP BY , just by looking at SUM(SALARY).
Coming back to the main issue, this does do what I wanted to do. I was planning on using a custom KM. But I guess, this is as good as custom KM, since the work done in an interface (assuming a custom KM exists) by going through either route is the same, so I can live with this approach.
Thanks for the help.
Maybe you are looking for
-
For good quality sound in iPod.
Hello: I'd like to know which way is better to keep a good quality on the iPod. Many people goes for the mp3, OK, compatible with a lot of devices in the world, a lot of songs in a CD or card, easy way, but WHAT ABOUT THE QUALITY??? AAC at 128 is goo
-
Hi at all, we start the automatic payment transation F110. We like that the user can only change the bank determination Ranking Order if it needed. How we can do that ? we don't like to give the user the authorisation to change all customizing in FBZ
-
Report of Released Purchase Orders
I am looking for a report that will give me all purchase orders that was released, and the person that released it. Thank you.
-
Library Receipts Trash??
Stupid question! What purpose do the "Receipts" in the Library serve?. Can they be deleted in order to save space. If so what is the catch? Any help would be appreciated. Maxon.
-
Using event cue points to add buttons
How do I go about having buttons display in an external flv file? I know I can establish event cue points with Adobe media encoder. I want the the buttons and graphics to appear and stay on the screen, even though the external flv loops. Its been