`
jgtang82
  • 浏览: 404595 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

创建/修改 Sales Order 时的约束 - 单项最大数量和总条目数

阅读更多

需求:
Restrict line item quantity and amount of a SO in spectial sales area, sales district and data&time period.

解决过程备案
1. 自定义表结构和创建Maintain Screen


2. 修改 USEREXIT_SAVE_DOCUMENT_PREPARE
 DATA: LV_UNIT_LIMIT LIKE ZSDLIMIT-UNIT_LIMIT,
      LV_LINE_LIMIT LIKE ZSDLIMIT-LINE_LIMIT,
      LV_LINE_AMT TYPE I VALUE 0.

* Get line item unit limit and line limit.
  SELECT SINGLE UNIT_LIMIT LINE_LIMIT
    INTO (LV_UNIT_LIMIT, LV_LINE_LIMIT)
    FROM ZSDLIMIT
    WHERE VKORG  = XVBAK-VKORG
      AND VTWEG  = XVBAK-VTWEG
      AND SPART  = XVBAK-SPART
      AND BZIRK  = XVBKD-BZIRK
      AND ( DATAB <= SY-DATUM )
      AND ( TIMAB <= SY-UZEIT )
      AND ( DATBI >= SY-DATUM OR DATBI = 0 )
      AND ( TIMBI >= SY-UZEIT OR TIMBI <= 0 ).

* Unit limit check
  IF LV_UNIT_LIMIT NE SPACE.
    LOOP AT XVBAP  
       WHERE UPDKZ NE 'D'
              AND ABGRU = SPACE.
              AND KWMENG > LV_UNIT_LIMIT.
      FCODE = FCODE_GLEICHE_SEITE. "=ENT1: continue
*      PERFORM FCODE_BEARBEITEN.
      MESSAGE E013(ZEDI) WITH LV_UNIT_LIMIT.
    ENDLOOP.
  ENDIF.

* Line limit check
  IF LV_LINE_LIMIT NE SPACE.
    LOOP AT XVBAP TRANSPORTING NO FIELDS
         WHERE UPDKZ NE 'D'
                AND ABGRU = SPACE.
       ADD 1 TO LV_LINE_AMT.
    ENDLOOP.

    IF LV_LINE_AMT > LV_LINE_LIMIT.
      FCODE = FCODE_GLEICHE_SEITE. "=ENT1: continue
      MESSAGE E014(ZEDI) WITH LV_LINE_LIMIT.
    ENDIF.
  ENDIF.

这里要感谢下SAP砍刀的帮忙, 没想到要用 TIMBI <= 0 的形式来判断一个时间类型的字段是否为initial。我试了TIMBI = SPACE / '' / '000000' / IS NULL / 0 均未得到正确结果,原因是Open SQL => Native SQL时参数值解析出的值 ( ' ' 会被解析成'00000', 0 / SPACE=>'000000') 和数据库中的值不一致,ABAP Dictionary TIMS类型的字段在DB (Oracle / SQL Server)中默认值为空字符串。

3. 在 USEREXIT_SAVE_DOCUMENT_PREPARED 中如果用MESSAGE EXXX报错时,需要加这样写:
    FCODE = FCODE_GLEICHE_SEITE. "=ENT1: continue
    MESSAGE E013(ZEDI) WITH LV_UNIT_LIMIT.
要不然在出现Error Message后,回车,SO line item中值不可修改,具体原因我也没深究,只是在Debug的时候发现FCODE_GLEICHE_SEITE的值为ENT1, 通过 t-code VFBS 可以知道它是Continue的意思,在报完Message后,系统会根据这个FCODE做一些操作。

4. 修改 USEREXIT_CHECK_XVBAP
在VA01 / VA02中系统每接受一个ITEM, 都会调用这个User Exit来check其中的数据,这里要注意的是要用这样的语句来获得当前的有效行数:
  LOOP AT XVBAP TRANSPORTING NO FIELDS
       WHERE UPDKZ NE 'D'
              AND ABGRU = SPACE.
    ADD 1 TO LV_LINE_AMT.
  ENDLOOP.
这里报Message时Message Type要用 "I", 要不对于Bundle/BOM物料就会因得不到后续处理而产生问题 另这里不需要修改FCODE.

参考
http://help.sap.com/saphelp_46c/helpdata/en/1c/f62c7dd435d1118b3f0060b03ca329/content.htm

分享到:
评论

相关推荐

    如何利用BAPI_SALESORDER_CHANGE修改vbak增强字段

    在SAP系统中,BAPI(Business Application Programming Interface)是一种标准接口,允许外部应用程序与SAP系统进行交互,包括创建、更改和查询业务数据。在本案例中,我们需要利用BAPI_SALESORDER_CHANGE来修改销售...

    EuroTech PC/104-通信模块COM-1286.pdf

    8. 通过e-mail(sales@eurotech.it)和官方网站(***)可以联系Eurotech S.p.A.获取更多关于该模块的信息。 综上所述,知识点主要围绕EuroTech COM-1286模块的技术规格、硬件组成、通信能力、应用领域以及配置选项...

    创建销售订单

    在调用BAPI_SALESORDER_CREATEFROMDAT2接口时,需要传入订单头信息、项目信息、伙伴信息和计划信息等参数。在本例中,我们首先定义了订单头信息、项目信息、伙伴信息和计划信息的结构字段,然后将这些字段赋值。最后...

    ERP系统信息化资料:SAP专业培训教材SD+SALES+ORDER+PROCESS-en.ppt

    ERP系统信息化资料:SAP专业培训教材SD+SALES+ORDER+PROCESS-en.ppt

    销售预测

    培训文件提供了从2010-02到2011-02各个商店和部门的每周销售数据。 对于每折,目标是根据当时的可用销售数据预测未来8周的销售数据(即,预测范围为2个月)。 这是通过调用mypredict()函数完成的。 然后,将与...

    HCS-Pre-sales-IP-2022.pdf

    摘要信息中,我们可以了解到HCS-Pre-sales-IP 2021的考试大纲和考试题目,涵盖了TCP/IP网络协议、网络HCS-Pre-sales等知识点。 知识点1: 交换机的包转发率/转发能力 交换机的包转发率/转发能力是衡量交换机性能的...

    2019营销技术生态全景图/marketing-technology-landscape-2019.pdf

    内容与体验(Content & Experience)是营销技术的一个重要领域,它关注于通过各种平台和媒介创建吸引人的内容,以此增强用户的参与度和体验。这包括内容管理系统(CMS)、视频营销、邮件营销、展示广告和程序化购买,...

    merchant-sales-order-merchant-user-gui:[只读] MerchantSalesOrderMerchantUserGui模块的子树拆分

    MerchantSalesOrderMerchantUserGui模块 MerchantSalesOrderMerchantUserGui提供Zed UI界面用于商家销售订单管理。...composer require spryker/merchant-sales-order-merchant-user-gui 文献资料

    matlab的素描代码-The-Sales-Person-Problem-TSP-SOM-Self-Organizing-MAP:使用自组织映

    Matlab和Python均可使用实现 入门 要使用代码,请使用以下命令: git clone https://github.com/Moh-Joshaghani/The-Sales-Person-Problem-TSP-SOM-Self-Organizing-MAP.git 运行Python实现 要运行,只需运行main.py...

    计算机职场常用英语词汇

    8. **Vice-President of Marketing/Sales** - 市场/销售副总裁,负责制定和执行公司的市场与销售战略。 ### 工作经验与职位描述 1. **Work Experience/History** - 工作经验/历史,记录个人职业生涯中的工作经历。...

    sales-order-system:Spring Web MVC + JPA + Hibernate + JSP + JSTL应用程序

    git clone https://github.com/colinbut/sales-order-system.git 进行本地构建 mvn clean package ...将编译源代码,打包战争文件 运行应用程序 进入在线应用程序目录并执行以下命令: mvn tomcat7:run-war 使用...

    Rossmann Store Sales 罗斯曼商店销售-数据集

    商店的销售受到许多因素的影响,包括促销,竞争,学校和州假期,季节性和地区性。成千上万的个人经理根据他们的独特情况预测销售额,结果的准确性可能会大相径庭。 test.csv sample_submission.csv store.csv ...

    HCS-Pre-sales-数通L2安全题库

    HCS-Pre-sales-数通L2安全题库,去考试一定要背题库

    19HCS-Pre-Sales-智能计算-TaiShan.pptx

    华为TaiShan处理器是基于ARMv8架构设计的高性能处理器,该架构授权使华为能够进行深度定制和设计,确保其产品能够在性能和能耗比方面达到业界领先水平。 - **Hi1616**: 这款处理器是业界首款支持多路互联的ARM...

    Magento-Order-Status-Image:向客户显示订单状态的简单方法

    截屏安装打开文件path/to/magento/app/design/frontend/default/default/template/sales/order/info.phtml和第 52 行,在 div order-info添加代码&lt;?php echo $this-&gt;getLayout()-&gt;createBlock('core/template')-&gt;...

    software-architecture-patterns.zip

    O’Reilly books may be purchased for educational, business, or sales promotional use. Online editions are also available for most titles (http://safaribooksonline.com). For more information, contact ...

    常用英语术语缩写--采购.docx

    61. TAM (Total Available Market) - 总可用市场:某一产品或服务的最大潜在市场规模。 62. TT (Telegraphic Transfer) - 电汇:通过电子方式转账资金。 63. UTS (Units to Stock) - 存货单位:用于库存管理的计量...

    The Complete Computer Vision Course with Python

    https://stacksocial.com/sales/the-complete-computer-vision-course-with-python Have you ever wondered how things like self-driving cars, Google image searches, Snapchat and Instagram filters are ...

Global site tag (gtag.js) - Google Analytics