ABAP MEK1/VK11创建条件价格

ME11/ME12:RV_CONDITION_COPY

示例代码

 DATA:
    ls_key_fields   TYPE komg,
    lt_copy_records TYPE TABLE OF komv,
    ls_copy_records TYPE komv,
    lt_copy_staffel TYPE TABLE OF condscale,
    ls_copy_staffel TYPE condscale,
    lt_knumh_comp   TYPE TABLE OF knumh_comp,
    ls_knumh_comp   TYPE knumh_comp,
    ls_komk         TYPE komk,
    ls_komp         TYPE komp,
    lv_record       TYPE konh-knumh,
    ls_a918         TYPE a918.
  DATA: lv_tab TYPE kotabnr.
  DATA: lv_message TYPE string.
  DATA: lv_maintain_mode TYPE char01.
  DATA: lv_keep          TYPE char01.

  lv_tab = '918'.
  LOOP AT gt_duty_alv INTO gs_duty_alv WHERE box IS NOT INITIAL AND icon NE icon_red_light.

    CLEAR:ls_key_fields,lt_copy_records,lt_copy_staffel,ls_komk,ls_komp,lv_record,lv_message,lt_knumh_comp.
    IF gs_duty_alv-knumh IS INITIAL .
      lv_maintain_mode = 'A'. "创建
      lv_keep          = 'X'.
    ELSE.
      lv_maintain_mode = 'B'. "修改
      lv_keep          = ''.
    ENDIF.
    ls_key_fields-werks = gs_duty_alv-werks.
    ls_key_fields-stawn = gs_duty_alv-stawn.
    ls_key_fields-aland = gs_duty_alv-aland.

    CLEAR ls_copy_records.
    " condtion fields
    ls_copy_records-knumh = gs_duty_alv-knumh.
    ls_copy_records-kopos = '01'.
    ls_copy_records-kschl = gs_duty_alv-kschl.
    ls_copy_records-kappl = gs_duty_alv-kappl.
    ls_copy_records-kbetr = gs_duty_alv-kbetr * 10.
    ls_copy_records-waers = gs_duty_alv-konwa.
    APPEND ls_copy_records TO lt_copy_records.

    CALL FUNCTION 'RV_CONDITION_RESET'.
    CALL FUNCTION 'RV_CONDITION_COPY'
      EXPORTING
        application                 = 'M'
        condition_table             = lv_tab
        condition_type              = gs_duty_alv-kschl "'PB00'
        date_from                   = gs_duty_alv-datab "'20220304'
        date_to                     = gs_duty_alv-datbi "'99991231'
        key_fields                  = ls_key_fields
        maintain_mode               = lv_maintain_mode              "A:创建  B:更新
        overlap_confirmed           = 'X'
*       used_by_idoc                = 'X'
        keep_old_records            = lv_keep
        selection_date              = gs_duty_alv-datab        "注意修改的时候一定要传输
      IMPORTING
        e_komk                      = ls_komk
        e_komp                      = ls_komp
        new_record                  = lv_record
      TABLES
        copy_records                = lt_copy_records
        copy_staffel                = lt_copy_staffel
      EXCEPTIONS
        enqueue_on_record           = 1
        invalid_application         = 2
        invalid_condition_number    = 3
        invalid_condition_type      = 4
        no_authority_ekorg          = 5
        no_authority_kschl          = 6
        no_authority_vkorg          = 7
        no_selection                = 8
        table_not_valid             = 9
        no_material_for_settlement  = 10
        no_unit_for_period_cond     = 11
        no_unit_reference_magnitude = 12
        invalid_condition_table     = 13
        OTHERS                      = 14.

    IF sy-subrc = 0.
      " commit and get condition NO.
      CALL FUNCTION 'RV_CONDITION_SAVE'
        TABLES
          knumh_map = lt_knumh_comp.

      CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
        EXPORTING
          wait = 'X'.

      CALL FUNCTION 'RV_CONDITION_RESET'.

      READ TABLE lt_knumh_comp INTO ls_knumh_comp INDEX 1.
      IF sy-subrc = 0 AND ls_knumh_comp-knumh_new IS NOT INITIAL.
        MESSAGE ls_knumh_comp-knumh_new TYPE 'S'.
        gs_duty_alv-icon = icon_green_light.
        gs_duty_alv-knumh = ls_knumh_comp-knumh_new.
        MODIFY gt_duty_alv FROM gs_duty_alv.
      ELSE.

        gs_duty_alv-icon = icon_green_light.
        gs_duty_alv-msg  = lv_message.
        MODIFY gt_duty_alv FROM gs_duty_alv.
      ENDIF.



    ELSE.

      CALL FUNCTION 'MESSAGE_TEXT_BUILD'
        EXPORTING
          msgid               = sy-msgid
          msgnr               = sy-msgv1
          msgv1               = sy-msgv1
          msgv2               = sy-msgv2
          msgv3               = sy-msgv3
          msgv4               = sy-msgv4
        IMPORTING
          message_text_output = lv_message.

      gs_duty_alv-icon = icon_red_light.
      gs_duty_alv-msg  = lv_message.
      MODIFY gt_duty_alv FROM gs_duty_alv.
    ENDIF.




  ENDLOOP.

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值