ABAP-创建客户阶梯价

举报
Mr_blank 发表于 2025/09/19 15:38:29 2025/09/19
【摘要】 告别忙碌低效!本文提供示例,帮助您用更少时间完成更多高质量工作,重获工作与生活平衡。
*&---------------------------------------------------------------------*
*&      Form  frm_create_price
*&---------------------------------------------------------------------*
*       text
*----------------------------------------------------------------------*
*  -->  p1        text
*  <--  p2        text
*----------------------------------------------------------------------*
FORM frm_create_price
  USING
    VALUE(uv_kappl)     TYPE kappl
    VALUE(uv_kschl)     TYPE kschl
    VALUE(uv_reswk)     TYPE reswk
    VALUE(uv_werks)     TYPE werks_d
    VALUE(uv_matnr)     TYPE matnr
    VALUE(uv_kfrst)     TYPE kfrst
    VALUE(uv_datbi)     TYPE kodatbi
    VALUE(uv_datab)     TYPE kodatab
    VALUE(uv_peinh)     TYPE peinh
    VALUE(uv_meins)     TYPE meins
    VALUE(uv_kbetr)     TYPE kbetr
  CHANGING
    cv_flg           TYPE bapi_mtype
    cv_mesg          TYPE bapi_msg.

  DATA:
    lt_bapicondct  TYPE STANDARD TABLE OF bapicondct,  "
    lt_bapicondhd  TYPE STANDARD TABLE OF bapicondhd,  "
    lt_bapicondit  TYPE STANDARD TABLE OF bapicondit,
    lt_bapicondqs  TYPE STANDARD TABLE OF bapicondqs,
    lt_bapicondvs  TYPE STANDARD TABLE OF bapicondvs,
    lt_bapiret2    TYPE STANDARD TABLE OF bapiret2,
    lt_bapiknumhs  TYPE STANDARD TABLE OF bapiknumhs,
    lt_mem_initial TYPE STANDARD TABLE OF cnd_mem_initial.
  DATA:
    lv_varkey(100)  TYPE c.

  lv_varkey = |{ uv_reswk }{ uv_werks }{ uv_matnr }|.

  APPEND VALUE #(
                  table_no   = '901'     "条件表A901
                  applicatio = 'M'
                  cond_usage = 'A'       "条件表用途 ‘  A定价
                  cond_type  = uv_kschl  "定价条件
                  operation  = '009'     "创建
                  varkey     = lv_varkey
                  valid_to   = uv_datbi
                  valid_from = uv_datab
                  cond_no    = '$000000001'
                ) TO lt_bapicondct.

  APPEND VALUE #(
                  operation  = '009'
                  cond_no    = '$000000001'
                  created_by = sy-uname
                  creat_date = sy-datum
                  cond_usage = 'A'
                  table_no   = '901'
                  applicatio = 'M'
                  cond_type  = uv_kschl
                  varkey     = lv_varkey
                  valid_from = uv_datab
                  valid_to   = uv_datbi
                ) TO lt_bapicondhd.

  APPEND VALUE #(
                  operation  = '009'
                  cond_no    = '$000000001'
                  cond_count = '01'      "条件序列号
                  applicatio = 'M'
                  cond_type  =  uv_kschl "条件类型
                  scaletype  = 'A'       "STFKZ
                  scalebasin = ''        "KZBZG 'C'. 存在数量等级
                  scale_qty  = '1'       "KSTBM
                  cond_p_unt = uv_peinh  "KPEIN
                  cond_unit  = uv_meins  "KMEIN
                  calctypcon = 'C'       "KRECH
                  cond_value = uv_kbetr
                  condcurr   = 'CNY'
                  exclusion  = 'X'
                ) 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.
    cv_flg = 'E'.

    MESSAGE ID sy-msgid
          TYPE 'E'
        NUMBER sy-msgno
          WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4
          INTO cv_mesg.
    RETURN.
  ENDIF.

  LOOP AT lt_bapiret2 ASSIGNING FIELD-SYMBOL(<fs_return>)
    WHERE type CA 'AEX'.
    cv_mesg = <fs_return>-message && '!' && cv_mesg .
  ENDLOOP.
  IF sy-subrc = 0.
    CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
    cv_flg = 'E'.
  ELSE.
    CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
      EXPORTING
        wait = 'X'.
    cv_flg = 'S'.
    cv_mesg = '价格条件处理成功!'.

  ENDIF.

ENDFORM.
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。