调用bapi批量修改计划协议 me32l 示例 - 海边星
【原创】 调用bapi批量修改计划协议 me32l 示例
栏目:BAPI  作者:在海边看星星  阅读:(1330)

处理代码如下:对行项目中的计划交货天数做修改,该函数大批量执行时会较慢

  DATA: lt_alv TYPE STANDARD TABLE OF typ_alv WITH HEADER LINE,
        ls_alv TYPE typ_alv.
  DATA: lt_item   TYPE STANDARD TABLE OF bapimeoutitem WITH HEADER LINE,
        lt_itemx  TYPE STANDARD TABLE OF bapimeoutitemx WITH HEADER LINE,
        lt_return TYPE STANDARD TABLE OF bapiret2 WITH HEADER LINE,
        l_number  TYPE bapimeoutheader-number.
  DATA: l_msg(220).

  FIELD-SYMBOLS: <fs_alv> TYPE typ_alv.

  lt_alv[] = gt_alv[].
  DELETE lt_alv[] WHERE sel = ''.
  IF lt_alv[] IS INITIAL.
    MESSAGE '请选择需要修改的行' TYPE 'S' DISPLAY LIKE 'E'.
    EXIT.
  ENDIF.

  LOOP AT lt_alv.
    ls_alv = lt_alv.
    AT NEW ebeln.
      CLEAR: l_number,lt_item[],lt_item,lt_itemx[],lt_itemx,
             lt_return[],lt_return.
      l_number = ls_alv-ebeln.
    ENDAT.

    lt_item-item_no = ls_alv-ebelp.
    lt_item-plan_del = ls_alv-aplfz.
    APPEND lt_item.
    CLEAR lt_item.

    lt_itemx-item_no = ls_alv-ebelp.
    lt_itemx-plan_del = 'X'.
    APPEND lt_itemx.
    CLEAR lt_itemx.

    AT END OF ebeln.
      CALL FUNCTION 'BAPI_SAG_CHANGE'
        EXPORTING
          purchasingdocument = l_number
        TABLES
          return             = lt_return[]
          item               = lt_item[]
          itemx              = lt_itemx[].

      LOOP AT lt_return WHERE type CA 'EAX'.
        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            msgid               = lt_return-id
            msgnr               = lt_return-number
            msgv1               = lt_return-message_v1
            msgv2               = lt_return-message_v2
            msgv3               = lt_return-message_v3
            msgv4               = lt_return-message_v4
          IMPORTING
            message_text_output = l_msg.
        ls_alv-msg = ls_alv-msg && l_msg && ';'.
      ENDLOOP.
      IF sy-subrc = 0.
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        ls_alv-type = 'E'.
        ls_alv-sicon = c_red.
      ELSE.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait = 'X'.
        ls_alv-type = 'S'.
        ls_alv-sicon = c_green.
        ls_alv-msg = '修改成功!'.
      ENDIF.

      LOOP AT gt_alv ASSIGNING <fs_alv> WHERE ebeln = ls_alv-ebeln AND sel = 'X'.
        <fs_alv>-msg = ls_alv-msg.
        <fs_alv>-type = ls_alv-type.
        <fs_alv>-sicon = ls_alv-sicon.
      ENDLOOP.
    ENDAT.
  ENDLOOP.

  MESSAGE '处理完成' TYPE 'S'.




我的评论
昵称
邮箱
域名
  记住 通知博主
验证码

  联系我们

微信扫一扫

 登录  打赏

  随机文章