Can we Delete the Product/Material  from Product Master in CRM

Hi Gurus,
I want to delete some test products from Product master, I don't see any link for delete there in product master transaction.
Can we Delete the Product from Product Master in CRM??
Thanks in Advance.
Regards,
Manoj Tiwari

Try this:
*& Report  ZVB_PRODUCT_DELETE          (release CRM 4.0 SP03)          *
*&         Instructions are in OSS Note #427332                        *
report  zvb_product_delete line-size 300.
const, include
include com_product_const001.
include com_product_const003.
include com_product_const009.
include com_product_const011.
include com_settype_attribute_const03.
tables:  comm_iproduct,                                     "#EC NEEDED
         comm_product.
constants:
       gc_program type programm value 'COM_PRODUCT_DELETE_SINGLE'.
data:  gv_product_guid type comt_product_guid,
       gv_prty  type comt_product_type,
       gv_syslog(70)  type c,
       lv_mobile_active  type comt_boolean,
       lv_delete  type comt_boolean value 'X'.
data:  lt_settypes      type  comt_frgtype_tab_ext,
       lt_status_guid   type comt_prd_status_guid_tab.
data: begin of lt_products occurs 0,
         product_id   like comm_product-product_id,
         product_guid like comm_product-product_guid,
      end of lt_products.
Screen User query
selection-screen comment /1(60) text-006.
selection-screen skip 2.
select-options: s_prid for comm_product-product_id.
*parameters: p_prid type comt_product_id   obligatory,
parameters: p_prty type comt_product_type obligatory default '01',
            p_logs type comt_logsys       obligatory,
            p_objf type comt_product_object_family,
            p_send  as checkbox modif id 001 default on,
            p_usage as checkbox modif id 001 default off,
            p_test  as checkbox default 'X'.
at selection-screen output.
  perform check_mobile_download
      changing lv_mobile_active.
  if lv_mobile_active is initial.
    loop at screen.
      check screen-group1 = '001'.  "disable field p_send, p_usage
      screen-active = '0'.
      modify screen.
    endloop.
  endif.
start-of-selection.
perform check_authority.
Write syslog entry
concatenate 'Rep. ' sy-repid ': ' p_prid(30) '/' p_prty '/' p_logs
        into gv_syslog.                                    "#EC NOTEXT
call 'C_WRITE_SYSLOG_ENTRY'
   id 'TYP' field ' '
   id 'KEY' field 'C00'
   id 'DATA' field gv_syslog  .
inactive product are not supported here
select * from comm_iproduct
        where product_id    = p_prid
        and   product_type  = p_prty
        and   object_family = p_objf
        and   logsys        = p_logs.
endselect.
if sy-subrc = 0.
   write: / text-001, text-005.
   exit.
endif.
read products according to the selection criteria
  select * from comm_product
         into corresponding fields of table lt_products
         where product_id    in s_prid
         and   product_type  = p_prty
         and   object_family = p_objf
         and   logsys        = p_logs.
  if sy-subrc ne 0.
    write: / text-010.
    exit.
  endif.
  loop at lt_products.
  read product and enqueue
    perform product_enqueue
         using lt_products-product_id
               p_prty
               p_logs
               p_objf
         changing gv_product_guid
                  gv_prty.
    check not gv_product_guid is initial.
    if p_usage = on.
      perform check_usage
              using gv_product_guid
           changing lv_delete.
    endif.
    check lv_delete = on.
    check p_test = space.
  first delete the component of the IBase
    perform delete_ibasecomponent
         using gv_product_guid.
    perform delete_extensions
         using gv_product_guid
               lt_settypes.
    perform delete_settypes
         using gv_product_guid
               lt_settypes
      changing lt_status_guid.
    perform delete_interlinkages
         using gv_product_guid.
    perform delete_pme_data                      "multivalue attributes
         using gv_product_guid.
    perform delete_decoupled_data                "long text, longmatnr,
         using gv_product_guid.                  "ibase prodvar,...
    perform delete_status
         using lt_status_guid.
    perform delete_favorites
         using gv_product_guid.
    perform delete_clear_case
         using gv_product_guid.
    if p_send = 'X'.
      perform send_deletion_to_mw
           using gv_product_guid.
    endif.
    delete from comm_product     where product_guid = gv_product_guid.
    delete from comm_producth    where product_guid = gv_product_guid.
    delete from comm_product_idx where product_guid = gv_product_guid.
    delete from comm_prwb_user_2 client specified
           where client = sy-mandt and last_object = gv_product_guid.
    call function 'BAPI_TRANSACTION_COMMIT'
      exporting
        wait = 'X'.
    write: / text-001, lt_products-product_id, text-004.
  endloop.
*&      Form  product
form product_enqueue
   using   iv_prid  type comt_product_id
           iv_prty  type comt_product_type
           iv_logs  type comt_logsys
           iv_objf  type comt_product_object_family
  changing ev_pguid type comt_product_guid
                      ev_prty type comt_product_type.
  data ls_product type  comt_product.
  call function 'COM_PRODUCT_GUID_GET'
    exporting
      iv_product_id    = iv_prid
      iv_product_type  = iv_prty
      iv_logsys        = iv_logs
      iv_object_family = iv_objf
      iv_show_popup    = 'X'
    importing
      ev_product_guid  = ev_pguid
    exceptions
      not_found        = 1
      wrong_call       = 2
      internal_error   = 3
      others           = 4.
  if sy-subrc <> 0.
    write: / text-001, space, iv_prid.
    write:   text-003.        "Product not found
    exit.
  else.
    write: / text-001, space, iv_prid.
    write:   text-002.        "Product found
  endif.
  call function 'COM_PRODUCT_READ_SINGLE'
    exporting
      iv_product_guid = ev_pguid
      iv_enqueue_mode = ' '
    importing
      es_product      = ls_product
    exceptions
      not_found       = 1
      wrong_call      = 2
      foreign_lock    = 3
      enqueue_failed  = 4
      others          = 5.
  if sy-subrc <> 0.
    if sy-subrc > 2.
      write: / text-001, space, iv_prid.
      write:   text-007. "Product enqueued
      exit.
    else.
      message id sy-msgid type sy-msgty number sy-msgno
         with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      exit.
    endif.
    exit.
  endif.
  ev_prty = ls_product-product_type.
special authotirty check (with considering the assigned
categories)
call function 'COM_PRODUCT_CT_AUTHORITY_CHECK'
   exporting
     iv_auth_act     = '06'
     iv_product_guid = ev_pguid
   exceptions
     no_authority    = 1
     wrong_call      = 2
     internal_error  = 3
     others          = 4.
if sy-subrc <> 0.
   message id sy-msgid type sy-msgty number sy-msgno
           with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
endif.
endform.                               " product
*&      Form  delete_extensions
form delete_extensions
     using iv_product_guid type comt_product_guid
           et_settype      type comt_frgtype_tab_ext.
  data:  lv_db_tab        type ddobjname,
         lv_subrc_pr_guid like sy-subrc,
         table_name_ref   type ref to data,
         lt_extension     type comt_frgtype_tab_ext,
         ls_extension     type comm_frgtype_ext.
  field-symbols: <table_name> type any,
                 <field_name> type any.
  check not iv_product_guid is initial.
delete extensions e.g. COMM_PRFREEATTR, CRMM_PR_TAX, COMM_PR_UNIT,
                       COMM_PR_SHTEXT,COMM_PR_GTIN, comm_prprdcatr,..
  perform load_extensions
          using  iv_product_guid
       changing  lt_extension
                 et_settype.
  loop at lt_extension into ls_extension.
    lv_db_tab = ls_extension-frgtype_tab.
    check not lv_db_tab is initial. "CRM_CAT_SAT & CRM_CAT_PUR
  does table exist ?
    call function 'DDIF_NAMETAB_GET'
      exporting
        tabname   = lv_db_tab
      exceptions
        not_found = 1
        others    = 2.
    check sy-subrc = 0.
  Due to any reason (I don't know why) sometimes we have product_guid
  and sometimes we have frg_guid as name of the key field.
    create data table_name_ref type (lv_db_tab).
    assign table_name_ref->* to <table_name>.
    assign component 'PRODUCT_GUID' of structure <table_name>
           to <field_name>.
    lv_subrc_pr_guid = sy-subrc.
    if lv_subrc_pr_guid = 0.
      delete from (lv_db_tab)
             where product_guid = iv_product_guid.
    else.
      delete from (lv_db_tab)
             where frg_guid     = iv_product_guid.
    endif.
  delete history of extension table
    concatenate ls_extension-frgtype_tab 'H' into lv_db_tab.
    create data table_name_ref type (lv_db_tab).
    assign table_name_ref->* to <table_name>.
    assign component 'LOGSYS' of structure <table_name>
                              to <field_name>.
    check sy-subrc = 0.
    call function 'DDIF_NAMETAB_GET'
      exporting
        tabname   = lv_db_tab
      exceptions
        not_found = 1
        others    = 2.
    check sy-subrc = 0.
    if lv_subrc_pr_guid = 0.
      delete from (lv_db_tab)
             where product_guid = iv_product_guid.
    else.
      delete from (lv_db_tab)
             where frg_guid     = iv_product_guid.
    endif.
  endloop. "  end of loop for all extensions
endform.                    " delete_extensions
*&      Form  delete_settypes
form delete_settypes
     using iv_product_guid   type comt_product_guid
           it_settypes       type comt_frgtype_tab_ext
    changing et_status_guid  type comt_prd_status_guid_tab.
  data: ls_reldesc type  coms_pr_org_rel,
        lt_reldesc type  comt_pr_org_rel_tab,
        lt_reltab  type  ref to data,
        ls_settype type  comt_settype_ext,
        ls_table   type  tabname,
        ls_status_guid   type crmt_object_guid.
  field-symbols:
       <fs_reltab>   type any table,
       <fs_relrow>   type any,
       <fs_settype>  type comt_frgtype_guid,
       <fs_setguid>  type comt_frg_guid,
       <fs_statguid> type crmt_object_guid.
memorise product status guide
  ls_status_guid = iv_product_guid.
  append ls_status_guid to et_status_guid.
load description of relation tables
  call method cl_com_product_org_type=>comc_pr_org_link_read_all
    importing
      et_pr_org_rel = lt_reldesc
    exceptions
      no_desc       = 0.
for all relation types (e.g. comm_pr_frg_rel, comm_pr_frg_rod)
  loop at lt_reldesc into ls_reldesc.
  read product/settype relations
    create data lt_reltab type (ls_reldesc-link_table_ttyp).
    assign lt_reltab->* to <fs_reltab>.
    call function ls_reldesc-func_rel_read_pr
      exporting
        iv_product_guid = iv_product_guid
      importing
        et_rel          = <fs_reltab>
      exceptions
        wrong_call      = 1
        not_found       = 2
        others          = 3.
    check sy-subrc = 0.
  for all links...
    loop at <fs_reltab> assigning <fs_relrow>.
      assign component 'FRAGMENT_TYPE' of structure <fs_relrow>
                                                 to <fs_settype>.
      assign component 'FRAGMENT_GUID' of structure <fs_relrow>
                                                 to <fs_setguid>.
      assign component 'STATUS_OBJECT' of structure <fs_relrow>
                                                 to <fs_statguid>.
      read table it_settypes with key frgtype_guid = <fs_settype>
                             into ls_settype.
      check sy-subrc = 0.
    settype table
      delete from (ls_settype-frgtype_tab)
             where frg_guid = <fs_setguid>.
    history table
      concatenate ls_settype-frgtype_tab 'H' into ls_table.
      delete from (ls_table)
             where frg_guid = <fs_setguid>.
    memorise settype status guide
      if not <fs_statguid> is initial.
        ls_status_guid = <fs_statguid>.
        append ls_status_guid to et_status_guid.
      endif.
    endloop. "of links
  relation table (e.g. comm_pr_frg_rel)
    delete from (ls_reldesc-link_table)
           where product_guid = iv_product_guid.
  history table
    concatenate ls_reldesc-link_table 'H' into ls_table.
    delete from (ls_table) where product_guid = iv_product_guid.
  endloop. " of relation types
endform.                    " delete_settypes
*&      Form  delete_interlinkages
form delete_interlinkages
     using iv_product_guid type comt_product_guid.
  constants: cv_db_name(8)  type c value 'COMM_IL_',
             cv_suffix_h(2) type c value '_H'.
  data: lt_ilinks   type  comt_il_data_tab,
        lt_reltype  type  comc_il_reltype_tab with header line,
        lv_ddictype type  dd02v-tabclass,
        lv_dbname        type  comt_structure.
CHECK p_objf IS INITIAL.
first we have to read all ILs where the productguid is sourceguid
  refresh lt_ilinks.
  call function 'COM_IL_API_WHERE_USED'
    exporting
      iv_objectguid   = iv_product_guid
      iv_objtype      = gc_bus_objtype_bus1178
      iv_direction    = 'S'
    importing
      et_interlinkage = lt_ilinks.
  check not lt_ilinks[] is initial.
  delete adjacent duplicates from lt_ilinks comparing reltype.
read ilinkage customizing
  select * from comc_il_reltype into table lt_reltype
     for all entries in lt_ilinks where reltyp = lt_ilinks-reltype.
delete interlinkages
  loop at lt_reltype.
    if lt_reltype-streltyp ne space.
      concatenate cv_db_name lt_reltype-streltyp into lv_dbname.
    else.
      concatenate cv_db_name lt_reltype-reltyp   into lv_dbname.
    endif.
  delete data
    call function 'DDIF_NAMETAB_GET'
      exporting
        tabname   = lv_dbname
      importing
        ddobjtype = lv_ddictype
      exceptions
        not_found = 1
        others    = 2.
    check sy-subrc = 0 and lv_ddictype = 'TRANSP'.          "#EC NOTEXT
    delete from (lv_dbname) where sourceguid = iv_product_guid.
  delete history
    check lt_reltype-change_doc = 'X'.
    concatenate lv_dbname cv_suffix_h into lv_dbname.
    call function 'DDIF_NAMETAB_GET'
      exporting
        tabname   = lv_dbname
      importing
        ddobjtype = lv_ddictype
      exceptions
        not_found = 1
        others    = 2.
    check sy-subrc = 0 and lv_ddictype = 'TRANSP'.          "#EC NOTEXT
    delete from (lv_dbname) where sourceguid = iv_product_guid.
  endloop.
endform.                    "delete_interlinkages
*&      Form  delete_pme_data
form delete_pme_data
     using iv_product_guid type comt_product_guid.
delete multivalue attributes from PME
  data: lt_pmemap  like standard table of comm_pme_prd_map,
        ls_pmemap  like comm_pme_prd_map.
  select *  into table lt_pmemap
            from comm_pme_prd_map
            where crm_object_guid = iv_product_guid.
  check sy-subrc = 0.
  loop at lt_pmemap into ls_pmemap.
    call function 'CRM_SCE_DB_KB_DELETE'
      exporting
        iv_kbid = ls_pmemap-kbid.
  endloop.
  delete comm_pme_prd_map from table lt_pmemap.
endform.                    "delete_pme_data
*&      Form  send_deletion_to_mw
form send_deletion_to_mw
     using iv_product_guid type comt_product_guid.
  data:  cv_function_module like  rs38l-name
              value 'CRM_PROD_SEND_DELETION_MESSAGE'.       "#EC NOTEXT
  data:  lt_product_guid  type comt_product_s_tab with header line.
  lt_product_guid-product_guid = iv_product_guid.
  append lt_product_guid.
  call function 'FUNCTION_EXISTS'
    exporting
      funcname           = cv_function_module
    exceptions
      function_not_exist = 1
      others             = 2.
  check sy-subrc = 0.
  call function cv_function_module
    exporting
      it_product_guid = lt_product_guid[]
      iv_test_only    = space
    exceptions
      internal_error  = 1
      others          = 2.
  if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.
endform.                    " send_deletion_to_mw
*&      Form check_mobile_download
form check_mobile_download
  changing ev_mobile_active type comt_boolean.
  data:
        cv_db_tab   type ddobjname value 'SMOMARA'.
  data: lv_lines    type i value 0.
  clear ev_mobile_active.
  call function 'DDIF_NAMETAB_GET'
    exporting
      tabname   = cv_db_tab
    exceptions
      not_found = 1
      others    = 2.
  check sy-subrc = 0.
  select count( * ) into lv_lines
    from (cv_db_tab) up to 10 rows.                     "#EC CI_NOWHERE
  if lv_lines > 0.
    ev_mobile_active = on.
  endif.
endform.                    " check_mobile_download
*&      Form check_authority
form check_authority.
  tables:  t000, comc_pr_tool_reg.                          "#EC NEEDED
check productiv system - report must not be executed
  select single * from t000 client specified             "#EC CI_CLIENT
                  where mandt = sy-mandt.
  if t000-cccategory = 'P'.
    message e807(com_product) .
    leave.
    leave to transaction '    '.
  endif.
Check authority for product delete
  call function 'COM_PRODUCT_AUTHORITY_CHECK'
    exporting
      iv_auth_act    = '06'
    exceptions
      no_authority   = 1
      wrong_call     = 2
      internal_error = 3
      others         = 4.
  if sy-subrc ne 0.
    message id sy-msgid type sy-msgty number sy-msgno
            with sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  MESSAGE e808(com_product).
    leave.
    leave to transaction '    '.
  endif.
Additional step: registration
  select single * from comc_pr_tool_reg
         where program_name = gc_program
         and   user_name    = sy-uname
         and   exec_date    = sy-datum.
  if sy-subrc ne 0.
    message e809(com_product).
  endif.
endform.                    " check_authority
*&      Form  delete_decoupled_data
form delete_decoupled_data
     using iv_product_guid type comt_product_guid.
  include com_product_const018.
Deleting decoupled and customer requested data (long_text, longmatnr,
  upload registry, ibase product variants coming from R/3,
  archive verify registry). Documents like PDF,XLS,DOC,JPG stored in
  Content Management will not be deleted
load BADI implementations
  class: cl_exithandler definition load.
  data:  exit_obj type ref to if_ex_com_product_delete.
  call method cl_exithandler=>get_instance
    exporting
      exit_name              = gc_badi-com_product_delete
      null_instance_accepted = on
    changing
      instance               = exit_obj.
call BADI implementations (User Exit)
  call method exit_obj->delete_extra_data
    exporting
      iv_product_guid = iv_product_guid.
endform.                    " delete_decoupled_data
*&      Form  load_extensions
form load_extensions
     using iv_product_guid type  comt_product_guid
  changing et_extension    type  comt_frgtype_tab_ext
           et_settype      type  comt_frgtype_tab_ext.
  data: lt_prd_cat      type  comt_prod_cat_rel_tab,
        ls_prd_cat      type  comt_prod_cat_rel,
        lt_cat_frg      type  comt_prcat_frag_rel_tab,
        ls_cat_frg      type  comt_prcat_frag_rel,
        lt_settype_guid type  comt_frgtypeguid_tab,
        ls_settype_guid type  comt_frgtype_guid,
        lt_settype      type  comt_frgtype_tab_ext.
  refresh et_extension.
read categories assigned to product
  call function 'COM_PROD_CAT_REL_READ_WITH_PR'
    exporting
      iv_product_guid = iv_product_guid
    importing
      et_set          = lt_prd_cat.
  loop at lt_prd_cat into ls_prd_cat.
  read allowed settypes for categories
    call function 'COM_PRCAT_FRAG_REL_READ'
      exporting
        iv_category_guid  = ls_prd_cat-category_guid
      importing
        et_prcat_frag_rel = lt_cat_frg
      exceptions
        wrong_call        = 1
        others            = 2.
    check sy-subrc = 0.
    refresh lt_settype_guid.
    loop at lt_cat_frg into ls_cat_frg.
      ls_settype_guid = ls_cat_frg-frgtype_guid.
      append ls_settype_guid to lt_settype_guid.
    endloop.
  read settype defintions
    call function 'COM_SETTYPE_READ_MULTIPLE'
      exporting
        it_settype_guid = lt_settype_guid
      importing
        et_settype      = lt_settype
      exceptions
        nothing_found   = 1
        others          = 2.
    if sy-subrc =  0.
    only settypes
      et_settype[] = lt_settype[].
      delete et_settype[] where
        ( prod_comp_type = gc_prod_comp_type-extension or
          prod_comp_type = gc_prod_comp_type-simple_extension ).
    only extensions
      delete lt_settype[] where
        ( prod_comp_type ne gc_prod_comp_type-extension and
          prod_comp_type ne gc_prod_comp_type-simple_extension ).
      et_extension[] = lt_settype[].
    endif.
  endloop. " end of product categories
endform.                    " load_extensions
*&      Form  delete_status
form delete_status
  using it_status_guid type comt_prd_status_guid_tab.
  data:
    lt_status like crm_jsto_pre occurs 0,
    ls_status type crm_jsto_pre,
    ls_status_guid type crmt_object_guid.
  loop at it_status_guid into ls_status_guid.
    ls_status-objnr = ls_status_guid.
    append ls_status to lt_status.
  endloop.
  call function 'CRM_STATUS_DELETE_MULTI'
    tables
      objnr_table = lt_status.
endform.                    " delete_status
*&      Form delete_favorites
form delete_favorites
     using iv_product_guid type  comt_product_guid.
  call function 'COM_PRODUCT_DELETE_FAVORITES'
    exporting
      iv_object_guid = iv_product_guid.
endform.                    " delete_favorites
*&      Form delete_clear_case
form delete_clear_case
     using iv_product_guid type  comt_product_guid.
  data:   ls_customizing type comc_product,
          lv_clear_case_guid type comt_clear_case_guid.
Is cusotmizing-flag INACTIV_PROD activated ?
  call method cl_com_product_general=>comc_product_read_all
    importing
      es_prod_general = ls_customizing
    exceptions
      not_found       = 1
      others          = 2.
  check ls_customizing-inactive_prod = on.
  select single clear_case_guid from comm_clear_targ        "#EC *
           into lv_clear_case_guid
           where object_guid = iv_product_guid  "active
             and object_class = 'PROD'.
normaly two entries for active and inaktive product version
  delete from comm_clear_targ
           where clear_case_guid = lv_clear_case_guid
             and object_class = 'PROD'.
  delete from comm_clear_stack
         where guid = lv_clear_case_guid
           and application = 'PROD'.
endform.                    "delete_clear_case
*&      Form check_usages
form check_usage
     using iv_product_guid type  comt_product_guid
  changing ev_delete type comt_boolean.
  include sbal_constants.
  data:  cv_function_module like  rs38l-name
              value 'COM_PRODUCT_USAGE_CHECK'.              "#EC NOTEXT
  data:  ls_product  type comt_product,
         lt_product  type comt_product_tab.
  data:  ls_logheader     type bal_s_log,   "Kopfdaten des Protokolls
         lv_loghandle     type  balloghndl.
  data:  ls_msg_filter type bal_s_mfil,
         ls_log_filter type bal_s_lfil,
         lt_msg_handle type bal_t_msgh,
         ls_log_handle type bal_s_logh,
         ls_msg_handle type balmsghndl,
         ls_msg        type bal_s_msg,
         ls_string     type string.
does CRM function exist
  call function 'FUNCTION_EXISTS'
    exporting
      funcname           = cv_function_module
    exceptions
      function_not_exist = 1
      others             = 2.
  check sy-subrc = 0.
create log handle
  ls_logheader-aldate    = sy-datum.
  ls_logheader-altime    = sy-uzeit - 10.
  ls_logheader-aluser    = sy-uname.
  ls_logheader-alprog    = sy-repid.
  call function 'BAL_LOG_CREATE'
    exporting
      i_s_log                 = ls_logheader
    importing
      e_log_handle            = lv_loghandle
    exceptions
      log_header_inconsistent = 1
      others                  = 2.
  if sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
        WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  endif.
  ls_product-product_guid = iv_product_guid.
  append ls_product to lt_product.
call usage checks
  call function cv_function_module
    exporting
      it_product   = lt_product
      iv_loghandle = lv_loghandle.
filter settings
  ls_log_handle-sign   = 'I'.
  ls_log_handle-option = 'EQ'.
  ls_log_handle-low    = lv_loghandle.
  append ls_log_handle to ls_log_filter-log_handle.
get messages
  call function 'BAL_GLB_SEARCH_MSG'
    exporting
      i_s_log_filter = ls_log_filter
      i_s_msg_filter = ls_msg_filter
    importing
      e_t_msg_handle = lt_msg_handle
    exceptions
      msg_not_found  = 1
      others         = 2.
  check sy-subrc = 0.
  ev_delete = space.
  write: / text-001, text-008.
read messages
  loop at lt_msg_handle into ls_msg_handle.
    call function 'BAL_LOG_MSG_READ'
      exporting
        i_s_msg_handle = ls_msg_handle
      importing
        e_s_msg        = ls_msg
      exceptions
        log_not_found  = 1
        msg_not_found  = 2
        others         = 3.
    check sy-subrc = 0.
    message id ls_msg-msgid type ls_msg-msgty number ls_msg-msgno
        with ls_msg-msgv1 ls_msg-msgv2 ls_msg-msgv3 ls_msg-msgv4
        into ls_string.
    write: /, ls_string.
    clear ls_msg.
  endloop.
endform.                    " check_usages
*&      Form  delete_ibasecomponent
      text
     -->P_GV_PRODUCT_GUID  text
form delete_ibasecomponent using p_product_guid.
  data: lv_guid22 like sysuuid-c22,
        ls_comp   type  ibas_dat1.
  tables: ibin.
  break pvho.
  call function 'GUID_CONVERT'
    exporting
      iv_guid_x16            = p_product_guid
    importing
      ev_guid_c22            = lv_guid22
    exceptions
      no_unicode_support_yet = 1
      parameters_error       = 2
      others                 = 3.
find the component
  select * from ibin
         where objnr = lv_guid22.
    clear ls_comp.
    ls_comp-instance = ibin-instance.
    ls_comp-ibase = ibin-ibase.
    call function 'IBASE_COMP_DELETE'
      exporting
        i_comp              = ls_comp
      exceptions
        data_not_consistent = 1
        ibase_locked        = 2
        not_succesful       = 3
        others              = 4.
    if sy-subrc eq 0.
      call function 'IBASE_SAVE'.
    endif.
  endselect.
endform.                    " delete_ibasecomponent

Similar Messages

  • How can I delete the guest network from my airport. It was fine until the last update. It says my whole name's guest network which I do not want everyone seeing. There is no guest network setting in my airport utility.

    How can I delete the guest network from my airport. It was not showing up until I recently upgraded the airport. It now says my name's guest network and I don't like my name showing on the available network list! I am using a Verizon wireless modem with the wireless feature off.

    Open AirPort Utility, go to the Wireless tab and remove the check from the guest network check box.

  • How can we delete the icloud accounts from main website.Iam trying to log in to my account and it says that MAXIMUM NUMBER OF FREE ACCOUNTS ARE ACTIVATED?What can i do guys plz tell me?

    How can we delete the icloud accounts from main website.Iam trying to log in to my account and it says that MAXIMUM NUMBER OF FREE ACCOUNTS ARE ACTIVATED?What can i do guys plz tell me?

    You can't delete an account, you can only stop using it.  If you're getting that error message you won't be able to create a new account on your device.  Your only options are to re-use one of the accounts previously created, or create a new account on a different iOS device or Mac (running OS X Lion or higher), if you have one.

  • I currently have 2 Apps for each App.  ie: Photoshop CC and Photoshop CC (2014).  How can I delete the Older versions from my List ?

    I currently have 2 Apps for each App.  ie: Photoshop CC and Photoshop CC (2014).  How can I delete the Older versions from my List ?

    CC 2014 uses NEW plugins https://forums.adobe.com/thread/1499663
    -so do not uninstall the older CC programs if you use plugins in your programs
    http://helpx.adobe.com/creative-cloud/help/install-apps.html to install or uninstall

  • How can I delete the Threat History from VZ Protect on my Samsung S4

    How can I delete the Threat History from VZ Protect on my Samsung S4

    Remove Verizon Protect or disable it if you cannot remove it and install a reputable anti virus / anti malware application from Google Play.  I would use something along the lines of Lookout Mobile Security or AVG mobile, or Avast to name a few of them.  There are others that work very well and use very little system resources to do it.  I have used all of these and Lookout seems to work the best for me.
    Verizon Protect gives a lot of false positives on things

  • Can we delete the reversed material documents?

    Dear Experts,
    A PO has been Goods recieved several times and the corresponding material documents have also been reversed.
    Because of this, we have an issue in final Goods reciept.
    Can we advise our cleint to delete the revrsed material docs (Tbis is in production)?
    Is this advisabe?  We are only deleting those material documents which have been revresed.
    please suggest.
    Regards,
    Shashidhar

    Hi All,
    Thanks for the reply.
    I have explained my actual problem in another thread:  PU Val. GR Blckd St. exceeded by 1.000 EA : POXXXXXXX  Plant  Sloc
    When 107 posting done more than once, SAP considers the quantity of the
    first GR only during PGR in VL32N to post 109.
    Steps to replicate:
    PO qty = 500
    Inbound Delivery Qty = 500
    1st GR in MB01 with 107 for qty = 250
    2nd GR in MB01 with 107 for qty = 250
    Now Post GR in VL32N (remember delivery with stock type Q/X)
    Error message M7022 displayed (PU Val. GR.Blocked Qty Exceeded by 250)
    I tried to reverse both document and post a new 107 with qty = 500.  Now also I get the same error message in VL32N.
    But If I remove the old documents from EKBE table (which are actually reversed ) and retain only the latest 107 , then I am able to post GR without any error in VL32N
    Please help me.
    regards,
    Shashidhar

  • How can I delete the video tracks from an iDVD project?

    I try to use "canc" botton: the video track is deleted on menu, but when I try to insert a new video, iDVD (7.1.2) alert me:  "The maximum number of tracks (presentations and movies) is 99. You can not create other tracks."
    Then, how can I delete the video tracks (or presentations) really?
    Help me, please!

    Hi
    What is Your original material ?
    Did You create Your movie in iMovie/FinalCut ?
    iDVD is limited to 99 Chapters (in a movie) or 99 Photos in a SlideShow.
    What are You trying to create ?
    Yours Bengt W

  • How can I delete the recent searchlist from my email inbox?

    How can I delete my recent searchlist from my searchbox in my emails?

    Open AirPort Utility, go to the Wireless tab and remove the check from the guest network check box.

  • Dear All, thanks in advance i have one doubt please clarify this  what it is can we delete the payroll result in production client .yes we can delete the payroll result by PU01 Tcode .But my question is

    what are the scenarios we delete the payroll results ,can we suggest the client to delete the payroll result.

    Hi,
    I would not recommend that you delete the payroll results. What is your issue? Can you provide more background, there may be other options...
    Will

  • I have my current iPhone backed up onto iCloud but it also has my old iPhone on there as well. My new phone has all the data from my old iPhone on, so can I delete the old iPhone from the iCloud as its taking up memory? Thank you

    Sorry I wrote the question in the title!!
    I have my iPhone 4 and my new iPhone 5 on my iCloud storage. It's now nearly full as it still has my old phone on it.
    If I delete the phone from iCloud memory it won't delete the data from me new phone that was originally backed up from the old phone
    Via the cloud?
    Thank you very much! 

    Welcome to Apple Support Communities
    Of course. If you don't need your old phone's backup, you can remove it. Open Settings > iCloud > Storage and Backup > Manage Storage, select the old device backup and delete it.
    The new iPhone backup won't be deleted and you will keep everything on the new phone

  • Can I delete the previous backups from iCloud on my iPhone 5?

    I just got My iPhone 5 as well as a iPad 4. But I purchased the wrong iPad - before I returned the first one it backed itself up with iCloud and as we'll as the info from my iPhone 4S. It shows that I'm out of storage space but when I go to manage my storage I have info from I phone 4s and my first iPad 4 purchase. I exchanged my first iPad 4 a few days after because I wanted wifi as well as the other 3 or 4 g service.
    i Think I'm just taking up space but what's actually stored is just the same crap over and over.

    Go to settings-icloud-storage and back up and you can see each back up on your icloud, and delete the ones you don't want.

  • I purchased 9 songs on iTunes on my home computer.  They downloaded okay.  I updated my iPad and 3 of the songs duplicated on the iPad.  I resyncd and they still show up.  How can I delete the 3 duplicates from the iPad?

    Deleting duplicate iTunes purchases.

    You can swipe your finger across the songs in list view and a red delete button should pop up. Tap the button to delete the songs from the iPad.

  • HT1449 Now that i have my iTunes backed up on iCloud and iCloud Match running, can I delete the music files from my MacBook Pro?  It is running out of hard drive space.

    When I started this request in the Support section, I did not realize I was typing a subject into a header.  Sorry.
    My MacBook Pro is nearly full and I would like to rely on iCloud for my music with the hope of freeing up space by deleting the music files I have accumulated on this machine.  Can I just delete the files in the iTunes folder or is there some special procedure?
    Thanks in advance for your help on this.

    When I started this request in the Support section, I did not realize I was typing a subject into a header.  Sorry.
    My MacBook Pro is nearly full and I would like to rely on iCloud for my music with the hope of freeing up space by deleting the music files I have accumulated on this machine.  Can I just delete the files in the iTunes folder or is there some special procedure?
    Thanks in advance for your help on this.

  • How can I delete the gap tool from the tools panel?

    I find it useless and I want the type tool where it has always been.
    I'd like the pallets to be layed out like indsign CS3.
    Thank You.

    You can disable or remove it from the Extension Manager, but you can't remove the Page Tool that I know of and when you remove a tool from the toolbar things don't shift upwards, so you just have a gap where the Gap Tool used to be. Not all that helpful. If you do your toolbar as single column rather than the dual column that I prefer it's a non-issue.
    Hope that helps.

  • How can I delete the iCloud account from my ipad?

    I changed my e-mail on my itunes account and for some reason iCloud still thinks that the old email is still in use. I use the old password on it and it doesnt work. So basically i am stuck and i cannot get the iCloud account off of my iPad. Any ideas?

    If you are trying to activate an iPad or iPhone and it is asking for a previous owners Apple ID and password, you have encountered the Activation Lock. This is a security feature that prevents thieves from setting up and using a stolen or lost iPad or iPhone. You have no alternative. You must use the previous owner's password to get permission to use the device. If you cannot get the password your father put on the iPad you will never be able to activate the device and no one can help you do it.

Maybe you are looking for

  • Af:calendar and iframe in UCM web site page reloading automatically

    I want to put a simple af:calendar app w/in an iframe in a UCM (SiteStudio) developed web page. I've added <context-param> <param-name>oracle.adf.view.rich.security.FRAME_BUSTING</param-name> <param-value>never</param-value> </context-param> to web.x

  • Help With my Iphone 3gs please.

    When i connect my iphone 3gs itunes comes up and says "Itunes could not connect to this iphone. an unknown error (0xE8000012)"

  • TS1363 itunes locks up when iphone is connected

    itunes locks  up when i plug my iphone in

  • Getting Archieved data from BSID table

    Hi Experts, My requirement is to fetch the archieved data from BSID table . I am calling the Logical database 'SDF' using the function module LDB_PROCESS.but the call back routine is not triggering. Please help me with this issue. Thanks in advance..

  • Conversion of PR to PO

    Hi While creating a PO w.r.to a PR eventhough a PR has been converted to a PO(quantity completed)  we are able to create another PO . I want to stop this. How to go about it? Regards Dev