ABAP/개발Tip22 [개발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. [개발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. [개발Tip] ALV의 필드 정렬과 셀 정렬을 다르게 하고 싶을때 ALV의 필드 정렬과 셀 정렬을 다르게 하고 싶을때 ALV의 필드의 좌/우 정렬은 필드카탈로그의 JUST 필드값을 통해 제어 할수 있습니다.(C : 가운데, L : 왼쪽, R : 오른쪽) 그런일은 별로 없겠지만....만약에 ALV의 필드라벨(헤더)는 가운데 정렬을 하고 값은 왼쪽(또는 오른쪽) 정렬을 하고 싶을 경우 Cell Style을 이용하여 셀별로 제어를 할 수 있습니다. # 소스코드 예시"필드카탈로그에서 필드를 가운데 정렬 설정LOOP AT LT_FIELDCAT ASSIGNING FIELD-SYMBOL() WHERE FIELDNAME EQ 'BUKRS' OR FIELDNAME EQ 'DMBTR'. -JUST = 'C'.ENDLOOP."셀별로 좌/우 정렬 설정 " 가 include 되어 있어 합.. 2024. 10. 24. [개발Tip] ASCII 기준 문자열 자르기 ASCII 기준 문자열 자르기2Byte 문자열 자르기 EDI 통신을 할때 종종 필드별로 최대 Byte를 제한하는 경우가 있습니다.대부분의 시스템이 그렇듯 SAP도 Unicode를 사용하고 있다보니 strlen 으로 문자열의 길이를 확인하면 한글/영문 구분없이 모두 동일하게 문자 수만큼 반환이 됩니다. 하지만 EDI에서는 ASCII 기준으로 Byte 계산을 하는 경우가 많아, 원하는 Byte 만큼 문자열을 자르려면 별도의 처리가 필요합니다. 다행이도 SAP에서 다양한 방법을 제공하고 있고,가장 일반적으로 사용하는 방법은 CL_ABAP_LIST_UTILITIES를 이용하여 간단하게 문자열의 크기를 구할 수 있습니다.https://help.sap.com/doc/abapdocu_latest_index_htm/l.. 2024. 10. 24. [개발Tip] WebGUI에서 Excel 업로드(CL_FDT_XL_SPREADSHEET/ABAP2XLSX) WebGUI에서 Excel 업로드 CL_FDT_XL_SPREADSHEET ABAP2XLSX ABAP에서 엑셀 업로드(Excel to Internal Table)를 할 경우 대부분의 경우 ALSM_EXCEL_TO_INTERNAL_TABLE 펑션을 이용합니다. 단, 해당 펑션은 Excel OLE 기능을 이용하다 보니 WebGUI에서는 작동하지 않습니다. 이 경우 GUI_UPLOAD를 이용하여 PC의 엑셀 파일을 SAP에 업로드 하여 Excel(XML) Object를 만든 후에 Internal Table로 변환할 수 있습니다. CL_FDT_XL_SPREADSHEET 클래스를 이용하거나, ABAP2XLSX를 이용하여 기능을 구현할 수 있으며 현장 상황에 따라 아래 링크처럼 Class(또는 펑션)로 만들어서 활용.. 2023. 12. 7. [개발Tip] WebGUI에서 Excel 템플릿의 셀 값 변경 (CL_FDT_XL_SPREADSHEET/ABAP2XLSX) Excel 템플릿의 셀 값 변경 CL_FDT_XL_SPREADSHEET ABAP2XLSX ABAP내에서 Excel OLE를 사용하지 않고 Web Repository Object(SMW0)에 등록한 엑셀 템플릿에 셀 값을 변경하여 다운로드 하는 방법입니다. SAPGUI의 경우 OLE를 사용하면 되지만 WebGUI의 경우에는 브라우저에서 PC의 OLE 오브젝트를 호출할 수 없어서 아래와 같이 XML Reader/Writer기반의 클래스를 사용해야 합니다. 더 좋은 방법이 있을것 같긴 하지만 제가 알고 있는 방법은 총 2가지 방법입니다. ABAP2XLSX이 가장 사용하기 편하고 OLE를 사용할때 처럼 자유롭게 셀 제어가 가능합니다. CL_FDT_XL_SPREADSHEET도 이름 정의된 셀만 제어할 수 있는 제.. 2023. 12. 7. 이전 1 2 3 4 다음