Date Difference for multiple dates
I have a field called 'LOG_COMMENTS' in a table named T_PRODUCTION_WORK_LOG.
In the 'LOG_COMMENTS' whenever a request is placed on hold comments are added by the application, such as 'Status changed from Open to On Hold' and
'Status changed from On Hold to Open' along with a 'LOG_DATESTAMP' field. A request can go on and off Hold multiple times, how do I detrimine the days a request is On Hold?
I know I can use the sql function DATEDIFF ( datepart , startdate , enddate ), but how do I account for the possiblity that the request was On Hold more than once? And how would I get LOG_DATESTAMP' times for 'LOG_COMMENTS'
that contain
'Status changed from Open to On Hold' and 'Status changed from On Hold to Open' ?
declare @Aid1426_sampleData TABLE (
[LOG_ID] [int] NULL,
[LOG_DATESTAMP] [datetime] NULL,
[LOG_UID] [int] NULL,
[LOG_COMMENTS] [nvarchar](255) NULL
INSERT @Aid1426_sampleData ([LOG_ID], [LOG_DATESTAMP], [LOG_UID], [LOG_COMMENTS]) VALUES (1530253, CAST(0x0000A2FB00A998CC AS DateTime), 317690, N'Status changed from On Hold to Open. ')
INSERT @Aid1426_sampleData ([LOG_ID], [LOG_DATESTAMP], [LOG_UID], [LOG_COMMENTS]) VALUES (1531819, CAST(0x0000A30200D25424 AS DateTime), 317690, N'Status changed from Open to On Hold. ')
INSERT @Aid1426_sampleData ([LOG_ID], [LOG_DATESTAMP], [LOG_UID], [LOG_COMMENTS]) VALUES (1511894, CAST(0x0000A29600788C28 AS DateTime), 317690, N'Status changed from Open to On Hold.')
INSERT @Aid1426_sampleData ([LOG_ID], [LOG_DATESTAMP], [LOG_UID], [LOG_COMMENTS]) VALUES (1536836, CAST(0x0000A31D00D2D188 AS DateTime), 317690, N'Status changed from On Hold to Open.')
declare @nowWithStatusColumns table (log_id int, log_datestamp datetime, log_uid int, log_comments varchar(255), new_status varchar(20), old_status varchar(20))
insert into @nowWithStatusColumns
select *,
case
when left(log_comments,20) = 'Status changed from ' then ltrim(left(right(log_comments,len(log_comments)-19),charindex('to',right(log_comments,len(log_comments)-19))-1))
end as new_status,
case
when left(log_comments,20) = 'Status changed from ' then ltrim(replace(reverse(left(reverse(log_comments),charindex(' ot',reverse(log_comments)))),'.',''))
end as old_status
from @Aid1426_sampleData
select *, datediff(hour, n2.log_datestamp, n1.log_datestamp)
from @nowWithStatusColumns n1
left outer join @nowWithStatusColumns n2
on n1.old_status = n2.new_status
and n1.log_uid = n2.log_uid
and n2.log_datestamp = (select min(log_datestamp) from @nowWithStatusColumns where log_datestamp < n1.log_datestamp and new_status = n1.old_status and log_uid = n1.log_uid)
order by n1.log_datestamp
select n1.log_uid, sum(datediff(hour, n2.log_datestamp, n1.log_datestamp)) as hours
from @nowWithStatusColumns n1
left outer join @nowWithStatusColumns n2
on n1.old_status = n2.new_status
and n1.log_uid = n2.log_uid
and n2.log_datestamp = (select min(log_datestamp) from @nowWithStatusColumns where log_datestamp < n1.log_datestamp and new_status = n1.old_status and log_uid = n1.log_uid)
where n1.new_status = 'On Hold'
group by n1.log_uid
Give this a shot.
I took the liberty of creating new/old status columns to make it easier.
Thanks Patrick, this is very close to what I need, but it is also counting the hours between when the request
comments were changed from 'Status changed from On Hold to Open' on 2014-03-27 10:17:29 -and-
'Status changed from Open to On Hold' on 2014-04-03 12:45:47 which is 170 hours. Anyway you could remove that?
Similar Messages
-
Manual Bank Reconciliation Statement for multiple dates
How can we enter ONE manual BRS for multiple posting dates?
Below is the scenario for which we need multiple posting dates in one bank statement.
We receive and enter in SAP the Bank reconciliation statement at the end of every month. The system considers Posting date as end of the month ( the entry date or a single date what we enter). The transactions however belongs to many dates of the month. So while posting the bank statement system considers only one posting date and picks up the exchange rates of one date ( that is the posting date). It results in undesired exchange rate differences.
To elaborate more please check the following example:
1. Incoming Payment on 01-12-09 in USD (USD = Foreign Currency, AED = Local Currency ) with Exchage rate 3.8.
2. Incoming Payment on 06-12-09 in USD with Exchange rate 3.9
3. Incoming Payment on 09-1209 in USD with Exchange Rate 3.7
If all of the above transactions are posted at one posting date the system picks up only one exchange rate at the posting date. However the system should pick up the respective exchange rates on the transaction date.
I hope I am able to communicate properly.
Waiting for your expert opinion forks.
AmirHow can we enter ONE manual BRS for multiple posting dates?
Below is the scenario for which we need multiple posting dates in one bank statement.
We receive and enter in SAP the Bank reconciliation statement at the end of every month. The system considers Posting date as end of the month ( the entry date or a single date what we enter). The transactions however belongs to many dates of the month. So while posting the bank statement system considers only one posting date and picks up the exchange rates of one date ( that is the posting date). It results in undesired exchange rate differences.
To elaborate more please check the following example:
1. Incoming Payment on 01-12-09 in USD (USD = Foreign Currency, AED = Local Currency ) with Exchage rate 3.8.
2. Incoming Payment on 06-12-09 in USD with Exchange rate 3.9
3. Incoming Payment on 09-1209 in USD with Exchange Rate 3.7
If all of the above transactions are posted at one posting date the system picks up only one exchange rate at the posting date. However the system should pick up the respective exchange rates on the transaction date.
I hope I am able to communicate properly.
Waiting for your expert opinion forks.
Amir -
Legacy asset data upload for multiple line items
Hello
Legacy asset data upload for multiple line items- for example Building is an asset which is having different line items for purchasing of land,constructaion or renovation etc.........now to upload the legacy data what should be consider...only one line item for Building or numbers of line item.........
which one is the proper way to do this exercise?
regardsHi,
It completely depends on clients requirement. but following are few approaches:
1. Define Building as Asset Class.
2. Create a Building at specific location at asset code and
3. create asset sub numbers for other components.
other approach would be:
1. Define Building as Asset Class.
2. Create a Building at specific location at asset code and
3. create further asset codes for other components where field description will be used for relating each other.
Regards,
Sayujya -
Installing data quality management for sap for multiple sap system
Hello folks,
I have an Requirement where i need to install data quality management for sap in multiple sap system.
I have installed it successfully for one system .
here my data services is installed in one server with rfc server as windows services in same server.
i have done the required configuration in ecc side.
my question is how do i use same data services jobs which are configured as real time services for both my sap connection?
in simple terms how do i installed dqm for multiple sap system having single data services server.
thanks,
Shubhangi.Hi Vishal,
Regarding DQM Please refer the below Link.
Links:
http://scn.sap.com/community/data-services/blog/2013/07/18/i-installed-dqm-for-sap-you-can-too
or you can also refer below SNotes given by SAP:
1732816 - How to manually import DQM ATL files correctly after failed install
Note 1732816 - DQM Adapter Dataflow installer fails on Data Services 4.1
Links:
https://service.sap.com/sap/support/notes/1732816
Thanks,
Daya -
Reporting / inputting data for multiple GAAPs
In the past we would setup BPC to include reporting for multiple GAAPs (like IFRS, USGAAP and a local GAAP) by means of adding an extra datasource where you would be able to do remapping some of your entries from one GAAP to another.
SO for instance if you had pensions in IFRS on your IFRS pension account, you would then, in the USGAAP datasource that sits above TOTAL IFRS, remap that amount to the USGAAP account in this way leaving all others the same but just having the USGAAP changes reflected in a total datasource that includes all of your input according to IFRS plus the remaps for USGAAP to give you USGAAP in an alternative hierarchy for exmaple.
That is how it was done, but i was wondering if there were any other ideas, expecvially if you have more than 2 or 3 GAAPs
LEt me know if you have other ideas,
best regards,
EdwinHello - Using datasource would be a solution based on dimensionality u2013 this makes sense to me. Other options with dimensionality may include duplicate accounts per GAAP. I think there many possible ways to use dimensionality to achieve thisu2026.creating new user dim, categories, and surely others.
Another option would be to look at modeling this in separate applications.
Maybe using one application as the base then writing to others via destination app/look up type functionality. You might consider handling different apps per GAAP in the ETL phase. In modeling I would be hesitant to jump towards separate applications unless the complexity and or data volumes warranted thisu2026..shoot for the most simple elegant design when possible.
So depending on the complexity of the business case (what type of ASSETS alone could lead to a longer requirement discussion) and the data volumes look decide on the dimensionality vs. application approach. I would start with dimensional design until my prototype forced me to consider something else.
Hope this helps.
Cheers -
DAQ_START FOR Multiple Channel Data
Hi dears ;
Normally we use Scan_start DAQ API to get multiple channel data but i want to get data using Daq_start for multiple channel
but i dnot want to use this api like Scan_start by giving its second parameter -1 for all channels
i want to use this api in seperate thread for each channel and i want to get the data from 8 channels simultaneously using this api.
plz send code in vc++.if the solution is not possible then send me alternate way.
Detail:
There are 8 threads they are running simultanously and every thread want to acquire data from their corresponding channel i.e thread one from channel one thread 2 from channel 2 and son...all the threads goes at the same to acquire the data and come back after one minute and this process continue untill quit the application
please tell is possible or an altenate solution for this requirement.I donot use Scan_start to get the data of all the channels in one buffer i want to get the data of each channel in its own buffer.
please tell as soon as possible
thanks
ajmalHello ajmal,
There are a couple reasons why your idea probably won't work. First, it looks like you are using Traditional (legacy) NI-DAQ functions. The Traditional NI-DAQ driver is not multi-thread capable. Meaning that only one thread will be able to access the driver at a time. Also, it is not possible with Traditional NI-DAQ or NI-DAQmx to have multiple analog input tasks running simultaneously. Is there a particular reason that you don't want to read all the channels in the same task and separate the array into a different sub-arrays for each channel?
-Alan A. -
Because I want to acquire the similar data for multiple times and then take an average to increase SNR, I add a while loop to the vi "niScope EX Multi-Device Configured Acquisition (TClk)". It works but it runs very slowly (about 1 sec for each iteration). I think I had put the while loop at a wrong position, which makes the vi run from the very beginning in each iteration. So I really want to know where should I put the while loop to improve the speed? I have attached all the vi and subvi.
Thanks very much.
Attachments:
Multi-Device External Clocking (TClk).vi 1166 KB
avgWfm.vi 15 KBDear Zainykhas,
Thank you for posting this to the discussion forums and for uploading some sample code. I took a lok at the issue you have been having, and it is unclear to me as to why you have placed two for loops around the original while loop. My understanding is that you want to use the original Sample.vi and want to execute this N times where N is the Max Freq divided by Interval so that you can scan for a range of frequencies.
Why not just put Sample.vi around one for loop and use the increment counter scaled by the interval to count up towards Max Freq and insert the desired Frequency into the cluster using Bundle By Name?
Kind Regards,
Robert Ward
Applications Engineer, NI
Attachments:
Modified - RW.vi 48 KB -
I have one apple ID for multiple devices in my family. I'd like to keep it that way for itunes/app purchases. I would like a simple step 1, step 2, step 3 response on what I need to do to separate all other features like imessage, contacts, emails, etc.
I have been reasearching how to do this on the internet, but I haven't found an easy explanation yet. My family is going crazy over each others imessages being sent to others in the family and not being able to use FaceTime because of conflicting email addresses. I have read that if each person gets their own iCloud account, this would work. However, I need to know what to do after I set everyone up with their own iCloud account. Do I make that the default email address to be contacted or can they still use their hotmail email addresses. Any help- with easy explanation- would be much appreciated!!We do this in my family now. We have one account for purchases, so it is used to share music and apps (I think that is in Settings/iTunes & App Stores). Each iDevice has this configured.
Then, each of us has our own iCloud account that is configured under Settings/iCloud. That then allows us to have our own Mail/Contacts/Calendars/Reminders/Safari Bookmarks/Notes/Passbook/Photo Stream/Documents & Data/Find My iPhone/and Backup. That Backup piece is pretty sweet and comes in handly if you replace your iDevice. You can just restore from it.
So we all share the Apple Store account but we all have our own iCloud accounts to keep the rest seperate or things like you mentioned are a nightmare.
In answer to what iCloud does for you: http://www.apple.com/icloud/features/
Think of it as an internet based ("cloud") area for all of those items listed in my response. What you need to remember is photo stream only maintans the last 1000 pictures so don't count it as a complete backup solution for your pictures. Even though I rarely sync with a computer these days, I do still try to sync my phone with iPhoto (I have an iMac) so that I have copies of all of my pictures. 1000 may not stretch as far as it sounds.
Message was edited by: Michael Pardee -
Use of LIKE in where clause of select statement for multiple records
Hi Experts,
I have a account number field which is uploaded from a file. Now this account numbers uploaded does not match fully with sap table account numbers but it contains all of the numbers provided in the file mostly in the upright positions.
For example in file we have account number as 2ARS1 while in sap table the value is 002ARS1.
And i want to fetch data from sap table based on account number uploaded. So, i am trying to use LIKE with for all entries but its not working as mentioned below but LIKE is not working with FOR ALL ENTRIES.
data : begin of t_dda occurs 0,
dda(19) type c,
end of t_dda.
data : begin of t_bukrs occurs 0,
bukrs type t012k-bukrs,
end of t_bukrs.
data : dda type t012k-bankn,
w_dda type t012k-bankn.
CONCATENATE '%'
'2ARS1'
INTO W_DDA.
MOVE W_DDA TO T_DDA-DDA.
APPEND T_DDA.
CLEAR T_DDA.
free t_bukrs.
SELECT BUKRS
FROM T012K
into TABLE t_bukrs
for all entries in t_dda
WHERE BANKN like t_dda-dda.
Can anybody suggest what should i use to get the data for multiple account numbers using one select statement only instead on using SELECT UP TO 1 ROWS in LOOP....ENDLOOP ?
Thanks in advance,
AkashHi,
yes, For All entries won't work for LIKE with '% '.
I think the other alternative is go for Native SQL by writing sub-query
sample code is here:
data: begin of i_mara occurs 0,
matnr like mara-matnr,
matkl like mara-matkl,
end of i_mara.
exec sql.
select matnr, matkl from mara where matnr in (select matnr from marc) and matnr like '%ma' into :i_mara
endexec.
loop at i_mara.
write:/ i_mara-matnr, i_mara-matkl.
endloop.
hope u got it.
regards
Mahesh
Edited by: Mahesh Reddy on Jan 21, 2009 2:32 PM -
[ADF Help] How to create a view for multiple tables
Hi,
I am using Jdeveloper 11G and ADF framework, and trying to create a view to update multiple tables.
ex:
Table A has these fields: ID, Name
Table B has these fields: ID, Address
A.ID and B.ID are primary keys.
B.ID has FK relationship with A.ID
(basically, these tables have one-to-one relation)
I want to create a view object, which contains these fields: B.ID (or A.ID), A.Name, B.Address.
So I can execute C,R,U,D for both tables.
I create these tables in DB, and create entity objects for these tables.
So there are 2 entity objects and 1 association.
Then I create a view object based on B and add fields of A into the view:
If the association is not a "Composition Association",
when I run the model ("Oracle Business Component Browser") and try to insert new data, fields of A can't edit.
If the association is a "Composition Association", and click the insert button, I will get
"oracle.jbo.InvalidOwnerException: JBO-25030: Failed to find or invalidate owning entity"
If I create a view object based on A and add filed of B into the view:
When I run the model and try to insert new data, fields of B can't edit, no matter the association is or is not a composition association.
So... how can I create a view for multiple tables correctly?
Thanks for any advices!
Here are some pictures about my problem, if there is any unclear point, please let me know.
http://leonjava.blogspot.com/2009_10_01_archive.html
(A is Prod, B is CpuSocket)
Edited by: user8093176 on Oct 25, 2009 12:29 AMHi Branislav,
Thanks, but the result is same ....
In the step 2 of creating view object, I can select entity objects to be added in to the view.
If I select A first, and then select B (the "Source Usage" of B is A), then finishing the wizards.
When I try to create a new record in the view, I can't edit any properties of B (those files are disabled).
If I select B first, and then select A in crating view object, the result is similar ...
Thanks for any further suggestion.
Leon -
Balance Confirmation Report for multiple vendors
Hi all,
I have developed report in FI which gives details about opening balance,fiscal year, document number, posting date and amount in the output.In selection screen I am passing single values of fiscal year(GJAHR), vendor(LIFNR) and company code(BUKLRS). This report is working fine for single vendor but now I need to change it for multiple vendors. I tried but not getting desired result in the output.
Following is code for single vendor in selection screen.
SORT t_bsikbsak BY bukrs belnr gjahr buzei.
LOOP AT t_bsikbsak.
t_pre_bal-netpr = t_bsikbsak-dmbtr.
t_pre_bal-sgtxt = 'Opening Balance'.
IF t_bsikbsak-shkzg EQ 'H'.
t_pre_bal-netpr = t_pre_bal-netpr * -1.
ENDIF.
COLLECT t_pre_bal.
ENDLOOP.
LOOP AT t_pre_bal.
itab-netpr = t_pre_bal-netpr.
itab-sgtxt = t_pre_bal-sgtxt.
APPEND itab.
ENDLOOP.
SORT t_bseg BY bukrs belnr gjahr buzei.
CLEAR itab.
LOOP AT t_bseg.
ON CHANGE OF t_bseg-bukrs OR t_bseg-belnr OR t_bseg-gjahr.
READ TABLE t_bkpf WITH KEY bukrs = t_bseg-bukrs
belnr = t_bseg-belnr
gjahr = t_bseg-gjahr.
IF sy-subrc IS INITIAL.
itab-budat = t_bkpf-budat.
itab-belnr = t_bkpf-belnr.
itab-gjahr = t_bkpf-gjahr.
ENDIF.
ENDON.
IF t_bseg-koart = 'K' AND t_bseg-lifnr = s_lifnr.
itab-sgtxt = t_bseg-sgtxt.
READ TABLE t_bsak WITH KEY bukrs = t_bseg-bukrs
belnr = t_bseg-belnr
gjahr = t_bseg-gjahr.
IF t_bseg-shkzg EQ 'H'.
t_bseg-dmbtr = t_bseg-dmbtr * -1.
ENDIF.
itab-netpr = itab-netpr + t_bseg-dmbtr.
ELSEIF t_bseg-hkont = '0044100040'. " G/L for INTEREST EXPENSES
itab-inamt = t_bseg-dmbtr.
ELSEIF t_bseg-hkont = '0012300060'. " G/L for TDS ON INTEREST
itab-tdamt = t_bseg-dmbtr.
ENDIF.
AT END OF bukrs.
append_flag = 'X'.
ENDAT.
AT END OF belnr.
append_flag = 'X'.
ENDAT.
AT END OF gjahr.
append_flag = 'X'.
ENDAT.
IF append_flag = 'X'.
APPEND itab.
CLEAR itab.
CLEAR : append_flag.
ENDIF.
ENDLOOP.
Closing Balance
LOOP AT itab.
t_temp-netpr = itab-netpr.
t_temp-sgtxt = 'Closing Balance'.
COLLECT t_temp.
ENDLOOP.
CLEAR itab.
LOOP AT t_temp.
itab-netpr = t_temp-netpr.
itab-sgtxt = 'Closing Balance'.
APPEND itab.
ENDLOOP.
Kindly provide some input how to do it for multiple vendors in same code otherwise provide some suggestions for new code.
Thanks in Advance.waiting for response.
Thanks & Regards,
Harshada PatilHi,
Thanks for quick response.Following is the structure of internal tables which I am using in this program.
TYPES : BEGIN OF ty_bsikbsak ,
bukrs TYPE bsik-bukrs,
lifnr TYPE bsik-lifnr,
umsks TYPE bsik-umsks,
umskz TYPE bsik-umskz,
augdt TYPE bsik-augdt,
augbl TYPE bsik-augbl,
gjahr TYPE bsik-gjahr,
belnr TYPE bsik-belnr,
buzei TYPE bsik-buzei,
zuonr TYPE bsik-zuonr,
shkzg TYPE bsik-shkzg,
dmbtr TYPE bsik-dmbtr,
END OF ty_bsikbsak.
TYPES : BEGIN OF ty_bkpf ,
bukrs TYPE bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr TYPE bkpf-gjahr,
bldat TYPE bkpf-bldat,
budat TYPE bkpf-budat,
stblg TYPE bkpf-stblg,
stjah TYPE bkpf-stjah,
END OF ty_bkpf.
TYPES : BEGIN OF ty_bseg ,
bukrs TYPE bseg-bukrs,
belnr TYPE bseg-belnr,
gjahr TYPE bseg-gjahr,
buzei TYPE bseg-buzei,
koart TYPE bseg-koart,
shkzg TYPE bseg-shkzg,
dmbtr TYPE bseg-dmbtr,
sgtxt TYPE bseg-sgtxt,
hkont TYPE bseg-hkont,
lifnr TYPE bseg-lifnr,
END OF ty_bseg.
DATA : t_bsik TYPE TABLE OF ty_bsikbsak WITH HEADER LINE.
DATA : t_bsak TYPE TABLE OF ty_bsikbsak WITH HEADER LINE.
DATA : t_bsikbsak TYPE TABLE OF ty_bsikbsak WITH HEADER LINE.
DATA : t_bkpf TYPE TABLE OF ty_bkpf WITH HEADER LINE.
DATA : t_bkpf2 TYPE TABLE OF ty_bkpf WITH HEADER LINE.
DATA : wa_bkpf TYPE ty_bkpf .
DATA : t_bseg TYPE TABLE OF ty_bseg WITH HEADER LINE.
DATA: BEGIN OF t_pre_bal OCCURS 0,
netpr TYPE bseg-dmbtr,
sgtxt TYPE bseg-sgtxt,
lifnr TYPE bseg-lifnr,
END OF t_pre_bal.
DATA: t_pre_bal1 LIKE t_pre_bal.
DATA: BEGIN OF t_temp OCCURS 0,
netpr TYPE bseg-dmbtr,
sgtxt TYPE bseg-sgtxt,
lifnr TYPE bseg-lifnr,
END OF t_temp.
DATA: BEGIN OF itab OCCURS 0,
gjahr LIKE bsik-gjahr,
belnr LIKE bsik-belnr,
budat LIKE bkpf-budat,
sgtxt LIKE bseg-sgtxt,
lifnr LIKE lfa1-lifnr,
netpr LIKE bseg-dmbtr, " Net Amount
inamt LIKE bseg-dmbtr, " Interest Amount
tdamt LIKE bseg-dmbtr, " TDS Amount
END OF itab.
RANGES: r_budat FOR bkpf-budat.
I have Included vendor(LIFNR) in all these structures.Now I am using three internal tables to hold opening balance, Closing balance and line item accounting documents from bseg table respectively.here, I need to collect all these three internal tables into one internal table according to vendor(LIFNR) with it's opening balance, accounting documents and closing balance. can anyone guide me through this so that I can collect all these three internal tables into single one.
Thanks & Regards,
Harshada Patil
Edited by: Harshada.up on Feb 15, 2011 9:33 AM -
Opening & closing balance for Multiple Vendors
Hi Friends,
I have an issue. This is my code.
*& Report ZVEN_OPEN_CLOSE_BAL
REPORT ZVEN_OPEN_CLOSE_BAL.
*& Report ZVEN_OPEN_CLOSE_BAL
TABLES:lfa1,bsik.
TYPES: BEGIN OF ty_bsik,
bukrs TYPE bsik-bukrs,
lifnr TYPE bsik-lifnr,
augbl TYPE bsik-augbl,
zuonr TYPE bsik-zuonr,
gjahr TYPE bsik-gjahr,
xblnr TYPE bsik-xblnr,
belnr TYPE bsik-belnr,
buzei TYPE bsik-buzei,
blart TYPE bsik-blart,
bldat TYPE bsik-bldat,
budat TYPE bsik-budat,
shkzg TYPE bsik-shkzg,
dmbtr TYPE bsik-dmbtr,
* bal TYPE char30,
sgtxt TYPE bsik-sgtxt,
END OF ty_bsik.
TYPES: BEGIN OF ty_bsak,
bukrs TYPE bsik-bukrs,
lifnr TYPE bsak-lifnr,
augbl TYPE bsak-augbl,
zuonr TYPE bsak-zuonr,
gjahr TYPE bsik-gjahr,
belnr TYPE bsak-belnr,
buzei TYPE bsik-buzei,
budat TYPE bsak-budat,
bldat TYPE bsak-bldat,
xblnr TYPE bsak-xblnr,
blart TYPE bsak-blart,
shkzg TYPE bsak-shkzg,
dmbtr TYPE bsik-dmbtr,
* shkzg1 TYPE bsak-shkzg,
sgtxt TYPE bsak-sgtxt,
END OF ty_bsak.
TYPES: BEGIN OF ty_lfc1,
lifnr TYPE lfc1-lifnr,
bukrs TYPE lfc1-bukrs,
gjahr TYPE lfc1-gjahr,
umsav TYPE lfc1-umsav,
END OF ty_lfc1.
TYPES: BEGIN OF ty_all,
lifnr TYPE bsik-lifnr,
zuonr TYPE bsik-zuonr,
xblnr TYPE bsik-xblnr,
belnr TYPE bsik-belnr,
hkont TYPE bseg-hkont,
blart TYPE bsik-blart,
ltext TYPE text20,
bldat TYPE bsik-bldat,
budat TYPE bsik-budat,
opbal TYPE p DECIMALS 2,
deb TYPE p DECIMALS 2 ,"bsik-dmbtr,
cre TYPE p DECIMALS 2,"bsik-dmbtr,
bal TYPE p DECIMALS 2,
augbl TYPE bsik-augbl,
sgtxt TYPE bsik-sgtxt,
END OF ty_all.
TYPE-POOLS: slis.
DATA: t_layout TYPE slis_layout_alv,
s_fieldtab TYPE slis_fieldcat_alv,
t_fieldtab TYPE slis_t_fieldcat_alv,
wa_header TYPE slis_listheader,
it_header TYPE slis_t_listheader.
DATA:it_bsik TYPE TABLE OF ty_bsik,
it_bsak TYPE TABLE OF ty_bsak,
it_all TYPE TABLE OF ty_all,
it_lfc1 TYPE TABLE OF ty_lfc1,
it_t003 TYPE TABLE OF t003t,
wa_bsik TYPE ty_bsik,
wa_bsak TYPE ty_bsak,
wa_all TYPE ty_all,
wa_lfc1 TYPE ty_lfc1,
wa_t003 TYPE t003t.
DATA: gt_fldcat TYPE slis_t_fieldcat_alv,
gs_fldcat TYPE slis_fieldcat_alv,
gs_layout TYPE slis_layout_alv,
gv_save TYPE c VALUE 'X'.
types :BEGIN OF ty_bseg,
BUKRS TYPE BUKRS,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
BUZEI TYPE BUZEI,
koart type koart,
HKONT TYPE HKONT,
END OF ty_bseg.
DATA: it_bseg type TABLE OF ty_bseg,
wa_bseg type ty_bseg.
data t_balence TYPE TABLE OF BAPI3008_3 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr,
s_bukrs FOR bsik-bukrs,
s_budat FOR bsik-budat OBLIGATORY.
PARAMETERS : p_gjahr TYPE bsik-gjahr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_data.
PERFORM process_data.
PERFORM display.
*& Form GET_DATA
* text
* --> p1 text
* <-- p2 text
FORM get_data .
break naidu.
SELECT bukrs
lifnr
augbl
zuonr
gjahr
xblnr
belnr
buzei
blart
bldat
budat
shkzg
dmbtr
sgtxt FROM bsik
INTO TABLE it_bsik
WHERE lifnr IN s_lifnr AND
bukrs IN s_bukrs AND
budat IN s_budat AND
gjahr = p_gjahr .
SELECT bukrs
lifnr
augbl
zuonr
gjahr
belnr
buzei
budat
bldat
xblnr
blart
shkzg
dmbtr
sgtxt FROM bsak
INTO TABLE it_bsak
WHERE lifnr IN s_lifnr AND
bukrs IN s_bukrs AND
budat IN s_budat AND
gjahr = p_gjahr .
if it_bsik is INITIAL and it_bsak is INITIAL.
*DATA v_date type budat.
*data :year(4),
* month(2),
* date(2).
* year = s_budat-low+0(4).
* date = s_budat-low+6(2).
* month = s_budat-low+4(2).
* month = month - 01.
*CONCATENATE year month date INTO v_date .
* SELECT bukrs
* lifnr
* augbl
* zuonr
* gjahr
* xblnr
* belnr
* buzei
* blart
* bldat
* budat
* shkzg
* dmbtr
* sgtxt FROM bsik
* INTO TABLE it_bsik
* WHERE lifnr IN s_lifnr AND
* bukrs in s_bukrs and
* budat eq v_date AND
* gjahr = p_gjahr .
* SELECT bukrs
* lifnr
* augbl
* zuonr
* gjahr
* belnr
* buzei
* budat
* bldat
* xblnr
* blart
* shkzg
* dmbtr
* sgtxt FROM bsak
* INTO TABLE it_bsak
* WHERE lifnr IN s_lifnr AND
* bukrs IN s_bukrs AND
* budat eq v_date AND
* gjahr = p_gjahr .
CALL FUNCTION 'BAPI_AP_ACC_GETKEYDATEBALANCE'
EXPORTING
companycode = s_bukrs-low
vendor = s_lifnr-low
keydate = s_budat-low
* BALANCESPGLI = ' '
* NOTEDITEMS = ' '
* IMPORTING
* RETURN =
TABLES
keybalance = t_balence
endif.
ENDFORM. " GET_DATA
*& Form PROCESS_DATA
* text
* --> p1 text
* <-- p2 text
FORM process_data .
DATA:v_bal TYPE netpr.
LOOP AT it_bsak INTO wa_bsak.
wa_bsik-bukrs = wa_bsak-bukrs.
wa_bsik-lifnr = wa_bsak-lifnr.
wa_bsik-augbl = wa_bsak-augbl.
wa_bsik-zuonr = wa_bsak-zuonr.
wa_bsik-gjahr = wa_bsak-gjahr.
wa_bsik-belnr = wa_bsak-belnr.
wa_bsik-buzei = wa_bsak-buzei.
wa_bsik-budat = wa_bsak-budat.
wa_bsik-bldat = wa_bsak-bldat.
wa_bsik-xblnr = wa_bsak-xblnr.
wa_bsik-blart = wa_bsak-blart.
wa_bsik-shkzg = wa_bsak-shkzg.
wa_bsik-dmbtr = wa_bsak-dmbtr.
wa_bsik-sgtxt = wa_bsak-sgtxt .
APPEND wa_bsik TO it_bsik.
CLEAR:wa_bsik.
ENDLOOP.
IF it_bsik IS NOT INITIAL .
SELECT lifnr bukrs gjahr umsav
FROM lfc1
INTO TABLE it_lfc1 FOR ALL ENTRIES IN it_bsik
WHERE
lifnr EQ it_bsik-lifnr AND
bukrs EQ it_bsik-bukrs AND
gjahr EQ it_bsik-gjahr.
SELECT * FROM t003t
INTO TABLE it_t003
FOR ALL ENTRIES IN it_bsik
WHERE blart = it_bsik-blart AND
spras = 'EN'.
*&Bindu........................................
select bukrs "Company Code
belnr "Document Number
gjahr "Fiscal Year
buzei "Line item
koart "Account Type
hkont "General Ledger Account
from bseg into TABLE it_bseg
FOR ALL ENTRIES IN it_bsik
WHERE belnr eq it_bsik-belnr and
bukrs in s_bukrs and
gjahr eq p_gjahr and
BUZEI eq it_bsik-buzei.
ENDIF.
SORT it_bsik BY lifnr.
DATA:c,
l_dmbtr type p DECIMALS 2.
DATA:v1(15),
v2(3).
DATA:v_umsav(18).
DATA v_fbal TYPE umsav.
LOOP AT it_bsik INTO wa_bsik.
READ TABLE it_lfc1 INTO wa_lfc1 WITH KEY lifnr = wa_bsik-lifnr
bukrs = wa_bsik-bukrs
gjahr = wa_bsik-gjahr.
if sy-subrc = 0.
at FIRST.
v_umsav = wa_lfc1-umsav.
SPLIT v_umsav at '.' INTO v1 v2.
wa_all-LTEXT = 'Opening Balance'.
IF v2+2(1) = '-'.
wa_all-cre = wa_lfc1-umsav.
ELSE.
wa_all-deb = wa_lfc1-umsav.
ENDIF.
wa_all-bal = wa_lfc1-umsav.
v_fbal = wa_all-bal.
APPEND wa_all to it_all.
CLEAR wa_all.
endat.
endif.
AT NEW lifnr.
c = 0.
ENDAT.
wa_all-lifnr = wa_bsik-lifnr.
wa_all-zuonr = wa_bsik-zuonr.
wa_all-xblnr = wa_bsik-xblnr.
wa_all-belnr = wa_bsik-belnr.
wa_all-blart = wa_bsik-blart.
wa_all-bldat = wa_bsik-bldat.
wa_all-budat = wa_bsik-budat.
*&Bindu............
READ TABLE it_bseg into wa_bseg WITH KEY belnr = wa_bsik-belnr
buzei = wa_bsik-buzei."Bindu.......
if sy-subrc = 0.
wa_all-hkont = wa_bseg-hkont. "Bindu.....
endif.
IF wa_bsik-shkzg = 'S'.
wa_all-deb = wa_bsik-dmbtr.
ELSEIF wa_bsik-shkzg = 'H'.
wa_all-cre = wa_bsik-dmbtr.
ENDIF.
READ TABLE it_t003 INTO wa_t003 WITH KEY blart = wa_bsik-blart.
IF sy-subrc = 0.
wa_all-ltext = wa_t003-ltext.
ENDIF.
* READ TABLE it_lfc1 INTO wa_lfc1 WITH KEY lifnr = wa_bsik-lifnr
* bukrs = wa_bsik-bukrs
* gjahr = wa_bsik-gjahr.
*break naidu.
IF sy-subrc = 0.
* IF c = 0.
* clear:l_dmbtr.
* wa_all-opbal = wa_lfc1-umsav.
* c = c + 1.
* IF wa_bsik-shkzg = 'S'.
* wa_all-bal = wa_all-opbal + wa_bsik-dmbtr.
* ELSEIF wa_bsik-shkzg = 'H'.
* wa_all-bal = wa_all-opbal - wa_bsik-dmbtr.
* ENDIF.
l_dmbtr = wa_all-bal.
* ELSE.
* wa_all-bal = l_dmbtr + wa_bsik-dmbtr.
* ELSEIF wa_bsik-shkzg = 'H'.
* wa_all-bal = l_dmbtr - wa_bsik-dmbtr.
* ENDIF.
ENDIF.
* IF wa_bsik-shkzg = 'S'.
* wa_all-bal = wa_all-opbal + wa_bsik-dmbtr.
* ELSEIF wa_bsik-shkzg = 'H'.
* wa_all-bal = wa_all-opbal - wa_bsik-dmbtr.
* ENDIF.
if v_fbal is NOT INITIAL.
wa_all-bal = v_fbal + wa_all-deb - wa_all-cre.
CLEAR:v_fbal.
else.
wa_all-bal = v_bal + wa_all-deb - wa_all-cre.
ENDIF.
wa_all-augbl = wa_bsik-augbl.
wa_all-sgtxt = wa_bsik-sgtxt.
*v_balance = wa_all-bal.
APPEND wa_all TO it_all.
v_bal = wa_all-bal.
CLEAR :wa_all.
*& Closing Balence.................
at last.
wa_all-LTEXT = 'Closing Balance'.
* IF .
wa_all-BAL = v_bal.
APPEND wa_all to it_all.
CLEAR wa_all.
* ENDIF.
endat.
ENDLOOP.
ENDFORM. " PROCESS_DATA
*& Form DISPLAY
* text
* --> p1 text
* <-- p2 text
FORM display .
DATA : ls_layout TYPE slis_layout_alv.
PERFORM create_fldcat.
ls_layout-expand_all = 'X'.
ls_layout-colwidth_optimize = 'X'.
ls_layout-expand_fieldname = 'X'.
ls_layout-zebra = 'X'.
if it_all is initial .
wa_all-LTEXT = 'Opening Balance'.
wa_all-bal = t_balence-LC_BAL.
wa_all-lifnr = s_lifnr-low.
APPEND wa_all to it_all.
ENDIF.
IF it_all IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = ls_layout
it_fieldcat = gt_fldcat
i_save = 'X'
TABLES
t_outtab = it_all[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ELSE.
MESSAGE 'There is no Data for the given selection screen' TYPE 'I' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " DISPLAY
*& Form CREATE_FLDCAT
* text
* --> p1 text
* <-- p2 text
FORM create_fldcat .
PERFORM : append_val USING 'LIFNR' 'IT_ALL' 'vendor' '' '' 'X' ' '.
PERFORM : append_val USING 'HKONT' 'IT_ALL' 'G/L Acc' '' '' 'X' ' '.
PERFORM : append_val USING 'ZUONR' 'IT_ALL' 'account' '' '' '' ''.
PERFORM : append_val USING 'XBLNR' 'IT_ALL' 'number' '' '' 'X' ''.
PERFORM : append_val USING 'BELNR' 'IT_ALL' 'ref no' '' '' 'X' ''.
PERFORM : append_val USING 'BLART' 'IT_ALL' 'type' '' '' 'X' ''.
PERFORM : append_val USING 'LTEXT' 'IT_ALL' 'type text' '' '' 'X' ''.
PERFORM : append_val USING 'BLDAT' 'IT_ALL' 'doc date' '' '' 'X' ''.
PERFORM : append_val USING 'BUDAT' 'IT_ALL' 'post date' '' '' 'X' ''.
PERFORM : append_val USING 'OPBAL' 'IT_ALL' 'op balance' '' '' '' ''.
PERFORM : append_val USING 'DEB' 'IT_ALL' 'debit' '' '' '' ''.
PERFORM : append_val USING 'CRE' 'IT_ALL' 'credit' '' '' '' ''.
PERFORM : append_val USING 'BAL' 'IT_ALL' 'balance' '' '' '' ''.
PERFORM : append_val USING 'AUGBL' 'IT_ALL' 'clr doc' '' '' 'X' ''.
PERFORM : append_val USING 'SGTXT' 'IT_ALL' 'text ' '' '' 'X' ''.
ENDFORM. " CREATE_FLDCAT
*& Form APPEND_VAL
* text
* -->P_0578 text
* -->P_0579 text
* -->P_TEXT_010 text
* -->P_0581 text
* -->P_0582 text
* -->P_0583 text
FORM append_val USING p_a
p_b
p_c
p_d
p_e
p_f
p_g.
CLEAR gs_fldcat.
gs_fldcat-fieldname = p_a.
gs_fldcat-tabname = p_b.
gs_fldcat-seltext_m = p_c.
gs_fldcat-qfieldname = p_d.
gs_fldcat-datatype = p_e.
gs_fldcat-no_zero = p_f.
gs_fldcat-do_sum = p_g.
APPEND gs_fldcat TO gt_fldcat.
ENDFORM. " APPEND_VAL
This is working for single vendor.
Now my problem is Opening & closing balance should be displayed for multiple vendors.
Please suggest me.
Thanks in advance.Hi Friends,
I have an issue. This is my code.
*& Report ZVEN_OPEN_CLOSE_BAL
REPORT ZVEN_OPEN_CLOSE_BAL.
*& Report ZVEN_OPEN_CLOSE_BAL
TABLES:lfa1,bsik.
TYPES: BEGIN OF ty_bsik,
bukrs TYPE bsik-bukrs,
lifnr TYPE bsik-lifnr,
augbl TYPE bsik-augbl,
zuonr TYPE bsik-zuonr,
gjahr TYPE bsik-gjahr,
xblnr TYPE bsik-xblnr,
belnr TYPE bsik-belnr,
buzei TYPE bsik-buzei,
blart TYPE bsik-blart,
bldat TYPE bsik-bldat,
budat TYPE bsik-budat,
shkzg TYPE bsik-shkzg,
dmbtr TYPE bsik-dmbtr,
* bal TYPE char30,
sgtxt TYPE bsik-sgtxt,
END OF ty_bsik.
TYPES: BEGIN OF ty_bsak,
bukrs TYPE bsik-bukrs,
lifnr TYPE bsak-lifnr,
augbl TYPE bsak-augbl,
zuonr TYPE bsak-zuonr,
gjahr TYPE bsik-gjahr,
belnr TYPE bsak-belnr,
buzei TYPE bsik-buzei,
budat TYPE bsak-budat,
bldat TYPE bsak-bldat,
xblnr TYPE bsak-xblnr,
blart TYPE bsak-blart,
shkzg TYPE bsak-shkzg,
dmbtr TYPE bsik-dmbtr,
* shkzg1 TYPE bsak-shkzg,
sgtxt TYPE bsak-sgtxt,
END OF ty_bsak.
TYPES: BEGIN OF ty_lfc1,
lifnr TYPE lfc1-lifnr,
bukrs TYPE lfc1-bukrs,
gjahr TYPE lfc1-gjahr,
umsav TYPE lfc1-umsav,
END OF ty_lfc1.
TYPES: BEGIN OF ty_all,
lifnr TYPE bsik-lifnr,
zuonr TYPE bsik-zuonr,
xblnr TYPE bsik-xblnr,
belnr TYPE bsik-belnr,
hkont TYPE bseg-hkont,
blart TYPE bsik-blart,
ltext TYPE text20,
bldat TYPE bsik-bldat,
budat TYPE bsik-budat,
opbal TYPE p DECIMALS 2,
deb TYPE p DECIMALS 2 ,"bsik-dmbtr,
cre TYPE p DECIMALS 2,"bsik-dmbtr,
bal TYPE p DECIMALS 2,
augbl TYPE bsik-augbl,
sgtxt TYPE bsik-sgtxt,
END OF ty_all.
TYPE-POOLS: slis.
DATA: t_layout TYPE slis_layout_alv,
s_fieldtab TYPE slis_fieldcat_alv,
t_fieldtab TYPE slis_t_fieldcat_alv,
wa_header TYPE slis_listheader,
it_header TYPE slis_t_listheader.
DATA:it_bsik TYPE TABLE OF ty_bsik,
it_bsak TYPE TABLE OF ty_bsak,
it_all TYPE TABLE OF ty_all,
it_lfc1 TYPE TABLE OF ty_lfc1,
it_t003 TYPE TABLE OF t003t,
wa_bsik TYPE ty_bsik,
wa_bsak TYPE ty_bsak,
wa_all TYPE ty_all,
wa_lfc1 TYPE ty_lfc1,
wa_t003 TYPE t003t.
DATA: gt_fldcat TYPE slis_t_fieldcat_alv,
gs_fldcat TYPE slis_fieldcat_alv,
gs_layout TYPE slis_layout_alv,
gv_save TYPE c VALUE 'X'.
types :BEGIN OF ty_bseg,
BUKRS TYPE BUKRS,
BELNR TYPE BELNR_D,
GJAHR TYPE GJAHR,
BUZEI TYPE BUZEI,
koart type koart,
HKONT TYPE HKONT,
END OF ty_bseg.
DATA: it_bseg type TABLE OF ty_bseg,
wa_bseg type ty_bseg.
data t_balence TYPE TABLE OF BAPI3008_3 WITH HEADER LINE.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_lifnr FOR lfa1-lifnr,
s_bukrs FOR bsik-bukrs,
s_budat FOR bsik-budat OBLIGATORY.
PARAMETERS : p_gjahr TYPE bsik-gjahr OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
START-OF-SELECTION.
PERFORM get_data.
PERFORM process_data.
PERFORM display.
*& Form GET_DATA
* text
* --> p1 text
* <-- p2 text
FORM get_data .
break naidu.
SELECT bukrs
lifnr
augbl
zuonr
gjahr
xblnr
belnr
buzei
blart
bldat
budat
shkzg
dmbtr
sgtxt FROM bsik
INTO TABLE it_bsik
WHERE lifnr IN s_lifnr AND
bukrs IN s_bukrs AND
budat IN s_budat AND
gjahr = p_gjahr .
SELECT bukrs
lifnr
augbl
zuonr
gjahr
belnr
buzei
budat
bldat
xblnr
blart
shkzg
dmbtr
sgtxt FROM bsak
INTO TABLE it_bsak
WHERE lifnr IN s_lifnr AND
bukrs IN s_bukrs AND
budat IN s_budat AND
gjahr = p_gjahr .
if it_bsik is INITIAL and it_bsak is INITIAL.
*DATA v_date type budat.
*data :year(4),
* month(2),
* date(2).
* year = s_budat-low+0(4).
* date = s_budat-low+6(2).
* month = s_budat-low+4(2).
* month = month - 01.
*CONCATENATE year month date INTO v_date .
* SELECT bukrs
* lifnr
* augbl
* zuonr
* gjahr
* xblnr
* belnr
* buzei
* blart
* bldat
* budat
* shkzg
* dmbtr
* sgtxt FROM bsik
* INTO TABLE it_bsik
* WHERE lifnr IN s_lifnr AND
* bukrs in s_bukrs and
* budat eq v_date AND
* gjahr = p_gjahr .
* SELECT bukrs
* lifnr
* augbl
* zuonr
* gjahr
* belnr
* buzei
* budat
* bldat
* xblnr
* blart
* shkzg
* dmbtr
* sgtxt FROM bsak
* INTO TABLE it_bsak
* WHERE lifnr IN s_lifnr AND
* bukrs IN s_bukrs AND
* budat eq v_date AND
* gjahr = p_gjahr .
CALL FUNCTION 'BAPI_AP_ACC_GETKEYDATEBALANCE'
EXPORTING
companycode = s_bukrs-low
vendor = s_lifnr-low
keydate = s_budat-low
* BALANCESPGLI = ' '
* NOTEDITEMS = ' '
* IMPORTING
* RETURN =
TABLES
keybalance = t_balence
endif.
ENDFORM. " GET_DATA
*& Form PROCESS_DATA
* text
* --> p1 text
* <-- p2 text
FORM process_data .
DATA:v_bal TYPE netpr.
LOOP AT it_bsak INTO wa_bsak.
wa_bsik-bukrs = wa_bsak-bukrs.
wa_bsik-lifnr = wa_bsak-lifnr.
wa_bsik-augbl = wa_bsak-augbl.
wa_bsik-zuonr = wa_bsak-zuonr.
wa_bsik-gjahr = wa_bsak-gjahr.
wa_bsik-belnr = wa_bsak-belnr.
wa_bsik-buzei = wa_bsak-buzei.
wa_bsik-budat = wa_bsak-budat.
wa_bsik-bldat = wa_bsak-bldat.
wa_bsik-xblnr = wa_bsak-xblnr.
wa_bsik-blart = wa_bsak-blart.
wa_bsik-shkzg = wa_bsak-shkzg.
wa_bsik-dmbtr = wa_bsak-dmbtr.
wa_bsik-sgtxt = wa_bsak-sgtxt .
APPEND wa_bsik TO it_bsik.
CLEAR:wa_bsik.
ENDLOOP.
IF it_bsik IS NOT INITIAL .
SELECT lifnr bukrs gjahr umsav
FROM lfc1
INTO TABLE it_lfc1 FOR ALL ENTRIES IN it_bsik
WHERE
lifnr EQ it_bsik-lifnr AND
bukrs EQ it_bsik-bukrs AND
gjahr EQ it_bsik-gjahr.
SELECT * FROM t003t
INTO TABLE it_t003
FOR ALL ENTRIES IN it_bsik
WHERE blart = it_bsik-blart AND
spras = 'EN'.
*&Bindu........................................
select bukrs "Company Code
belnr "Document Number
gjahr "Fiscal Year
buzei "Line item
koart "Account Type
hkont "General Ledger Account
from bseg into TABLE it_bseg
FOR ALL ENTRIES IN it_bsik
WHERE belnr eq it_bsik-belnr and
bukrs in s_bukrs and
gjahr eq p_gjahr and
BUZEI eq it_bsik-buzei.
ENDIF.
SORT it_bsik BY lifnr.
DATA:c,
l_dmbtr type p DECIMALS 2.
DATA:v1(15),
v2(3).
DATA:v_umsav(18).
DATA v_fbal TYPE umsav.
LOOP AT it_bsik INTO wa_bsik.
READ TABLE it_lfc1 INTO wa_lfc1 WITH KEY lifnr = wa_bsik-lifnr
bukrs = wa_bsik-bukrs
gjahr = wa_bsik-gjahr.
if sy-subrc = 0.
at FIRST.
v_umsav = wa_lfc1-umsav.
SPLIT v_umsav at '.' INTO v1 v2.
wa_all-LTEXT = 'Opening Balance'.
IF v2+2(1) = '-'.
wa_all-cre = wa_lfc1-umsav.
ELSE.
wa_all-deb = wa_lfc1-umsav.
ENDIF.
wa_all-bal = wa_lfc1-umsav.
v_fbal = wa_all-bal.
APPEND wa_all to it_all.
CLEAR wa_all.
endat.
endif.
AT NEW lifnr.
c = 0.
ENDAT.
wa_all-lifnr = wa_bsik-lifnr.
wa_all-zuonr = wa_bsik-zuonr.
wa_all-xblnr = wa_bsik-xblnr.
wa_all-belnr = wa_bsik-belnr.
wa_all-blart = wa_bsik-blart.
wa_all-bldat = wa_bsik-bldat.
wa_all-budat = wa_bsik-budat.
*&Bindu............
READ TABLE it_bseg into wa_bseg WITH KEY belnr = wa_bsik-belnr
buzei = wa_bsik-buzei."Bindu.......
if sy-subrc = 0.
wa_all-hkont = wa_bseg-hkont. "Bindu.....
endif.
IF wa_bsik-shkzg = 'S'.
wa_all-deb = wa_bsik-dmbtr.
ELSEIF wa_bsik-shkzg = 'H'.
wa_all-cre = wa_bsik-dmbtr.
ENDIF.
READ TABLE it_t003 INTO wa_t003 WITH KEY blart = wa_bsik-blart.
IF sy-subrc = 0.
wa_all-ltext = wa_t003-ltext.
ENDIF.
* READ TABLE it_lfc1 INTO wa_lfc1 WITH KEY lifnr = wa_bsik-lifnr
* bukrs = wa_bsik-bukrs
* gjahr = wa_bsik-gjahr.
*break naidu.
IF sy-subrc = 0.
* IF c = 0.
* clear:l_dmbtr.
* wa_all-opbal = wa_lfc1-umsav.
* c = c + 1.
* IF wa_bsik-shkzg = 'S'.
* wa_all-bal = wa_all-opbal + wa_bsik-dmbtr.
* ELSEIF wa_bsik-shkzg = 'H'.
* wa_all-bal = wa_all-opbal - wa_bsik-dmbtr.
* ENDIF.
l_dmbtr = wa_all-bal.
* ELSE.
* wa_all-bal = l_dmbtr + wa_bsik-dmbtr.
* ELSEIF wa_bsik-shkzg = 'H'.
* wa_all-bal = l_dmbtr - wa_bsik-dmbtr.
* ENDIF.
ENDIF.
* IF wa_bsik-shkzg = 'S'.
* wa_all-bal = wa_all-opbal + wa_bsik-dmbtr.
* ELSEIF wa_bsik-shkzg = 'H'.
* wa_all-bal = wa_all-opbal - wa_bsik-dmbtr.
* ENDIF.
if v_fbal is NOT INITIAL.
wa_all-bal = v_fbal + wa_all-deb - wa_all-cre.
CLEAR:v_fbal.
else.
wa_all-bal = v_bal + wa_all-deb - wa_all-cre.
ENDIF.
wa_all-augbl = wa_bsik-augbl.
wa_all-sgtxt = wa_bsik-sgtxt.
*v_balance = wa_all-bal.
APPEND wa_all TO it_all.
v_bal = wa_all-bal.
CLEAR :wa_all.
*& Closing Balence.................
at last.
wa_all-LTEXT = 'Closing Balance'.
* IF .
wa_all-BAL = v_bal.
APPEND wa_all to it_all.
CLEAR wa_all.
* ENDIF.
endat.
ENDLOOP.
ENDFORM. " PROCESS_DATA
*& Form DISPLAY
* text
* --> p1 text
* <-- p2 text
FORM display .
DATA : ls_layout TYPE slis_layout_alv.
PERFORM create_fldcat.
ls_layout-expand_all = 'X'.
ls_layout-colwidth_optimize = 'X'.
ls_layout-expand_fieldname = 'X'.
ls_layout-zebra = 'X'.
if it_all is initial .
wa_all-LTEXT = 'Opening Balance'.
wa_all-bal = t_balence-LC_BAL.
wa_all-lifnr = s_lifnr-low.
APPEND wa_all to it_all.
ENDIF.
IF it_all IS NOT INITIAL.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = sy-repid
is_layout = ls_layout
it_fieldcat = gt_fldcat
i_save = 'X'
TABLES
t_outtab = it_all[]
EXCEPTIONS
program_error = 1
OTHERS = 2.
ELSE.
MESSAGE 'There is no Data for the given selection screen' TYPE 'I' DISPLAY LIKE 'E'.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. " DISPLAY
*& Form CREATE_FLDCAT
* text
* --> p1 text
* <-- p2 text
FORM create_fldcat .
PERFORM : append_val USING 'LIFNR' 'IT_ALL' 'vendor' '' '' 'X' ' '.
PERFORM : append_val USING 'HKONT' 'IT_ALL' 'G/L Acc' '' '' 'X' ' '.
PERFORM : append_val USING 'ZUONR' 'IT_ALL' 'account' '' '' '' ''.
PERFORM : append_val USING 'XBLNR' 'IT_ALL' 'number' '' '' 'X' ''.
PERFORM : append_val USING 'BELNR' 'IT_ALL' 'ref no' '' '' 'X' ''.
PERFORM : append_val USING 'BLART' 'IT_ALL' 'type' '' '' 'X' ''.
PERFORM : append_val USING 'LTEXT' 'IT_ALL' 'type text' '' '' 'X' ''.
PERFORM : append_val USING 'BLDAT' 'IT_ALL' 'doc date' '' '' 'X' ''.
PERFORM : append_val USING 'BUDAT' 'IT_ALL' 'post date' '' '' 'X' ''.
PERFORM : append_val USING 'OPBAL' 'IT_ALL' 'op balance' '' '' '' ''.
PERFORM : append_val USING 'DEB' 'IT_ALL' 'debit' '' '' '' ''.
PERFORM : append_val USING 'CRE' 'IT_ALL' 'credit' '' '' '' ''.
PERFORM : append_val USING 'BAL' 'IT_ALL' 'balance' '' '' '' ''.
PERFORM : append_val USING 'AUGBL' 'IT_ALL' 'clr doc' '' '' 'X' ''.
PERFORM : append_val USING 'SGTXT' 'IT_ALL' 'text ' '' '' 'X' ''.
ENDFORM. " CREATE_FLDCAT
*& Form APPEND_VAL
* text
* -->P_0578 text
* -->P_0579 text
* -->P_TEXT_010 text
* -->P_0581 text
* -->P_0582 text
* -->P_0583 text
FORM append_val USING p_a
p_b
p_c
p_d
p_e
p_f
p_g.
CLEAR gs_fldcat.
gs_fldcat-fieldname = p_a.
gs_fldcat-tabname = p_b.
gs_fldcat-seltext_m = p_c.
gs_fldcat-qfieldname = p_d.
gs_fldcat-datatype = p_e.
gs_fldcat-no_zero = p_f.
gs_fldcat-do_sum = p_g.
APPEND gs_fldcat TO gt_fldcat.
ENDFORM. " APPEND_VAL
This is working for single vendor.
Now my problem is Opening & closing balance should be displayed for multiple vendors.
Please suggest me.
Thanks in advance. -
Problem in getting opening balance for multiple GL Account
Hi,
I am working on a Trail Balance Report in which i am trying to fetch the data for the opening balance for multiple GL Accounts but it is not coming accurate.. Here is the link to the code which i am using currently right now:-
http://docs.google.com/View?id=dfxswwff_13fgpdcbgt
here i am showing the logic for the data of previous year only... i.e. data from begining to 1 day less of the date-low.Hi,
It is a tranparent table which is getting data from the 2 other tables,the filling of this table is right. The execution of this query is right in the program but the problem comes when it is trying to calculate the opening balance for the respective GL Account present in the query it is not doing it. i.e. if there are 2 gl account ids having 3 rows of data each it is not calculating the of it in a single row.. i hope it is clear now... -
Single idoc generation for multiple sales orders
Hi,
Pls let me know how do we generate single idoc for multiple sales orders.
Its not collecting idoc. As we know we can generate an idoc for one sales order correspondingly
my requirement is to generate single idoc number for multiple sales orders.
Do we need to write a program.Amar,
To understand take HRMD_A04 as example. Root segment has Maximum 9999999999 defined.
Segm.type E1PLOGI
Minimum number 1
Maximum number 9999999999
Parent segment
Hier.level 2
This means that this IDOC types has capability to hold multiple HR Master data objects. PFAL program creates this IDOC and it has facility to mention the Objects per process, check selection screen.
I checked for INVOICE01/02 its not possible there. Hope this clarifies. -
GR and GR Non Val indicator in R/3 PO for multiple account assigned SC's
Hi,
We are on SRM 3.0(EBP 4.0) and R/3 4.7.
We have implemented the BBP_CREATE_PO_BACK badi for setting or clearing the GR and IR indicators under certian conditions.
But for Multiple account assigned SC's we get an error message "06181 With non-valuated GR, please also enter GR i ndicator ".
We have tried implementing note# 872000, but this has not solved the issue.
The PO's get created only if we force the GR indicator when transferring the data into R/3.
It seems clear that while creating the PO the system is encountering the GR Non Val indicator but not the GR indicator, so its throwing the error message (we get the same error message when we create the PO from R/3 with GRnon val indicator checked and GR ind unchecked).
The proposed solution is that in the same BADI, along with clearing the GR indicator, we will also clear the GR non val indicator.
This can solve the issue if the indicators are transferred as it is from EBP.
But can anyone tell me if these indicators are also checked/changed in any FM/program in R/3 before the PO is created?
Is there any customizing setting which is affecting this particular behaviour?
Regards,
SrivatsanHi Srivatsan ?
In ECC, you have a configuration point :
Materials Management->Account Assignment->Maintain Account Assignment Categories
Here you can untick the indicator you want by account assignment category;
Kind regards,
Yann
Maybe you are looking for
-
I need help so if someone knows how to fix this I would be excited
-
For a function module how can I find its assigned data source name?
Hi BW Gurus, If i know the data source name then the assigned fn. module/Table/Infoset I could find from RSO2. But for function module How do I know its assigned data source name? Thanks a lot for the response. Regards Ven
-
Mail may open but show no message viewer window Mac OS X v10.9.5
Mail may open but show no message viewer window
-
Cannot connect to the database. java.sql.SQLException:
Hi, I am trying to connect to Pointbase database through an applcation written under J2EE environment. I am able to connect with other database under Pointbase. I am trying to connect using the code as follows: Class.forName("sun.jdbc.odbc.JdbcOdbcDr
-
PE4 output DVD sometimes blury
I have imported AVI from a USB capture device (720x576) but when I burn to DVD and play back the quality is blury in parts . But when I playback on PC its ok. Note I have output using PE4 using Dolby DVD default profile bitrate for 1H:45min is about