SD-关于定价日期的设置

最近看了一篇关于定价日期的文章,我觉得写得很不错,特将自己的理解摘抄如下:

关于SD的定价日期在SAP系统中有三个配置与其相关,以及手工输入定价日期,具体如下:

1、订单类型的“定价日期建议“

这个字段定义了订单的”定价日期建议“的默认值取值方法。也就是说VBKD-PRSDT的默认值。

相关代码请参见:FV45KFKD_VBKD_FUELLEN_PRSDT。

2、条件类型的控制数据2”的“定价日期”

这个字段定义系统提取定价条件主数据时使用哪个日期作为依据,也就是系统读取价格主数据是可以使用定价日期,也可以使用订单日期等等。

相关代码请参见:

订单的定价日期的代码参见  单元:FV45KFKD_VBKD_FUELLEN_PRSDT。

发票的定价日期的代码参见  单元:LV60AA30

 

3、凭证复制控制“定价类型”   TCODE: VTFL

这个字段决定了发票的定价数据是否重新确定。

 

4、手工输入定价日期。

 在相关屏幕输入定价日期。

 

5、用户出口(User exit)

我们还可以使用下面的两个出口,通过代码来确定定价日期。

User exit MV45AFZZ, form USEREXIT_MOVE_FIELD_TO_VBKD to update field VBKD-PRSDT (pricing date).

User exit RV60AFZZ, form USEREXIT_PRICING_PREPARE_TKOMK to update field TKOMK-PRSDT (pricing date).

 

6、系统读取“价格日期”按如下优先级:

订单的定价日期的优先级:

1 -Pricing date proposal for price condition defined in customizing

-Pricing date for sales order line item

3-Pricing date for sales order header

 

发票的定价日期的优先级

如果在复制设置了“定价类型”为B, C:

1-Pricing date proposal for price condition defined in customizing

2-Pricing date set in VF04-VF01

3-Pricing date from actual PGI

4-Pricing date from sales order

如果在复制设置了“定价类型”为非重新确定价格的,价格数据将直接从订单拷贝。

<think>嗯,用户的问题是关于SAP S/4HANA Cloud中的扩展点YY1_SD_SLS_CHECK_BEFORE_SAVE,特别是与定价日期和当前日期相关的字段。我需要先理解这个扩展点的用途和上下文。根据用户提供的引用,这个扩展点可能用于销售订单保存前的检查逻辑,比如验证定价日期是否符合某些业务规则。 首先,我需要确定在YY1_SD_SLS_CHECK_BEFORE_SAVE中可用的字段。通常,扩展点会提供访问相关业务对象字段的能力。对于销售订单,定价日期可能在订单头或行项目中。常见的定价日期字段可能像PRSDT(定价日期)或者KODAT(条件日期)。当前日期可能通过系统函数获取,比如sy-datum或者使用CL_ABAP_CONTEXT_INFO=>GET_SYSTEM_DATE( )。 接下来,用户可能想知道如何在自定义逻辑中访问这些字段。例如,检查定价日期是否早于当前日期,或者是否在某个有效期内。需要确保引用的字段在业务对象中存在,并且扩展点允许访问这些字段。 另外,用户提供的引用[^1]提到在采购订单中添加“开票名称”,这说明自定义字段需要增强相应的业务对象。类似地,在销售订单中,可能需要增强相关的结构来包含自定义字段,然后在扩展点逻辑中使用它们。 还要考虑官方文档,比如引用[^2]提到的SD模块教材,可能提供关于定价日期字段的详细信息。可能需要查阅这些资料来确认正确的字段名称和用法。 最后,用户可能需要具体的代码示例,比如如何获取定价日期和系统日期,并进行比较。需要确保代码语法正确,并符合SAP S/4HANA Cloud的自定义规则,比如使用ABAP Cloud的受限框架。</think>在SAP S/4HANA Cloud中,扩展点$YY1\_SD\_SLS\_CHECK\_BEFORE\_SAVE$用于销售订单保存前的校验逻辑[^1]。关于定价日期和当前日期字段的获取方式如下: ### 一、相关字段说明 1. **定价日期字段** - 在销售订单业务对象中,定价日期通常存储在: $$VBAK.PRSDT$$(订单头定价日期) $$VBAP.KODAT$$(行项目条件日期- 在扩展点逻辑中可通过参数$ls_sales_order$访问: ```abap DATA(lv_pricing_date) = ls_sales_order-pricing_date. "示例字段路径 ``` 2. **当前日期字段** - 系统日期可通过标准函数获取: ```abap DATA(lv_current_date) = cl_abap_context_info=>get_system_date( ). ``` ### 二、实现步骤 1. 在自定义逻辑中声明字段引用: ```abap METHOD yif_yy1_sd_sls_check_before_save~execute. DATA: ls_sales_order TYPE y1_sd_sls_check_before_save. ls_sales_order = is_sales_order. "获取定价日期与当前日期 DATA(lv_pricing_date) = ls_sales_order-vbak-prsdt. DATA(lv_current_date) = cl_abap_context_info=>get_system_date( ). "业务逻辑示例:校验定价日期不超过当前日期 IF lv_pricing_date > lv_current_date. APPEND VALUE #( message_type = 'E' message_text = '定价日期不能晚于当前日期' ) TO ct_messages. ENDIF. ENDMETHOD. ``` ### 三、字段增强验证 若需访问自定义字段,需通过**Custom Fields and Logic**应用扩展相关业务对象(如$SalesOrder$),并在扩展点中激活字段可见性[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值