SLT - Transformation - How to add new fields to ex...
Technology Blogs by SAP
Learn how to extend and personalize SAP applications. Follow the SAP technology blog for insights into SAP BTP, ABAP, SAP Analytics Cloud, SAP HANA, and more.
This case scenario cover requirements to add new fields & populate them via SLT to target structure .In this case we will populate the new fields with time-stamp for transfer behavior I (insert) & U (update).
Execute T-Code LTRS:
Select your MT-ID (Mass Transfer ID)
Right click on table setting and click on Add Table to include your table name:
Add your new fields to your table structure:
Define your new fields:
Save your new fields:
Right click on Rule Assignment then add your table name:
Click on create icon then select Field-Related Rule:
Enter one of your new fields: on target field:
Select the line created (double click) then include your table name in import parameter 1, Status = Released & your ABAP include program name (for the transformation):
Open a new session:
Via T-Code SE38 create an include ABAP program then copy and paste the following code: DATA: lv_name(30) TYPE c.
FIELD-SYMBOLS: <ls_record> TYPE any, <lv_operation> TYPE any, <lv_insert> TYPE any, <lv_update> TYPE any.
* get target structure CONCATENATE '<WA_R_' i_p1 '>' INTO lv_name. ASSIGN (lv_name) TO <ls_record>.
ASSIGN COMPONENT 'IUUC_OPERAT_FLAG' OF STRUCTURE <ls_record> TO <lv_operation>.
IF sy-subrc = 0. CASE <lv_operation>. WHEN 'I'. *** set additional target fields * set insert timestamp ASSIGN COMPONENT 'INSERT_TS' OF STRUCTURE <ls_record> TO <lv_insert>. IF sy-subrc = 0. GET TIME STAMP FIELD <lv_insert>. ENDIF.
WHEN 'U'. * set update time stamp ASSIGN COMPONENT 'UPDATE_TS' OF STRUCTURE <ls_record> TO <lv_update>. IF sy-subrc = 0. GET TIME STAMP FIELD <lv_update>. ENDIF. ENDCASE.
ENDIF.
Save your configuration in LTRS then continue with your process to Load / Replicate your table via t-code LTRC or via HANA Studio.
Hi Roger. Thanks for sharing this blog. I implement the same code in our system, but I found it not fully meet the requirement.
First we create one record in source system, in target system, the insert timestamp is populated.
Then we change the same record in source system, in target system, the update timestamp is populated. But at the same time, the insert timestamp is wiped out. Our requirement is keep the insert timestamp, would you please give some suggestion on this.
create the configuration as described in the blog, but when starting the replication the field is zero, additional in the code it presents an error in the code with the i_p1 parameter as it says that it does not recognize it.
Make sure you copy the code as is: you can use ` as quote in ip_1 which is used in CONCATENATE '<wa_r'(space) 'ip_1'(space) '>' into lv_name. you can test it replacing ip_1 with your table name you want to add new fields. ex. lv_name = '<wa_r_vbak>'
DATA: lv_name(30) TYPE c.
FIELD-SYMBOLS: <ls_record> TYPE any, <lv_operation> TYPE any, <lv_insert> TYPE any, <lv_update> TYPE any.
* get target structure CONCATENATE ‘<WA_R_’ i_p1 ‘>’ INTO lv_name. ASSIGN (lv_name) TO <ls_record>.
ASSIGN COMPONENT ‘IUUC_OPERAT_FLAG’ OF STRUCTURE <ls_record> TO <lv_operation>.
I made the change in the code as you indicate, but when starting the initial load of the table, the new field is empty, suddenly I am omitting something in the configuration