PPDS 更改计划订单版本/数量/固定日期

更改生产订单版本 ,功能类似/SAPAPO/RRP2

 

ORM frm_update_verion USING ps_planord TYPE ty_planord.
  DATA:lt_orders     TYPE  /sapapo/om_order_ext_tab,
       lt_activities TYPE  /sapapo/om_tab_act,
       lt_source     TYPE  /sapapo/sources_tab,
       ls_pdskey     TYPE  bapi10014pdskey,
       lt_pdskeys    LIKE  TABLE OF ls_pdskey,
       ls_gen_params TYPE /sapapo/om_gen_params,
       lv_message    TYPE char80,
       ls_pds_mode   TYPE  bapi10014pdsmodeo,
       lt_pds_modes  LIKE  TABLE OF ls_pds_mode,
       lt_return     LIKE  TABLE OF bapiret2,
       lt_order      TYPE /sapapo/om_ordid_tab,
       lt_aoint      TYPE TABLE OF  /sapapo/pt_aoint_str,
       ls_res_head   TYPE /sapapo/cres_res_head_plant.

  CHECK  ps_planord-ordid IS NOT INITIAL.
  READ TABLE gt_ext_outputs INTO DATA(ls_ext_outputs) WITH KEY orderid = ps_planord-ordid BINARY SEARCH.
  IF ls_ext_outputs IS NOT INITIAL.
    CALL FUNCTION '/SAPAPO/RRP_SOURCES_GET'
      EXPORTING
        iv_pegid      = ls_ext_outputs-pegid
      IMPORTING
        et_source     = lt_source
      EXCEPTIONS
        user_canceled = 1.

    READ TABLE gt_ordkeys INTO DATA(ls_ordkey) WITH KEY ordid = ps_planord-ordid BINARY SEARCH.
    READ TABLE gt_ordmaps INTO DATA(ls_ordmap) WITH KEY ordid = ps_planord-ordid BINARY SEARCH.
    LOOP AT lt_source INTO DATA(ls_source).
      DATA(lv_len) = strlen( ls_source-name ) - 3.
      DATA(lv_verid) = ls_source-name+lv_len(3).
      IF lv_verid NE ps_planord-verid.
        CONTINUE.
      ENDIF.
      SELECT SINGLE vrsioex  INTO @DATA(l_vrsionex) FROM /sapapo/apo01 WHERE vrsioid = @ls_source-versid.
      ls_pdskey-pds_name = ls_source-name.
      ls_pdskey-pds_usage = 'P'.
      ls_pdskey-planning_version = l_vrsionex.
      APPEND ls_pdskey TO lt_pdskeys.
      EXIT.
    ENDLOOP.

    IF lt_pdskeys IS INITIAL.
      MESSAGE e059(zpp01) WITH ls_ordkey-ordno  INTO lv_message.
      CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'.
      EXIT.
    ENDIF.
    CALL FUNCTION 'BAPI_PDSSRVAPS_GETLIST'
      EXPORTING
        logical_system = ls_ordmap-logsys
      TABLES
        pds_key        = lt_pdskeys
        pds_mode       = lt_pds_modes
        return         = lt_return.
    IF lt_pds_modes[] IS INITIAL.
      LOOP AT lt_return INTO DATA(ls_return).
        CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'
          EXPORTING
            iv_msgty         = ls_return-type
            iv_msgid         = ls_return-id
            iv_msgno         = ls_return-number
            iv_msgv1         = ls_return-message_v1
            iv_msgv2         = ls_return-message_v2
            iv_msgv3         = ls_return-message_v3
            iv_msgv4         = ls_return-message_v4
            iv_write_message = gc_false.
      ENDLOOP.
    ENDIF.

    CALL FUNCTION '/SAPAPO/CRES_RESOURCE_READ'
      EXPORTING
        i_resuid             = ls_ext_outputs-main_resource
      IMPORTING
        e_res_head           = ls_res_head
      EXCEPTIONS
        not_qualified        = 1
        not_found            = 2
        simversid_is_initial = 3
        location_not_found   = 4
        OTHERS               = 5.
    IF sy-subrc <> 0.
      MESSAGE w060(zpp01) WITH ls_ordkey-ordno INTO lv_message.
      CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'
        EXPORTING
          iv_write_message = gc_false.
    ENDIF.

    READ TABLE lt_pds_modes INTO ls_pds_mode WITH KEY resource = ls_res_head-name.
    IF sy-subrc = 0.
      READ TABLE lt_source INTO ls_source WITH KEY name = ls_pds_mode-pds_name .
      IF sy-subrc = 0.
        CALL FUNCTION '/SAPAPO/RRP_ORDER_SET_SOURCE'
          EXPORTING
            iv_ordid            = ps_planord-ordid
            iv_position_no      = ps_planord-posno
            iv_line_no          = ps_planord-linno
            iv_application      = gs_heur_settings-heur_pps-application
            iv_trpid            = ls_source-trpid
            iv_ttype            = ls_source-ttype
            iv_beskz            = ls_source-beskz
          EXCEPTIONS
            order_not_changable = 1
            OTHERS              = 2.
        IF sy-subrc <> 0.
          MESSAGE e061(zpp01) WITH ls_ordkey-ordno INTO lv_message.
          CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'.
        ELSE.
          MESSAGE s062(zpp01) WITH ls_ordkey-ordno INTO lv_message.
          CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'.
          APPEND ps_planord-ordid TO gt_object_keys-orderid_tab.
        ENDIF.
      ENDIF.
    ENDIF.

  ELSE.
    MESSAGE e060(/sapapo/rrp) INTO lv_message.
    CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE' EXPORTING  iv_write_message = gc_false.
  ENDIF.

ENDFORM.

更改订单数量

FORM frm_update_qty  CHANGING ps_planord TYPE  ty_planord
                              e_changed_objects TYPE  /sapapo/heur_changed_objects
                              e_object_keys TYPE  /sapapo/heur_object_keys
                              ps_ztpp128 STRUCTURE ztpp128.
  DATA:
    ls_ext_io_key     TYPE /sapapo/om_ext_io_key,
    lt_io_key         TYPE /sapapo/om_io_key_tab,
    lt_changed_pegids TYPE /sapapo/om_pegid_tab,
    lt_changed_capreq TYPE /sapapo/om_cap_req_pt_tab,
    lv_new_orderid    TYPE /sapapo/orderuid,
    ls_ordkey         TYPE /sapapo/ordkey,
    lv_message        TYPE char80.
  "DATA(lo_ppds) = NEW zcl_ppds_inf( ).
  DATA lv_ptime TYPE /sapapo/real_menge.
  DATA lt_aoext   TYPE /sapapo/seq_aoext_tab.
  DATA lv_astad          TYPE /sapapo/pt_astad. "活动开始日期
  DATA lv_bmsch_org TYPE zde_bmsch.
  DATA lv_new_qty TYPE  /sapapo/real_menge.
  DATA ls_heur_settings TYPE  /sapapo/heur_settings.

  lv_ptime = ps_planord-ptime / 3600.
  lv_bmsch_org = COND #( WHEN lv_ptime IS NOT INITIAL THEN  ps_planord-quant  / lv_ptime ELSE 0 ).
  lv_new_qty = COND #( WHEN lv_bmsch_org IS INITIAL OR ps_ztpp128-bmsch IS INITIAL THEN ps_planord-quant
                       ELSE ( ps_ztpp128-bmsch / lv_bmsch_org  ) * ps_planord-quant ).
  ps_planord-real_quantity =  lv_new_qty .
  ps_planord-real_quantity_org  = ps_planord-quant.
  IF ps_planord-real_quantity EQ ps_planord-real_quantity_org .
    EXIT.
  ENDIF.

  READ TABLE gt_ext_outputs INTO DATA(ls_ext_outputs) WITH KEY orderid = ps_planord-ordid BINARY SEARCH.
  READ TABLE gt_aoextseq  INTO DATA(ls_aoextseq) WITH KEY ordno = ps_planord-ordno  actyp = 'S' .
  MOVE-CORRESPONDING gs_heur_settings TO ls_heur_settings.
  CONVERT DATE ls_aoextseq-astad TIME ls_aoextseq-astat INTO TIME STAMP ls_heur_settings-heur_pps-starttime TIME ZONE sy-zonlo.
  CALL FUNCTION '/SAPAPO/RRP_ORDER_CHANGE_INTAC'
    EXPORTING
      iv_orderid           = ps_planord-ordid
      iv_position_no       = ps_planord-posno
      iv_line_no           = ps_planord-linno
      iv_is_input_node     = ls_ext_outputs-is_input_node
      iv_real_quantity_new = ps_planord-real_quantity
      "iv_endtime           = gs_heur_settings-heur_pps-endtime
      is_heur_settings     = ls_heur_settings
      iv_application       = gs_heur_settings-heur_pps-application
      iv_dialog            = abap_false
    IMPORTING
      et_changed_ios       = lt_io_key
      et_changed_pegids    = lt_changed_pegids
      et_changed_cap_reqs  = lt_changed_capreq
      ev_new_orderid       = lv_new_orderid
    EXCEPTIONS
      order_not_changable  = 1
      error_message        = 2
      OTHERS               = 3.
  IF sy-subrc <> 0.
    MESSAGE e064(zpp01) WITH ps_planord-ordno INTO lv_message.
    CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'.
  ELSE.
    MESSAGE s063(zpp01) WITH ps_planord-ordno INTO lv_message.
    CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'.
  ENDIF.
  APPEND LINES OF lt_io_key         TO e_changed_objects-io_key_tab.
  APPEND LINES OF lt_changed_pegids TO e_changed_objects-pegid_tab.
  APPEND LINES OF lt_changed_capreq TO e_changed_objects-cap_req_pt_tab.
  IF lv_new_orderid IS  NOT INITIAL.
    APPEND lv_new_orderid TO e_object_keys-orderid_tab.
  ENDIF.


ENDFORM.

 

 固定计划订单日期

FORM frm_order_fix  USING pt_planord TYPE tt_planord.
  DATA ls_exclude_fields TYPE /sapapo/om_exclude_fields.
  DATA lt_opr            TYPE /sapapo/dm_opr_tab.
  DATA lt_fix_act TYPE /sapapo/om_tab_act.
  DATA lt_activities TYPE /sapapo/om_tab_act.
  DATA lt_return      TYPE bapiret2_t.
  DATA lv_message TYPE string.
  DATA lv_simsession TYPE /sapapo/om_simsession.
  ls_exclude_fields-slacktime    = 'X'.
  ls_exclude_fields-devquantity  = 'X'.
  SORT pt_planord BY ordid.
  DELETE ADJACENT DUPLICATES FROM pt_planord COMPARING ordid.

  LOOP AT pt_planord INTO DATA(ls_planord).
    REFRESH: lt_activities[],lt_opr[],lt_fix_act.

    CALL FUNCTION '/SAPAPO/RRP_LC_ORDER_GET_DATA'
      EXPORTING
        iv_order          = ls_planord-ordid
        is_exclude_fields = ls_exclude_fields
        iv_simversion     = gv_simid
      IMPORTING
        et_activities     = lt_activities[]
        et_opr            = lt_opr
      EXCEPTIONS
        error_message     = 1.
    READ TABLE lt_opr WITH KEY oprnr = 9000 INTO DATA(ls_opr).
    IF sy-subrc EQ 0.
      READ TABLE lt_activities[] INTO DATA(ls_act) WITH KEY oprcounter = ls_opr-oprcounter
                                                            acttype = 'P'.
      IF sy-subrc EQ 0.
        ls_act-act_status = 2.
        APPEND  ls_act TO lt_fix_act.
      ELSE.
        CONTINUE.
      ENDIF.
    ENDIF.

    CALL FUNCTION '/SAPAPO/OM_MESSAGES_INITIALIZE'.
    CALL FUNCTION '/SAPAPO/RRP_SIMSESSION_CREATE'
      EXPORTING
        iv_simid      = gv_simid
      IMPORTING
        ev_simsession = lv_simsession.
    CALL FUNCTION '/SAPAPO/EFPL_OPERATIONS_FIX'
      EXPORTING
        i_simsessid             = lv_simsession
        i_simverid              = gv_simid
      TABLES
        i_act_fix_tab           = lt_fix_act
      EXCEPTIONS
        operation_already_fixed = 1
        interval_not_valid      = 2
        operation_not_fixed     = 3.
    CALL FUNCTION '/SAPAPO/OM_MESSAGES_GET'
      IMPORTING
        et_messages = lt_return.
    LOOP AT lt_return INTO DATA(ls_return) WHERE type EQ 'A' OR type EQ 'E'.
      EXIT.
    ENDLOOP.
    IF sy-subrc EQ 0.
      MESSAGE e067(zpp01) WITH ls_planord-ordno INTO lv_message.
      lv_message = |{ lv_message } { ls_return-message }|.
      CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'.
    ELSE.
      MESSAGE s068(zpp01) WITH ls_planord-ordno INTO lv_message.
      lv_message = |{ lv_message } { ls_return-message }|.
      CALL FUNCTION '/SAPAPO/OM_MESSAGES_SY_STORE'.
*      CALL FUNCTION '/SAPAPO/TSIM_SIMULATION_MERGE'
*        EXCEPTIONS
*          lc_error = 1
*          OTHERS   = 2.
    ENDIF.
    CLEAR lt_return.
  ENDLOOP.

ENDFORM.

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
CSP:指的是Content Security Policy(内容安全策略),它是一种用于保护网站免受跨站脚本攻击(XSS)和数据注入攻击的安全机制。通过设置CSP,网站管理员可以控制浏览器只加载指定来源的资源,从而减少恶意代码的风险。 CSV:指的是Comma-Separated Values(逗号分隔值),它是一种常见的文件格式,用于存储和传输表格数据。CSV文件中的每一行代表一个数据记录,每个字段之间使用逗号进行分隔。 PP:指的是Privacy Policy(隐私政策),它是一种声明或公告,用于告知用户个人信息的收集、使用和保护方式。隐私政策通常出现在网站、应用程序或服务的页面上,以确保用户了解其个人信息的处理方式。 PV:指的是Page View(页面浏览量),它是衡量网站或应用程序页面被访问的次数。PV可以用来评估网站或应用程序的流量和受欢迎程度。 PT:指的是Performance Testing(性能测试),它是一种测试方法,用于评估系统、应用程序或网站在不同负载条件下的性能表现。性能测试可以帮助发现系统瓶颈、优化性能和提高用户体验。 HM:可能是指Hash Map(哈希映射),它是一种数据结构,用于存储键值对。哈希映射通过将键映射到唯一的索引位置来实现快速的查找和插入操作。哈希映射在计算机科学中被广泛应用于各种算法和数据处理任务。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值