메뉴 건너뛰기

SAP 한국 커뮤니티



REPORT ZPSFC001.
*----------------------------------------------------------------------*
* This reports inactivates the deletion indicator for production orders.
* Please run this report in testmode first to check if only orders are
* included which should not be archived.
* It will not remove the deletion flag from the order. This must be
* done manually by inactivating the deletion flag within the order.
* --> Testmode: 'X' -> no update performed
* --> PARTDLVD: 'X' -> partially delivered orders will not be updated
* --> PARTCONF: 'X' -> partially confirmed orders will not be updated
* --> ORDER   : Range of orders to be selected
* --> MATNR   : Range of materials for which orders exist
*----------------------------------------------------------------------*
* Caution: If you want to use this report for other order types than   *
*          production orders please modify lines where
*          'auftragstyp-fert' is used
*----------------------------------------------------------------------*
* I0010(stk_tru)-partially confirmed, I0074(stk_tli)-partially deliverd

INCLUDE LCOKOSTA.                      "get constants for status
INCLUDE LCOKOTYP.                      "get constants for order type

* parameter definition
TABLES: VJAUFK, AUFK.
PARAMETERS:
  TESTMODE   DEFAULT 'X',
  PARTDLVD   DEFAULT 'X',              "check for partially delivered
  PARTCONF   DEFAULT 'X'.              "check for partially confirmed
SELECT-OPTIONS:
  ORDER     FOR VJAUFK-AUFNR MATCHCODE OBJECT ORDE,
  MATNR     FOR VJAUFK-MATNR MATCHCODE OBJECT MAT1.

DATA: BEGIN OF FERT OCCURS 1.
        INCLUDE STRUCTURE VJAUFK.
DATA: END OF FERT.
DATA: BEGIN OF COLL_TAB OCCURS 1,
        AUFNR LIKE AUFK-AUFNR,
      END OF COLL_TAB.
DATA: BEGIN OF STATUS OCCURS 1.
        INCLUDE STRUCTURE JSTAT.
DATA: END OF STATUS.
DATA: LAST_LEAD_AUFNR LIKE AFKO-LEAD_AUFNR.

* To set status I0013 - stk_loe inactive
STATUS-STAT = STK_LOE.
STATUS-INACT = 'X'.
APPEND STATUS.

IF MATNR[] IS INITIAL AND
   ORDER[] IS INITIAL.
  message i889(CO) with
          'Please enter at least one selection criteria.'.
  exit.
ENDIF.

SELECT * FROM VJAUFK INTO TABLE FERT
         WHERE AUFNR IN ORDER
         AND   MATNR IN MATNR
         AND   STAT  = STK_LOE
         AND   INACT = SPACE
         AND   AUTYP = AUFTRAGSTYP-FERT.

IF SY-SUBRC <> 0.
  WRITE 'NO PRODUCTION ORDERS FOUND'.
  EXIT.
ENDIF.

* for collective orders we have to guarantee, that all orders for
* one collective order are member of the selection
* --> we need to add orders not included yet.

PERFORM CORRECT_COLLECTIVE_ORDER.

LOOP AT FERT.

* Commit - Logic:
* With first enter in loop do not commit (commit_flag)
* For each single order commit work
* Collective orders are committed at once

    IF FERT-PRODNET EQ 'X'.
*       collective order
      IF LAST_LEAD_AUFNR NE FERT-LEAD_AUFNR.
*         there is a new (collective) order --> commit amd refresh
        IF TESTMODE IS INITIAL.
          COMMIT WORK.
        ENDIF.
        CALL FUNCTION 'STATUS_BUFFER_REFRESH'.
        LAST_LEAD_AUFNR = FERT-LEAD_AUFNR.
      ENDIF.
    ELSE.
      IF TESTMODE IS INITIAL.
        COMMIT WORK.
      ENDIF.
      CALL FUNCTION 'STATUS_BUFFER_REFRESH'.
    ENDIF.

  IF NOT PARTDLVD IS INITIAL.
*   check if order is partially delivered if requested
    CALL FUNCTION 'STATUS_CHECK'
         EXPORTING
              OBJNR             = FERT-OBJNR
              STATUS            = STK_TLI
         EXCEPTIONS
              STATUS_NOT_ACTIVE = 2.
    IF SY-SUBRC = 2.
      CONTINUE.
    ENDIF.
  ENDIF.

  IF NOT PARTCONF IS INITIAL.
*   check if order is partially confirmed if requested
    CALL FUNCTION 'STATUS_CHECK'
         EXPORTING
              OBJNR             = FERT-OBJNR
              STATUS            = STK_TRU
         EXCEPTIONS
              STATUS_NOT_ACTIVE = 2.
    IF SY-SUBRC = 2.
      CONTINUE.
    ENDIF.
  ENDIF.

  CALL FUNCTION 'STATUS_CHECK'
       EXPORTING
            OBJNR             = FERT-OBJNR
            STATUS            = STK_LOE
       EXCEPTIONS
            STATUS_NOT_ACTIVE = 2.
  IF SY-SUBRC = 2.
    WRITE: / 'ORDER ', FERT-AUFNR, ': DELETION INDICATOR NOT ACTIVE'.
    CONTINUE.
  ENDIF.

  IF TESTMODE IS INITIAL.
    CALL FUNCTION 'STATUS_CHANGE_INTERN'
         EXPORTING
              OBJNR  = FERT-OBJNR
         TABLES
              STATUS = STATUS.
    UPDATE AUFK SET  AENAM = SY-UNAME
                     AEDAT = SY-DATUM
                     aezeit = sy-uzeit              "as of release 4.0
            WHERE    AUFNR = FERT-AUFNR.
    LAST_LEAD_AUFNR = FERT-LEAD_AUFNR.
  ENDIF.

  IF SY-SUBRC IS INITIAL.
    WRITE: / 'ORDER ', FERT-AUFNR, ': DELETION INDICATOR REMOVED'.
  ENDIF.
  IF NOT TESTMODE IS INITIAL.
    WRITE: ' - TESTMODE'.
  ENDIF.
ENDLOOP.

COMMIT WORK.
SKIP 1.
WRITE: 'Program finished'.

*---------------------------------------------------------------------*
*       FORM CORRECT_COLLECTIVE_ORDER                                 *
*---------------------------------------------------------------------*
*       ........                                                      *
*---------------------------------------------------------------------*
FORM CORRECT_COLLECTIVE_ORDER.
  DATA: HELP_DATE LIKE SY-DATUM,
        HELP_COUNTER TYPE I.

  SORT FERT BY LEAD_AUFNR AUFNR.
* add each leading order into coll_tab
  LOOP AT FERT WHERE LEAD_AUFNR NE SPACE.
*   CHECK fert-aufnr NE fert-lead_aufnr.
    COLL_TAB-AUFNR = FERT-LEAD_AUFNR.
    COLLECT COLL_TAB.
  ENDLOOP.

  IF NOT COLL_TAB[] IS INITIAL.
    SELECT * FROM VJAUFK APPENDING TABLE FERT
                                  FOR ALL ENTRIES IN COLL_TAB
                                  WHERE LEAD_AUFNR EQ COLL_TAB-AUFNR
                                  AND   STAT  = STK_LOE
                                  AND   AUTYP = AUFTRAGSTYP-FERT
                                  AND   LOEKZ = 'X'.
    SORT FERT BY LEAD_AUFNR AUFNR.
    DELETE ADJACENT DUPLICATES FROM FERT.
  ENDIF.

ENDFORM.

번호 제목 글쓴이 날짜 조회 수
217 대체 BOM 효력종료일 질문입니다. [1] devilston 2018.12.06 885
216 생산오더 TECO 처리 및 해제 방법은 어떻게 하는것인가요? [2] 무직자 2018.12.06 2833
215 해체 작업지시 방법 [1] 요셉82 2018.11.29 592
214 생산 오더 생성시 BOM 복사 관련 문의 [1] magicinside 2018.10.10 778
213 이미 생성된 bom의 내부 자재들의 스크랩을 변경할 수 있나요?? [1] 가방 2018.09.12 611
212 SAP PP교육정리 file 프로복서™ 2018.09.11 4375
211 백플러시 작업중 오류가 생기는 원인을 알고 싶습니다.. [2] 링구아프랑카 2018.07.03 1375
210 Process order 화면 Screen Exit 모포 2018.05.18 729
209 Process order 예약요청 수량 변경 문의 바이민 2018.03.26 729
208 Routing 저장시 걸리는 Exit이나 Badi 아시는 분 있나요? 푸딩딩 2018.03.08 710
207 다음 working day 구하기 sapjoy 2018.02.01 1050
206 재공(WIP) 금액 계산하는 법 설명좀 부탁드립니다. [2] 무직자 2017.12.09 1884
205 BOM 가져오는 SQL [2] sapjoy 2017.11.16 2983
204 라우팅에서 공정찾기 했을때 선택되도록 못하나요? [2] 푸딩딩 2017.08.29 1209
203 자재 출고 관련 테이블이 궁금합니다. [1] 하나** 2017.07.21 1795
202 mrp 로트 크기/반올림값 문의 [1] 마다다다 2017.07.03 1589
201 질문 하나 더! 이러한 MRP구성이 가능한가요? [3] 도라에멍 2017.06.21 1371
200 MRP를 통한 산출물.. planned order? [2] 도라에멍 2017.06.21 2001
199 Workcenter id 최대 자리수 문의 [1] loveuplife 2017.04.26 957
198 LTP와 DM에 대한 설명 쫌 부탁드립니다. [1] 아밥돌이 2017.04.21 3490