Update Routine Issue

Hello!
This is with regards to my previous post.
Help with Update Routines
I'm facing an issue & need some help.
I have a NUMC field (in calendar month/year). I'm trying to map 0FISCPER to 0CALMONTH, but unable to do that. The system is providing me just one option "0AEDAT" as Source Char. The Fiscal year variant is V6. When I assign to 0AEDAT & try to activate it, error msg is "IC=ZPM_C45 IS=8ZPM_O50 error when checking the update rules"
I'm not sure how to proceed?
Could someone help on this?
Thanks!

Hi dear,
if you have to fill your fiscal year/period (0FISCPER) starting from a calendar year/month you have to write a routine for it !!!
Insert this code:
(where you have to replace calmonth in comm_structure-calmonth with the name of your calmonth field, and if your calmonth has a format with seven digit, like MMMYYYY)
CALL FUNCTION 'UMC_CALMONTH_TO_FISCPER'
EXPORTING
I_PERIV = comm_structure-fiscvarnt
I_CALYEAR = comm_structure-calmonth+3(4)
I_CALMONTH = comm_structure-calmonth+1(2)
IMPORTING
E_FISCPER = result .
Hope now is clear !
Bye,
Roberto

Similar Messages

  • Update routine - Performance Tuning

    Hi,
    To increase the performance, I have deleted some records in the data_package but these changes are not reflecting in the ALV output. We are getting old data only.
    If we toutch the standard ALV program it is a problem for other update routinies. Please tell me the solution.
    Thanks,
    Suresh Kashimalla

    Please be more specific, and elaborate on your issue. What are you referring to with ALV (ABAP List Viewer?). In which respect? Are you on SAP NetWeaver 2004s?
      Cheers
        SAP NetWeaver BI Organisation

  • Which is better transfer routine or update routine???

    HI ALL,
    I have read some documents, but I didnt get the real concept.
    Can any one explain in detail as to how do we decide where to write the code i.e a start routine or transfer routine or update routine...and which one is better  for a given scenario..
    with example?

    My scenario is like this:
    master data InfoObject for e.g. Z_MATERIAL1 with 10 fields as attributes. It has two Source Systems feeding it; SAP and a flat file from a system called Product Catalog (PCAT).
    The PCAT data is generally more reliable, hence, if a material XYZ comes from PCAT then PCAT is the owner of the material. SAP should not be able to update five critical fields of that material if PCAT owns the material.
    For e.g. the below values comes from PCAT and Master data is updated.
    PCAT
    Material Group Type Price Curr Unit Prod Desc. Lang Class
    XYZ      ABC   BRU  10.00 USD  PC  Inh   To    EN   001
    When the data comes from SAP R/3, it should not update anything other than the last 4 fields.
    SAP
    Material Group Type Price Curr Unit Prod Desc. Lang Class
    XYZ      ABC    BRU 20.00 USD  BOX  In   The    DE   003
    Finally the data in the Master Data Object should be as below.
    Material Group Type Price Curr Unit Prod Desc. Lang Class
    XYZ      ABC   BRU 10.00  USD  PC  In    The    DE   003
    where do i write the code...i have written this in start routine of transfer rules...i want to know the performance issues...

  • Diff between Start ,transfer,update routines

    hi
    Plz tell me what is the difference between Start routine,transfer routine and update routine. Send me some real time examples.I would be very glad.
    Regards
    Ajay

    Hi!
    it is simple all of them are small program used in ETL process while loading in to BW.
        <b>Start routine:-</b> is used in Transfer rules and update rules, this abap code is  executed before starting the load and used in scenarios where we want to perform some operations on all the data example deleting some records before processing records in Update rules or transfer rules.
    <b>Update routine:-</b> abap code used in update rules to transform or finding some field. ex:- may be you want to retrieve the field data from some data base tables based on the other data present in the infosource
    <b>Transfer Routine:-</b> similar to the update routine but used in transfer rules.
    with regards
    ashwin
    <i>PS n: Assigning point to the helpful answers is the way of saying thanks in SDN.  you can assign points by clicking on the appropriate radio button displayed next to the answers for your question. yellow for 2, green for 6 points(2)and blue for 10 points and to close the question and marked as problem solved. closing the threads which has a solution will help the members to deal with open issues with out wasting time on problems which has a solution and also to the people who encounter the same porblem in future. This is just to give you information as you are a new user.</i>

  • Urgent help required to write the code in  update routine

    Hi all,
    i want to calculate open purchase order qty in update routine
    formula is
    open purchase order qty = scl qty - rec qty
    where schd line date is less then or equal to 90 days from the current date.
    I have written one code : but its giving error that comm_structure is not defined in abap dictionary,can any body help to write appropriate routine. this calculation i am making for MM, and data source and cube are 2lis_02_scl and cube is zc_pur01 ( made by coping the 0pur_c01), data source scl has all fields required in the foumula...here is my code
    DATA:  COMM_STRUCTURE LIKE  /BIC/CS2LIS_02_SCL.
    DATA: SCL_QTY LIKE COMM_STRUCTURE-/BIC/ZK_SCLQTY.
    DATA:      GR_QTY LIKE COMM_STRUCTURE -/BIC/ZK_GRQTY.
    DATA: SCL_DATE.
    SCL_DATE = SY-DATUM + 90.
    SELECT COMM_STRUCTURE -/BIC/ ZK_SCLQTY COMM_STRUCTURE -/BIC/ ZK_GRQTY FROM
    /BIC/CS2LIS_02_SCL INTO   SCL_QTY     GR_QTY  
    WHERE
    COMM_STRUCTURE -/0SCHED_DATE LE SCL_DATE.
    IF SYSUBRC  = 0
    RESULT = SCL_QTY - GR_QTY.
    ELSE = NOVALUE.
    ENDIF.
    Can any body help me soon its very urgent.
    thanks

    Hi Anupam,
    I am not a very good ABAP Programmer, but found some things to notify u inyour code..
    DATA: COMM_STRUCTURE LIKE /BIC/CS2LIS_02_SCL,
          SCL_QTY LIKE COMM_STRUCTURE-/BIC/ZK_SCLQTY,
          GR_QTY LIKE COMM_STRUCTURE -/BIC/ZK_GRQTY.
    DATA  SCL_DATE LIKE SY-DATUM.
    SCL_DATE = SY-DATUM + 90.
    SELECT COMM_STRUCTURE -/BIC/ ZK_SCLQTY COMM_STRUCTURE -/BIC/ ZK_GRQTY FROM
    /BIC/CS2LIS_02_SCL INTO SCL_QTY GR_QTY
    WHERE
    COMM_STRUCTURE -/0SCHED_DATE LE SCL_DATE.
    IF SYSUBRC = 0
    RESULT = SCL_QTY - GR_QTY.
    ELSE.
    What should be the return value if you dont have to    calculate the result."
    ENDIF.
    try it.. and see..
    regards,
    kishore.

  • Update Routine & Start Routine in BI 7.0

    Hi Experts,
    We have recently upgraded from BI 7.0 , I am confused about where to write start routine & update routine in transformations of BI 7.0?
    Please mention any pointers?
    Thanks.
    Sharat.

    Hi
    When you open the start routine you will see a routines info which gives you help on this.
    A summary would be:
    Update routine in transformation.
    RESULT = source_field-material.
    Basically you can acess the value of the record by using source_field.
    Start routine.
    The data comes in the form of an internal table with name SOURCE_PACKAGE.
    You can access the values by looping into a work area.
    LOOP AT SOURCE_PACKAGE assigning <source_fields>.
    ENDLOOP.
    End routine(This is a new feature in BI 7.0 where you can modify data when transformations are complete and before data is updated to info-providers)
    The data comes in the form of an internal table with name RESULT_PACKAGE.
    You can access the values by looping into a work area.
    LOOP AT RESULT_PACKAGE assigning <result_fields>.
    ENDLOOP.
    Hope this helps you to understand the basics of the abap used in the transformations .
    Regards
    Samarpita

  • Update Routine to populate 0VENDOR from either of the 2 data source fields

    Hi,
    I have a requirement to write an update routine for 0VENDOR based on the below logic :
    Create routines to populated BW Info Object u201CVendoru201D (0VENDOR) based on the following logic:
    IF field u201CVendoru201D (ITM_VENDOR_ID) is populated from data source 0BBP_SC_TD_1, THEN populate 0VENDOR with that value
    ELSE IF u201CPreferred Vendoru201D (ITM_PROPVEN_ID) is populated from data source 0BBP_SC_TD_1, THEN populate 0VENDOR with that value
    ELSE IF neither u201CVendoru201D (ITM_VENDOR_ID) or u201CPreferred Vendoru201D (ITM_PROPVEN_ID) are populated from data source 0BBP_SC_TD_1, then 0VENDOR = NULL
    Can anyone help me in converting this logic into ABAP routine.
    Thanks,
    Suchitra

    Hi Suchitra,
    In the Transfer Rules ... You will be mapping each field then the mapping field click on the button with Triangle then you can see the which type you want.
    Then select the routine and select the datasource fields (don't forget to select the both fields VENDOR and PROPITM)...
    Then give a name to routine ...
    and in the code just change the COMM_STRUCTURE to TRANSFER_STRUCTURE.
    Then you can get this .... done..
    Regards,
    Ravi Kanth

  • Update routine to populate value for field ZDOCCATG(Document category)

    Hi Experts,
       I need to populate  data for field ZDOCCATG(Document Category) based on the value of the below  two fields,
    1. 0deb_cre_lc(Debit / credit Amount)
    2. 0ac_doc_typ(Belegart)
    The logic is as follows:
    if 0deb_cre_lc > '0'.
         if 0ac_doc_typ == 'dz'.
          ZDOCCATG = Disputes.
         else
      ZDOCCATG = Invoices.
       end If.
    else
    if 0ac_doc_typ < '0'.
    ZDOCCATG = Credits.
    end if.
    I need to write the update routine to get the values assigned for Document category based on these two fields. When i open the routine for the field ZDOCCATG, i can see the below screen:
    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_data_field
      TABLES   MONITOR STRUCTURE RSMONITOR "user defined monitoring
      USING    COMM_STRUCTURE LIKE /BIC/CS80FIAR_O03 - (Communication structure)
               RECORD_NO LIKE SY-TABIX
               RECORD_ALL LIKE SY-TABIX
               SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
      CHANGING RESULT LIKE /BIC/AZOARFSCM00-/BIC/ZDOCCATG
               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
      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.
    Please let me know the code to be inserted (based on the logic mentioned above) in the above screen . Thanks
    Regards,
    Kavitha Jagannath

    Hi Kavitha,
          Supposing the technical name of fields is /bic/0deb_cre_lc and /bic/0ac_doc_typ use the code below at the marked position.
    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_data_field
    TABLES MONITOR STRUCTURE RSMONITOR "user defined monitoring
    USING COMM_STRUCTURE LIKE /BIC/CS80FIAR_O03 - (Communication structure)
    RECORD_NO LIKE SY-TABIX
    RECORD_ALL LIKE SY-TABIX
    SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
    CHANGING RESULT LIKE /BIC/AZOARFSCM00-/BIC/ZDOCCATG
    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                 
    <----- Paste the code below as shown here --->
    if comm_structure-/bic/0deb_cre_lc > 0.
      if comm_structure-/bic/0ac_doc_typ == 'DZ'.
       result = 'DISPUTES'.
      else
       result = 'INVOICES'.
      endIf.
    elseif comm_structure-/bic/0deb_cre_lc < 0.
      result = 'CREDITS'.
    end if.
    <----
    >
    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.
    Regards:
    Jitendra
    Edited by: Jitendra Gupta on Oct 15, 2009 3:05 PM

  • New field to be filled by update routine

    Deltas are running, and added a new char to the cube and written update routine to fill the new char. How should i fill this new value for history. I don't want to reshedule the job from r/3. Will i be able to do from reconstruction (i doubt since our PSA Data is deleted every week). there is no ods between. What are options available.
    Kunal

    Hi Kunal,
       If data is available in BW then you can write some coding(routine) to fill the data for history data you have to loop back(CUBE to CUBE) to CUBE.
    Have a look:
    https://www.sdn.sap.com/irj/servlet/prt/portal/prtroot/docs/library/uuid/f421c86c-0801-0010-e88c-a07ccdc69601
       Provide some more details. Which character, is available as attribute of any object...etc..
    Hope it Helps
    Srini

  • Update routine for 0proc_unit conversion

    Hi all,
    My infoobject 0OPR_ACTWRK uses 0PROC_UNIT for units. It holds data in days and in hours. When I load it to a cube, I want to convert all values to working hours.
    I figured out that I have to use an update routine in my update rules. A lot of forum threads about unit conversion mention the function module UNIT_CONVERSION_SIMPLE. Can I use this function for my problem? Or should I use a different function module?
    This will be my first ABAP code, so can anyone help me and tell me what I have to fill in exactle in the routine format below?
    $$ begin of routine - insert your code only below this line        -
    fill the internal table "MONITOR", to make monitor entries
    result value of the routine
      RESULT = .
    result value of the unit
      UNIT = .
    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         -
    Thanks in advance!
    Regards, Pieter

    Dear Pieter,
    I am not infront of the system..
    the following surely will give error.. :).. so post back here.. so that me or someone else will reply you..
    So let us start witht he following coding in the 'Start routine'.
    LOOP AT DATA_PACKAGE.
    IF DATA_PACKAGE-UNIT= 'DAY'.
       DATA_PACKAGE-opr_pldwrk = DATA_PACKAGE-opr_pldwrk * 8.
    ELSE.
    Do nothing.
    ENDIF.
    MODIFY DATA_PACKAGE.
    ENDLOOP.
    Regards,
    Hari
    Message was edited by: Hari Kiran Y
    Message was edited by: Hari Kiran Y

  • Update Routine ABAP question

    Hi,
    I am updating data between two ODS objects using some update routines. I would like to write the following routine (in pseudo code):
    ++++++++++++++++++++++++++++++++++++++++++++++++++++
    Check if the characteristic i am updating is not null
    IF COMM_STRUCTURE-field1 = 'value1'     AND
             COMM_STRUCTURE-field2 = 'value2'.
    RESULT COMM_STRUCTURE-field3.
    ELSE.
    Don't update anything
    END IF
    +++++++++++++++++++++++++++++++++++++++++++++++++++
    My questions:
    1. How i tell the routine not to update anything (as specified in the pseudo code)?
    2. How i can check that the characteristic i woul like to update is not null?
    3. What is the preferred debug method in case i do not use the PSA?
    BR,
    Xibi

    Thanks Siggi for your prompt and helpful answer. There are however some fundamental things which are not fully clear to me (BTW, where i can find some good documentation on ABAP for BW??):
    > Hi,
    >
    > 1. How i tell the routine not to update anything (as
    > specified in the pseudo code)?
    >
    > set the returncode to a value <> 0.
    I wrote the following:
    returncode = 1.
    Consequently the updated failed. Maybe i am doing something wrong but my intention is not to have the whole thing fail, but rather skip the update for some records.
    > 2. How i can check that the characteristic i woul
    > like to update is not null?
    >
    > if not comm_structure-<fieldname> is initial.
    The problem is that the characteristic i am trying to update is not contained in the source ODS but only in the target one. Will "if not comm_structure-<fieldname> is initial" still work in this case?
    >
    > 3. What is the preferred debug method in case i do
    > not use the PSA?
    >
    > Without psa, you need to add a endless loop:
    > statics: st_flag type c value '0'.
    >
    > while st_flag = '0'.
    > break-point.
    > endwhile.
    >
    >
    > Hope this helps!
    >
    > regards
    >
    > Siggi

  • Update routine infinite loop

    Hello Experts,
    For loading ODS2 we are making a lookup on ODS1 for 0material based on
    purchaing document number, item line item.
    Is there any mistake in the start routine or update routine.
    Because the load goes in infinite loop. I think update routine should be changed.
    Any suggestions are appreciated
    Start routine:
    data: begin of itab occurs 0,
            pur_doc like /BIC/AZODS100-OI_EBELN,
            item like /BIC/AZODS100-OI_EBELP,
            material like /BIC/AZODS100-material,
          end of itab.
    clear itab.
    select OI_EBELN OI_EBELP MAT_PLANT from /BIC/AZODS100
             into table itab.
    Update routine for 0material
    loop at itab where pur_doc = COMM_STRUCTURE-OI_EBELN
                       and item = COMM_STRUCTURE-OI_EBELP.
           RESULT = itab-matplant.
    endloop.

    Hi,
    this takes a long time, because with each record of your data packaged it is doing the loop and scanning each row of the internal table. Use the following instead.
    Start routine:
    types: begin of t_itab,
    pur_doc like /BIC/AZODS100-OI_EBELN,
    item like /BIC/AZODS100-OI_EBELP,
    material like /BIC/AZODS100-material,
    end of t_itab.
    data: itab type hashed table of t_itab with unique key pur_doc item.
    select OI_EBELN OI_EBELP MAT_PLANT from /BIC/AZODS100
    into table itab order by oi_ebeln oi_ebelp mat_plant.
    I hope these fields are the key of the ods object.
    Update routine for 0material
    data: wa_itab type t_itab.
    read table itab into wa_itab with table key pur_doc = COMM_STRUCTURE-OI_EBELN
    item = COMM_STRUCTURE-OI_EBELP.
    if sy-subrc = 0.
    RESULT = wa_itab-matplant.
    else.
    clear result.
    endif.
    Hope this helps
    regards
    Siggi

  • Update Routine - ABAP code

    Hi,
    I am trying to write an update routine to calculate and populate fields in my ODS infoprovider.
    one of the key figure field in my update rules is 'No. of Days'. Based on the 'No. of Days' range, I want to send a key figure(Infoobject:Due amount) value to another infoobject(Bucket1, Bucket2, Bucket3 ect.)in my ODS infoprovider. For example, let's say,
    IF NO. OF DAYS = >0 AND <=30
       THEN TAKE THE DUE AMOUNT PUT IN BUCKET1
    ENDIF.
    ELSE IF
       NO. OF DAYS = >31 AND <=60
       THEN TAKE THE DUE AMOUNT PUT IN BUCKET2
    ENDIF.
    ELSE IF
       NO. OF DAYS = >61 AND <=90
       THEN TAKE THE DUE AMOUNT PUT IN BUCKET3
    ENDIF.
    I think, I know the data flow logic but I don't know how to code in ABAP language. If someone can give me some psuedo like ABAP code, I would appreciate your help with points.

    Hi Roa,
    I would do this in the start routine of the update rule.
    Here is a sample on how do this. You could use a case statement for this code also.
    Loop at Data_Packet.
    IF NO. OF DAYS = >0 AND <=30
    Data_Packet-BUCKET1 = DUE AMOUNT
    ELSEIF
    NO. OF DAYS = >31 AND <=60
    Data_Packet-BUCKET2 = DUE AMOUNT
    ENDIF.
    ELSEIF
    NO. OF DAYS = >61 AND <=90
    Data_Packet-BUCKET3 = DUE AMOUNT
    ENDIF.
    modify data_packet.
    endlloop.
    Cheers! Bill

  • IPad mini now terrible to use, apple support no help because warranty is up.  All cause by new ios8 update, wifi issues, many apps no longer work, apps that do work now crash regularly and sometimes take several instances and reboots to even open.

    IPad mini now terrible to use, apple support no help because warranty is up.  All cause by new ios8 update, wifi issues, many apps no longer work, apps that do work now crash regularly and sometimes take several instances and reboots to even open.

    need help uninstalling ios8 and going back to 7 where things worked please.

  • FSCM via WS-RM (without PI ) - Update termination issue

    Hello experts .
    We are trying to integrate SD with FSCM ( credit management) using WS-RM (without PI).
    Details of the issue and steps followed so far.
    Ideal Scenario :
    Once we create / change a sales order ( in SD ) , the interface Creditworthinessquery_out (WS Consumer ) gets triggered (in SD) and the subsequent response CREDITWORTHINESSQUERY_IN(Provider) is triggered from FSCM (with the details of creditworthiness).Once the query response in received an notification is triggered from SD to FSCM (asynchronous service).
    After receiving the query response the functionality of credit check happens while creating / changing the sales order .
    Configuration steps followed in SOAMANAGER
    We have created end points for all the relevant service interfaces (Providers) , and also created logical ports for the respective consumers.
    During the creation of logical ports - for the consumers we used the WSDL (of the providers) as the inbound message action.
    (This has been done to all the services query , notification that are relevant in our integration).
    Current behavior / issue .
    While creating sales order the sales order is not getting saved (getting updated in the database).System allows us to complete the sales order creation process and also we get a message as sales order saved successfully. But then there is a update terminated express document that pops up. Sales order is not getting updated in the database.
    When I see the logs/traces in SOAMANAGER I see that the query out is successful , query in has the right response (in warning state though) . But no notification is being triggered ?? 
    How to overcome this update termination issue ?
    When we see the SM13 log , it points to SLD issue (LCR 010: Internal error in SLD API). why do we need a SLD without PI

    Hi  ,
    Finally we are able to solve the update termination issue . But again we are using a work around .
    Situation :
    Once we executed the VA01 transaction we were getting update termination issue . After lots of debuggung we found that system was trying to get the Business system details ( Own business system data ) . The table lcrt_clntcache had no values.
    Solution
    We inserted appropriate values in the Table LCRT_CLNTCACH (business system data ) and now it works .This is a work around we got as of now.Credit checks are happening successfully and also integration is good .
    (typically if we define business system in SLD (PI) , and run SLD_CHECK , this table gets populated , but in our case we are not using PI instead we are using WS-RM)
    But now few questions arise .
    a) Why do we need a business system in case we are not using PI ( typically we define business system and technical system in PI )  and instead using WS-RM ?
    b) Is it a good practice to update the table ( as did in workaround above )?
    c) Is this any bug and needs to be consulted with SAP ?
    Please let me know your views .
    Edited by: Vedula Adeep on Jan 16, 2012 8:42 AM

Maybe you are looking for

  • How do I pair an iphone 4 with sony wireless speaker?

    How do I pair an iPhone 4, iOS 7.1.2, with a bluetooth device.  The phone will not pair with a Sony wireless speaker nor a basis peak fitness tracker. I have reset the network, turned the phone off and on and still no bluetooth connection.  The bluet

  • In elements 5.0 How do I get the icons back onto the organizer photos?

    While taking photos from the organizer to the collections, the icons disappeared from the organizer photos but the pictures all went into the collections...So I can no longer tell which pics in the organizer have already been put into collections...I

  • [soleved]Can't figure out why iptables rules aren't enforced

    My iptables rules are not enforced.  I recently reinstalled, and I'm re-using the same /etc/iptables/iptables.rules.  They used to work, I tested them, but they don't seem to work anymore. Here are the contents of my /etc/iptables/iptables.rules: # G

  • Air 2 Native App/Sidecar Installation Error

    We have a Flex 3.5/Air 2 application that uses native processes. I exported my release build to MyApp.air and used ADT to create MyApp.exe. As a test, I am calling the following function when I click some text on the main UI to be sure I am able to u

  • Help to create RHINTE10 backgroundjob

    Dear SDN'ers I could need some help to setup a backgroundjob. I know how to work sm36, but I am unsure how to apply variables - or rather - create variables with the info RHINTE10 needs. I have a collegue who runs RHINTE10 and RHINTE30 on a weekly ba