BSID & BSAD
Hello Experts,
I m developng FI report in which i need data Business Area wise..
I want customer open documents, i know data need get populated in BSID.
But, my probelm is when i m checking my report with std report FBL5N, selecting open items tab,
i m getting some open documents, that r in BSAD but not in BSID.
Plz suggest,what to do.
Regards,
Aastha
Dear Aastha ,
Try to reform your select query as follows :
SELECT kunnr bukrs belnr gjahr buzei blart shkzg dmbtr
INTO TABLE it_data
FROM bsid
WHERE bukrs = p_bukrs
AND kunnr IN s_kunnr
AND budat IN p_budat
AND hkont = p_hkont
AND gsber = p_gsber
AND bstat = space
AND umskz = space.
SELECT kunnr bukrs belnr gjahr buzei blart shkzg dmbtr
APPENDING TABLE it_data
FROM bsad
WHERE bukrs = p_bukrs
AND kunnr IN s_kunnr
AND budat IN p_budat
AND hkont = p_hkont
AND gsber = p_gsber
AND bstat = space
AND umskz = space.
BSAD table contains all those documents which are cleared where as BSID contains the documents that are open. So as to get all the documents ( Cleared as well as open ) for a customer at one place you need to reform your query as above.
Hope this will help you.
Regards,
Nikhil
Similar Messages
-
How to read open customer items from Archive system i.e BSID & BSAD tables
Hi,
We have a requirement to get the customer line items data that were open as of key date from archive system and present it as customer aging through a custon report. Example,in SAP R/3 we have data for last 3 yrs and beyod that the data is in archive system. Based on teh Key date, we need to got o archive system get the customer open items i.e from BSID & BSAD tables.
If you anyone has already dealt with this kind of requirement, please help me out with directions like simple way to ge the data. There is a standard report FBL5N with the option to choose datasources as , Database or archive system which used the logical database DDF.
Regards,
Abhi- First take a look at the [Archive Development Kit (BC-CCM-ADK)|http://help.sap.com/SAPHELP_NW04S/helpdata/en/2a/fa0391493111d182b70000e829fbfe/content.htm] and for coding sample at [Archiving Class|http://help.sap.com/SAPHELP_NW04S/helpdata/en/2a/fa03f9493111d182b70000e829fbfe/frameset.htm] and report BC_SFLIGHT_READ_DB_AR_BY_INDEX.
- Look also at archive object FI_DOCUMNT via transaction AOBJ.
Regards,
Raymond -
0FI_AR_4 Enhance with fields common in BSID, BSAD
Greetings,
I have a question about enhancing 0FI_AR_4. I have read the note 410799.
The fields I want to add to the datasource are common in both BSID and BSAD tables.
I see a structure CI_BSID in the extract structure but none for BSAD.
So say if I want to add a field A from both BSID and BSAD, how do I do it?Hi,
I think its not possible to get the data to A field from two tables (BSID.BSAD)
1. Check the field data in Both tables.
2. If the filed data is same in both tables then you can fill the data from any one of table (BSID/BSAD)
Regards. -
0FI_AR_4 and BSID/BSAD
Hello All,
I am currently working with 0FI_AR_4, and I see that it takes data from both BSID and BSAD, can anyone tell me how, are they connected. Like will my extractor pull all records from BSID and BSAD . Or there is a logic.
0FI_AR_4 = BSID + BSAD records? or it picks the common ones.
I have a calculation on a amount field and requirement is summation of BSID-DMBTR + BSAD-DMBTR, I thought my extarctor will automatically give me this?Also let me know how do I know which field in my extarctor comes from which table.
Please advice,
Tina.It will fetch from both the tables.
Open Items from BSID and Closed Items from BSAD.
Figures pulled out by extractor will match to those in BSID and BSAD.
But there are various things which you need to consider here:
1. If you are not pulling data real time then figures for today's key date might not tie up.
2. With data in this cube you can differentiate between BSID and BSAD by using the item status indicator (Open/Closed).
3. With this extractor you can do AR line item analysis, aging report....
Let me know if this helps..
Assign points if helpful. -
OXK3 add custom field to bseg bsid bsad
Hi all ,
I have a custom field added to bseg table using transactioin OCK3, but i dont see this field in others tables BSID,BSAD . Can someone tell me the way to add this field in the others tables using tcode OCK3 .
Thanks in advance,
KarimThis field will not be automatically added to secondary indexes (only BSEG, CI_COBL and CI_COBL_BI). You may manually add this field to the secondary indexes via append structure, it will be automatically copied as those tables are filled via move-corresponding like statements. (source [Note 62435 - F-03: Selection by purchasing documents|https://service.sap.com/sap/support/notes/62435])
Regards,
Raymond -
Hi friends
Anybody knows where and when BSID/BSAD XZAHL field in AP is updated with 'X'?
Can anyone help me out?
Thanks....Hi,
F1 help for the field BSAD-XZAHL:
Indicator: Is the posting key used in a payment transaction?
Indicator that postings with the displayed posting key are transactions
which deal with payments.
Procedure
Set this indicator in the posting keys for incoming payments, outgoing
payments, payment differences (residual items) and payment clearing.
Refer to the posting key settings delivered with the standard system as
examples.
On one system I have had a look, if posting key (BSAD-BSCHL) is "15" XZAHL = X if its "01" XZAHL was initial.
Best regards, Christian -
Hi Everyone
I create a query follow the next steps:
- I create an infoset and associate it to user group (SQ03)
-I add in the infoset the tables BSID and BSAD and i choose the fields that i need (sQ02)
STCEG
BUKRS
KUNNR
GJAHR
BELNR
- I generate it and also save
-After that i create a Query in SQ01
Actually is working but it doesnt show all information in the tables for example y want run the query with the field STCEG cover and it show me the KUNNR but my query just show some customers and any Vat number..
I check in the tables using the SE16.. and it has information but it isnt the same that i see when i run the query.
Any idea how can i fix it?
thank you
Regards,Hi, it called 'additional' feature, read here http://help.sap.com/saphelp_47x200/helpdata/en/d2/cb41fb455611d189710000e8322d00/frameset.htm (in Infoset). You need basic knowledge of abap
And this The specified item was not found.
Also if you need eg select by customer, you can select LFA1 from BSID and BSAD. -
Hi everyone!
I am working on some reports (SAP Query) and I have unsuccessefully tried to obtsin a report from BSID and BSAD. I included BKPF in the join but I still receive the message (No results selected).
I even tried BSEG, but I got it may no be used on joins (not even alone);
I also tried a standard DB (GLU4), but got the same message (No results selected).
All those tables have values.
Has anyone done something like that? Any suggestions beside an ABAP
program?
NaejYou cannot join BSID and BSAD, a "debitor" line is cleared or it is not, so it is never in both tables. You should not use a JOIN but an UNION (alas not in OPEN SQL). So read from BSID and then from BSAD appending results of first select.
In a SQ01 query, try to build an Infoset from logical database DDF (like transaction FBL5N) or VDF.
Regards,
Raymond -
Auto update of Ztable when ever BSID or BSAD tables updated
Auto update of Ztable when ever DB table updated
Hi experts
I want my Ztable get updated automatically when ever a record is created or updated in BSID or BSAD tables.
Here clear requirement
Generally using Company code & Allocation number ( 18 char ) my programs access BSID & BSAD tables it is taking very long time for execution almost more than 30 minutes ( data in millions ).
Step 1.
I created a new Ztable with limited fields Company Code, Customer, Document, Allocation Number and Posting date.
Step 2.
Before look into BSID or BSAD my program searches Ztable for Customer number & Document number using Allocation field and Company code.
Step 3.
Once get the Customer & Document numbers accessing BSID & BSAD table is very easy (now just taking less than 1 minute).
Created a new program to update Ztable every day but BSID and BSAD are live table so I want my Ztable get updated immediately when any entry posted in BSID or BSAD
Please help me
Satya
SingaporeYou need to check what is the procedure (T-Code) from which the data gets updated into these tables.
For example
when we craete a material from MM01 the data gets updated in the corresponding table i.e. EKPO.
In same way you need to find the process and then you can use BTE (Busineess transaction events) for that process. BTE are only for FI module and these tables are also related to FI . -
Performance Issues on BSID and BSAD
Hello guys,
for a custom report I need the balance data of a couple of vendors for different keydates. Therefor I tried to use function 'BAPI_AR_ACC_GETKEYDATEBALANCE' which works fine but takes a lot of performance time when getting data for more than one vendor or more than one key date. The function mainly reads BSID and BSAD tables which is enough for my report, so I tried to get it faster with creating my own select.
When looking at the popular SAP boards you get different opinions about the best way for the performance in SELECTS. So can you please tell me what you think would be the best way for tables BSID and BSAD?
I got the key fields company code as parameter and customer as range. I also need only normal documents (BSTAT = ' ') and only documents until one or more keydates as range (BUDAT <= keydate).
So what would be the best way?
(1) Moving the whole BSID/BSAD fields into local BSID/BSAD table or just the fields that I need (see example)?
(2) Doing one SELECT for every vendor no. in the range or getting all vendor no in one select?
Any other performance hints? :-)
SELECT bukrs kunnr budat shkzg dmbtr pswsl pswbt FROM bsid
INTO CORRESPONDING FIELDS OF TABLE gt_bsid
WHERE bukrs EQ pa_bukrs
AND kunnr IN gr_kunnr
AND budat LE pa_stich-high
AND bstat EQ ''.
SELECT bukrs kunnr augdt budat shkzg dmbtr pswsl pswbt FROM bsad
INTO CORRESPONDING FIELDS OF TABLE gt_bsad
WHERE bukrs EQ pa_bukrs
AND kunnr IN gr_kunnr
AND budat LE pa_stich-high
AND augdt GT pa_stich-high
AND bstat EQ ''.
Thanks a lot!
Regards
MichaelAlmost always prefer one SELECT to a SELECT IN LOOP.
Another solution could be reading also some total table :
KNC1 (no special G/L, Balance Carried Forward + total DB/CR per period, one record per Fiscal Year)
KNC3 for special G/L (one record per fiscal year and special G/L indicator, only one total per year)
Only restrict access to BSID/BSAD for dates that are not end of period (or don't allow those...)
NB: From my experience, you can keep the INTO CORRESPONDING, just define a structure with only required fields, the actual generated SQL statement will only ask for those fields (read also Why "INTO CORRESPONDING" is much better than its reputation)
Regards,
Raymond -
Hi SDN,
Im trying to create Generic Data source of View Method. I wanted to create View on BSID ( Closed Customer Invoices) and BSAD ( Open Customer invoices) Tables, But while creating its giving error as "THERE IS NO RELATION BETWEEN THE TABLES" I want to know how to create Relation Between the tables. Both BSID & BSAD are standard tables, so we cant make any changes.
Please let me know the procedure to bulid Rlation between the tables.
Regards
SujanHi Siva,
You have to give relation between these two tables in tab "Table/Join Conditions".
Creating Views:
http://help.sap.com/saphelp_webas620/helpdata/en/cf/21ecf9446011d189700000e8322d00/frameset.htm
View creation fr generic extraction
Hope it Helps -
Difference between cleared items,open items and all postings (FI).
Hi experts,
Can anybody tell me the difference between cleared items,open items and all postings for an account.
While running corresponding bapis and transaction FAGLL03 (for GL) or FBL1N (for accounts payable) i found that in some cases all postings is less than cleared items or open items for a time period. How could it happen.According to my knowledge all postings should contain cleared items and open items.
Please correct me..
Thanks and Regards
ArjunHi Arjun,
For every Billing Documnet created(VBRK/VBRP-VBELN) there will be an accounting document created in BSID/BSAD tables.
OPEN ITEMS means the Billed/Invoice Amounts that are pending from Customers, i.e which we have to receive from Customers.
CLOSED ITEMS means the AMOUNTS received from that customer.
OPEN ITEMS : fetch data from BSID table Only
CLOSED ITEMS : fetch data from BSAD only.
ALL POSTINGS : fetch data from both BSID and BSAD.
Hope this will help.
Regards,
Nitin. -
Table for Customer and vendor open balance on a key date
Dear All,
Can anyone please let me know Table for Customer and vendor open balance on a key date. We are developing one customized report.
I have checked with the below table :
Customer-KNC1, KNC3,BSID, BSAD
Vendor-LFC1, LFC3, BSIK, BSAK.
But these are not working properly for all customers and vedors. Also, in open items, there are items with clearing documents.
Plesae let me know, how to go for it.
Please suggest.Hi
Use BSID and BSIK for open items
And pass company code, year and from date and to date range in Posting date selection option
Reg
Vishnu -
Report to find open items and close items for given vendor
Hi All,
What are the steps needed to write a REPORT to find out
open and close items for a given vendor.
Which are the fields i'll have to take and what are the comparisons i'll have to make.
I know,
BSIK is for open Vendor &
BSAK for closed Vendors..
what are the conditions i'll have to check.
Thanks in Advance..
Pradeep AlexHi Pradeep,
This report I developed is definitely useful to you.
*& Report ZFI_PROV_IT_VENDOR
REPORT ZFI_VENDOR.
TYPE-POOLS: slis.
tables: BKPF,
BSEG,
bsik,
bsak,
bsid,
bsad,
lfa1,
t005u, "Region Description
J_1IMOVEND.
TYPES: BEGIN OF ty_bkpf,
bukrs type bkpf-bukrs,
belnr TYPE bkpf-belnr,
gjahr type bkpf-gjahr,
blart TYPE bkpf-blart,
budat TYPE bkpf-budat,
END OF ty_bkpf.
types: begin of ty_J_1IMOVEND,
lifnr type lfa1-lifnr,
J_1IPANNO type J_1IMOVEND-J_1IPANNO,
J_1ICSTNO type J_1IMOVEND-J_1ICSTNO,
J_1ISERN type J_1IMOVEND-J_1ISERN,
end of ty_J_1IMOVEND.
TYPES: BEGIN OF ty_bseg,
belnr TYPE bseg-belnr,
gjahr type bseg-gjahr,
bschl TYPE bseg-bschl,
umskz type bseg-umskz,
shkzg type bseg-shkzg,
wrbtr TYPE bseg-wrbtr,
hkont type bseg-hkont,
lifnr TYPE bseg-lifnr,
END OF ty_bseg.
types: begin of ty_t005u,
bland type t005u-bland,
bezei type t005u-bezei,
end of ty_t005u.
types: begin of ty_lfa1,
lifnr type lfa1-lifnr,
name1 type lfa1-name1, "35
ort01 type lfa1-ort01, "35
ort02 type lfa1-ort02, "35
pfach type lfa1-pfach, "10
pstlz type lfa1-pstlz, "10
regio type lfa1-regio, "3
stras type lfa1-stras, "35
ktokk type lfa1-ktokk,
telf1 type lfa1-telf1, "16
telf2 type lfa1-telf2, "16
end of ty_lfa1.
types: begin of ty_bsik,
bukrs type bsik-bukrs,
lifnr type bsik-lifnr,
augdt type bsik-augdt,
augbl type bsik-augbl,
belnr type bsik-belnr,
budat type bsik-budat,
blart type bsik-blart,
shkzg type bsik-shkzg,
wrbtr type bsik-wrbtr,
end of ty_bsik.
types: begin of ty_bsid,
bukrs type bsid-bukrs,
lifnr type bsid-kunnr,
augdt type bsid-augdt,
augbl type bsid-augbl,
belnr type bsid-belnr,
budat type bsid-budat,
blart type bsid-blart,
shkzg type bsid-shkzg,
wrbtr type bsid-wrbtr,
end of ty_bsid.
types: begin of ty_out2,
lifnr type bsik-lifnr,
wrbtr type bsik-wrbtr,
end of ty_out2.
types: begin of ty_out,
lifnr type lfa1-lifnr,
name1 type lfa1-name1,
addr(162) type c,
J_1IPANNO type J_1IMOVEND-J_1IPANNO,
J_1ICSTNO type J_1IMOVEND-J_1ICSTNO,
J_1ISERN type J_1IMOVEND-J_1ISERN,
opbal type bseg-wrbtr,
purch type bseg-wrbtr,
PAYM type bseg-wrbtr,
grdeb type bseg-wrbtr,
othdeb type bseg-wrbtr,
othcre type bseg-wrbtr,
tds type bseg-wrbtr,
bal type bseg-wrbtr,
blart type bkpf-blart,
bschl type bseg-bschl,
end of ty_out.
types: begin of ty_bsegtemp,
lifnr TYPE bseg-lifnr,
end of ty_bsegtemp.
types: begin of ty_bsegnew,
wrbtr TYPE bseg-wrbtr,
lifnr TYPE bseg-lifnr,
end of ty_bsegnew.
data: it_bsik type table of ty_bsik with header line,
it_bsid type table of ty_bsid with header line,
it_bsak type table of ty_bsik with header line,
it_out2 type table of ty_out2 with header line,
it_out3 type table of ty_out2 with header line.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
it_listheader TYPE slis_t_listheader,
it_alvevent TYPE slis_t_event,
gt_events TYPE slis_t_event WITH HEADER LINE.
DATA: I_SORT TYPE SLIS_T_SORTINFO_ALV.
DATA : wa_fieldcat TYPE slis_fieldcat_alv,
wa_listheader TYPE slis_listheader,
wa_alvevent TYPE slis_alv_event.
DATA: WA_SORT TYPE SLIS_SORTINFO_ALV.
DATA: ls_line TYPE slis_listheader.
DATA : g_repid LIKE sy-repid, " Program ID
g_layout TYPE slis_layout_alv. " Layout Workarea
DEFINE m_fieldcat.
wa_fieldcat-col_pos = &1. " Fieldcat column postion
wa_fieldcat-fieldname = &2. " Field name
wa_fieldcat-DO_SUM = &3.
wa_fieldcat-seltext_m = &4. " Column Text
wa_fieldcat-outputlen = &5.
append wa_fieldcat to it_fieldcat.
clear wa_fieldcat.
END-OF-DEFINITION.
DATA: wa_lfa1 TYPE ty_lfa1,
wa_bkpf TYPE ty_bkpf,
wa_bkpf1 type ty_bkpf,
wa_bsegtemp type ty_bsegtemp,
wa_bsegnew type ty_bsegnew,
wa_bsegnew1 type ty_bsegnew,
wa_J_1IMOVEND type ty_J_1IMOVEND,
wa_t005u type ty_t005u,
wa_bseg TYPE ty_bseg,
wa_out TYPE ty_out.
DATA: gt_out TYPE STANDARD TABLE OF ty_out,
gt_out1 TYPE STANDARD TABLE OF ty_out,
gt_lfa1 TYPE STANDARD TABLE OF ty_lfa1,
gt_bsegtemp type standard table of ty_bsegtemp with header line,
gt_bsegnew type standard table of ty_bsegnew with header line,
gt_bsegnew1 type standard table of ty_bsegnew with header line,
gt_J_1IMOVEND type standard table of ty_J_1IMOVEND,
gt_bkpf1 TYPE STANDARD TABLE OF ty_bkpf WITH HEADER LINE,
gt_t005u type standard table of ty_t005u,
gt_bseg TYPE STANDARD TABLE OF ty_bseg WITH HEADER LINE,
gt_bkpf TYPE STANDARD TABLE OF ty_bkpf WITH HEADER LINE.
selection-screen begin of block b1 with frame title text-001.
select-options: s_budat for bkpf-budat obligatory,
s_ktokk for lfa1-ktokk obligatory.
s_wrbtr for bseg-wrbtr.
parameters: p_bukrs type bkpf-bukrs obligatory default '1000'.
p_gjahr type bkpf-gjahr obligatory.
p_lifnr type bseg-lifnr obligatory default '300040',
p_ktokk type lfa1-ktokk obligatory default 'Z200'.
selection-screen end of block b1.
START-OF-SELECTION.
PERFORM sub_fetch_data.
PERFORM sub_process_data.
END-OF-SELECTION.
PERFORM sub_build_fieldcat.
PERFORM sub_build_layout.
PERFORM eventtab_build USING gt_events[].
PERFORM comment_build USING it_listheader[].
PERFORM sub_disp_data.
*& Form SUB_BUILD_FIELDCAT
text
--> p1 text
<-- p2 text
FORM sub_build_fieldcat .
sort gt_out by name1.
*DEFINE M_SORT.
ADD 1 TO WA_SORT-SPOS.
WA_SORT-FIELDNAME = &1.
WA_SORT-UP = 'X'.
WA_SORT-SUBTOT = &2.
APPEND WA_SORT TO I_SORT.
END-OF-DEFINITION.
*m_sort 'NAME1' 'X'.
*M_SORT 'ADDR' 'X'.
m_fieldcat 1 'LIFNR' ' ' text-026 10.
m_fieldcat 2 'NAME1' ' ' text-006 35.
m_fieldcat 3 'ADDR' ' ' text-007 162.
m_fieldcat 4 'J_1IPANNO' '' text-008 40.
m_fieldcat 5 'J_1ICSTNO' '' text-009 40.
m_fieldcat 6 'J_1ISERN' '' text-010 40.
m_fieldcat 7 'OPBAL' '' text-011 18.
m_fieldcat 8 'PURCH' '' text-012 18.
m_fieldcat 9 'PAYM' '' text-013 18.
m_fieldcat 10 'GRDEB' '' text-014 18.
m_fieldcat 11 'OTHDEB' '' text-020 18.
m_fieldcat 12 'OTHCRE' '' text-021 18.
m_fieldcat 13 'BAL' '' text-023 18.
m_fieldcat 14 'TDS' '' text-022 18.
ENDFORM. " SUB_BUILD_FIELDCAT
*& Form SUB_BUILD_LAYOUT
text
--> p1 text
<-- p2 text
FORM sub_build_layout .
g_layout-zebra = 'X'.
g_layout-colwidth_optimize = 'X'.
ENDFORM. " SUB_BUILD_LAYOUT
*& Form EVENTTAB_BUILD
text
-->P_GT_EVENTS[] text
FORM eventtab_build USING gt_events TYPE slis_t_event.
DATA: ls_event TYPE slis_alv_event.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
i_list_type = 0
IMPORTING
et_events = gt_events.
READ TABLE gt_events WITH KEY name = slis_ev_top_of_page
INTO ls_event.
IF sy-subrc = 0.
MOVE 'TOP_OF_PAGE' TO ls_event-form.
APPEND ls_event TO gt_events.
ENDIF.
ENDFORM. " EVENTTAB_BUILD
*& Form COMMENT_BUILD
text
-->P_IT_LISTHEADER[] text
FORM comment_build USING p_it_listheader TYPE
slis_t_listheader.
data: v_text(30) type c,
v_datelow(10) type c,
v_datehigh(10) type c,
v_month(2) type c,
v_day(2) type c,
v_year(4) type c.
v_day = s_budat-low+6(2).
v_month = s_budat-low+4(2).
v_year = s_budat-low+0(4).
concatenate v_day '.' v_month '.' v_year into v_datelow.
clear: v_day,v_month,v_year.
v_day = s_budat-high+6(2).
v_month = s_budat-high+4(2).
v_year = s_budat-high+0(4).
concatenate v_day '.' v_month '.' v_year into v_datehigh.
clear: v_day,v_month,v_year.
concatenate 'From' v_datelow 'To' v_datehigh into v_text
separated by space.
clear: v_datelow, v_datehigh.
ls_line-typ = 'H'.
ls_line-info = text-116.
APPEND ls_line TO p_it_listheader.
ls_line-typ = 'S'.
ls_line-key = text-090.
ls_line-info = v_text.
APPEND ls_line TO p_it_listheader.
ENDFORM. " COMMENT_BUILD
*& Form TOP_OF_PAGE
text
--> p1 text
<-- p2 text
FORM top_of_page.
CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
EXPORTING
it_list_commentary = it_listheader.
ENDFORM. " TOP_OF_PAGE
*& Form SUB_DISP_DATA
text
--> p1 text
<-- p2 text
FORM sub_disp_data .
g_repid = sy-repid.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
i_callback_program = g_repid
it_fieldcat = it_fieldcat[]
is_layout = g_layout
i_save = 'U'
it_events = gt_events[]
IT_SORT = I_SORT[]
TABLES
t_outtab = gt_out1[].
ENDFORM. " SUB_DISP_DATA
*& Form sub_fetch_data
text
--> p1 text
<-- p2 text
form sub_fetch_data .
select bukrs
belnr
gjahr
blart
budat
from bkpf
into table gt_bkpf
where budat in s_budat
and bukrs = p_bukrs
and gjahr = p_gjahr
and blart in ('KR','KG','KZ','RE','DK','Z1','AB','SA','KA','DZ').
select belnr
gjahr
bschl
umskz
shkzg
wrbtr
hkont
lifnr
from bseg
into table gt_bseg
for all entries in gt_bkpf
where belnr = gt_bkpf-belnr
and gjahr = gt_bkpf-gjahr
and gjahr = p_gjahr
and bschl in (21,25,29,31,50,39,38,19,35).
and kunnr in gt_
and lifnr = '0000300019'.
select belnr
gjahr
bschl
umskz
shkzg
wrbtr
hkont
kunnr
from bseg
appending table gt_bseg
for all entries in gt_bkpf
where belnr = gt_bkpf-belnr
and gjahr = gt_bkpf-gjahr
and gjahr = p_gjahr
and bschl in (21,25,29,31,50,39,38,19).
break manukapur.
sort gt_bseg by lifnr bschl.
delete adjacent duplicates from gt_bseg comparing all fields.
loop at gt_bseg into wa_bseg.
if wa_bseg-lifnr is not initial.
move: wa_bseg-lifnr to wa_bsegtemp-lifnr.
append wa_bsegtemp to gt_bsegtemp.
endif.
endloop.
delete adjacent duplicates from gt_bsegtemp comparing lifnr.
select lifnr
name1
ort01
ort02
pfach
pstlz
regio
stras
ktokk
telf1
telf2
from lfa1
into table gt_lfa1
for all entries in gt_bseg
where lifnr = gt_bseg-lifnr
and ktokk in s_ktokk.
and lifnr = '0000300030'.
select bland
bezei
from t005u
into table gt_t005u
for all entries in gt_lfa1
where bland = gt_lfa1-regio
and land1 = 'IN'
and spras = sy-langu.
select lifnr
J_1IPANNO
J_1ICSTNO
J_1ISERN
from J_1IMOVEND
into table gt_J_1IMOVEND
for all entries in gt_bseg
where lifnr = gt_bseg-lifnr.
*select bukrs
belnr
blart
budat
from bkpf
into table gt_bkpf1
where budat < s_budat-low.
and zfdbt < s_budat-low.
select
wrbtr
lifnr
from bseg
into table gt_bsegnew
for all entries in gt_bkpf
where belnr = gt_bkpf-belnr
and xopvw = 'X' .
and zfbdt < s_budat-low.
select bukrs
lifnr
augdt
augbl
belnr
budat
blart
shkzg
wrbtr
from bsik
into table it_bsik
for all entries in gt_bseg
where lifnr = gt_bseg-lifnr
and lifnr = '0000300000'
and bukrs = '1000'
and budat <= s_budat-low.
select bukrs
lifnr
augdt
augbl
belnr
budat
blart
shkzg
wrbtr
from bsak
appending table it_bsik
for all entries in gt_bseg
where bukrs = '1000'
and lifnr = gt_bseg-lifnr
and lifnr = '0000300000'
and budat <= s_budat-low
and augdt > s_budat-low.
select bukrs
kunnr
augdt
augbl
belnr
budat
blart
shkzg
wrbtr
from bsid
into table it_bsid
for all entries in gt_bseg
where bukrs = '1000'
and kunnr = gt_bseg-lifnr
and kunnr = '0000300000'
and budat <= s_budat-low.
select bukrs
kunnr
augdt
augbl
belnr
budat
blart
shkzg
wrbtr
from bsad
appending table it_bsid
for all entries in gt_bseg
where bukrs = '1000'
and kunnr = gt_bseg-lifnr
and kunnr = '0000300000'
and budat <= s_budat-low
and augdt > s_budat-low.
if it_bsid[] is not initial.
append lines of it_bsid to it_bsik.
endif.
*delete gt_bsegnew where lifnr <> '0000300000'.
*break manukapur.
*sort gt_bsegnew by lifnr.
*loop at gt_bsegnew into wa_bsegnew.
*collect wa_bsegnew into gt_bsegnew1.
*endloop.
loop at it_bsik .
it_out2-lifnr = it_bsik-lifnr.
*it_out1-budat = it_bsik-budat.
*it_out1-blart = it_bsik-blart.
if it_bsik-SHKZG = 'H'.
it_out2-wrbtr = it_bsik-wrbtr.
else .
it_out2-wrbtr = it_bsik-wrbtr * -1.
endif.
append it_out2.
clear: it_out2, it_bsik.
*endif.
*clear it1.
endloop.
sort it_out2 by lifnr.
loop at it_out2.
it_out3-lifnr = it_out2-lifnr.
it_out3-wrbtr = it_out2-wrbtr.
collect it_out3.
clear: it_out3, it_out2.
endloop.
endform.
*& Form sub_process_data
text
--> p1 text
<-- p2 text
form sub_process_data .
*sort gt_bsegtemp by lifnr .
sort gt_bseg by lifnr bschl.
sort gt_bsegnew by lifnr.
sort it_out3 by lifnr.
*loop at gt_bsegnew into wa_bsegnew.
*at end of lifnr.
*sum.
*endat.
*endloop.
sort gt_bkpf by blart.
loop at gt_bseg into wa_bseg.
if wa_bseg-lifnr is not initial.
read table gt_lfa1 into wa_lfa1 with key lifnr = wa_bseg-lifnr.
move: wa_lfa1-name1 to wa_out-name1,
wa_lfa1-lifnr to wa_out-lifnr.
read table gt_t005u into wa_t005u with key bland = wa_lfa1-regio.
concatenate wa_lfa1-stras ',' wa_lfa1-ort01 ','
wa_lfa1-ort02 ',' wa_t005u-bezei ','
wa_lfa1-pfach ','
wa_lfa1-pstlz ',' 'Ph:'
wa_lfa1-telf1 ','
wa_lfa1-telf2
into wa_out-addr separated by space.
read table gt_J_1IMOVEND into wa_J_1IMOVEND with key lifnr = wa_bseg-lifnr.
move: wa_J_1IMOVEND-J_1IPANNO to wa_out-J_1IPANNO,
wa_J_1IMOVEND-J_1ICSTNO to wa_out-J_1ICSTNO,
wa_J_1IMOVEND-J_1ISERN to wa_out-J_1ISERN.
read table gt_bkpf into wa_bkpf with key belnr = wa_bseg-belnr.
if wa_bkpf-blart = 'RE' and wa_bseg-bschl = 31 or
wa_bkpf-blart = 'KR' and wa_bseg-bschl = 31.
if wa_bseg-shkzg = 'H'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-purch = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-purch = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'KR' and wa_bseg-bschl = 50.
*wa_out-tds = wa_out-tds + wa_bseg-wrbtr.
if wa_bseg-shkzg = 'H'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-tds = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-tds = wa_bseg-wrbtr * -1.
endif.
endif.
*wa_out-tds = wa_bseg-wrbtr.
endif.
if wa_bkpf-blart = 'KG' and wa_bseg-bschl = 21.
*wa_out-grdeb = wa_out-grdeb + wa_bseg-wrbtr.
if wa_bseg-shkzg = 'H'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-grdeb = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-grdeb = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'RE' and wa_bseg-bschl = 21.
*wa_out-grdeb = wa_out-grdeb + wa_bseg-wrbtr.
if wa_bseg-shkzg = 'H'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-grdeb = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-grdeb = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'KZ' and wa_bseg-bschl = 25
*or wa_bkpf-blart = 'KZ' and wa_bseg-bschl = 29
**and wa_bseg-umskz = 'A'
or wa_bkpf-blart = 'SA' and wa_bseg-bschl = 25.
if wa_bseg-shkzg = 'H'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-paym = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
*wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
wa_out-paym = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'DK' and wa_bseg-bschl = 31.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'AB' and wa_bseg-bschl = 31.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'SA' and wa_bseg-bschl = 31.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'KZ' and wa_bseg-bschl = 38.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'DZ' and wa_bseg-bschl = 19
and wa_bseg-umskz = 'A'.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'KA' and wa_bseg-bschl = 39
and wa_bseg-umskz = 'G' or
wa_bseg-umskz = 'H' or
wa_bseg-umskz = 'J' or
wa_bseg-umskz = 'L' OR
wa_bseg-umskz = 'A'.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'KA' and wa_bseg-bschl = 35.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if ( wa_bkpf-blart = 'KZ' and wa_bseg-bschl = 29 )
and wa_bseg-umskz = 'A' or
wa_bseg-umskz = 'B' or
wa_bseg-umskz = 'I' or
wa_bseg-umskz = 'M' or
wa_bseg-umskz = 'O' or
wa_bseg-umskz = 'V'.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'AB' and wa_bseg-bschl = 27.
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
if wa_bkpf-blart = 'Z1' and wa_bseg-bschl = 21 .
if wa_bseg-shkzg = 'H'.
wa_out-othcre = wa_bseg-wrbtr.
else.
if wa_bseg-shkzg = 'S'.
wa_out-othcre = wa_bseg-wrbtr * -1.
endif.
endif.
endif.
**if wa_bseg-shkzg = 'H'.
***wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
**wa_out-othdeb = wa_bseg-wrbtr.
**else.
**if wa_bseg-shkzg = 'S'.
***wa_out-purch = wa_out-purch + wa_bseg-wrbtr.
**wa_out-othdeb = wa_bseg-wrbtr * -1.
**endif.
**endif.
**endif.
***if wa_bkpf-blart = 'AB' and wa_bseg-bschl = 27.
wa_out-othdeb = wa_bseg-wrbtr.
***endif.
***if wa_bkpf-blart = 'Z1' and wa_bseg-bschl = 21.
wa_out-othdeb = wa_bseg-wrbtr.
***endif.
read table it_out3 with key lifnr = wa_bseg-lifnr binary search.
on change of wa_bseg-lifnr.
*move: wa_lfa1-name1 to wa_out-name1,
wa_lfa1-lifnr to wa_out-lifnr.
wa_out-opbal = it_out3-wrbtr.
endon.
*if wa_out-opbal is not initial.
*wa_out-bal = wa_out-opbal + wa_out-purch - wa_out-grdeb - wa_out-othdeb + wa_out-othcre.
**else.
*wa_out-bal = wa_out-purch - wa_out-grdeb - wa_out-othdeb + wa_out-othcre.
*endif.
wa_out-bal = wa_out-opbal + wa_out-purch + wa_out-paym + wa_out-grdeb + wa_out-othdeb + wa_out-othcre.
at end of lifnr.
*wa_out-bal = wa_out-opbal + wa_out-purch - wa_out-grdeb - wa_out-othdeb + wa_out-othcre.
append wa_out to gt_out.
*collect wa_out into gt_out.
clear wa_out.
clear it_out3.
clear wa_bsegnew1.
endat.
endif.
clear: wa_bseg, wa_bkpf, wa_J_1IMOVEND.
endloop.
loop at gt_out into wa_out.
collect wa_out into gt_out1.
endloop.
endform. " sub_process_data
Regards,
Santosh Kumar M. -
PDF Attachment Email Opening issue in ECC6
Hello,
We are having problem with below report. I'm able to send emails(invoice) as PDF attachments , but the attached PDF file wont open. I'm getting a message "Adobe reader could not open attachement the file has been damaged".This report works in our old version 4.6c but we just upgrade to ecc6. Please Please help.
Thanks,
Jose
REPORT zrfi_customer_statement_new
NO STANDARD PAGE HEADING
MESSAGE-ID zm_load
LINE-SIZE 325
LINE-COUNT 65(3).
Tables *
TABLES:
bsid, bsad, knb1, kna1, knkk, t001, t014, t179t,
t052, fplt, vbap, veda, vbrk, vbpa, vbkd, knvk,
cepct, tvzbt, vbak, bsik, tsp01, usr21,adr6, tsp03l.
Internal tables *
DATA: i_bsid LIKE bsid OCCURS 0 WITH HEADER LINE.
DATA: BEGIN OF i_bukrs OCCURS 0,
bukrs LIKE bsid-bukrs,
waers LIKE bsid-waers,
END OF i_bukrs.
DATA:
BEGIN OF i_temp_data OCCURS 0,
bukrs LIKE bsid-bukrs, " Company code
kunnr LIKE bsid-kunnr, " Customer
belnr LIKE bsid-belnr, " Invoice
gjahr LIKE bsid-gjahr, " Fiscal year
waers LIKE bsid-waers, " Currency
rebzg LIKE bsid-rebzg,
bldat LIKE bsid-bldat, " Posting date
shkzg LIKE bsid-shkzg, " Debit/Credit
zfbdt LIKE bsid-zfbdt, " Baseline date
zterm LIKE bsid-zterm, " Terms of payment key
dmbtr LIKE bsid-dmbtr, " company currency
dmbe2 LIKE bsid-dmbe2, " Amount in Group Currency
days LIKE rfposxext-verzn, " No of Arrear Days
kidno LIKE bsid-kidno, " Payment reference number
kunnr_c LIKE vbak-kunnr, " Partner Number
name_c(50), " Partner Last name
matnr LIKE vbap-matnr, " Material no
arktx LIKE vbap-arktx, " material description
vbeln LIKE vbap-vbeln, " Contract/Order no
inv_date LIKE vbrk-fkdat,
xblnr LIKE bsid-xblnr,
xblnr LIKE bsid-zuonr,
vtext LIKE vbap-arktx, "material description
sgtxt LIKE bsid-sgtxt,
plant LIKE t001w-name1,
zzihrez_e LIKE vbap-zzihrez_e,
vvtext LIKE tvzbt-vtext,
blart LIKE bsid-blart,
zuonr LIKE bsid-zuonr,
END OF i_temp_data.
DATA:
BEGIN OF itab OCCURS 0,
kunnr LIKE bsid-kunnr, " Customer
bukrs LIKE bsid-bukrs, " Company code
kunnr_c LIKE vbak-kunnr, " Partner Number
name_c(50), " Partner Last name
matnr LIKE vbap-matnr, " Material no
kidno LIKE bseg-kidno, " Payment reference
name1 LIKE kna1-name1, " Customer name
belnr LIKE bsid-belnr, " Invoice
waers LIKE bsid-waers, " Currency ( Document )
gjahr LIKE bsid-gjahr, " Fiscal year
zfbdt LIKE bsid-zfbdt, " Baseline date
zterm LIKE bsid-zterm, " Terms of payment key
amt00_30 TYPE netwr_ak, " 000 - 030 Days
amt31_60 TYPE netwr_ak, " 031 - 060 Days
amt61_90 TYPE netwr_ak, " 061 - 090 Days
amt91_120 TYPE netwr_ak, " 090 - 120 Days
amt120pls TYPE netwr_ak, " 120+ Days
total TYPE netwr_ak, " Row Total
inv_date LIKE vbrk-fkdat,
rebzg LIKE bsid-rebzg,
xblnr LIKE bsid-xblnr,
xblnr LIKE bsid-zuonr,
sgtxt LIKE bsid-sgtxt,
days(5) , " No of Arrear Days
inv_chk LIKE bsid-xblnr, " invoice/check/wire transfer no
vtext LIKE t179t-vtext,
zzihrez_e LIKE vbap-zzihrez_e,
plant LIKE t001w-name1,
vvtext LIKE tvzbt-vtext,
bldat LIKE bsid-bldat,
blart LIKE bsid-blart,
zuonr LIKE bsid-zuonr,
END OF itab.
DATA: BEGIN OF i_final OCCURS 0,
inv_chk LIKE bsid-xblnr, " invoice/check/wire transfer no
bldat LIKE bsid-bldat,
xblnr LIKE bsid-xblnr,
inv_date LIKE vbrk-fkdat,
name_c(50), " Partner Last name
vtext LIKE t179t-vtext,
zzihrez_e LIKE vbap-zzihrez_e,
plant LIKE t001w-name1,
vvtext LIKE tvzbt-vtext,
total TYPE netwr_ak, " Row Total
days(5) , " No of Arrear Days
waers LIKE bsid-waers,
blart LIKE bsid-blart,
zuonr LIKE bsid-zuonr,
END OF i_final.
DATA: BEGIN OF i_last OCCURS 0,
kunnr LIKE vbak-kunnr,
inv_chk LIKE bsid-xblnr, " invoice/check/wire transfer no
bldat LIKE bsid-bldat,
xblnr LIKE bsid-xblnr,
inv_date LIKE vbrk-fkdat,
name_c(50), " Partner Last name
vtext LIKE t179t-vtext,
zzihrez_e LIKE vbap-zzihrez_e,
plant LIKE t001w-name1,
vvtext LIKE tvzbt-vtext,
total TYPE netwr_ak, " Row Total
days(5) , " No of Arrear Days
waers LIKE bsid-waers,
blart LIKE bsid-blart,
zuonr LIKE bsid-zuonr,
END OF i_last.
DATA: i_bsik LIKE bsik OCCURS 0 WITH HEADER LINE.
DATA: itab_temp LIKE itab OCCURS 100 WITH HEADER LINE.
DATA:
BEGIN OF itab_details OCCURS 0,
bukrs LIKE bsid-bukrs, " Company code
xblnr LIKE bsid-xblnr,
gjahr LIKE bsid-gjahr,
belnr LIKE bsid-belnr,
kunnr LIKE bsid-kunnr,
END OF itab_details.
DATA: BEGIN OF x_kna1 OCCURS 0,
kunnr LIKE kna1-kunnr,
name1 LIKE kna1-name1,
name2 LIKE kna1-name2,
ptext LIKE tpfkt-vtext,
street LIKE adrc-street,
ort01 LIKE kna1-ort01,
regio LIKE kna1-regio,
pstlz LIKE kna1-pstlz,
landx LIKE t005t-landx,
agdate LIKE sy-datum, " aging date
END OF x_kna1.
DATA: BEGIN OF i_total OCCURS 0,
waers LIKE bsid-waers,
00_30 TYPE netwr_ak,
31_60 TYPE netwr_ak,
61_90 TYPE netwr_ak,
91_120 TYPE netwr_ak,
120pls TYPE netwr_ak,
total TYPE netwr_ak,
END OF i_total.
DATA: i_ssfcrescl TYPE ssfcrescl.
DATA: i_otf_final TYPE itcoo OCCURS 0 WITH HEADER LINE.
DATA: i_ssfctrlop LIKE ssfctrlop OCCURS 0 WITH HEADER LINE.
DATA: v_itcpo LIKE itcpo.
DATA: BEGIN OF itab_vender OCCURS 0,
vender LIKE kna1-kunnr,
END OF itab_vender.
DATA: BEGIN OF ioutput OCCURS 0,
kunnr LIKE vbrk-kunrg,
kname(50),
email(50),
error(1),
END OF ioutput.
DATA: vv_text(90).
Structures *
DATA: x_item LIKE rfposxext.
DATA: x_t001 LIKE t001.
DATA: x_bsegp LIKE bsegp.
Variables *
DATA: v_count TYPE i.
DATA: v_dialog TYPE c VALUE 'X'.
DATA: v_name1 LIKE kna1-name1,
v_name2 LIKE kna1-name2,
v_print LIKE tsp03l-padest,
v_formname(20),
v_flag.
DATA: f_recap_report(1) TYPE c. " Flag for recap report
DATA:
BEGIN OF x_amt,
amt00_ls LIKE bsid-wrbtr,
00_30 LIKE bsid-wrbtr,
31_60 LIKE bsid-wrbtr,
61_90 LIKE bsid-wrbtr,
91_120 LIKE bsid-wrbtr,
120pls LIKE bsid-wrbtr,
END OF x_amt.
DATA: BEGIN OF itab_bill OCCURS 0,
vbeln LIKE vbfa-vbeln,
fplnr LIKE vbfa-fplnr,
fpltr LIKE vbfa-fpltr,
END OF itab_bill.
DATA: v_sdate LIKE vbrk-fkdat,
v_edate LIKE vbrk-fkdat,
v_order(10) TYPE n.
DATA: v_eddate(10), v_stdate(10).
DATA: v_num TYPE i,
v_stat,
v_bill_prd(24),
v_counter TYPE c.
DATA: v_matnr LIKE vbrp-matnr,
v_arktx LIKE vbrp-arktx,
v_vbeln LIKE vbrp-vbeln,
v_vvtext LIKE t176t-vtext,
v_posnr LIKE vbap-posnr,
v_kunnr_c LIKE vbak-kunnr,
v_name_c(50),
v_inv_date LIKE vbrk-fkdat,
v_vdatu LIKE vbak-vdatu,
v_auart LIKE vbak-auart,
v_prctr LIKE vbap-prctr,
v_zzihrez LIKE vbap-zzihrez_e,
v_plant LIKE t001w-name1,
p_form TYPE tdsfname,
fm_name TYPE rs38l_fnam.
DATA: i_ssfcompop TYPE ssfcompop OCCURS 0." WITH HEADER LINE.
DATA: addr_no LIKE kna1-adrnr,
last_name LIKE kna1-name1,
first_name LIKE kna1-name1,
pafkt LIKE knvk-pafkt,
lang LIKE knvk-parla,
v_land LIKE adrc-country,
v_lines TYPE i.
DATA: v_tabix LIKE sy-tabix, v_gjahr LIKE bsid-gjahr,
v_kunnr LIKE vbak-kunnr, v_prodh LIKE vbap-prodh,
v_vtext LIKE t179t-vtext.
DATA: spno LIKE tsp01-rqident,
mi_bytecount TYPE i,
mstr_print_parms LIKE pri_params,
downfile(128) VALUE 'c:\customer.pdf',
mtab_pdf LIKE tline OCCURS 0 WITH HEADER LINE.
DATA: packing_list TYPE TABLE OF sopcklsti1 WITH HEADER LINE,
contents_txt TYPE TABLE OF solisti1 WITH HEADER LINE,
v_email LIKE adr6-smtp_addr,
v_returncode,
contents_hex TYPE TABLE OF solix," WITH HEADER LINE,
w_contents_hex TYPE solix ,
receivers TYPE TABLE OF somlreci1 WITH HEADER LINE.
DATA: att_pos TYPE i.
DATA: document_data LIKE sodocchgi1.
DATA: esubject LIKE sood1-objdes. "subject line
DATA: emsgs TYPE TABLE OF solisti1 WITH HEADER LINE.
DATA: pdf TYPE TABLE OF tline WITH HEADER LINE.
DATA: BEGIN OF itext OCCURS 200,
text(132),
END OF itext.
DATA: i_fields LIKE sval OCCURS 0 WITH HEADER LINE.
DATA: v_ccemail LIKE adr6-smtp_addr,
v_check,
v_kname(50).
DATA: otf_data1 LIKE itcoo OCCURS 0 WITH HEADER LINE,
i_itcpp LIKE itcpp.
*FIELD-GROUPS: HEADER, ...
FIELD-GROUPS: header,
details.
Selection Screen
SELECTION-SCREEN BEGIN OF BLOCK a10 WITH FRAME TITLE text-sa1.
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE text-sa1.
PARAMETERS : p_ex_ic AS CHECKBOX DEFAULT 'X'. "R3DK906903
SELECTION-SCREEN END OF BLOCK a1.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-s01.
SELECT-OPTIONS : s_kunnr FOR bsid-kunnr,
s_bukrs FOR t001-bukrs OBLIGATORY.
PARAMETERS : p_bdate LIKE sy-datum OBLIGATORY.
PARAMETERS: p_vender AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN END OF BLOCK b1.
SELECTION-SCREEN BEGIN OF BLOCK b2 WITH FRAME TITLE text-s11.
PARAMETERS : r_group RADIOBUTTON GROUP r1,
r_comp RADIOBUTTON GROUP r1.
SELECTION-SCREEN END OF BLOCK b2.
SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-s13.
PARAMETERS: p_print LIKE tsp03l-lname MATCHCODE OBJECT prin
OBLIGATORY DEFAULT 'locl'.
SELECTION-SCREEN END OF BLOCK b3.
SELECTION-SCREEN BEGIN OF BLOCK b4 WITH FRAME TITLE text-s14.
PARAMETERS: v_immed AS CHECKBOX DEFAULT 'X',
v_dele AS CHECKBOX DEFAULT 'X',
ch_email AS CHECKBOX.
*PARAMETERS:ch_down AS CHECKBOX.
SELECTION-SCREEN END OF BLOCK b4.
SELECTION-SCREEN END OF BLOCK a10.
AT SELECTION-SCREEN.
Selection Screen Validation.
PERFORM validate_selection_screen.
INITIALIZATION.
INITIALIZATION.
IF sy-sysid NE 'R3P'.
v_email = .
ENDIF.
START-OF-SELECTION.
START-OF-SELECTION.
IF p_vender = 'X'.
Fetch data from BSIK .
PERFORM fetch_data_vender.
Get Arrear Days
PERFORM get_arrear_days_vender.
ENDIF.
Fetch data from BSID and BSAD.
PERFORM fetch_data_from_bsid.
Get Arrear Days
PERFORM get_arrear_days.
Format Data as per selection.
PERFORM format_final_data.
Print sapscript
SORT i_last BY kunnr days DESCENDING.
LOOP AT i_last.
AT NEW kunnr.
CLEAR: i_final, x_kna1.
REFRESH: i_final, x_kna1.
PERFORM get_address.
PERFORM get_total.
ENDAT.
MOVE-CORRESPONDING i_last TO i_final.
i_final-xblnr = i_final-zuonr.
APPEND i_final.
CLEAR i_final.
AT END OF kunnr.
SORT i_final BY days DESCENDING inv_chk total DESCENDING.
PERFORM smart_from.
ENDAT.
ENDLOOP.
END-OF-SELECTION.
END-OF-SELECTION.
*& Form FETCH_DATA_FROM_BSID
text
FORM fetch_data_from_bsid.
fetch data from BSID into Internal table I_BSID.
SELECT *
FROM bsid
INTO TABLE i_bsid
WHERE bukrs IN s_bukrs AND
kunnr IN s_kunnr AND
budat LE p_bdate ."AND
BELNR in ('0090000231','1400000131').
Fetch data from BSAD into Internal table I_BSID.
SELECT *
FROM bsad
APPENDING TABLE i_bsid
WHERE bukrs IN s_bukrs AND
kunnr IN s_kunnr AND
budat LE p_bdate AND
augdt GT p_bdate." AND
DELETE i_bsid WHERE ( bukrs = '1500' OR bukrs = '3000' OR
bukrs = '1400' ) AND
( umsks = 'E' OR umskz = 'E' ).
*Exclude intercompany customers
IF p_ex_ic = 'X'.
DELETE i_bsid WHERE kunnr+0(2) EQ 'IC'.
ENDIF.
CLEAR sy-tfill.
DESCRIBE TABLE i_bsid LINES sy-tfill.
IF sy-tfill = 0.
MESSAGE i999 WITH ' No data selected for the selection Condition'.
STOP.
ENDIF.
ENDFORM. " FETCH_DATA_FROM_BSID
*& Form Get_Arrear_Days
text
FORM get_arrear_days.
SORT i_bsid BY bukrs belnr.
LOOP AT i_bsid.
for company code 1500 and 3000
IF i_bsid-bukrs EQ '1500' OR i_bsid-bukrs EQ '3000'.
MOVE i_bsid-xblnr TO i_bsid-belnr.
ENDIF.
MOVE i_bsid-bukrs TO itab_details-bukrs.
MOVE i_bsid-xblnr TO itab_details-xblnr.
MOVE i_bsid-belnr TO itab_details-belnr.
MOVE i_bsid-gjahr TO itab_details-gjahr.
MOVE i_bsid-kunnr TO itab_details-kunnr.
APPEND itab_details.
CLEAR itab_details.
CLEAR x_item.
AT NEW bukrs.
READ TABLE i_bsid INDEX sy-tabix.
CLEAR x_t001.
SELECT SINGLE * FROM t001
INTO x_t001
WHERE bukrs = i_bsid-bukrs.
ENDAT.
for company code 1500 and 3000 .
IF i_bsid-bukrs EQ '1500' OR i_bsid-bukrs EQ '3000'.
MOVE i_bsid-xblnr TO i_bsid-belnr.
ENDIF.
MOVE-CORRESPONDING i_bsid TO x_item.
x_item-koart = 'D'. " Debitor - Customer Indicator
x_item-konto = bsid-kunnr. " Debitor - Customer Number
x_item-dmshb = bsid-dmbtr.
x_item-wrshb = bsid-wrbtr.
Function module to get ARREAR days.
CALL FUNCTION 'ITEM_DERIVE_FIELDS'
EXPORTING
s_t001 = x_t001
s_bsegp = x_bsegp
key_date = p_bdate
CHANGING
s_item = x_item
EXCEPTIONS
bad_input = 1
OTHERS = 2.
IF sy-subrc = 0.
Populate I_TEMP_DATA for further processing.
i_temp_data-bukrs = i_bsid-bukrs.
i_temp_data-kunnr = i_bsid-kunnr.
i_temp_data-belnr = i_bsid-belnr.
i_temp_data-bldat = i_bsid-bldat.
i_temp_data-shkzg = i_bsid-shkzg.
i_temp_data-zfbdt = i_bsid-zfbdt.
i_temp_data-zterm = i_bsid-zterm.
i_temp_data-vbeln = i_bsid-vbeln.
i_temp_data-waers = i_bsid-waers.
IF x_item-verzn < 0.
x_item-verzn = 0.
ENDIF.
i_temp_data-zuonr = i_bsid-zuonr.
i_temp_data-days = x_item-verzn.
i_temp_data-gjahr = i_bsid-gjahr.
i_temp_data-kidno = i_bsid-kidno.
i_temp_data-rebzg = i_bsid-rebzg.
i_temp_data-xblnr = i_bsid-xblnr.
i_temp_data-sgtxt = i_bsid-sgtxt.
Changing the Sign
IF i_bsid-shkzg = 'H'.
i_temp_data-dmbe2 = i_temp_data-dmbe2 + ( -1 * i_bsid-dmbe2 ).
i_temp_data-dmbtr = i_temp_data-dmbtr + ( -1 * i_bsid-dmbtr ).
ELSE.
i_temp_data-dmbe2 = i_temp_data-dmbe2 + i_bsid-dmbe2.
i_temp_data-dmbtr = i_temp_data-dmbtr + i_bsid-dmbtr.
ENDIF.
i_temp_data-blart = i_bsid-blart.
*for doc type DR
IF i_bsid-blart = 'DR' AND i_bsid-bschl = '01'.
IF i_bsid-sgtxt IS INITIAL.
*Changed our phone number to
MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
ELSE.
MOVE i_bsid-sgtxt TO i_temp_data-vtext.
MOVE 'Financial Invoice' TO i_temp_data-vvtext.
ENDIF.
ENDIF.
*for doc type AB
IF i_bsid-blart = 'AB' AND
( i_bsid-bschl GE '01' AND i_bsid-bschl LE '19' ).
i_temp_data-bldat = i_bsid-zfbdt.
i_temp_data-xblnr = i_bsid-vbeln.
IF NOT i_bsid-sgtxt IS INITIAL.
*Changed our phone nuber to
MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
MOVE i_bsid-sgtxt TO i_temp_data-vtext.
MOVE 'Financial Doc' TO i_temp_data-vvtext.
ELSE.
MOVE i_bsid-sgtxt TO i_temp_data-vtext.
MOVE 'Financial Doc' TO i_temp_data-vvtext.
ENDIF.
ENDIF.
*for doc type DG
IF i_bsid-blart = 'DG' AND
( i_bsid-bschl GE '01' AND i_bsid-bschl LE '19' ).
i_temp_data-bldat = i_bsid-zfbdt.
i_temp_data-xblnr = i_bsid-vbeln.
IF i_bsid-sgtxt IS INITIAL.
*Changed our phone nuber to
MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
ELSE.
MOVE i_bsid-sgtxt TO i_temp_data-vtext.
MOVE 'Financial Doc' TO i_temp_data-vvtext.
ENDIF.
ENDIF.
*To display Debit memo and credit memo.
IF i_bsid-blart = 'DG'.
IF ( i_bsid-bschl GE '11' AND i_bsid-bschl LE '19' ).
MOVE 'Credit Memo' TO i_temp_data-vvtext.
ELSEIF ( i_bsid-bschl GE '01' AND i_bsid-bschl LE '09' ).
MOVE 'Debit Memo' TO i_temp_data-vvtext.
ENDIF.
ENDIF.
*for doc type DZ
IF i_bsid-blart = 'DZ' AND
( i_bsid-bschl GE '01' AND i_bsid-bschl LE '19' ).
IF i_bsid-sgtxt IS INITIAL.
*changed our phone number to
MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
ELSE.
MOVE i_bsid-sgtxt TO i_temp_data-vtext.
MOVE 'Cust Pmt' TO i_temp_data-vvtext.
ENDIF.
ENDIF.
*Document type DZ and posting key 15
IF i_bsid-blart = 'DZ' AND
i_bsid-bschl EQ '15'.
MOVE 'Cust Pmt' TO i_temp_data-vvtext.
ENDIF.
*Document type DZ and posting key 06.
IF i_bsid-blart = 'DZ' AND
i_bsid-bschl EQ '06'.
MOVE 'Debit' TO i_temp_data-vvtext.
ENDIF.
*Document type DA and posting key 04, 14.
IF i_bsid-blart = 'DA' AND
i_bsid-bschl EQ '04' OR
i_bsid-bschl EQ '14'.
MOVE 'Cust Pmt' TO i_temp_data-vvtext.
MOVE i_bsid-sgtxt TO i_temp_data-vtext.
IF i_bsid-sgtxt IS INITIAL.
MOVE 'Contact Flightsafety' TO i_temp_data-vtext.
ENDIF.
ENDIF.
ENDIF.
*billing period
IF i_bsid-blart = 'RV' AND i_bsid-bschl = '01'.
PERFORM billing_period USING i_temp_data-belnr
i_temp_data-vbeln.
ENDIF.
AT END OF belnr.
at end of zuonr.
APPEND i_temp_data.
CLEAR i_temp_data.
ENDAT.
ENDLOOP.
PERFORM material_details.
ENDFORM. " Get_Arrear_Days
*& Form FORMAT_FINAL_DATA
text
FORM format_final_data.
PERFORM pop_format_grp_curr_detail.
CLEAR: itab_temp, i_total.
REFRESH: itab_temp, i_total.
itab_temp] = itab[.
CLEAR itab.
REFRESH itab.
LOOP AT itab_temp.
CLEAR itab.
itab = itab_temp.
CLEAR: itab-matnr.
IF itab-belnr+0(2) = '14'.
*Adding two 00 for the left alignment.
CONCATENATE '00' itab-xblnr
INTO itab-inv_chk.
CONDENSE itab-inv_chk NO-GAPS.
itab-inv_chk = itab-xblnr.
itab-xblnr = itab-belnr.
ELSE.
itab-inv_chk = itab-belnr.
ENDIF.
COLLECT itab.
ENDLOOP.
CLEAR v_stat.
SORT itab BY days inv_chk total DESCENDING.
LOOP AT itab.
*To display Aging totals in usd (if v_stat ne f) for
*company code 1100,1300,2000.
IF itab-bukrs NE '1100' AND
itab-bukrs NE '1300' AND
itab-bukrs NE '2000'.
v_stat = 'F'.
ENDIF.
CLEAR: i_last-vvtext, tvzbt.
MOVE-CORRESPONDING itab TO i_last.
APPEND i_last.
CLEAR i_last.
ENDLOOP.
ENDFORM. " FORMAT_FINAL_DATA
*& Form POP_FORMAT_grp_CURR_DETAIL
text
FORM pop_format_grp_curr_detail.
Populating the Final Internal table for report by Group Currency.
CLEAR x_amt.
SORT i_temp_data.
LOOP AT i_temp_data.
CLEAR: v_count.
IF i_temp_data-sgtxt+0(10) = 'Spcfy in p'.
i_temp_data-sgtxt = i_temp_data-sgtxt+32(18).
MOVE i_temp_data-sgtxt TO i_temp_data-vtext.
MODIFY i_temp_data.
ENDIF.
IF r_comp = 'X'.
IF i_temp_data-days LT 0.
x_amt-amt00_ls = x_amt-amt00_ls + i_temp_data-dmbtr.
If between 1 and 30 Days.
ELSEIF i_temp_data-days GE 0 AND i_temp_data-days LE 30.
x_amt-00_30 = x_amt-00_30 + i_temp_data-dmbtr.
If between 31 and 60 Days.
ELSEIF i_temp_data-days GE 31 AND i_temp_data-days LE 60.
x_amt-31_60 = x_amt-31_60 + i_temp_data-dmbtr.
if between 61 and 90
ELSEIF i_temp_data-days GE 61 AND i_temp_data-days LE 90.
x_amt-61_90 = x_amt-61_90 + i_temp_data-dmbtr.
if between 91 and 120
ELSEIF i_temp_data-days GE 91 AND i_temp_data-days LE 120.
x_amt-91_120 = x_amt-91_120 + i_temp_data-dmbtr.
if > 120
ELSEIF i_temp_data-days GT 120.
x_amt-120pls = x_amt-120pls + i_temp_data-dmbtr.
ENDIF.
ELSE.
if the group currency is selected
IF i_temp_data-days LT 0.
x_amt-amt00_ls = x_amt-amt00_ls + i_temp_data-dmbe2.
If between 1 and 30 Days.
ELSEIF i_temp_data-days GE 0 AND i_temp_data-days LE 30.
x_amt-00_30 = x_amt-00_30 + i_temp_data-dmbe2.
If between 31 and 60 Days.
ELSEIF i_temp_data-days GE 31 AND i_temp_data-days LE 60.
x_amt-31_60 = x_amt-31_60 + i_temp_data-dmbe2.
if between 61 and 90
ELSEIF i_temp_data-days GE 61 AND i_temp_data-days LE 90.
x_amt-61_90 = x_amt-61_90 + i_temp_data-dmbe2.
if between 91 and 120
ELSEIF i_temp_data-days GE 91 AND i_temp_data-days LE 120.
x_amt-91_120 = x_amt-91_120 + i_temp_data-dmbe2.
if > 120
ELSEIF i_temp_data-days GT 120.
x_amt-120pls = x_amt-120pls + i_temp_data-dmbe2.
ENDIF.
ENDIF.
Get Customer Name.
SELECT SINGLE name1
INTO itab-name1
FROM kna1
WHERE kunnr = i_temp_data-kunnr.
Invoice and year
AT END OF rebzg.
READ TABLE i_temp_data INDEX sy-tabix.
itab-zuonr = i_temp_data-zuonr.
itab-bukrs = i_temp_data-bukrs.
itab-kunnr = i_temp_data-kunnr.
itab-belnr = i_temp_data-belnr.
itab-gjahr = i_temp_data-gjahr.
IF r_comp EQ 'X'.
itab-waers = i_temp_data-waers.
ELSE.
itab-waers = 'USD'.
ENDIF.
itab-zfbdt = i_temp_data-zfbdt.
itab-zterm = i_temp_data-zterm.
itab-amt00_30 = x_amt-amt00_ls + x_amt-00_30.
itab-amt31_60 = x_amt-31_60.
itab-amt61_90 = x_amt-61_90.
itab-amt91_120 = x_amt-91_120.
itab-amt120pls = x_amt-120pls.
itab-total = x_amt-amt00_ls + x_amt-00_30 +
x_amt-31_60 + x_amt-61_90 +
x_amt-91_120 + x_amt-120pls.
itab-kunnr_c = i_temp_data-kunnr_c.
itab-name_c = i_temp_data-name_c.
itab-kidno = i_temp_data-kidno.
itab-matnr = i_temp_data-matnr.
itab-inv_date = i_temp_data-inv_date.
itab-rebzg = i_temp_data-rebzg.
itab-xblnr = i_temp_data-xblnr.
itab-vtext = i_temp_data-vtext.
itab-sgtxt = i_temp_data-sgtxt.
itab-days = i_temp_data-days.
itab-bldat = i_temp_data-bldat.
itab-vvtext = i_temp_data-vvtext.
itab-zzihrez_e = i_temp_data-zzihrez_e.
itab-blart = i_temp_data-blart.
itab-plant = i_temp_data-plant.
Populating table.
APPEND: itab.
CLEAR : itab,
x_amt.
v_count = 1.
ENDAT.
IF v_count NE 1.
itab-zuonr = i_temp_data-zuonr.
itab-bukrs = i_temp_data-bukrs.
itab-kunnr = i_temp_data-kunnr.
itab-belnr = i_temp_data-belnr.
itab-gjahr = i_temp_data-gjahr.
itab-bldat = i_temp_data-bldat.
IF r_comp EQ 'X'.
itab-waers = i_temp_data-waers.
ELSE.
itab-waers = 'USD'.
ENDIF.
itab-zfbdt = i_temp_data-zfbdt.
itab-zterm = i_temp_data-zterm.
itab-kunnr_c = i_temp_data-kunnr_c.
itab-name_c = i_temp_data-name_c.
itab-kidno = i_temp_data-kidno.
itab-matnr = i_temp_data-matnr.
itab-inv_date = i_temp_data-inv_date.
itab-rebzg = i_temp_data-rebzg.
itab-xblnr = i_temp_data-xblnr.
itab-vtext = i_temp_data-vtext.
itab-sgtxt = i_temp_data-sgtxt.
itab-days = i_temp_data-days.
itab-zzihrez_e = i_temp_data-zzihrez_e.
itab-plant = i_temp_data-plant.
itab-vvtext = i_temp_data-vvtext.
itab-blart = i_temp_data-blart.
IF itab-matnr NE space.
APPEND itab.
CLEAR itab-plant.
ELSE.
ON CHANGE OF i_temp_data-kidno.
READ TABLE i_temp_data INDEX sy-tabix.
itab-zuonr = i_temp_data-zuonr.
itab-bukrs = i_temp_data-bukrs.
itab-kunnr = i_temp_data-kunnr.
itab-belnr = i_temp_data-belnr.
itab-gjahr = i_temp_data-gjahr.
itab-bldat = i_temp_data-bldat.
IF r_comp EQ 'X'.
itab-waers = i_temp_data-waers.
ELSE.
itab-waers = 'USD'.
ENDIF.
itab-zfbdt = i_temp_data-zfbdt.
itab-zterm = i_temp_data-zterm.
itab-amt00_30 = x_amt-amt00_ls + x_amt-00_30.
itab-amt31_60 = x_amt-31_60.
itab-amt61_90 = x_amt-61_90.
itab-amt91_120 = x_amt-91_120.
itab-amt120pls = x_amt-120pls.
itab-total = x_amt-amt00_ls + x_amt-00_30 +
x_amt-31_60 + x_amt-61_90 +
x_amt-91_120 + x_amt-120pls.
itab-kunnr_c = i_temp_data-kunnr_c.
itab-name_c = i_temp_data-name_c.
itab-kidno = i_temp_data-kidno.
itab-matnr = i_temp_data-matnr.
itab-inv_date = i_temp_data-inv_date.
itab-rebzg = i_temp_data-rebzg.
itab-xblnr = i_temp_data-xblnr.
itab-vtext = i_temp_data-vtext.
itab-sgtxt = i_temp_data-sgtxt.
itab-days = i_temp_data-days.
itab-zzihrez_e = i_temp_data-zzihrez_e.
itab-vvtext = i_temp_data-vvtext.
itab-plant = i_temp_data-plant.
APPEND itab.
CLEAR: x_amt-amt00_ls, x_amt-00_30, x_amt-31_60,
x_amt-61_90, x_amt-91_120 , x_amt-120pls.
ENDON.
ENDIF.
CLEAR: itab.
ENDIF.
ENDLOOP.
ENDFORM. " POP_FORMAT_grp_CURR_DETAIL
*& Form material_details
text
--> p1 text
<-- p2 text
FORM material_details.
SORT itab_details.
DELETE ADJACENT DUPLICATES FROM itab_details.
LOOP AT itab_details.
CLEAR: v_counter, v_gjahr, v_kunnr, v_prodh, v_vbeln,
v_vvtext, v_vtext.
v_gjahr = itab_details-gjahr.
v_kunnr = itab_details-kunnr.
*Invoice Date/Billing date
SELECT SINGLE fkdat FROM vbrk INTO v_inv_date
WHERE vbeln = itab_details-xblnr.
*material number, description and product hierarchy
SELECT matnr arktx prodh FROM vbrp
INTO (v_matnr, v_arktx, v_prodh)
WHERE vbeln = itab_details-xblnr AND
uepos = '00000'.
CLEAR: v_vdatu, v_posnr, v_auart, v_prctr, v_zzihrez,
v_kunnr_c, v_name1, v_name2, v_vtext, v_vvtext.
*Find the contract/order no
SELECT SINGLE vbelv posnv FROM vbfa INTO (v_vbeln, v_posnr)
WHERE vbeln = itab_details-xblnr
AND vbtyp_v IN ('C','G').
*delivery date, document type, plant and reservation no
SELECT SINGLE vbakvdatu vbakauart vbapprctr vbapzzihrez_e
INTO (v_vdatu, v_auart, v_prctr, v_zzihrez)
FROM vbak INNER JOIN vbap ON vbakvbeln = vbapvbeln
WHERE vbap~vbeln = v_vbeln AND
vbap~posnr = v_posnr AND
vbap~abgru = space.
*billing type
SELECT SINGLE * FROM vbkd WHERE vbeln = v_vbeln.
IF vbkd-bsark NE 'ZG01' OR vbkd-bsark NE 'ZO02'.
SELECT SINGLE vtext FROM t176t INTO v_vvtext
WHERE bsark = vbkd-bsark
AND spras EQ sy-langu.
ELSE.
MOVE 'One Time' TO v_vvtext.
ENDIF.
*getting only the reservation number (no text)
IF vbkd-ihrez_e+0(11) CO
'0123456789'.
ELSE.
v_zzihrez = space.
ENDIF.
*location
CONCATENATE '000000' v_zzihrez+0(4) INTO v_prctr.
*plant name
CLEAR v_plant.
SELECT SINGLE ktext FROM cepct INTO v_plant WHERE
prctr = v_prctr AND
spras = sy-langu.
*client no and name
SELECT SINGLE vbpakunnr kna1name1 kna1~name2
INTO (v_kunnr_c, v_name1, v_name2)
FROM vbpa INNER JOIN kna1 ON
vbpakunnr = kna1kunnr
WHERE vbpa~vbeln = v_vbeln AND
vbpa~parvw = 'Z3'.
CONCATENATE v_name1 v_name2 INTO v_name_c
SEPARATED BY space.
READ TABLE i_temp_data WITH KEY bukrs = itab_details-bukrs
belnr = itab_details-belnr
gjahr = itab_details-gjahr.
IF sy-subrc = 0.
CLEAR: v_tabix.
v_tabix = sy-tabix.
IF v_counter IS INITIAL.
MOVE v_plant TO i_temp_data-plant.
MOVE v_zzihrez TO i_temp_data-zzihrez_e.
MOVE v_kunnr_c TO i_temp_data-kunnr_c.
MOVE v_name_c TO i_temp_data-name_c.
MOVE v_gjahr TO i_temp_data-gjahr.
MOVE v_kunnr TO i_temp_data-kunnr.
IF v_auart EQ 'ZOTO' AND i_temp_data-inv_date IS INITIAL.
MOVE v_inv_date TO i_temp_data-inv_date.
ELSEIF i_temp_data-inv_date IS INITIAL.
MOVE v_vdatu TO i_temp_data-inv_date.
ENDIF.
IF i_temp_data-vtext IS INITIAL.
MOVE v_arktx TO i_temp_data-vtext.
ENDIF.
IF i_temp_data-vvtext IS INITIAL.
MOVE v_vvtext TO i_temp_data-vvtext.
ENDIF.
MODIFY i_temp_data INDEX v_tabix.
CLEAR i_temp_data.
v_counter = 'T'.
CLEAR: v_matnr,v_arktx,v_vbeln,v_name_c,v_vtext, v_prodh,
v_kunnr_c, v_name1,v_name2, v_vdatu, v_vvtext.
ELSE.
CLEAR:i_temp_data-dmbe2, i_temp_data-dmbtr. " i_temp_data-wrbtr
MOVE v_matnr TO i_temp_data-matnr.
MOVE v_plant TO i_temp_data-plant.
MOVE v_zzihrez TO i_temp_data-zzihrez_e.
MOVE v_kunnr_c TO i_temp_data-kunnr_c.
MOVE v_name_c TO i_temp_data-name_c.
MOVE v_gjahr TO i_temp_data-gjahr.
MOVE v_kunnr TO i_temp_data-kunnr.
IF v_auart EQ 'ZOTO' AND i_temp_data-inv_date IS INITIAL.
MOVE v_inv_date TO i_temp_data-inv_date.
ELSEIF i_temp_data-inv_date IS INITIAL.
MOVE v_vdatu TO i_temp_data-inv_date.
ENDIF.
MOVE v_arktx TO i_temp_data-vtext.
APPEND i_temp_data.
CLEAR i_temp_data.
ENDIF.
ENDIF.
ENDSELECT.
CLEAR:
i_temp_data-kunnr_c,
i_temp_data-name_c,i_temp_data-inv_date,
i_temp_data-vtext.
CLEAR: v_matnr,v_arktx,v_vbeln,v_name_c,
v_kunnr_c, v_name1,v_name2,v_inv_date, v_vdatu,
v_vtext, v_prodh.
ENDLOOP.
ENDFORM. " material_details
*& Form get_address
text
FORM get_address.
Get Address
CLEAR: kna1, x_kna1, first_name, last_name,pafkt, lang, v_land.
SELECT SINGLE * FROM kna1 INTO kna1 WHERE kunnr = i_last-kunnr.
SELECT SINGLE name1 namev pafkt parla FROM knvk
INTO (last_name, first_name, pafkt, lang)
WHERE kunnr = i_last-kunnr
AND abtnr = '0003'. "financial department
IF sy-subrc NE 0.
SELECT SINGLE name1 namev pafkt parla FROM knvk
INTO (last_name, first_name, pafkt, lang)
WHERE kunnr = i_last-kunnr.
ENDIF.
IF lang = ' '.
lang = 'E'.
ENDIF.
SELECT SINGLE vtext FROM tpfkt INTO x_kna1-ptext
WHERE pafkt = pafkt
AND spras = lang.
SELECT SINGLE name1 name2 street country FROM
adrc INTO (x_kna1-name1, x_kna1-name2,
x_kna1-street, v_land)
WHERE addrnumber = kna1-adrnr.
SELECT SINGLE landx FROM t005t INTO x_kna1-landx WHERE land1 = v_land
AND spras = lang.
TRANSLATE x_kna1-landx TO UPPER CASE. "#EC SYNTCHAR added by sony
MOVE kna1-kunnr TO x_kna1-kunnr.
MOVE kna1-ort01 TO x_kna1-ort01.
MOVE kna1-regio TO x_kna1-regio.
MOVE kna1-pstlz TO x_kna1-pstlz.
MOVE p_bdate TO x_kna1-agdate.
APPEND x_kna1.
CLEAR: x_kna1.
ENDFORM. " get_addres
*& Form fetch_data_vender
text
--> p1 text
<-- p2 text
FORM fetch_data_vender.
SELECT lifnr FROM kna1 INTO TABLE itab_vender
WHERE kunnr IN s_kunnr.
LOOP AT itab_vender.
Fetch data from BSIK into Internal table I_BSIK.
SELECT *
FROM bsik
APPENDING TABLE i_bsik
WHERE bukrs IN s_bukrs AND
lifnr EQ itab_vender-vender AND
budat LE p_bdate AND
blart IN ('KA', 'KG', 'KR', 'KZ', 'KF').
Fetch data from BSAK into Internal table I_BSAK.
SELECT *
FROM bsak "#EC ENHOK "added by sony 06/05/08
APPENDING TABLE i_bsik
WHERE bukrs IN s_bukrs AND
lifnr EQ itab_vender-vender AND
budat LE p_bdate AND
augdt GT p_bdate AND
blart IN ('KA', 'KG', 'KR', 'KZ', 'KF').
ENDLOOP.
DELETE i_bsik WHERE ( bukrs = '1500' OR bukrs = '3000' ) AND
( umsks = 'E' OR umskz = 'E' ).
ENDFORM. " fetch_data_vender
*& Form GET_ARREAR_DAYS_vender
text
--> p1 text
<-- p2 text
FORM get_arrear_days_vender.
SORT i_bsik BY mandt bukrs belnr.
CLEAR: v_tabix.
LOOP AT i_bsik.
v_tabix = sy-tabix.
SELECT SINGLE * FROM kna1 WHERE lifnr = i_bsik-lifnr.
MOVE i_bsik-bukrs TO itab_details-bukrs.
MOVE i_bsik-xblnr TO itab_details-xblnr.
MOVE i_bsik-belnr TO itab_details-belnr.
MOVE i_bsik-gjahr TO itab_details-gjahr.
MOVE kna1-kunnr TO itab_details-kunnr.
APPEND itab_details.
CLEAR itab_details.
CLEAR x_item.
AT NEW bukrs.
*company code details
READ TABLE i_bsik INDEX sy-tabix.
CLEAR x_t001.
SELECT SINGLE * FROM t001
INTO x_t001
WHERE bukrs = i_bsik-bukrs.
ENDAT.
MOVE-CORRESPONDING i_bsik TO x_item.
x_item-koart = 'D'. " Debitor - Customer Indicator
x_item-konto = kna1-kunnr. " Debitor - Customer Number
x_item-dmshb = bsik-dmbtr.
x_item-wrshb = bsik-wrbtr.
Function module to get ARREAR days.
CALL FUNCTION 'ITEM_DERIVE_FIELDS'
EXPORTING
s_t001 = x_t001
s_bsegp = x_bsegp
key_date = p_bdate
CHANGING
s_item = x_item
EXCEPTIONS
bad_input = 1
OTHERS = 2.
IF sy-subrc = 0.
Populate I_TEMP_DATA for further processing.
i_temp_data-bukrs = i_bsik-bukrs.
i_temp_data-kunnr = kna1-kunnr.
i_temp_data-belnr = i_bsik-belnr.
i_temp_data-bldat = i_bsik-bldat. "Document date in document
i_temp_data-shkzg = i_bsik-shkzg.
i_temp_data-zfbdt = i_bsik-zfbdt. " Base line date
i_temp_data-zterm = i_bsik-zterm. "Terms of payment key
i_temp_data-waers = i_bsik-waers.
i_temp_data-days = x_item-verzn. " days in arrs
i_temp_data-gjahr = i_bsik-gjahr. " year
i_temp_data-kidno = i_bsik-kidno. " Payment Reference
i_temp_data-rebzg = i_bsik-rebzg. " Number of the Invoice the
"Transaction Belongs to
i_temp_data-xblnr = i_bsik-xblnr.
i_temp_data-sgtxt = i_bsik-sgtxt. " Item Text
Changing the Sign
IF i_bsik-shkzg = 'H'.
i_temp_data-dmbe2 = -1 * i_bsik-dmbe2.
i_temp_data-dmbtr = -1 * i_bsik-dmbtr.
ELSE.
i_temp_data-dmbe2 = i_bsik-dmbe2.
i_temp_data-dmbtr = i_bsik-dmbtr.
ENDIF.
ENDIF.
APPEND i_temp_data.
CLEAR i_temp_data.
ENDLOOP.
PERFORM material_details.
ENDFORM. " Get_Arrear_DaysENDFORM.
" GET_ARREAR_DAYS_vender
*& Form convert_pdf
text
--> p1 text
<-- p2 text
FORM convert_pdf.
CLEAR: tsp01.
CLEAR: mtab_pdf, mi_bytecount.
REFRESH mtab_pdf.
FREE mtab_pdf.
***convert to PDF format
CALL FUNCTION 'CONVERT_OTF'
EXPORTING
format = 'PDF'
IMPORTING
bin_filesize = mi_bytecount
TABLES
otf = i_otf_final
lines = mtab_pdf
EXCEPTIONS
err_max_linewidth = 1
err_format = 2
err_conv_not_possible = 3
OTHERS = 4.
IF sy-subrc 0.
ENDIF.
CONDENSE itab-kunnr NO-GAPS.
CONCATENATE 'C:\' itab-kunnr '_' sy-datum '.pdf' INTO downfile.
IF ch_down = 'X'.
PERFORM download_pdf.
ENDIF.
IF ch_email = 'X'.
PERFORM send_email.
ENDIF.
ENDFORM. " convert_pdf
*& Form download_pdf
text
--> p1 text
<-- p2 text
FORM download_pdf.
DATA: i_downfile TYPE string.
i_downfile = downfile.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
bin_filesize = mi_bytecount
filename = i_downfile
filetype = 'BIN'
IMPORTING
FILELENGTH =
TABLES
data_tab = mtab_pdf[]
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.
ENDIF.
ENDFORM. " download_pdf
*& Form send_email
text
--> p1 text
<-- p2 text
FORM send_email.
CLEAR: packing_list[],
pdf[],
contents_txt[],
contents_hex[],
receivers[],
att_pos,
document_data,
esubject,emsgs[],
w_contents_hex.
PERFORM packing_list.
PERFORM set_data.
IF v_check NE 'X'.
PERFORM send_email_message.
ENDIF.
ENDFORM. " send_email
*& Form packing_list
text
--> p1 text
<-- p2 text
FORM packing_list.
Concatenate the PDF material into the attachments table.
PERFORM append_pdf_to_attachments USING mi_bytecount.
Describe the attachment
CLEAR packing_list.
REFRESH packing_list.
packing_list-transf_bin = 'X'.
ADD 1 TO att_pos.
packing_list-body_start = att_pos.
DESCRIBE TABLE contents_hex LINES att_pos.
packing_list-body_num = att_pos.
packing_list-doc_type = 'PDF'.
CONCATENATE 'Statement Date'
sy-datum4(2) '/' sy-datum6(2) '/'
sy-datum+2(2) '-' 'Customer no -' itab-kunnr
INTO packing_list-obj_descr.
packing_list-obj_langu = 'E'.
packing_list-doc_size = mi_bytecount.
APPEND packing_list.
ENDFORM. " packing_list
*& Form set_data
text
--> p1 text
<-- p2 text
FORM set_data.
CLEAR: sy-tfill.
DESCRIBE TABLE contents_hex LINES sy-tfill.
IF sy-tfill GT 0.
DATA: lines TYPE TABLE OF tline WITH HEADER LINE.
By this point, the attachments have been created. Now we supply body
text and set up the recipients.
CONCATENATE 'Customer Statement for Customer - '
itab-kunnr esubject INTO esubject.
The message header information
CLEAR document_data.
document_data-obj_name = 'ZWRAPPER'.
document_data-obj_descr = esubject.
document_data-obj_langu = 'E'.
document_data-obj_prio = '1'.
CLEAR: contents_txt, contents_txt], itext[, itext.
IF sy-sysid NE 'R3P'.
CONCATENATE 'Please ignore this mail. This is part of testing from '
sy-sysid INTO contents_txt SEPARATED BY space.
APPEND contents_txt.
CLEAR: contents_txt.
APPEND contents_txt.
ENDIF.
CLEAR vv_text.
CONCATENATE 'Enter Body of the Email and SAVE it for customer '
itab-kunnr itab-name1 INTO vv_text SEPARATED BY space.
EDITOR-CALL FOR itext TITLE vv_text.
LOOP AT itext.
contents_txt = itext-text.
APPEND contents_txt.
ENDLOOP.
Describe the body data. This descriptor has to be the first, in front
of all the attachments.
CLEAR packing_list.
packing_list-transf_bin = space.
packing_list-body_start = 1.
DESCRIBE TABLE contents_txt LINES packing_list-body_num.
packing_list-doc_type = 'RAW'.
packing_list-obj_langu = 'E'.
INSERT packing_list INDEX 1.
Set up the recipients.
CLEAR: receivers, receivers[], sy-tfill.
CLEAR: usr21, adr6.
*find email address.
IF sy-sysid = 'R3P'.
SELECT prsnr FROM knvk INTO knvk-prsnr WHERE kunnr = itab-kunnr.
SELECT SINGLE adrnr name1 name2 FROM kna1 INTO
(kna1-adrnr, kna1-name1, kna1-name2)
WHERE kunnr = itab-kunnr.
SELECT SINGLE smtp_addr INTO v_email FROM adr6
WHERE addrnumber EQ kna1-adrnr.
IF sy-subrc NE 0.
CLEAR: v_email.
ELSE.
EXIT.
ENDIF.
ENDSELECT.
ENDIF.
*find the user email address.
CLEAR: usr21, adr6.
SELECT SINGLE * FROM usr21 WHERE bname = sy-uname.
CLEAR adr6.
SELECT SINGLE * FROM adr6 WHERE addrnumber = usr21-addrnumber AND
persnumber = usr21-persnumber.
v_ccemail = adr6-smtp_addr.
CLEAR:i_fields.
REFRESH:i_fields.
i_fields-tabname = 'COMPMSG'.
i_fields-fieldname = 'TEXT'.
i_fields-fieldtext = 'Email'.
i_fields-value = v_email.
APPEND i_fields.
CLEAR i_fields.
i_fields-tabname = 'T100'.
i_fields-fieldname = 'TEXT'.
i_fields-fieldtext = 'CC to'.
i_fields-value = v_ccemail.
APPEND i_fields.
CLEAR i_fields.
CLEAR v_returncode.
CALL FUNCTION 'POPUP_GET_VALUES'
EXPORTING
popup_title = 'Email Address.'
start_column = '25'
start_row = '2'
IMPORTING
returncode = v_returncode
TABLES
fields = i_fields
EXCEPTIONS
error_in_fields = 1
OTHERS = 2.
IF sy-subrc 0.
ENDIF.
IF v_returncode NE 'A'.
*find the new condition value (table name and filed name took itfor char
LOOP AT i_fields WHERE tabname = 'COMPMSG' AND fieldname = 'TEXT'.
v_email = i_fields-value.
ENDLOOP.
LOOP AT i_fields WHERE tabname = 'T100'
AND fieldname = 'TEXT'.
v_ccemail = i_fields-value.
ENDLOOP.
ENDIF.
receivers-receiver = v_email.
receivers-rec_type = 'U'. "..assume it's an internet address
APPEND receivers.
receivers-receiver = v_ccemail.
receivers-rec_type = 'U'.
receivers-copy = 'X'.
APPEND receivers.
SORT receivers BY receiver.
DELETE ADJACENT DUPLICATES FROM receivers COMPARING receiver.
ENDIF.
CLEAR: v_check.
IF v_email = space.
v_check = 'X'.
MOVE itab-kunnr TO ioutput-kunnr.
MOVE v_kname TO ioutput-kname.
MOVE v_email TO ioutput-email.
MOVE 'X' TO ioutput-error.Hi
Looks like BASIS issue.
Pls check the OSS Note - Note 787418 - Sent documents are not readable after upgrade
Pls contact your BASIS person
Regards
MD
Maybe you are looking for
-
I am currently creating a list box on a selection screen. I have created the box, but I am unable to populate it with data. After looking through many resources and several threads through this forum I am still unable to populate it. I have follow
-
My iPad is locked and it says to connect to iTunes, and iTunes will not let me connect.
My iPad is locked and it says to connect to iTunes, and iTunes will not let ,me connect.
-
My profile on Windows 7 home is set to Administrator and always has been i.e. before iTunes was originally installed. I haven't backed my phone up in a while but found my 3GS stating that it needed to be updated before I could make any more calls.
-
Security question JAAS: performing EJB lookup and authorized creation how?
Basic question is: How can I perform a lookup from within a servlet to a stateless EJB in the same JVM and apply credentials to this EJB, so method calls perform following the authorization rules supplied on the EJB? Trying to get this thing to work
-
A friend of mine downloaded an app from the internet onto my iPod Touch 4 so I could play pokemon on my iPod, I deleted the app but now iTunes and the App Store won't open, they say that the certificate for this server is invalid. What should I do?