一段用API批量修改SAP CRM产品主数据的ABAP代码

简介: 一段用API批量修改SAP CRM产品主数据的ABAP代码

*&---------------------------------------------------------------------*

*& Report  PROD_MULTIPLE_CHANGE

*&

*&---------------------------------------------------------------------*

*&

*&

*&---------------------------------------------------------------------*

REPORT ZPROD_MULTIPLE_CHANGE.

PARAMETERS: prd1 type comm_product-product_id OBLIGATORY DEFAULT 'ZJERRYTEST11241',

           prd2 type comm_product-product_id OBLIGATORY DEFAULT 'ZJERRYTEST1124'.

DATA:   lt_productm    TYPE  comt_product_maintain_api_extt,

       ls_productm    TYPE  comt_product_maintain_api_ext,

       lt_sale_data   TYPE CRMT_CRMM_PR_SALESH_MAINTAIN_T,

       lt_prod_data   TYPE COMT_PRODUCT_MAINTAIN_API_SETT,

       ls_prod_data   LIKE LINE OF lt_prod_data,

       et_bapireturnh TYPE bapiret2_tab,

       lt_product     TYPE comt_product_s_tab,

       lv_operation   TYPE char1 VALUE 'U',

       lt_prod_out    TYPE comt_product_tab_guid,

       lt_shorttext   TYPE comt_pr_shtext_maintain_tab,

       ls_shorttext   LIKE LINE OF lt_shorttext,

       lt_prod_id     TYPE STANDARD TABLE OF comm_product-product_id,

       lt_prod_db     TYPE STANDARD TABLE OF comm_product-product_guid.

START-OF-SELECTION.

 APPEND prd1 TO lt_prod_id.

 APPEND prd2 TO lt_prod_id.

 LOOP AT lt_prod_id ASSIGNING FIELD-SYMBOL(<id>).

   CALL FUNCTION 'CONVERSION_EXIT_PRID1_INPUT'

     EXPORTING

       input  = <id>

     IMPORTING

       output = <id>.

 ENDLOOP.

 SELECT product_guid INTO TABLE lt_prod_db FROM comm_product FOR ALL ENTRIES IN lt_prod_id

    WHERE product_id = lt_prod_id-table_line.

 ASSERT sy-subrc = 0.

 LOOP AT lt_prod_db ASSIGNING FIELD-SYMBOL(<guid>).

   DATA(ls_product) = VALUE comt_product_s( product_guid = <guid> ).

   APPEND ls_product TO lt_product.

 ENDLOOP.

 CALL FUNCTION 'COM_PRODUCT_READ_MULTIPLE'

   EXPORTING

     it_product = lt_product

   IMPORTING

     et_product = lt_prod_out.

 PERFORM fill_prod_data.

 PERFORM change_and_save using ABAP_FALSE.

 PERFORM prepare_for_second_insert CHANGING lt_productm.

 PERFORM change_and_save USING ABAP_TRUE.

 FORM fill_prod_data.

 LOOP AT lt_prod_out ASSIGNING FIELD-SYMBOL(<result>).

   MOVE-CORRESPONDING <result> TO ls_productm-header-com_product.

   ls_productm-header-pr_number = sy-tabix.

   PERFORM fill_sales_area USING ls_productm-header-com_product-product_guid lv_operation CHANGING lt_sale_data .

   ls_prod_data-settype_id = 'CRMM_PR_SALESH'.

   GET REFERENCE OF lt_sale_data INTO ls_prod_data-data.

   CLEAR: lt_prod_data.

   APPEND ls_prod_data TO lt_prod_data.

   ls_productm-data = lt_prod_data.

   APPEND ls_productm TO lt_productm.

 ENDLOOP.

 ENDFORM.

 FORM prepare_for_second_insert CHANGING ct_product TYPE comt_product_maintain_api_extt.

   CLEAR: ct_product.

   PERFORM fill_prod_data.

 ENDFORM.

 FORM fill_sales_area  USING guid TYPE comm_product-product_guid operation TYPE char1 CHANGING ct_sales TYPE CRMT_CRMM_PR_SALESH_MAINTAIN_T.

    CLEAR: ct_sales.

    FIELD-SYMBOLS: <line> LIKE LINE OF ct_sales.

    APPEND INITIAL LINE TO ct_sales ASSIGNING <line>.

    <line>-update_type = operation.

    <line>-relation-client = sy-mandt.

    <line>-relation-product_guid = guid.

    <line>-relation-fragment_guid = '380BDF7B502D63F7E10000009B38FA0B'.

    <line>-relation-sales_org = 'O 50003059'.

    <line>-relation-distr_chan = '01'.

    <line>-relation-logsys = 'AG3CLNT001'.

 ENDFORM.

 FORM change_and_save USING save type abap_bool.

  CLEAR: et_bapireturnh.

  CALL FUNCTION 'COM_PRODUCT_MAINTAIN_MULT_API'

   EXPORTING

     iv_check_only                 = ' '

     iv_suppress_inactive          = 'X'

     iv_activate_inactive_products = 'X'

   IMPORTING

     et_bapireturn                 = et_bapireturnh

   CHANGING

     ct_product                    = lt_productm

   EXCEPTIONS

     internal_error                = 1

     OTHERS                        = 2.

 LOOP AT et_bapireturnh ASSIGNING FIELD-SYMBOL(<error>).

   WRITE: / 'Error: ', <error>-message COLOR COL_NEGATIVE.

 ENDLOOP.

 CHECK et_bapireturnh IS INITIAL.

 IF save = 'X'.

  CALL FUNCTION 'CRM_PRODUCT_UI_SAVE'

    EXPORTING

      iv_update_task = abap_false.

  ASSERT sy-subrc = 0.

  COMMIT WORK AND WAIT.

  WRITE: / 'Mass change finished successfully' COLOR COL_POSITIVE.

ENDIf.

ENDFORM.

相关文章
|
16天前
|
人工智能 搜索推荐 Serverless
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
37 7
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
|
1月前
|
中间件
什么是 SAP CRM 系统里的 Initial Download
什么是 SAP CRM 系统里的 Initial Download
23 0
|
1月前
|
中间件
什么是 SAP CRM Initial Download
什么是 SAP CRM Initial Download
20 0
|
1月前
|
存储 数据管理 数据处理
SAP CRM 里 Attachment 搜索的实现逻辑介绍
SAP CRM 里 Attachment 搜索的实现逻辑介绍
19 0
|
12天前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
19 0
|
12天前
|
Java BI API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
SAP Cloud for Customer 里如何通过 ABSL 二次开发方式消费 SAP S/4HANA 系统的 API
12 0
|
16天前
|
数据库
SAP CRM产品主数据无法根据产品描述字段进行搜索的原因
SAP CRM产品主数据无法根据产品描述字段进行搜索的原因
15 5
|
16天前
|
Web App开发 开发者 存储
介绍一个 webp 格式转 png 格式的软件:XNConvert
介绍一个 webp 格式转 png 格式的软件:XNConvert
21 6
介绍一个 webp 格式转 png 格式的软件:XNConvert
|
16天前
什么是 SAP ABAP 里的 Subscreen
什么是 SAP ABAP 里的 Subscreen
13 1
什么是 SAP ABAP 里的 Subscreen
|
27天前
CRM软件推荐2024:五款顶级产品解析,助您找到最佳选项!
2024年,随着民营经济发展,CRM软件成为企业增长的关键。本文推荐了五款高好评CRM:1) Zoho CRM,以其易用性和性价比受青睐;2) Zoho Bigin,轻量级选项适合小微企业;3) Salesforce,CRM巨头,但国内售后不足;4) Hubspot,提供免费版,付费版价格较高;5) Pipedrive,专注小型团队。企业在选择时应考虑试用体验和服务质量。
31 6

热门文章

最新文章