Update rule/routine for 0PUR_C04

hi experts,
can someone give the update rule/routine for uploading 0ORDER_VAL(effective order value) into the cube 0PUR_C04 and the calculations for it?
and also some explantion on how this effective purchase order value 0ORDER_VAL is calculated*??
thanks

Hi Surya,
If you are using standard content for 0PUR_C04, you can get the update rule in standard update rules, which you can see in Business content on Metadata repository. For standard content four data source used to fill cube. Purchasing Group (2LIS_02_S011 ), Purchasing Data (2LIS_02_HDR), Pur.Data  (2LIS_02_SCL) and Purchasing Data (2LIS_02_ITM). The mapping for different update rules are done as:
2LIS_02_S011: Direct Mapping
2LIS_02_HDR: No Update
2LIS_02_SCL: Routine (mm_convert_effwr)
fill the internal table "MONITOR", to make monitor ent *ries
IF ( COMM_STRUCTURE-PROCESSKEY = '001' or "Bestellu *ng
COMM_STRUCTURE-PROCESSKEY = '011' or
COMM_STRUCTURE-PROCESSKEY = '021' or
COMM_STRUCTURE-PROCESSKEY = '004' or "LP
COMM_STRUCTURE-PROCESSKEY = '014' or
COMM_STRUCTURE-PROCESSKEY = '024' )
AND COMM_STRUCTURE-BWAPPLNM EQ 'MM'
AND COMM_STRUCTURE-ORDER_VAL <> 0.
perFORM LOC_CURR_CONVERT
USING COMM_STRUCTURE-ORDER_VAL
COMM_STRUCTURE-DOC_DATE
COMM_STRUCTURE-ORDER_CURR
COMM_STRUCTURE-LOC_CURRCY
COMM_STRUCTURE-EXCHG_RATE
CHANGING RESULT.
if the returncode is not equal zero, the result will not be updated
RETURNCODE = 0.
else.
RETURNCODE = 4.
endif.
if abort is not equal zero, the update process will be canceled
ABORT = 0.
2LIS_02_ITM: No Update
Hope this will give you some lead.
Regards,
Kams

Similar Messages

  • Update Rule Routine Problem

    Hi
    i have wriiten a update rule routine.
    in that routine i am fetching comp code ,GL Acct. from SKB1 table and match those records wth Data Package records.
    Data Package has both Open and Closed items. so i need to match the Comp Code and GL Account which i have fetched from SKB1 with Data Package Comp Code and GL account which records will be matched they will go to Target ODS otherwise Delete from Data Package.
    But data is not coming properly in Target ODS.
    i have debug the routine and found , there are 10 records(Comp Code + GL Acct.) has been fetched from SKB1
    and Data Package has Total 416 Records. Only 20 Records has been gone to Target ODS while I have seen the 216 Comp Code and GL Account combination has been successfully matched with 10 Records of SKB1
    Below is the code in Start routine.
    Note: Data Package has Multiple Records for a Combination of Company Code and GL Account which is present in SKB1.
    How can i resolve this problem.
    ********Logic to Fetch Open items GL Account**************
    *Fetch data from SKB1*********
    SELECT /BIC/ZMCFBUKRS
           /BIC/ZMCFSAKNR
           FROM /BIC/AZOCFSKB100
           INTO TABLE TB_ZOCFSKB1
           FOR ALL ENTRIES IN DATA_PACKAGE
           WHERE /BIC/ZMCFBUKRS = DATA_PACKAGE-COMP_CODE
           AND  /BIC/ZMCFSAKNR = DATA_PACKAGE-GL_ACCOUNT
           AND /BIC/ZMCFXOPVW = 'X'.
    ***Fetch records from FI GL Data Package which match with
    ***internal table TB_ZOCFSKB1
    LOOP AT DATA_PACKAGE INTO WA_DATA_PACKAGE.
    READ TABLE TB_ZOCFSKB1 INTO WA_TB_ZOCFSKB1 WITH KEY
    /BIC/ZMCFBUKRS = WA_DATA_PACKAGE-COMP_CODE
    /BIC/ZMCFSAKNR = WA_DATA_PACKAGE-GL_ACCOUNT
    binary search.
          IF sy-subrc ne 0.
            DELETE TABLE DATA_PACKAGE FROM WA_DATA_PACKAGE.
          ENDIF.
    ***Clear Work Area****************
          CLEAR WA_TB_ZOCFSKB1.
          CLEAR WA_DATA_PACKAGE.
        ENDLOOP.
    ***Refresh internal table*********
       REFRESH TB_ZOCFSKB1.
      ENDIF.
    if abort is not equal zero, the update process will be canceled
      ABORT = 0.
    Edited by: AtulMohan Mishra on Feb 9, 2011 11:22 AM

    Hi,
    It is very important that you SORT the internal table before you do a READ with Binary Search.
    SORT TB_ZOCFSKB1 BY /BIC/ZMCFBUKRS /BIC/ZMCFSAKNR.
    You are sure to miss results unless you do.

  • Update rule routine

    hi all
    i need to write a routine at the update rule level for currency type....
    currency type has data of type 00,01,02 loaded to psa and then to infocube
    i need only 00 data to be loaded into cube, so want to write a routine
    can you please provide the coding for the same so that i can write at the update rule level for curr type field
    Regards

    PROGRAM CONVERSION_ROUTINE.
    Type pools used by conversion program
    TYPE-POOLS: RS, RSARC, RSARR, SBIWA, RSSM.
    Declaration of transfer structure (selected fields only)
    TYPES: BEGIN OF TRANSFER_STRUCTURE ,
      InfoObject 0COMP_CODE: CHAR - 000004
      HEADER_COMP_CO(000004) TYPE C,
      InfoObject 0PLANT: CHAR - 000004
      HEADER_PLANT(000004) TYPE C,
      InfoObject 0MATERIAL: CHAR - 000018
      HEADER_MATERIAL(000018) TYPE C,
      InfoObject 0MATL_TYPE: CHAR - 000004
      HEADER_MAT_TYPE(000004) TYPE C,
      InfoObject 0MATL_GROUP: CHAR - 000009
      HEADER_P_GROUP(000009) TYPE C,
      InfoObject 0LOTSIZE_IT: QUAN - 000013
      LOTSIZE(000007) TYPE P,
      InfoObject 0UNIT: UNIT - 000003
      LOTSIZE_QTY_UNIT(000003) TYPE C,
      InfoObject 0FISCPER: NUMC - 000007
      PERIODE(000007) TYPE N,
      InfoObject 0FISCVARNT: CHAR - 000002
      FISCAL_Y_VARIANT(000002) TYPE C,
      InfoObject 0PCPITEMCAT: CHAR - 000001
      ITEM_CATEGORY(000001) TYPE C,
      InfoObject 0PCP_RES: CHAR - 000035
      COST_ITEM(000035) TYPE C,
      InfoObject 0COMPONENT: CHAR - 000018
      MATERIAL(000018) TYPE C,
      InfoObject 0VAL_CLASS: CHAR - 000004
      VALUATION_CLASS(000004) TYPE C,
      InfoObject 0PLANT_COMP: CHAR - 000004
      PLANT(000004) TYPE C,
      InfoObject 0SEND_CMPC: CHAR - 000004
      COMPANY_CODE(000004) TYPE C,
      InfoObject 0CO_AREA: CHAR - 000004
      CONTROLLING_AREA(000004) TYPE C,
      InfoObject 0COSTCENTER: CHAR - 000010
      COST_CENTER(000010) TYPE C,
      InfoObject 0ACTTYPE: CHAR - 000006
      ACTIVITY_TYPE(000006) TYPE C,
      InfoObject 0WORKCENTER: CHAR - 000008
      WORK_CENTER(000008) TYPE C,
      InfoObject 0VENDOR: CHAR - 000010
      VENDOR(000010) TYPE C,
      InfoObject 0INFO_REC: CHAR - 000010
      INFO_RECORD(000010) TYPE C,
      InfoObject 0ABCPROCESS: CHAR - 000012
      PROCESS(000012) TYPE C,
      InfoObject 0AMOUNT: CURR - 000015
      VALUE(000008) TYPE P,
      InfoObject 0AMOUNTFX: CURR - 000015
      VALUE_FIXED(000008) TYPE P,
      InfoObject 0AMOUNTVR: CURR - 000015
      VALUE_VARIABLE(000008) TYPE P,
      InfoObject 0OI_MENGE: QUAN - 000015
      QUANTITY(000008) TYPE P,
      InfoObject 0BASE_UOM: UNIT - 000003
      QUANTITY_UNIT(000003) TYPE C,
      InfoObject 0PRICEUNIT: DEC - 000005
      PRICE_UNIT(000003) TYPE P,
      InfoObject 0CURRENCY: CUKY - 000005
      CURRENCY(000005) TYPE C,
      InfoObject 0CURTYPE: CHAR - 000002
        CURRENCY_TYPE(000002) TYPE C,
      InfoObject 0COSTELMNT: CHAR - 000010
      COST_ELEMENT(000010) TYPE C,
      InfoObject 0COSTCOMP: NUMC - 000003
      COST_COMPONENT(000003) TYPE N,
      InfoObject 0CCOMPSTRUC: CHAR - 000002
      COST_COMP_STR(000002) TYPE C,
      InfoObject 0SCRAPQTY: QUAN - 000015
      SCRAP_QTY(000008) TYPE P,
      InfoObject 0COMP_SCRAP: QUAN - 000015
      COMP_SCRAP_QTY(000008) TYPE P,
      InfoObject 0COSTVAR: CHAR - 000004
      COSTING_VARIANT(000004) TYPE C,
      InfoObject 0COSTVERS: NUMC - 000002
      COSTING_VERSION(000002) TYPE N,
    END OF TRANSFER_STRUCTURE .
    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_CURTYPE
    Compute value of InfoObject 0CURTYPE
    in communication structure /BIC/CS0CO_PC_PCP_10
    Technical properties:
        field name      = CURTYPE
        data element    = /BI0/OICURTYPE
        data type       = CHAR
        length          = 000002
        decimals        = 000000
        ABAP type       = C
        ABAP length     = 000002
        reference field =
    Parameters:
    -->  RECORD_NO       Record number
    -->  TRAN_STRUCTURE  Transfer structure
    <--  RESULT          Return value of InfoObject
    <->  G_T_ERRORLOG    Error log
    <--  RETURNCODE      Return code (to skip one record)
    <--  ABORT           Abort code (to skip whole data package)
    FORM COMPUTE_CURTYPE
      USING    RECORD_NO LIKE SY-TABIX
               TRAN_STRUCTURE TYPE TRANSFER_STRUCTURE
               G_S_MINFO TYPE RSSM_S_MINFO
      CHANGING RESULT TYPE /BI0/OICURTYPE
               G_T_ERRORLOG TYPE rssm_t_errorlog_int
               RETURNCODE LIKE SY-SUBRC
               ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel datapackage
    $$ begin of routine - insert your code only below this line        -
    DATA: l_s_errorlog TYPE rssm_s_errorlog_int.
    If <SOURCE_FIELDS>-CURTYPE NE '00'
    Delete DATA_PACKAGE.
    RESULT = .
    returncode <> 0 means skip this record
      RETURNCODE = 0.
    abort <> 0 means skip whole data package !!!
      ABORT = 0.
    $$ end of routine - insert your code only before this line         -
    ENDFORM.
          FORM INVERT_CURTYPE
          Inversion of selection criteria for InfoObject 0CURTYPE
          This subroutine needs to be implemented only for SAP RemoteCubes
          (for better performance) and for the Report/Report Interface
          (drill through).
    -->  I_RT_CHAVL_CS       Ranges table for current InfoObject
    -->  I_THX_SELECTION_CS  Selection criteria for all other InfoObjects
    <--  C_T_SELECTION       Selection criteria for fields of
                              transfer structure
    <--  E_EXACT             Flag: Inversion was exact
    FORM INVERT_CURTYPE
      USING    I_RT_CHAVL_CS      TYPE RSARC_RT_CHAVL
               I_THX_SELECTION_CS TYPE RSARC_THX_SELCS
      CHANGING C_T_SELECTION      TYPE SBIWA_T_SELECT
               E_EXACT            TYPE RS_BOOL.
    $$ begin of inverse routine - insert your code only below this line-
      DATA:
        L_S_SELECTION LIKE LINE OF C_T_SELECTION.
    An empty selection means all values
      CLEAR C_T_SELECTION.
      L_S_SELECTION-FIELDNM = 'CURRENCY_TYPE'.
    Selection of all values may be not exact
      E_EXACT = RS_C_FALSE.
    $$ end of inverse routine - insert your code only before this line -
    ENDFORM.

  • Why data in PSA doesn't  change when update rule routine is modified?

    Hello guys,
    why data in PSA is not changed after I modifiied the update rule routine. I created a infopackage which is only to PSA, but it shows me any change. If I changed this infopackage to the one which is assigned to "PSA firstly, and then to Infoobject", then I saw the changes in infoobject, but in PSA, still nothing changed.
    I can't figure out the reason. Any hint is welcome!
    Thanks in advance.
    Regards,
    Liying

    HI..
    1) PSA data is like of source system data
    2)Update rules are how you update your keyfigures to Data Tragets.
    Since you have put upto PSA that is the first data staging in BW so there wont be any change of the data even if you write routines at update rules.
    Hope it is clear
    Reg
    Ram

  • Calculation in update rule/routine in order to modify DATA_PACKAGE

    Hello all,
    I want to load some finance data from two ODS objects into an InfoCube. In the update rule I have build a start routine in order to compare two values of  two internal tables (itab1 and itab2) which gets loaded with data from the both ODS.
    When the value of the itab1 is higher of itab2 then I want to subtract the value from itab2 from itab1.
    After that I want to MODIFY the DATA_PACKAGE in order to update later the cube with an new lower value.
    The DATA_PACKAGE is defined as standard table as well as itab1 and itab 2 but I get the error message that the line type is not compatible.
    How I have to build the MODIFY statement in order to calculate and update values in the DATA_PACKAGE?
    Any helps would be great.
    Best regards from Munich/Germany,
    Stefan Leontiadis

    Hi Stefanos,
    My thought is probably not the best in terms of performance, but it should work.  The problem you'll hit is not having the entire data set from both ODS Object loads in memory at the same time.
    To cover this, you can declare a table in the global section of the start routine, let's call it GT_REF_DATA.  Next, perform a SELECT ffrom <other ODS Object> FOR ALL ENTRIES IN DATA_PACKAGE WHERE <selection> into GT_REF_DATA in the local section of the start routine.
    In the individual update routine, you can do a READ TABLE GT_REF_DATA INTO LS_REF_DATA WITH KEY <selection> to get the record you want to compare.
    Here's where you have to be careful.  If I understand your logic right, you can do:
    IF LS_REF_DATA-field < COMM_STRUCTURE-field.
      RESULT = COMM_STRUCTURE-field - LS_REF_DATA-field.
    ELSE.
    RESULT = COMM_STRUCTURE-field.
    ENDIF.
    That avoids processing everything in the start routine and your MODIFY problem.  If you prefer the start routine, you can work with the DATA_PACKAGE directly.  Just remember that DATA_PACKAGE has a header line, so you can simply LOOP AT DATA_PACKAGE, change the value in DATA_PACKAGE, then MODIFY DATA_PACKAGE.
    The way I prefer to do things is to create a separate internal table that is the same type as DATA_PACKAGE.  I fill the internal table with all values to store to the InfoCube (even those you don't change from DATA_PACKAGE).  At the end of the routine, CLEAR DATA_PACKAGE then APPEND LINES OF itab TO DATA_PACKAGE.
    I know there's lots of options above.  Let me know if I got your logic wrong or you have questions.
    Cheers,
    Adam

  • Update Rule Routine not deleted properly

    Hi all
    I have deleted a routine from an update rule, removed the key figure from the infoprovider and reactivated both the ODS and the update rule.
    The update rule therefore no longer contains the datafield.
    Unfortunately the the code for the routine still exists in the system (RSAABAP and other tables) and references in this routine to other fields are preventing me carrying out other actions, so I need to properly remove the routine from the system.
    I cannot go back to the old generated code for the update rules as there is no version management.  I have tried putting the field back on the ODS and recreating the routine, but the system generates a new key for the routine so it looks as though I have lost the link completely.
    Any suggestions?  Is there a way of deleting an object type R3TR ROUT consistently without doing it through the Update rules change screen?
    Regards
    Hayley

    Hi,
    Let me give the solution, we are also having the same issues..
    thanks in advance
    sree

  • Problem in the update rule routine in BIW production

    hi,
      I have encountered a problem in the update rule, the problem is, there is a routine to calculate the age of a person, age is a key figure,
    The problem is that the key figure is not being calculated.
    we had encountered the same problem in the bw developent, we reinstaled the update rule, and the age was calculated correctly. Where as in production we cannot instal from business cotent, should we transport the perticular update rule once again?
    if there is any other solution, please let me know.
    Thanks in advance.
    regards chetana.

    I think retransporting is the only option available to you. You cannot modify anything in your production system.
    IF you have a chance to speak with basis people,ask them to open the system status to modifiable for few minutes.
    and make necessary changes in production and bring it back to normal (This is not a best practise in all situations).
    hope this helps.
    Praveen

  • SAP BW UPDATE RULE  ROUTINE

    Data is coming from one cube to another cube.
    How to restrict the data in update rule by using routine , which is not require in to another Cube.
    Thanks,
    Asit

    Hi Asit,
    You are on which system BW 3.5 or BW 7.0?
    If you are on BW 7.0, there are various way of doing this.
    1> Using DTP: If you have definite filter criteria while loading data from Infocube 1 and Infocube 2, you can use it in DTP.
    for eg. while doing data loads, exclude records where material group is blank. While creating DTP, you can specify required filter criteria.
    2> using start routine: You can use start routine as well to exclude all those records which you don't want to load to target infocube.
    For eg. Delete all records from source package where case ids are blank.
    use below statement to code it:
    Delete source_package where <fieldname> = <some values>.
    Regards,
    Nilima

  • Update Rule Routine: Compare system date

    Can anyone help me with regards to writing some ABAP code in update rule?
    I would like to check if the value of a date characteristics is equal to system date in data source. If its value is equal to system date, assign '0' value to another numeric characteristics. Otherwise, it will get the difference between system date and the date characteristics. I have rewritten the routine as follows. But there is no effects on the result. Am I correct?
    if COMM_STRUCTURE-<date characteristics> = SYST-DATUM.
      RESULT = '0'.
    else.
      RESULT = COMM_STRUCTURE-<numeric characteristics>.
    endif.
    Many thanks in advance.

    I have rewritten the code as follows. ZLASTPURD is a numeric characteristics. The code is written in the routine of ZLASTPURD in update rule. But it takes no effect. The case "COMM_STRUCTURE-/BIC/ZLASTPURD ='0'" means another date characteristics is equal to system date, the value of ZLASTPURD is blank after modifying the code. However, the code is workable for  "RESULT = COMM_STRUCTURE-/BIC/ZLASTPURD.". Is there anything wrong?
    data lastpurdays type I.
    lastpurdays = '1'.
    if COMM_STRUCTURE-/BIC/ZLASTPURD = '0'.
      RESULT = lastpurdays.
    else.
      RESULT = COMM_STRUCTURE-/BIC/ZLASTPURD.
    endif.
    Many thanks in advance.

  • Update Rule - Routine Issue

    Hello All,
          I have an Update Rule between ODS and InfoSource. I have the following routine for 0CALQUARTER. I cannot figure out why it is not being populated in the ODS. I see that 0FISCPER  is being populated in the ODS. What am I missing. I am attaching the code below.
    Thanks.
    Regards,
    bw_newbie
    Routine:
    PROGRAM UPDATE_ROUTINE.
    $$ begin of global - insert your declaration only below this line  -
    TABLES: ...
    DATA: v_qtr(1).
    DATA:   ...
    $$ end of global - insert your declaration only before this line   -
    FORM compute_data_field
      TABLES   MONITOR STRUCTURE RSMONITOR "user defined monitoring
      USING    COMM_STRUCTURE LIKE /BIC/CSZFI_SL_A129_TT
               RECORD_NO LIKE SY-TABIX
               RECORD_ALL LIKE SY-TABIX
               SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
      CHANGING RESULT LIKE /BIC/AZFI_O12900-CALQUARTER
               RETURNCODE LIKE SY-SUBRC "Do not use!
               ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
    $$ begin of routine - insert your code only below this line        -
    fill the internal table "MONITOR", to make monitor entries
    result value of the routine
      IF              COMM_STRUCTURE-FISCPER+4(3) = '000' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '001' OR
                          COMM_STRUCTURE-FISCPER+4(3) = '002' OR
                          COMM_STRUCTURE-FISCPER+4(3) = '003'.
                                    v_qtr = 1.
              ELSEIF       COMM_STRUCTURE-FISCPER+4(3) = '004' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '005' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '006'.
                                    v_qtr = 2.
              ELSEIF       COMM_STRUCTURE-FISCPER+4(3) = '007' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '008' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '009'.
                                    v_qtr = 3.
             ELSEIF        COMM_STRUCTURE-FISCPER+4(3) = '010' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '011' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '012' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '013' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '014' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '015' OR
                           COMM_STRUCTURE-FISCPER+4(3) = '016'.
                                    v_qtr = 4.
             ENDIF.
      CONCATENATE COMM_STRUCTURE-FISCPER(4) v_qtr INTO RESULT.
    if abort is not equal zero, the update process will be canceled
      ABORT = 0.
    $$ end of routine - insert your code only before this line         -
    ENDFORM.

    You may have to put the following line in your update rule after changing the result.
    RETURNCODE = 0.
    Regards.
    Sanjay
    Message was edited by:
            Sanjay Sinha

  • Advanced Update Rules Routine

    I have a routine in my update rule that performs a lookup to another ODS.  To improve my performance I would like to try writing a temporary variable to memory that can then be referenced when loading each record.  For example here's some pseudo code:
    1) if vendor already exists then do nothing
    2) set AP key and set Purchasing key for performing lookups
    (ie: AP key = Company Code + FiscalYearPeriod + AccountingDocumentNumber)
    (ie: Purchasing key = Company Code + FiscalYearPeriod + PurchasingDocumentNumber)
    3) does temporary AP variable exist and does it match AP key?
         3a) if yes then EXIT and return temporary AP variable
         3b) if no then perform ap lookup based on AP key
         3c) was lookup successful - was vendor found?
    if yes then set temporary AP variable and EXIT and return value
    if no then continue
    4) does temporary Purchasing variable exist and does it match Purchasing key?
         4a) if yes then EXIT and return temporary Purchasing variable
         4b) if no then perform purchasing lookup based on Purchasing key
         4c) was lookup successful - was vendor found?
    if yes then set temporary Purchasing variable and EXIT and return value
    if no then EXIT (Do nothing - essentially leave blank)
    My question is 1) Whether it's indeed possible to pass this temporary variable and 2) can you give me a sample of code that I would use to read/write the variable?
    Thanks so much!

    You can use Import/Export to cluster database. This way you can share the same variable value between different programs/routine.
    EXPORT value TO DATABASE INDX(Indx) ID 'Variable Id'.
    IMPORT value FROM DATABASE INDX(Indx) ID 'Variable Id'.
    For more details you can refer the following:
    http://help.sap.com/saphelp_47x200/helpdata/en/fc/eb3c53358411d1829f0000e829fbfe/frameset.htm
    Regards,
    RB

  • Need hints to bring BC400(ABAP) knowledge to BW update rules/routines.

    Hi,
    I have just completed the BC400 (ABAP) course at SAP but the instructor had no clue about BW.
    From se80, he thought how to create packages, programs, functions modules, classes/Interfaces, etc. but whenever, I asked how these fit into the BW update rules and transfer rules, he said he knew nothing about BW.
    For example, how do I bring in a program written in se80 into my update rule or transfer routine which updates and ODS or cube?
    i.e. The main reasoning for learning this BC400(ABAP) is to be comfortable in writing update rule or transfer routine to update ODS/Cubes in BW but the instructor failed me in making the link between the ABAP class and BW.
    Can you give me some guide on this?
    Can I work in se80 as I was taught and bring codes from there to update a cube?
    i.e. if I need to write an update routine to update a cube from an ODS, can this be done in se80 (on BW)
    I will appreciate any guidelines to bring in my new found knowledge to the BW environment.
    Thanks

    Most Bw transformations are already includes inside programs or cmods or BTEs
    By double cliking on start routines and end routines it already takes you into the ABAP enviroment
    Have a look at the sappress book - user exits and BADIs in BW (it's not a brillaitn book by any means - it's just about passable and is short on detail - but it will get you a head start)

  • BW 0HR_PA_2 - 3 Update rules assignment for 0PA_DS02 - 3

    Hello experts
    I am just another one tryng to figure out how to assign the update rulesfor DSO's  0PA_DS02 and 3. The business content activation of the update rules yields a no update type of rule. So I guess we need to assign the fields manually. I read the <How-to> document on the BW/HR authorization but I am still trying to pass <GO> and load the initial data as the document does not mention the update rules assignment. In that regards I searched SDN on how to modify the update rules but I can't seem to pin point the exact complete information.
    Please help.
    Thanks.
    YB.

    =========================
    Update Rules for 0PA_DS03 (Part 2)
    =========================
    0TCTNDEF  -  BW Reporting Authorizations: Node Variables Defaul
    Initial value
    0TCTNIOBJNM - InfoObject of Node
    Routine:
    PROGRAM UPDATE_ROUTINE.
    $$ begin of global - insert your declaration only below this line  -
    TABLES: ...
    DATA:   ...
    $$ end of global - insert your declaration only before this line   -
    FORM compute_key_field
      TABLES   MONITOR STRUCTURE RSMONITOR "user defined monitoring
      USING    COMM_STRUCTURE LIKE /BIC/CS0HR_PA_3
               RECORD_NO LIKE SY-TABIX
               RECORD_ALL LIKE SY-TABIX
               SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
      CHANGING RESULT LIKE /BI0/APA_DS0300-TCTNIOBJNM
               RETURNCODE LIKE SY-SUBRC
               ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
    $$ begin of routine - insert your code only below this line        -
    fill the internal table "MONITOR", to make monitor entries
      RETURNCODE = 0.
    result value of the routine
      IF COMM_STRUCTURE-hr_otyobj IS INITIAL.
        RESULT = '1NODENAME'.
      ELSE.
        CASE COMM_STRUCTURE-hr_objtype.
          WHEN 'O'.   RESULT = '0ORGUNIT'.
          WHEN 'C'.   RESULT = '0JOB'.
          WHEN 'S'.   RESULT = '0HRPOSITION'.
          WHEN 'P'.   RESULT = '0EMPLOYEE'.
          WHEN 'Q'.   RESULT = '0QUALIFICTN'.
          WHEN 'QK'.  RESULT = '0QUALIGROUP'.
          WHEN 'BA'.  RESULT = '0APPRAISAL'.
          WHEN 'A'.   RESULT = '0HRWORKCNTR'.
          WHEN 'BK'.  RESULT = '0AP_CRIT'.
          WHEN 'BS'.  RESULT = '0AP_SCHEME'.
          WHEN 'E'.   RESULT = '0EVENT'.
          WHEN 'D'.   RESULT = '0EVENTTYPE'.
          WHEN 'L'.   RESULT = '0EVENTGROUP'.
          WHEN 'F'.   RESULT = '0EVLOCATION'.
          WHEN 'G'.   RESULT = '0RESOU'.
          WHEN 'R'.   RESULT = '0RESTYPE'.
          WHEN 'H'.   RESULT = '0EXTPERS'.
          WHEN 'U'.   RESULT = '0EXTORG'.
          WHEN OTHERS.RETURNCODE = 4.
        ENDCASE.
      ENDIF.
    if the returncode is not equal zero, the result will not be updated
    if abort is not equal zero, the update process will be canceled
      ABORT = 0.
    $$ end of routine - insert your code only before this line         -
    ENDFORM.
    0TCTNODE    - Nodes of a Hierarchy
    Routine:
    PROGRAM UPDATE_ROUTINE.
    $$ begin of global - insert your declaration only below this line  -
    TABLES: ...
    DATA:   ...
    $$ end of global - insert your declaration only before this line   -
    FORM compute_key_field
      TABLES   MONITOR STRUCTURE RSMONITOR "user defined monitoring
      USING    COMM_STRUCTURE LIKE /BIC/CS0HR_PA_3
               RECORD_NO LIKE SY-TABIX
               RECORD_ALL LIKE SY-TABIX
               SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
      CHANGING RESULT LIKE /BI0/APA_DS0300-TCTNODE
               RETURNCODE LIKE SY-SUBRC
               ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
    $$ begin of routine - insert your code only below this line        -
    fill the internal table "MONITOR", to make monitor entries
    result value of the routine
      IF COMM_STRUCTURE-hr_otyobj IS INITIAL.
        RESULT = 'ROOT_H'.
      ELSE.
        RESULT = COMM_STRUCTURE-hr_otyobj.
      ENDIF.
    if the returncode is not equal zero, the result will not be updated
      RETURNCODE = 0.
    if abort is not equal zero, the update process will be canceled
      ABORT = 0.
    $$ end of routine - insert your code only before this line         -
    ENDFORM.
    0TCTOBJVERS- Object Version
    Constant: A
    0TCTSYSID  - BW System
    Routine:
    PROGRAM UPDATE_ROUTINE.
    $$ begin of global - insert your declaration only below this line  -
    TABLES: ...
    DATA:   ...
    $$ end of global - insert your declaration only before this line   -
    FORM compute_key_field
      TABLES   MONITOR STRUCTURE RSMONITOR "user defined monitoring
      USING    COMM_STRUCTURE LIKE /BIC/CS0HR_PA_3
               RECORD_NO LIKE SY-TABIX
               RECORD_ALL LIKE SY-TABIX
               SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
      CHANGING RESULT LIKE /BI0/APA_DS0300-TCTSYSID
               RETURNCODE LIKE SY-SUBRC
               ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
    $$ begin of routine - insert your code only below this line        -
    fill the internal table "MONITOR", to make monitor entries
    result value of the routine
      CALL METHOD cl_rso_repository=>get_logical_system_self
        RECEIVING
          r_logsys = RESULT.
    if the returncode is not equal zero, the result will not be updated
      RETURNCODE = 0.
    if abort is not equal zero, the update process will be canceled
      ABORT = 0.
    $$ end of routine - insert your code only before this line         -
    ENDFORM.

  • Update rules error for 0IC_c03

    HI all,
    I have replicated the BF,BX and UM datasources into BI and I restored the BX datasource to 3.x and assigned the DS to standard Infosource 2lis_03_BX and activated.
    one field 0GN_R3_SSY was not mapped because there was no field in the DS 2lis_03_BX.
    I activated the transfer rules,it got activated without error,but it was in yellow.
    And I created a Zcube copying the standard cube 0IC_C03 and tried to create update rules,giving the Infosource name 2lis_03_bx
    then a message popped up saying
    'InfoSource 2LIS_03_BX is only set up for the initial run for non-cumulatives.'  I clicked on ok and then another message as
    'No update exists for time-reference characteristic 0CALDAY' and clicked ok then update rules proposal generated,and in update rules  the status of some of keyfigures with type routine was showing error
    for example:
    Value Received into Valuated Stock ,  Receipt Quantity: Blocked Stock ,  Quantity Received into Consignment Stock
              Receipt Quantity Total Stock
    please explain in detail what could be the reason?

    Try to create an infosource by using copy from the standard one. Then try to See the std mapping between infosource & data target. Similarily do the mapping between Zinfosource & Z data target as the std one.
    Hi PT,
    I will do as you said, I have a doubt is it all because 0GN_R3_SSY is not mapped in the transfer rules ,because transfer rules are not in green when I activated it and Iam going to create the Update rules.
    How to copy the standard  Infosource as you wont get any option to copy it.
    Thx

  • Purchasing cube designing, update rule mapping for 0calday

    Hi All,
       Iam designing cube for Purchasing module in BW. Iam having doubt in mapping for 0calday in update rules, is it with document date or scheduline date. I have searched in SAP cube 0PUR_C01, it is mapped with 0SCHED_DATE( schedule line date). How the difference comes when we choose document date and schedule line date.
      FYI, we are using only schedule line data source, which is giving relevant information.
    Thanks,
    Ram

    Hi Ram,
    Please note:
    0SCHED_DATE: The schedule line date is the day on which the scheduled quantity of the material is to be delivered.
    0DOC_DATE: The date on which document has been craeted.
    Use the first one for purchasing.
    Thanks...
    Shambhu

Maybe you are looking for

  • Convert Date/Time to Date for viewing?

    Hi there, any property or easy way to truncate Time from Oracle Date data type to show in Grid? Thanks Ali null

  • Qosmio G40 has a problem with HDDVD

    Hi, I just bought Qosmio g40 Nice laptop but I cannot watch HDDVD movies on it. Movie crashes sound as well I update bios Drivers for graphic card Toshiba HDDVD player but that makes no changes. I do not know where to go and how to solve the problem

  • Translation of portal content

    Hi All, For translating the portal applications, i want to use the Portal Translation workbench. -> In that I have created the Translation worklist. -> Translated the texts. -> released the worklist. -> Used the Mark Translated button. -> changed the

  • How to update to latest intel video driver

    Using HP ENVY x360 u010dx notebook/tablet i can not update to latest intell video driver. I;m getting message that my drier is custom, so i'm redirect to hp site where i can only download older version of driver. Current driver that i can download is

  • How to Customize UD (usage decision) in QM.

    Hi All, Could you please let me know, how to Customize UD (usage decision) in QM for movement of quality stock to unrestricted or blocked stock Thanks in advance. Amit