BAPI_PRICES_CONDITIONS 创建VK11定价条件

*&---------------------------------------------------------------------*
*& Report Z_TEST_LUOLIN_002
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT z_test_luolin_002.
TABLES:konh .
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: lt_bapiret2 TYPE bapiret2 OCCURS 0 .
DATA: ret    TYPE  bapiret2 .

DATA: lt_bapiknumhs TYPE bapiknumhs  OCCURS  0 .
DATA: lt_mem_initial TYPE  cnd_mem_initial OCCURS 0 .

DATA: h_varkey(100),
      h_cond_unit TYPE meins .

SELECTION-SCREEN BEGIN OF BLOCK  bk1 WITH FRAME TITLE text_001 .
PARAMETERS: i_kschl LIKE a118-kschl,                "条件类型
            i_matnr LIKE mvke-matnr,
            i_vkorg LIKE mvke-vkorg,
            i_vtweg LIKE mvke-vtweg,
            i_kbetr LIKE konp-kbetr.               "定价值
SELECT-OPTIONS:  i_qsdat  FOR konh-datab.             "定价的有效期范围
SELECTION-SCREEN END OF BLOCK bk1 .

h_varkey = i_matnr.
*CONCATENATE   i_vkorg  i_vtweg  i_matnr INTO  h_varkey .

SELECT  SINGLE meins FROM mara
       INTO h_cond_unit  WHERE matnr = i_matnr .

IF sy-subrc <> 0.
  RAISE vkorgerror .
ENDIF.


*condition table
wa_bapicondct-table_no = '118'.
wa_bapicondct-applicatio = 'V'.
wa_bapicondct-cond_usage = 'A'.      "条件表用途 ‘A' 定价
wa_bapicondct-cond_type = i_kschl.    "定价条件
wa_bapicondct-operation = '009'.     "消息功能 : 003 DEL ; 004 MODIFY ;005 REPLACE 009 INITIAL
*wa_bapicondct-operation = '004'.         "更改
wa_bapicondct-varkey = h_varkey.
wa_bapicondct-valid_to = i_qsdat-high.
wa_bapicondct-valid_from = i_qsdat-low.
wa_bapicondct-cond_no = '$000000001'.   "创建
*wa_bapicondct-cond_no = '0000015528'.    "更改

APPEND wa_bapicondct TO lt_bapicondct.

*KONH
wa_bapicondhd-operation = '009'.
*wa_bapicondhd-operation = '004'.
wa_bapicondhd-cond_no = '$000000001'.
*wa_bapicondhd-cond_no = '0000015528'.
wa_bapicondhd-created_by = sy-uname.
wa_bapicondhd-creat_date = sy-datum.
wa_bapicondhd-cond_usage = 'A'.
wa_bapicondhd-table_no = '118'.
wa_bapicondhd-applicatio = 'V'.
wa_bapicondhd-cond_type = i_kschl.
wa_bapicondhd-varkey = h_varkey.
wa_bapicondhd-valid_from = i_qsdat-low.
wa_bapicondhd-valid_to = i_qsdat-high.

APPEND wa_bapicondhd TO  lt_bapicondhd .

*KONP
*wa_bapicondit-operation = '004'.   "修改
wa_bapicondit-operation = '009'. "创建
wa_bapicondit-cond_no = '$000000001'.
*wa_bapicondit-cond_no = '0000015528'.
wa_bapicondit-cond_count = '01'.     "条件序列号
wa_bapicondit-applicatio = 'V'.
wa_bapicondit-cond_type =  i_kschl.       "条件类型
wa_bapicondit-scaletype = 'A'.       "STFKZ Staffelsoort
wa_bapicondit-scalebasin = 'C'.      "KZBZG Teken:rekeneenheid "  wa_bapicondit-scalebasin = 'C'. 存在数量等级
wa_bapicondit-scale_qty = '1'.       "KSTBM Conditiestaffelbasis hoeveelheid
wa_bapicondit-cond_p_unt = '1'.      "KPEIN prijseenheid
wa_bapicondit-cond_unit = h_cond_unit.      "KMEIN Conditie-hoeveelheidseenheid
wa_bapicondit-calctypcon = 'C'.      "KRECH Conditie-rekenregel
wa_bapicondit-cond_value = i_kbetr.
wa_bapicondit-condcurr = 'CNY'.

APPEND  wa_bapicondit  TO lt_bapicondit  .

wa_bapicondqs-operation = '009'.
wa_bapicondqs-cond_no = '$000000001'.
wa_bapicondqs-cond_count = '01'.
wa_bapicondqs-line_no = '0001'.
wa_bapicondqs-scale_qty = '0'.
*IS_BAPICONDQS-t_unit_iso = 'VIA'.
wa_bapicondqs-currency   = '100'.
wa_bapicondqs-condcurr = 'CNY'.
APPEND wa_bapicondqs TO lt_bapicondqs.
CLEAR wa_bapicondqs.

wa_bapicondqs-operation = '009'.
wa_bapicondqs-cond_no = '$000000001'.
wa_bapicondqs-cond_count = '01'.
wa_bapicondqs-line_no = '0002'.
wa_bapicondqs-scale_qty = '50'.
*IS_BAPICONDQS-t_unit_iso = 'VIA'.
wa_bapicondqs-currency   = '80'.
wa_bapicondqs-condcurr = 'CNY'.
APPEND wa_bapicondqs TO lt_bapicondqs.
CLEAR wa_bapicondqs.

wa_bapicondqs-operation = '009'.
wa_bapicondqs-cond_no = '$000000001'.
wa_bapicondqs-cond_count = '01'.
wa_bapicondqs-line_no = '0003'.
wa_bapicondqs-scale_qty = '100'.
*IS_BAPICONDQS-t_unit_iso = 'VIA'.
wa_bapicondqs-currency   = '60'.
wa_bapicondqs-condcurr = 'CNY'.
APPEND wa_bapicondqs TO lt_bapicondqs.
CLEAR wa_bapicondqs.

wa_bapicondqs-operation = '009'.
wa_bapicondqs-cond_no = '$000000001'.
wa_bapicondqs-cond_count = '01'.
wa_bapicondqs-line_no = '0004'.
wa_bapicondqs-scale_qty = '200'.
*IS_BAPICONDQS-t_unit_iso = 'VIA'.
wa_bapicondqs-currency   = '60'.
wa_bapicondqs-condcurr = 'CNY'.
APPEND wa_bapicondqs TO lt_bapicondqs.
CLEAR wa_bapicondqs.


CALL FUNCTION 'BAPI_PRICES_CONDITIONS'
* EXPORTING
*   PI_INITIALMODE             = ' 'a
*   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.

BREAK-POINT.
IF sy-subrc <> 0.
  WRITE :  'SOMETHING UNEXCEPTED HAPPENDS!' .
ENDIF.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
* EXPORTING
*   WAIT          =
  IMPORTING
    return = ret.


关键词: ABAP

网友评论

发表评论