Recently I encountered an issue that field ACTUAL_TS_TO was blank in full load while it was filled in delta load. To check this issue, I tried to simulate the extraction by transaction code RSA3. And as I expected, this issue was reproduced. Then I debugged this issue.
I set two breakpoints at function module SMOX3_GET_DATA and mapping function module. Something strange happened! After setting gs_single_process_only to 'X' in function module smox3_get_data, the affected field was filled. Why this happened?
I discussed this behavior with our colleagues and finally got the reason. When the parallel processing is enabled, the extraction collects the data in transfer structure format and then it is moved to the extract structure.
In case of single processing (gs_single_process_only = 'X’), the extraction data are collected to extract structure format.
So for the issue I encountered, there should be something wrong with the transfer structure.
Since the transfer structure did not contain the field ACTUAL_TS_TO hence it was empty when moving the data to extract structure (function SMOX3_CALL_SELECT_PP ). Finally we completed the transfer structure by the following and the field gets value.
set the SELECTION field of the ROOSFIELD table to 'X' where OLTPSOURCE=0CRM_SALES_ACT_1 and OBJVERS=A and FIELD=ACTUAL_TS_TO.
Then replicate the metadata and activate the datasource in BW system.
So if we encounter an issue that some of the fields are blank after parallel processing is activated, we could have a look at the transfer structure.