본문 바로가기

전체 글105

[개발Tip] ALV 리포트의 백그라운드 실행 ALV 리포트의 백그라운드 실행cl_gui_alv_grid=>offline( ) ALV를 사용하는 CBO 리포트를 백그라운드로 실행시 Container 생성에서 덤프가 발생하는 경우가 종종 있습니다. Dialog가 아닌 경우 구조적으로 GUI Container를 생성할 수 없어서, 대부분의 표준 리포트는cl_gui_alv_grid=>offline 메소드를 이용하여 현재 사용 환경이 Dialog인지 Background(또는 RFC 등등 Dialog 환경이 아닌 경우)인지 구분하여 container 생성 여부를 분기 처리합니다. # 소스코드 예시  DATA: BEGIN OF lo_grid,          container TYPE REF TO cl_gui_docking_container,          .. 2025. 3. 2.
[개발Tip] Internal Table 순차탐색과 Secondary Key 성능 비교 Internal Table 순차탐색과 Secondary Key 성능 비교standard Table with non-unique sorted keysorted table with non-unique key 작년에 Internal Teble의 유형별로 성능 비교를 다룬적이 있었는데,ABAP 개발시 여러 이유로 인해 Loop내에서 Internal Table을 순차탐색을 하거나 standard table을 secondary key 설정 없이 Loop where을 사용하여 경우가 종종 있는데, 이럴 경우 데이터 증가에 따라 성능이 기하급수적으로 나빠지므로 주의해야 합니다.특히 이부분은 ABAP Performance Tuning시 기본적으로 조치해야 하는 부분입니다.2023.05.16 - [ABAP/개발Tip] -.. 2024. 11. 7.
[Class] CL_SALV_TABLE - SALV 제어 CL_SALV_TABLESALV는 기능이 제한적인 대신 사용방법이 간단하여, CBO 프로그램 내에서 간단하게 리스트를 보여주거나 팝업 형태로 보여줄때 간편하게 사용 할 수 있습니다. 또한, Full Screen으로 사용할 경우 해당 리포트가 백그라운드 작업을 돌릴 경우 스풀에 화면리 리스트로 남게되어 아주 편리합니다. # 사용 예시REPORT YSALV_TABLE.CLASS LCL_HANDLE_EVENTS DEFINITION.  PUBLIC SECTION.    METHODS:       ON_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_SALV_EVENTS_TABLE        IMPORTING ROW  COLUMN,      ON_LINK_CLICK   FOR EVEN.. 2024. 10. 31.
[Class] CL_AUTH_OBJECTS_TO_SQL - 사용자의 보유 권한으로 SQL 조건문 생성 CL_AUTH_OBJECTS_TO_SQL사용자의 보유 권한으로 SQL 조건문 생성 CBO 프로그램에서 사용자가 보유한 권한에 해당 하는 데이터만 조회하기 위해 기존에는 range를 이용하여 권한이 있는 조직 데이터를 만들어 쿼리문을 처리하였는데, 비교적 간단하게 권한오브젝트에 대해 사용자의 보유권한을 이용하여 조건문을 자동으로 생성해 주는 Class가 있어서 정리해 봤습니다. 권한을 점검하고자 하는 오브젝트와 권한값 을 넣으면 해당하는 조직정보나 문서유형 같은 값들을 SQL 조건문으로 만들어 줍니다. 적절하게 활용하면 CBO 프로그램의 권한 제어에 상당히 효율적으로 보입니다. # 사용예시  "데이터 조회시 권한 점검 포함  DATA(lv_where_clause) = VALUE string( ).  DAT.. 2024. 10. 29.
[Proxy] Proxy의 일부 구성요소가 CTS에 누락되었을 경우 Proxy의 일부 구성요소가 CTS에 누락되었을 경우 SE38 > SPROX_LOG_TRANSP_OBJ_INSERT 2024. 10. 29.
[개발Tip] APPEND 성능 비교 (value for, loop, move 등) APPEND 성능 비교 (value for, loop, move 등)VALUE FOR, LOOP APPEND, MOVE Internal Table의 일부 필드값을 Range로 만들 경우 편리함 때문에 요즘에는 계속 value for만 사용하고 있었는데,문득 동일한 데이터를 Append 할때 loop append가 빠른지 value for가 빠른지 궁금하여 실험을 해봤습니다. 나름대로 여러가지를 테스트 해봤는데. 어마어마한 차이는 없는듯 합니다. 그나마 단순히 A itab을 B itab으로 복사할 경우 move-corresponding이 압도적으로 빠르고조건에 따라 필터링해서 데이터를 복사할 경우 value for assigning이 조금이라도 더 빨랐습니다. 그리고, 모든 경우에서 into 보다 assi.. 2024. 10. 24.
[Class] CL_GUI_TEXTEDIT CL_GUI_TEXTEDIT다수의 Text Editor 제어 Text Editor가 사용될 스크린, 컨테이너 정보와 텍스트 내용을 담을 변수명 등 여러 속성들을 Internal Table로 관리하여 다수의 Text Editor를 손쉽게 제어할수 있는 방법입니다. # Text Editor 정보를 관리할 전역 변수TYPES: BEGIN OF gts_text_editors,         dynnr         TYPE sy-dynnr,              "Text Editor가 표시된 스크린 번호         editor_name   TYPE scrfname,    "Text Editor가 사용될 Container 명(string 필드명과 동일하게 한다)         is_required   TY.. 2024. 10. 24.