SAP CRM订单数据库表CRMD_SHIPPING的填充原理

简介: SAP CRM订单数据库表CRMD_SHIPPING的填充原理

In my recent project I need to figure out the logic how fields in table CRMD_PRICING are populated.


Take several of them highlighted below for example:



image.png

image.pngHere is the test data I used to demonstrate the scenario.


I have created a corporate account which is assigned to Sales Organization O 50000732, Distribution Channel 01, Division 02.


image.pngAnd in Pricing->Pricing in the Business Transaction->Determine Pricing Procedures, I maintain a corresponding determination procedure:

image.pngThe document pricing procedure for my own transaction type ZSRV is maintained as S:image.pngFor customer pricing procedure flag, it is maintained in the sales data in my corporate account:

image.pngSo far all customizing are done.

Now create a new Service order, enter that corporate account as Sold-to Party:

image.pngfunction module CRM_PRICING_PARTNER_CHANGE_EC will be called.


Inside it CRM_PRICING_MERGE_FROM_BUPA_OW will be called to get the pricing data from that corporate account.


image.pngThose data are read from account and stored in variable ls_data:image.pngimage.pngLater they are copied to pricing workarea field by field:image.pngThis is how pricing set is created.

Once you saved the service order successfully,

image.pngExecute the report below to directly print out the data in CRMD_SHIPPING which belongs to this service order:image.pngREPORT tool_display_order_price_head.

PARAMETERS: objid TYPE crmd_orderadm_h-object_id OBLIGATORY DEFAULT '5700000507',

            obtype TYPE crmd_orderadm_h-process_type OBLIGATORY DEFAULT 'SRVO'.

SELECT SINGLE guid INTO @DATA(lv_guid) FROM crmd_orderadm_h

   WHERE object_id = @objid AND process_type = @obtype.

IF sy-subrc <> 0.

 WRITE:/ ' Service Order does not exist'.

 RETURN.

ENDIF.

SELECT SINGLE * INTO @DATA(ls_link) FROM crmd_link

  WHERE guid_hi = @lv_guid AND objtype_hi = '05' AND objtype_set = '09'.

IF sy-subrc <> 0.

 WRITE:/ 'no price data exists for this order'.

 RETURN.

ENDIF.

SELECT SINGLE * INTO @DATA(ls_price) FROM crmd_pricing

  WHERE guid = @ls_link-guid_set.

IF sy-subrc <> 0.

 WRITE:/ 'no price data exists for this order'.

 RETURN.

ENDIF.

cl_crm_1order_set_print_tool=>print_structure( ls_price ).Source code of CL_CRM_1ORDER_SET_PRINT_TOOL:CLASS cl_crm_1order_set_print_tool DEFINITION

 PUBLIC

 FINAL

 CREATE PUBLIC .

 PUBLIC SECTION.

   CLASS-METHODS print_structure

     IMPORTING

       !is_data TYPE any .

 PROTECTED SECTION.

 PRIVATE SECTION.

ENDCLASS.

CLASS CL_CRM_1ORDER_SET_PRINT_TOOL IMPLEMENTATION.

 METHOD print_structure.

   DATA(lo_struct_descr) = CAST cl_abap_structdescr( cl_abap_datadescr=>describe_by_data( is_data ) ).

   DATA(lt_comp) = lo_struct_descr->components.

   DO.

     ASSIGN COMPONENT sy-index OF STRUCTURE is_data TO FIELD-SYMBOL(<data>).

     IF sy-subrc <> 0.

       RETURN.

     ENDIF.

     READ TABLE lt_comp ASSIGNING FIELD-SYMBOL(<comp>) INDEX sy-index.

     IF <data> IS NOT INITIAL.

        DATA(lv_color) = sy-index MOD 4.

        DATA(lv_print) = |Field: { <comp>-name }, value: { <data> } |.

        CASE lv_color.

           WHEN 0.

             WRITE: / lv_print  COLOR COL_NEGATIVE.

           WHEN 1.

             WRITE: / lv_print  COLOR COL_POSITIVE.

           WHEN 2.

             WRITE: / lv_print  COLOR COL_GROUP.

           WHEN 3.

             WRITE: / lv_print  COLOR COL_KEY.

        ENDCASE.

     ENDIF.

   ENDDO.

 ENDMETHOD.

ENDCLASS.

相关文章
|
6月前
|
人工智能 搜索推荐 Serverless
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
使用金庸的著作,来测试阿里通义千问最新开放的长文档处理功能
|
6月前
|
存储
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
使用 ABAP 代码打印出 SAP CRM 系统里所有维护了 Sales Area 的 business partner id
|
6月前
|
存储 安全 数据库
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
什么是 SAP ABAP 数据库表的 Display Maintenance Allowed with Restrictions
|
6月前
|
Web App开发 开发者 存储
介绍一个 webp 格式转 png 格式的软件:XNConvert
介绍一个 webp 格式转 png 格式的软件:XNConvert
介绍一个 webp 格式转 png 格式的软件:XNConvert
|
6月前
|
数据库
SAP CRM产品主数据无法根据产品描述字段进行搜索的原因
SAP CRM产品主数据无法根据产品描述字段进行搜索的原因
|
19天前
|
存储 SQL 关系型数据库
Mysql学习笔记(二):数据库命令行代码总结
这篇文章是关于MySQL数据库命令行操作的总结,包括登录、退出、查看时间与版本、数据库和数据表的基本操作(如创建、删除、查看)、数据的增删改查等。它还涉及了如何通过SQL语句进行条件查询、模糊查询、范围查询和限制查询,以及如何进行表结构的修改。这些内容对于初学者来说非常实用,是学习MySQL数据库管理的基础。
80 6
|
17天前
|
存储 关系型数据库 MySQL
Mysql(4)—数据库索引
数据库索引是用于提高数据检索效率的数据结构,类似于书籍中的索引。它允许用户快速找到数据,而无需扫描整个表。MySQL中的索引可以显著提升查询速度,使数据库操作更加高效。索引的发展经历了从无索引、简单索引到B-树、哈希索引、位图索引、全文索引等多个阶段。
53 3
Mysql(4)—数据库索引
|
2天前
|
关系型数据库 MySQL Linux
在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。
本文介绍了在 CentOS 7 中通过编译源码方式安装 MySQL 数据库的详细步骤,包括准备工作、下载源码、编译安装、配置 MySQL 服务、登录设置等。同时,文章还对比了编译源码安装与使用 RPM 包安装的优缺点,帮助读者根据需求选择最合适的方法。通过具体案例,展示了编译源码安装的灵活性和定制性。
20 2
|
5天前
|
存储 关系型数据库 MySQL
MySQL vs. PostgreSQL:选择适合你的开源数据库
在众多开源数据库中,MySQL和PostgreSQL无疑是最受欢迎的两个。它们都有着强大的功能、广泛的社区支持和丰富的生态系统。然而,它们在设计理念、性能特点、功能特性等方面存在着显著的差异。本文将从这三个方面对MySQL和PostgreSQL进行比较,以帮助您选择更适合您需求的开源数据库。
23 4
|
11天前
|
存储 关系型数据库 MySQL
如何在MySQL中创建数据库?
【10月更文挑战第16天】如何在MySQL中创建数据库?