판매 주문 처리에서 판매 트랜잭션 항목 창을 열 때 "이전 트랜잭션 수준 게시 세션이 처리를 완료하지 못했습니다." 오류

이 문서에서는 Microsoft Dynamics GP 또는 Microsoft Business Solutions - Great Plains의 판매 주문 처리에서 판매 트랜잭션 항목 창을 열려고 할 때 발생할 수 있는 이전 트랜잭션 수준 게시 세션 처리가 완료되지 않은 오류에 대한 해결 방법을 제공합니다.

적용 대상: Microsoft Dynamics GP
원본 KB 번호: 852623

증상

Microsoft Dynamics GP 또는 Microsoft Business Solutions - Great Plains의 판매 주문 처리에서 판매 트랜잭션 항목 창을 열려고 할 때 다음과 같은 오류 메시지가 표시될 수 있습니다.

이전 트랜잭션 수준 게시 세션이 처리를 완료하지 않았습니다. 완료할 시간을 허용하세요. 실패했다고 생각되면 그레이트 플레인스에서 로그아웃하고 다시 로그인하여 트랜잭션을 복구합니다.

참고

판매 트랜잭션 항목 창을 열려면 트랜잭션을 선택하고 판매를 가리킨 다음 판매 트랜잭션 항목을 선택합니다.

원인

이 문제는 레코드가 SY00500 테이블, SY00800 테이블 또는 SOP10100 테이블에 잠겨 있을 때 발생할 수 있습니다. 레코드에 비어 있는 일괄 처리 번호가 있거나 사용자 ID가 일괄 처리 번호로 나열됩니다.

해결 방법

이 문제를 해결하려면 다음과 같이 하십시오.

  1. 모든 사용자가 Microsoft Dynamics GP를 종료하게 합니다.

  2. 회사 데이터베이스의 백업을 만듭니다.

  3. SQL 쿼리 분석기에서 DYNAMICS 데이터베이스에 대해 SY00800 테이블에서 다음 delete 문을 실행합니다.

    DELETE SY00800
    
  4. 회사 데이터베이스에 대해 다음 문을 모두 실행하여 SY00500 테이블에서 문제 레코드를 찾습니다.

    참고

    다음 문에서 xxx 는 오류가 포함된 사용자 ID를 나타냅니다.

    SELECT * from SY00500 where BACHNUMB = ''
    SELECT * from SY00500 where BACHNUMB = 'xxx'
    
  5. 빈 BACHNUMB 필드와 함께 반환되는 레코드가 있는 경우 다음 delete 문을 사용합니다.

    DELETE SY00500 where BACHNUMB = ''
    
  6. BACHNUMB 필드에 사용자 ID로 반환되는 레코드가 있는 경우 다음 delete 문을 사용합니다.

    참고

    다음 문에서 xxx 는 오류가 포함된 사용자 ID를 나타냅니다.

    DELETE SY00500 where BACHNUMB ='xxx'
    
  7. 판매 트랜잭션 항목 창에서 기존 문서를 선택할 수 있는지 확인합니다. 이 창을 열려면 트랜잭션을 선택하고 판매를 가리킨 다음 판매 트랜잭션 항목을 선택합니다. 기존 문서를 삭제하려면 삭제를 선택합니다. 기존 문서를 무효화하려면 Void를 선택합니다.

  8. 오류 메시지를 계속 받거나 판매 트랜잭션 항목 창에서 기존 문서를 선택할 수 없는 경우 회사 데이터베이스에 대해 SQL Query Analyzer에서 다음 스크립트를 실행하여 SOP10100 테이블에서 문제 레코드를 찾습니다.

    참고

    다음 스크립트에서 xxx 는 오류가 포함된 사용자 ID를 나타냅니다.

    SELECT BACHNUMB,* from SOP10100 where BACHNUMB = '' SELECT BACHNUMB,* from SOP10100 where BACHNUMB = '<xxx>'
    SELECT * FROM SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    SELECT * FROM SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    SELECT * FROM SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    SELECT * FROM SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    
  9. 반환되는 레코드를 기록한 다음 SQL Query Analyzer에서 다음 문을 실행하여 SOP10100 테이블에서 문제 레코드를 삭제합니다.

    참고

    • 트랜잭션이 인벤토리 모듈 및 수취인 관리 모듈에 게시되었는지 확인해야 합니다. 트랜잭션이 인벤토리 모듈 및 수신 가능 관리 모듈에 게시되지 않은 경우 삭제 문을 실행한 후 Sales Transaction Entry 창에서 트랜잭션을 다시 입력해야 합니다.
    • 다음 문에서 xxx 는 오류가 포함된 사용자 ID를 나타냅니다.
    DELETE SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    DELETE SOP10200 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    DELETE SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = 'xxx')
    DELETE SOP10102 where SOPNUMBE in (SELECT SOPNUMBE from SOP10100 where BACHNUMB = ' ')
    DELETE SOP10100 where BACHNUMB = '' DELETE SOP10100 where BACHNUMB = 'xxx'
    
  10. Microsoft Dynamics GP에서 Microsoft Dynamics GP 메뉴에서 유지 관리를 가리킨 다음 링크 확인을 선택합니다.

  11. 계열 목록에서 Sales를 선택한 다음 Sales Work 테이블 그룹에서 검사 링크 프로시저를 실행합니다.

  12. 트랜잭션이 수신물 관리 모듈 및 인벤토리 모듈에 게시되지 않은 경우 판매 트랜잭션 항목 창에서 트랜잭션을 다시 입력합니다.