2013-04-26 2 views
3

SAP 응용 프로그램의 컨텍스트에서 기존 테이블에 열을 추가했으며이 테이블의 기본값을 정의하여 테이블과 관련된 이전 코드 (특히 행을 삽입하는 경우) 새 열을 신경 쓸 필요가 없습니다. 대신 미리 정의 된 기본값으로 자동 채우기를 원합니다 (물론 값이 지정되지 않은 경우에만).SAP의 열에 대한 데이터베이스 테이블 기본값

SAP-GUI 및 ABAP-SQL을 통해서만 액세스 할 수 있지만 뒤에있는 DB 시스템은 Oracle-DB입니다.

SAP의 전문 기술 전문가로서 이것이 가능할 지 모르겠으므로 아마도 여기있는 누군가가 될 것이라고 생각했습니다. 그래서 - 이것이 가능한가, 그렇다면 - 어떻게?

편집 - 요청 시나리오의 세부 정보 : 시나리오가 실제로 매우 간단 : 우리는 표준 사용자 물건을 포함하는 우리의 응용 프로그램 (이름, 일부 설정, IDS, devision, 플래그 등의 무리에 대한 사용자 테이블이 on), 간단한 설정 (사용자가 자신의 웹 인터페이스 용으로 선택한 디자인)을 저장하는 열을 추가했습니다. 그것은 단순히 이름 (char 40)을 포함합니다. 이것이 내가 위에 언급 한 칼럼이고, "Default Design"이라고 말하면 기본값이 필요합니다.

+0

오라클 태그가 삭제됨 SAP DB 로직이 기본 데이터베이스에 대해 신뢰할 수 없다고 지적한 경우 – LionC

+0

시스템 자체에서 제공하는'USR * '테이블을 사용하지 않아서 사용할 수 없다고 생각합니다 디폴트 값을 완벽하게 제공 할 수있는 사용자 데이터에 사용자 정의 데이터를 추가하는 메커니즘? – vwegert

+0

아니요 시스템 제공 테이블을 사용하고 있지 않습니다. 귀하의 답변에서 알 수 있듯이 시도한 것은 불가능합니다. 나는 당신의 대답을 표시하고 정말로 정말로 고마워 할 것입니다. – LionC

답변

2

데이터베이스 수준에서이 작업을 수행하지 마십시오. 진지하게. 데이터베이스 계층에 직접 적용된 변경 사항은 시스템 내부에서 볼 수 없으며 지원해야 할 악몽이 될 수있는 모든 종류의 이상한 부작용을 유발합니다. 또한 변경 및 전송 시스템에서 변경 사항을 가져 오지 않습니다. QA 및 프로덕션 시스템을 수동으로 업데이트해야합니다.

가능한 경우 중립 필드 값 (공백, 0, 기타)이 기본값에 해당하는 방식으로 도메인 값을 선택하는 것이 좋습니다. 이것이 가능하지 않은 경우 시나리오를 자세하게 설명하여보다 구체적인 답변을 얻으십시오.


SAP R/3/ABAP 환경에서는 열의 기본값을 추가하는 옵션을 제공하지 않습니다. 열을 추가 할 때 기본값이 아닌 NULL 기본값을 채우도록 시스템을 강제 설정할 수만 있지만 대개 나쁜 생각입니다. 모든 데이터를 수정하고 기본값을 삽입하는 데는 시간이 걸리고 테이블 크기와 중요도에 따라 프로덕션 중단이 발생할 수 있습니다. 필드를 기본값으로 채우려면 데이터베이스가 아닌 응용 프로그램 서버에서 수행해야합니다. 귀하의 경우에는, 그냥 테이블에 추가 된 컬럼에 대한 읽기 액세스 모듈에서 당신은 기본 값을 정의 할 수 있습니다

IF my_user-ze_design IS INITIAL. 
    my_user-ze_design = co_ze_default_design. 
ENDIF. 
+0

나는 "데이터베이스 레벨"을 어떻게 정의 할 지 모르겠지만 SAP가 제공하는 도구를 얻으려고 시도하지는 않을 것입니다. 그렇게한다면 깨끗하게하고 싶습니다. 시나리오 세부 정보를 확장하여 질문을 수정하는 중입니다. – LionC

0

같은 것을 로직을 추가 할 것입니다 - 당신의 DB는 오라클 11g (또는 이상) 경우, 오라클은 "Dictionary Only Add Column"을 도입했습니다. 즉, 디폴트 값 메타 데이터는 사전에만 저장되므로 기존 레코드를 기본값으로 업데이트 할 필요가 없으며 테이블의 크기에 상관없이 오버 헤드가 없습니다.

관련 문제