bluebyte.tistory.com/52 보완문서


PO 를 승인하는 과정중에 Purchasing 문서가 많은 이유로 승인이 진행 되지 않는경우가 있습니다.

 모듈 운영을 하다보면은  (원인을 찾아서 근본적으로 해결하는 것이 최상의 경우겠지만 .)

간헐적으로 발생하는 경우혹은 월 마감 작업때 발생 할 경우에 원인 분석에 그리 많은 시간을 주어지는 경우가 많지 않은듯합니다. 


ORACLE ERP 모듈을 PO/INV 모듈을 운영하면서 개발도하고, 다른 법인 프로젝트 구축도 하고,

Application DBA 역할도 하면서, 서버의 관리도 간혹하는데 원인까지 찾고 있으면 사방에서 날아오는

 문의 사항과 프로그램오류, 인사정보 인터페이스, 권한 부여,서버 상태 이상, 내부 업무등으로 

뭐하는짓인지 까먹을때가 많습니다.


본론으로 들어가서 PO 승인단계에서의 오류는 공식문서에는 아래의 3가지 경우를 알려주고 있습니다.


1. 일시적인 Workflow Error. 새로 생성된 문서에 대해서는 에러가 발생하지 않습니다.

2. PO 승인이 진행중일 때 Purge된 workflow. 이 Item type과 Item key에 대해 Workflow activity가 없습니다.

3. 문서에 존재하는 data corruption. 만약 문서에 수정을 필요로 하는 부정확한 데이터가 있고, 

Worklist에 notification이 없다면, 해당 문서는 Reject 될 수 있습니다.


위의 3가지 경우에는 아무것도 손안대고 표준프로그램만 사용했을때 기준으로는 맞을지 모르겠지만, 

Setup 만으로 100퍼센트 국내 고객요구사항을 맞추기 어렵겠죠.(아마도 그럴거에요;;;)


예외적인 케이스이긴하지만 현재 운영하고 있는 사이트서도 PO 표준 프로그램을 사용지만,

승인처리시에 특정 품목 타입의 경우 예산을 체크 하기위해서 폼퍼스널을 걸기도 하고,

특정 PO 의 경우 전자 결제 승인을 받게 하고자  표준 워크플로우를 뜯어서  전자결제 호출 로직을

 강제로 넣은상태로 운영중입니다.;;;;


모듈운영자에게 어드민계정이 오픈 되어 있다면 워크플로우 스텝별로 재시작도 가능하고 강제로 데이터

 보정도 가능하고, 다이어그램이 있어서 어느부분까지 어떻게 흘러 갔는지 확인이 가능합니다.

어쨌든 PO 에서뿐아니라 워크플로우사용하는 모듈에 대해서 확인은 여러가지 방법이 있습니다.



FND_TOP 아래에 wfstatus.sql 까서 실행시키거나

참고 문서 : 

bde_wf_item.sql - Runtime Data of a Single Workflow Item (문서 ID 187071.1) 


bde_wf_item.sql 사용 하거나 

참고 문서:

How To Diagnose and Troubleshoot Problems In Procurement Workflows Using Scripts (문서 ID 374428.1)


결국엔 필요한 데이터는 WF 로 시작하는 테이블에 내용이 전부 담겨져 있습니다.

(R12 12.1 기준  WF 로 시작하는 테이블  70개 정도)


참고 OBJECT (TABLE,VIEW)


- WF_ACTIVITIES

- WF_ACTIVITIES_VL

- WF_ACTIVITY_ATTR_VALUES

- WF_ITEM_ACTIVITY_STATUSES

- WF_ITEM_ACTIVITY_STATUSES_H

- WF_ITEM_ATTRIBUTE_VALUES 

- WF_ITEM_ATTRIBUTES_VL  

- WF_ITEMS

- WF_LOOKUPS

- WF_NOTIFICATIONS

- WF_PROCESS_ACTIVITIES


워크플로우 상태 확인 및 처리 방법은 나중에 별도로 진행예정인데 글쓰다 보니 내용이 길어 졌네요.


아무튼 이래저래 원인 찾아서 보정시키기 귀찮다 하는 경우에 PO RESET 스크립트가 있습니다.

Patch:9707155 를 조회해보면 3가지 SQL 파일을 확인 할 수 있습니다.


  • poxrespo.sql - to reset Standard, Blanket, Planned and Contract purchase orders 
  • poresrel.sql - to reset Blanket and scheduled releases
  • poresreq.sql - to reset Internal and purchase requisitions


PO 를 기준으로 수행해보면

PO번호, ORG_ID, PO_ACTION_HISTORY 삭제 여부를 입력하고나서 Commit 을 수행하면 됩니다.


  • ORGANIZATION_ID 확인 (제경우 14개 법인이 있네요)
SELECT hou.organization_id,
       hou.short_code,
       hou.set_of_books_id
FROM hr_operating_units hou;

/*

그림및 기타 쿼리등은 추후 보완;;;;;;;;;;;;;

*/



PO RESET SCRIPT 대상 문서

  • Canceled 되지 않은 문서
  • Finally Closed되지 않은 문서
  • ‘IN PROCESS’나 ‘PRE-APPROVED’상태인 문서

기타 추가 확인 사항은 하기 문서를 조회하면 됩니다. 


참고 문서

영문

How To Reset a Purchase Order or Requisition From In Process or Pre-Approved To Incomplete/Requires Reapproval For Isolated Cases (문서 ID 390023.1)


한글

Purchasing 문서를 InProcess나 Pre-Approved에서 Incomplete/Requires Reapproval 상태로 변경하는 방법 (문서 ID 1519399.1)






R12 기준으로 확인 했을때 보통 툴이나  Dba_Constraints 를 찾아 보게 될건데 오라클 ERP 는 

어떻게 된놈인지 테이블이 2만개가 넘는데 제약 조건이 없다!!  

 

어떻게 된 일일까? 

 

 

 

 

 

그러면 표준테이블 어디서 어떻게 Key 를 찾아서 Extension 개발을 하지?

SQL 조인을 해서 데이터를 뽑던, VIEW 를 만들던 조인이 되야 할꺼 아닌가.

Database 를 공부하다가 보면 제약 조건에 대한 내용은 배우는 거라서 테이블에 웬만하면 다하는줄 알았는데.;;

어느 DB 커뮤니티에 PK FK 가 설정안된 곳이 많이 있냐고 올라온 글을 보고서 뻘 답글을 남긴적이 있다

그러면 어디서 어떻게 찾아야 할까....

 

현 MOS(My Oracle Support) 구 metalink (구 양배추 현 조세호 도 아니고;;) 에 방대한 문서들도 있고.

Technical Reference Manual 이 잘 되어 있다.  

 

E-TRM 에서 해당 버전별 OBJECT 를 조회 하면 각 칼럼들의 설명과 더불어 대빵큰(?) 모듈별 ERD 에서

논리적 연결고리를 확인할 수 있다.

http://etrm.oracle.com/pls/etrm/etrm_search.search

 

▶ ERD는 어느정도 익숙한 모듈이다 싶으면 800%확대해도 간신히 글자가 보이고, 1600% 확대 해야 알아 먹을수 있는 PDF;;

 

이외에 Database 직접 접근이 가능할 경우  해당 테이블의 Index 중에 Unique Index 를 찾아 테이블의 Key 를 찾아서 

조인해서 사용을 할것이다. 대부분이 그렇지 않을까; (처음 배울때 누가 알려주는 사람이 없어서 이렇게 맨땅에 헤딩경험한 1인)

 

한가지 더 소개 하자면, application developer 권한의 Database 라는 메뉴를 사용해서 확인이 가능하다.

 

 

 

 

 

 

TABLE Function 을 참고로 해서 보면 툴에서 많이 보던 내용이 나타난다.

각 아이템별 설명은 대부분 아실거라 생각 하고 패쓰 하고.생소한 아이템들에 대해서는 별도로 개인정리하기로 혼자 정함;;

 

 

Oracle ERP Primary Key 조회

SELECT ft.table_id,        ft.table_name,        ft.table_type,        fpk.primary_key_id,        fpk.primary_key_name,        fpk.description,        fpk.enabled_flag,        fpkc.column_id,        fc.column_sequence,        fc.column_name,        fc.column_type   FROM fnd_tables              ft,        fnd_columns             fc,        fnd_primary_keys        fpk,        fnd_primary_key_columns fpkc  WHERE 1 = 1    AND ft.application_id = fc.application_id    AND ft.table_id = fc.table_id             AND ft.application_id = fpk.application_id    AND ft.table_id = fpk.table_id          AND fpk.application_id = fpkc.application_id    AND fpk.table_id = fpkc.table_id          AND fpkc.column_id = fc.column_id          AND ft.table_name LIKE '<TABLE_NAME>';

 

 테이블/칼럼

fnd_tables

fnd_columns

 

▶ Primary Key/Column

 fnd_primary_keys

 fnd_primary_key_columns

 

 Foreign Key/Column

 fnd_foreign_keys

 fnd_foreign_key_columns

 

▶ Index/Column

 fnd_indexes;

 fnd_index_columns

 

DB OBJECT 아이디와 별개로 각각의 고유한 Table ID 를 가지고 있다.

 

결국은 제약 조건을 테이블에 직접 걸지 않고, 별도의 테이블로 관리를 하고 있었다는거다. 

 

Surrogate Key 사용은 쿼리가 복잡해진다는 단점이 있지만, 데이터 변경에 대한 영향을 적게 받을수 있기 때문에 운영상의 이점이 있다는 점이 

작용을 한것으로 보인다.

 

 

아래의 Wiki 문서 내용을 참조 

 

  • Applications cannot lose their reference to a row in the database (since the identifier never changes).
  • The primary or natural key data can always be modified, even with databases that do not support cascading updates across related foreign keys.

 

 

https://en.wikipedia.org/wiki/Surrogate_key#Advantages

 

추가. Table Column 제약조건 찾기 (2014.11.03)

 

SELECT dcc.owner,        dcc.table_name,        dcc.constraint_name,        dcc.column_name,        decode(dc.constraint_type, 'P', 'PRIMARY KEY', 'U', 'UNIQUE KEY', 'C', 'CHECK OR NOT NULL', 'R', 'FOREIGN KEY') constraint_type   FROM dba_cons_columns dcc,        dba_constraints  dc  WHERE 1 = 1    AND dcc.table_name = dc.table_name    AND dcc.constraint_name = dc.constraint_name    AND dcc.owner = nvl(upper('&USERNAME'), dcc.owner)    AND dcc.table_name = nvl(upper('&TABLENAME'), dcc.table_name)  ORDER BY 1,           2,           3,           4;

 

 

 

'Developer > Tip' 카테고리의 다른 글

몇가지 고려사항 [Oracle ERP Developer guide]  (0) 2009.06.29
ITEM 조건에 따른 LOV 변경  (0) 2009.06.23
VIEW 를 이용한 DML 작업  (0) 2009.06.19

Applies to:

Oracle Purchasing - Version: 12.0.5 to 12.1 - Release: 12 to 12.1
Information in this document applies to any platform.
FORM:POXPOVPO.FMB - Purchase Order Summary GUI

이문서는 R12 PO 모듈에서 구매발주요약(Purchase Order Summary) 프로그램에서 승인된 PO 가 조회되지 않는 현상에 대해서 
설명하고 있습니다.




조치 방법은 아래와 같이 설명되어 있습니다.

Solution

To implement the solution, please do the following :
1.  Navigate to the PO Entry form
2.  Query the PO
3.  If the Contact field in the PO Header is populated with a comma (,) character, click on the LOV of the contact and choose a contact.
4.  Save the PO.
5.  Now you will be able to find this PO through the PO Summary form.


※  해당 PO는  승인이 되어 있으나 구매발주(Purchase Order)에서 엔터쿼리로 조회시에는 데이터가 나오며

구매발주요약(Purchase Order Summary)  에서 조회시에 조회가 안되는 현상

요약 : 

 구매발주(Purchase Order ) 프로그램에서 엔터쿼리로 조회후에 담당자(Contact) 부분을 확인하고,
이후 처리(입고처리,PO 취소) 등을 진행


케이스 A

1. 품목 폐기처리 시 PO LINE 에 해당품목이 남아 있을경우 폐기진행이 안되는 상태 확인
2. PO Summary 화면에서 PO 조회불가
3. Purchase Order 화면에서 엔터쿼리 조회후 담당자 정보 comma(,) 확인 
4. 담당자 정보 변경후 저장 (상태 변경 : 재승인요구- REQUIRES REAPPROVAL)
5. 구매발주 요약 (PO Summary)에서 조회가능
6. PO 취소작업


2013. 10. 16FAQ


이 문서는 오라클 ERP(E-Business suite 11i,r12) 에서 Trace 사용에 대한문서입니다.



/**********   수정중 **********/


1. Trace 기능 활성화

  1) Forms

   

  2) Concurrent Program


  3) WEB Based Screen


2. Trace File 변환

   - tkprof


■ Trace File Location in EBS


- show parameter 

- select v$parameter



2009. 6. 25BULLETINPUBLISHED3

 

▶이문서는 ORACLE E-Business suite (EBS) Release 12.1.1 에서 Purchasing 의

새로운 기능에 대해서 설명하고 있습니다.

 

한가지 확인 해야 할 기능은  이중에서 PO 의 상태를 일괄적으로 Close 하는부분이 추가 되었습니다.  (관련문서 : 

 



$INST_TOP/appl/fnd/12.0.0/secure


공식문서 

Where Is The .dbc File Located For Release 12? (문서 ID 1139860.1)

수정 날짜:2012. 6. 6 유형:HOWTO


해당위치에 DBC 파일이 없거나 삭제 시켰을때 재생성 방법

Method A.  AUTOCONFIG 수행

/db/tech_st/11.2.0/appsutil/scripts/[CONTEXT]


> adautocfg.sh


Method B. DBC file 직접 생성


위치 : /apps/apps_st/appl/ad/12.0.0/admin/template/

NT : 

> adgendbc_nt.cmd

UNIX : 

> adgendbc_ux.sh




원인
Record Group 에서 Query 생성시
Alias 중복으로 인한 내부 변수 자동 생성

해결
Query 에서 Alias 를 Unique 하게 생성

문제내용 : Explorer 에서 오라클  ERP 실행중 디지털 서명 확인창 멈춤
환경 :
    local : WindowsXP/ IE8  /JAVA1.6.0_29
    ERP : unix /Sun / Oracle ERP R12
    
상황 : 익스플로러에서 ERP 실행 중 경고메세지 출력후 더이상 응답없음


원인 : Apllacation 서버와 로컬 JAVA 와의 버젼차이로 인한 문제


솔루션 : 

시작 -> 설정 ->제어판 ->자바
->고급 - 자바 플러그인 - 차세대 자바 플러그인(Enable the next-generation Java Plug-in)
-> 체크해제 ->브라우저 재실행



추가/참조
..



오라클 관련 문서 찾기
http://download.oracle.com/docs/

- 그중에 찾고 싶은문서는 oracle erp 문서입니다.

Oacle Applications
E-Business Suite

  • Applications Releases 11i and 12 
  • - 링크를 따라가면 오라클 erp (EBS) 의 문서를 버젼별로 살펴 볼수 있습니다.

    온라인 및 offline (download 이용 : 12.1.3Ver기준 578.36 MB )
    (2011.11월 기준이므로 추후 버전업이나 다른 요인으로 변경 될수 있음.)

    'Developer > ORACLE ERP' 카테고리의 다른 글

    LOV 에서 ICRGGQ_0 원인  (0) 2012.01.16
    ERP 실행시 자바멈춤 현상  (0) 2011.11.29
    ORACE ERP & TRACE  (0) 2009.04.21
    e – Business란 무엇인가  (0) 2008.07.28
    ERP 구축 방법  (0) 2008.07.21
    frmcmp module={$Program ID} userid={ID}/{PASS} output_file={$Program ID}  compile_all=special batch=yes