zoukankan      html  css  js  c++  java
  • 销售价格创建/更改BAPI

    今天想谈谈自己在创建销售价格遇到的问题,之前一段时间客户要求能够批量执行VK11/VK12进行销售价格的创建和修改。查阅了网上的资料和SAP的论坛,发现一个函数BAPI_PRICES_CONDITIONS似乎能解决这个问题,这里只要能够改变bapi函数的参数就能实现创建或者更改的操作,具体对应关系如下:

    从上面可以看出009/005(创建)003(删除)004(更改)。但是在实际运用中发现了问题,其一是009或者005不对日期进行检查,相同的日期段能在AXXX价格表里面存在二条,其二是日志表CDHDR/CDPOS中不存在更改的记录,不便于以后追寻问题。但是大数据期初创建价格条件时本人觉得这个函数还是很好用的,速度比BDC快(本人不才,后面为了需求的安全性考虑使用了该方法,各位ABAP大神有更好的方法请留言赐教)。附上删除的代码:

     1   DATA:
     2     gs_bapicondct  TYPE bapicondct,
     3     gs_bapicondhd  TYPE bapicondhd,
     4     gs_bapicondit  TYPE bapicondit,
     5     gs_bapiret2    TYPE bapiret2,
     6     gt_bapicondct  TYPE TABLE OF bapicondct,
     7     gt_bapicondhd  TYPE TABLE OF bapicondhd,
     8     gt_bapicondit  TYPE TABLE OF bapicondit,
     9     gt_bapicondqs  TYPE TABLE OF bapicondqs,
    10     gt_bapicondvs  TYPE TABLE OF bapicondvs,
    11     gt_bapiknumhs  TYPE TABLE OF bapiknumhs,
    12     gt_mem_initial TYPE TABLE OF cnd_mem_initial,
    13     gt_bapiret2    TYPE TABLE OF bapiret2.
    14      CLEAR:gt_bapicondct,gt_bapicondhd,gt_bapicondit,gt_bapicondqs,
    15           gt_bapicondvs,gt_bapiret2,gt_bapiknumhs,gt_mem_initial.
    16 *   如果截止日期更改的话删除原记录再插入
    17     IF gs_item-datbi <> gs_item-datbi_o.
    18       gs_bapicondct-operation  = '003'.
    19       gs_bapicondct-cond_no    = gs_item-knumh.
    20       CONCATENATE gs_item-vkorg gs_item-vtweg gs_item-kunnr gs_item-matnr
    21              INTO gs_bapicondct-varkey.
    22       gs_bapicondct-applicatio = 'V'.
    23       gs_bapicondct-cond_usage = 'A'.
    24       gs_bapicondct-table_no   = '305' .
    25       gs_bapicondct-cond_type  = 'ZA01'.
    26       gs_bapicondct-valid_to   = gs_item-datbi_o.
    27       gs_bapicondct-valid_from = gs_item-datab_o.
    28       APPEND gs_bapicondct TO gt_bapicondct.
    29 
    30       " KONH
    31       gs_bapicondhd-operation  = '003'.
    32       gs_bapicondhd-cond_no    = gs_item-knumh.
    33       gs_bapicondhd-varkey     = gs_bapicondct-varkey.
    34       gs_bapicondhd-applicatio = 'V'.
    35       gs_bapicondhd-cond_usage = 'A'.
    36       gs_bapicondhd-table_no   = '305' .
    37       gs_bapicondhd-cond_type  = 'ZA01'.
    38       gs_bapicondhd-valid_from = gs_bapicondct-valid_from.
    39       gs_bapicondhd-valid_to   = gs_bapicondct-valid_to.
    40       APPEND gs_bapicondhd TO gt_bapicondhd.
    41 
    42       " KONP tabel
    43       gs_bapicondit-operation  = '003'.
    44       gs_bapicondit-cond_no    = gs_item-knumh.
    45       gs_bapicondit-cond_count = '01'.
    46       gs_bapicondit-applicatio = 'V'.
    47       gs_bapicondit-cond_type  = 'ZA01'.
    48       gs_bapicondit-scaletype  = 'A'.
    49       gs_bapicondit-calctypcon  = 'C'.
    50       gs_bapicondit-numconvert  = '1'.
    51       gs_bapicondit-denominato  = '1'.
    52       SELECT SINGLE meins FROM mara INTO gs_bapicondit-base_uom
    53        WHERE matnr = gs_item-matnr.
    54       gs_bapicondit-condcurren = gs_item-konwa.
    55       gs_bapicondit-conditidx  = '1'.
    56       gs_bapicondit-cond_value = gs_item-kbetr.
    57       gs_bapicondit-condcurr   = gs_item-konwa.
    58       gs_bapicondit-cond_p_unt = gs_item-kpein.
    59       gs_bapicondit-cond_unit  = gs_bapicondit-base_uom.
    60       APPEND gs_bapicondit TO gt_bapicondit.
    61       CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
    62         EXPORTING
    63           pi_initialmode       = ''
    64           pi_physical_deletion = 'X'
    65         TABLES
    66           ti_bapicondct        = gt_bapicondct[]
    67           ti_bapicondhd        = gt_bapicondhd[]
    68           ti_bapicondit        = gt_bapicondit[]
    69           ti_bapicondqs        = gt_bapicondqs[]
    70           ti_bapicondvs        = gt_bapicondvs[]
    71           to_bapiret2          = gt_bapiret2[]
    72           to_bapiknumhs        = gt_bapiknumhs[]
    73           to_mem_initial       = gt_mem_initial[]
    74         EXCEPTIONS
    75           update_error         = 1
    76           OTHERS               = 2.
  • 相关阅读:
    【某集训记录】
    【bzoj 4407】于神之怒加强版
    【bzoj 3529】【sdoi 2014】数表
    PHP消息队列实现及应用
    (转)PHP DB 数据库连接类
    站点http升级到https
    虚拟主机发送邮件出现getmypid禁用的解决方案
    企业微信API集成登录以及其他操作开发
    微信小程序发送模版消息常见错误解决方案
    (转) Laravel自带SMTP邮件组件实现发送邮件(QQ、163、企业邮箱都可)
  • 原文地址:https://www.cnblogs.com/tangcy1110/p/9035348.html
Copyright © 2011-2022 走看看