Best Practice for Data Source Enhancement

Added by MAYURI SINHA

Data Extractor Enhancement - Overview of Approach
Following are the steps for data source enhancements:

The flowchart explains the step we need to follow while enhancing a standard LIS extractor.
Determine the fields with which the extractor is to enhanced. Recheck if these fields are not the ones which are already provided by SAP. As if they are already provided, we need not enhance them. As a next check we need to check the LBWE pool where we have some extra fields which we can easily add to our datasource.
If these fields do not exist in the LBWE pool either, we need to enhance the data source.
Above flowchart would give an overview of the same, but here we would go through each of those steps in detail. The approach which we are going to discuss here is the Function Module approach of data source enhancement.
Steps of Data Source Enhancement -Function Module approach
Step 1: Go to T Code CMOD and choose the project you are working on.
Step 2: Choose the exit which is called when the data is extracted. 
Step 3: This is the step where we have a difference from the normal approach.

Normal Approach: CMOD Code

Code Sample:

    WHEN '2LIS_05_Q0ACTY'.

-------
Note: This is just a sample code. Logic will vary according to the requirements.In this normal approach, which is followed in most of the BW instances, we write ABAP CASE/WHEN conditions.
Function Module Approach: CMOD Code
*&---------------------------------------------------------------------*
*&  Include           ZXRSAU01                                         *
*&---------------------------------------------------------------------*
DATA: L_FNAME  TYPE RS38L_FNAM,
      L_EXP_FNAME type rs38l_fnam,
      L_EXP_ACTIVE TYPE RS38L_GLOB,
      L_ACTIVE TYPE RS38L_GLOB,
      L_S_SELECT TYPE RSSELECT.
SELECT SINGLE FUNC
         INTO L_FNAME

         FROM ZTEST

        WHERE DSNAM  = I_DATASOURCE.
*&---------------------------------------------------------------------*
* Cehck to see if a local versio of the extractor exists
*&---------------------------------------------------------------------*
IF L_FNAME IS NOT INITIAL.
  CALL FUNCTION 'RS_FUNCTION_ACTIVE_CHECK'
    EXPORTING
      FUNCNAME  = L_FNAME
    IMPORTING
      ACTIVE    = L_ACTIVE
    EXCEPTIONS
      NOT_FOUND = 1
      OTHERS    = 2.
  IF SY-SUBRC EQ 0 AND L_ACTIVE IS NOT INITIAL.
    CALL FUNCTION L_FNAME
      EXPORTING
        I_DATASOURCE             = I_DATASOURCE
        I_ISOURCE                = I_ISOURCE
        I_UPDMODE                = I_UPDMODE
      TABLES
        I_T_SELECT               = I_T_SELECT
        I_T_FIELDS               = I_T_FIELDS
        C_T_DATA                 = C_T_DATA
        C_T_MESSAGES             = C_T_MESSAGES
      EXCEPTIONS
        RSAP_CUSTOMER_EXIT_ERROR = 1.
  ENDIF.                               " IF SY-SUBRC EQ 0...
ELSE.
  CLEAR L_FNAME.
  CONCATENATE 'ZTEST_' I_DATASOURCE INTO L_FNAME.
  CALL FUNCTION 'RS_FUNCTION_ACTIVE_CHECK'
    EXPORTING
      FUNCNAME  = L_FNAME
    IMPORTING
      ACTIVE    = L_ACTIVE
    EXCEPTIONS
      NOT_FOUND = 1
      OTHERS    = 2.
  IF SY-SUBRC = 0 AND L_ACTIVE = 'X'.
    CALL FUNCTION L_FNAME
      EXPORTING
        I_DATASOURCE             = I_DATASOURCE
        I_ISOURCE                = I_ISOURCE
        I_UPDMODE                = I_UPDMODE
      TABLES
        I_T_SELECT               = I_T_SELECT
        I_T_FIELDS               = I_T_FIELDS
        C_T_DATA                 = C_T_DATA
        C_T_MESSAGES             = C_T_MESSAGES
      EXCEPTIONS
        RSAP_CUSTOMER_EXIT_ERROR = 1.
  ENDIF.                               " IF SY-SUBRC = 0...
ENDIF.                                 " IF L_FNAME IS NOT INITIAL.
Note: This is a reusable code. Here ZTEST is a table which maintains the data source name and the function module corresponding to that data source.

Step 4: Here in this step we create a function module for each data source. We create a new FM (Function Module in SE37)
Data Extractor Enhancement - Best Practice/Benefits
  This is the best practice of data source enhancement. This has the following benefits:

1.       No more locking of CMOD code by 1 developer stopping others to enhance other extractors.

2.       Testing of an extractor becomes more independent than others.

3.       Faster and a more robust Approach

1 comments:

poonam said...

Hi sharath,
I am fresher and wanted to know about real time project experience is it possible?