ABAP88 [개발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. [Report] 소스코드 작성하여 바로 실행(YDIRECT_EXEC) 소스코드 작성하여 바로 실행GENERATE SUBROUTINE POOL 간단한 소스코드를 작성하여 바로 실행(Execute)할 수 있는 리포트 프로그램입니다.메모리상에 서브루틴을 만들어 바로 실행하는 방식으로 운영 환경에서 긴급으로 무언가를 하려할때 아주 요긴하게 사용됩니다.# 소스코드REPORT YDIRECT_EXEC LINE-SIZE 270 NO STANDARD PAGE HEADING.TYPES: BEGIN OF t_source, line(256), END OF t_source.DATA: gt_source TYPE STANDARD TABLE OF t_source, gt_program TYPE STANDARD TABLE OF t_sourc.. 2024. 10. 24. [Report] 운영에서 소스코드 편집 프로그램(YEDITPR) 운영에서 소스코드 편집 프로그램READ REPORT, EDITOR-CALL, INSERT REPORTENQUEUE_ESRDIRE, DEQUEUE_ESRDIRE *2024.10.24 : 소스정렬 기능 추가*2023.11.17 : WEB GUI 호환성*2023.11.16 : EDITOR-CALL 구문을 CL_GUI_ABAPEDIT 변경하여 소스코드 편집기 가독성 개선 많은 개발자들이 운영환경에서 CBO 프로그램의 소스코드를 긴급으로 수정하기 위해 Read Report, Editor-Call, Insert Report 3가지 구문을 이용한 간단한 리포트를 만들어 사용하고 있습니다. 원칙적으로는 이렇게 운영환경에서 소스코드를 직접 편집하면 안되지만, 부득이 하게 긴급 수정 후 개발에서 재작업후 CTS 넘겨서 운.. 2024. 10. 24. [Function] POPUP_GET_VALUES_DB_CHECKED - 필드값 입력 팝업 POPUP_GET_VALUES_DB_CHECKED 필드값 입력 팝업 POPUP_GET_VALUES 펑션과 유사하게 필드값을 입/출력하여 입력값을 받은수 있다. 차이점은 COMP_CODE, COMP_TABLE, COMP_FIELD를 이용하여 테이블 값으로 입력필드 값을 점검할 수 있다. # SVAL 필드 # 사용예시 DATA: LV_RETURNCODE TYPE C, LT_FIELDS TYPE STANDARD TABLE OF SVAL. LT_FIELDS = VALUE #( "입력받을 필드 ( TABNAME = 'BKPF' FIELDNAME = 'BUKRS' FIELD_OBL = 'X' COMP_CODE = 'NC' ) "아래 조건으로만 점검하기 위해 BKPF-BUKRS 필드 점검은 제외 "필드 값을 점검하기.. 2023. 12. 18. [Function] POPUP_GET_VALUES - 필드값 입력 팝업 POPUP_GET_VALUES 필드값 입력 팝업 팝업을 띄워서 필요한 값을 입/출력하는 Function 기본적으로 도메인 값을 점검해준다. # SVAL 필드 # 사용예시 DATA: LV_RETURNCODE TYPE C, LT_FIELDS TYPE STANDARD TABLE OF SVAL. "FIELD_ATTR 값 별 차이 LT_FIELDS = VALUE #( ( TABNAME = 'BKPF' FIELDNAME = 'BUDAT' FIELD_ATTR = SPACE ) ( TABNAME = 'BKPF' FIELDNAME = 'BLDAT' FIELD_ATTR = '01' ) ( TABNAME = 'BKPF' FIELDNAME = 'CPUDT' FIELD_ATTR = '02' ) ( TABNAME = 'BKPF'.. 2023. 12. 18. [개발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 5 ··· 13 다음