본문 바로가기

ABAP99

[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.
[Class] SUBMIT으로 ALV 데이터 조회 - CL_SALV_BS_RUNTIME_INFO SUBMIT으로 ALV 데이터 조회 CL_SALV_BS_RUNTIME_INFO ABAP내에서 다른 리포트 프로그램의 데이터를 가져오고자 할 경우, CL_SALV_BS_RUNTIME_INFO 클래스를 이용하여 데이터를 가져올 프로그램을 SUBMIT으로 호출하여 ALV 데이터를 읽어올 수 있습니다. 이 방식은 소스 프로그램의 수정 없이 데이터를 읽어올 수 있어서 표준 리포트의 데이터를 읽어올때 아주 유용합니다. 단, 스크린에 표시될 ALV의 데이터를 읽어오는 방식이다 보니 여러 제약사항이 있습니다. CBO 프로그램간의 데이터 조회는 ABAP MEMORY를 이용하여 EXPORT/IMPORT가 가장 확실한 방법인듯 합니다. # 사용예시 CL_SALV_BS_RUNTIME_INFO=>SET( DISPLAY = AB.. 2023. 12. 4.
[Class] CL_SEC_SXML_WRITER - AES256 암호화/복호화 CL_SEC_SXML_WRITER AES256 암호화/복호화 알고리즘별로 KEY 길이를 잘 맞추어야 합니다. AES128 : Block size = 16 AES192 : Block size = 24 AES256 : Block size = 32 # 사용예시 PARAMETERS: P_PLAIN TYPE STRING OBLIGATORY, P_KEY TYPE STRING OBLIGATORY, P_IV TYPE STRING OBLIGATORY. INITIALIZATION. %_P_PLAIN_%_APP_%-TEXT = '평문'. %_P_KEY_%_APP_%-TEXT = 'Secret Key'. %_P_IV_%_APP_%-TEXT = 'Initialization Vector'. START-OF-SELECTION. ".. 2023. 11. 30.
[Class] BASE64 ENCODE/DECODE CL_HTTP_UTILITY=>ENCODE_X_BASE64 CL_HTTP_UTILITY=>DECODE_X_BASE64 #사용 예시 "한글의 경우 UTF8 Encoding 후에 Base64 Encoding 처리 "Base64 Encoding DATA(LV_BASE64_ENCODED) = CL_HTTP_UTILITY=>ENCODE_X_BASE64( CL_HTTP_UTILITY=>ENCODE_UTF8( '문자열11234$$1ggg' ) ). WRITE:/ LV_BASE64_ENCODED. "Base64 Decoding WRITE:/ CL_HTTP_UTILITY=>DECODE_UTF8( CL_HTTP_UTILITY=>DECODE_X_BASE64( LV_BASE64_ENCODED ) ). 2023. 11. 30.
[Function] BASE64 ENCODE/DECODE SCMS_BASE64_ENCODE_STR SCMS_BASE64_DECODE_STR # 사용예시 DATA: LV_XSTRING TYPE XSTRING, LV_STRING TYPE STRING. "string to xstring LV_XSTRING = CL_BCS_CONVERT=>STRING_TO_XSTRING( '문자열' ). CALL FUNCTION 'SCMS_BASE64_ENCODE_STR' EXPORTING INPUT = LV_XSTRING IMPORTING OUTPUT = LV_STRING . WRITE:/ LV_STRING. CALL FUNCTION 'SCMS_BASE64_DECODE_STR' exporting INPUT = LV_STRING * UNESCAPE = 'X' importing OUT.. 2023. 11. 30.