WRBTR and DMBTR
Hi
I am working on LSMW using BAPI(BUS6035). I am facing problem in mapping of DMBTR as it is not present in BAPI (BAPI_ACC_DOCUMENT_POST).
How to map this field???
Thanks in Advance
Dear Kirti,
see the code:
after insert a doc currency and amount value, add for local currency,
lt_curr-itemno_acc = ld_itemno.
lt_curr-curr_type = '10'.
lt_curr-currency = t_itab-waers1.
lt_curr-amt_doccur = t_itab-dmbtr.
IF t_itab-shkzg = 'H'.
lt_curr-amt_doccur = lt_curr-amt_doccur * -1.
ENDIF.
APPEND lt_curr. CLEAR lt_curr.
Regards,
Abbas.
Similar Messages
-
PPDIT Table, Difference between WRBTR and FWBAS
Hi everyone.
I would like to know the difference between two columns in the PPDIT table, the columns both have the header of "Amount" when executed in se16.
se11 shows that they are two different fields: WRBTR and FWBAS. the FWBAS column always shows the amount of 0.00 in se16 while WRBTR shows positive and negative values.
I'm a newbie in SAP so I hope I can get some help. ThanksYou can refer to https://metalink2.oracle.com/metalink/plsql/ml2_documents.showDocument?p_database_id=NOT&p_id=404152.1
In addition, eTRM should be also helpful. -
Conversion of MENGE and DMBTR fields
Hi Guru's,
Here I'm facing some problem with the conversion
I have to convert price field(EKBE-DMBTR) from 123.45 of data type CURR to 12345 of data type CHAR, and
also quantity field(EKBE-MENGE) from 123.456 of data type QUAN to 123456 of data type Numeric which are in EKBE table.Hi,
Use WRITE statement to convert the currency value to a character value.
WRITE <curr field> TO <char field> CURRENCY <currency>.
or
Try out this FM.
TRS_CONVERT_AMOUNT_TO_TEXT
For qty also you can use write.
<b>Reward if helpful.</b> -
Internal table field does not show data.
hello experts,
I am currently modifying a code in a report where it shows PO's and it amount, downpayment, Invoice, GR, payment and balance. Now the problem is, some of the PO amount(it gets the amount from ekpo-netwr) does not show on the report output. the field is t_amount-netwr. I really need help on this one guys. Thanks and take care!
PERFORM process_with_budat.
FORM process_with_budat.
DELETE t_pohistory WHERE hist_type <> 'A'
AND hist_type <> 'E'
AND hist_type <> 'Q'.
LOOP AT t_account.
DELETE it_dtl WHERE ebeln = t_account-ebeln
AND psphi IS initial.
DELETE t_ekpo WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
t_proj-ebelp = t_account-po_item.
SELECT SINGLE psphi FROM prps INTO t_proj-psphi
WHERE posid = t_account-wbs_elem_e.
CHECK sy-subrc = 0.
LOOP AT t_pohistory WHERE po_item = t_account-po_item
AND ebeln = t_account-ebeln.
t_amount-ebeln = t_account-ebeln.
t_amount-psphi = t_proj-psphi.
ON CHANGE OF t_pohistory-po_item.
CLEAR v_netwr.
SELECT SINGLE netwr FROM ekpo INTO v_netwr
WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
t_amount-netwr = v_netwr.
ENDON.
IF v_ebeln IS INITIAL AND v_ebelp IS INITIAL.
CLEAR v_netwr.
SELECT SINGLE netwr FROM ekpo INTO v_netwr
WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
t_amount-netwr = v_netwr.
v_ebeln = t_account-ebeln.
v_ebelp = t_account-po_item.
ELSEIF v_ebeln <> t_account-ebeln AND
v_ebelp <> t_account-po_item.
CLEAR v_netwr.
SELECT SINGLE netwr FROM ekpo INTO v_netwr
WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
t_amount-netwr = v_netwr.
v_ebeln = t_account-ebeln.
v_ebelp = t_account-po_item.
ELSEIF v_ebeln = t_account-ebeln AND
v_ebelp <> t_account-po_item.
CLEAR v_netwr.
SELECT SINGLE netwr FROM ekpo INTO v_netwr
WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
t_amount-netwr = v_netwr.
v_ebeln = t_account-ebeln.
v_ebelp = t_account-po_item.
ENDIF.
CHECK NOT t_amount-psphi IS INITIAL.
if t_pohistory-pstng_date LE pa_augdt.
IF t_pohistory-pstng_date IN so_augdt.
IF t_pohistory-db_cr_ind = 'H'.
t_pohistory-val_loccur = - t_pohistory-val_loccur.
t_pohistory-val_forcur = - t_pohistory-val_forcur.
t_pohistory-cl_val_loc = - t_pohistory-cl_val_loc.
ENDIF.
IF t_pohistory-hist_type = 'A'.
IF t_pohistory-currency <> 'PHP'.
t_amount-dpamt = t_amount-dpamt + t_pohistory-val_forcur.
ELSE.
t_amount-dpamt = t_amount-dpamt + t_pohistory-val_loccur.
ENDIF.
ELSEIF t_pohistory-hist_type = 'E'.
IF t_pohistory-currency <> 'PHP'.
t_amount-gramt = t_amount-gramt + t_pohistory-val_forcur.
ELSE.
t_amount-gramt = t_amount-gramt + t_pohistory-val_loccur.
ENDIF.
ELSEIF t_pohistory-hist_type = 'Q'.
IF t_pohistory-currency <> 'PHP'.
t_amount-iramt = t_amount-iramt + t_pohistory-val_forcur.
ELSE.
t_amount-iramt = t_amount-iramt + t_pohistory-val_loccur.
ENDIF.
ENDIF.
IF t_pohistory-currency <> 'PHP'.
IF t_pohistory-val_loccur = 0 OR
t_pohistory-val_forcur = 0.
t_amount-tramt = t_amount-iramt.
t_amount-tramt = t_amount-dpamt.
ELSE.
t_amount-tramt = t_amount-iramt.
ENDIF.
ELSE.
t_amount-tramt = t_amount-iramt.
t_amount-tramt = t_pohistory-cl_val_loc + t_amount-dpamt.
ENDIF.
IF NOT t_pohistory-cl_val_loc IS INITIAL.
CONCATENATE t_pohistory-mat_doc t_pohistory-doc_year
INTO bkpf-awkey.
SELECT SINGLE * FROM bkpf
WHERE awkey = bkpf-awkey.
*AVH - removed wrbtr and dmbtr from selection
SELECT augdt augbl shkzg FROM bsak
INTO (bsak-augdt,bsak-augbl,bsak-shkzg)
WHERE bukrs = bkpf-bukrs
AND gjahr = bkpf-gjahr
AND belnr = bkpf-belnr.
*AVH
if not bsak-augbl is initial.
select belnr gjahr from bsak
into (bsak-belnr, bsak-gjahr)
where bukrs = bkpf-bukrs
and belnr = bkpf-belnr
and gjahr = bkpf-gjahr.
select awkey from bkpf
into v_bkpf_aw
where bukrs = 'GLOB'
and belnr = bsak-belnr
and gjahr = bsak-gjahr.
w_len = strlen( v_bkpf_aw ).
w_off = w_len - 4.
v_awkey_1 = v_bkpf_aw+0(10).
v_awkey_2 = v_bkpf_aw+w_off(4).
select single dmbtr wrbtr from ekbe
into (ekbe-dmbtr, ekbe-wrbtr)
where belnr = v_awkey_1
and gjahr = v_awkey_2.
*AVH - Changed all bsak-wrbtr to ekbe-wrbtr and dmbtr to ekbe-dmbtr.
IF bsak-shkzg = 'H'.
ekbe-dmbtr = - ekbe-dmbtr.
ekbe-wrbtr = - ekbe-wrbtr.
ENDIF.
IF t_pohistory-currency <> 'PHP'.
IF bsak-augdt GT pa_augdt.
IF bsak-augdt IN so_augdt.
t_amount-tramt = t_amount-tramt + ekbe-wrbtr.
ENDIF.
ELSE.
IF bsak-augdt GT pa_augdt.
IF bsak-augdt IN so_augdt.
t_amount-tramt = t_amount-tramt + ekbe-dmbtr.
ENDIF.
ENDIF.
endselect.
endselect.
endselect.
endif.
ENDSELECT.
ENDIF.
IF t_account-distr_perc <> 0.
t_amount-dpamt = ( t_account-distr_perc *
t_amount-dpamt ) / 100.
t_amount-gramt = ( t_account-distr_perc *
t_amount-gramt ) / 100.
t_amount-iramt = ( t_account-distr_perc *
t_amount-iramt ) / 100.
t_amount-tramt = ( t_account-distr_perc *
t_amount-tramt ) / 100.
ENDIF.
ENDIF.
IF t_amount-tramt < 0.
t_amount-tramt = 0.
ENDIF.
t_amount-tramt = t_amount-iramt.
t_amount-blamt = t_amount-netwr - t_amount-tramt.
COLLECT t_amount. CLEAR t_amount.
APPEND t_proj.
ENDLOOP.
IF sy-subrc <> 0.
CLEAR v_netwr.
SELECT SINGLE netwr FROM ekpo INTO v_netwr
WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
t_amount-ebeln = t_account-ebeln.
t_amount-psphi = t_proj-psphi.
t_amount-tramt = t_amount-iramt.
t_amount-blamt = t_amount-netwr - t_amount-tramt.
COLLECT t_amount. CLEAR t_amount.
APPEND t_proj.
ENDIF.
ENDLOOP.
endform.
**This is where it transfers the data**
LOOP AT t_amount.
it_dtl-netwr = t_amount-netwr.
it_dtl-dpamt = t_amount-dpamt.
it_dtl-gramt = t_amount-gramt.
it_dtl-iramt = t_amount-iramt.
it_dtl-tramt = t_amount-tramt.
it_dtl-blamt = t_amount-blamt.
MODIFY it_dtl TRANSPORTING netwr dpamt gramt
iramt tramt blamt
WHERE ebeln = t_amount-ebeln
AND psphi = t_amount-psphi.
CLEAR it_dtl.
ENDLOOP.hi ,
just place the code and check for a particular po if its there inthe ekpo table then it has to get it for ur select single query .
but ur logic is build on if --- endif.check this option first of all.
if in the debugging u see the value then as u say in the report output u r not able to see the value then the problem will be space alignment also.
check the value in debugging and let us know first of all . okay
vijay.
IF v_ebeln IS INITIAL AND v_ebelp IS INITIAL.
CLEAR v_netwr.
SELECT SINGLE netwr FROM ekpo INTO v_netwr
WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
break-point.
t_amount-netwr = v_netwr.
v_ebeln = t_account-ebeln.
v_ebelp = t_account-po_item.
ELSEIF v_ebeln <> t_account-ebeln AND
v_ebelp <> t_account-po_item.
CLEAR v_netwr.
SELECT SINGLE netwr FROM ekpo INTO v_netwr
WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
break-point.
t_amount-netwr = v_netwr.
v_ebeln = t_account-ebeln.
v_ebelp = t_account-po_item.
ELSEIF v_ebeln = t_account-ebeln AND
v_ebelp <> t_account-po_item.
CLEAR v_netwr.
SELECT SINGLE netwr FROM ekpo INTO v_netwr
WHERE ebeln = t_account-ebeln
AND ebelp = t_account-po_item.
break-point.
t_amount-netwr = v_netwr. -
Hi Sapiens,
I have a very peculiar doubt. I have set the currency INR to 3 decimal places. After posting a document when i check the same information in BSEG, the amount updated in PSWBT is correct (ex 900.000) but the amount updated in DMBTR and WRBTR in (9000.00)
Please advise me on the same.
Regards
MSHi,
bseg-wrbtr (and dmbtr) are correct
and always fields with <b>2</b> decimals.
You can depict your value fields,
if you have customized table tcurx, with the command:
write zfield currency bkpf-waers. (here INR)
regards Andreas -
See I have this code.
with parameters
PARAMETERS: pdate(6) TYPE n OBLIGATORY,
tble1(20) TYPE C OBLIGATORY,
tble2(20) TYPE C OBLIGATORY,
ccode(20) TYPE C.
My job is to output a Report should show all BUKRS, INVNO, sum(WRBTR) and sum(DMBTR) where the sum(WRBTR) and sum(DMBTR) do not match between Table 1 and Table 2. pdate format is YYYYMM and ccode in this case is the BUKRS field.
This is what I have
SELECT BUKRS BELNR SUM( WRBTR ) SUM( DMBTR ) FROM ZISZT_ZPDPLD INTO zpdpld_line GROUP BY BUKRS BELNR.
APPEND zpdpld_line to zpdpld_itab.
ENDSELECT.
Now how do I narrow the fields down since I have to take into consideration the ccode, as well as the pdate??Oh Sorry about that. See I have these parameters:
PARAMETERS: pdate(6) TYPE n OBLIGATORY,
tble1(20) TYPE C OBLIGATORY,
tble2(20) TYPE C OBLIGATORY,
ccode(20) TYPE C.
in my code. pdate is YYYYMM ccode is optional while table1 and table 2 are the table names. my goal is to output a report that lists the unmatched sum of certain fields in table 1 and 2.
Lets sat field DMBRT AND WRBTR. btw, both tables has these fields. I have to compare the sum of the two tables and output it if there is no match. Now. Before outputting there is a rule. Which is to group them by BUKRS, which in this case is the ccode in the parameter. first i have to group them by bukrs then in the group get the sum and match it with the other table with the same bukrs, if there is not a match, it should be outputted. my problem now is, the pdate. because there is also a field in the table BUDAT with format YYYYMMDD. my pdate parameter is only YYYYMM. I am able to change the table's parameter to match th pdate. but how can i do all these matches?
So far my code is.
SELECT BUKRS BELNR SUM( WRBTR ) SUM( DMBTR ) FROM ZISZT_ZPDPLD INTO zpdpld_line GROUP BY BUKRS BELNR.
IF ccode+(1) NE ''.
IF ccode EQ zpdpld_line-BUKRS.
APPEND zpdpld_line to zpdpld_itab.
ENDIF.
ENDIF.
ENDSELECT.
basically it gets the ccode (BUKRS) the sum wrbtr and dmbtr as well as the document number (BELNR) from the table ZISZT_ZPDPLD(tble1, it always has to be ZISZT_ZPDPLD). Now my problem is, now i am able to group them by BUKRS, able to get the sum, able to compare it with ccode. But how can I compare it with pdate?. I can't make
SELECT BUKRS BUDAT(pdate) BELNR SUM(WRBTR) SUM(DMBTR) FROM ZISZT_ZPDPLD INTO..
since it is not one of the GROUP BY conditions. But I still have to compare it before appending it because it is one of the conditions of my program. Hehe is it clear or not? -
Currency Field on the custom sceen
Hi Friends
I have developed a custom screen and the input fields are the custom table fields.
I have created a work are in the program for that custom table and placed them on
the screen, now my problem is I have to currency fields (WRBTR and DMBTR), while
entering amounts in those fields, depend on the currency type, some times the decimal
place may have 2 or 3 or 4..5 like that. But now it is taking only two decimals irrespective
of the currency type.
Can you anyone please help me out how to set this, because in my scenario they
will be having morethan 2 decimals.
Thanks in Advance
Praveenhi,
in database table the field WRBTR has only 2 decimal palces.
so u are not able to giving 3 or 4 decimal for that you have to go to sap.service.com.
procedure : open the database table in change mode . when u click on change he asked access key
R3TR-TABL-RBMA
700
give its in sap.services.com .
but for that you have to user id & password .
after that u can increase the length of decimal places in database table .
reagrds
aniruddh -
hi all
I'm new for ABAP OOPS, I want to know about abap oops concept. Can you any one explain about that i want simple example.
with regards.
Muthukumar.KHi Muthu,
Please check out transaction ABAPDOCU. It contains multiple examples on ABAP Objects. Also, browse this site for more examples on ABAP Objects. I also have included a sample report that I did using ABAP Objects. Please check it out. Hope it helps...
P.S. Please award points if it helps...
*==================================================================
* Program Name : ZFR_FOREX_REV_ACCTG
* Author : Aris Hidalgo
* Date Created : August 3, 2006
* Description : Show the exchange rate for a given range of 7 years
*==================================================================
REPORT zfr_forex_rev_acctg
NO STANDARD PAGE HEADING
LINE-SIZE 500
LINE-COUNT 0
MESSAGE-ID zz.
* Data dictionary table/s *
TABLES: bsis,
bsas,
tcurr,
t001.
* Global Structure/s *
TYPES: BEGIN OF t_bsis_bsas,
hkont TYPE bsis-hkont, "General ledger account
year_dum TYPE bsis-gjahr,
belnr TYPE bsis-belnr, "Accounting document number
bldat TYPE bsis-bldat, "Document date in document
waers TYPE bsis-waers, "Currency Key
dmbtr TYPE bsis-dmbtr, "Amount in local currency
wrbtr TYPE bsis-wrbtr, "Amount in document currency
shkzg TYPE bsis-shkzg, "Debit/credit indicator
zuonr TYPE bsis-zuonr, "Assignment number
gjahr TYPE bsis-gjahr, "Fiscal year
blart TYPE bsis-blart, "Document type
END OF t_bsis_bsas.
TYPES: BEGIN OF t_summary,
hkont TYPE bsis-hkont,
year_dum TYPE bsis-gjahr,
waers TYPE bsis-waers,
rate TYPE tcurr-ukurs,
wrbtr TYPE bsis-wrbtr,
dmbtr TYPE bsis-dmbtr,
gl_bal TYPE bsis-wrbtr,
unrealized TYPE bsis-wrbtr,
END OF t_summary.
TYPES: BEGIN OF t_exch,
year TYPE bsis-gjahr,
rate TYPE bapi1093_1-rate_type,
from_curr TYPE bapi1093_1-from_curr,
exch_rate TYPE bapi1093_0-exch_rate_v,
END OF t_exch.
* Global Data *
DATA: gv_hkont TYPE bsis-hkont,
it_bsis_bsas TYPE STANDARD TABLE OF t_bsis_bsas,
it_exch TYPE SORTED TABLE OF t_exch WITH UNIQUE
KEY year rate from_curr,
it_summary TYPE STANDARD TABLE OF t_summary,
wa_summary LIKE LINE OF it_summary,
wa_exch LIKE LINE OF it_exch,
t_rate_type TYPE bapi1093_1-rate_type VALUE 'ME',
t_from_curr TYPE bapi1093_1-from_curr,
t_to_curr TYPE bapi1093_1-to_currncy VALUE 'USD',
t_date TYPE bapi1093_2-trans_date,
t_date_out TYPE bapi1093_2-trans_date,
t_exch_rate TYPE bapi1093_0,
t_message TYPE bapireturn1.
FIELD-SYMBOLS: <fs_asof> TYPE bsis-gjahr,
<fs_bsis_bsas> LIKE LINE OF it_bsis_bsas.
* Selection screen *
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS: p_bukrs TYPE t001-bukrs OBLIGATORY,
p_asof TYPE bsis-budat OBLIGATORY,
p_year TYPE bsis-gjahr OBLIGATORY.
SELECT-OPTIONS: s_hkont FOR bsis-hkont NO INTERVALS OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
*/ CLASS DEFINITIONS
* CLASS lcl_main DEFINITION
CLASS lcl_main DEFINITION.
PUBLIC SECTION.
METHODS: get_data,
get_diff,
display_subheader,
display_rate
IMPORTING
rate TYPE tcurr-ukurs
pos TYPE i,
display_header,
top_of_page,
get_rate_and_show
EXPORTING
ex_bsis_bsas LIKE it_bsis_bsas
ex_exch LIKE it_exch,
conversion
IMPORTING
year TYPE bsis-gjahr
rate_type TYPE bapi1093_1-rate_type
from_curr TYPE bapi1093_1-from_curr
to_curr TYPE bapi1093_1-to_currncy
EXPORTING
exch_rate TYPE bapi1093_0
t_date TYPE bapi1093_2-trans_date.
EVENTS: no_data EXPORTING value(hkont) TYPE bsis-hkont.
PRIVATE SECTION.
TYPES: BEGIN OF t_waers,
waers TYPE bsis-waers,
END OF t_waers.
TYPES: BEGIN OF t_local,
year TYPE bsis-gjahr,
rate TYPE tcurr-ukurs,
END OF t_local.
DATA: it_waers TYPE SORTED TABLE OF t_waers WITH UNIQUE
KEY waers,
it_local TYPE SORTED TABLE OF t_local WITH UNIQUE
KEY year,
wa_waers LIKE LINE OF it_waers,
wa_local LIKE LINE OF it_local,
lv_counter TYPE i,
lv_asof TYPE bsis-gjahr,
lv_year TYPE bsis-gjahr,
lv_check TYPE i,
lv_7years TYPE i,
lv_date TYPE pc226-endda,
lv_pos TYPE i,
lv_pos2 TYPE i,
lv_vline TYPE i,
lv_rate TYPE p DECIMALS 5,
lv_givendate TYPE syst-datum.
ENDCLASS.
* CLASS lcl_summary DEFINITION
CLASS lcl_summary DEFINITION INHERITING FROM lcl_main.
PUBLIC SECTION.
METHODS: display_summary_header,
display_summary
IMPORTING
im_bsis_bsas LIKE it_bsis_bsas
im_exch LIKE it_exch.
ENDCLASS.
* CLASS lcl_handler DEFINITION
CLASS lcl_handler DEFINITION.
PUBLIC SECTION.
METHODS handle_event FOR EVENT no_data OF lcl_main
IMPORTING hkont.
ENDCLASS.
*/ CLASS IMPLEMENTATIONS
* CLASS lcl_main IMPLEMENTATION
CLASS lcl_main IMPLEMENTATION.
* METHOD get_data *
METHOD get_data.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
text = 'Getting data. Please wait...'
* get records from BSIS
SELECT hkont zuonr gjahr belnr waers bldat blart dmbtr wrbtr shkzg
FROM bsis
INTO CORRESPONDING FIELDS OF TABLE it_bsis_bsas
WHERE bukrs = p_bukrs
AND hkont IN s_hkont
AND budat <= p_asof.
* get records from BSAS
SELECT hkont zuonr gjahr belnr waers bldat blart dmbtr wrbtr shkzg
FROM bsas
APPENDING CORRESPONDING FIELDS OF TABLE it_bsis_bsas
WHERE bukrs = p_bukrs
AND hkont IN s_hkont
AND budat <= p_asof
AND augdt > p_asof.
* if itab has no records, raise event
IF it_bsis_bsas[] IS INITIAL.
RAISE EVENT no_data EXPORTING hkont = s_hkont-low.
ENDIF.
ENDMETHOD.
* METHOD get_diff *
METHOD get_diff.
DATA: lv_sub7 TYPE i.
lv_asof = p_year + 6.
IF lv_asof > p_asof+0(4).
lv_asof = p_asof+0(4).
ENDIF.
lv_year = p_year.
* determine how many years will be displayed
lv_counter = lv_asof - lv_year.
ADD 1 TO lv_counter.
lv_sub7 = lv_asof - 6.
lv_7years = lv_asof - lv_sub7.
ADD 1 TO lv_7years.
ENDMETHOD.
* METHOD display_subheader *
METHOD display_subheader.
DATA: lv_date(10) TYPE c,
lv_gdatu TYPE tcurr-gdatu,
lv_flag(1) TYPE c,
lv_pos_dum TYPE i.
FIELD-SYMBOLS: <fs_bsis_bsas> LIKE LINE OF it_bsis_bsas.
* pre-defined length of uline and vline depending on the
* number of years to be displayed
CASE lv_counter.
WHEN 1.
lv_pos = 24.
lv_pos2 = 37.
lv_vline = 126.
WHEN 2.
lv_pos = 45.
lv_pos2 = 58.
lv_vline = 147.
WHEN 3.
lv_pos = 66.
lv_pos2 = 79.
lv_vline = 168.
WHEN 4.
lv_pos = 87.
lv_pos2 = 100.
lv_vline = 189.
WHEN 5.
lv_pos = 108.
lv_pos2 = 121.
lv_vline = 210.
WHEN 6.
lv_pos = 128.
lv_pos2 = 141.
lv_vline = 230.
WHEN 7.
lv_pos = 148.
lv_pos2 = 161.
lv_vline = 250.
ENDCASE.
* get currency
IF NOT lv_check = 1.
LOOP AT it_bsis_bsas ASSIGNING <fs_bsis_bsas>.
MOVE <fs_bsis_bsas>-waers TO wa_waers.
INSERT wa_waers INTO TABLE it_waers.
<fs_bsis_bsas>-year_dum = <fs_bsis_bsas>-bldat+0(4).
ENDLOOP.
ENDIF.
ASSIGN lv_asof TO <fs_asof>.
IF NOT lv_check = 1.
SORT it_bsis_bsas BY hkont year_dum belnr bldat waers dmbtr wrbtr.
IF <fs_bsis_bsas> IS ASSIGNED.
UNASSIGN <fs_bsis_bsas>.
READ TABLE it_bsis_bsas INDEX 1 ASSIGNING <fs_bsis_bsas>.
IF sy-subrc = 0 AND <fs_bsis_bsas> IS ASSIGNED.
gv_hkont = <fs_bsis_bsas>-hkont.
ENDIF.
ENDIF.
ENDIF.
* write sub-header
DESCRIBE TABLE it_waers LINES sy-tfill.
LOOP AT it_waers INTO wa_waers.
IF sy-tfill = 1 AND wa_waers-waers = 'PHP'.
lv_flag = 1 .
ENDIF.
IF NOT lv_flag = 1.
IF lv_check IS INITIAL.
WRITE: AT /103 sy-uline(lv_pos),
AT /103 sy-vline.
ENDIF.
* write the years in the sub-header
IF NOT lv_check = 1.
lv_pos_dum = 110.
FORMAT COLOR COL_HEADING.
DO lv_counter TIMES.
IF sy-index = 6.
WRITE: AT lv_pos_dum(14) <fs_asof> RIGHT-JUSTIFIED.
ELSEIF sy-index = 7.
WRITE: AT lv_pos_dum(13) <fs_asof> RIGHT-JUSTIFIED.
ELSE.
WRITE: AT lv_pos_dum(15) <fs_asof> RIGHT-JUSTIFIED.
ENDIF.
ADD 21 TO lv_pos_dum.
SUBTRACT 1 FROM <fs_asof>.
ENDDO.
WRITE sy-vline.
FORMAT COLOR OFF.
ENDIF.
IF sy-tabix = 1 AND wa_waers-waers = 'PHP'.
WRITE: AT /90 sy-uline(lv_pos2).
ENDIF.
IF wa_waers-waers <> 'PHP'.
IF lv_check IS INITIAL.
WRITE: AT /90 sy-uline(lv_pos2).
WRITE: AT /90 sy-vline.
ELSE.
WRITE: AT /90 sy-vline.
ENDIF.
ENDIF.
FORMAT COLOR COL_NORMAL.
IF NOT wa_waers-waers = 'PHP'.
WRITE: AT 91(10) wa_waers-waers CENTERED. "write the currency
ENDIF.
ENDIF.
lv_asof = p_year + 6.
IF lv_asof > p_asof+0(4).
lv_asof = p_asof+0(4).
ENDIF.
* get exchange rate from PHP to USD
IF lv_check IS INITIAL.
t_from_curr = 'PHP'.
DO lv_counter TIMES.
* use BAPI to get exchange rate
CALL METHOD me->conversion EXPORTING
year = <fs_asof>
rate_type = t_rate_type
from_curr = t_from_curr
to_curr = t_to_curr
IMPORTING
exch_rate = t_exch_rate
t_date = t_date_out.
* if no exchange rate was fetched, get directly from TCURR
* using given date
IF t_exch_rate-exch_rate_v IS INITIAL.
WRITE t_date_out TO lv_date USING EDIT MASK '__/__/____'.
CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
EXPORTING
input = lv_date
IMPORTING
output = lv_date.
SELECT SINGLE ukurs FROM tcurr
INTO t_exch_rate-exch_rate_v
WHERE kurst = 'ME'
AND fcurr = 'PHP'
AND tcurr = 'USD'
AND gdatu = lv_date.
ENDIF.
IF NOT t_exch_rate-exch_rate_v IS INITIAL.
t_exch_rate-exch_rate_v = abs( t_exch_rate-exch_rate_v ).
wa_local-year = <fs_asof>.
wa_local-rate = t_exch_rate-exch_rate_v.
INSERT wa_local INTO TABLE it_local.
ENDIF.
SUBTRACT 1 FROM <fs_asof>.
CLEAR: t_exch_rate, wa_local, t_date_out, lv_date.
ENDDO.
ENDIF.
lv_pos = 106.
* get exchange rate from itab to USD
CLEAR: t_exch_rate, lv_gdatu.
t_from_curr = wa_waers-waers.
lv_asof = p_year + 6.
IF lv_asof > p_asof+0(4).
lv_asof = p_asof+0(4).
ENDIF.
DO lv_counter TIMES.
IF t_from_curr = 'USD'.
READ TABLE it_local WITH KEY year = <fs_asof>
INTO wa_local TRANSPORTING rate.
lv_rate = wa_local-rate.
ELSEIF t_from_curr = 'PHP'.
READ TABLE it_local WITH KEY year = <fs_asof>
INTO wa_local TRANSPORTING rate.
lv_rate = wa_local-rate.
ELSE.
* use BAPI to get exchange rate for currencies that is
* not 'PHP' and 'USD'
CALL METHOD me->conversion EXPORTING
year = <fs_asof>
rate_type = t_rate_type
from_curr = t_from_curr
to_curr = t_to_curr
IMPORTING
exch_rate = t_exch_rate
t_date = t_date_out.
* if no exchange rate was fetched, get directly from TCURR
* using given date
IF t_exch_rate-exch_rate_v IS INITIAL.
WRITE t_date_out TO lv_date USING EDIT MASK '__/__/____'.
CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
EXPORTING
input = lv_date
IMPORTING
output = lv_date.
SELECT SINGLE ukurs FROM tcurr
INTO t_exch_rate-exch_rate_v
WHERE kurst = 'ME'
AND fcurr = wa_waers-waers
AND tcurr = 'USD'
AND gdatu = lv_date.
ENDIF.
IF NOT t_exch_rate-exch_rate_v IS INITIAL.
READ TABLE it_local WITH KEY year = <fs_asof>
INTO wa_local TRANSPORTING rate.
IF sy-subrc = 0.
IF t_exch_rate-exch_rate_v <> wa_local-rate.
lv_rate = 1 / t_exch_rate-exch_rate_v * wa_local-rate.
ELSE.
lv_rate = t_exch_rate-exch_rate_v.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
IF NOT lv_rate IS INITIAL.
lv_rate = abs( lv_rate ).
wa_exch-year = <fs_asof>.
wa_exch-rate = t_rate_type.
wa_exch-from_curr = t_from_curr.
wa_exch-exch_rate = lv_rate.
INSERT wa_exch INTO TABLE it_exch.
IF NOT lv_flag = 1.
IF NOT wa_waers-waers = 'PHP'.
CALL METHOD me->display_rate
EXPORTING
rate = wa_exch-exch_rate
pos = lv_pos.
CLEAR wa_exch.
ENDIF.
ENDIF.
ENDIF.
ADD 21 TO lv_pos.
SUBTRACT 1 FROM <fs_asof>.
CLEAR: t_exch_rate, wa_local, t_date_out,
lv_date,lv_rate.
ENDDO.
IF NOT lv_flag = 1.
WRITE: AT lv_vline sy-vline.
ENDIF.
FORMAT COLOR OFF.
lv_asof = p_year + 6.
IF lv_asof > p_asof+0(4).
lv_asof = p_asof+0(4).
ENDIF.
lv_check = 1.
CLEAR lv_flag.
ENDLOOP.
ENDMETHOD.
* METHOD display_rate *
METHOD display_rate.
WRITE: AT pos(15) rate RIGHT-JUSTIFIED.
ENDMETHOD.
* METHOD display_header *
METHOD display_header.
CLEAR lv_pos.
lv_asof = p_year + 6.
IF lv_asof > p_asof+0(4).
lv_asof = p_asof+0(4).
ENDIF.
CLEAR lv_pos2.
CASE lv_counter.
WHEN 1.
lv_pos2 = 126.
WHEN 2.
lv_pos2 = 147.
WHEN 3.
lv_pos2 = 168.
WHEN 4.
lv_pos2 = 189.
WHEN 5.
lv_pos2 = 210.
WHEN 6.
lv_pos2 = 230.
WHEN 7.
lv_pos2 = 250.
ENDCASE.
lv_pos = 110.
FORMAT COLOR COL_HEADING.
WRITE: / sy-uline(lv_pos2),
/ sy-vline,
(18) 'Allocation' CENTERED,
(04) 'DT' CENTERED,
(11) 'Doc. No.' CENTERED,
(11) 'Doc. Date' LEFT-JUSTIFIED,
(06) 'Cur.' LEFT-JUSTIFIED,
(20) 'Transaction Curr.' CENTERED,
(20) 'Local Curr. (PHP)' CENTERED.
DO lv_counter TIMES.
WRITE: AT lv_pos(14) <fs_asof> RIGHT-JUSTIFIED.
SUBTRACT 1 FROM <fs_asof>.
ADD 21 TO lv_pos.
ENDDO.
WRITE: AT lv_pos2 sy-vline,
/ sy-uline(lv_pos2).
FORMAT COLOR OFF.
ENDMETHOD.
* METHOD top_of_page *
METHOD top_of_page.
DATA: text1 TYPE string,
text2 TYPE string,
lv_asof TYPE bsis-budat,
lv_pageno(03) TYPE n,
lv_date(10) TYPE c.
* get company code description
SELECT SINGLE butxt FROM t001
INTO t001-butxt
WHERE bukrs = p_bukrs.
WRITE: / t001-butxt,
/ sy-title.
* write account code(HKONT)
CONCATENATE: gv_hkont '/' p_bukrs
INTO text1.
CONCATENATE: 'Account:' text1
INTO text2
SEPARATED BY space.
WRITE: / text2.
CLEAR: text1, text2.
* write as of date
WRITE p_asof TO lv_date USING EDIT MASK '__/__/____'.
CONCATENATE: 'As of' lv_date
INTO text1
SEPARATED BY space.
WRITE: / text1.
CLEAR: text1, lv_date.
* from year to as of year
lv_asof = p_asof+0(4).
CONCATENATE: 'Year:' p_year 'to' lv_asof
INTO text1
SEPARATED BY space.
WRITE: / text1.
CLEAR text1.
* page number
lv_pageno = sy-pagno.
CONCATENATE: 'Page No:' lv_pageno
INTO text1
SEPARATED BY space.
WRITE: / text1.
CLEAR text1.
SKIP 2.
ENDMETHOD.
* METHOD get_rate_and_show *
METHOD get_rate_and_show.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
* PERCENTAGE = 0
text = 'Combining data.Please wait... '
DATA: lv_amount(15) TYPE p DECIMALS 2,
lv_color(1) TYPE n VALUE 1,
lv_index1(15) TYPE p DECIMALS 2,
lv_index2(15) TYPE p DECIMALS 2,
lv_index3(15) TYPE p DECIMALS 2,
lv_index4(15) TYPE p DECIMALS 2,
lv_index5(15) TYPE p DECIMALS 2,
lv_index6(15) TYPE p DECIMALS 2,
lv_index7(15) TYPE p DECIMALS 2,
lv_total1(15) TYPE p DECIMALS 2,
lv_total2(15) TYPE p DECIMALS 2,
lv_total3(15) TYPE p DECIMALS 2,
lv_total4(15) TYPE p DECIMALS 2,
lv_total5(15) TYPE p DECIMALS 2,
lv_total6(15) TYPE p DECIMALS 2,
lv_total7(15) TYPE p DECIMALS 2,
lv_dmbtr(15) TYPE p DECIMALS 2,
lv_dmbtr_tot(15) TYPE p DECIMALS 2,
lv_old TYPE bsis-hkont,
lv_new TYPE bsis-hkont.
lv_asof = p_year + 6.
IF lv_asof > p_asof+0(4).
lv_asof = p_asof+0(4).
ENDIF.
CLEAR lv_check.
ADD 1 TO lv_check.
SORT it_bsis_bsas BY hkont year_dum belnr bldat waers dmbtr wrbtr.
* write details
LOOP AT it_bsis_bsas ASSIGNING <fs_bsis_bsas>.
IF lv_color = 1.
lv_color = 2.
ELSE.
lv_color = 1.
ENDIF.
* if <fs_bsis_bsas>-shkzg = 'H', multiply WRBTR and
* DMBTR by -1
IF <fs_bsis_bsas>-shkzg = 'H'.
<fs_bsis_bsas>-wrbtr = <fs_bsis_bsas>-wrbtr * -1.
<fs_bsis_bsas>-dmbtr = <fs_bsis_bsas>-dmbtr * -1.
ENDIF.
* for every new account no.(HKONT), create a new page
lv_new = <fs_bsis_bsas>-hkont.
gv_hkont = <fs_bsis_bsas>-hkont.
IF lv_new <> lv_old AND NOT lv_old IS INITIAL.
NEW-PAGE.
CALL METHOD me->display_subheader.
CALL METHOD me->display_header.
ENDIF.
lv_old = lv_new.
* write details
FORMAT INTENSIFIED OFF COLOR = lv_color.
WRITE: / sy-vline,
(18) <fs_bsis_bsas>-zuonr CENTERED,
(04) <fs_bsis_bsas>-blart CENTERED,
(10) <fs_bsis_bsas>-belnr CENTERED,
(10) <fs_bsis_bsas>-bldat RIGHT-JUSTIFIED,
(05) <fs_bsis_bsas>-waers RIGHT-JUSTIFIED,
(20) <fs_bsis_bsas>-wrbtr RIGHT-JUSTIFIED,
(20) <fs_bsis_bsas>-dmbtr RIGHT-JUSTIFIED.
ADD <fs_bsis_bsas>-dmbtr TO: lv_dmbtr, lv_dmbtr_tot.
* write the converted amount for a given year
WHILE lv_check <= lv_counter.
IF <fs_asof> >= <fs_bsis_bsas>-bldat+0(4).
t_from_curr = <fs_bsis_bsas>-waers.
READ TABLE it_exch WITH KEY year = <fs_asof>
rate = t_rate_type
from_curr = t_from_curr
INTO wa_exch TRANSPORTING exch_rate.
IF sy-subrc = 0.
IF <fs_bsis_bsas>-waers = 'PHP'.
lv_amount = 1 / wa_exch-exch_rate * wa_exch-exch_rate.
lv_amount = <fs_bsis_bsas>-wrbtr * lv_amount.
ELSE.
lv_amount = <fs_bsis_bsas>-wrbtr * wa_exch-exch_rate.
ENDIF.
WRITE: (20) lv_amount RIGHT-JUSTIFIED.
CASE sy-index.
WHEN 1.
ADD lv_amount TO lv_index1.
ADD lv_amount TO lv_total1.
WHEN 2.
ADD lv_amount TO lv_index2.
ADD lv_amount TO lv_total2.
WHEN 3.
ADD lv_amount TO lv_index3.
ADD lv_amount TO lv_total3.
WHEN 4.
ADD lv_amount TO lv_index4.
ADD lv_amount TO lv_total4.
WHEN 5.
ADD lv_amount TO lv_index5.
ADD lv_amount TO lv_total5.
WHEN 6.
ADD lv_amount TO lv_index6.
ADD lv_amount TO lv_total6.
WHEN 7.
ADD lv_amount TO lv_index7.
ADD lv_amount TO lv_total7.
ENDCASE.
ENDIF.
ENDIF.
CLEAR: lv_amount, wa_exch.
SUBTRACT 1 FROM <fs_asof>.
ADD 1 TO lv_check.
ENDWHILE.
WRITE AT lv_pos2 sy-vline.
* write sub-total for every year for the same account code(HKONT)
AT END OF year_dum.
FORMAT COLOR COL_TOTAL.
WRITE: / sy-vline,
<fs_bsis_bsas>-year_dum,
'Sub-total:'.
IF NOT lv_dmbtr IS INITIAL.
WRITE: AT 76(20) lv_dmbtr RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_index1 IS INITIAL.
WRITE: (20) lv_index1 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_index2 IS INITIAL.
WRITE (20) lv_index2 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_index3 IS INITIAL.
WRITE (20) lv_index3 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_index4 IS INITIAL.
WRITE (20) lv_index4 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_index5 IS INITIAL.
WRITE (20) lv_index5 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_index6 IS INITIAL.
WRITE: (20) lv_index6 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_index7 IS INITIAL.
WRITE: (20) lv_index7 RIGHT-JUSTIFIED.
ENDIF.
WRITE: AT lv_pos2 sy-vline.
FORMAT COLOR OFF.
CLEAR: lv_index1, lv_index2, lv_index3,
lv_index4, lv_index5, lv_index6,
lv_index7, lv_dmbtr.
ENDAT.
* write total for a given account code(HKONT)
AT END OF hkont.
FORMAT COLOR COL_TOTAL INTENSIFIED.
WRITE: / sy-vline,
'Total', <fs_bsis_bsas>-hkont, 'GI'.
IF NOT lv_dmbtr_tot IS INITIAL.
WRITE: AT 76(20) lv_dmbtr_tot RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_total1 IS INITIAL.
WRITE: (20) lv_total1 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_total2 IS INITIAL.
WRITE (20) lv_total2 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_total3 IS INITIAL.
WRITE (20) lv_total3 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_total4 IS INITIAL.
WRITE (20) lv_total4 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_total5 IS INITIAL.
WRITE (20) lv_total5 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_total6 IS INITIAL.
WRITE: (20) lv_total6 RIGHT-JUSTIFIED.
ENDIF.
IF NOT lv_total7 IS INITIAL.
WRITE: (20) lv_total7 RIGHT-JUSTIFIED.
ENDIF.
WRITE: AT lv_pos2 sy-vline.
FORMAT COLOR OFF.
CLEAR: lv_total1, lv_total2, lv_total3,
lv_total4, lv_total5, lv_total6,
lv_total7, lv_dmbtr_tot.
WRITE: / sy-uline(lv_pos2).
ENDAT.
lv_asof = p_year + 6.
IF lv_asof > p_asof+0(4).
lv_asof = p_asof+0(4).
ENDIF.
CLEAR lv_check.
ADD 1 TO lv_check.
FORMAT COLOR OFF.
ENDLOOP.
SKIP 5.
ex_bsis_bsas[] = it_bsis_bsas[].
ex_exch[] = it_exch[].
ENDMETHOD.
* METHOD conversion *
METHOD conversion.
IF year = p_asof+0(4).
* get last date of a given month and year
CALL FUNCTION 'LAST_DAY_OF_MONTHS'
EXPORTING
day_in = p_asof
IMPORTING
last_day_of_month = lv_givendate
* EXCEPTIONS
* DAY_IN_NO_DATE = 1
* OTHERS = 2
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ELSE.
* get last date of a given year
CALL FUNCTION 'HR_E_GET_FISC_YEAR_DATES'
EXPORTING
fisc_year = year
IMPORTING
* FISC_FECINI =
fisc_fecfin = lv_date
* EXCEPTIONS
* ERROR = 1
* OTHERS = 2
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
IF lv_date IS INITIAL.
t_date = lv_givendate.
CLEAR lv_givendate.
ELSE.
t_date = lv_date.
CLEAR lv_date.
ENDIF.
* get exchange rate from a given currency to US dollars
CALL FUNCTION 'BAPI_EXCHANGERATE_GETDETAIL'
EXPORTING
rate_type = rate_type
from_curr = from_curr
to_currncy = to_curr
date = t_date
IMPORTING
exch_rate = t_exch_rate
* RETURN =
ENDMETHOD.
ENDCLASS.
* CLASS lcl_summary IMPLEMENTATION
CLASS lcl_summary IMPLEMENTATION.
* METHOD display_summary *
METHOD display_summary.
TYPES: BEGIN OF t_total,
hkont TYPE bsis-hkont,
waers TYPE bsis-waers,
wrbtr TYPE bsis-wrbtr,
dmbtr TYPE bsis-dmbtr,
gl_bal TYPE bsis-wrbtr,
unrealized TYPE bsis-wrbtr,
END OF t_total.
DATA: lv_balance TYPE bsis-wrbtr,
lv_date(10) TYPE c,
lv_color(1) TYPE n VALUE '1',
lv_wrbtr TYPE bsis-wrbtr,
lv_dmbtr TYPE bsis-dmbtr,
lv_gl_bal TYPE bsis-wrbtr,
lv_unrealized TYPE bsis-wrbtr,
lv_old_year TYPE bsis-gjahr,
lv_new_year TYPE bsis-gjahr,
lv_flag(1) TYPE n,
lt_bsis_bsas_dum TYPE STANDARD TABLE OF t_bsis_bsas,
lt_total TYPE STANDARD TABLE OF t_total,
wa_total LIKE LINE OF lt_total.
FIELD-SYMBOLS: <fs_dum> LIKE LINE OF lt_bsis_bsas_dum.
it_bsis_bsas[] = im_bsis_bsas[].
it_exch[] = im_exch[].
CLEAR wa_exch.
SORT it_bsis_bsas BY hkont year_dum DESCENDING waers.
lt_bsis_bsas_dum[] = it_bsis_bsas[].
LOOP AT it_bsis_bsas ASSIGNING <fs_bsis_bsas>.
AT NEW hkont.
MOVE <fs_bsis_bsas>-hkont TO wa_summary-hkont.
ENDAT.
AT NEW year_dum.
MOVE <fs_bsis_bsas>-year_dum TO wa_summary-year_dum.
ENDAT.
AT NEW waers.
MOVE <fs_bsis_bsas>-waers TO wa_summary-waers.
t_from_curr = wa_summary-waers.
READ TABLE it_exch WITH KEY year = wa_summary-year_dum
rate = t_rate_type
from_curr = t_from_curr
INTO wa_exch TRANSPORTING exch_rate.
IF sy-subrc = 0.
MOVE wa_exch-exch_rate TO wa_summary-rate.
ELSE.
CALL METHOD me->conversion
EXPORTING
year = wa_summary-year_dum
rate_type = t_rate_type
from_curr = t_from_curr
to_curr = t_to_curr
IMPORTING
exch_rate = t_exch_rate
t_date = t_date_out.
IF t_exch_rate-exch_rate_v IS INITIAL.
WRITE t_date_out TO lv_date USING EDIT MASK '__/__/____'.
CALL FUNCTION 'CONVERSION_EXIT_INVDT_INPUT'
EXPORTING
input = lv_date
IMPORTING
output = lv_date.
SELECT SINGLE ukurs FROM tcurr
INTO t_exch_rate-exch_rate_v
WHERE kurst = 'ME'
AND fcurr = 'PHP'
AND tcurr = 'USD'
AND gdatu = lv_date.
ENDIF.
IF NOT t_exch_rate-exch_rate_v IS INITIAL.
t_exch_rate-exch_rate_v = abs( t_exch_rate-exch_rate_v ).
MOVE t_exch_rate-exch_rate_v TO wa_summary-rate.
ENDIF.
ENDIF.
ENDAT.
LOOP AT lt_bsis_bsas_dum ASSIGNING <fs_dum>
WHERE hkont = wa_summary-hkont
AND year_dum = wa_summary-year_dum
AND waers = wa_summary-waers.
ADD <fs_dum>-wrbtr TO wa_summary-wrbtr.
ADD <fs_dum>-dmbtr TO wa_summary-dmbtr.
IF NOT wa_exch-exch_rate IS INITIAL.
IF <fs_dum>-waers = 'PHP'.
lv_balance = 1 / wa_exch-exch_rate * wa_exch-exch_rate.
lv_balance = <fs_dum>-wrbtr * lv_balance.
ADD lv_balance TO wa_summary-gl_bal.
ELSE.
lv_balance = <fs_dum>-wrbtr * wa_exch-exch_rate.
ADD lv_balance TO wa_summary-gl_bal.
ENDIF.
ENDIF.
CLEAR lv_balance.
DELETE lt_bsis_bsas_dum.
ENDLOOP.
DELETE it_bsis_bsas WHERE hkont = wa_summary-hkont
AND year_dum = wa_summary-year_dum
AND waers = wa_summary-waers.
wa_summary-unrealized = wa_summary-dmbtr - wa_summary-gl_bal.
APPEND wa_summary TO it_summary.
CLEAR wa_summary.
ENDLOOP.
IF NOT it_summary[] IS INITIAL.
CALL METHOD me->display_summary_header.
CLEAR wa_summary.
SORT it_summary BY hkont year_dum DESCENDING waers.
*/ WRITE SUMMARY
LOOP AT it_summary INTO wa_summary.
IF lv_color = 1.
lv_color = 2.
ELSE.
lv_color = 1.
ENDIF.
MOVE: wa_summary-hkont TO wa_total-hkont,
wa_summary-waers TO wa_total-waers.
READ TABLE lt_total WITH KEY hkont = wa_summary-hkont
waers = wa_summary-waers
INTO wa_total.
IF sy-subrc = 0.
ADD: wa_summary-wrbtr TO wa_total-wrbtr,
wa_summary-dmbtr TO wa_total-dmbtr,
wa_summary-gl_bal TO wa_total-gl_bal,
wa_summary-unrealized TO wa_total-unrealized.
MODIFY lt_total FROM wa_total TRANSPORTING
wrbtr dmbtr gl_bal unrealized
WHERE hkont = wa_summary-hkont
AND waers = wa_summary-waers.
CLEAR wa_total.
lv_flag = 1.
ELSE.
ADD: wa_summary-wrbtr TO wa_total-wrbtr,
wa_summary-dmbtr TO wa_total-dmbtr,
wa_summary-gl_bal TO wa_total-gl_bal,
wa_summary-unrealized TO wa_total-unrealized.
ENDIF.
* write sub-total for every end of a year
lv_new_year = wa_summary-year_dum.
IF lv_new_year <> lv_old_year AND NOT lv_old_year IS INITIAL.
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
WRITE: / sy-vline,
(42) 'Subtotal',
(18) lv_wrbtr RIGHT-JUSTIFIED,
(18) lv_dmbtr RIGHT-JUSTIFIED,
(18) lv_gl_bal RIGHT-JUSTIFIED,
(18) lv_unrealized RIGHT-JUSTIFIED,
sy-vline.
FORMAT COLOR OFF.
CLEAR: lv_wrbtr, lv_dmbtr, lv_gl_bal, lv_unrealized.
ENDIF.
lv_old_year = lv_new_year.
ADD: wa_summary-wrbtr TO lv_wrbtr,
wa_summary-dmbtr TO lv_dmbtr,
wa_summary-gl_bal TO lv_gl_bal,
wa_summary-unrealized TO lv_unrealized.
FORMAT INTENSIFIED OFF COLOR = lv_color.
WRITE: / sy-vline,
(15) wa_summary-hkont,
(04) wa_summary-year_dum,
(05) wa_summary-waers,
(15) wa_summary-rate,
(18) wa_summary-wrbtr,
(18) wa_summary-dmbtr,
(18) wa_summary-gl_bal,
(18) wa_summary-unrealized,
sy-vline.
FORMAT COLOR OFF.
IF NOT lv_flag = 1.
APPEND wa_total TO lt_total.
CLEAR wa_total.
ENDIF.
AT END OF hkont.
* write the last sub-total
FORMAT COLOR COL_TOTAL INTENSIFIED OFF.
WRITE: / sy-vline,
(37) 'Subtotal', wa_summary-year_dum,
(18) lv_wrbtr RIGHT-JUSTIFIED,
(18) lv_dmbtr RIGHT-JUSTIFIED,
(18) lv_gl_bal RIGHT-JUSTIFIED,
(18) lv_unrealized RIGHT-JUSTIFIED,
sy-vline.
FORMAT COLOR OFF.
CLEAR: lv_wrbtr, lv_dmbtr, lv_gl_bal, lv_unrealized.
* write the total for a given account code(HKONT)
FORMAT COLOR COL_TOTAL INTENSIFIED ON.
LOOP AT lt_total INTO wa_total
WHERE hkont = wa_summary-hkont.
WRITE: / sy-vline.
IF sy-tabix = 1.
WRITE: (25) 'Total', wa_summary-hkont.
ENDIF.
IF sy-tabix = 1.
WRITE: (05) wa_total-waers,
(18) wa_total-wrbtr,
(18) wa_total-dmbtr,
(18) wa_total-gl_bal,
(18) wa_total-unrealized,
sy-vline.
ELSE.
WRITE: AT 40(05) wa_total-waers,
(18) wa_total-wrbtr,
(18) wa_total-dmbtr,
(18) wa_total-gl_bal,
(18) wa_total-unrealized,
sy-vline.
ENDIF.
ENDLOOP.
FORMAT COLOR OFF.
ENDAT.
CLEAR lv_flag.
ENDLOOP.
WRITE: / sy-uline(122).
ENDIF.
ENDMETHOD.
* METHOD display_summary *
METHOD display_summary_header.
FORMAT COLOR COL_HEADING.
WRITE: / sy-uline(122),
/ sy-vline,
(15) 'GL Account' CENTERED,
(04) 'Year' CENTERED,
(05) 'Curr.' CENTERED,
(15) 'Rate' CENTERED,
(18) 'Trans. Curr' CENTERED,
(18) 'Local Curr.' CENTERED,
(18) 'GL Balance' CENTERED,
(18) 'Unrealized' CENTERED,
sy-vline,
/ sy-uline(122).
FORMAT COLOR OFF.
ENDMETHOD.
ENDCLASS.
* CLASS lcl_handler IMPLEMENTATION
CLASS lcl_handler IMPLEMENTATION.
METHOD handle_event.
MESSAGE i008 WITH 'No data found for account no:' hkont.
LEAVE LIST-PROCESSING.
ENDMETHOD.
ENDCLASS.
* TOP-OF-PAGE *
TOP-OF-PAGE.
DATA: o_top TYPE REF TO lcl_main.
CREATE OBJECT o_top.
CALL METHOD o_top->top_of_page.
* START-OF-SELECTION *
START-OF-SELECTION.
DATA: o_main TYPE REF TO lcl_main,
o_handler TYPE REF TO lcl_handler,
o_summary TYPE REF TO lcl_summary,
it_bsis_bsas_dum TYPE STANDARD TABLE OF t_bsis_bsas,
it_exch_dum LIKE it_exch.
CREATE OBJECT: o_main, o_handler, o_summary.
SET HANDLER o_handler->handle_event FOR ALL INSTANCES.
CALL METHOD o_main->get_data.
CALL METHOD o_main->get_diff.
CALL METHOD o_main->display_subheader.
CALL METHOD o_main->display_header.
CALL METHOD o_main->get_rate_and_show
IMPORTING
ex_bsis_bsas = it_bsis_bsas_dum
ex_exch = it_exch_dum.
CALL METHOD o_summary->display_summary
EXPORTING
im_bsis_bsas = it_bsis_bsas_dum
im_exch = it_exch_dum. -
How to make BSEG-DMBTR (amt in loc CoCode currency) Optional or mandatory?
Hi,
Normally, the field BSEG-DMBTR is hidden unless you put a value (other than that of the company code currency) in the field BKPF-WAERS (Document Currency). However, for data conversion purposes, we are uploading an excel file with our open items & balances and wish to populate both BSEG-WRBTR (amount in transaction currency) and BSEG-DMBTR (amount in CoCode / local currency). The problem is that where BKPF-WAERS = CoCode Currency, the BSEG-DMBTR is hidden. It seems there's no way of making BSEG-DMBTR optional / mandatory via the field status of either the g/l account or the posting keys..........
Any ideas on this, or experiences you've had regarding uploading values to BSEG-DMBTR and BSEG-WRBTR wold be appreciated. For example, if the document currency = CoCode currency, have you just uploaded the value into BSEG-WRBTR? The reason we are trying to upload both BSEG-WRBTR and BSEG-DMBTR is because in our excel file, it makes reconciliation easier if we have the BSEG-DMBTR for all documents (inclulding those where the transaction currency = CoCode Currency).
Regards, Garoid.when you enter the doc currency as local currency - system will ask only doc currency which will be updated in local currency field automatically- no customising required.
When you enter the doc cur as a different currency than local currency, you have option to enter
a. exchange rate
b. enter doc currency and local currency - where rate will be updated automatically by conversion the actual values written.
When you manually update the Revaluation entries - system will not allow you to enter doc currency - it will ask only local currency. or additional currency as the case may be (if you maintain more parallel currencies.
SAP program takes care of the subsequent screens fields on the basis first screen entry made- This will be clearly visible when you use Complex posting TCodes like FB01, F-02, etc. This may not be visible in Enjoy SAP screens as the fields are controlled through variants activated - but internal controls stands same.
Hope it is clear. -
How to change the Amount in LC(DMBTR) in F-02
Usually, when we create accounting document though F-02. the Amount in LC(bseg-DMBTR) is create base on the amount(bseg-WRBTR) and the local currency .
Now I want to change this field's value, I want to know in which program create I can change the Amount in LC(bseg-dmbtr) , or can we change it in Substitution (ZRGGBS000) ?Hi,
as per SAP standard it is no possible once document has posted
If you want to change amount LC or DC
Please cancel/reverse document in FB08 if it is open item
if it is Cleared item means use T code - FBRA
and post new document correct LC amount
Thanking you
Regards
mahesh -
Display SAP R/3 table in a portlet with the SAP Adapter
Hello everybody!
I still can`t figure out the whole pictue of Bea Weblogic`s SAP Adapter.
I installed the SAP Adapter (BEA_SAP_1_0_70.ear) and the Applicaton Explorer,
made an Application View with the generated XML-Schema and the Template example
in the WL Integration Studio. So what`s next??? (I want to make a portlet which
displays a table from a BAPI request.) Any help would be helpful!
Thanks 4 answering !
Kind regards,
uggarHi Simon,
Thanks for your inputs.
Why the amount is changed in display mode only for WRBTR and not for DMBTR as both are of CURR datatype and created using same domain. I fail to understand any logic behind this.
I have even created a ABAP report on this table which displys fields DMBTR and WRBTR, and in the report output following values are displayed.
DMBTR 100.05
WRBTR 100.05
If anybody else has come across this before and has any clue please help.
Thanks and Regards
Shilpa -
Vendor ageing report data for all doc type needed(urgent)
hello everyone
once again i need ur help guys.
in the vendor ageing report i am getting data for only one document type and not of other.
ex- see i have two documents type-
1.KD 2. EJ
so i am getting data for document type KD only.
so how to get the data of document type EJ along with KD.
below is my code .
so tell what modifications i have to made .
*& Report Z_VENDOR AGEING *
*& in this repoet I am calculating the vendor ageing
which is depending on formula
AGEING = Current Date(or any date entered by user) Bline Date(BSIK-ZFBDT) *
REPORT z_vendor NO STANDARD PAGE HEADING
LINE-SIZE 200
LINE-COUNT 65(3).
TABLES : bsik.
DATA : BEGIN OF t_out OCCURS 0,
bukrs LIKE bsik-bukrs,
saknr LIKE bsik-saknr,
bldat LIKE bsik-bldat,
wrbtr LIKE bsik-wrbtr,
lifnr LIKE bsik-lifnr,
zfbdt like bsik-zfbdt,
zbd1t like bsik-zbd1t,
ageing type i,
END OF t_out.
parameters : p_date1 type d.
SELECT-OPTIONS : s_bukrs FOR bsik-bukrs,
s_saknr FOR bsik-saknr,
s_lifnr FOR bsik-lifnr.
SELECT bukrs saknr bldat wrbtr lifnr zfbdt zbd1t
FROM bsik
INTO TABLE t_out
WHERE saknr IN s_saknr
AND bukrs IN s_bukrs
AND lifnr IN s_lifnr.
Loop at t_out.
CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
EXPORTING
i_datum_bis = p_date1
i_datum_von = t_out-zfbdt
I_KZ_EXCL_VON = '0'
I_KZ_INCL_BIS = '0'
I_KZ_ULT_BIS = ' '
I_KZ_ULT_VON = ' '
I_STGMETH = '0'
I_SZBMETH = '1'
IMPORTING
E_TAGE = t_out-ageing
EXCEPTIONS
DAYS_METHOD_NOT_DEFINED = 1
OTHERS = 2
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
Modify t_out.
Clear t_out.
Endloop.
LOOP AT T_OUT.
IF T_OUT-SHKZG = H.
T_OUT-WRBTR = T_OUT-WRBTR * -1.
T_OUT-WRBTR = T_OUT-DMBTR * -1.
ENDIF.
DATA: TOTAL(16) TYPE P DECIMALS 2.
TOTAL = TOTAL + T_OUT-DMBTR.
Endloop.
LOOP AT t_out.
WRITE : / t_out-saknr,
t_out-lifnr,
t_out-wrbtr,
t_out-zfbdt,
T_OUT-DMBTR,
t_out-ageing.
AT LAST.
WRITE:/ TOTAL.
CLEAR TOTAL.
ENDAT.
ENDLOOP.
Message was edited by: sanjeev singhSanjeev,
Can you tell what is document type EJ representing...Secondly, if you check couple of documents of EJ type and check if data is available as per you WHERE clause filters.
Regards
Anurag -
Comparing fbl1n open items my program some vendors total amont is not tali
Hi
this is vendor aging report. i have used BSEG, FAGLFLEXA, LFA1, BKPF.
problem is Comparing fbl1n open items my program some vendors total amont is not tali.
sapose : 1033 fbl1n date is : 30.01.2009.
my report used same date .
here proble is : fbl1n show clear item also in partuculr date range but
my report show only open items ony not peaking close item's in ie date range.
SELECT BUKRS BELNR BUZEI GJAHR LIFNR KTOSL XAUTO REBZG UMSKS KOART AUGBL BSCHL UMSKZ SHKZG WRBTR ZFBDT DMBTR ZBD1T ZBD2T
FROM BSEG INTO CORRESPONDING FIELDS OF TABLE I_BSEG WHERE BUKRS EQ P_BUKRS AND
LIFNR IN S_LIFNR AND
AUGDT GE P_BUDAT and AUGBL = SPACE
AND KOART = 'K'
AND ( BSCHL = '21' OR BSCHL = '22' OR BSCHL = '23' OR BSCHL = '24' OR BSCHL = '25' OR BSCHL = '26' OR BSCHL = '27' OR
BSCHL = '28' OR BSCHL = '29' OR BSCHL = '30' OR BSCHL = '31' OR BSCHL = '32' OR BSCHL = '33' OR BSCHL = '34' OR
BSCHL = '35' OR BSCHL = '36' OR BSCHL = '37' OR BSCHL = '38' OR BSCHL = '39' OR BSCHL = '50' ).
please give me solustion.hi,
See perhaps this pable
VBSEGA Document Segment for Document Parking - As
VBSEGD Document Segment for Customer Document Par
VBSEGK Document Segment for Vendor Document Parki
VBSEGS Document Segment for Document Parking - G/
Rgds -
hi all,
i am getting right output.But while downloading iam not
getting the data for name1 field from lfa1 table to be displayed & also while downloading the negative sign is not coming for the amount values.
Modify the below code.
REPORT zvenageing1 NO STANDARD PAGE HEADING
LINE-SIZE 300
LINE-COUNT 65(3).
TABLES DECLARATION
TABLES : bsik, "Accounting: Secondary index for vendors
bsak, "Accounting: Secondary index for vendors (cleared
items)
lfa1.
INTERNAL TABLE
DATA : BEGIN OF itab OCCURS 0,
saknr LIKE bsik-saknr,
lifnr LIKE bsik-lifnr,
name1 LIKE lfa1-name1,
umskz LIKE bsik-umskz,
belnr LIKE bsik-belnr,
blart LIKE bsik-blart,
bldat LIKE bsik-bldat,
zfbdt LIKE bsik-zfbdt,
ageing TYPE i,
duedate LIKE itab-zfbdt,
zbd1t LIKE bsik-zbd1t,
waers LIKE bsik-waers,
wrbtr LIKE bsik-wrbtr,
pswsl LIKE bsik-pswsl,
dmbtr LIKE bsik-dmbtr,
sgtxt LIKE bsik-sgtxt,
shkzg LIKE bsik-shkzg,
END OF itab.
HEADER DETAILS
DATA : BEGIN OF itab_head OCCURS 0,
name1(20) TYPE c,
name2(20) TYPE c,
name3(50) TYPE c,
name4(20) TYPE c,
name5(20) TYPE c,
name6(20) TYPE c,
name7(20) TYPE c,
name8(20) TYPE c,
name9(20) TYPE c,
name10(20) TYPE c,
name11(20) TYPE c,
name12(20) TYPE c,
name13(20) TYPE c,
name14(20) TYPE c,
name15(20) TYPE c,
name16(20) TYPE c,
END OF itab_head.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
SELECT-OPTIONS : s_bukrs FOR bsik-bukrs,
s_saknr FOR bsik-saknr,
s_lifnr FOR bsik-lifnr.
PARAMETERS : p_date1 LIKE itab-zfbdt." value sy-datum.
SELECTION-SCREEN END OF BLOCK b1.
*p_date1 = sy-datum.
SET PF-STATUS '100'.
PERFORM head.
SELECT saknr lifnr belnr bldat zfbdt zbd1t waers wrbtr pswsl dmbtr
sgtxt shkzg blart umskz
INTO CORRESPONDING FIELDS OF TABLE itab
FROM bsik
WHERE bukrs IN s_bukrs
AND saknr IN s_saknr
AND lifnr IN s_lifnr
AND zfbdt LE p_date1
AND budat LE p_date1
AND umskz NE 'F'.
SELECT saknr lifnr belnr bldat zfbdt zbd1t waers wrbtr pswsl dmbtr
sgtxt shkzg blart umskz
FROM bsak
APPENDING CORRESPONDING FIELDS OF TABLE itab
WHERE bukrs IN s_bukrs
AND saknr IN s_saknr
AND lifnr IN s_lifnr
AND zfbdt LE p_date1
AND augdt GT p_date1
AND budat LE p_date1.
LOOP AT itab.
CALL FUNCTION 'DAYS_BETWEEN_TWO_DATES'
EXPORTING
i_datum_bis = p_date1
i_datum_von = itab-zfbdt
I_KZ_EXCL_VON = '0'
I_KZ_INCL_BIS = '0'
I_KZ_ULT_BIS = ' '
I_KZ_ULT_VON = ' '
I_STGMETH = '0'
I_SZBMETH = '1'
IMPORTING
e_tage = itab-ageing
EXCEPTIONS
days_method_not_defined = 1
OTHERS = 2.
MODIFY itab.
CLEAR itab.
ENDLOOP.
LOOP AT itab.
CLEAR lfa1.
SELECT SINGLE name1 FROM lfa1
INTO (itab-name1)
WHERE lifnr = itab-lifnr.
IF itab-shkzg EQ 'H'.
itab-wrbtr = itab-wrbtr * -1.
itab-dmbtr = itab-dmbtr * -1.
ENDIF.
DATA : total(16) TYPE p DECIMALS 2.
total = total + itab-dmbtr.
itab-duedate = itab-zfbdt + itab-zbd1t.
WRITE : /2(10) itab-saknr,
12(10) itab-lifnr,
24(35) itab-name1,
61(1) itab-umskz,
70(10) itab-belnr,
82(2) itab-blart,
86(10) itab-bldat,
98(10) itab-zfbdt,
110(4) itab-ageing,
116(10) itab-duedate,
130(3) itab-zbd1t,
146(5) itab-waers,
152(13) itab-wrbtr,
166(5) itab-pswsl,
174(13) itab-dmbtr,
190(50) itab-sgtxt.
243(25) itab-xblnr.
AT LAST.
SKIP 1.
ULINE.
WRITE : /2 'GRAND TOTAL' COLOR 3,155 total COLOR 3.
ULINE.
CLEAR total.
ENDAT.
ENDLOOP.
FORM HEAD *
FORM head.
ULINE.
WRITE :/15 'V E N D O R O P E N I T E M S A S O N : ', p_date1
COLOR 3 INTENSIFIED ON.
ULINE.
FORMAT COLOR 2 INTENSIFIED OFF.
ULINE.
WRITE : /2 'RECON.A/C',
12 'VENDOR NO.',
24 'VENDOR NAME',
61 'SP.GL',
73 'DOC.NO',
81 'DT',
85 'DOC.DATE',
95 'INV.RCD.DATE',
109 'AGE DAYS',
119 'DUE DATE',
132 'CREDIT PERIOD',
148 'CURR',
156 'AMT.IN.DOC',
167 'LOC.CUR',
176 'AMT.IN.LOCA',
192 'TEXT'.
ULINE : /(300).
ENDFORM.
AT USER-COMMAND.
IF sy-ucomm = 'EXCEL'.
WHEN 'EXCEL'.
PERFORM downloadexcel.
ENDIF.
FORM DOWNLOADEXCEL *
FORM downloadexcel.
DATA : b_file1 LIKE rlgrap-filename.
REFRESH itab_head.
MOVE : 'REC A/C' TO itab_head-name1,
'VEN A/C' TO itab_head-name2,
'VEN NAME' TO itab_head-name3,
'SP G/L' TO itab_head-name4,
'DOC NO' TO itab_head-name5,
'DT' TO itab_head-name6,
'DOC DATE' TO itab_head-name7,
'INV.RCD.DATE' TO itab_head-name8,
'AGEING DAYS' TO itab_head-name9,
'DUE DATE' TO itab_head-name10,
'CR DAYS' TO itab_head-name11,
'DOC CURR' TO itab_head-name12,
'DOC CURR AMT' TO itab_head-name13,
'LOC CURR' TO itab_head-name14,
'LOC CURR AMT' TO itab_head-name15,
'TEXT' TO itab_head-name16.
APPEND itab_head.
CLEAR itab_head.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
def_filename = ' '
def_path = 'C:\'
mask = ',.,..'
mode = 'S'
title = 'Save this file as '
IMPORTING
filename = b_file1
RC =
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
codepage = 'IBM'
filename = b_file1
filetype = 'DAT'
MODE = ' '
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
TABLES
data_tab = itab_head
FIELDNAMES =
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
gui_refuse_filetransfer = 8
OTHERS = 9.
CALL FUNCTION 'WS_DOWNLOAD'
EXPORTING
BIN_FILESIZE = ' '
codepage = 'IBM'
filename = b_file1
filetype = 'DAT'
mode = 'A'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
COL_SELECT = ' '
COL_SELECTMASK = ' '
NO_AUTH_CHECK = ' '
IMPORTING
FILELENGTH =
TABLES
data_tab = itab
FIELDNAMES =
EXCEPTIONS
file_open_error = 1
file_write_error = 2
invalid_filesize = 3
invalid_table_width = 4
invalid_type = 5
no_batch = 6
unknown_error = 7
gui_refuse_filetransfer = 8
OTHERS = 9.
ENDFORM.hi Sanjeev,
Use GUI_DOWNLOAD in this way ..
DATA: W_WSD_FILENAME01 TYPE STRING,
W_WSD_FILETYPE01 TYPE CHAR10.
W_WSD_FILENAME01 = P_OUT1.
W_WSD_FILETYPE01 = 'DAT'.
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
* BIN_FILESIZE =
FILENAME = W_WSD_FILENAME01
FILETYPE = W_WSD_FILETYPE01
* APPEND = ' '
* WRITE_FIELD_SEPARATOR = ' '
* HEADER = '00'
* TRUNC_TRAILING_BLANKS = ' '
* WRITE_LF = 'X'
* COL_SELECT = ' '
* COL_SELECT_MASK = ' '
* DAT_MODE = ' '
* CONFIRM_OVERWRITE = ' '
* NO_AUTH_CHECK = ' '
* CODEPAGE = ' '
* IGNORE_CERR = ABAP_TRUE
* REPLACEMENT = '#'
* WRITE_BOM = ' '
* TRUNC_TRAILING_BLANKS_EOL = 'X'
* WK1_N_FORMAT = ' '
* WK1_N_SIZE = ' '
* WK1_T_FORMAT = ' '
* WK1_T_SIZE = ' '
* IMPORTING
* FILELENGTH =
TABLES
DATA_TAB = ITAB_VBAK
* FIELDNAMES =
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.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF. -
How to do the reverse po in this report
Hi,
i have a one problem in this report . i don,t know how to display the
reverse po in this report. reverse po should have a po history cat. 'N' (field is bewtp)
i connect type 'Q' and the type 'E' but not been able to connect the 'N'. when i connect it will give me the wrong amount and some field should not been displayed. i will provide u the following code.
please help me.
Thanks
dinesh
*& Report Z_MM_PURCHASE_REGISTER
REPORT Z_MM_PURCHASE_REGISTER.
Short Description: Purchase Register
TABLES *
TABLES : ekko, taxcom, ekpo, ekbe,ekkn,konv,komv,t007s, j_1imovend, bseg .
TYPE-POOLS: slis.
TYPES: Begin with TY_ *
TYPES : BEGIN OF ty_ekko,
BSART LIKE EKKO-BSART,
KNTTP LIKE EKPO-KNTTP,
ebeln LIKE ekko-ebeln,
knumv LIKE ekko-knumv,
lifnr LIKE ekko-lifnr,
waers LIKE ekko-waers,
kalsm LIKE ekko-kalsm,
lands LIKE ekko-lands,
ekorg LIKE ekko-ekorg,
wkurs LIKE ekko-wkurs,
bedat LIKE ekko-bedat,
ebelp LIKE ekpo-ebelp, "po line item
mwskz LIKE ekpo-mwskz, "tax code
bukrs LIKE ekpo-bukrs,
matkl LIKE ekpo-matkl,
mtart LIKE ekpo-mtart,
netpr LIKE ekpo-netpr, "Net price in purchasing document
meins LIKE ekpo-meins, "unit
menge LIKE ekpo-menge, "quantity
txz01 LIKE ekpo-txz01, "material description
txjcd LIKE ekpo-txjcd, "tax jurisdiction code
matnr LIKE ekpo-matnr,
llief LIKE ekko-llief,
meins LIKE ekpo-meins,
bprme LIKE ekpo-bprme,
netpr LIKE ekpo-netpr,
peinh LIKE ekpo-peinh,
lifnr like lfa1-lifnr,
name1 like lfa1-lifnr,
pstlz like lfa1-pstlz,
stras like lfa1-stras,
text1 like t007s-text1,
END OF ty_ekko.
TYPES : BEGIN OF ty_ekbe,
ebeln LIKE ekbe-ebeln, "po number
ebelp LIKE ekbe-ebelp, "po line item
buzei LIKE ekbe-buzei,
belnr LIKE ekbe-belnr, "Number of material document
budat LIKE ekbe-budat, "Posting date in the document
xblnr LIKE ekbe-xblnr, "Reference document number
werks LIKE ekbe-werks, "plant
matnr LIKE ekbe-matnr, "material
menge LIKE ekbe-menge, "quantity
peinh LIKE ekpo-peinh,
dmbtr LIKE ekbe-dmbtr, "Amount in local currency
kalsm LIKE ekko-kalsm, "Procedure (pricing)
waers LIKE ekbe-waers, "currency
wrbtr LIKE ekbe-wrbtr, "Amount in document currency
bwtar LIKE ekbe-bwtar, "Valuation type
shkzg LIKE ekbe-shkzg,
maktx LIKE makt-maktx,
mwskz LIKE ekbe-mwskz,
bldat LIKE ekbe-bldat,
srvpos LIKE ekbe-srvpos,
packno LIKE ekbe-packno,
introw LIKE ekbe-introw,
lfbnr LIKE ekbe-lfbnr,
bwart TYPE ekbe-bwart,
budat1 TYPE ekbe-budat,
belnr1 TYPE ekbe-belnr,
END OF ty_ekbe.
TYPES : BEGIN OF ty_display,
BSART LIKE EKKO-BSART,
KNTTP LIKE EKPO-KNTTP,
lifnr(10) TYPE C, " LIKE ekko-lifnr,
ebeln LIKE ekko-ebeln,
bedat LIKE ekko-bedat,
budat LIKE ekbe-budat,
matnr LIKE ekbe-matnr,
maktx LIKE makt-maktx,
belnr LIKE ekbe-belnr,
bldat LIKE ekbe-bldat,
menge LIKE ekpo-menge,
peinh LIKE ekpo-peinh,
dmbtr LIKE ekbe-dmbtr,
shkzg LIKE ekbe-shkzg,
custduty LIKE konv-kwert,
bed LIKE konv-kwert,
cvd LIKE konv-kwert,
sertax LIKE konv-kwert,
sereducess LIKE konv-kwert,
surcharge LIKE konv-kwert,
educess LIKE konv-kwert,
insure LIKE konv-kwert,
freight LIKE konv-kwert,
octroi LIKE konv-kwert,
kursf LIKE rbkp-kursf,
grossamt LIKE konv-kwert,
vat4 LIKE konv-kwert,
vat8 LIKE konv-kwert,
vat125 LIKE konv-kwert,
INC LIKE KONV-KWERT, "
PF LIKE KONV-KWERT,
CF LIKE KONV-KWERT,
INS LIKE KONV-KWERT,
cst LIKE konv-kwert,
subdeb LIKE ekbe-dmbtr,
netamt LIKE ekbe-dmbtr,
cenvatcreditbed LIKE konv-kwert,
cenvatcreditecc LIKE konv-kwert,
vatcredit LIKE konv-kwert,
bgcharges LIKE konv-kwert,
srvpos LIKE ekbe-srvpos,
ktext1 LIKE esll-ktext1,
sertaxcredit LIKE konv-kwert,
sereducesscredit LIKE konv-kwert,
totaltaxbenefit LIKE konv-kwert,
inventoryvalue LIKE konv-kwert,
bwart TYPE ekbe-bwart,
belnr1 TYPE ekbe-belnr,
budat1 TYPE ekbe-budat,
lfbnr TYPE ekbe-lfbnr,
bprme LIKE ekpo-bprme,
meins LIKE ekpo-meins,
name1 like lfa1-name1,
pstlz like lfa1-pstlz,
stras like lfa1-stras,
mwskz like ekpo-mwskz,
text1 like t007s-text1,
kalsm like t007s-kalsm,
j_1icstno like j_1imovend-j_1icstno,
hkont(10) TYPE C, " like bseg-hkont,
saknr like ska1-saknr,
sakan like ska1-sakan,
ktoks like ska1-ktoks,
mcod1 like ska1-mcod1,
WAERS LIKE EKKO-WAERS,
bukrs like ekpo-bukrs,
total LIKE ekbe-dmbtr,
END OF ty_display.
TYPES : BEGIN OF ty_services,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
lfbnr LIKE ekbe-lfbnr,
packno LIKE esll-packno,
sub_packno LIKE esll-sub_packno,
srvpos LIKE esll-srvpos,
ktext1 LIKE esll-ktext1,
netwr LIKE esll-netwr,
act_wert LIKE esll-act_wert,
menge LIKE esll-menge,
bldat LIKE ekbe-bldat,
END OF ty_services.
TYPES : BEGIN OF ty_konv,
ebeln LIKE ekpo-ebeln,
ebelp LIKE ekpo-ebelp,
knumv LIKE konv-knumv,
kposn LIKE konv-kposn,
kschl LIKE konv-kschl,
kwert LIKE konv-kwert,
kbetr LIKE konv-kbetr,
END OF ty_konv.
TYPES : BEGIN OF ty_lfbnr,
belnr TYPE ekbe-belnr,
lfbnr TYPE ekbe-lfbnr,
END OF ty_lfbnr.
TYPES : BEGIN OF ty_miro,
belnr1 TYPE ekbe-belnr,
belnr TYPE ekbe-belnr,
budat TYPE ekbe-budat,
END OF ty_miro.
types: begin of ty_lfa1,
lifnr like lfa1-lifnr,
name1 like lfa1-lifnr,
pstlz like lfa1-pstlz,
stras like lfa1-stras,
end of ty_lfa1.
types: begin of ty_t007s,
mwskz like t007s-mwskz,
text1 like t007s-text1,
spras like t007s-spras,
kalsm like t007s-kalsm,
end of ty_t007s.
types: begin of ty_j_1imovend,
lifnr like j_1imovend-lifnr,
j_1icstno like j_1imovend-j_1icstno,
end of ty_j_1imovend.
types: begin of ty_bseg,
lifnr like bseg-lifnr,
dmbtr like bseg-dmbtr,
shkzg like bseg-shkzg,
hkont like bseg-hkont,
BELNR LIKE BSEG-BELNR,
end of ty_bseg.
types: begin of ty_ska1,
saknr like ska1-saknr,
sakan like ska1-sakan,
ktoks like ska1-ktoks,
mcod1 like ska1-mcod1,
end of ty_ska1.
DATA : it_lfbnr TYPE STANDARD TABLE OF ty_lfbnr,
wa_lfbnr TYPE ty_lfbnr,
it_lfa1 type standard table of ty_lfa1,
wa_lfa1 TYPE ty_lfa1,
it_t007s type standard table of ty_t007s,
wa_t007s TYPE ty_t007s,
it_j_1imovend type standard table of ty_j_1imovend,
wa_j_1imovend TYPE ty_j_1imovend,
it_bseg type standard table of ty_bseg,
wa_bseg TYPE ty_bseg,
it_ska1 type standard table of ty_ska1,
wa_ska1 TYPE ty_ska1,
it_miro TYPE STANDARD TABLE OF ty_miro,
wa_miro TYPE ty_miro,
w_belnr TYPE ekbe-belnr,
w_lfbnr TYPE ekbe-lfbnr,
w_belnr1 TYPE ekbe-belnr,
w_budat TYPE ekbe-budat.
CONSTANTS: Begin with C_ *
DATA: Begin with W_ *
DATA : w_flag TYPE c.
INTERNAL TABLES: Begin with IT_ *
DATA : it_ekko TYPE STANDARD TABLE OF ty_ekko WITH NON-UNIQUE KEY ebeln
ebelp,
it_ekpo type standard table of ty_ekpo,
it_ekbe TYPE STANDARD TABLE OF ty_ekbe,
it_ekbe1 TYPE STANDARD TABLE OF ty_ekbe WITH NON-UNIQUE KEY ebeln
ebelp,
it_display TYPE STANDARD TABLE OF ty_display,
it_subdebit TYPE STANDARD TABLE OF ty_ekbe,
it_services TYPE STANDARD TABLE OF ty_services,
it_packno TYPE STANDARD TABLE OF ty_services,
it_konv TYPE STANDARD TABLE OF ty_konv.
DATA : it_fieldcat TYPE slis_t_fieldcat_alv,
it_layout TYPE slis_layout_alv,
it_komv TYPE STANDARD TABLE OF komv WITH NON-UNIQUE KEY knumv
kschl.
WORKAREAS: Begin with WA_ *
DATA : wa_ekbe TYPE ty_ekbe,
wa_ekbe1 TYPE ty_ekbe,
wa_ekko TYPE ty_ekko,
wa_komv TYPE komv,
wa_display TYPE ty_display,
WA_LFA1 TYPE TY_LFA1,
W_GROSS_AMT type KOMV-KWERT,
wa_subdebit TYPE ty_ekbe,
wa_packno TYPE ty_services,
wa_services TYPE ty_services,
wa_konv TYPE ty_konv,
wa_taxcom TYPE taxcom,
wa_ls_fieldcat TYPE slis_fieldcat_alv.
FIELD-SYMBOLS: Begin with FS_ *
FIELD-GROUPS: Begin with FG_ *
CONTROLS: *
SELECT-OPTIONS: Begin with SO_ *
SELECT-OPTIONS : so_lifnr FOR ekko-lifnr ,
so_mtart FOR ekpo-mtart,
so_ebeln FOR ekbe-ebeln,
so_matnr FOR ekbe-matnr,
so_date FOR sy-datum no-display,
do_date for ekko-bedat,
tax_code for ekpo-mwskz,
mr_date for ekbe-budat,
mat_gr for ekpo-matkl,
mat_tp for ekpo-mtart,
pr_plant for ekbe-werks,
pr_ekorg for ekko-ekorg.
PARAMETERS: Begin with PR_ *
*PARAMETER : pr_plant LIKE ekpo-werks . "OBLIGATORY.
pr_ekorg LIKE ekko-ekorg . "OBLIGATORY.
SELECTION-SCREEN : BEGIN OF BLOCK b1 WITH FRAME TITLE text-001 .
PARAMETER : pr_preg TYPE c radiobutton group g1 default 'X',
pr_ror TYPE c RADIOBUTTON GROUP g1 .
SELECTION-SCREEN : END OF BLOCK b1.
START-OF-SELECTION *
START-OF-SELECTION .
*--- Get the data reguired--
PERFORM f001-get_data.
*-------Calculate the tax required -
PERFORM f002-cal_taxes.
PERFORM miro_get_data.
END-OF-SELECTION *
END-OF-SELECTION.
*---Display the report--
PERFORM f003-display_register.
*& Form F001-GET_DATA
text
--> p1 text
<-- p2 text
FORM f001-get_data .
Clear and Refresh all internal table and work area.
REFRESH : it_ekko,
it_ekbe,
it_services,
it_packno,
it_konv,
it_lfa1,
it_komv.
CLEAR : wa_ekko,
wa_ekbe,
wa_services,
wa_packno,
wa_konv,
wa_lfa1,
wa_komv.
Get the history records for all the selected PO. from table EKBE of
type GR.
IF pr_preg = 'X'.
*Get Purchasing Document Number, Number of the document condition,
*Vendor's accountNumber, Currency Key, Procedure , Country for Tax
*ReturnPurchasing OrganizationExchange rate In an internal table it_ekko
*break-point.
SELECT pBSART qknttp pebeln pknumv plifnr pwaers pkalsm plands pekorg pwkurs
wkurs pbedat qebelp qbukrs qmatkl qmtart pllief qmeins qbprme
qtxjcd qmwskz pwkurs qnetpr qmenge QPEINH
INTO CORRESPONDING FIELDS OF TABLE it_ekko
FROM ekko AS p INNER JOIN ekpo AS q
ON pebeln = qebeln
WHERE p~ekorg in pr_ekorg
AND p~lifnr IN so_lifnr
AND q~mtart IN so_mtart
AND p~ebeln IN so_ebeln
and p~bedat in do_date
and q~mwskz in tax_code
and q~matkl in mat_gr
and q~mtart in mat_tp
and kalsm = 'SIL000'
AND EKORG = 'SDOP'.
GET ALL THE PO FOR WHICH MIRO HAS BEEN DONE
SELECT ebeln ebelp budat bldat werks
INTO CORRESPONDING FIELDS OF TABLE it_ekbe1
FROM ekbe
FOR ALL ENTRIES IN it_ekko
WHERE ebeln = it_ekko-ebeln
AND ebelp = it_ekko-ebelp
AND bewtp = 'Q'
AND werks in pr_plant
AND budat IN so_date
AND ( bwart = '101' OR bwart = '102' ) "OR bwart = '105' OR bwart = '106' OR bwart ='')
AND ebeln IN so_ebeln
and budat in mr_date
AND matnr IN so_matnr.
AND ( BUDAT >= SO_DATE-low and BUDAT <= SO_DATE-high ).
Check whether any records is present
IF sy-subrc = 0.
IF NOT it_ekbe1 IS INITIAL.
SELECT ebeln ebelp buzei belnr budat xblnr werks matnr menge
dmbtr waers wrbtr bwtar shkzg dmbtr bldat srvpos
packno introw lfbnr bwart
INTO CORRESPONDING FIELDS OF TABLE it_ekbe
FROM ekbe
FOR ALL ENTRIES IN it_ekbe1
WHERE ebeln = it_ekbe1-ebeln
AND ebelp = it_ekbe1-ebelp
and budat in mr_date
AND budat IN so_date
and ( BUDAT >= SO_DATE-low and BUDAT <= SO_DATE-high )
AND bewtp = 'Q'.
AND ( bwart = '101' OR bwart = '102' OR bwart = '103' OR bwart = '105' ). "OR bwart = '105' OR bwart = '106' OR bwart ='').
AND bwart = '103'.
and WERKS = PR_PLANT.
IF sy-subrc = 0.
ENDIF.
ELSE.
SELECT ebeln ebelp buzei belnr budat xblnr werks matnr menge
dmbtr waers wrbtr bwtar shkzg dmbtr bldat srvpos
packno introw lfbnr bwart
INTO CORRESPONDING FIELDS OF TABLE it_ekbe
FROM ekbe
FOR ALL ENTRIES IN it_ekbe1
WHERE ebeln = it_ekbe1-ebeln
AND ebelp = it_ekbe1-ebelp
and budat in mr_date
AND budat IN so_date
and ( BUDAT >= SO_DATE-low and BUDAT <= SO_DATE-high )
AND bewtp = 'Q'.
AND ( bwart = '101' OR bwart = '102' OR bwart = '103' OR bwart = '105' ) . "OR bwart = '105' OR bwart = '106' OR bwart ='').
AND bwart = '102'.
and WERKS = PR_PLANT.
IF sy-subrc = 0.
ENDIF.
ENDIF.
ENDIF.
new code added
*get the venor address
select alifnr bname1 bpstlz bstras b~lifnr
into corresponding fields of table it_LFA1
from ekko as a inner join lfa1 as b
on alifnr = blifnr
for all entries in it_EKKO
where B~lifnr = it_EKKO-lifnr.
***tax code description added*******************
select mwskz text1 spras kalsm
from t007s
into corresponding fields of table it_t007s for all entries in it_ekko
where mwskz = it_ekko-mwskz and spras = 'E' and kalsm = 'TAXSIL'.
*******vendor vat no. added*************
select lifnr j_1icstno
from j_1imovend
into corresponding fields of table it_j_1imovend for all entries in it_ekko
where lifnr = it_ekko-lifnr.
**********gl code added******************************************
*select lifnr shkzg dmbtr hkont
*from bseg
*into corresponding fields of table it_bseg for all entries in it_lfa1 " it_ekko
*where LIFNR = it_lfa1-LIFNR and shkzg = 'S'.
*************gl code description added*******************************************
*select saknr ktoks mcod1 sakan
*from ska1
*into corresponding fields of table it_ska1 for all entries in it_bseg
*where sakan = it_bseg-hkont and ktoks = 'MAT'.
Get the package number , service number , service text , net price ,
accual amount , qty. etc
IF NOT it_packno[] IS INITIAL.
SELECT ppackno psrvpos pktext1 pnetwr pact_wert pmenge
INTO CORRESPONDING FIELDS OF TABLE it_services
FROM esll AS p "inner join ESLL as Q
on PPLN_PACKNO = QPACKNO
and PINTROW = QINTROW
FOR ALL ENTRIES IN it_packno
WHERE p~packno = it_packno-sub_packno.
IF sy-subrc = 0.
ENDIF.
ENDIF.
Get Number of the document condition ,line item number, Condition
value for all selected PO.
IF NOT it_ekko[] IS INITIAL.
SELECT knumv kposn kschl kwert
INTO CORRESPONDING FIELDS OF TABLE it_konv
FROM konv
FOR ALL ENTRIES IN it_ekko
WHERE knumv = it_ekko-knumv.
IF sy-subrc = 0.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " F001-GET_DATA
*& Form F002-CAL_TAXES
text
--> p1 text
<-- p2 text
FORM f002-cal_taxes .
Calculate taxes for all the PO.
LOOP AT it_ekbe INTO wa_ekbe.
CLEAR : wa_display,
wa_ekko.
READ TABLE it_ekko WITH TABLE KEY ebeln = wa_ekbe-ebeln
ebelp = wa_ekbe-ebelp
INTO wa_ekko.
IF sy-subrc = 0.
ENDIF.
CLEAR wa_taxcom.
Get the text for the Material.
SELECT SINGLE maktx
INTO wa_display-maktx
FROM makt
WHERE matnr = wa_ekbe-matnr
AND spras = sy-langu.
wa_taxcom-bukrs = wa_ekko-bukrs.
wa_taxcom-budat = wa_ekbe-bldat.
wa_taxcom-budat = wa_ekko-bedat." change by dinesh
wa_taxcom-waers = wa_ekbe-waers.
wa_taxcom-kposn = wa_ekbe-ebelp.
wa_taxcom-mwskz = wa_ekko-mwskz.
wa_taxcom-txjcd = wa_ekko-txjcd.
taxcom-shkzg = 'H'.
wa_taxcom-xmwst = 'X'.
IF ekko-bstyp EQ bstyp-best.
wa_taxcom-wrbtr = wa_ekko-netpr * wa_ekbe-menge * wa_ekko-wkurs.
WA_TAXCOM-WRBTR = wa_ekbe-dmbtr.
ELSE.
taxcom-wrbtr = ekpo-zwert.
ENDIF.
wa_taxcom-lifnr = wa_ekko-lifnr.
wa_taxcom-land1 = wa_ekko-lands. "WIA
wa_taxcom-ekorg = wa_ekko-ekorg.
wa_taxcom-hwaer = 'INR'. "t001-waers.
wa_taxcom-llief = wa_ekko-llief.
wa_taxcom-bldat = wa_ekbe-bldat.
wa_taxcom-matnr = wa_ekbe-matnr. "HTN-Abwicklung
wa_taxcom-werks = wa_ekbe-werks. "pr_plant.
taxcom-bwtar = ekpo-bwtar.
wa_taxcom-matkl = wa_ekko-matkl.
wa_taxcom-meins = wa_ekko-meins.
wa_taxcom-ebeln = wa_ekbe-ebeln.
wa_taxcom-ebelp = wa_ekbe-ebelp.
wa_taxcom-mglme = wa_ekbe-menge.
wa_taxcom-mtart = wa_ekko-mtart.
*Call function module CALCULATE_TAX_ITEM--
CALL FUNCTION 'CALCULATE_TAX_ITEM'
EXPORTING
i_taxcom = wa_taxcom
display_only = 'X'
dialog = diakz
IMPORTING
e_taxcom = wa_taxcom
nav_anteil = hwert
TABLES
t_xkomv = it_komv
EXCEPTIONS
OTHERS = 01.
IF sy-subrc = 0.
ENDIF.
wa_display-bsart = wa_ekko-bsart.
wa_display-knttp = wa_ekko-knttp.
wa_display-bprme = wa_ekko-bprme.
wa_display-meins = wa_ekko-meins.
wa_display-lifnr = wa_ekko-lifnr.
wa_display-ebeln = wa_ekbe-ebeln.
wa_display-bedat = wa_ekko-bedat.
wa_display-bwart = wa_ekbe-bwart.
wa_display-budat = wa_ekbe-budat.
wa_display-matnr = wa_ekbe-matnr.
wa_display-belnr = wa_ekbe-belnr.
wa_display-menge = wa_ekbe-menge.
wa_display-PEINH = wa_ekko-PEINH.
wa_display-dmbtr = ( wa_ekko-netpr * wa_ekbe-menge * wa_ekko-wkurs ) / wa_ekko-PEINH.
WA_DISPLAY-DMBTR = WA_EKBE-DMBTR.
wa_display-srvpos = wa_ekbe-srvpos.
wa_display-mwskz = wa_EKKO-mwskz.
wa_display-WAERS = wa_EKKO-WAERS.
read table it_lfa1 into wa_lfa1 with key lifnr = wa_ekko-lifnr.
wa_display-name1 = wa_lfa1-name1.
wa_display-pstlz = wa_lfa1-pstlz.
wa_display-stras = wa_lfa1-stras.
read table it_t007s into wa_t007s with key mwskz = wa_ekko-mwskz.
wa_display-text1 = wa_t007s-text1.
read table it_j_1imovend into wa_j_1imovend with key lifnr = wa_ekko-lifnr.
wa_display-j_1icstno = wa_j_1imovend-j_1icstno.
read table it_bseg into wa_bseg with key LIFNR = wa_lfa1-lifnr. " wa_ekKO-LIFNR .
wa_display-HKONT = wa_bseg-HKONT.
*read table it_ska1 into wa_ska1 with key sakan = wa_bseg-hkont.
*wa_display-mcod1 = wa_ska1-mcod1.
READ TABLE it_komv WITH KEY kschl = 'JCDB'
kposn = wa_ekko-ebelp
INTO wa_komv.
IF sy-subrc = 0.
wa_display-custduty = wa_komv-kwert .
ELSE.
READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
kposn = wa_ekko-ebelp
kschl = 'JCDB'.
IF wa_ekko-menge <> 0.
wa_display-custduty = ( wa_ekbe-menge / wa_ekko-menge
) * wa_konv-kwert * wa_ekko-wkurs.
ENDIF.
ENDIF.
Get the BED OR EXCISE DUTY
CLEAR : wa_komv , wa_konv.
READ TABLE it_komv WITH KEY kschl = 'JMOP'
kposn = wa_ekko-ebelp
INTO wa_komv.
IF sy-subrc = 0 .
wa_display-BED = wa_komv-kwert .
ELSE.
READ TABLE it_komv WITH KEY kschl = 'JMOQ'
kposn = wa_ekko-ebelp
INTO wa_komv.
IF sy-subrc = 0.
wa_display-BED = wa_komv-kwert .
ELSE.
READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
kposn = wa_ekko-ebelp
kschl = 'JMOP'.
IF sy-subrc = 0.
IF wa_ekko-menge <> 0.
wa_display-BED = ( wa_ekbe-menge / wa_ekko-menge
) * wa_konv-kwert * wa_ekko-wkurs.
ENDIF.
ELSE.
READ TABLE it_konv INTO wa_konv WITH KEY
knumv = wa_ekko-knumv
kposn = wa_ekko-ebelp
kschl = 'JMOQ'.
IF wa_ekko-menge <> 0.
wa_display-BED = ( wa_ekbe-menge / wa_ekko-menge
) * wa_konv-kwert * wa_ekko-wkurs.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
******END OF EXCISE DUTY AND THE BED******************************************************
Get the EDUCATION CESS
CLEAR : wa_komv , wa_konv.
READ TABLE it_komv WITH KEY kschl = 'JEC1'
kposn = wa_ekko-ebelp
INTO wa_komv.
IF sy-subrc = 0 .
wa_display-educess = wa_komv-kwert .
ELSE.
READ TABLE it_komv WITH KEY kschl = 'JESQ'
kposn = wa_ekko-ebelp
INTO wa_komv.
IF sy-subrc = 0.
wa_display-educess = wa_komv-kwert .
ELSE.
READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
kposn = wa_ekko-ebelp
kschl = 'JEC1'.
IF sy-subrc = 0.
IF wa_ekko-menge <> 0.
wa_display-educess = ( wa_ekbe-menge / wa_ekko-menge
) * wa_konv-kwert * wa_ekko-wkurs.
ENDIF.
ELSE.
READ TABLE it_konv INTO wa_konv WITH KEY
knumv = wa_ekko-knumv
kposn = wa_ekko-ebelp
kschl = 'JESQ'.
IF wa_ekko-menge <> 0.
wa_display-educess = ( wa_ekbe-menge / wa_ekko-menge
) * wa_konv-kwert * wa_ekko-wkurs.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*END OF EDUCATION CESS
Get the SERVICE TAX
clear : WA_KOMV , WA_KONV.
read table IT_KOMV with key KSCHL = 'JSRT'
KPOSN = WA_EKKO-EBELP
into WA_KOMV.
if SY-SUBRC = 0.
WA_DISPLAY-SERTAX = WA_KOMV-KWERT .
else.
read table IT_KONV into WA_KONV with key KNUMV = WA_EKKO-KNUMV
KPOSN = WA_EKKO-EBELP
KSCHL = 'JSRT'.
WA_DISPLAY-SERTAX = WA_KONV-KWERT * wa_ekko-WKURS.
endif.
END OF SERVICE TAX****************************************
Get the EDUCATION CESS ON SERVICE TAX************************
clear : WA_KOMV , WA_KONV.
read table IT_KOMV with key KSCHL = 'JEC5'
KPOSN = WA_EKKO-EBELP
into WA_KOMV.
if SY-SUBRC = 0.
WA_DISPLAY-SEREDUCESS = WA_KOMV-KWERT .
else.
read table IT_KONV into WA_KONV with key KNUMV = WA_EKKO-KNUMV
KPOSN = WA_EKKO-EBELP
KSCHL = 'JEC5'.
WA_DISPLAY-SEREDUCESS = WA_KONV-KWERT * wa_ekko-WKURS.
endif.
******END OF SERVICE TAX ON EDUCATION CESS************************************************
Get the CVD
CLEAR : wa_komv , wa_konv.
READ TABLE it_komv WITH KEY kschl = 'JCV1'
kposn = wa_ekko-ebelp
INTO wa_komv.
IF sy-subrc = 0.
wa_display-cvd = wa_komv-kwert .
ELSE.
READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
kposn = wa_ekko-ebelp
kschl = 'JCV1'.
IF wa_ekko-menge <> 0.
wa_display-cvd = ( wa_ekbe-menge / wa_ekko-menge
) * wa_konv-kwert * wa_ekko-wkurs.
ENDIF.
ENDIF.
Get the total INSURANCE
CLEAR : wa_komv , wa_konv.
READ TABLE it_komv WITH KEY kschl = 'ZIN1'
kposn = wa_ekko-ebelp
INTO wa_komv.
IF sy-subrc = 0 .
wa_display-insure = wa_komv-kwert .
ELSE.
READ TABLE it_komv WITH KEY kschl = 'ZIN2'
kposn = wa_ekko-ebelp
INTO wa_komv.
IF sy-subrc = 0.
wa_display-insure = wa_komv-kwert .
ELSE.
READ TABLE it_konv INTO wa_konv WITH KEY knumv = wa_ekko-knumv
kposn = wa_ekko-ebelp
kschl = 'ZIN1'.
IF sy-subrc = 0.
IF wa_ekko-menge <> 0.
wa_display-insure = ( wa_ekbe-menge / wa_ekko-menge
) * wa_konv-kwert * wa_ekko-wkurs.
ENDIF.
ELSE.
READ TABLE it_konv INTO wa_konv WITH KEY
Hi Ingo,
Thanks for the reply. But let me rephrase my question. In the Bex we get a extra row called overall result in the result set which gives the correct count/total/average based on exception aggregation. The question is how we show the overall result row in the crystal or rather how can we map it into crystal. So i thought as of now we should create a formula to compute the overall result and display it.
Hope I am clear this time in asking the right question.
Many many thanks in advance for your reply.
Kind regards,
Shiva.
Maybe you are looking for
-
Error message when trying to import photos into Bridge CS5
Hi, when trying to import photos from a card reader into Bridge CS5, I click "get Photos" and get the following error message: "cannot obtain all files from this device. Please ensure the device is connected properly, or that the battery is charged".
-
WLC 5508 running 7.4.110.0 unable to tftp upload config from controller
Hi, Two WLC 5508 running identical code version. One is 50 license Primary, the second is HA. Identical config on both. HA WLC can upload its config to the TFTP or FTP server but Primary cannot. The operation fails for both CLI and GUI and for diffe
-
Failed to load library mda_sap
Hi people, I want to publish a Query with the Query as a Web Service. But I get the next message error: Failed to load library mda_sap. System error message: the specified module could not be found (WIS 10901) I´ve tried with this notes: 1257495 - In
-
Stuck with a 802.11b/g router?
I have a MI424WR (Rev E) router with a 50/25 plan. This router only supports the 802.11b/g networking standards, which of course, has a theoretical wireless speed of 54Mbps, but in actuality doesn't get anywhere near those numbers due to overhead. Th
-
Illustrator 14.0.0 CS4 freezes on start up loading plugins on OSX10.10
What is the problem. Started after a fresh 10.10 install and restore from backup. Software was working previously. Also at times i get error of Photoshopimport.aip and Photoshop.export.aip, but not all the time do i get the error but it always freeze