APD Report Output with Negative Sign
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