前言
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 & & & &
四、效果
运行程序的界面如下,可以批量给生产订单打上删除标识。