【代码】PPARCHP1,批量给SAP生产订单打上删除标识,提高月结时工单结算效率


前言

SAP系统的生产订单产生的数量太多之后,会导致SAP月结时生产订单结算时的工单结算比较缓慢。
因此以原代码拷贝出来,加上了权限检查、创建事务码,并分配给财务会计来定期运行,提高月结效率。


一、PPARCHP1

程序是PPARCHP1
在这里插入图片描述

二、PPARCHP1代码

REPORT pparchp1.
*----------------------------------------------------------------------*
* Fertigungsauftragssreorg: Setzen L#schvormerkung nach Prüfungen      *
*                           Setzen L#schkennzeichen                    *
*----------------------------------------------------------------------*

* generell vereinbarte Daten
INCLUDE: parchcon,
         parchi03.

* Selektionskriterien
SELECTION-SCREEN BEGIN OF BLOCK bild WITH FRAME TITLE TEXT-sel.
SELECT-OPTIONS: aufnr FOR caufv-aufnr MATCHCODE OBJECT co_sh_prodord_all,
                auart FOR caufv-auart.
SELECTION-SCREEN END OF BLOCK bild.

* Parameter zur Bearbeitung
INCLUDE parchi02.

* gemeinsamer Formroutinenpool
INCLUDE parchi01.
INCLUDE parchi04.

* Events
*----------------------------------------------------------------------*
*       Initialization
*----------------------------------------------------------------------*
INITIALIZATION.

  "{ Begin ENHO DIMP_GENERAL_PPARCHP1 IS-A DIMP_GENERAL }
  DATA: lt_sel_dtel TYPE  rsseldtel OCCURS 0,
        ls_sel_dtel TYPE  rsseldtel.

  ls_sel_dtel-name = 'ALL_O'.                " Feldname
  ls_sel_dtel-kind = 'P'.                    " P # für parameters, S # für select-options

  ls_sel_dtel-datenelment = 'MILL_ALL_O'.    " Datenelement
  APPEND ls_sel_dtel TO lt_sel_dtel.
  CLEAR:ls_sel_dtel.


  ls_sel_dtel-name = 'ONLY_Z'.                " Feldname
  ls_sel_dtel-kind = 'P'.                     " P # für parameters, S # für select-options

  ls_sel_dtel-datenelment = 'MILL_ONLY_Z'.    " Datenelement
  APPEND ls_sel_dtel TO lt_sel_dtel.
  CLEAR:ls_sel_dtel.


  ls_sel_dtel-name = 'NOT_Z'.                " Feldname
  ls_sel_dtel-kind = 'P'.                    " P # für parameters, S # für select-options

  ls_sel_dtel-datenelment = 'MILL_NOT_Z'.    " Datenelement
  APPEND ls_sel_dtel TO lt_sel_dtel.
  CLEAR:ls_sel_dtel.


  ls_sel_dtel-name = 'TECO'.             " Feldname
  ls_sel_dtel-kind = 'P'.                                     " P # für parameters, S # für select-options

  ls_sel_dtel-datenelment = 'MILL_TECO'.                            " Datenelement

  APPEND ls_sel_dtel TO lt_sel_dtel.
  CLEAR:ls_sel_dtel.

  CALL FUNCTION 'SELECTION_TEXTS_MODIFY_DTEL'
    EXPORTING
      program                     = sy-repid        " Programmname
    TABLES
      sel_dtel                    = lt_sel_dtel
    EXCEPTIONS
      program_not_found           = 1
      program_cannot_be_generated = 2
      OTHERS                      = 3.
  IF sy-subrc <> 0.
  ENDIF.
  "{ End ENHO DIMP_GENERAL_PPARCHP1 IS-A DIMP_GENERAL }

ENHANCEMENT-POINT pparchp1_02 SPOTS es_pparchp1 STATIC .

  PERFORM initialization USING con_ordertype_porder
                               aobj-pp_order.

* initialize standard options
  PERFORM standard_opt_init.

*----------------------------------------------------------------------*
*       AT SELECTION-SCREEN OUTPUT
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
  PERFORM at_selection_screen_output CHANGING p_pretst p_preprd.

*---------------------------------------------------------------------*
*       AT SELECTION-SCREEN ON SELID                                  *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON selid.
  PERFORM check_selid.

*---------------------------------------------------------------------*
*       AT SELECTION-SCREEN                                           *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON BLOCK action.
  PERFORM check_selection_screen USING set_loev set_loek.

*---------------------------------------------------------------------*
*       AT SELECTION-SCREEN FOR F4                                    *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR auart-low.

  CALL FUNCTION 'CO_F4_AUART'
    EXPORTING
      autyp_imp = con_ordertype_porder
    IMPORTING
      auart_exp = auart-low.

*---------------------------------------------------------------------*
*       AT SELECTION-SCREEN FOR F4                                    *
*---------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR auart-high.

  CALL FUNCTION 'CO_F4_AUART'
    EXPORTING
      autyp_imp = con_ordertype_porder
    IMPORTING
      auart_exp = auart-high.

*---------------------------------------------------------------------*
*       START-OF-SELECTION                                            *
*---------------------------------------------------------------------*
START-OF-SELECTION.
*{   INSERT         ED1K910235                                        1
*&---auth check
  PERFORM frm_auch_check.  "权限校验检查

*}   INSERT

* select orders to be processed
  PERFORM orders_select USING con_ordertype_porder.

* Auftr#ge verarbeiten
  PERFORM activities_on_order USING set_loev set_loek p_pretst space.

* Protokoll ausgeben
* PERFORM write_protocoll_new.                                 "2331370
  PERFORM write_protocoll_new using 'X'.                       "2331370

* END OF REPORT PPARCHP1
*{   INSERT         ED1K910235                                        2
*&---------------------------------------------------------------------*
*& Form FRM_AUCH_CHECK
*&---------------------------------------------------------------------*
*& text
*&---------------------------------------------------------------------*
*& -->  p1        text
*& <--  p2        text
*&---------------------------------------------------------------------*


三、权限检查

FORM frm_auch_check .
  SELECT werks
    FROM t001w
    INTO TABLE @DATA(lt_t001w)
   WHERE werks IN @werks.
**--权限检查
  LOOP AT lt_t001w INTO DATA(ls_t001w).
    AUTHORITY-CHECK OBJECT 'M_MATE_WRK'
    ID 'ACTVT' FIELD '03'
    ID 'WERKS' FIELD ls_t001w-werks.
    IF sy-subrc <> 0.
      CLEAR:werks.
      werks-sign   = 'E'.
      werks-option = 'EQ'.
      werks-low    = ls_t001w-werks.
      APPEND werks.
    ENDIF.
  ENDLOOP.
ENDFORM.
*}   INSERT

*Text elements
*----------------------------------------------------------
* 004 Choose an Action
* 005 Status selection profile does not exist
* ACT Actions
* AZF Summary
* CTL Flow Control
* DAY Days
* RES Constraints
* SEL Production Order


*Selection texts
*----------------------------------------------------------
* AUART D       .
* AUFNR D       .
* DISPO D       .
* FEVOR D       .
* GSTRP D       .
* INTERVAL         Delivery Date Overrun
* LTRMI D       .
* MAXNUM D       .
* PROTEXT         Detail Log
* P_PREPRD D       .
* P_PRETST D       .
* P_PROT D       .
* P_PROT_O D       .
* SELID         Status Selection Profile
* SET_LOEK         Set Deletion Indicator
* SET_LOEV         Set Deletion Flag
* WERKS D       .


*Messages
*----------------------------------------------------------
*
* Message class: 00
*058   Entry & & & does not exist in &4 (check entry)
*
* Message class: CO
*677   You have no archiving authorization
*889   & & & &


四、效果

运行程序的界面如下,可以批量给生产订单打上删除标识。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

saplakes

每天一起学习和进步!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值