SAP PP销售预测转独立需求

   日期:2020-10-12     浏览:212    评论:0    
核心提示:销售预测转独立需求 调用BAPI_REQUIREMENTS_CREATE生成MD61代码示例前台界面代码示例FUNCTION zsdfm003f001.*"----------------------------------------------------------------------*"*"本地接口:*" TABLES*" PT_DLXQ TYPE ZTYDS_DLXQ_IN*" PT_RETURN TYPE ZTYDS_DLXQ_OUT OPTIONAL

销售预测转独立需求 调用BAPI_REQUIREMENTS_CREATE生成MD61

  • 代码示例
  • 前台界面

代码示例

FUNCTION zsdfm003f001.
*"----------------------------------------------------------------------
*"*"本地接口:
*"  TABLES
*"      PT_DLXQ TYPE  ZTYDS_DLXQ_IN
*"      PT_RETURN TYPE  ZTYDS_DLXQ_OUT OPTIONAL
*"----------------------------------------------------------------------

* bapi data
  DATA: matemp LIKE bapisitemr-material.
  DATA: req_item LIKE bapisitemr.
  DATA: req_data LIKE bapisshdin OCCURS 0 WITH HEADER LINE.
  DATA: return LIKE bapireturn1 OCCURS 0 WITH HEADER LINE.
  DATA: matertemp LIKE bapisitemr-material.

  DATA:re_item        LIKE  bapisitemr,
       re_schedule_in LIKE TABLE OF  bapisshdin WITH HEADER LINE,
       re_change      LIKE bapisitemr.

  DATA: gt_dlxq  TYPE TABLE OF zsds_dlxq_in WITH HEADER LINE,
        piv_mode TYPE mode VALUE 'C'.

  TYPES: BEGIN OF typ_cha,
           material TYPE matnr18,
           plant    TYPE werks_d,
           version  TYPE versb,
           pbdnr    TYPE pbdnr,
         END OF typ_cha.

  DATA: gs_cha TYPE typ_cha.

  gt_dlxq[] = pt_dlxq[].

  "物料编码
  READ TABLE gt_dlxq INDEX 1.
  IF sy-subrc = 0.

    CLEAR:matertemp.
    CALL FUNCTION 'CONVERSION_EXIT_MATN5_INPUT'
      EXPORTING
        input        = gt_dlxq-material
      IMPORTING
        output       = matertemp
      EXCEPTIONS
        length_error = 1
        OTHERS       = 2.

    SELECt SINGLE *
      INTO @DATA(lw_pbim)
      FROM pbim
      WHERe matnr = @matertemp
        AND werks = @gt_dlxq-plant
        AND versb = @gt_dlxq-version
      AND vervs = 'X'.
    IF sy-subrc = 0."若预测已存在,先删除再创建

      CALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE'
        EXPORTING
          material         = matertemp
          plant            = lw_pbim-werks
          requirementstype = lw_pbim-bedae
          version          = lw_pbim-versb
          reqmtsplannumber = lw_pbim-pbdnr
          vers_activ       = ''
        TABLES
          return           = return.
      READ TABLE return INTO DATA(w_return) WITH KEY type = 'E'.
      IF sy-subrc = 0."E类型错误
        CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
        CLEAR pt_return.
        pt_return-material = matertemp.
        pt_return-plant = lw_pbim-werks.
*        pt_return-version = lw_pbim-versb.
        CALL FUNCTION 'MESSAGE_TEXT_BUILD'
          EXPORTING
            msgid               = w_return-id
            msgnr               = w_return-number
            msgv1               = w_return-message_v1
            msgv2               = w_return-message_v2
            msgv3               = w_return-message_v3
            msgv4               = w_return-message_v4
          IMPORTING
            message_text_output = pt_return-message.
        pt_return-message   = w_return-type.
        APPEND pt_return .
        RETURN.
      ELSE.
        READ TABLE return INTO w_return WITH KEY type = 'A'.
        IF sy-subrc = 0."A类型错误
          CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'.
          pt_return-material = matertemp.
          pt_return-plant = lw_pbim-werks.
*          pt_return-version = lw_pbim-versb.
          CALL FUNCTION 'MESSAGE_TEXT_BUILD'
            EXPORTING
              msgid               = w_return-id
              msgnr               = w_return-number
              msgv1               = w_return-message_v1
              msgv2               = w_return-message_v2
              msgv3               = w_return-message_v3
              msgv4               = w_return-message_v4
            IMPORTING
              message_text_output = pt_return-message.
          pt_return-message   = w_return-type.
          APPEND pt_return .
          RETURN.
        ELSE.
          WAIT UP TO 1 SECONDS.
          CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
            EXPORTING
              wait = 'X'.
          WAIT UP TO 1 SECONDS.
        ENDIF.
      ENDIF.

      piv_mode = 'U'.
    ELSE.
      piv_mode = 'C'.
    ENDIF.


  ENDIF.

*---bapi调用前内表赋值
  LOOP AT gt_dlxq.

    IF piv_mode = 'C'.
      req_item-material = matertemp.
      req_item-plant = gt_dlxq-plant.
      req_item-requ_type = ''."gt_dlxq-requ_type.
      req_item-version = gt_dlxq-version.
      req_item-vers_activ = gt_dlxq-vers_activ.
      req_item-req_number = gt_dlxq-pbdnr.

      "期间标识
      IF gt_dlxq-date_type = 'D' OR gt_dlxq-date_type = '1'.
        req_data-date_type = '1'.
      ENDIF.
      req_data-req_date = gt_dlxq-req_date."需求日期
      req_data-req_qty = gt_dlxq-req_qty."计划数量
      APPEND req_data.

    ELSEIF piv_mode = 'U'.

      gs_cha-material = gt_dlxq-material.
      gs_cha-plant = gt_dlxq-plant.
      gs_cha-version = gt_dlxq-version.
      gs_cha-pbdnr = gt_dlxq-pbdnr.

      "期间标识
      IF gt_dlxq-date_type = 'D' OR gt_dlxq-date_type = '1'.
        re_schedule_in-date_type = '1'.
      ENDIF.
      re_schedule_in-req_date  = gt_dlxq-req_date.
      re_schedule_in-req_qty   = gt_dlxq-req_qty.
*      re_schedule_in-prod_ves  = gt_dlxq-version.
      APPEND re_schedule_in.
      CLEAR  re_schedule_in.

    ENDIF.

  ENDLOOP.

*---调用bapi
  IF piv_mode = 'C'.

*   创建独立需求
    CLEAR:matemp.
    CALL FUNCTION 'BAPI_REQUIREMENTS_CREATE'
      EXPORTING
        requirements_item        = req_item
*       REQUIREMENT_PARAM        =
      IMPORTING
        material                 = matemp
*       PLANT                    =
*       REQUIREMENTSTYPE         =
*       VERSION                  =
*       REQMTSPLANNUMBER         =
      TABLES
        requirements_schedule_in = req_data
*       REQUIREMENTS_CHAR_IN     =
        return                   = return.
    IF NOT matemp IS INITIAL.
      pt_return-pbdnr = matemp.
      pt_return-type = 'S'.
      pt_return-message = '计划独立需求创建成功.'.
      APPEND pt_return.
      COMMIT WORK.
    ELSE.
      pt_return-index = gt_dlxq-index.
      pt_return-type = 'E'.
      pt_return-message = return-message.
      APPEND pt_return.
      ROLLBACK WORK.
    ENDIF.
    CLEAR matemp.
    REFRESH req_data.
    CLEAR matertemp.
    CLEAR req_item.

  ELSEIF piv_mode = 'U'.

*   更改独立需求
    CLEAR re_change.
    CALL FUNCTION 'BAPI_REQUIREMENTS_CHANGE'
      EXPORTING
        material                 = gs_cha-material
        plant                    = gs_cha-plant
        requirementstype         = lw_pbim-bedae
        version                  = gs_cha-version
        reqmtsplannumber         = gs_cha-pbdnr
        vers_activ               = 'X'
*       REQUIREMENT_PARAM        =
*       MRP_AREA                 =
*       DO_COMMIT                = 'X'
*       UPDATE_MODE              = 'X'
        delete_old               = ''
*       NO_WITHDR                = ' '
*       MATERIAL_EVG             =
      IMPORTING
        requirement_item_out     = re_change
      TABLES
        requirements_schedule_in = re_schedule_in
*       REQUIREMENTS_CHAR_IN     =
        return                   = return.
    IF re_change IS NOT INITIAL.
      pt_return-material = gs_cha-material.
      pt_return-plant = gs_cha-plant.
      pt_return-pbdnr = gs_cha-pbdnr.
      pt_return-type   = 'S'.
      pt_return-message   = '计划独立需求修改成功.'.
      APPEND pt_return .
      CLEAR pt_return.
      COMMIT WORK.
    ELSE.
      READ TABLE return WITH KEY type = 'E'.
      pt_return-material = gs_cha-material.
      pt_return-plant = gs_cha-plant.
      pt_return-type   = 'E'.
      pt_return-message   = return-message.
      APPEND pt_return .
      CLEAR pt_return.
      ROLLBACK WORK.
    ENDIF.

    CLEAR:return,return[],"lv_pbdnr,
    re_item,re_schedule_in[].


  ENDIF.


ENDFUNCTION.

前台界面

TCODE:MD61

 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服