SAP前台维护SD模块价格 vk11/vk12/vk13

对应的BAPI:BAPI_PRICES_CONDITIONS

假设维护A类价格时,当期有效价格期间是 20220101~20221231

1)本次维护价格期间如果是 20230101~20231231 (即本次维护与当期有效价格无交叉)

2)本次维护价格期间如果是 20220301~20220531 (即本次维护被当期有效价格包含)

3)本次维护价格期间如果是 20221201~20230531 (即本次维护被当期有效价格部分交叉)

抑或是 20211201-20220301 (实际情况可能不存在,一般要求起始时间>当前时间)

4)本次维护价格期间如果是 20211201~20230531 (即本次维护包含当期有效价格)

==================================================================

第一种情况:

前台操作:vk11 新增价格维护接口

BAPI:直接新增

第二种情况:VK11新增时,会将当期有效价格期间拆分成2段,前后都是当期价格,中间一段是新维护价格。

BAPI:先对当期有效价格期间尽心拆分,原则上拆分成2段。然后新增价格

第三种:VK11新增时,会将当期有效价格期间拆分成2段,前/后都是当期价格。交叉部分是新维护价格

BAPI:先对当期有效价格期间的起始/截止日期修改。然后新增维护价格

第四种:VK11 新增时,直接删除当期有效价格,维护新价格

BAPI:删除当期有效价格记录,维护新价格

BAPI:

 DATA:LITEM LIKE ZSTRU_SD_PRICE_CONDITION.DATA:L_KEY   LIKE BAPICONDCT-VARKEY.DATA:LPDATE TYPE SY-DATUM.DATA:LKUNNR LIKE KNA1-KUNNR,LMATNR LIKE MARA-MATNR.data:lflg TYPE ABAP_BOOL.DATA: H_VARKEY(255),H_COND_UNIT TYPE MEINS .DATA: LT_BAPICONDCT  TYPE  BAPICONDCT OCCURS 0  ,  "WA_BAPICONDCT  TYPE  BAPICONDCT ,LT_BAPICONDHD  TYPE  BAPICONDHD OCCURS 0  ,  "WA_BAPICONDHD  TYPE  BAPICONDHD ,LT_BAPICONDIT  TYPE  BAPICONDIT OCCURS 0  ,WA_BAPICONDIT  TYPE  BAPICONDIT ,LT_BAPICONDQS  TYPE  BAPICONDQS OCCURS 0  ,WA_BAPICONDQS  TYPE  BAPICONDQS ,LT_BAPICONDVS  TYPE  BAPICONDVS OCCURS 0  ,WA_BAPICONDVS  TYPE  BAPICONDVS .DATA:LITEMRET LIKE ZOBJDESC,L_MESSAGE TYPE MSGTXT.DATA: LT_BAPIRET2 LIKE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE .DATA: RET    TYPE  BAPIRET2 .DATA: LT_BAPIKNUMHS TYPE BAPIKNUMHS  OCCURS  0 .DATA: LT_MEM_INITIAL TYPE  CND_MEM_INITIAL OCCURS 0 .lflg = ABAP_TRUE.EV_STATUS = 'S'.EV_MESSAGE = '成功'.LOOP AT ITEMS  INTO LITEM.IF LITEM-VALID_TO < LITEM-VALID_FROM OR LITEM-VALID_FROM <= SY-DATUM.LFLG = ABAP_FALSE.CONTINUE.ENDIF.CLEAR LT_BAPICONDCT[].CLEAR WA_BAPICONDCT.CLEAR LT_BAPICONDHD[].CLEAR WA_BAPICONDHD.CLEAR LT_BAPICONDIT[].CLEAR WA_BAPICONDIT.IF COND_USAGE  = 'A' AND TABLE_NO = '920'.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT  = LITEM-KUNNRIMPORTINGOUTPUT = LKUNNR.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT  = LITEM-MATNRIMPORTINGOUTPUT = LMATNR.CONCATENATE LKUNNR  LMATNR LITEM-WAERS INTO H_VARKEY.ENDIF.SELECT  SINGLE MEINS FROM MARAINTO H_COND_UNIT  WHERE MATNR = LMATNR.WA_BAPICONDCT-TABLE_NO = TABLE_NO."'941'.WA_BAPICONDCT-APPLICATIO = APPLICATIO."'V'.WA_BAPICONDCT-COND_USAGE = COND_USAGE."'A'.      "条件表用途 ‘A' 定价WA_BAPICONDCT-COND_TYPE = COND_TYPE."I_KSCHL.    "定价条件WA_BAPICONDCT-OPERATION = OPERATION."'009'.     "消息功能 : 003 DEL ; 004 MODIFY ;005 REPLACE 009 INITIAL
*    WA_BAPICONDCT-OPERATION = '004'.         "更改WA_BAPICONDCT-VARKEY = H_VARKEY.WA_BAPICONDCT-VALID_TO = LITEM-VALID_TO.WA_BAPICONDCT-VALID_FROM = LITEM-VALID_FROM.WA_BAPICONDCT-COND_NO = '$000000001'.   "创建APPEND WA_BAPICONDCT TO LT_BAPICONDCT.
*KONHWA_BAPICONDHD-OPERATION = OPERATION."'009'.
*WA_BAPICONDHD-OPERATION = '004'.WA_BAPICONDHD-COND_NO = '$000000001'.
*WA_BAPICONDHD-COND_NO = '0003224015'.WA_BAPICONDHD-CREATED_BY = SY-UNAME.WA_BAPICONDHD-CREAT_DATE = SY-DATUM.WA_BAPICONDHD-COND_USAGE = COND_USAGE."'A'.WA_BAPICONDHD-TABLE_NO = TABLE_NO."'941'.WA_BAPICONDHD-APPLICATIO = APPLICATIO."'V'.WA_BAPICONDHD-COND_TYPE = COND_TYPE."I_KSCHL.    "WA_BAPICONDHD-VARKEY = H_VARKEY.WA_BAPICONDHD-VALID_FROM = LITEM-VALID_FROM.WA_BAPICONDHD-VALID_TO = LITEM-VALID_TO.APPEND WA_BAPICONDHD TO  LT_BAPICONDHD .
*KONPWA_BAPICONDIT-OPERATION = OPERATION."'009'.WA_BAPICONDIT-COND_NO = '$000000001'.WA_BAPICONDIT-COND_COUNT = '01'.     "条件序列号WA_BAPICONDIT-APPLICATIO = APPLICATIO."'V'.WA_BAPICONDIT-COND_TYPE =  COND_TYPE."I_KSCHL.    "WA_BAPICONDIT-SCALETYPE = 'A'.       "STFKZ STAFFELSOORTWA_BAPICONDIT-SCALEBASIN = ''.      "KZBZG TEKEN:REKENEENHEID "  WA_BAPICONDIT-SCALEBASIN = 'C'. 存在数量等级WA_BAPICONDIT-SCALE_QTY = '0'.       "KSTBM CONDITIESTAFFELBASIS HOEVEELHEIDWA_BAPICONDIT-COND_P_UNT = '1'.      "KPEIN PRIJSEENHEIDWA_BAPICONDIT-COND_UNIT = H_COND_UNIT.      "KMEIN CONDITIE-HOEVEELHEIDSEENHEIDWA_BAPICONDIT-CALCTYPCON = 'C'.      "KRECH CONDITIE-REKENREGELWA_BAPICONDIT-COND_VALUE = LITEM-COND_VALUE.WA_BAPICONDIT-CONDCURR = LITEM-WAERS.APPEND  WA_BAPICONDIT  TO LT_BAPICONDIT.if  LFLG = ABAP_TRUE.LPDATE = LITEM-VALID_From - 1.CALL FUNCTION 'ZRFC_SD_KNA_PART_PRICE_M'EXPORTINGPDATBI = LPDATEKUNNR = LITEM-KUNNRMATNR = LITEM-MATNRWAERK = LITEM-WAERSCURRDAT = LITEM-VALID_FROMCOND_TYPE = COND_TYPETABLE_NO = TABLE_NOAPPLICATIO = APPLICATIOCOND_USAGE = COND_USAGEOPERATION = '004'.commit WORK AND WAIT.CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
* EXPORTING
*   PI_INITIALMODE             = ' '
*   PI_BLOCKNUMBER             =
*   PI_PHYSICAL_DELETION       =TABLESTI_BAPICONDCT              = LT_BAPICONDCTTI_BAPICONDHD              = LT_BAPICONDHDTI_BAPICONDIT              = LT_BAPICONDITTI_BAPICONDQS              = LT_BAPICONDQSTI_BAPICONDVS              = LT_BAPICONDVSTO_BAPIRET2                = LT_BAPIRET2TO_BAPIKNUMHS              = LT_BAPIKNUMHSTO_MEM_INITIAL             = LT_MEM_INITIALEXCEPTIONSUPDATE_ERROR               = 1OTHERS                     = 2.IF SY-SUBRC = 0.LOOP AT LT_BAPIRET2 WHERE TYPE EQ 'A' OR TYPE EQ 'E'.L_MESSAGE = L_MESSAGE && LT_BAPIRET2-MESSAGE.ENDLOOP.IF SY-SUBRC EQ 0.EV_STATUS = 'E'.EV_MESSAGE = '客户价格更新失败:' && L_MESSAGE.LITEMRET-OBJDESC = H_VARKEY.LITEMRET-OBJKEY = EV_STATUS.CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.ELSE.LITEMRET-OBJDESC = H_VARKEY.LITEMRET-OBJKEY = 'S'.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.ENDIF.APPEND LITEMRET TO ITEMSMSG.ELSE.EV_STATUS = 'E'.EV_MESSAGE = '客户价格更新失败:' && L_MESSAGE.LITEMRET-OBJDESC = H_VARKEY.LITEMRET-OBJKEY = EV_STATUS.APPEND LITEMRET TO ITEMSMSG.ENDIF.else.EV_STATUS = 'E'.EV_MESSAGE = '客户价格更新失败:有效期间不正确'.LITEMRET-OBJDESC = H_VARKEY.LITEMRET-OBJKEY = EV_STATUS.APPEND LITEMRET TO ITEMSMSG.endif.CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'IMPORTINGRETURN = RET.ENDLOOP.
ENDFUNCTION.
FUNCTION ZRFC_SD_KNA_PART_PRICE_M.
*"----------------------------------------------------------------------
*"*"局部接口:
*"  IMPORTING
*"     VALUE(PDATBI) TYPE  SY-DATUM DEFAULT SY-DATUM
*"     VALUE(KUNNR) TYPE  KUNNR OPTIONAL
*"     VALUE(MATNR) TYPE  MATNR OPTIONAL
*"     VALUE(WAERK) TYPE  WAERK OPTIONAL
*"     VALUE(CURRDAT) TYPE  SY-DATUM DEFAULT SY-DATUM
*"     VALUE(COND_TYPE) TYPE  CHAR4 DEFAULT 'ZPR1'
*"     VALUE(TABLE_NO) TYPE  NUMC3 DEFAULT '920'
*"     VALUE(APPLICATIO) TYPE  CHAR1 DEFAULT 'V'
*"     VALUE(COND_USAGE) TYPE  CHAR1 DEFAULT 'A'
*"     VALUE(OPERATION) TYPE  CHAR3 DEFAULT '004'
*"  EXPORTING
*"     VALUE(EV_STATUS) TYPE  ZE_STATUS
*"     VALUE(EV_MESSAGE) TYPE  MSGTXT
*"----------------------------------------------------------------------data:lA920 like A920 OCCURS 0 WITH HEADER LINE,lvalue TYPE konp-KBETR,WA920 TYPE A920,LT_BAPICONDCT  TYPE  BAPICONDCT OCCURS 0  ,  "WA_BAPICONDCT  TYPE  BAPICONDCT ,LT_BAPICONDHD  TYPE  BAPICONDHD OCCURS 0  ,  "WA_BAPICONDHD  TYPE  BAPICONDHD ,LT_BAPICONDIT  TYPE  BAPICONDIT OCCURS 0  ,WA_BAPICONDIT  TYPE  BAPICONDIT ,LT_BAPICONDQS  TYPE  BAPICONDQS OCCURS 0  ,WA_BAPICONDQS  TYPE  BAPICONDQS ,LT_BAPICONDVS  TYPE  BAPICONDVS OCCURS 0  ,WA_BAPICONDVS  TYPE  BAPICONDVS .FIELD-SYMBOLS: <FS1> TYPE BAPICONDCT,<fs2> TYPE BAPICONDHD,<fs3> TYPE BAPICONDIT.DATA: LT_BAPIRET2 LIKE STANDARD TABLE OF BAPIRET2 WITH HEADER LINE .DATA: LT_BAPIKNUMHS TYPE BAPIKNUMHS  OCCURS  0 .DATA: LT_MEM_INITIAL TYPE  CND_MEM_INITIAL OCCURS 0 .DATA: H_VARKEY(255),H_COND_UNIT TYPE MEINS .DATA:LKUNNR LIKE KNA1-KUNNR,LMATNR LIKE MARA-MATNR.DATA:L_KEY   LIKE BAPICONDCT-VARKEY.SELECT  * INTO TABLE LA920FROM  A920WHERE A920~DATBI > CURRDAT AND DATAB < CURRDAT ANDMATNR  = MATNR AND KUNNR  = KUNNR AND WAERK  = WAERK and KSCHL = COND_TYPE and KAPPL = APPLICATIO.IF LA920[] IS NOT INITIAL.READ TABLE LA920 INTO WA920 INDEX 1.SELECT SINGLE KBETR INTO LVALUEFROM KONPWHERE KONP~KNUMH  = WA920-KNUMH.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT  = WA920-KUNNRIMPORTINGOUTPUT = LKUNNR.CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'EXPORTINGINPUT  = WA920-MATNRIMPORTINGOUTPUT = LMATNR.CONCATENATE LKUNNR  LMATNR waerk INTO H_VARKEY.SELECT  SINGLE MEINS FROM MARAINTO H_COND_UNIT  WHERE MATNR = LMATNR.WA_BAPICONDCT-TABLE_NO = TABLE_NO."'941'.WA_BAPICONDCT-APPLICATIO = APPLICATIO."'V'.WA_BAPICONDCT-COND_USAGE = COND_USAGE."'A'.      "条件表用途 ‘A' 定价WA_BAPICONDCT-COND_TYPE = COND_TYPE."I_KSCHL.    "定价条件WA_BAPICONDCT-OPERATION = '003'."'009'.     "消息功能 : 003 DEL ; 004 MODIFY ;005 REPLACE 009 INITIAL
*    WA_BAPICONDCT-OPERATION = '004'.         "更改WA_BAPICONDCT-VARKEY = H_VARKEY.WA_BAPICONDCT-VALID_TO = WA920-DATBI.WA_BAPICONDCT-VALID_FROM = WA920-DATAB.WA_BAPICONDCT-COND_NO = WA920-KNUMH.   "创建APPEND WA_BAPICONDCT TO LT_BAPICONDCT.WA_BAPICONDHD-OPERATION = '003'."'009'.
*WA_BAPICONDHD-OPERATION = '004'.WA_BAPICONDHD-COND_NO = WA920-KNUMH.
*WA_BAPICONDHD-COND_NO = '0003224015'.WA_BAPICONDHD-CREATED_BY = SY-UNAME.WA_BAPICONDHD-CREAT_DATE = SY-DATUM.WA_BAPICONDHD-COND_USAGE = COND_USAGE."'A'.WA_BAPICONDHD-TABLE_NO = TABLE_NO."'941'.WA_BAPICONDHD-APPLICATIO = APPLICATIO."'V'.WA_BAPICONDHD-COND_TYPE = COND_TYPE."I_KSCHL.    "WA_BAPICONDHD-VARKEY = H_VARKEY.WA_BAPICONDHD-VALID_FROM = WA920-DATAB.WA_BAPICONDHD-VALID_TO = WA920-DATBI.APPEND WA_BAPICONDHD TO  LT_BAPICONDHD .WA_BAPICONDIT-OPERATION = '003'."'009'.WA_BAPICONDIT-COND_NO = WA920-KNUMH. "'$000000001'.WA_BAPICONDIT-COND_COUNT = '01'.     "条件序列号WA_BAPICONDIT-APPLICATIO = APPLICATIO."'V'.WA_BAPICONDIT-COND_TYPE =  COND_TYPE."I_KSCHL.    "WA_BAPICONDIT-SCALETYPE = 'A'.       "STFKZ STAFFELSOORTWA_BAPICONDIT-SCALEBASIN = ''.      "KZBZG TEKEN:REKENEENHEID "  WA_BAPICONDIT-SCALEBASIN = 'C'. 存在数量等级WA_BAPICONDIT-SCALE_QTY = '0'.       "KSTBM CONDITIESTAFFELBASIS HOEVEELHEIDWA_BAPICONDIT-COND_P_UNT = '1'.      "KPEIN PRIJSEENHEIDWA_BAPICONDIT-COND_UNIT = H_COND_UNIT.      "KMEIN CONDITIE-HOEVEELHEIDSEENHEIDWA_BAPICONDIT-CALCTYPCON = 'C'.      "KRECH CONDITIE-REKENREGELWA_BAPICONDIT-COND_VALUE = LVALUE.WA_BAPICONDIT-CONDCURR = WAERK.APPEND  WA_BAPICONDIT  TO LT_BAPICONDIT.CALL FUNCTION 'BAPI_PRICES_CONDITIONS'EXPORTING
*   PI_INITIALMODE             = ' '
*   PI_BLOCKNUMBER             =PI_PHYSICAL_DELETION       = 'X' "物理删除 删除的时候要打上XTABLESTI_BAPICONDCT              = LT_BAPICONDCTTI_BAPICONDHD              = LT_BAPICONDHDTI_BAPICONDIT              = LT_BAPICONDITTI_BAPICONDQS              = LT_BAPICONDQSTI_BAPICONDVS              = LT_BAPICONDVSTO_BAPIRET2                = LT_BAPIRET2TO_BAPIKNUMHS              = LT_BAPIKNUMHSTO_MEM_INITIAL             = LT_MEM_INITIALEXCEPTIONSUPDATE_ERROR               = 1OTHERS                     = 2.ENDIF.COMMIT WORK AND WAIT.READ TABLE LT_BAPICONDCT ASSIGNING <FS1> INDEX 1.<FS1>-OPERATION =  operation.<FS1>-VALID_TO  = PDATBI.READ TABLE LT_BAPICONDHD ASSIGNING <FS2> INDEX 1.<FS2>-OPERATION =  operation.<FS2>-VALID_TO  = PDATBI.READ TABLE LT_BAPICONDIT ASSIGNING <FS3> INDEX 1.<FS3>-OPERATION =  operation.CALL FUNCTION 'BAPI_PRICES_CONDITIONS'TABLESTI_BAPICONDCT              = LT_BAPICONDCTTI_BAPICONDHD              = LT_BAPICONDHDTI_BAPICONDIT              = LT_BAPICONDITTI_BAPICONDQS              = LT_BAPICONDQSTI_BAPICONDVS              = LT_BAPICONDVSTO_BAPIRET2                = LT_BAPIRET2TO_BAPIKNUMHS              = LT_BAPIKNUMHSTO_MEM_INITIAL             = LT_MEM_INITIALEXCEPTIONSUPDATE_ERROR               = 1OTHERS                     = 2.ENDFUNCTION.

SAP 维护SD价格的探讨相关推荐

  1. SAP MM初阶事务代码MEK1维护PB00价格

    SAP MM初阶事务代码MEK1维护PB00价格 MM模块里的采购价格,比如条件类型PB00的价格,除了可以在ME11里维护以外,还可以在事务代码MEK1里维护. 执行事务代码MEK1,条件类型PB0 ...

  2. SAP ERP SD模块中维护销售人员

    SAP ERP SD模块中维护销售人员信息并分配销售组织   分类: SAPHCM用户指南 在SAP ERP系统,销售和分销(SD)模块中需要创建销售人员(Sales Personnels)消息,后者 ...

  3. SAP中SD模块的销售价格确定逻辑简析

    在销售业务中,销售订单项目有一些基本要素,数量,价格,运费,税率等. 在SD模块的销售订单或销售计划协议功能中,这些要素往往通过条件记录的形式来处理.如何理解条件记录?通过价格比较好理解.例如有物料M ...

  4. SAP MM 采购价格里的阶梯价格

    SAP MM 采购价格里的阶梯价格 1, 采购信息记录里的阶梯价格数据 2,采购订单新建时, 3,采购订单保存后, 阶梯价格生效了! -完- 写于2021-10-15早上.

  5. 关于SAP的SD的定价公式的资料

    关于SAP的SD的定价公式的资料(强力推荐,有时间我会进行翻译) Enhancing Output Determination Implementing Subsequent Function Req ...

  6. SAP的SD模块中客户的销售视图--扩充客户销售范围

    在SAP中 客户 主数据 有三个视图:一般数据(常规数据),公司代码数据,销售数据. 其中前两个视图由财务会计维护 财务会计会使用FD01这个事务码,维护常规数据 下图就是FD01 而在SD模块中,需 ...

  7. SAP 修改物料价格那些事

    每一个 FI 或则 MM 顾问,都被用户无数次问物料价格修改过吧?尤其是做运维的时候.物料价格究竟能不能修改,怎么修改,修改价格有什么影响?本文总结一下,以备将来业务再问之需:都在这里,自己去看吧. ...

  8. SAP中SD交货与WM下架功能的集成应用

    如题的应用场景比较容易理解,销售发货.从哪里发?即发货的源头在哪?货是存储在库位Strorage location,还是存在货架上,并引入了SAP WM模块的货架管理.如果存货引用的WM管理.那么SD ...

  9. SAP维护币种间汇率前的币种间的汇况比例维护实例

    以前只知道在OB08中维护汇率,并没有维护过折算率.在SAP中有很多类似情况,由于后台有一些标准的基础配置存在,所以正常情况下,可以满足基本的业务需求.但当业务需求扩展时,有时基础配置并不能完全满足需 ...

最新文章

  1. class-5 If语句
  2. 工具_好(zhuang)用(bi)的chrome插件
  3. 【学习笔记】类对象的内存释放
  4. struts2配置文件中action的name属性
  5. 将Chrome调试器里的JavaScript变量保存成本地JSON文件
  6. pycharm引用python_在Python/Pycharm中找不到引用“xxx”
  7. 队列:先入先出的数据结构讲解
  8. CentOS 7 启用远程连接和使用postgis等客户端连接
  9. 拓端tecdat|python中的copula:Frank、Clayton和Gumbel copula模型估计与可视化
  10. 【Rust日报】 2019-05-22:Mozilla图像团队发布WebRender MVP
  11. 路由器服务器账号密码,路由器上网账号密码设置的一般步骤介绍
  12. 小程序商城需要食品流通许可证吗?
  13. [BJTU]C语言期中考试总结
  14. 计算机设备图形符号,常用一次设备的图形符号和文字符号
  15. word怎么设置分栏 word设置分栏的方法
  16. python exec 返回值_Python exec()用法及代码示例
  17. Imu_heading使用
  18. 随机向量函数链神经网络(RVFLNN)
  19. ch340t电路_CH340电路设计 - ch340g典型应用电路
  20. 怎么写竞品分析报告(思路):

热门文章

  1. Python 切割mp3片段为每30秒一个并降低文件码率
  2. 安全科普:局域网攻击的常见方法
  3. 合并多个excel,csv Excel+Python
  4. java如何统计网站访问量
  5. 华为 — 路由和交换(OSPF+VRRP+PAT+MSTP)及USG防火墙(实验案列+配置)
  6. Spotify for Mac(音乐播放器)中文版永久使用教程
  7. 请更换备份电池 pos机_POS机大机故障的解决办法,有POS机的必看此文章
  8. TERASOLUNA Framework
  9. Qt Icon Resource 图标素材
  10. 苹果手机数据线充不了电_手机充不满电?教你四个办法解决!