Purpose: Making data available from BW system to another system is common and regular activity.
When extracting data from report or any other sources we may have negative values like 100.00- , while updating same data to flat files , you might need to prefix sign instead at the end of value. (Ex -100.00
Here is the solution.
- Drag the report
- Add ROUTINE transformation
- Connect report to ROUTINE transformation
- Double click on ROUTINE transformation add required fields from Field List to Source Flds
- In TargetFlds Tab add one extra column along with normal amount filed. Here SIGN_AMT type 0txtlg
- Write code as like below in ROUTINE tab of ROUTINE transformation.
DATA:
ls_source TYPE y_source_fields,
ls_target TYPE y_target_fields,
res_amt(60) type c.
data: w_len type i.
LOOP AT it_source INTO ls_source.
clear:w_len.
FIND FIRST OCCURRENCE
OF '-' IN ls_source-amount
if sy-subrc eq 0.
W_LEN
= STRLEN( ls_source-amount ).
W_LEN
= W_LEN
- 1.
CONCATENATE '-' ls_source-amount+0
(W_LEN
) INTO ls_source-sign_amt.
CONDENSE ls_source-sign_amt NO-GAPS
.
else.
ls_source-sign_amt. =
ls_source-amount.
CONDENSE ls_source-sign_amt..
endif.
APPEND ls_target TO et_target.
ENDLOOP.
Note:
- You have to assign remaining fields source to target
- Create target like Direct DSO or flat file and connect ROUTINE transformation to data target
- Execute APD
Thank you,
Nanda