BAPI_OBJCL_CHANGE to change characteristic

Hello All,
I am writing a program to collect materials for a specified criteria and for those materials change the characteristic values for a class.  I would like to change the characteristic for the class using the following code. but this is not setting the characteristic BATCH_DELETION_INDICATOR.
On the contrary when you check the box Batch Deletion Indicator in the BasicData1 tab. Characteristic is automatically getting changed to YES. My requirement is not to check Batch deletion indicator in BasicData1 tab(MCHA-LVORM = X) rather directly change the characteristic value.
Any suggestions on this one please...
  it_werks-werks = p_werks.
  APPEND it_werks.
  CALL FUNCTION 'VB_BATCH_DEFINITION'
       IMPORTING
            kzdch = g_kzdch
            klart = g_klart
            obtab = g_obtab 
       TABLES
            werke = it_werks.
To get the object key.
  wa_objecttab-key_field = 'MATNR'.
  wa_objecttab-value_int = it_mchb-matnr.
  APPEND wa_objecttab TO i_objecttab.
  wa_objecttab-key_field = 'CHARG'.
  wa_objecttab-value_int = it_mchb-charg.
  APPEND wa_objecttab TO i_objecttab.
  CALL FUNCTION 'BAPI_OBJCL_CONCATENATEKEY'
       EXPORTING
            objecttable    = g_obtab
       IMPORTING
            objectkey_conc = v_object
       TABLES
            objectkeytable = i_objecttab
            return         = i_bapiret2.
Read Characteristics details
******v_object  is 0000000000084977041 where 1 is the batch, also tried with material, batch and plant ******combination.
  CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
    EXPORTING
      objectkey              = v_object           " 0000000000084977041
      objecttable            = g_obtab            " MCH1
      classnum               = g_class          " FG_BATCH_CLASS
      classtype              = g_klart            " 023
  KEYDATE                = SY-DATUM
     unvaluated_chars       = 'X'
      unvaluated_chars       = ''
  LANGUAGE               = SY-LANGU
IMPORTING
  STATUS                 =
  STANDARDCLASS          =
    TABLES
      allocvaluesnum         = i_charnum
      allocvalueschar        = i_charchar
      allocvaluescurr        = i_charcurr
      return                 = i_bapiret2
  READ TABLE i_charchar INTO wa_charchar WITH KEY
    charact = 'BATCH_DELETION_INDICATOR'.
  IF sy-subrc EQ 0.
   wa_charchar-value_char = 'X'.
    wa_charchar-value_char = 'Yes'.
    MODIFY i_charchar FROM  wa_charchar INDEX sy-tabix.
  ENDIF.
  DELETE i_charnum WHERE value_from IS initial..
  REFRESH i_charcurr.
  REFRESH i_bapiret2.
Change batch characteristics
  CALL FUNCTION 'BAPI_OBJCL_CHANGE'
    EXPORTING
      objectkey                = v_object
      objecttable              = g_obtab
      classnum                 = g_class
      classtype                = g_klart
  STATUS                   = '1'
  STANDARDCLASS            =
  CHANGENUMBER             =
  KEYDATE                  = SY-DATUM
  NO_DEFAULT_VALUES        = ' '
IMPORTING
  CLASSIF_STATUS           =
    TABLES
      allocvaluesnumnew        = i_charnum
      allocvaluescharnew       = i_charchar
      allocvaluescurrnew       = i_charcurr
      return                   = i_bapiret2
  CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
       EXPORTING
            wait   = 'X'
       EXCEPTIONS
            OTHERS = 0.

Any suggestions pls..

Similar Messages

  • Hi. i used Function module to change Characteristic values of a sales order

    hi. i used Function module to change Characteristic values of a sales order..
    but sales order's Characteristic values didn't change.
    And the Function module doesn't occur any log message.
    please tell me wrong code, and how to solve this problem.
    if i have wrong method, what data can i pass to change the characteristic values
    DATA: LT_E1CUVAL    TYPE TABLE OF E1CUVAL.
      DATA: WA_E1CUVAL    TYPE E1CUVAL.
      DATA: LS_CFG_HEAD   LIKE CUXT_CUCFG_S,
            LS_INSTANCES  LIKE CUXT_CUINS_S,
            LS_VALUES     LIKE CUXT_CUVAL_S,
            LS_E1CUCFG    LIKE E1CUCFG,
            LS_E1CUINS    LIKE E1CUINS,
            LS_E1CUVAL    LIKE E1CUVAL,
            LS_PROFILE    LIKE E1CUCOM,
            LS_VBAP       LIKE VBAP,
            L_CUOBJ       LIKE INOB-CUOBJ,
            L_ATINN       LIKE CABN-ATINN.
      DATA: LT_INSTANCES  LIKE CUXT_CUINS_S OCCURS 0,
            LT_PART_OF    LIKE CUXT_CUPRT_S OCCURS 0,
            LT_VALUES     LIKE CUXT_CUVAL_S OCCURS 0,
            LT_VAR_KEYS   LIKE CUXT_CUVK_S  OCCURS 0,
            LT_KSML       LIKE KSML         OCCURS 0 WITH HEADER LINE,
            BEGIN OF LT_CLINT OCCURS 0,
              CLINT  LIKE KSSK-CLINT,
            END OF LT_CLINT.
      DATA: LT_CUIB       LIKE CUIB_CUOBJ_S OCCURS 0 WITH HEADER LINE.
      DATA: E_ROOT_INSTANCE           TYPE     CUXT_INSTANCE_NO.
      DATA: EV_ROOT_PERSIST_ID     TYPE     IBEXTINST_DATA-EXT_INST_ID.
      DATA: EV_CFG_HAS_CHANGED     TYPE     XFELD.
      DATA: EV_HANDLE_APPL_LOG     TYPE     BALLOGHNDL.
      DATA: L_CUOBJ_NEW           TYPE CUOBJ.
      DATA: L_OWNER               TYPE IBXX_BUSINESS_OBJECT.
      REFRESH LT_E1CUVAL.
      CLEAR LS_VBAP.
      SELECT SINGLE CUOBJ INTO CORRESPONDING FIELDS OF LS_VBAP
                                FROM VBAP WHERE VBELN = I_VBELN
                                            AND POSNR = I_POSNR.
      IF SY-SUBRC <> 0.
        RAISE INSTANCE_NOT_FOUND.
      ENDIF.
      REFRESH LT_CUIB. CLEAR LT_CUIB.
      LT_CUIB-INSTANCE = LS_VBAP-CUOBJ.
      APPEND LT_CUIB.
      CALL FUNCTION 'CUCB_INITIALIZER'
        EXPORTING
          IT_INSTANCES = LT_CUIB[].
      CALL FUNCTION 'CUXI_GET_SINGLE_CONFIGURATION'
        EXPORTING
          I_ROOT_INSTANCE              = LS_VBAP-CUOBJ
        IMPORTING
          E_CFG_HEAD                   = LS_CFG_HEAD
          ES_PROFILE                   = LS_PROFILE
          ET_RETURN                    = ET_RETURN
        TABLES
          E_TAB_INSTANCES              = LT_INSTANCES
          E_TAB_PART_OF                = LT_PART_OF
          E_TAB_VALUES                 = LT_VALUES
          E_TAB_VAR_KEYS               = LT_VAR_KEYS
        EXCEPTIONS
          INVALID_INSTANCE             = 1
          NO_ROOT_INSTANCE             = 2
          INSTANCE_IS_A_CLASSIFICATION = 3
          INTERNAL_ERROR               = 4
          NO_PROFILE_FOUND             = 5
          INVALID_DATA                 = 6
          OTHERS                       = 7.
      IF SY-SUBRC <> 0.
        CASE SY-SUBRC.
          WHEN 1.
            RAISE INSTANCE_NOT_FOUND.
          WHEN 3.
            RAISE INSTANCE_IS_A_CLASSIFICATION.
          WHEN OTHERS.
            RAISE INVALID_DATA.
        ENDCASE.
      ELSE.
        LOOP AT LT_VALUES INTO LS_VALUES.
          IF    LS_VALUES-CHARC = 'SAP_MILLCA_PACKAGING'
             OR LS_VALUES-CHARC = 'PD_CA_PACKING_DM'.
            LS_VALUES-VALUE = '7100010'. "This is test data
            MODIFY LT_VALUES FROM LS_VALUES.
          ELSE.
            DELETE LT_VALUES WHERE CHARC = LS_VALUES-CHARC.
          ENDIF.
          CLEAR LS_VALUES.
        ENDLOOP.
      ENDIF.
    &#50689;&#50629;&#51221;&#48372; &#53945;&#49457; &#48320;&#44221;
      CALL FUNCTION 'CUXI_SET_SINGLE_CONFIGURATION'
        EXPORTING
          I_CFG_HEADER                        = LS_CFG_HEAD
          I_ROOT_INSTANCE                     = LS_VBAP-CUOBJ
        I_PLANT                             =
        I_STRUCTURE_EXPLOSION_DATE          =
        I_STRUCTURE_EXPLOSION_APPL_ID       =
        I_LOGSYS                            =
          IS_PROFILE                          = LS_PROFILE
        IV_ONLY_SINGLE_LEVEL                =
        IV_HANDLE_APPL_LOG                  =
        IV_OBJECT_APPL_LOG                  = 'CIF'
        IV_SUBOBJECT_APPL_LOG               = 'T_CNFG'
        IMPORTING
          E_ROOT_INSTANCE                     = E_ROOT_INSTANCE
          EV_ROOT_PERSIST_ID                  = EV_ROOT_PERSIST_ID
          EV_CFG_HAS_CHANGED                  = EV_CFG_HAS_CHANGED
          EV_HANDLE_APPL_LOG                  = EV_HANDLE_APPL_LOG
          ET_RETURN                           = ET_RETURN
        TABLES
          I_TAB_INSTANCES                     = LT_INSTANCES
          I_TAB_PART_OF                       = LT_PART_OF
          I_TAB_VALUES                        = LT_VALUES
          I_TAB_VAR_KEYS                      = LT_VAR_KEYS
        I_TAB_BLOB                          =
        EXCEPTIONS
          NO_CONFIGURATION_DATA               = 1
          NO_ROOT_INSTANCE                    = 2
          INVALID_INSTANCE                    = 3
          INSTANCE_IS_A_CLASSIFICATION        = 4
          INTERNAL_ERROR                      = 5
          NO_PROFILE_FOUND                    = 6
          INVALID_DATA                        = 7
          OTHERS                              = 8
      IF SY-SUBRC <> 0.
        CASE SY-SUBRC.
          WHEN 1.
            RAISE NO_CONFIGURATION_DATA.
          WHEN 3.
            RAISE NO_ROOT_INSTANCE.
          WHEN 3.
            RAISE INVALID_INSTANCE .
          WHEN 3.
            RAISE INSTANCE_IS_A_CLASSIFICATION.
          WHEN 3.
            RAISE INTERNAL_ERROR.
          WHEN OTHERS.
            RAISE INVALID_DATA.
        ENDCASE.
      ENDIF.
      COMMIT WORK.
    save configuration with next commit
      CLEAR: LS_INSTANCES.
      READ TABLE LT_INSTANCES INTO LS_INSTANCES INDEX 1.
    L_OWNER-OBJECT_TYPE = LS_INSTANCES-OBJ_TYPE.
      L_OWNER-OBJECT_TYPE = 'PVS_POSVAR'.
      L_OWNER-OBJECT_KEY  = LS_INSTANCES-OBJ_KEY.
      CALL FUNCTION 'CUCB_CONFIGURATION_TO_DB'
        EXPORTING
          ROOT_INSTANCE         = LS_VBAP-CUOBJ
          ROOT_OBJECT           = L_OWNER
        IMPORTING
          NEW_INSTANCE          = L_CUOBJ_NEW
        EXCEPTIONS
          INVALID_INSTANCE      = 1
          INVALID_ROOT_INSTANCE = 2
          NO_CHANGES            = 3
          OTHERS                = 4.
      IF SY-SUBRC > 1 AND SY-SUBRC <> 3.
        CLEAR LS_VBAP-CUOBJ.
        RAISE INTERNAL_ERROR.
      ELSEIF SY-SUBRC = 1.
        LS_VBAP-CUOBJ = L_CUOBJ_NEW.
      ENDIF.
    What's wrong?
    help me to solve this problem.
    Thanks a lot.

    <b>SD_SALES_DOCUMENT_READ</b> Reads sales document header and business data: tables VBAK, VBKD and VBPA (Sold-to (AG), Payer (RG) and Ship-to (WE) parties)
    <b>SD_SALES_DOCUMENT_READ_POS</b> Reads sales document header and item material: tables VBAK, VBAP-MATNR
    <b>SD_DOCUMENT_PARTNER_READ</b> partner information including address. Calls SD_PARTNER_READ
    <b>SD_PARTNER_READ</b> all the partners information and addresses
    <b>SD_DETERMINE_CONTRACT_TYPE</b>
    In: at least VBAK-VBELN
    Exceptions: NO CONTRACT | SERVICE_CONTRACT | QUANTITY_CONTRACT
    <b>SD_SALES_DOCUMENT_COPY</b>
    <b>RV_ORDER_FLOW_INFORMATION</b> Reads sales document flow of sales document after delivery and billing
    SD_SALES_DOCUMENT_SAVE create Sales Doc from the copied document
    SD_SALES_DOCUMENT_ENQUEUE to dequeue use DEQUEUE_EVVBAKE
    RV_DELIVERY_PRINT_VIEW Data provision for delivery note printing
    SD_PACKING_PRINT_VIEW
    SD_DELIVERY_VIEW Data collection for printing
    called from RV_DELIVERY_PRINT_VIEW, SD_PACKING_PRINT_VIEW
    RV_BILLING_PRINT_VIEW Data Provision for Billing Document Print
    regards
    vinod

  • Change Characteristic values in Material class Classification

    Hi,
    Is there any standard program to change Characteristic vaules in Material Classification?
    Thanks,
    Shiva

    Thanks for your help.
    Points will be awarded.
    Shiva

  • CT04 - Change characteristic

    I understand the  values with release strategy do not get transported through transport request and we need to update them with T-code CL20N.
    Does the same rule applies to CT04 - Change characteristic when we need to maintain new values ?

    It is always better to make the changes in Development client and ALE the characteristics and Class through BD91 and BD92, in this way you can make sure that there is no inconsistency in the values in different clients.
    If the characteristics values are already assigned to some objects, you wont be able to delete or make changes to those values..you have to delete the assignments first and then change the values in CT04.

  • Changing characteristic will it affect cube

    Dear BW Gurus,
         I have a requirement to change characteristic which is been used in many cubes. I need to change the characteristicu2019s one of the attribute as a compounding attribute.Here my question is u2013 if I change the characteristic will it affects all other cubes  and update ruels. Please advice me in this case.
    Regards,
    Ram

    Hi
    No. you will create a Remodelling RULE wherein you will add the new characteristic and the compounding attribute to your cube and specify the mapping.THen you will schedule this rule to bring the data for the newly added infoobjects.
    Chk this weblog which clearly explains remodelling.
    /people/mallikarjuna.reddy7/blog/2007/02/06/remodeling-in-nw-bi-2004s

  • BI-IP change characteristic value in FOX

    Hello Guys,
    i want to change the characteristic value in FOX.
    Therefore the FOX runs through all char combinations to identify the highest
    number for the char test.
    This step works fine, but i cant write the value for maxloop in the cube.
    If i try, only the old row is deleted, but i dont get a new row with the calculated value for maxloop.
    the code looks like this:
    DATA LOOP TYPE test.
    DATA MINLOOP TYPE test.
    DATA MAXLOOP TYPE test.
    MINLOOP = 00000.
    MAXLOOP = 00000.
    FOREACH LOOP.
    MINLOOP = LOOP.
    IF MINLOOP > MAXLOOP.
    MAXLOOP = MINLOOP.
    ENDIF.
    ENDFOR.
    MAXLOOP = MAXLOOP + 00001.
    {Amount, EUR, #, #, 00200, 00000000, #, 2007, #, #, #, #, #, #, #} =
    {Amount, EUR, #, #, maxloop, 00000000, #, 2007, #, #, #, #, #, #, #}.
    Any suggestions what is wrong here?
    Regards
    T. Mekler

    Hi,
    You have written
    {Amount, EUR, #, #, 00200, 00000000, #, 2007, #, #, #, #, #, #, #} =
    {Amount, EUR, #, #, maxloop, 00000000, #, 2007, #, #, #, #, #, #, #}.
    But as per the statement  MAXLOOP = MAXLOOP + 00001 the MAXLOOP conatins a new figure. Obviously there will not be any record in the cube for this value of MAXLOOP.
    You are assigning this to the record with MAXLOOP = 00200, so system is assigning zero to  0AMOUNT for the record that is having MAXLOOP=00200 value.
    Make the below corrections and test again:
    DATA NEWLOOP type test.
    NEWLOOP = MAXLOOP + 00001.
    {Amount, EUR, #, #, NEWLOOP, 00000000, #, 2007, #, #, #, #, #, #, #} =
    {Amount, EUR, #, #, MAXLOOP, 00000000, #, 2007, #, #, #, #, #, #, #}.
    Regards,
    Deepti

  • CT04 - Changing characteristic Value Check procedure

    Hi,
    I want to change the value check validation for a an existing material characteristic from from the allowed values list to a chaeck table.  I intende on on using the 'Other Value Check'  button in the Values tab of CT04, but unfortunately this button is greyed out.
    I would like to know if it is possible to start using a check table for an existing material characteriestic, and if so how?
    Thanks,
    Roy

    Hi Roy,
    The only way I've managed to do this was to delete and re-create the characteristic. It gets complicated as SAP wants you to remove all entries for the characteristic before deleting it which means you need someone able to do the LSMWs to remove then re-load the data once you've re-created the characteristic.
    Regards,
    John

  • Change characteristic values in SO via BAPI_SALESORDER_CHANGEBOS

    Hi Experts,
    Now, I would like to update the characteristic values of configuration in sales order via BAPI : BAPI_SALESORDER_CHANGEBOS. But, I can't find right way to execute this BAPI. I tried so many times and no data changed. I wonder that i didn't specify the correct import parameters.
    Is anyone can help me? Thanks for your kindly support in advance.
    Best Regards,
    Ryan

    Hi Ryan,
        I had a similar kind of requirment, to change the characteristic values in a sales contract, where I used, BAPISDORDER_GETDETAILEDLIST to get the details of the agreement line iteam and after sorting the necessary vales then used BAPI: BAPI_CUSTOMERCONTRACT_CHANGE to change the customer agreement line item.
    In your case as well you can use the BAPISDORDER_GETDETAILEDLIST to get the details, based on this you write logic to hold the necessary change value and finally, use BAPI: BAPI_SALESORDER_CHANGE to updated the changes in the sales order.
    Hope this helps.
    Regards
    Raj

  • Trigger Material Delta Load by changing characteristic in R/3

    Hello,
    We added some functionallity to our R/3 and CRM system in order to map the R/3 characteristic data to CRM attributes (which are added to the product master). During the initial download of materials this works fine.
    The delta download is triggered when I change something in the Basic Data or the Sales Org. data in transaction MM02 on the R/3 site, but NOT when I change something in the Classification tab (which holds the characteristics).
    Does anyone know how to trigger the Material Delta Load when changes in the Classification tab are made?
    Thanks,
    Jeroen

    Hi Pat,
    Use object 'DNL_CUST_SALES' to download Customer Group from R/3 to CRM.
    Use R3AS4 transaction to execute the same.
    Best Regards,
    Pratik Patel
    <b>Reward with Points!</b>

  • CRM 5.0 Webclient - Characteristic Change Pointers

    Hi Gurus
    On ERP we have site values which have characteristic data attached.
    On a daily basis from ERP we run transaction BD21 with Message Type "CLFMAS" which picks up changed characteristic data and creates Idocs which are then sent to CRM and processed via an XI process.
    We've picked a scenario where it looks as if New Sites created do not have their characteristic data sent in this process.
    If we then make a change to the characteristic data for the new site and then run BD21, the data is picked up without issue.
    Would anyone know if this is due to the fact that it is seen as a new record and not a changed record that the new  characteristic data is not picked up for transer?
    Maximum points for the right answer.
    Any links to documentation on this subject would also be rewarded
    Many Thanks in advance
    Panduranga

    Closing this
    No Resolution at this point

  • Characteristic Change in InfoCube?

    Hi,
    When there is a change in a characteristic, how can it be updated into infocube (no transactional cube)?
    What I'm currently doing as a workaround to this problem is, in the transformation routine of the infocube: reading the keyfigure value for the existing characteristic combination based on certain keyfield, creating a negative image and add it to the infocube. so it nullifies the existing combination. and then I'm adding fresh data with the changed characteristic value into the infocube.
    Is it advisable to do so? Then what is the easier solution/workaround? Could anyone help me in this regard?
    Best Regards,
    Anbu.

    Hi Aneesh,
    By intruducing ODS how is it possible to update infocube the changed characteristic value? My assumption was ods helps only calculating the delta value by comparing the before and after images, so that the delta can be updated in infocube. But how actually it works for characteristics? does it updates the infocube with new characteristic or just introduces a new row in the infocube?
    I'm yet to evaluate the loop back techniques proposed.
    Regards,
    Anbu.

  • BAPI_OBJCL_CHANGE error: valuated with object dependencies

    Hi expert,
    having programmed an extension for a customer for automatic maintenance of characteristic values of technical object, we have come across an error.
    When using BAPI_OBJCL_CHANGE to change a characteristic followed by BAPI_TRANSACTION_COMMIT (without wait) we have two scenarios:
    1. if the technical object has no value in the characteristic before calling  BAPI_OBJCL_CHANGE  the characteristic will be set.
    2. if there is already a value set there is an error stating
    Characteristic 'XYZ' valuated with object dependencies (old value '00')
    However, I can't find a dependency definition in CT04. do you know what's wrong here,or what is a usual cause of that?
    thanks
    Stefan

    Hi,
    Please see the given link, It may help you.
    Re: BAPI_OBJCL_CHANGE and BAPI_TRANSACTION_COMMIT
    Regards,
    Shamma

  • Modify several characterics with BAPI_OBJCL_CHANGE

    Hi,
    I have to change several characteric with BAPI_OBJCL_CHANGE, that change values in AUSP.
    I only change one of characterics but not with several positions.
        CALL FUNCTION 'BAPI_OBJCL_CHANGE'
          EXPORTING
            OBJECTKEY          = l_object     " For Example '000000000000064002'
            OBJECTTABLE      = C_TABLE  " For Example 'EQUI'
            CLASSNUM           = C_CLASS  " For Example 'EQUIPOS'
            CLASSTYPE          = C_TYPE    " For Example '002'
            STATUS                  = '1'
            STANDARDCLASS          = 'X'
            KEYDATE                = SY-DATUM
          TABLES
            ALLOCVALUESNUMNEW  = TI_NUM
            ALLOCVALUESCHARNEW = TI_CHAR
            ALLOCVALUESCURRNEW = TI_CURR
            RETURN             = RETURN.
    I look that in table TCLA i dont have field OBTAB = ' AUSP' as value. Any know how entries values in this table?

    TCLA will not have an entry of "AUSP" for field value "OBTAB" as AUSP is the table which has the characteristic values.  You should be looking for an entry in TCLA for OBTAB = "EQUI".

  • Batch Classification Values not getting changed

    Hi Gurus,
    I am using the following bapi ( BAPI_OBJCL_CHANGE ) to change Batch classification values Eg: Cut clarity etc.
    when i pass these values thru the function module in the program it is not getting changed while when i change it through msc2n it gets changed successfully...
    I have passed the following values in the parameters of the bapi :
    OBJECTKEY            = v_objectkey          
    OBJECTTABLE        = 'MCH1'          
    CLASSNUM             = V_CLASSNUM 
    CLASSTYPE           = '023'
    KEYDATE                = 30.04.2010
    ALLOCVALUESCHARNEW
    CHARACT = CLARITY
    VALUE_CHAR =  P040
    VALUE_NEW   = P040.
    Can some one help me solve this....
    Needed urgently..
    Edited by: NAVIN FERNANDES on Apr 30, 2010 12:31 PM
    Edited by: NAVIN FERNANDES on Apr 30, 2010 12:32 PM

    Hi Jacky,
    I am posting the code here.. Do let me know if u have ne queries:
    REPORT  ZNAVBATCH.
    SELECTION-SCREEN BEGIN OF BLOCK B1.
    PARAMETERS: P_MATNR TYPE MATNR,
                P_CHARG TYPE CHARG_D,
                P_WERKS TYPE WERKS_D,
                P_LGORT TYPE LGORT_D.
    SELECTION-SCREEN END OF BLOCK B1.
    START-OF-SELECTION.
      DATA: WA_BATCH TYPE BAPI1003_OBJECT_KEYS,
            WA_ALLOCCHAR TYPE BAPI1003_ALLOC_VALUES_CHAR,
            WA_ALLOCVAL TYPE BAPI1003_ALLOC_VALUES_NUM,
            INT_BATCH TYPE STANDARD TABLE OF BAPI1003_OBJECT_KEYS,
            INT_RET1 TYPE STANDARD TABLE OF BAPIRET2,
            INT_RET2 TYPE STANDARD TABLE OF BAPIRET2,
            INT_RET3 TYPE STANDARD TABLE OF BAPIRET2,
            LV_KEY TYPE BAPI1003_KEY-OBJECT,
            INT_ALLOCVAL TYPE STANDARD TABLE OF BAPI1003_ALLOC_VALUES_NUM,
            INT_ALLOCCHAR TYPE STANDARD TABLE OF BAPI1003_ALLOC_VALUES_CHAR,
            INT_ALLOCCURR TYPE STANDARD TABLE OF BAPI1003_ALLOC_VALUES_CURR.
      WA_BATCH-KEY_FIELD = 'MATNR'.
      WA_BATCH-VALUE_INT = P_MATNR.
      APPEND WA_BATCH TO INT_BATCH.
      WA_BATCH-KEY_FIELD = 'CHARG'.
      WA_BATCH-VALUE_INT = P_CHARG.
      APPEND WA_BATCH TO INT_BATCH.
      CALL FUNCTION 'BAPI_OBJCL_CONCATENATEKEY'
        EXPORTING
          OBJECTTABLE    = 'MCH1'
        IMPORTING
          OBJECTKEY_CONC = LV_KEY
        TABLES
          OBJECTKEYTABLE = INT_BATCH
          RETURN         = INT_RET1.
      IF SY-SUBRC = 0.
       WRITE: 'SUCCESSFUL'.
        CALL FUNCTION 'BAPI_OBJCL_GETDETAIL'
          EXPORTING
            OBJECTKEY              = LV_KEY
            OBJECTTABLE            = 'MCH1'
            CLASSNUM               = 'ZTBATCHCHR'
            CLASSTYPE              = '023'
            KEYDATE                = SY-DATUM
          UNVALUATED_CHARS       = ' '
          LANGUAGE               = SY-LANGU
        IMPORTING
          STATUS                 =
          STANDARDCLASS          =
          TABLES
            ALLOCVALUESNUM         = INT_ALLOCVAL
            ALLOCVALUESCHAR        = INT_ALLOCCHAR
            ALLOCVALUESCURR        = INT_ALLOCCURR
            RETURN                 = INT_RET2
        IF SY-SUBRC = 0.
          WRITE : 'SUCCESSFUL'.
          READ TABLE INT_ALLOCCHAR INTO WA_ALLOCCHAR WITH KEY CHARACT = 'CLARITY'.
          IF SY-SUBRC = 0.
            WA_ALLOCCHAR-VALUE_CHAR = 'C02'.
            WA_ALLOCCHAR-VALUE_NEUTRAL = 'C02'.
            MODIFY INT_ALLOCCHAR FROM WA_ALLOCCHAR INDEX SY-TABIX TRANSPORTING VALUE_CHAR VALUE_NEUTRAL.
          ENDIF.
          CALL FUNCTION 'BAPI_OBJCL_CHANGE'
            EXPORTING
              OBJECTKEY                = LV_KEY
              OBJECTTABLE              = 'MCH1'
              CLASSNUM                 = 'ZTBATCHCHR'
              CLASSTYPE                = '023'
             STATUS                   = '1'
             STANDARDCLASS            =
             CHANGENUMBER             =
             KEYDATE                  = SY-DATUM
             NO_DEFAULT_VALUES        = ' '
           IMPORTING
             CLASSIF_STATUS           =
            TABLES
              ALLOCVALUESNUMNEW        = INT_ALLOCVAL
              ALLOCVALUESCHARNEW       = INT_ALLOCCHAR
              ALLOCVALUESCURRNEW       = INT_ALLOCCURR
              RETURN                   = INT_RET3
          IF SY-SUBRC = 0.
            CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
             EXPORTING
               WAIT          = 'X'
            IMPORTING
              RETURN        =
            IF SY-SUBRC = 0.
              WRITE: 'SUCCESSFUL'.
            ENDIF.
          ENDIF.
        ENDIF.
    ENDIF.

  • CCM 2.0 avoid changes in the Procurement Catalogue

    Hi!!!
    Is it possible to avoid that the Master Catalog can change characteristic values in the Procurement Catalog?
    This issue is critical for us. Could you please please help us?
    THANKS!!!

    Hi Dinesh,
    We tried the "Read Only" solution but it's not working with complex characteristics such as price. Besides, it's the Catalog Manager who sets the read only flag, and we wanted the procurement catalog not be editable to avoid him to change some value (so, it has not much sense to make him responsible to set the flag, as he could just un-flag it, change values, and flag it again).
    What we did was, go to the transaction PFCG, write the manager role (/CCM/CATALOG_MANAGER), the click on the authorization tab, and press on the Change Authorization Data button.
    Then, inside the menu Cross-Application Authorization Object go to Access Restriction for Catalog Design Center. Here we added two new entries. So now we have 3 different "Restriction for Catalog Design Center", one for the Procurement Catalog (that don't have the activity of CHANGE), another for the Master Catalog (we had to wrote the name, because there isn't an option for the Master in the Catalog type menu. We wanted the Catalog Manager not to be able to publish it. However, although we didn't include PUBLISH in his activity, he still can publish it) and another one for the Supplier Catalog.
    So, if someone knows how to avoid the Catalog Manager publishing the Master Catalog using authorizations, we would be really grateful for some tips.
    THANKS!!!
    Best Regards,
    Mar

Maybe you are looking for