ABAP VK11物料价格 BAPI_PRICES_CONDITIONS

 DATA lt_bapicondct  TYPE TABLE OF bapicondct.
      DATA lt_bapicondhd  TYPE TABLE OF bapicondhd.
      DATA lt_bapicondit  TYPE TABLE OF bapicondit.
      DATA lt_bapicondqs  TYPE TABLE OF bapicondqs.
      DATA lt_bapicondvs  TYPE TABLE OF bapicondvs.
      DATA lt_bapiret2    TYPE TABLE OF bapiret2.
      DATA lt_bapiknumhs  TYPE TABLE OF bapiknumhs.
      DATA lt_mem_initial TYPE TABLE OF cnd_mem_initial.

      DATA ls_bapicondct  TYPE bapicondct.
      DATA ls_bapicondhd  TYPE bapicondhd.
      DATA ls_bapicondit  TYPE bapicondit.
      DATA ls_bapicondqs  TYPE bapicondqs.
      DATA ls_bapicondvs  TYPE bapicondvs.
      DATA ls_bapiret2    TYPE bapiret2.
      DATA ls_bapiknumhs  TYPE bapiknumhs.
      DATA ls_mem_initial TYPE cnd_mem_initial.

      CLEAR:ls_bapicondct ,
            ls_bapicondhd ,
            ls_bapicondit ,
            ls_bapicondqs ,
            ls_bapicondvs ,
            ls_bapiret2   ,
            ls_bapiknumhs ,
            ls_mem_initial.

      CLEAR:lt_bapicondct ,
            lt_bapicondhd ,
            lt_bapicondit ,
            lt_bapicondqs ,
            lt_bapicondvs ,
            lt_bapiret2   ,
            lt_bapiknumhs ,
            lt_mem_initial.
      DATA h_varkey TYPE char100.
      DATA h_varkey_long TYPE char100.
      DATA lv_valid_to TYPE datum.
      DATA lv_valid_from TYPE datum.

      lv_valid_to = '99991231'.
      lv_valid_from = sy-datum.

*      SELECT MAX( knumh ) AS knumh FROM konh INTO @DATA(lv_knumh).
      DATA lv_knumh TYPE knumh.
      lv_knumh = '$000000001'.
      "插入香港澳门 HKD MOP
      DO 2 TIMES.
        "条件表A901
        CLEAR:ls_bapicondct,ls_bapicondhd,ls_bapicondit.
        IF lt_bapicondct IS INITIAL.
          h_varkey+00(4) = lv_ekorg.   " 0-4位:销售组织
          h_varkey+04(2) = '01'.   " 4-2位:分销渠道
          h_varkey+06(40) = in_matnr.  " 6-18位:物料(自动补空格)
          h_varkey+46(18) = in_ean11.  " 24-11位:EAN11(自动补空格)
          h_varkey+64(3) = 'HK'.  " 24-11位:EAN11(自动补空格)

          h_varkey_long+00(4) = lv_ekorg.   " 0-4位:销售组织
          h_varkey_long+04(2) = '01'.   " 4-2位:分销渠道
          h_varkey_long+06(40) = in_matnr.  " 6-18位:物料(自动补空格)
          h_varkey_long+46(18) = in_ean11.  " 24-11位:EAN11(自动补空格)
          h_varkey_long+64(3) = 'HK'.  " 24-11位:EAN11(自动补空格)

*          CONCATENATE   lv_ekorg  '01'  in_matnr '     'in_ean11 'HK' INTO  h_varkey_long .
        ELSE.
          CLEAR:lt_bapicondct.
          h_varkey+00(4) = lv_ekorg.   " 0-4位:销售组织
          h_varkey+04(2) = '01'.   " 4-2位:分销渠道
          h_varkey+06(40) = in_matnr.  " 6-18位:物料(自动补空格)
          h_varkey+46(18) = in_ean11.  " 24-11位:EAN11(自动补空格)
          h_varkey+64(3) = 'MO'.  " 24-11位:EAN11(自动补空格)

           h_varkey_long+00(4) = lv_ekorg.   " 0-4位:销售组织
          h_varkey_long+04(2) = '01'.   " 4-2位:分销渠道
          h_varkey_long+06(40) = in_matnr.  " 6-18位:物料(自动补空格)
          h_varkey_long+46(18) = in_ean11.  " 24-11位:EAN11(自动补空格)
          h_varkey_long+64(3) = 'MO'.  " 24-11位:EAN11(自动补空格)

*          CONCATENATE   lv_ekorg  '01'  in_matnr INTO  h_varkey .
*          CONCATENATE   lv_ekorg  '01'  in_matnr ' ' in_ean11 ' ' 'MO' INTO  h_varkey_long .
        ENDIF.
        ls_bapicondct-operation  = '009'. "009 新增  003 删除 004 修改
        ls_bapicondct-cond_usage = 'A'.
        ls_bapicondct-table_no   = '901'. "条件表A901
        ls_bapicondct-applicatio = 'V'.
        ls_bapicondct-cond_type  = 'VKP0'.
        ls_bapicondct-varkey     = h_varkey.
        ls_bapicondct-varkey_long     = h_varkey_long.
        ls_bapicondct-valid_to   = lv_valid_to. "条件记录有效截止日期
        ls_bapicondct-valid_from = lv_valid_from. "条件记录有效起始日


*        lv_knumh = lv_knumh + 1.
        ls_bapicondct-cond_no = lv_knumh. "條件記錄號碼
        APPEND ls_bapicondct TO lt_bapicondct.

        "KONH
        CLEAR:lt_bapicondhd.
        ls_bapicondhd-operation  = '009'.
        ls_bapicondhd-cond_no    = lv_knumh.
        ls_bapicondhd-created_by = sy-uname.
        ls_bapicondhd-creat_date = sy-datum.
        ls_bapicondhd-cond_usage = 'A'.
        ls_bapicondhd-table_no   = '901'.
        ls_bapicondhd-applicatio = 'V'.
        ls_bapicondhd-cond_type  = 'VKP0'.
        ls_bapicondhd-varkey     = h_varkey.
        ls_bapicondhd-varkey_long     = h_varkey_long.
        ls_bapicondhd-valid_to   = lv_valid_to.
        ls_bapicondhd-valid_from = lv_valid_from.
        APPEND ls_bapicondhd TO lt_bapicondhd.

        "KONP
        IF lt_bapicondit IS INITIAL.
          ls_bapicondit-condcurr = 'HKD'.
        ELSE.
          CLEAR:lt_bapicondit.
          ls_bapicondit-condcurr = 'MOP'.
        ENDIF.
        ls_bapicondit-operation  = '009'.   "修改
        ls_bapicondit-cond_no    = lv_knumh.
        ls_bapicondit-cond_count = '01'.     "条件序列号
        ls_bapicondit-applicatio = 'V'.
        ls_bapicondit-cond_type  =  'VKP0'.     "条件类型
        ls_bapicondit-scaletype = 'A'.       "STFKZ Staffelsoort
        ls_bapicondit-scalebasin = ''.      "KZBZG Teken:rekeneenheid "  wa_bapicondit-scalebasin = 'C'. 存在数量等级
        ls_bapicondit-scale_qty = '1'.       "KSTBM Conditiestaffelbasis hoeveelheid
        ls_bapicondit-cond_p_unt = '1'.      "KPEIN prijseenheid
        ls_bapicondit-cond_unit = 'ST'.      "KMEIN Conditie-hoeveelheidseenheid
        ls_bapicondit-calctypcon = 'C'.      "KRECH Conditie-rekenregel
        ls_bapicondit-cond_value = in_kbetr.
        ls_bapicondit-condcurren = 'HKD'.


        APPEND ls_bapicondit TO lt_bapicondit.

        CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
* EXPORTING
*   PI_INITIALMODE             = ' '
*   PI_BLOCKNUMBER             =
*   PI_PHYSICAL_DELETION       =
          TABLES
            ti_bapicondct  = lt_bapicondct
            ti_bapicondhd  = lt_bapicondhd
            ti_bapicondit  = lt_bapicondit
            ti_bapicondqs  = lt_bapicondqs
            ti_bapicondvs  = lt_bapicondvs
            to_bapiret2    = lt_bapiret2
            to_bapiknumhs  = lt_bapiknumhs
            to_mem_initial = lt_mem_initial
          EXCEPTIONS
            update_error   = 1
            OTHERS         = 2.
        IF sy-subrc <> 0.
* Implement suitable error handling here
        ENDIF.
      ENDDO.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值