Poor Extraction - ABAP Code

Hi SDNers
We have a performance problem in our BW system which is due to poor extraction: 300,000 records take about 4 hours to extract.  I have traced this and found that a SELECT SINGLE statement is used in LOOP-ENDLOOP construction and when a record is found, it is processed in around 10ms (which seems fairly OK).  However, when a record isn't found, the access takes upwards of 200ms and sometimes as much as 11 seconds!  Long accesses also occasionally take hundreds of milliseconds, even when a record was found.
From an SQL point of view, the stats are up-to-date and the access is supported by a fully qualified and appropriate secondary index therefore, I wondered if the following code could be improved.  Should we be SELECTing SINGLE within a loop?  Here's the code:-
loop at DATA_PACKAGE.
    move-corresponding DATA_PACKAGE to itab.
      Select SINGLE AC_DOC_NO from /BI0/AFIAR_O0300
      into zAC_DOC_NUM
       where COMP_CODE = DATA_PACKAGE-COMP_CODE
          AND ORG_DOC_NO = DATA_PACKAGE-BILL_NUM
          AND FI_AWTYP = 'VBRK'.
     IF SY-SUBRC = 0.
    DATA_PACKAGE-BILL_NUM = zAC_DOC_NUM.
     append itab.
     ELSE.
     DELETE DATA_PACKAGE.
     ENDIF.
endloop.
As you may have guessed, I'm not an ABAPer!
Thanks for the help guys!!!
Des

Hi,
you should do the following:
data: it_ods type hashed table of /bi0/afiar_o0300
with unique key comp_code org_doc_no fi_awtyp,
wa_ods type /bi0/afiar_o0300.
may be you need to define the table with non unique key.
select * into table it_ods
from /bi0afiar_o0300 for all entries in data_package
where COMP_CODE = DATA_PACKAGE-COMP_CODE
AND ORG_DOC_NO = DATA_PACKAGE-BILL_NUM
AND FI_AWTYP = 'VBRK'.
loop at DATA_PACKAGE.
move-corresponding DATA_PACKAGE to itab.
Instead of your select.
*Select SINGLE AC_DOC_NO from /BI0/AFIAR_O0300
*into zAC_DOC_NUM
*where COMP_CODE = DATA_PACKAGE-COMP_CODE
*AND ORG_DOC_NO = DATA_PACKAGE-BILL_NUM
*AND FI_AWTYP = 'VBRK'.
read table it_ods into wa_ods
with table key comp_code = data_package-comp_code
org_doc_no = data_package-bill_num
fi_awtyp = 'VBRK'.
IF SY-SUBRC = 0.
DATA_PACKAGE-BILL_NUM = zAC_DOC_NUM.
append itab.
ELSE.
DELETE DATA_PACKAGE.
ENDIF.
endloop.
Additionally make sure that there is an index on comp_code, org_doc_no and fi_awtyp on your ods.
regards
Siggi

Similar Messages

  • How to extract data from info cube into an internal table using ABAP code

    HI
    Can Anyone plz suggest me
    How to extract data from info cube into an internal table using ABAP code like BAPI's or function modules.
    Thankx in advance
    regds
    AJAY

    HI Dinesh,
    Thankq for ur reply
    but i ahve already tried to use the function module.
    When I try to Use the function module RSDRI_INFOPOV_READ
    I get an information message "ERROR GENERATION TEST FRAME".
    can U plz tell me what could be the problem
    Bye
    AJAY

  • Need help in ABAP code to Enhance the Extract Structure ?????

    Hi all,
        I want to enhance the extract structure to get KBETR & KBRUE fields of KONP table since it didn’t allow me to add those fields while creating the generic extractor because of currency key problems. I want to read all KONP records into internal table with KNUMH (Key). Next, I want to fill them into ZZKBETR & ZZKBRUE of Extract Structure ZOXUR40065 in loop.
    DATA:
      i_t_zrebate like ZOXUR40065 occurs 0 with header line,
      reb_tabix like sy-tabix.
    TABLES: KONP.
      Could you please help me in completing the ABAP code?
    Thanks,
    Venkat.

    Hello Manga,
        I have included the following code in ZXRSAU01:
    WHEN 'ZREBATE'.
    PERFORM ZREBATE_EXIT TABLES C_T_DATA.
    After Double click on ZREBATE_EXIT on perform statement, it created ZXRSAF01 include and the following code is added in it:
    FORM ZREBATE_EXIT TABLES FP_C_T_DATA STRUCTURE ZOXUR40065.
    DATA:
    i_t_zrebate like ZOXUR40065 occurs 0 with header line,
    reb_tabix like sy-tabix.
    FIELD-SYMBOLS: <l_c_t_data> TYPE ZOXUR40065.
    LOOP AT fp_c_t_data ASSIGNING <l_c_t_data>.
    reb_tabix = sy-tabix.
    select single KBETR KBRUE
    into (<l_c_t_data>-ZZKBETR,
    <l_c_t_data>-ZZKBRUE,
    from KONP
    where KNUMH eq <l_c_t_data>-KNUMH.
    if sy-subrc eq 0.
    MODIFY fp_c_t_data FROM <l_c_t_data> INDEX reb_tabix.
    endif.
    CLEAR:reb_tabix.
    ENDLOOP.
    ENDFORM.
    When I tried to Activate this ZXRSAF01 include, it fails with 'The FORM "ZREBATE_EXIT" does not exist'.
      Should it be FP_C_T  or P_C_T? I found P_C_T in ZXRSAF01 include.
      What is wrong with it, please ?
       Can't I add this whole code in main include ZXRSAU01itself?
      The Extractor ZREBATE is based on KONA, KONH & KONP tables. This Extractor and KONA table have the same 4000 records and KONP has 13000 records. I want to extract KBERT & KBRUE from KONP.
       Thanks in advance.
    Regards,
    Venkat

  • Date range selection in abap code in infopackage

    Hi!
    I have a field called "OPEN_DATE".
    When the infopackage is runned, I need the abap code to fint the current date, and from that, make a date range from the first day of current month to the last day of current month
    Ex:
    Current date = 12.12.2008
    Abap code should extract 01.12.2008 - 31.12.2008
    Thanks!

    Hi helge,
    Data: l_idx like sy-tabix.
    Data: date_low like sy-datum,
             date_high like sy-datum.
    Date_low = sy-datum.
    date_low+6(2) = '01'.
    CALL FUNCTION 'SLS_MISC_GET_LAST_DAY_OF_MONTH'
      EXPORTING
        DAY_IN                  = Date_low
    IMPORTING
       LAST_DAY_OF_MONTH       = date_high
    read table l_t_range with key
    fieldname = 'OPEN_DATE'.
    l_idx = sy-tabix.
    Pass Range values to L_T_Range Table.
    Move date_low to L_T_Range -Low.
    Move date_high to L_T_Range -High.
    L_T_Range -Sign = u2018Iu2019. *****(Here: I u2013 Include, E u2013 Exclude)
    L_T_Range -Option = u2018BTu2019.****( Here: BT u2013 Between )
    modify l_t_range index l_idx.
    p_subrc = 0.
    Regards,

  • Abap Code TO ENHANCE DATASOURCE with KEY FIELD OF SOURCE TABLE

    Dear Friends, Please help me to resolve this important issue at my end.
    <b>Requirement</b>:  enhance the STRUCTURAL data source which is
    based on the table VISTSU , now this table has a <b>key INTERNO</b> (Data Element : SECAINTRENO) which i want to enhance in datasource 
    SGONR = STRUCTURAL NUMBER present in extract structure of datasource
    Solution: I am not able to see any records for zzinterno enhance field in datasource rsa3 (Extractor CHECKER). Can u help me correct the ABAP code or tell me the way to pull the records for ZZINTERNO from VISTSU table.
    Thanks
    Poonam Roy
    ABAP Code
    data: l_s_REIS_STRUCTURAL_ATTR like REIS_STRUCTURAL_ATTR.
    case i_datasource.
    WHEN '0STRUCTURAL_ATTR'.
    loop at C_t_data into l_s_REIS_STRUCTURAL_ATTR.
    l_tabix = sy-tabix.
    clear  I_VISTSU .
    select single * from VISTSU  into i_VISTSU  where SG0NR = l_s_REIS_STRUCTURAL_ATTR-SGONR.
    if sy-subrc = 0.
    l_s_REIS_STRUCTURAL_ATTR-ZZINTRENO = I_VISTSU -INTRENO.
    modify C_t_data from l_s_REIS_STRUCTURAL_ATTR index l_tabix.
    endif.
    endloop.
    endcase.

    Try the below code.
    data: l_s_REIS_STRUCTURAL_ATTR like REIS_STRUCTURAL_ATTR.
    data: temp_interno like VISTSU -INTRENO.
    data:  h_tabix LIKE sy-tabix.
    case i_datasource.
    WHEN '0STRUCTURAL_ATTR'.
    loop at C_t_data into l_s_REIS_STRUCTURAL_ATTR.
    MOVE SY-TABIX TO H_TABIX.
    clear temp_interno.
    select single INTERNO from VISTSU into temp_interno where SG0NR = l_s_REIS_STRUCTURAL_ATTR-SGONR.
    if sy-subrc = 0.
    l_s_REIS_STRUCTURAL_ATTR-ZZINTRENO = temp_interno.
    endif.
    modify C_t_data from l_s_REIS_STRUCTURAL_ATTR index H_TABIX.
    ENDLOOP.
    ENDCASE.
    Regards, Siva

  • ABAP Code for summation of key figure

    Hi Guys,
    I am new to ABAP and my requirement is as follows-
    I have an infocube containing data like
    Location Item      Amount Month
    India       TV        10        Jan
    India       DVD     10        Jan
    India       XBOX   10       Jan
    US          TV        10       Jan
    US          XBOX   15       Jan
    US          DVD     20        Jan
    UK          XBOX   30       Jan
    UK          TV        20       Jan
    UK          DVD     15       Jan
    India       TV      20         Feb
    US          DVD   20         Feb
    UK          XBOX 10        Feb
    India       TV      20        Mar
    Now by using open hub, I want to extract a file which would display report as -
    Output file
    15-Oct-2010
    Location  Item   Amount
    India        TV     50
    India        DVD   10
    India        XBOX 10
    US           TV      10
    US           DVD   40
    US           XBOX 15
    UK          TV       20
    UK          DVD    15
    UK         XBOX  40
    which means it should sum based on combination of location and item and create one single row.
    I need some ABAP code which could be written in expert routine so as to to calculate single rows of amount for all data packets of infocube.
    Kindly suggest on how to proceed on it.
    Thanks in advance
    Moderator Message: Even if you are new-to-ABAP, it does not imply that you can expect others to do your work. If you are a BI consultant, take the help of an ABAP consultant or self-learn the basic concepts of ABAP. If you are an ABAPer, go back to the training center.
    Edited by: kishan P on Oct 15, 2010 10:34 AM

    Follow this white paper .... called, "How to .... Calculate with Attributes":
    https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/72f4a790-0201-0010-5b89-a42a32223ffc
    Brian

  • How to transfer data in change log table of dso to z-table using abap code

    Hi  can you please explain me how to transfer data in change log table of dso to z-table using abap code ,with out using Function module concept

    PROGRAM NAME:   ZBW_DELTA_TO_GSTAR                                 **
    report ZBW_DELTA_TO_GSTAR no standard page heading
                                     line-size 120
                                     line-count 75
                                     message-id ZBW_MSG_CLS.
    tables:   ZGIV_DLTA_EBV_BB,
              ZGIV_DLTA_EM2_BL,
              ZGIV_DLTA_EM2_BK.
    Selection Screen Definitions
    SELECTION-SCREEN: BEGIN OF BLOCK INNER WITH FRAME TITLE TEXT-001.
    SELECTION-SCREEN: SKIP 1.
    PARAMETERS:       EBVBB RADIOBUTTON GROUP ROLL,
                      EM2BL RADIOBUTTON GROUP ROLL,
                      EM2BK RADIOBUTTON GROUP ROLL.
    SELECTION-SCREEN: END OF BLOCK INNER.
    Data:  WS_UPDATE_FLAG  Type C,
           UCounter(9)      Type N,
           ICounter(9)      Type N.
    DATA:  T_ZGIV_DLTA_EBV_BB Type Standard Table of ZGIV_DLTA_EBV_BB,
           s_ZGIV_DLTA_EBV_BB LIKE line of T_ZGIV_DLTA_EBV_BB.
    DATA:  T_ZGIV_DLTA_EM2_BK Type Standard Table of ZGIV_DLTA_EM2_BK,
           s_ZGIV_DLTA_EM2_BK LIKE line of T_ZGIV_DLTA_EM2_BK.
    DATA:  T_ZGIV_DLTA_EM2_BL Type Standard Table of ZGIV_DLTA_EM2_BL,
           s_ZGIV_DLTA_EM2_BL LIKE line of T_ZGIV_DLTA_EM2_BL.
    Standard Internal Tables - Describe usage.
    data: begin of i_AEPSD_O0140 occurs 0.
            include structure /BIC/AEPSD_O0140.
    data: end of i_AEPSD_O0140.
    data: begin of i_AEPSD_O0240 occurs 0.
            include structure /BIC/AEPSD_O0240.
    data: end of i_AEPSD_O0240.
    data: begin of i_AEPSD_O0340 occurs 0.
            include structure /BIC/AEPSD_O0340.
    data: end of i_AEPSD_O0340.
    data: begin of i_GIV_DLTA_EBV_BB occurs 0.
            include structure ZGIV_DLTA_EBV_BB.
    data: end of i_GIV_DLTA_EBV_BB.
    data: begin of i_GIV_DLTA_EM2_BK occurs 0.
            include structure ZGIV_DLTA_EM2_BK.
    data: end of i_GIV_DLTA_EM2_BK.
    data: begin of i_GIV_DLTA_EM2_BL occurs 0.
            include structure ZGIV_DLTA_EM2_BL.
    data: end of i_GIV_DLTA_EM2_BL.
    Miscellaneous Program Variables and Constants.
    TOP-OF-PAGE
    top-of-page.
    START-OF-SELECTION
    start-of-selection.
      Clear: i_GIV_DLTA_EBV_BB,
             i_GIV_DLTA_EM2_BK,
             i_GIV_DLTA_EM2_BL,
             UCounter, ICounter.
      IF EBVBB = 'X'.
        PERFORM 100_EXTRACT_EBV_BB_DELTA_RECS.
      ELSEIF EM2BK = 'X'.
        PERFORM 100_EXTRACT_EM2_BK_DELTA_RECS.
      ELSE.
        PERFORM 100_EXTRACT_EM2_BL_DELTA_RECS.
      ENDIF.
    FORM 100_EXTRACT_EBV_BB_DELTA_RECS
    FORM 100_EXTRACT_EBV_BB_DELTA_RECS.
      Refresh:   i_AEPSD_O0140,
                 i_GIV_DLTA_EBV_BB.
      Clear:      UCounter, ICounter, s_ZGIV_DLTA_EBV_BB .
      Select * From /BIC/AEPSD_O0140
        Into TABLE i_AEPSD_O0140.
      IF SY-Subrc = 0.
        LOOP AT i_AEPSD_O0140.
          MOVE-CORRESPONDING i_AEPSD_O0140 TO s_ZGIV_DLTA_EBV_BB.
          MOVE SY-DATUM to s_ZGIV_DLTA_EBV_BB-create_dt.
          INSERT ZGIV_DLTA_EBV_BB FROM s_ZGIV_DLTA_EBV_BB.
          IF SY-Subrc = 0.
            ICounter = ICounter + 1.
          ELSE.
            UPDATE ZGIV_DLTA_EBV_BB FROM  s_ZGIV_DLTA_EBV_BB.
            IF SY-Subrc = 0.
              UCounter = UCounter + 1.
            ELSE.
              Message E067 with SY-DATUM ' ' SY-UZEIT ' '.
            ENDIF.
          ENDIF.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    "100_EXTRACT_EBV_BB_DELTA_RECS
    FORM 100_EXTRACT_EM2_BK_DELTA_RECS
    FORM 100_EXTRACT_EM2_BK_DELTA_RECS.
    Refresh:   i_AEPSD_O0240,
               i_GIV_DLTA_EM2_BK.
      Clear:      UCounter, ICounter, s_ZGIV_DLTA_EM2_BK .
      Select * From /BIC/AEPSD_O0240
        Into TABLE i_AEPSD_O0240.
      IF SY-Subrc = 0.
        LOOP AT i_AEPSD_O0240.
          MOVE-CORRESPONDING i_AEPSD_O0240 TO s_ZGIV_DLTA_EM2_BK.
          MOVE SY-DATUM to s_ZGIV_DLTA_EM2_BK-create_dt.
            INSERT ZGIV_DLTA_EM2_BK FROM s_ZGIV_DLTA_EM2_BK.
          IF SY-Subrc = 0.
            ICounter = ICounter + 1.
          ELSE.
            UPDATE ZGIV_DLTA_EM2_BK FROM  s_ZGIV_DLTA_EM2_BK.
            IF SY-Subrc = 0.
              UCounter = UCounter + 1.
            ELSE.
              Message E067 with SY-DATUM ' ' SY-UZEIT ' '.
            ENDIF.
          ENDIF.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    "100_EXTRACT_EM2_BK_DELTA_RECS
    FORM 100_EXTRACT_EM2_BL_DELTA_RECS
    FORM 100_EXTRACT_EM2_BL_DELTA_RECS.
    Refresh:   i_AEPSD_O0340,
               i_GIV_DLTA_EM2_BL.
      Clear:      UCounter, ICounter, s_ZGIV_DLTA_EM2_BL .
      Select * From /BIC/AEPSD_O0340
        Into TABLE i_AEPSD_O0340.
      IF SY-Subrc = 0.
        LOOP AT i_AEPSD_O0340.
          MOVE-CORRESPONDING i_AEPSD_O0340 TO s_ZGIV_DLTA_EM2_BL.
          MOVE SY-DATUM to s_ZGIV_DLTA_EM2_BL-create_dt.
            INSERT ZGIV_DLTA_EM2_BL FROM s_ZGIV_DLTA_EM2_BL.
          IF SY-Subrc = 0.
            ICounter = ICounter + 1.
          ELSE.
            UPDATE ZGIV_DLTA_EM2_BL FROM  s_ZGIV_DLTA_EM2_BL.
            IF SY-Subrc = 0.
              UCounter = UCounter + 1.
            ELSE.
              Message E067 with SY-DATUM ' ' SY-UZEIT ' '.
            ENDIF.
          ENDIF.
        ENDLOOP.
      ENDIF.
    ENDFORM.                    "100_EXTRACT_EM2_BL_DELTA_RECS
    END-OF-SELECTION
    end-of-selection.
      perform D1000_REPORT_DATA.
    D1000_REPORT_DATA
    form D1000_REPORT_DATA.
    *Display the title of the program
      write: /25 SY-TITLE.
      skip.
    Diaplay the details of the user and time
      write: /1 'Executed by', 15 SY-UNAME, 30 'Date',
      38 SY-DATUM, 53 'Time', 60 SY-UZEIT.
      skip 2.
      write: /  'Delta Records have been extracted  ',
             /   'Updates : ', UCounter,
             /   'Inserts : ', ICounter.
      skip.
      skip 3.
      write: /20 'End of the report'.
    endform.                                           "D1000_REPORT_DATA
    chgeck it out this also may hep you

  • Error in ABAP code generation?

    Hi,
    I am using OWB 10.1 to generate ABAP code for SAP-Data-Extraction. For extracting date values there are two APAB lines which (want to) produce one line in the result SQLLDR-Script. ABAP will accept only around 73 characters per line and this is the reason for the two lines.
    But ABAP does not accept a line break inside a string and thus this code runs into an ABAP-error.
    This all seems to be standard - has anyone a solution?
    generated ABAP-lines:
    Line1: TRANSFER ',ERDAT_DATUM_AN_DEM_DER_SATZ_HI DATE ''yyyymmdd'' NULLIF
    Line2: ERDAT_DATUM_AN_DEM_DER_SATZ_HI=''00000000''' TO DATAFILENAME.
    many thanks

    Hello Jean-Pierre,
    many thanks for your answer. Not the expected solution but it works. Another solution we found is to put an ampersand behind the first line, which tells ABAP that this is a line break. But also here manually work is necessary and also changing generated code.
    Cheers
    Stefan

  • LKM SAP BW to Oracle (SQLLDR) generates sintax error in ABAP code.

    Hi Experts,
    We are installing a SAP BW KM's in ODI 11g.
    Actually, we are able to make reverse ingeneering succesfully.
    Now we want to use the LKM in order to extract SAP data.
    The KM fails, in step Generate ABAP Code. The code is uploaded to SAP system but with sintaxis errors.
    That's the beginning of the SAPAbapExecuteOpenTool_8001_7001.log.
    +##################################################+
    +############ Open Tool Logger ####################+
    +##################################################+
    +############ Upload value: 1+
    +############ Execute value: 1+
    +############ BASE RKM FLAG: 0+
    +############ ZRFC_RUN_INSTALL: 1+
    +############ Abap Function Name: ZODI_8001_7001+
    +############ Sap Host Name: XXXXXXXX+
    +############ Sap User Name: XXXX+
    +############ Sap password: ********+
    +############ Sap Client: 100+
    +############ Sap language: ES+
    +############ Sap system no: 00+
    +############ Sap Connection Pool Name: SAP_ODI_LKM_POOL_GLOBAL+
    +############ Sap Connection Pool Size: 10+
    +############ Sap Function group name: ZODIBW_LKM_FGRP+
    +############ File Delimiter:+
    +############ File Name: ZODI_8001_7001.txt+
    +############ FTP Host: XXXXXXXXX+
    +############ FTP User: ftpbi+
    +############ FTP Password: ********+
    +############ FTP Passive Mode: 1+
    +############ FTP Transfer Time out: 100000+
    +############ User abap parameter names: IV_DELIMITER,CHAR1;IV_FILENAME,CHAR255;IV_USER,CHAR35;IV_PWD,CHAR35;IV_HOST,CHAR35;IV_HASHVALUE,CHAR35;IV_PATH,CHAR35;IV_REQUID_L,RSSID;IV_REQUID_H,RSSID+
    +############ Abap rfc table parameters: RETURN,BAPIRETURN;ET_FILE_RETURN,BAPIRET2+
    +############ Log File Name: /tmp/SAPAbapExecuteOpenTool_8001_7001.log+
    +############ OpenHub Path: /tmp/+
    +############ Delta Extraction First Request ID : 0+
    +############ Delta Extraction Last Request ID : 0+
    +############ SAP Development Class : ZODIBW_PCKG+
    +############ Max Row Count :+
    +############ Fetch Batch Size :+
    +############ Hash Value Marker: HVM+
    +############ Generated Program:+
    *** ODS DSO extraction
    TYPES: BEGIN OF ty_final,
    +/BIC/AZOFI_UTE00_/BIC/ZFI_SOCOR+
    TYPE
    +/BIC/AZOFI_UTE00-/BIC/ZFI_SOCOR,+
    +/BIC/AZOFI_UTE00_SOURSYSTEM+
    TYPE
    +/BIC/AZOFI_UTE00-SOURSYSTEM,+
    END OF ty_final.
    In the SAP GUI shows a sintaxis error.
    Functions Module ZODI_8001_7001. line 25
    The name "/BIC/AZOFI_UTE00_/BIC/ZFI_SOCOR" is longer that allowed.
    +30 characters.+
    Really the TYPE "/BIC/AZOFI_UTE00_/BIC/ZFI_SOCOR" has 31 characters.
    The sufix "/BIC/" is the "NAMESPACE", a SAP grouping concept.
    AZOFI_UTE00 is a table name.
    ZFI_SOCOR is a column name.
    Are this sufix correct in the APAP code?
    Has anyone had that problem?
    Any comment will be wellcome.
    Thank's in advance.

    Hi Somchai,
    r U able to resolve ur issue ..........i'm also struck there at the same point.
    I am using shared folder for file transfer and my error message is
    java.lang.RuntimeException: Error occured in open tool execute method...Error in executing ABAP program...Error in executing ABAP program...Error occurred when creating dataset\\<hostname>\bi-interface$\ZODI_11001_12001_GLOBAL.txt
    Thanks.
    Edited by: Drona on Mar 26, 2012 7:25 AM

  • Simple Abap Code Case i_chabsnm is not working

    Please help me asap, I am trying to enhance the BW datasource with only one field "Responsible" in 0refx_2 datasource . I am getting the error in code that case i_chabasnm is unknown and tables not defined by data statement
    please help me to correct the code I am just picking the field RESPONSIBLE from Table VIBDPR
    Abap Code below:
    Tables:  VIBDPR.          "Property master data table
    data:    l_tabix like sy-tabix.
    case i_CHABASNM.
    *Enhancement of Property Master Record
      WHEN '0REFX_2'.
        case i_datasource.
          WHEN '0REFX_2'.
            data:  l_s_REIS_MEASUREMENT_TRAN like REIS_MEASUREMENT_TRAN.
            loop at i_t_data into l_s_REIS_MEASUREMENT_TRAN.
              l_tabix = sy-tabix.
    select single * from VIBDPR where BUKRS = l_s_ REIS_MEASUREMENT_TRAN - BUKRS.
              if sy-subrc = 0.
                l_s_BIW_VIBDPR_s-ZZRESPONSIBLE = VIBDPR-RESPONSIBLE.
                modify i_t_data from l_s_ REIS_MEASUREMENT_TRAN index l_tabix.
              endif.
            endloop.
        endcase.
    endcase

    I am getting the error in cmid abap code that
    REIS_MEASUREMENT_TRAN shall be a flat structure but that is the extract structure in datasource 0refx_2  so what should i change on this
    Tables:  VIBDPR.          "Property master data table
    data:    l_tabix like sy-tabix.
    data:    i_CHABASNM.
    case i_CHABASNM.
    *Enhancement of Property Master Record
      WHEN '0REFX_2'.
        case i_datasource.
          WHEN '0REFX_2'.
            data:  l_s_REIS_MEASUREMENT_TRAN like REIS_MEASUREMENT_TRAN.
            loop at i_t_data into l_s_REIS_MEASUREMENT_TRAN.
              l_tabix = sy-tabix.
    select single * from VIBDPR where BUKRS = l_s_ REIS_MEASUREMENT_TRAN - BUKRS.
              if sy-subrc = 0.
                l_s_BIW_VIBDPR_s-ZZRESPONSIBLE = VIBDPR-RESPONSIBLE.
                modify i_t_data from l_s_ REIS_MEASUREMENT_TRAN index l_tabix.
              endif.
            endloop.
        endcase.
    endcase

  • ABAP code to get MM Movement Types into BI

    Hi All,
    I need help in ABAP code to extract data on MM tables for Purchase Price Variance Raw Material. I'm getting material documents for all reversals 102 movement type and not extracting followed up 544 or 543 values for same documents. I don't have much idea about ABAP in depth.
    program using BSIS, BKPF , EKBE, MSEG, MKPF, EKPO tables to extract data.
    See below pieces of code from program.
    DATA: TEMP_AWKEY LIKE BKPF-AWKEY,
          YEAR(4) TYPE N,
          WRX_AMT TYPE BSEG-DMBTR,
          PRD_AMT TYPE BSEG-DMBTR,
          WP_AMT TYPE BSEG-DMBTR,
          QTY TYPE BSEG-MENGE,
          I_BSIS_WA TYPE I_BSIS_TYPE,
          MATDOC TYPE MSEG-MBLNR,
          MATDOC_YEAR TYPE MSEG-MJAHR,
          PERIOD(2) TYPE N.
    DATA:
                ITAB_MSEG TYPE HASHED TABLE OF ITAB_MSEG_TYPE WITH UNIQUE KEY MBLNR MJAHR ZEILE WITH HEADER LINE INITIAL SIZE 0,
          ITAB_MSEG2 TYPE HASHED TABLE OF ITAB_MSEG_TYPE WITH UNIQUE KEY MBLNR MJAHR ZEILE WITH HEADER LINE INITIAL SIZE 0,
    READ TABLE ITAB_BSEG WITH TABLE KEY BUKRS = I_BSIS-BUKRS BELNR = I_BSIS-BELNR GJAHR = I_BSIS-GJAHR BUZEI = I_BSIS-BUZEI  .
          IF SY-SUBRC EQ 0.
            MOVE :
               ITAB_BSEG-MEINS TO I_BSIS-MEINS,
               ITAB_BSEG-SHKZG TO I_BSIS-SHKZG,
               ITAB_BSEG-MATNR TO I_BSIS-MATNR,
               ITAB_BSEG-WERKS TO I_BSIS-WERKS,
               ITAB_BSEG-MENGE TO I_BSIS-MENGE,
               ITAB_BSEG-BEWAR TO I_BSIS-BEWAR,
               ITAB_BSEG-DMBTR TO I_BSIS-DMBTR,
               ITAB_BSEG-KTOSL TO I_BSIS-KTOSL,
               ITAB_BSEG-XREF3 TO I_BSIS-XREF3,
               ITAB_BSEG-PEINH TO I_BSIS-PEINH,
               ITAB_BSEG-EBELN TO I_BSIS-EBELN,
               ITAB_BSEG-EBELP TO I_BSIS-EBELP.
           IF ITAB_BSEG-SHKZG = 'H' .
             I_BSIS-DMBTR = I_BSIS-DMBTR * -1.
             ITAB_BSEG-DMBTR = ITAB_BSEG-DMBTR * -1.
           ENDIF.
    IF NOT I_BSIS[] IS INITIAL.
          SELECT * FROM MSEG
          INTO CORRESPONDING FIELDS OF TABLE ITAB_MSEG
          FOR ALL ENTRIES IN I_BSIS
          WHERE MBLNR = I_BSIS-MATDOC
          AND   MJAHR = I_BSIS-MATDOC_YEAR
          ORDER BY PRIMARY KEY.
         LOOP AT ITAB_MSEG.
           LOOP AT I_BSIS WHERE MATDOC = I_MSEG_WE-MBLNR. "AND MATDOC_YEAR = I_MSEG_WE-MJAHR.
             MOVE :
                ITAB_MSEG-BWART TO I_BSIS-BWART.
             MODIFY I_BSIS TRANSPORTING BWART.
           ENDLOOP.
         ENDLOOP.
    IF WA_ZBW_MM_PPVCALC-BWART = '    '.
    MATDOC_YEAR = WA_ZBW_MM_PPVCALC-AWKEY+10(4).
         MATDOC = WA_ZBW_MM_PPVCALC-AWKEY(10).
          SELECT * FROM MSEG
          INTO CORRESPONDING FIELDS OF TABLE ITAB_MSEG2
         FOR ALL ENTRIES IN I_BSIS
          WHERE MBLNR = MATDOC
          AND   MJAHR = MATDOC_YEAR
          ORDER BY PRIMARY KEY.
      LOOP AT ITAB_MSEG2.
      WA_ZBW_MM_PPVCALC-BWART = ITAB_MSEG2-BWART.
      ENDLOOP.
      ENDIF.
    Please let me know where I need to change the logic to pick all movement types documents.
    Thanks,
    SAP_BI_AP
    Edited by: SAP_BI_AP on Jun 23, 2010 10:35 PM

    Hi
    There is one std tcode COOIS where u can get the information what u have asked
    Pls check
    regards
    Vijay

  • Abap Code help in Extractor!!!

    Hi all
    I am not an abaper, I am using Bw 3.5; I need to write a code in "ZBSIS" and "ZBSAS" Extractor Include program ZXRSAU01: so that the report based on cube "ZBSISAS" shows values for field Transaction key "ZKTOSL".
    The field "KTOSL" is not active in R/3 Directory and gets filled in program RFWERE00 in Tcode F.19 in R/3.
    I have to use the same logic in extractor as used in that program.
    The logic is:
    FORM GET_'KTOSL USING IAMOUNT LIKE EXTRACT-DMBTR
                                   CHANGING 'EKTOSL' LIKE POST_COLLECT-'KTOSL'.
               IF IAMOUNT < 0.
                  'EKTOSL' = 'GNB'
               ELSE.
                  'EKTOSL' = 'BNG'
               ENDIF.
    ENDFORM.
    Can any of you advice me on abap code for this logic?
    I appreciate your help.
    Thanks in advance
    Ishi

    Hi,
    You can use the following code in ZXRSAU01.
    CASE i_datasource.
    WHEN 'ZBSIS'.
    DATA: g_wa_extractstructure  LIKE <give the extractstructure  of your datasource from RSA2>.
    LOOP AT C_T_DATA into g_wa_extractstructure.
    IF g_wa_extractstructure-DMBTR LT 0.
    g_wa_extractstructure-ZKTOSL = 'GNB'
    ELSE.
    g_wa_extractstructure-ZKTOSL = 'BNG'
    ENDIF.
    MODIFY c_t_data FROM g_wa_extractstructure.
    ENDLOOP.
    ENDCASE.
    Note:- . The same code can be used for ZBSAS. Please make sure to give the  extract structure name in the field marked in <->.
    Thanks,
    Nithin reddy.

  • ABAP Code Date Selection for InfoPackage Scheduler

    Hello Group
    I need to automate the selection of valid condition records for an extraction that have a From and To date range.
    I noticed there is an option (Routine for time interval) to write ABAP code along with a template that is available in the InfoPackage.
    I think the logic for the selection would be any record
    Valid from       <= today
    Valid to           >= today
    Can anyone help with the ABAP code?
    The template is as follows:
    program conversion_routine.
    Type pools used by conversion program
    type-pools: rsarc, rsarr, rssm.
    tables: rsldpsel.
    Global code used by conversion rules
    $$ begin of global - insert your declaration only below this line  -
    TABLES: ...
    DATA:   ...
    $$ end of global - insert your declaration only before this line   -
    form compute_time_dependent_dates
      changing p_datefrom type d
               p_dateto   type d
               p_subrc like sy-subrc.
          Insert source code to current selection field
    $$ begin of routine - insert your code only below this line        -
              p_datefrom =
              p_dateto   =
              p_subrc = 0.
    $$ end of routine - insert your code only before this line         -
    endform.
    Thank You for your help!!
    Frank

    I resolved the problem . I have changed the order of read table l_t_range because I need the header .
    In the loop at datos I add the line l_t_range-iobjnm = 'ZXGE_UNO'.
    The problem wasn't the call RFC it was that I built l_t_range bad. I need the infoObject name.
    This is correct!!
    READ TABLE L_T_RANGE WITH KEY
             FIELDNAME = '/BIC/ZXGE_UNO'.
    LOOP AT DATOS.
          L_T_RANGE-FIELDNAME = '/BIC/ZXGE_UNO'.
          L_T_RANGE-IOBJNM = 'ZXGE_UNO'.
          L_T_RANGE-SIGN = 'I'.
          L_T_RANGE-OPTION = 'EQ'.
          CONCATENATE '00' DATOS-WA+3(4) INTO L_T_RANGE-LOW.
          APPEND L_T_RANGE.
        ENDLOOP.
    *READ TABLE L_T_RANGE WITH KEY+
    +*FIELDNAME = '/BIC/ZXGE_UNO'.+
    +*    L_IDX = SY-TABIX.+
    +*    MODIFY L_T_RANGE INDEX L_IDX
    Thanks a lot
    Ana

  • IS there is any another Area for writing ABAP Codes ( Variable Exit)

    Can we extractor & aggragate the Data from Lookup DSO . & show in Report of (ODS1) .
    Can we extract/Aggregate Data   at run time of Query .
    Please help me what are the Area/Tool  where we can write the ABAP Codes in displaying a report in  BEx Query

    Hi
    Point 1: U r saying DSO is BI 7 &ODS 3.X .But Actually we will use lookup while uploading
    Ex :    Data Flow  : ODS1     -           CUBE (Before Uploading data to Cube from ODS1 you need some data from ODS2.Then you will use lookup at teh ODS1-CUBE TRansformation level)
    Point 2 :  As per my understand when you can execute the query the OLAP Processor will pick the data display the in theoutput as per your stucrure.Means during Run Time of query
    1. Extracting Data from Cube
    2. Claculating based on the Query Structure deisgned ( Means Aggregarion of Data  etc.......) and displays the output.
    Point 3: Customer exit for BEx query will written in SE38/CMOD.
    Regards
    Ram.

  • Need ABAP Code to enhance the 0PRODORDER_ATTR?

    I want to enhance the datasource 0PRODORDER_ATTR with the below JCDS Table fields like UDATE,STAT,OBJNR,INACT,CHGNR.
    Can anyone please let me know the ABAP Code need to be written in the CMOD to populate the data for the above fields in the 0PRODORDER_ATTR?

    Hi,
    You can use below code to enhancemnt .
    You need to change the table, structure and field names
    Below code you have to write in tocde CMOD if you are enhancing the master data. It applies for any master data, although, I have taken 0VENDOR_ATTR as the example. I assume that You have already added/appended  the fields in the extract structure of 0VENDOR_ATTR  i.e. to the structure BIW_LFA1_S. ( Check this link for how to enhance the DataSource : https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/b0af763b-066e-2910-a784-dc6731660f46 )
    We have enhanced the datasorce for the following two fields from table LFA1:
    ERDAT- Date on which the Record Was Created
    KRAUS - Credit information number.
    We have also enhaced the structure for the following fields from table LFB1.
    MINDK - Minority Indicators
    ZTERM - Terms of payment key
    CERDT - Certification date.
    Now we will poulate these two fields in the code written in CMOD tcode. Here is the code:
    Go to the tcode CMOD in R3 and select the component EXIT_SAPLRSAP_002. Write this code in INCLUDE ZXLOFU01.
    data : l_t_data like biw_lfa1_s.
    data : l_tabix like sy-tabix.
    CASE i_datasource.
    WHEN '0VENDOR_ATTR'.
        LOOP AT  i_t_data INTO l_t_data.
          l_tabix = sy-tabix.
          CLEAR:  l_t_data-yyerdat,
                 l_t_data-yykraus.
          SELECT SINGLE  erdat kraus FROM lfa1 INTO
              ( l_t_data-yyerdat, l_t_data-yykraus)
                WHERE lifnr EQ l_t_data-lifnr.
          SELECT SINGLE mindk zterm cerdt FROM lfb1 INTO
                  (l_t_data-yymindk, l_t_data-yyzterm, l_t_data-yycerdt)
                  WHERE lifnr = l_t_data-lifnr.
          MODIFY i_t_data FROM l_t_data INDEX l_tabix.
          CLEAR: l_t_data, l_tabix.
        ENDLOOP.
    ENDCASE.
    Labels parameters

Maybe you are looking for