2017-04-26 5 views
0

정확히 내 질문입니다.cl_gui_alv_grid 유형의 참조에 더티 할당을 사용 하시겠습니까? 일반적으로 불가능한가요?

주제에서 언급 한 트릭으로 쉽게 해결할 수있는 새로운 요구 사항을 확인해야합니다.

컨설턴트가 말한 더러운 종류의 실현 외에도, 그는 우리가 더러운 할당을 사용하도록 허용했다.

그래서 BADI 방법으로 시작하여 두 개의 더러운 할당이 제대로 작동합니다.

하나는 GUI 개체에 대한 참조가없는 개체를 할당하고 다른 개체는 데이터 테이블 만 할당합니다. 둘 다 같은 프로그램에 있습니다.

이제 동일한 프로그램의 ALV 그리드 중 하나에서 필드 기호를 할당하려고합니다.

SY-SUBRC0을 반환하지만 나중의 fieldsymbol은 INITIAL을 가리 킵니다.

보안 측면에서 허용되지 않는다고 생각합니다.

어쨌든, 나는 여기에 내 가정에 대한 확인이나 수정을 요청합니다.

+0

당신이 말하는 것에 대한 코드 예제를 줄 수 있습니까? –

+0

불행히도, 이것은 정말로 많은 코드 일 것입니다. 그러나 나는 빈 레퍼런스를 왜 받았는지 알아 냈습니다. PBO badi 메서드 안에 있었고 그리드는 그 당시 인스턴스화되지 않았습니다. 나는 다르게 일하고있다. – icbytes

답변

0

내가 아는 한 보안과 관련이 없습니다. 더러운 할당의 가능성을 피할 수있는 기술이 있지만, 그것은 또 다른 이야기입니다. global로 정의 된 경우 GUI 컨트롤에 대한 참조는 정상적이고 도달 가능한 변수로 계속 남아 있지만 시간이 지나면 초기화 될 수 있습니다.

저를 백업하기위한 공식 CFW documentation를 고개가 그들이 쓰기 : 컨트롤의

수명은 수명 관리에 의해 조절된다. 라이프 타임 관리는 더 이상 필요없는 프런트 엔드 에서 컨트롤을 자동으로 삭제합니다. 응용 프로그램의 물론 또한 컨트롤의 명시적인 파괴를 지원합니다.

그래서 그 서버 측 GUI 컨트롤에 대한 참조 ("가비지 컬렉터"의 일종)는 시스템 자체에 의해 명시 적으로 또는 자동 처리 프로그램 중 청소를 초기화 할 수 있다는 것을 의미한다.

컨트롤 수명에 대한 추가 정보 here.

0

dirty assigns를 사용하는 것은 일반적으로 소프트웨어 설계 (캡슐화 및 인터페이스)의 두 가지 원칙을 벗어나므로 보안 및 견고성의 영역을 손상시킬 수 있으므로 매우 나쁜 생각입니다. 더티 할당을 사용할 때 잘못되었을 수있는 것에 대한 설명이 블로그를 읽을 수 있습니다. Agreements must be kept