Application Development Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 

Service material

Former Member
0 Kudos

Hello,

I have developed program to upload service material through AC01 and i have used Bapi BAPI_SERVICE_CREATE to create new service material and

BAPI_SERVICE_CHANGE to change service material,everything is working fine.

when service material is already in use so we can not change base UOM(unit of measue) but we can change other field manually, issue is when program try to change any other field I am getting error message say "Unit of measure cannot be changed(contarct contain service) and even i am not passing UOM to BAPI.

Could any body tell me why this is happing?

Regards,

Nee

5 REPLIES 5

Former Member
0 Kudos

Hi,

can some body help?

Former Member
0 Kudos

Can some one help?

Former Member
0 Kudos

Can you check the table where you are passing the 'X' flag of BAPI may be you are passing the 'X' there.

Also can you paste the code so it could be checked

0 Kudos

Hi,

Thanks for replying , No I am not passing the 'X' flag to BAPI, kindly find the code below:-

LOOP AT itab INTO wa.

          CASE wa-name.



*Activity Number

            WHEN 'MATNR'.

              IF wa-value <> ' '.

                CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'

                  EXPORTING

                    input  = wa-value

                  IMPORTING

                    output = matnr_zeros.



                bapisrv_asmd-service      = matnr_zeros.

                bapisrv_asmdx-service     = matnr_zeros.

              ENDIF.

*Material Group

            WHEN 'MATKL' .

              bapisrv_asmd-matl_group   = wa-value.

              bapisrv_asmdx-matl_group  = 'X'.

*Base Unit of Measure

            WHEN 'MEINS'.

              IF           wa-value   = 'UN'.

                wa-value   = 'ST'.

              ELSEIF  wa-value   = 'BOL'.

                wa-value   = 'BAG'.

              ELSEIF  wa-value   = 'CJ'.

                wa-value   = 'CS'.

              ELSEIF  wa-value   = 'GLN'.

                wa-value   = 'GLL'.

              ELSEIF  wa-value   = 'PUL'.

                wa-value   = 'IN'.

              ELSEIF  wa-value   = 'T'.

                wa-value   = 'TO'.

              ELSEIF  wa-value   = 'BTO'.

                wa-value   = 'PAK'.

              ELSEIF  wa-value   = 'D'.

                wa-value   = '10'.

              ENDIF.

              bapisrv_asmd-base_uom     = wa-value.

              bapisrv_asmdx-base_uom    = 'X'.



**Check if material is already exist**************

SELECT * FROM  SRV_CONT INTO wa_srv_cont

             WHERE SRVPOS   = bapisrv_asmd-service

             AND BSTYP      = 'K'

             AND LOEKZK     = SPACE

             AND PSTYP      = '9'

             AND LOEKZ      = SPACE

             AND DEL        = SPACE.

      EXIT.

    ENDSELECT.

    IF SY-SUBRC = 0.

      bapisrv_asmd-base_uom     = ' '.

      bapisrv_asmdx-base_uom    = ' '.

    ENDIF.



*Service Category

            WHEN 'MTART'.

              bapisrv_asmd-serv_cat     = wa-value.

              bapisrv_asmdx-serv_cat    = 'X'.

*Delete Indicator

            WHEN 'LVORM'.

              bapisrv_asmd-del_ind      = wa-value.

              bapisrv_asmdx-del_ind     = 'X'.

*Valuation Class

            WHEN 'BKLAS'.

              bapisrv_asmd-val_class    = wa-value.

              bapisrv_asmdx-val_class   = 'X'.

*Tax Indicator for Service (Purchasing)

            WHEN 'TAXIM'.

              bapisrv_asmd-tax_ind      = wa-value.

              bapisrv_asmdx-tax_ind     = 'X'.

*Formula Number

            WHEN 'FORMELNR'.

              bapisrv_asmd-formula      = wa-value.

              bapisrv_asmdx-formula     = 'X'.

*International Article Number (EAN/UPC)

            WHEN 'EAN11'.

              bapisrv_asmd-ean_upc     = wa-value.

              bapisrv_asmdx-ean_upc    = 'X'.

******************************************************************Changes as on 24.06.2013

*Alternative unit of Measure

*    Denominator for Conversion

            WHEN 'IWUMN'.

              bapisrv_asmd-conv_den     = wa-value.

              bapisrv_asmdx-conv_den    = 'X'.

*Numerator for conversion

            WHEN 'IWUMZ'.

              bapisrv_asmd-conv_num    = wa-value.

              bapisrv_asmdx-conv_num   = 'X'.

*Unit for Work

            WHEN 'IWEIN'.

              IF wa-value = 'YR'.

                wa-value = 'JHR'.

              ELSEIF wa-value = 'MSE'.

                wa-value = 'MS'.

              ELSEIF wa-value = 'HR'.

                wa-value = 'STD'.

              ELSEIF wa-value = 'DAY'.

                wa-value = 'TAG'.

              ELSEIF wa-value = 'WK'.

                wa-value = 'WCH'.

              ENDIF.

              bapisrv_asmd-work_uom    = wa-value.

              bapisrv_asmdx-work_uom   = 'X'.

          ENDCASE.

          CLEAR wa.

        ENDLOOP.



        LOOP AT itab_temp_en INTO wa_temp_en.

          value = wa_temp_en-value.



          service_long_texts-language  = 'E'.

          service_long_texts-line      value."STRING_TEXT_EN.

          service_long_texts-format    = 'N1'.

          service_long_texts-change_id = 'U'.

          APPEND service_long_texts.

          CLEAR: wa_temp_en.

        ENDLOOP.



        LOOP AT itab_temp_es INTO wa_temp_es.

          value_es = wa_temp_es-value.



          service_long_texts-language  = 'S'.

          service_long_texts-line      value_es."STRING_TEXT_EN.

          service_long_texts-format    = 'N1'.

          service_long_texts-change_id = 'U'.

          APPEND service_long_texts.

          CLEAR: wa_temp_en.

        ENDLOOP.



        LOOP AT itab_short_desp_en INTO wa_short_desp_en.



          bapisrv_asmd-chgtext            = 'X'.

          bapisrv_asmdx-chgtext           = 'X'.

          service_description-language    = 'E'.

          service_description-change_id   = 'U'.

          service_description-short_text  = wa_short_desp_en-value.



          APPEND service_description.

          CLEAR: wa_short_desp_en.

        ENDLOOP.



        LOOP AT itab_short_desp_es INTO wa_short_desp_es.



          bapisrv_asmd-chgtext            = 'X'.

          bapisrv_asmdx-chgtext           = 'X'.

          service_description-language    = 'S'.

          service_description-change_id   = 'U'.

          service_description-short_text  = wa_short_desp_es-value.



          APPEND service_description.

          CLEAR: wa_short_desp_es.

        ENDLOOP.



        IF bapisrv_asmd-service = ' '.



          IF erp_action            = 'ARCHIVE'.

            bapisrv_asmd-del_ind  = 'X'.

            bapisrv_asmdx-del_ind = 'X'.



          ENDIF.

********BAPI for create Service material

          CALL FUNCTION 'BAPI_SERVICE_CREATE'

            EXPORTING

              im_service_data             = bapisrv_asmd

              im_service_datax            = bapisrv_asmdx

*   NO_NUMBER_RANGE_CHECK       =

*   TESTRUN                     =

           IMPORTING

             service                      = service_number

*   EX_SERVICE_DATA             =

*   EX_SERVICE_DATAX            =

           TABLES

             return                       = it_return_serv

             service_description          = service_description

             service_long_texts           = service_long_texts

*   EXTENSION_IN                =

*   EXTENSION_OUT               =

                    .

          IF erp_action = 'UNARCHIVE'." AND IT_RETURN_SERV-TYPE <> 'E'.



            SELECT SINGLE * FROM asmd INTO wa_asmd WHERE asnum = bapisrv_asmd-service

                                                   AND   lvorm = 'X'.

            wa_asmd-lvorm = ' '.



            MODIFY asmd FROM wa_asmd.



          ENDIF.



        ELSEIF bapisrv_asmd-service <> ' '.

          bapisrv_asmd-serv_cat     = ' '.

          bapisrv_asmdx-serv_cat    = ' '.



          IF erp_action               = 'ARCHIVE'.

            bapisrv_asmd-del_ind  = 'X'.

            bapisrv_asmdx-del_ind = 'X'.



          ENDIF.

********BAPI for Update Service material

          CALL FUNCTION 'BAPI_SERVICE_CHANGE'

            EXPORTING

              servicenumber             = bapisrv_asmd-service

             im_service_data            = bapisrv_asmd

             im_service_datax           = bapisrv_asmdx

*   TESTRUN                   =

*           IMPORTING

*             ex_service_data            = ex_service_data

*             ex_service_datax           = ex_service_datax

            TABLES

              return                    = it_return_serv

              service_description       = service_description

             service_long_texts         = service_long_texts

*   EXTENSION_IN              =

*   EXTENSION_OUT             =

                    .



        ENDIF.

Former Member
0 Kudos

Hi Neeru,

The error you are getting is for SERVICE_CHANGE I suppose and not for SERVICE_CREATE

If that is the case... Then you are passing the UoM data .....

Please confirm where you are getting the issue which BAPI in debug.

Regards