NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

*&---------------------------------------------------------------------*
*& Form DROP_DOWN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM drop_down .
* BREAK-POINT.
DATA: gt_list TYPE TABLE OF vrm_value.
DATA: gw_list TYPE vrm_value.
* DATA: gt_values TYPE TABLE OF dynpread,
* gwa_values TYPE dynpread.
* DATA: gv_selected_value TYPE c.

gw_list-key = '1'.
gw_list-text = 'Forward'.
APPEND gw_list TO gt_list.
gw_list-key = '2'.
gw_list-text = 'Utilization'.
APPEND gw_list TO gt_list.
gw_list-key = '3'.
gw_list-text = 'Cancellation'.
APPEND gw_list TO gt_list.

CALL FUNCTION 'VRM_SET_VALUES'
EXPORTING
id = 'p_sfha'
values = gt_list
* EXCEPTIONS
* id_illegal_name = 1
* OTHERS = 2.
.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form GET_DATA_OPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_data_option .

CONSTANTS : lc_76a TYPE c LENGTH 3 VALUE '76A'.

SELECT a~zbukrs,
a~rfha,
a~kontrh,
a~sgsart,
a~zblotter_date,
a~zspot_ref,
a~zatmf,
a~zbook_dt,
a~zcost_ct,
a~zprofit_ct,
a~flow_type,
a~sfhaart,
a~zbuysell,
a~zexp_date,
a~zexp_day,
a~zset_date,
a~zset_day,
a~zcurr1,
a~zcurr2,
a~zpc1,
ABS( a~zamt1 ) AS zamt1,
ABS( a~zamt2 ) AS zamt2,
a~zstrike,
a~zop_type,
a~zset_type,
a~zprem_cal,
a~zpremium,
a~zsign,
a~zprem_amt,
a~zprem_cuur,
a~zpayt_date,
a~zstg,
a~zstg_typ,
a~zstg_no,
a~zremarks,
c~zunwind_status,
c~zgl_amt,
c~zunwind_date,
* c~zunwind_amt,
c~ztot_unwind_amt,
c~zrem_amt,
b~saktiv,
b~rfhazul
FROM zfs_frx_t020 AS a
INNER JOIN vtbfha AS b
ON a~zbukrs = b~bukrs
AND a~rfha = b~rfha
LEFT OUTER JOIN zfs_frx_t023 AS c ON a~zbukrs = c~zbukrs
AND a~rfha = c~rfha AND c~zunwind_date <= @p_date
INTO TABLE @DATA(lt_data)
WHERE a~zexp_date >= @p_date
AND a~zbukrs IN @s_bukrs
AND a~sgsart = @lc_76a
AND b~saktiv <> 3
ORDER BY a~zstg_no DESCENDING.


IF sy-subrc = 0.
"Passing Local data to Global internal table.
gt_data = CORRESPONDING #( lt_data MAPPING
zbukrs = zbukrs
rfha = rfha
kontrh = kontrh
sgsart = sgsart
zblotter_date = zblotter_date
zbook_dt = zbook_dt
zspot_ref = zspot_ref
zatmf = zatmf
zcost_ct = zcost_ct
zprofit_ct = zprofit_ct
flow_type = flow_type
sfhaart = sfhaart
zbuysell = zbuysell
zexp_date = zexp_date
zexp_day = zexp_day
zset_date = zset_date
zset_day = zset_day
zcurr1 = zcurr1
zcurr2 = zcurr2
zpc1 = zpc1
zamt1 = zamt1
zgl_amt = zgl_amt
zamt2 = zamt2
zstrike = zstrike
zop_type = zop_type
zset_type = zset_type
zprem_cal = zprem_cal
zpremium = zpremium
zsign = zsign
zprem_amt = zprem_amt
zprem_cuur = zprem_cuur
zpayt_date = zpayt_date
zstg = zstg
zstg_typ = zstg_typ
zstg_no = zstg_no
zremarks = zremarks
zhedcost = zprem_amt
zdeal_status = rfhazul
ztot_unwind_amt = ztot_unwind_amt ).
CLEAR lt_data.
ENDIF."}


" Filter for Status of Transaction
* DELETE gt_data WHERE saktiv = 3.
IF t_stg_no IS NOT INITIAL.
DELETE gt_data WHERE zstg_no <> t_stg_no.
ENDIF.

IF t_rfha IS NOT INITIAL.
DELETE gt_data WHERE rfha NOT IN t_rfha.
ENDIF.

IF t_kontrh IS NOT INITIAL.
DELETE gt_data WHERE kontrh NOT IN t_kontrh.
ENDIF.

"""""Added By Sandesh Yadav on 17.10.2023"""""""""
IF t_exe = '1'.
DELETE gt_data WHERE zdeal_status NE 3.
ELSEIF t_exe = '2'.
DELETE gt_data WHERE zdeal_status NE 4.
ELSEIF t_exe IS INITIAL.
DELETE gt_data WHERE zdeal_status > 2.
ENDIF.

""""""""""End Of changes """"""""""""""""""""""""

CLEAR : gs_data1.
SORT : gt_data BY rfha zunwind_date.
LOOP AT gt_data ASSIGNING <fs_data>.

IF <fs_data>-zcurr1 IS NOT INITIAL AND <fs_data>-zcurr2 IS NOT INITIAL.
CONCATENATE <fs_data>-zcurr1 ':' <fs_data>-zcurr2 INTO <fs_data>-zcurr_pair.
ENDIF.


SELECT SINGLE zexp_id FROM zfs_frx_t007 INTO <fs_data>-zexp_id
WHERE zbukrs = <fs_data>-zbukrs AND zrfha_hedg = <fs_data>-rfha.

IF <fs_data>-zdeal_status = '00001'.
<fs_data>-zdeal_status = 'Unsettled'.
ELSEIF <fs_data>-zdeal_status = '00002'.
<fs_data>-zdeal_status = 'Settled'.
ENDIF.



IF <fs_data>-zcurr1 = 'USD'.
<fs_data>-eqi_usd = <fs_data>-zamt1.
ELSEIF <fs_data>-zcurr2 = 'USD'.
<fs_data>-eqi_usd = <fs_data>-zamt2.
ENDIF.

IF <fs_data>-zcurr2 = 'INR'.
<fs_data>-eqi_inr = <fs_data>-zamt2.
ELSEIF <fs_data>-zcurr1 = 'INR'.
<fs_data>-eqi_inr = <fs_data>-zamt1.
ENDIF.

** READ TABLE gt_data INTO DATA(gw_data1) WITH KEY zstg = <fs_data>-zstg .
** IF sy-subrc = 0.

*** IF <fs_data>-zunwind_status = '02' AND p_date >= <fs_data>-zunwind_date ."AND <fs_data>-zunwind_amt IS NOT INITIAL.
*** CLEAR <fs_data>-zamt2.
*** ELSEIF <fs_data>-zunwind_status = '01'AND p_date >= <fs_data>-zunwind_date .
*** <fs_data>-zamt2 = <fs_data>-zrem_amt.
*** ENDIF.
** ENDIF.

* IF <fs_data>-zunwind_date = p_date. "AND zdetail_flag = abap_false. ""added by sahil 12.02.2024
* DELETE gt_data WHERE zunwind_date <> p_date AND rfha = <fs_data>-rfha.
* ENDIF.

IF gs_data1-rfha = <fs_data>-rfha.
IF gs_data1-zunwind_date > <fs_data>-zunwind_date.
* DELETE gt_data WHERE zunwind_date = <fs_data>-zunwind_date AND rfha = <fs_data>-rfha.
ELSEIF gs_data1-zunwind_date < <fs_data>-zunwind_date.
DELETE gt_data WHERE zunwind_date = gs_data1-zunwind_date AND rfha = gs_data1-rfha.
ENDIF.
ENDIF.
IF <fs_data> IS NOT INITIAL.
MOVE-CORRESPONDING <fs_data> TO gs_data1.
ENDIF.

SELECT SUM( zgl_amt ) INTO lv_total_gl_amt FROM zfs_frx_t023 WHERE rfha = <fs_data>-rfha AND zunwind_date <= p_date.
<fs_data>-zgl_amt = lv_total_gl_amt.
CASE <fs_data>-zpc1.
WHEN 1.
<fs_data>-zpc1_desc = 'Put'.
WHEN 2.
<fs_data>-zpc1_desc = 'Call'.
WHEN OTHERS.
ENDCASE.

CASE <fs_data>-zset_type.
WHEN 1.
<fs_data>-zset_type_desc = 'Physical Settlement'.
WHEN 2.
<fs_data>-zset_type_desc = 'Cash Settlement'.
WHEN OTHERS.
ENDCASE.

CASE <fs_data>-zop_type.
WHEN 1.
<fs_data>-zop_type_desc = 'European'.
WHEN 2.
<fs_data>-zop_type_desc = 'American'.
WHEN OTHERS.
ENDCASE.

ENDLOOP.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form OUTPUT_OPTION
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM output_option .


" ALV Display
TRY .
CALL METHOD cl_salv_table=>factory
IMPORTING
r_salv_table = gr_alv
CHANGING
t_table = gt_data.
CATCH cx_salv_msg.
ENDTRY.

TRY.
DATA(lo_columns) = gr_alv->get_columns( ).
lo_columns->set_optimize( 'X' ). "--> Optimise all columns
* lo_columns->set_exception_column( value = 'LIGHTS' ).
CATCH cx_salv_data_error.
ENDTRY.

" For HotSpot for RFHA Column
DATA : lr_col TYPE REF TO cl_salv_column_table. "column instance
IF lo_columns IS NOT INITIAL.
TRY .
lr_col ?= lo_columns->get_column( 'RFHA' ) .
CATCH cx_salv_not_found.
ENDTRY.
" Hotspot
TRY .
CALL METHOD lr_col->set_cell_type
EXPORTING
value = if_salv_c_cell_type=>hotspot.
CATCH cx_salv_data_error .
ENDTRY.

ENDIF.
DATA(lo_functions) = gr_alv->get_functions( ).
lo_functions->set_all( ).

* Modify Field Catalog
DATA: err_notfound TYPE REF TO cx_salv_not_found.
TRY.
DATA(single_column) = lo_columns->get_column( 'ZCURR1' ).
single_column->set_medium_text( 'Curr 1' ).

single_column = lo_columns->get_column( 'ZCURR2' ).
single_column->set_medium_text( 'Curr 2' ).

single_column = lo_columns->get_column( 'ZEXP_DAY' ).
single_column->set_medium_text( 'Exp Day' ).

single_column = lo_columns->get_column( 'ZDEAL_STATUS' ).
single_column->set_medium_text( 'Deal Status' ).

single_column = lo_columns->get_column( 'ZEXP_DATE' ).
single_column->set_medium_text( 'Expire Date' ).

single_column = lo_columns->get_column( 'ZSET_DAY' ).
single_column->set_medium_text( 'Set Day' ).

single_column = lo_columns->get_column( 'ZAMT1' ).
single_column->set_short_text( 'Amount 1' ).
single_column->set_medium_text( 'Amount 1' ).
single_column->set_long_text( 'Amount 1' ).

single_column = lo_columns->get_column( 'ZAMT2' ).
single_column->set_short_text( 'Amount 2' ).
single_column->set_medium_text( 'Amount 2' ).
single_column->set_long_text( 'Amount 2' ).

single_column = lo_columns->get_column( 'ZSTRIKE' ).
single_column->set_medium_text( 'RATE' ).

single_column = lo_columns->get_column( 'ZSPOT_REF' ).
single_column->set_short_text( 'Spot Ref' ).
single_column->set_medium_text( 'Spot Reference' ).
single_column->set_long_text( 'Spot Reference' ).


single_column = lo_columns->get_column( 'ZATMF' ).
single_column->set_short_text( 'ATMF' ).
single_column->set_medium_text( 'ATMF' ).
single_column->set_long_text( 'ATMF' ).

single_column = lo_columns->get_column( 'ZCURR2' ).
single_column->set_medium_text( 'Curr 2' ).

single_column = lo_columns->get_column( 'ZPREMIUM' ).
single_column->set_short_text( 'Prem Rate' ).
single_column->set_medium_text( 'Premium Rate' ).
single_column->set_long_text( 'Premium Rate' ).

single_column = lo_columns->get_column( 'ZPREM_AMT' ).
single_column->set_short_text( 'Prem Amnt' ).
single_column->set_medium_text( 'Premium Amount' ).
single_column->set_long_text( 'Premium Amount' ).

single_column = lo_columns->get_column( 'ZSTG_TYP' ).
single_column->set_medium_text( 'Strategy Type' ).

single_column = lo_columns->get_column( 'ZSET_TYPE_DESC' ).
single_column->set_short_text( 'Sett Type' ).
single_column->set_medium_text( 'Settlement Type' ).
single_column->set_long_text( 'Settlement Type' ).

single_column = lo_columns->get_column( 'ZOP_TYPE_DESC' ).
single_column->set_short_text( 'Opt Type' ).
single_column->set_medium_text( 'Option Type' ).
single_column->set_long_text( 'Option Type' ).

single_column = lo_columns->get_column( 'ZPC1_DESC' ).
single_column->set_short_text( 'Put/Call' ).
single_column->set_medium_text( 'Put/Call' ).
single_column->set_long_text( 'Put/Call' ).

single_column = lo_columns->get_column( 'ZHEDCOST' ).
single_column->set_short_text( 'Hed Cost' ).
single_column->set_medium_text( 'Hedge Cost' ).
single_column->set_long_text( 'Hedge Cost' ).

single_column = lo_columns->get_column( 'ZCURR_PAIR' ).
single_column->set_short_text( 'CURR PAIR' ).
single_column->set_medium_text( 'Currency Pair' ).
single_column->set_long_text( 'Currency Pair' ).

single_column = lo_columns->get_column( 'ZCOST_CT' ).
single_column->set_short_text( 'Cost Ctr' ).
single_column->set_medium_text( 'Cost Center' ).
single_column->set_long_text( 'Cost Center' ).

single_column = lo_columns->get_column( 'ZPROFIT_CT' ).
single_column->set_short_text( 'Profit Ctr' ).
single_column->set_medium_text( 'Profit Center' ).
single_column->set_long_text( 'Profit Center' ).

single_column = lo_columns->get_column( 'EQI_INR' ).
single_column->set_short_text( 'Eqi INR' ).
single_column->set_medium_text( 'Equivalent INR' ).
single_column->set_long_text( 'Equivalent INR' ).

single_column = lo_columns->get_column( 'EQI_USD' ).
single_column->set_short_text( 'Eqi USD' ).
single_column->set_medium_text( 'Equivalent USD' ).
single_column->set_long_text( 'Equivalent USD' ).

single_column = lo_columns->get_column( 'ZEXP_ID' ).
single_column->set_short_text( 'Exp ID' ).
single_column->set_medium_text( 'Exposure ID' ).
single_column->set_long_text( 'Exposure ID' ).


single_column = lo_columns->get_column( 'ZTOT_UNWIND_AMT' ).
single_column->set_short_text( 'Unw Amt' ).
single_column->set_medium_text( 'Unwind Amt' ).
single_column->set_long_text( 'Unwind Amount' ).

single_column = lo_columns->get_column( 'ZGL_AMT' ).
single_column->set_short_text( 'G/L Amt' ).
single_column->set_medium_text( 'G/L Amt' ).
single_column->set_long_text( 'Gain/Loss Amount' ).


single_column = lo_columns->get_column( 'ZREM_AMT' ).
single_column->set_short_text( 'Rem Amt' ).
single_column->set_medium_text( 'Rem Amt' ).
single_column->set_long_text( 'Remaining Amount' ).

single_column = lo_columns->get_column( 'ZUNWIND_DATE' ).
single_column->set_short_text( 'Date' ).
single_column->set_medium_text( 'Unwind Date' ).
single_column->set_long_text( 'Unwind Date' ).

CATCH cx_salv_not_found INTO err_notfound.
* Add error processing
ENDTRY.

"" Events for ON Hotpsot Line click or Double click or user command
DATA: gr_events TYPE REF TO lcl_handle_events.
*Register events
DATA: lr_events TYPE REF TO cl_salv_events_table.
lr_events = gr_alv->get_event( ). "get event

"" Events for ON Hotpsot Line click or Double click or user command
CREATE OBJECT gr_events.
SET HANDLER gr_events->on_line_click FOR lr_events. "register event handler method
* SET HANDLER GR_EVENTS->ON_DOUBLE_CLICK FOR LR_EVENTS. "register event handler method
SET HANDLER gr_events->on_app_tool_click FOR lr_events.

"" Build Layout
DATA(lo_layout) = gr_alv->get_layout( ).
DATA:ls_key TYPE salv_s_layout_key..
lo_layout->set_save_restriction( if_salv_c_layout=>restrict_none ).
ls_key-report = sy-repid.
lo_layout->set_key( ls_key ).
lo_layout->set_default( abap_true ).

lo_layout->set_initial_layout( gs_variant-variant ).

"" Final Data to Display Output
gr_alv->display( ). "display grid

ENDFORM.
CLASS lcl_handle_events IMPLEMENTATION.
" Hotspot Click
METHOD on_line_click.
**handle double click here
" Reading Row
ASSIGN gt_data[ row ] TO FIELD-SYMBOL(<fs_data>). "here row is index no }
IF sy-subrc EQ 0.
CASE column.
WHEN 'RFHA'.
" View Transaction
PERFORM view_txn USING <fs_data>-zbukrs <fs_data>-rfha.
ENDCASE.
ENDIF.

ENDMETHOD.
METHOD on_app_tool_click.

DATA : test TYPE REF TO cl_salv_selections,
lt_selected TYPE salv_t_row,
lv_selected TYPE int4.

CREATE OBJECT test.
DATA(lo_selection) = gr_alv->get_selections( ).
" Reading Row
lt_selected = lo_selection->get_selected_rows( ).
ASSIGN lt_selected[ 1 ] TO FIELD-SYMBOL(<fs_selected>)."}
IF sy-subrc = 0.
lv_selected = <fs_selected>.
ENDIF.

TRY .
gs_data = gt_data[ lv_selected ].
CASE sy-ucomm .
WHEN 'BACK' OR 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
CATCH cx_sy_itab_line_not_found.
ENDTRY.


ENDMETHOD.

ENDCLASS.
*&---------------------------------------------------------------------*
*& Form VIEW_TXN
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& --> GS_DATA_BUKRS
*& --> GS_DATA_RFHA
*&---------------------------------------------------------------------*
FORM view_txn USING p_bukrs
p_rfha.
" Viewing txn details
CALL FUNCTION 'ZFS_FM_VIEWTXN'
EXPORTING
iv_bukrs = p_bukrs
iv_rfha_d = p_rfha.

ENDFORM.
*&---------------------------------------------------------------------*
*& Form FORWARD_TXN
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM forward_txn .
CONSTANTS : cs_100 TYPE vtbfhapo-sfhazba VALUE '102',
cs_300 TYPE vtbfhapo-sfhazba VALUE '105',
cs_400 TYPE vtbfhapo-sfhazba VALUE '103',
cs_44c TYPE vtbfha-sgsart VALUE '44C',
cs_44b TYPE vtbfha-sgsart VALUE '44B'.

DATA : gt_dt TYPE TABLE OF zfs_st_frx_txn,
gw_txn TYPE zfs_st_frx_txn,
gv_flag TYPE c.

IF s_bukrs IS NOT INITIAL AND p_date IS NOT INITIAL.
SELECT * FROM zfs_frx_t004
INTO TABLE @DATA(lt_deal)
WHERE zbukrs IN @s_bukrs.

"""fetch forward txn
* SELECT a~bukrs,
* a~rfha,
* a~sgsart,
* a~sfhaart,
* a~rcomvalcl,
* a~wgschft1,
* a~wgschft2,
* a~dblfz,
* a~delfz,
* a~kontrh,
* a~refer,
* a~merkm,
* a~rfhazul,
* a~saktiv,
* a~zzkostl,
* a~zzprctr,
* b~name_org1,
* c~ltx,
* d~com_val_cl_name,
* e~sfhazba,
* e~bzbetr,
* e~wzbetr,
* f~xtext,
* g~kkurs,
* g~kkassa,
* g~kswap,
* g~kwliqui,
* h~zfx_flow
* FROM zfs_frx_t012 AS h
* LEFT OUTER JOIN vtbfha AS a ON h~zbukrs = a~bukrs
* AND h~zsgsart = a~sgsart
* AND h~zsfhaart = a~sfhaart
* INNER JOIN but000 AS b ON a~kontrh = b~partner
* INNER JOIN tzpat AS c ON a~sgsart = c~gsart
* INNER JOIN trgc_com_valcl_t AS d ON a~rcomvalcl = d~com_val_class
* INNER JOIN vtbfhapo AS e ON a~rfha = e~rfha
* AND a~bukrs = e~bukrs
* AND a~rfhazul = e~rfhazu
* AND h~zflow_typ = e~sfhazba
* INNER JOIN at10t AS f ON a~sfhaart = f~sfhaart
* AND a~sgsart = f~sgsart
* INNER JOIN vtbfhazu AS g ON a~rfha = g~rfha
* AND a~bukrs = g~bukrs
* AND a~rfhazul = g~rfhazu
* INTO TABLE @DATA(lt_detail)
* FOR ALL ENTRIES IN @lt_deal
* WHERE a~rfha = @lt_deal-zrfha
* AND a~bukrs IN @s_bukrs
* AND a~dblfz <= @p_date
* AND a~sfhaart = @cs_100
* AND a~saktiv < 3
* AND c~spras EQ 'E' AND d~spras EQ 'E' AND f~spras EQ 'E'.


SELECT a~bukrs,
a~rfha,
a~sgsart,
a~sfhaart,
a~rcomvalcl,
a~wgschft1,
a~wgschft2,
a~dblfz,
a~delfz,
a~kontrh,
a~refer,
a~merkm,
a~rfhazul,
a~saktiv,
a~zzkostl,
a~zzprctr,
b~name_org1,
c~ltx,
d~com_val_cl_name,
e~sfhazba,
e~bzbetr,
e~wzbetr,
f~xtext,
g~kkurs,
g~kkassa,
g~kswap,
g~kwliqui,
h~zfx_flow
FROM zfs_frx_t012 AS h
LEFT OUTER JOIN vtbfha AS a ON h~zbukrs = a~bukrs
AND h~zsgsart = a~sgsart
AND h~zsfhaart = a~sfhaart
INNER JOIN but000 AS b ON a~kontrh = b~partner
INNER JOIN tzpat AS c ON a~sgsart = c~gsart
INNER JOIN trgc_com_valcl_t AS d ON a~rcomvalcl = d~com_val_class
INNER JOIN vtbfhapo AS e ON a~rfha = e~rfha
AND a~bukrs = e~bukrs
AND a~rfhazul = e~rfhazu
AND h~zflow_typ = e~sfhazba
INNER JOIN at10t AS f ON a~sfhaart = f~sfhaart
AND a~sgsart = f~sgsart
INNER JOIN vtbfhazu AS g ON a~rfha = g~rfha
AND a~bukrs = g~bukrs
AND a~rfhazul = g~rfhazu
INTO TABLE @DATA(lt_detail)
FOR ALL ENTRIES IN @lt_deal
WHERE a~rfha = @lt_deal-zrfha
AND a~bukrs IN @s_bukrs
AND a~delfz >= @p_date
AND a~sfhaart IN ('102','104')
AND a~saktiv < 3
AND c~spras EQ 'E' AND d~spras EQ 'E' AND f~spras EQ 'E'.




* IF gv_rfha IS NOT INITIAL.
* DELETE lt_detail WHERE rfha <> gv_rfha.
* ENDIF.

"""fetch Utilized txn
SELECT p~bukrs,
p~rfha,
p~sfhaart,
p~zuonr,
p~dblfz,
p~merkm,
p~saktiv,
v~rfhazu,
v~sfhazba,
v~dzterm,
v~bzbetr,
v~wzbetr,
vz~kkurs,
vz~kkassa,
vz~kswap,
vz~kwliqui,
hh~zfx_flow
FROM zfs_frx_t012 AS hh
LEFT OUTER JOIN vtbfha AS p ON hh~zbukrs = p~bukrs
AND hh~zsgsart = p~sgsart
AND hh~zsfhaart = p~sfhaart
INNER JOIN vtbfhapo AS v ON p~bukrs = v~bukrs
AND p~rfha = v~rfha
AND p~rfhazul = v~rfhazu
AND hh~zflow_typ = v~sfhazba
INNER JOIN vtbfhazu AS vz ON p~rfha = vz~rfha
AND p~bukrs = vz~bukrs
AND p~rfhazul = vz~rfhazu
INTO TABLE @DATA(lt_cash)
FOR ALL ENTRIES IN @lt_detail
WHERE p~zuonr = @lt_detail-rfha
AND p~bukrs IN @s_bukrs
AND p~saktiv < 3
AND p~sfhaart = @cs_300 .

"""fetch cancel txn

SELECT p1~bukrs,
p1~rfha,
p1~sfhaart,
p1~zuonr,
p1~dblfz,
p1~merkm,
p1~saktiv,
v1~rfhazu,
v1~sfhazba,
v1~dzterm,
v1~bzbetr,
v1~wzbetr,
vz1~kkurs,
vz1~kkassa,
vz1~kswap,
vz1~kwliqui,
hh1~zfx_flow
FROM zfs_frx_t012 AS hh1
LEFT OUTER JOIN vtbfha AS p1 ON hh1~zbukrs = p1~bukrs
AND hh1~zsgsart = p1~sgsart
AND hh1~zsfhaart = p1~sfhaart
INNER JOIN vtbfhapo AS v1 ON p1~bukrs = v1~bukrs
AND p1~rfha = v1~rfha
AND p1~rfhazul = v1~rfhazu
AND hh1~zflow_typ = v1~sfhazba
INNER JOIN vtbfhazu AS vz1 ON p1~rfha = vz1~rfha
AND p1~bukrs = vz1~bukrs
AND p1~rfhazul = vz1~rfhazu
INTO TABLE @DATA(lt_c_cash)
FOR ALL ENTRIES IN @lt_detail
WHERE p1~zuonr = @lt_detail-rfha
AND p1~bukrs IN @s_bukrs
AND p1~saktiv < 3
AND p1~sfhaart = @cs_400.


SELECT q~zbukrs,
q~zcf_no,
q~zrec_date,
q~zdeal_number,
q~zrfha_utl,
q~zedc_point,
q~zutl_book_charg,
q~zcc_ref_rfha,
q~zcc_util_rfha,
r~zrfha_cancel,
r~zrfha_net,
r~zcharg_amt,
r~zbook_charg,
r~zref_num,
r~zcc_can_rfha
FROM zfs_frx_t013 AS q
LEFT OUTER JOIN zfs_frx_t014 AS r ON q~zbukrs = r~zbukrs
AND q~zdeal_number = r~zdeal_no
INTO TABLE @DATA(lt_temp) FOR ALL ENTRIES IN @lt_detail
WHERE q~zdeal_number = @lt_detail-rfha
AND q~zbukrs = @lt_detail-bukrs.


DATA(lt_data) = lt_detail[].
DATA(lt_can) = lt_temp[].

SORT lt_data BY rfha ASCENDING.
SORT lt_detail BY rfha ASCENDING.
SORT lt_cash BY rfha ASCENDING.
SORT lt_temp BY zdeal_number ASCENDING.
SORT lt_can BY zrfha_cancel ASCENDING.
DATA(lt_cash_t) = lt_cash[].
DELETE ADJACENT DUPLICATES FROM lt_data COMPARING rfha.
DELETE ADJACENT DUPLICATES FROM lt_cash_t COMPARING rfha.
DELETE ADJACENT DUPLICATES FROM lt_can COMPARING zrfha_cancel.
ENDIF.

CLEAR: gw_txn.
LOOP AT lt_data ASSIGNING FIELD-SYMBOL(<fs_data>).
CASE <fs_data>-sgsart.
WHEN cs_44b.
gw_txn-zbuy_sel = 'Buy'.
WHEN cs_44c.
gw_txn-zbuy_sel = 'Sell'.
ENDCASE.
IF <fs_data>-rfhazul = '1'.
gw_txn-zdeal_status = 'Unsettled'.
ELSEIF <fs_data>-rfhazul = '2'.
gw_txn-zdeal_status = 'Settled'.
ENDIF.

LOOP AT lt_detail ASSIGNING FIELD-SYMBOL(<fs_details>) WHERE rfha EQ <fs_data>-rfha. """"get basic fx deals
MOVE-CORRESPONDING <fs_details> TO gw_txn.
* CASE <fs_details>-sgsart.
* WHEN cs_44c.
* IF <fs_details>-zfx_flow = 'FX_SELL'.
* gw_txn-zsel_amt = <fs_details>-bzbetr.
* gw_txn-zsel_cur = <fs_details>-wzbetr.
* ELSEIF <fs_details>-zfx_flow = 'FX_BUY'.
* gw_txn-zbuy_amt = <fs_details>-bzbetr.
* gw_txn-zbuy_cur = <fs_details>-wzbetr.
* ENDIF.
* CONCATENATE gw_txn-zsel_cur ':' gw_txn-zbuy_cur INTO gw_txn-zcur_pair.
* WHEN cs_44b.
IF <fs_details>-zfx_flow = 'FX_SELL'.
gw_txn-zsel_amt = <fs_details>-bzbetr.
gw_txn-zsel_cur = <fs_details>-wzbetr.
ELSEIF <fs_details>-zfx_flow = 'FX_BUY'.
gw_txn-zbuy_amt = <fs_details>-bzbetr.
gw_txn-zbuy_cur = <fs_details>-wzbetr.
ENDIF.
CONCATENATE gw_txn-zbuy_cur ':' gw_txn-zsel_cur INTO gw_txn-zcur_pair.

* ENDCASE.
ENDLOOP.
READ TABLE lt_deal INTO DATA(lw_deal) WITH KEY zbukrs = gw_txn-bukrs
zrfha = gw_txn-rfha.
IF sy-subrc EQ 0 AND lw_deal-zref_num IS NOT INITIAL.
gw_txn-zrc_rfha = lw_deal-zref_num.
CLEAR lw_deal.
ENDIF.
LOOP AT lt_temp INTO DATA(lw_temp) WHERE zdeal_number EQ <fs_data>-rfha ""utilization
AND zbukrs EQ <fs_data>-bukrs.

READ TABLE lt_cash INTO DATA(lw_cashs) WITH KEY rfha = lw_temp-zrfha_utl
zfx_flow = 'FX_SELL' .
IF sy-subrc EQ 0.
gw_txn-zrfha_util = lw_cashs-rfha.
gw_txn-zuonr = lw_cashs-zuonr.
gw_txn-zutil_date = lw_cashs-dblfz.
gw_txn-zutil_pay_date = lw_cashs-dzterm.
gw_txn-zsfhaart_utl = lw_cashs-sfhaart.
CASE gw_txn-sgsart.
WHEN cs_44c.
gw_txn-zutil_amt_sell = lw_cashs-bzbetr.
ENDCASE.
CLEAR lw_cashs.


READ TABLE lt_cash INTO DATA(lw_cashb) WITH KEY rfha = lw_temp-zrfha_utl
zfx_flow = 'FX_BUY' .
IF sy-subrc EQ 0.
CASE gw_txn-sgsart.
WHEN cs_44c.
gw_txn-zutil_amt_buy = lw_cashb-bzbetr.
ENDCASE.
CLEAR lw_cashb.
ENDIF.
APPEND gw_txn TO gt_dt.
gv_flag = 'X'.
CLEAR :gw_txn-zutil_amt_buy,
gw_txn-zutil_amt_sell,
gw_txn-zrfha_util,
gw_txn-zuonr,
gw_txn-zutil_date,
gw_txn-zutil_pay_date,
gw_txn-zsfhaart_utl.
ENDIF.
CLEAR lw_temp.
ENDLOOP.

LOOP AT lt_can INTO DATA(lw_tempc) WHERE zdeal_number EQ <fs_data>-rfha ""Cacellation
AND zbukrs EQ <fs_data>-bukrs.
READ TABLE lt_c_cash INTO DATA(lw_cans) WITH KEY rfha = lw_tempc-zrfha_net
zfx_flow = 'FX_SELL' .
IF sy-subrc EQ 0.
gw_txn-zrfha_cancel = lw_cans-rfha.
gw_txn-zutil_pay_date = lw_cans-dzterm.
gw_txn-zuonr = lw_cans-zuonr.
CASE gw_txn-sgsart.
WHEN cs_44c.
gw_txn-zcanc_amt_sell = lw_cans-bzbetr.
ENDCASE.
CLEAR lw_cans.

READ TABLE lt_c_cash INTO DATA(lw_canb) WITH KEY rfha = lw_tempc-zrfha_net
zfx_flow = 'FX_BUY' .
IF sy-subrc EQ 0.
CASE gw_txn-sgsart.
WHEN cs_44c.
gw_txn-zcanc_amt_buy = lw_canb-bzbetr.
ENDCASE.
CLEAR lw_canb.
ENDIF.
APPEND gw_txn TO gt_dt.
gv_flag = 'X'.
CLEAR :gw_txn-zcanc_amt_buy,
gw_txn-zcanc_amt_sell,
gw_txn-zrfha_cancel,
gw_txn-zuonr,
gw_txn-zutil_pay_date.
ENDIF.
CLEAR lw_tempc.
ENDLOOP.

IF gv_flag IS INITIAL.
APPEND gw_txn TO gt_dt.
ENDIF.
CLEAR :gw_txn,gv_flag.
ENDLOOP.

SORT gt_dt BY rfha ASCENDING.
APPEND LINES OF gt_dt TO gt_txn.




ENDFORM.
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.