--- type: abap-program title: "ZCOC0120 — 본자산 생성 및 투자 오더 정산규칙 Upload" description: "투자오더(I)/자가소비오더(S)의 비용을 본자산(Fixed Asset)으로 정산하기 위해, 엑셀(구분 1:신규/2:기존, 오더번호, 코스트센터, 자산클래스, 자산내역, 기존 자산번호, 정산금액/정산%)을 업로드하여 CSKS/CSKT·ANKT·AUFK/ONROR·ANLA 로 검증하고 Z_CO_CHECK_BUDGET 로 오더 예산 초과를 점검한 뒤, 신규 건은 BAPI_FIXEDASSET_CREATE 로 본자산을 생성하고 정산규칙 내역을 ZCOT0040 에 저장한다(자산생성 모드 P_SAV). 정산규칙 모드(P_SETT)에서는 ZCOT0040 에 저장된 내역(미처리/실패/성공)을 조회·수정·재검증한 뒤 KO02 BDC(SAPLKOBS 정산규칙 화면)로 오더에 자산별 정산규칙(Settlement Rule, COBRB 기간/연도, 금액 또는 %)을 생성하고 결과를 ZCOT0040 에 반영한다. COSP 로 오더의 실제/약정 누계(WKG_SUM)를 함께 표시하며 KOB1 실적 라인아이템 조회를 호출할 수 있다." resource: "abap://ZCOC0120" tags: ["오더정산", "정산규칙", "본자산생성", "투자오더", "자산화", "엑셀업로드", "사용자 명령", "자산 생성", "재검증", "화면 종료", "정산규칙 내역", "자산 생성 성공", "저장 데이터 구성", "회사코드", "기간", "정산규칙 저장", "DB 저장", "성공 메시지", "결과 기록", "본자산 생성"] generated: { by: "abap-indexing/z-ai/glm-5.2:free", at: "2026-09-20T15:36:13+00:00" } status: stable x-package: x-changed-on: x-tables-read: ["AENR", "ANKT", "ANLA", "AUFK", "COSP", "CSKS", "CSKT", "DD01L", "DD07T", "ONRKS", "ONROR", "T001", "TKA01", "TKT09", "ZCOT0040"] x-tables-write: ["GT_DATA", "ZCOT0040"] x-calls: ["ALSM_EXCEL_TO_INTERNAL_TABLE", "BAPI_CURRENCY_CONV_TO_INTERNAL", "BAPI_FIXEDASSET_CREATE", "BAPI_TRANSACTION_COMMIT", "BAPI_TRANSACTION_ROLLBACK", "CC01", "CLOI_PUT_SIGN_IN_FRONT", "CONVERSION_EXIT_ALPHA_INPUT", "CONVERSION_EXIT_ALPHA_OUTPUT", "CONVERT_OTF", "CONVERT_TO_LOCAL_CURRENCY", "CURRENCY_AMOUNT_IDOC_TO_SAP", "CURRENCY_AMOUNT_SAP_TO_IDOC", "DATE_CHECK_PLAUSIBILITY", "DYNP_VALUES_READ", "DYNP_VALUES_UPDATE", "F4IF_INT_TABLE_VALUE_REQUEST", "F4_DATE", "FI_PERIOD_DETERMINE", "GUI_DOWNLOAD", "KO02", "K_HIERARCHY_TABLES_READ", "LVC_FIELDCATALOG_MERGE", "LVC_FIELDCAT_COMPLETE", "LVC_TRANSFER_FROM_SLIS", "LV_CONVFUNC", "MD_CONVERT_MATERIAL_UNIT", "MESSAGE_TEXT_BUILD", "NUMBER_GET_NEXT", "POPUP_TO_CONFIRM", "POPUP_TO_CONFIRM_STEP", "POPUP_TO_SELECT_MONTH", "POSTING_INTERFACE_END", "POSTING_INTERFACE_START", "REUSE_ALV_FIELDCATALOG_MERGE", "REUSE_ALV_GRID_COMMENTARY_SET", "RKAEP000", "RP_LAST_DAY_OF_MONTHS", "SAPGUI_PROGRESS_INDICATOR", "SCPR_SV_SHOW_MESSAGE_LIST"] x-code-hash: "7088ca07dee33921e39eccf48d55a3f8124ca404e85faa15d9ee594b49795178" x-unit-count: 155 x-chunk-count: 99 x-declaration-count: 222 --- ## 업무 목적 투자오더(I)/자가소비오더(S)의 비용을 본자산(Fixed Asset)으로 정산하기 위해, 엑셀(구분 1:신규/2:기존, 오더번호, 코스트센터, 자산클래스, 자산내역, 기존 자산번호, 정산금액/정산%)을 업로드하여 CSKS/CSKT·ANKT·AUFK/ONROR·ANLA 로 검증하고 Z_CO_CHECK_BUDGET 로 오더 예산 초과를 점검한 뒤, 신규 건은 BAPI_FIXEDASSET_CREATE 로 본자산을 생성하고 정산규칙 내역을 ZCOT0040 에 저장한다(자산생성 모드 P_SAV). 정산규칙 모드(P_SETT)에서는 ZCOT0040 에 저장된 내역(미처리/실패/성공)을 조회·수정·재검증한 뒤 KO02 BDC(SAPLKOBS 정산규칙 화면)로 오더에 자산별 정산규칙(Settlement Rule, COBRB 기간/연도, 금액 또는 %)을 생성하고 결과를 ZCOT0040 에 반영한다. COSP 로 오더의 실제/약정 누계(WKG_SUM)를 함께 표시하며 KOB1 실적 라인아이템 조회를 호출할 수 있다. ## 주 흐름 1. 회사코드·관리회계영역 텍스트를 설정하고 '엑셀 양식 다운로드' 버튼(FC01, SMW0 ZCOC0120)을 활성화하며, 모드(P_SAV 자산생성 / P_SETT 정산규칙)에 따라 파일·상태 선택 필드를 표시/숨김한다 (SET_DYNP, FC01_ACTIVE, CONTROL_FCXX, LOOP_AT_SCREEN) 2. 자산생성 모드에서 파일 경로 입력 여부를 확인하고 ALV 필드카탈로그·BDC 모드·상태 플래그를 초기화한다 (CHECK_INPUT, INITIALIZE_DATA) 3. 선택 조건(회사코드·관리회계영역·연도·기간)의 기존 ZCOT0040 저장 내역을 조회한 뒤 모드에 따라 분기한다 (PROCESS_DATA) 4. [자산생성 모드] ZCOS0180 구조로 동적 업로드 테이블을 만들어 엑셀을 읽고 CONVERSION_EXIT·숫자·날짜 변환 후 GT_DATA 로 이관한다 (READ_DATA, CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, CONVERT_KRW_DATA) 5. [자산생성 모드] 구분값(1/2), 코스트센터(CSKS/CSKT/ONRKS), 자산클래스(ANKT), 기존 자산번호(ANLA), 오더(AUFK/ONROR, I/S 유형만 허용), 금액·정산% 택일, 오더별 % 합계 100%, ZCOT0040 중복, Z_CO_CHECK_BUDGET 오더 예산 초과를 검증하고 COSP 에서 오더 실적/약정 누계를 조회한다 (VALIDATION_CHECK_A, CHECK_VALUE_FIELD, SELECT_COSP, EDIT_DATA_A) 6. [자산생성 모드] '저장'(&SAV) 시 신규(구분 1) 행은 BAPI_FIXEDASSET_CREATE 로 본자산을 생성(자산클래스·내역·수량 EA·코스트센터)하고 성공 건을 ZCOT0040 에 저장한다 (EXECUTE_BAPI, CREATE_FIXED_ASSET, SAVE_DB) 7. [정산규칙 모드] ZCOT0040 에서 미처리/실패/성공 내역을 조회하고 오더 실적 누계와 함께 금액·%·예산을 재검증한다; ALV 에서 금액·% 를 수정하면 ZCOT0040 에 즉시 반영된다 (PROCESS_SETTLEMENT, SELECT_DATA, SELECT_COSP, VALIDATION_CHECK_C, DATA_CHANGED_MODIFY) 8. [정산규칙 모드] '실행'(&RUN) 시 오더별로 KO02 BDC(SAPMKAUF → SAPLKOBS 정산규칙, COBL-ANLN1, COBRB 유효기간/금액/%)를 수행하여 정산규칙을 생성하고 성공/실패를 ZCOT0040 에 갱신한다 (EXECUTE_BDC, BDC_OPTION, CREATE_SETTLEMENT_RULE, MODIFY_DB) 9. 행 더블클릭 등으로 오더 실제 라인아이템 리포트 KOB1(RKAEP000)을 호출하거나 메시지 상세 팝업을 표시한다 (CALL_KOB1, SHOW_ERROR_LOG) ## 핵심 내부테이블 - `` — ZCOS0180 구조 기반 동적 엑셀 업로드 테이블 (전 필드 CHAR) (채움: CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT / 소비: TRANSFER_GT_DATA) - `GT_DATA` — 메인 ALV 데이터 (ZCOS0180 + 텍스트, 오브젝트번호, 자산/정산 성공 여부, 실적누계 WKG_SUM, 상태·메시지) (채움: TRANSFER_GT_DATA, SELECT_DATA, VALIDATION_CHECK_A, VALIDATION_CHECK_C, SELECT_COSP, EDIT_DATA_A, CREATE_FIXED_ASSET, CREATE_SETTLEMENT_RULE / 소비: DISPLAY_ALV_LIST, CREATE_FIXED_ASSET, CREATE_SETTLEMENT_RULE, SAVE_DB, MODIFY_DB, CALL_KOB1, SHOW_ERROR_LOG) - `GT_ZCOT0040` — 선택 연도/기간의 기존 자산·정산규칙 저장 내역 (ZCOT0040) (채움: PROCESS_DATA / 소비: VALIDATION_CHECK_A, SELECT_DATA, MODIFY_DB) - `GT_KOSTL_ST` — 유효 코스트센터 및 오브젝트번호 (CSKS/CSKT/ONRKS) (채움: VALIDATION_CHECK_A / 소비: VALIDATION_CHECK_A) - `GT_AUFK_ST` — 오더 존재 여부·텍스트·오브젝트번호·유형 (AUFK/ONROR) (채움: VALIDATION_CHECK_A, VALIDATION_CHECK_C / 소비: VALIDATION_CHECK_A, VALIDATION_CHECK_C) - `GT_ANLA` — 기존 자산번호·내역 (ANLA) (채움: VALIDATION_CHECK_A, VALIDATION_CHECK_C / 소비: VALIDATION_CHECK_A, VALIDATION_CHECK_C) - `GT_COSP` — 오더별 COSP 실제/통계/약정/임시(WRTTP 04,11,22,60) 버전 000 월별 합계 (채움: SELECT_COSP / 소비: SELECT_COSP) - `GT_BDCDATA` — KO02 정산규칙 배치 인풋 화면 데이터 (채움: CREATE_SETTLEMENT_RULE, DYNPRO / 소비: CREATE_SETTLEMENT_RULE) ## 테이블 / 외부 호출 - read: AENR, ANKT, ANLA, AUFK, COSP, CSKS, CSKT, DD01L, DD07T, ONRKS, ONROR, T001, TKA01, TKT09, ZCOT0040 - write: GT_DATA, ZCOT0040 - 외부 호출: ALSM_EXCEL_TO_INTERNAL_TABLE, BAPI_CURRENCY_CONV_TO_INTERNAL, BAPI_FIXEDASSET_CREATE, BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, CC01, CLOI_PUT_SIGN_IN_FRONT, CONVERSION_EXIT_ALPHA_INPUT, CONVERSION_EXIT_ALPHA_OUTPUT, CONVERT_OTF, CONVERT_TO_LOCAL_CURRENCY, CURRENCY_AMOUNT_IDOC_TO_SAP, CURRENCY_AMOUNT_SAP_TO_IDOC, DATE_CHECK_PLAUSIBILITY, DYNP_VALUES_READ, DYNP_VALUES_UPDATE, F4IF_INT_TABLE_VALUE_REQUEST, F4_DATE, FI_PERIOD_DETERMINE, GUI_DOWNLOAD, KO02, K_HIERARCHY_TABLES_READ, LVC_FIELDCATALOG_MERGE, LVC_FIELDCAT_COMPLETE, LVC_TRANSFER_FROM_SLIS, LV_CONVFUNC, MD_CONVERT_MATERIAL_UNIT, MESSAGE_TEXT_BUILD, NUMBER_GET_NEXT, POPUP_TO_CONFIRM ## 로직 조각 (99건 / unit 70개) LLM 이 코드에서 골라낸 업무 로직 단위다. **조각마다 소스 원문과 자연어 설명을 함께 싣는다** — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. 테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다. ### FORM SET_COMPANY_BASE — `ZCO_COMMON` L210-L227 (18줄) *회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다.* > 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] T001에서 회사코드(BUKRS)를 조회해 회사 통화(WAERS), 계정과목표(KTOPL), 언어, 회사명(BUTXT), 국가(LAND1)를 전역변수에 저장해 이후 검증·금액 변환의 기준으로 쓴다. ```abap 214| SELECT SINGLE * 215| FROM T001 216| INTO L_T001 217| WHERE BUKRS = P_BUKRS. 218| 219| IF SY-SUBRC EQ 0. 220| GV_WAERS = L_T001-WAERS. 221| GV_KTOPL = L_T001-KTOPL. 222| GV_SPRAS = L_T001-SPRAS. 223| GV_WAERS = L_T001-WAERS. 224| GV_BUKRS_TXT = L_T001-BUTXT. 225| GV_LAND1 = L_T001-LAND1. 226| ENDIF. ``` - **EN**: Read company code master T001 and store company currency, chart of accounts, language, company name and country in global variables. - 테이블(파서): read [T001](/tables/T001.md) / write - - SAP 객체: T001 - 업무 키워드: 회사코드 기본정보, 회사 통화, 계정과목표 - English: Company Code, T001, Chart of Accounts, Local Currency - 정의부(복사 시 함께 필요): [`L_T001`](#decl-zco_common-211-l_t001), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`GV_SPRAS`](#decl-zco_common-54-gv_spras), [`GV_BUKRS_TXT`](#decl-zco_common-50-gv_bukrs_txt), [`GV_LAND1`](#decl-zco_common-55-gv_land1) - 위치: `abap://ZCOC0120/ZCO_COMMON#L214-L226` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#SET_COMPANY_BASE#C1` ### FORM SET_KOKRS_BASE — `ZCO_COMMON` L2094-L2101 (8줄) *TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다.* > 이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] TKA01에서 관리회계영역(P_KOKRS)의 명칭(BEZEI), 통화(WAERS), 계정과목표(KTOPL)를 조회해 GV_KOKRS_BEZEI/GV_WAERS/GV_KTOPL에 저장해 이후 검증·금액 변환의 기준으로 쓴다. ```abap 2096| SELECT SINGLE BEZEI WAERS KTOPL 2097| INTO (GV_KOKRS_BEZEI, GV_WAERS, GV_KTOPL) 2098| FROM TKA01 2099| WHERE KOKRS = P_KOKRS. ``` - **EN**: Read controlling area description, currency and chart of accounts from TKA01 into global variables used for validation and amount conversion. - 테이블(파서): read [TKA01](/tables/TKA01.md) / write - - SAP 객체: TKA01 - 업무 키워드: 관리회계영역 기본정보, 통화, 계정과목표 - English: Controlling Area, TKA01, Chart of Accounts, Currency - 정의부(복사 시 함께 필요): [`GV_KOKRS_BEZEI`](#decl-zco_common-60-gv_kokrs_bezei), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) - 위치: `abap://ZCOC0120/ZCO_COMMON#L2096-L2099` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#SET_KOKRS_BASE#C1` ### FORM CONTROL_FCXX — `ZCOC0120F01` L46-L59 (14줄) *선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0 로 SMW0 에 등록된 ZCOC0120 엑셀 양식을 연다.* > 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 선택화면 사용자 명령이 FC01 이면 Z_CO_OPEN_SMW0 를 호출해 SMW0 웹 리포지토리 문서(GC_SMW0)의 업로드용 엑셀 양식을 다운로드/오픈한다. ```abap 50| L_UCOMM = SSCRFIELDS-UCOMM. 51| CASE L_UCOMM. 52| WHEN 'FC01'. 53| CALL FUNCTION 'Z_CO_OPEN_SMW0' 54| EXPORTING 55| P_DOCNAM = GC_SMW0 56| P_TITLE = '본자산 생성 및 투자 오더 정산규칙 Upload'(F02). 57| ENDCASE. ``` - **EN**: On function key FC01 calls Z_CO_OPEN_SMW0 to open the Excel upload template stored in SMW0 web repository. - 호출(파서): Z_CO_OPEN_SMW0 - SAP 객체: Z_CO_OPEN_SMW0, SMW0 - 업무 키워드: 엑셀 양식 다운로드, 기능키, SMW0 문서 - English: Excel Template, SMW0, Web Repository - 정의부(복사 시 함께 필요): [`L_UCOMM`](#decl-zcoc0120f01-47-l_ucomm), [`SSCRFIELDS`](#decl-zcoc0120top-2-sscrfields), [`GC_SMW0`](#decl-zcoc0120top-34-gc_smw0) - 위치: `abap://ZCOC0120/ZCOC0120F01#L50-L57` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#CONTROL_FCXX#C1` ### EVENT START-OF-SELECTION — `ZCOC0120` L47-L54 (8줄) *입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다.* > 이 unit 의 조각 1개가 3/8줄(38%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] 파일 입력 검증, 관리회계영역·필드카탈로그 초기화, 엑셀 업로드 및 검증 처리를 순서대로 수행한다. ```abap 48| PERFORM CHECK_INPUT. 49| PERFORM INITIALIZE_DATA. 50| PERFORM PROCESS_DATA. ``` - **EN**: Run input check, data initialization and Excel upload/validation processing in sequence. - 호출(파서): CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA - SAP 객체: CHECK_INPUT, INITIALIZE_DATA, PROCESS_DATA - 업무 키워드: 메인 처리 순서 - English: START-OF-SELECTION, Processing Flow - 위치: `abap://ZCOC0120/ZCOC0120#L48-L50` · confidence 0.8 · `ZCOC0120#ZCOC0120#EVENT#START-OF-SELECTION#C1` ### FORM CHECK_INPUT — `ZCOC0120F01` L68-L75 (8줄) *자산생성 모드(P_SAV)에서 업로드 파일 경로(P_FNAME)가 입력되지 않으면 오류 메시지를 내고 처리를 중단한다.* > 이 unit 의 조각 1개가 5/8줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] 자산생성 모드에서 엑셀 업로드 파일명 P_FNAME 이 비어 있으면 '업로드 파일을 선택하여 주시기 바랍니다' 오류를 표시하고 LEAVE LIST-PROCESSING 으로 중단한다. ```abap 70| IF P_FNAME IS INITIAL AND P_SAV = 'X'. 71| MESSAGE S000 DISPLAY LIKE 'E' WITH 72| '업로드 파일을 선택하여 주시기 바랍니다.'(F01). 73| LEAVE LIST-PROCESSING. 74| ENDIF. ``` - **EN**: Checks that an upload file path is entered in asset creation mode and stops processing with an error message otherwise. - 업무 키워드: 입력 검증, 업로드 파일 필수, 자산생성 모드 - English: Input Validation, File Upload, Mandatory Field - 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0120top-160-p_fname), [`P_SAV`](#decl-zcoc0120top-126-p_sav) - 위치: `abap://ZCOC0120/ZCOC0120F01#L70-L74` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#CHECK_INPUT#C1` ### FORM GET_FCAT_LIKE_ITAB — `ZCO_COMMON` L160-L201 (42줄) *프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다.* > 이 unit 의 조각 1개가 26/42줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 내부테이블 정의(SY-REPID 내 P_ITAB_NAME)로 REUSE_ALV_FIELDCATALOG_MERGE를 호출해 SLIS 필드카탈로그를 얻고 LVC_TRANSFER_FROM_SLIS로 LVC 형식으로 바꾼 뒤 LVC_FIELDCAT_COMPLETE로 보완해 반환한다. ```abap 173| CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE' 174| EXPORTING 175| I_PROGRAM_NAME = SY-REPID 176| I_INTERNAL_TABNAME = P_ITAB_NAME 177| I_INCLNAME = SY-REPID 178| I_STRUCTURE_NAME = '' 179| I_BYPASSING_BUFFER = 'X' 180| CHANGING 181| CT_FIELDCAT = LT_FIELDCAT[] 182| EXCEPTIONS 183| INCONSISTENT_INTERFACE = 1 184| PROGRAM_ERROR = 2. 185| 186| CALL FUNCTION 'LVC_TRANSFER_FROM_SLIS' 187| EXPORTING 188| IT_FIELDCAT_ALV = LT_FIELDCAT 189| IMPORTING 190| ET_FIELDCAT_LVC = LT_ALV_CAT 191| TABLES 192| IT_DATA = LT_TABLE[]. 193| 194| CALL FUNCTION 'LVC_FIELDCAT_COMPLETE' 195| CHANGING 196| CT_FIELDCAT = LT_ALV_CAT. 197| 198| PT_REF_FCAT[] = LT_ALV_CAT[]. ``` - **EN**: Generate an LVC field catalog from the program internal table definition via REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS and LVC_FIELDCAT_COMPLETE. - 호출(파서): REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE - SAP 객체: REUSE_ALV_FIELDCATALOG_MERGE, LVC_TRANSFER_FROM_SLIS, LVC_FIELDCAT_COMPLETE, LVC_S_FCAT - 업무 키워드: 필드카탈로그 생성, 내부테이블 구조, ALV 컬럼 정보 - English: Field Catalog, ALV, LVC - 정의부(복사 시 함께 필요): [`LT_FIELDCAT`](#decl-zco_common-165-lt_fieldcat), [`LT_ALV_CAT`](#decl-zco_common-166-lt_alv_cat), [`LT_TABLE`](#decl-zco_common-164-lt_table) - 위치: `abap://ZCOC0120/ZCO_COMMON#L173-L198` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#GET_FCAT_LIKE_ITAB#C1` ### FORM SET_DSMOD — `ZCO_COMMON` L1086-L1095 (10줄) *BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다.* > 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] BDC 표시 모드를 대문자로 바꾼 뒤 'A','E','N'이 아니면 'BDC Mode Fail' 메시지를 내고 LEAVE LIST-PROCESSING으로 종료한다. ```abap 1088| TRANSLATE PA_DSMOD TO UPPER CASE. 1089| 1090| IF PA_DSMOD NA 'AEN'. 1091| MESSAGE S000 DISPLAY LIKE 'E' WITH 'BDC Mode Fail'. 1092| LEAVE LIST-PROCESSING. 1093| ENDIF. ``` - **EN**: Validate the BDC display mode is one of A/E/N after uppercasing, otherwise show an error and leave processing. - 업무 키워드: BDC 모드 검증, 입력값 검사 - English: BDC Mode, Validation - 위치: `abap://ZCOC0120/ZCO_COMMON#L1088-L1093` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#SET_DSMOD#C1` ### FORM PROCESS_DATA — `ZCOC0120F01` L118-L136 (19줄) *선택 조건(회사코드·관리회계영역·연도·기간)의 기존 ZCOT0040 저장 내역을 조회하고 모드(P_SAV 자산생성/P_SETT 정산규칙)에 따라 READ_DATA 또는 PROCESS_SETTLEMENT 로 분기한다.* > 이 unit 의 조각 1개가 12/19줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] 회사코드·관리회계영역·회계연도·기간 기준으로 ZCOT0040 의 기존 자산/정산규칙 저장 내역을 GT_ZCOT0040 에 조회한 뒤 자산생성 모드면 엑셀 읽기(READ_DATA), 정산규칙 모드면 PROCESS_SETTLEMENT 를 수행한다. ```abap 121| SELECT * FROM ZCOT0040 INTO TABLE GT_ZCOT0040 122| WHERE BUKRS = P_BUKRS 123| AND KOKRS = P_KOKRS 124| AND GJAHR = P_GJAHR 125| AND PERBL = P_PERBL. 126| 127| IF P_SAV = 'X'. 128| PERFORM BAR_MSG USING 60 'Read From Excel...'(F03). 129| PERFORM READ_DATA. 130| ELSEIF P_SETT = 'X'. 131| PERFORM PROCESS_SETTLEMENT. 132| ENDIF. ``` - **EN**: Selects saved asset/settlement rule records from ZCOT0040 for the company code, controlling area, year and period, then branches to Excel upload or settlement processing by mode. - 테이블(파서): read [ZCOT0040](/tables/ZCOT0040.md) / write - - 호출(파서): BAR_MSG, READ_DATA, PROCESS_SETTLEMENT - SAP 객체: ZCOT0040 - 업무 키워드: 저장 내역 조회, 정산규칙 내역, 모드 분기, 회계연도, 기간 - English: Settlement Rule, Custom Table, Fiscal Year, Period - 정의부(복사 시 함께 필요): [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr), [`P_PERBL`](#decl-zcoc0120top-157-p_perbl), [`P_SAV`](#decl-zcoc0120top-126-p_sav), [`P_SETT`](#decl-zcoc0120top-130-p_sett) - 위치: `abap://ZCOC0120/ZCOC0120F01#L121-L132` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#PROCESS_DATA#C1` ### FORM READ_DATA — `ZCOC0120F01` L555-L580 (26줄) *자산생성 모드의 엑셀 읽기 흐름: 동적 업로드 테이블 생성, 엑셀 읽기(UPLOAD_XLS_STRUCT), GT_DATA 이관, 통화 변환·검증(VALIDATION_CHECK_A)·COSP 실적 조회, 표시 편집을 수행한다.* > 이 unit 의 조각 1개가 22/26줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] ZCOS0180 구조의 동적 테이블을 만들고 파일 P_FNAME 의 엑셀(2행부터 65536행, 256열)을 UPLOAD_XLS_STRUCT 로 읽어 GT_DATA 로 이관한 뒤 통화 변환, 마스터 검증, COSP 실적 누계 조회, 구분 텍스트 편집을 순서대로 수행한다. ```abap 558| PERFORM CREATE_UPLOAD_TABLE USING GC_UPLOAD_STRUCT. 559| * 2. 업로드 파일 취득 560| PERFORM UPLOAD_XLS_STRUCT TABLES 561| USING P_FNAME " 파일명 562| 1 "S_COL-LOW 563| 2 "S_ROW-LOW 564| 256 "S_COL-HIGH 565| 65536. "S_ROW-HIGH 566| CHECK [] IS NOT INITIAL. 567| *3. 인터널 테이블로 이전 568| PERFORM TRANSFER_GT_DATA. 569| 570| CHECK GT_DATA[] IS NOT INITIAL. 571| 572| "4. Validation 573| PERFORM CONVERT_KRW_DATA. 574| PERFORM VALIDATION_CHECK_A. 575| PERFORM SELECT_COSP. 576| 577| 578| *5. 인터널 테이블 데이터 579| PERFORM EDIT_DATA_A. ``` - **EN**: Orchestrates Excel upload: create dynamic table, read the file with UPLOAD_XLS_STRUCT, transfer to GT_DATA, convert currency, validate master data, read COSP actuals and edit display fields. - 호출(파서): CREATE_UPLOAD_TABLE, UPLOAD_XLS_STRUCT, TRANSFER_GT_DATA, CONVERT_KRW_DATA, VALIDATION_CHECK_A, SELECT_COSP, EDIT_DATA_A - SAP 객체: ZCOS0180, COSP - 업무 키워드: 엑셀 업로드, 처리 흐름, 유효성 검증, 실적 누계 - English: Excel Upload, Process Flow, Validation - 정의부(복사 시 함께 필요): [`GC_UPLOAD_STRUCT`](#decl-zcoc0120top-32-gc_upload_struct), [``](#decl-zcoc0120top-46--gf_uploadt-), [`P_FNAME`](#decl-zcoc0120top-160-p_fname), [`GT_DATA`](#decl-zcoc0120top-58-gt_data) - 위치: `abap://ZCOC0120/ZCOC0120F01#L558-L579` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#READ_DATA#C1` ### FORM CREATE_UPLOAD_TABLE — `ZCOC0120F01` L839-L885 (47줄) *업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다.* > 이 unit 의 조각 1개가 39/47줄(83%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] LVC_FIELDCATALOG_MERGE 로 구조 P_STRUCT 의 필드카탈로그를 생성하고 소수점·날짜 길이를 보정한 후 전 필드를 CHAR 로 변환하여 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 로 엑셀 업로드용 동적 테이블 와 작업 영역을 만든다. ```abap 845| CALL FUNCTION 'LVC_FIELDCATALOG_MERGE' 846| EXPORTING 847| I_STRUCTURE_NAME = LV_STRNM 848| I_BYPASSING_BUFFER = 'X' 849| CHANGING 850| CT_FIELDCAT = GT_UPLD_FCAT 851| EXCEPTIONS 852| INCONSISTENT_INTERFACE = 1 853| PROGRAM_ERROR = 2 854| OTHERS = 3. 855| 856| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. 857| CLEAR : GS_UPLD_FCAT-REF_TABLE, GS_UPLD_FCAT-REF_FIELD. 858| 859| IF GS_UPLD_FCAT-DECIMALS IS NOT INITIAL. 860| GS_UPLD_FCAT-INTLEN = GS_UPLD_FCAT-INTLEN + 1. 861| ENDIF. 862| 863| IF GS_UPLD_FCAT-DATATYPE EQ 'DATS'. 864| GS_UPLD_FCAT-INTLEN = '10'. 865| ENDIF. 866| 867| " 올린 그대로 받기 위해 CHAR로 변환. 868| GS_UPLD_FCAT-DATATYPE = 'CHAR'. 869| GS_UPLD_FCAT-INTTYPE = 'C'. 870| 871| APPEND GS_UPLD_FCAT TO LT_UPLD_FCAT. 872| ENDLOOP. 873| 874| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 875| EXPORTING 876| IT_FIELDCATALOG = LT_UPLD_FCAT 877| IMPORTING 878| EP_TABLE = GF_UPLOADT. 879| 880| ASSIGN GF_UPLOADT->* TO . 881| 882| CREATE DATA GF_UPLOADS LIKE LINE OF . 883| ASSIGN GF_UPLOADS->* TO . ``` - **EN**: Builds the field catalog of the upload structure via LVC_FIELDCATALOG_MERGE, converts all fields to CHAR and creates the dynamic upload table with CL_ALV_TABLE_CREATE. - 호출(파서): LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE - SAP 객체: LVC_FIELDCATALOG_MERGE, CL_ALV_TABLE_CREATE, ZCOS0180 - 업무 키워드: 동적 테이블 생성, 업로드 구조, 필드카탈로그, 문자형 변환 - English: Dynamic Table, Field Catalog, Excel Upload - 정의부(복사 시 함께 필요): [`LV_STRNM`](#decl-zcoc0120f01-840-lv_strnm), [`GT_UPLD_FCAT`](#decl-zcoc0120top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc0120top-53-gs_upld_fcat), [`LT_UPLD_FCAT`](#decl-zcoc0120f01-841-lt_upld_fcat), [`GF_UPLOADT`](#decl-zcoc0120top-49-gf_uploadt), [``](#decl-zcoc0120top-46--gf_uploadt-), [`GF_UPLOADS`](#decl-zcoc0120top-50-gf_uploads), [``](#decl-zcoc0120top-47--gf_uploads-) - 위치: `abap://ZCOC0120/ZCOC0120F01#L845-L883` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_UPLOAD_TABLE#C1` ### FORM UPLOAD_XLS_STRUCT — `ZCO_COMMON` L2191-L2245 (55줄) *엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다.* > 이 unit 의 조각 2개가 39/55줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 지정한 시작/종료 행·열 범위로 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 LT_INTERN에 담고, 업로드 실패나 데이터 없음이면 메시지를 출력하고 종료한다. ```abap 2203| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' 2204| EXPORTING 2205| FILENAME = P_FILE 2206| I_BEGIN_COL = P_SCOL 2207| I_BEGIN_ROW = P_SROW 2208| I_END_COL = P_ECOL 2209| I_END_ROW = P_EROW 2210| TABLES 2211| INTERN = LT_INTERN 2212| EXCEPTIONS 2213| INCONSISTENT_PARAMETERS = 1 2214| UPLOAD_OLE = 2 2215| OTHERS = 3. 2216| 2217| IF SY-SUBRC <> 0. 2218| FORMAT COLOR COL_BACKGROUND INTENSIFIED. 2219| WRITE:/ 'Error Uploading file'. 2220| EXIT. 2221| ENDIF. 2222| 2223| IF LT_INTERN[] IS INITIAL. 2224| FORMAT COLOR COL_BACKGROUND INTENSIFIED. 2225| WRITE:/ 'No Data Uploaded'. 2226| EXIT. ``` - **EN**: Call ALSM_EXCEL_TO_INTERNAL_TABLE with the given row/column range to read the Excel file into ALSMEX_TABLINE and exit with a message on upload error or empty data. - 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE - SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE - 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 처리 - English: Excel Upload, OLE, File Read - 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern) - 위치: `abap://ZCOC0120/ZCO_COMMON#L2203-L2226` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C1` #### [calculation] 행·열 순으로 정렬한 셀 값을 열 번호에 해당하는 구조체 컴포넌트에 ASSIGN COMPONENT로 옮기고(숫자 값은 콤마 제거), 행이 끝날 때마다 P_TABLE에 APPEND한다. ```abap 2228| SORT LT_INTERN BY ROW COL. 2229| LOOP AT LT_INTERN. 2230| MOVE LT_INTERN-COL TO LV_INDEX. 2231| ASSIGN COMPONENT LV_INDEX OF STRUCTURE P_TABLE TO . 2232| 2233| IF LT_INTERN-VALUE CO '0123456789,.- '. 2234| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. 2235| ENDIF. 2236| 2237| MOVE LT_INTERN-VALUE TO . 2238| AT END OF ROW. 2239| APPEND P_TABLE. 2240| CLEAR P_TABLE. 2241| ENDAT. 2242| ENDLOOP. ``` - **EN**: Sort cells by row/column, move each cell value into the matching structure component (stripping thousand separators from numeric values) and append one internal table line per Excel row. - SAP 객체: ALSMEX_TABLINE - 업무 키워드: 셀 값 매핑, 콤마 제거, 행 단위 적재 - English: Cell Mapping, ASSIGN COMPONENT, Internal Table - 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-2198-lt_intern), [`LV_INDEX`](#decl-zco_common-2200-lv_index), [``](#decl-zco_common-2201--fs_line-) - 위치: `abap://ZCOC0120/ZCO_COMMON#L2228-L2242` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#UPLOAD_XLS_STRUCT#C2` ### FORM TRANSFER_GT_DATA — `ZCOC0120F01` L157-L252 (96줄) *동적 업로드 테이블 의 문자 데이터를 대문자 변환·%제거·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이관한다.* > 이 unit 의 조각 2개가 78/96줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] 업로드 필드카탈로그의 도메인별 소문자 허용 여부(LOWERCASE)를 DD01L 에서 조회해 대문자 변환 대상을 판단한다. ```abap 173| SELECT DOMNAME LOWERCASE 174| INTO TABLE LT_LOWERCASE 175| FROM DD01L 176| FOR ALL ENTRIES IN GT_UPLD_FCAT 177| WHERE DOMNAME = GT_UPLD_FCAT-DOMNAME 178| AND AS4LOCAL = 'A'. 179| 180| SORT LT_LOWERCASE. 181| DELETE ADJACENT DUPLICATES FROM LT_LOWERCASE 182| COMPARING ALL FIELDS. ``` - **EN**: Reads the lowercase flag per domain from DD01L to decide which uploaded fields must be converted to upper case. - 테이블(파서): read [DD01L](/tables/DD01L.md) / write - - SAP 객체: DD01L - 업무 키워드: 도메인 소문자 허용, 대문자 변환 판단 - English: Domain, Lowercase Flag, DDIC - 정의부(복사 시 함께 필요): [`LT_LOWERCASE`](#decl-zcoc0120f01-158-lt_lowercase), [`GT_UPLD_FCAT`](#decl-zcoc0120top-52-gt_upld_fcat) - 위치: `abap://ZCOC0120/ZCOC0120F01#L173-L182` · confidence 0.88 · `ZCOC0120#ZCOC0120F01#FORM#TRANSFER_GT_DATA#C1` #### [calculation] 업로드 행의 각 컬럼을 필드카탈로그 순서로 읽어 대문자 변환, PROZS 의 퍼센트 기호 제거, CONVERSION_EXIT_xxx_INPUT 호출, 숫자(BDC_CURR)·날짜(BDC_DATE) 변환 후 GS_DATA 로 옮기고 초기 상태로 GT_DATA 에 추가한다. ```abap 184| LOOP AT INTO . 185| LOOP AT GT_UPLD_FCAT INTO GS_UPLD_FCAT. 186| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE 187| TO . 188| 189| IF SY-SUBRC NE 0. 190| MESSAGE S000 WITH 'Field assign Fail.'. 191| LEAVE LIST-PROCESSING. 192| ENDIF. 193| 194| READ TABLE LT_LOWERCASE WITH KEY DOMNAME = GS_UPLD_FCAT-DOMNAME 195| BINARY SEARCH. 196| 197| IF LT_LOWERCASE-LOWERCASE NE 'X'. 198| TRANSLATE TO UPPER CASE. 199| ENDIF. 200| 201| IF GS_UPLD_FCAT-FIELDNAME = 'PROZS'. 202| REPLACE ALL OCCURRENCES OF '%' IN WITH ''. 203| ENDIF. 204| 205| IF GS_UPLD_FCAT-CONVEXIT IS NOT INITIAL. 206| CONCATENATE 'CONVERSION_EXIT_' GS_UPLD_FCAT-CONVEXIT '_INPUT' 207| INTO LV_CONVFUNC. 208| 209| CALL FUNCTION LV_CONVFUNC 210| EXPORTING 211| INPUT = 212| IMPORTING 213| OUTPUT = 214| EXCEPTIONS 215| OTHERS = 1. 216| ENDIF. 217| 218| CASE GS_UPLD_FCAT-DATATYPE. 219| WHEN 'INT1' OR 'INT2' OR 'INT4' OR 'NUMC' OR 'QUAN' OR 220| 'DEC' OR 'CURR'. 221| PERFORM BDC_CURR USING . 222| WHEN 'DATS'. 223| PERFORM BDC_DATE USING . 224| ENDCASE. 225| 226| ASSIGN COMPONENT GS_UPLD_FCAT-COL_POS OF STRUCTURE GS_DATA 227| TO . 228| 229| IF SY-SUBRC NE 0. 230| MESSAGE S000 WITH 'Field assign Fail.'. 231| LEAVE LIST-PROCESSING. 232| ENDIF. 233| 234| TRY . 235| = . 236| 237| CATCH CX_ROOT INTO LF_OREF. 238| LV_TEXT = LF_OREF->GET_TEXT( ). 239| MESSAGE S000 WITH GS_UPLD_FCAT-FIELDNAME 240| 'Type conversion error :' LV_TEXT. 241| LEAVE LIST-PROCESSING. 242| ENDTRY. 243| ENDLOOP. 244| 245| GS_DATA-STATUS = GC_STATUS_INIT. 246| 247| APPEND GS_DATA TO GT_DATA. 248| CLEAR GS_DATA. 249| CLEAR : LT_LOWERCASE. 250| 251| ENDLOOP. ``` - **EN**: Maps each uploaded cell to GT_DATA applying upper-case, percent sign removal, dynamic CONVERSION_EXIT input routines and numeric/date conversion, appending rows with initial status. - 호출(파서): LV_CONVFUNC, BDC_CURR, BDC_DATE, LF_OREF->GET_TEXT - SAP 객체: CONVERSION_EXIT_ALPHA_INPUT - 업무 키워드: 엑셀 데이터 이관, 변환 엑시트, 숫자 변환, 날짜 변환, 정산 비율 - English: Conversion Exit, Excel Upload, Data Transfer, Type Conversion - 정의부(복사 시 함께 필요): [``](#decl-zcoc0120top-46--gf_uploadt-), [``](#decl-zcoc0120top-47--gf_uploads-), [`GT_UPLD_FCAT`](#decl-zcoc0120top-52-gt_upld_fcat), [`GS_UPLD_FCAT`](#decl-zcoc0120top-53-gs_upld_fcat), [``](#decl-zcoc0120f01-163--fs_upld_field-), [`LT_LOWERCASE`](#decl-zcoc0120f01-158-lt_lowercase), [`LV_CONVFUNC`](#decl-zcoc0120f01-165-lv_convfunc), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GS_DATA`](#decl-zcoc0120top-82-gs_data), [``](#decl-zcoc0120f01-164--fs_data_field-), [`LF_OREF`](#decl-zcoc0120f01-166-lf_oref), [`LV_TEXT`](#decl-zcoc0120f01-167-lv_text) 외 1건 - 위치: `abap://ZCOC0120/ZCOC0120F01#L184-L251` · confidence 0.88 · `ZCOC0120#ZCOC0120F01#FORM#TRANSFER_GT_DATA#C2` ### FORM CONVERT_KRW_DATA — `ZCOC0120F01` L929-L949 (21줄) *ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONV_DB_WAERS로 통화(GV_WAERS) 소수점 기준 DB 내부 형식으로 변환하는 FORM이다.* > 이 unit 의 조각 1개가 14/21줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [calculation] GT_MAIN_FIELDCAT에서 DATATYPE='CURR' 필드를 찾아 GT_DATA 각 행의 금액을 동적 ASSIGN한 뒤 CONV_DB_WAERS로 통화 GV_WAERS(KRW) 기준 내부 금액 형식으로 변환한다. ```abap 935| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT 936| WHERE DATATYPE = 'CURR'. 937| 938| CONCATENATE '-' LS_FIELDCAT-FIELDNAME 939| INTO LV_FIELD. 940| 941| LOOP AT GT_DATA ASSIGNING . 942| ASSIGN (LV_FIELD) TO . 943| 944| IF SY-SUBRC EQ 0. 945| PERFORM CONV_DB_WAERS USING GV_WAERS. 946| ENDIF. 947| ENDLOOP. 948| ENDLOOP. ``` - **EN**: For every CURR field in the field catalog dynamically assign the amount in each GT_DATA row and convert it to the internal DB currency format for GV_WAERS via CONV_DB_WAERS. - 호출(파서): CONV_DB_WAERS - SAP 객체: CONV_DB_WAERS, LVC_S_FCAT - 업무 키워드: 통화 금액 변환, 원화, 내부 형식, 동적 필드 할당 - English: Currency Conversion, KRW, Field Catalog, Dynamic ASSIGN - 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0120top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0120f01-930-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0120f01-933-lv_field), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [``](#decl-zcoc0120f01-932--fs_data-), [``](#decl-zcoc0120f01-931--fs_field-), [`GV_WAERS`](#decl-zco_common-52-gv_waers) - 위치: `abap://ZCOC0120/ZCOC0120F01#L935-L948` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#CONVERT_KRW_DATA#C1` ### FORM CONV_DB_WAERS — `ZCO_COMMON` L2109-L2116 (8줄) *CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다.* > 이 unit 의 조각 1개가 6/8줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 CURRENCY_AMOUNT_IDOC_TO_SAP로 DB 저장용 내부 금액으로 변환해 P_VALUE에 되돌린다. ```abap 2110| CALL FUNCTION 'CURRENCY_AMOUNT_IDOC_TO_SAP' 2111| EXPORTING 2112| CURRENCY = P_WAERS 2113| IDOC_AMOUNT = P_VALUE 2114| IMPORTING 2115| SAP_AMOUNT = P_VALUE. ``` - **EN**: Convert an IDoc/external amount to SAP internal amount format for the currency via CURRENCY_AMOUNT_IDOC_TO_SAP. - 호출(파서): CURRENCY_AMOUNT_IDOC_TO_SAP - SAP 객체: CURRENCY_AMOUNT_IDOC_TO_SAP - 업무 키워드: 금액 내부형식 변환, 통화 소수점 - English: Currency Conversion, Internal Amount - 위치: `abap://ZCOC0120/ZCO_COMMON#L2110-L2115` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CONV_DB_WAERS#C1` ### FORM VALIDATION_CHECK_A — `ZCOC0120F01` L262-L546 (285줄) *엑셀 업로드 데이터(자산생성 모드)를 코스트센터·자산클래스·오더·기존 자산 마스터로 검증하고 금액/% 규칙, 중복 저장, 예산 초과, 오더유형(I/S)을 점검하여 행별 오류 상태·메시지를 설정한다.* > 이 unit 의 조각 10개가 251/285줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] 업로드된 코스트센터를 중복 제거한 뒤 CSKS·CSKT·ONRKS 를 조인하여 관리회계영역 P_KOKRS 에서 현재 유효한(DATBI/DATAB) 코스트센터의 텍스트와 오브젝트번호를 GT_KOSTL_ST 로 조회한다. ```abap 279| CLEAR : LT_FORALL, LT_FORALL[]. 280| LT_FORALL[] = GT_DATA[]. 281| SORT LT_FORALL BY KOSTL. 282| DELETE ADJACENT DUPLICATES FROM LT_FORALL 283| COMPARING KOSTL. 284| 285| SELECT A~KOSTL C~OBJNR B~KTEXT 286| FROM CSKS AS A 287| INNER JOIN CSKT AS B 288| ON A~KOKRS = B~KOKRS 289| AND A~KOSTL = B~KOSTL 290| AND A~DATBI = B~DATBI 291| INNER JOIN ONRKS AS C 292| ON A~KOSTL = C~KOSTL 293| INTO CORRESPONDING FIELDS OF TABLE GT_KOSTL_ST 294| FOR ALL ENTRIES IN LT_FORALL 295| WHERE A~KOKRS = P_KOKRS 296| AND A~KOSTL = LT_FORALL-KOSTL 297| AND A~DATBI >= SY-DATUM 298| AND A~DATAB <= SY-DATUM 299| AND B~SPRAS = SY-LANGU. 300| 301| SORT GT_KOSTL_ST BY KOSTL OBJNR. ``` - **EN**: Selects valid cost centers with text and object number from CSKS joined with CSKT and ONRKS for the controlling area, valid on the current date. - 테이블(파서): read [CSKS](/tables/CSKS.md), [CSKT](/tables/CSKT.md), [ONRKS](/tables/ONRKS.md) / write - - SAP 객체: CSKS, CSKT, ONRKS - 업무 키워드: 코스트센터 유효성, 코스트센터 텍스트, 오브젝트번호, 관리회계영역 - English: Cost Center, Controlling Area, Object Number, Validity Date - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-264-lt_forall), [`GT_KOSTL_ST`](#decl-zcoc0120top-95-gt_kostl_st), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) - 위치: `abap://ZCOC0120/ZCOC0120F01#L279-L301` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C1` #### [sql_select] 업로드된 자산클래스를 중복 제거한 뒤 ANKT 에서 로그온 언어의 자산클래스 텍스트를 GT_ANKT 로 조회한다. ```abap 303| CLEAR : LT_FORALL, LT_FORALL[]. 304| LT_FORALL[] = GT_DATA[]. 305| SORT LT_FORALL BY ANLKL. 306| DELETE ADJACENT DUPLICATES FROM LT_FORALL 307| COMPARING ANLKL. 308| 309| SELECT * FROM ANKT 310| INTO TABLE GT_ANKT 311| FOR ALL ENTRIES IN LT_FORALL 312| WHERE ANLKL = LT_FORALL-ANLKL 313| AND SPRAS = SY-LANGU. 314| 315| SORT GT_ANKT BY ANLKL. ``` - **EN**: Selects asset class descriptions from ANKT for the distinct uploaded asset classes. - 테이블(파서): read [ANKT](/tables/ANKT.md) / write - - SAP 객체: ANKT - 업무 키워드: 자산클래스 존재 확인, 자산클래스 텍스트 - English: Asset Class, Asset Class Text - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-264-lt_forall), [`GT_ANKT`](#decl-zcoc0120top-101-gt_ankt) - 위치: `abap://ZCOC0120/ZCOC0120F01#L303-L315` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C2` #### [sql_select] 업로드된 오더번호를 중복 제거한 뒤 AUFK 와 ONROR 를 조인해 오더 텍스트·오브젝트번호·오더유형(AUART)을 GT_AUFK_ST 로 조회한다. ```abap 317| CLEAR : LT_FORALL, LT_FORALL[]. 318| LT_FORALL[] = GT_DATA[]. 319| SORT LT_FORALL BY AUFNR. 320| DELETE ADJACENT DUPLICATES FROM LT_FORALL 321| COMPARING AUFNR. 322| 323| SELECT A~AUFNR A~KTEXT B~OBJNR A~AUART 324| FROM AUFK AS A INNER JOIN ONROR AS B 325| ON A~AUFNR = B~AUFNR 326| INTO CORRESPONDING FIELDS OF TABLE GT_AUFK_ST 327| FOR ALL ENTRIES IN LT_FORALL 328| WHERE A~AUFNR = LT_FORALL-AUFNR. 329| 330| SORT GT_AUFK_ST BY AUFNR OBJNR. ``` - **EN**: Selects order text, object number and order type from AUFK joined with ONROR for the distinct uploaded orders. - 테이블(파서): read [AUFK](/tables/AUFK.md), [ONROR](/tables/ONROR.md) / write - - SAP 객체: AUFK, ONROR - 업무 키워드: 오더 존재 확인, 오더유형, 오브젝트번호, 투자오더 - English: Internal Order, Order Type, Object Number - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-264-lt_forall), [`GT_AUFK_ST`](#decl-zcoc0120top-103-gt_aufk_st) - 위치: `abap://ZCOC0120/ZCOC0120F01#L317-L330` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C3` #### [sql_select] 업로드된 기존 자산번호를 중복 제거한 뒤 회사코드 P_BUKRS 의 ANLA 에서 자산번호와 자산내역(TXT50)을 GT_ANLA 로 조회한다. ```abap 332| CLEAR : LT_FORALL, LT_FORALL[]. 333| LT_FORALL[] = GT_DATA[]. 334| SORT LT_FORALL BY ANLN1. 335| DELETE ADJACENT DUPLICATES FROM LT_FORALL 336| COMPARING ANLN1. 337| 338| SELECT ANLN1 TXT50 339| FROM ANLA 340| INTO CORRESPONDING FIELDS OF TABLE GT_ANLA 341| FOR ALL ENTRIES IN LT_FORALL 342| WHERE BUKRS = P_BUKRS 343| AND ANLN1 = LT_FORALL-ANLN1. 344| 345| SORT GT_ANLA BY ANLN1. ``` - **EN**: Selects existing fixed asset numbers and descriptions from ANLA for the company code. - 테이블(파서): read [ANLA](/tables/ANLA.md) / write - - SAP 객체: ANLA - 업무 키워드: 기존 자산 확인, 자산내역, 본자산 - English: Fixed Asset Master, Asset Description - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-264-lt_forall), [`GT_ANLA`](#decl-zcoc0120top-110-gt_anla), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs) - 위치: `abap://ZCOC0120/ZCOC0120F01#L332-L345` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C4` #### [validation] 각 업로드 행의 구분값(GUBUN)이 1(신규) 또는 2(기존)가 아니면 '구분값 필수' 오류로 상태를 적색 처리하고 메시지를 기록한다. ```abap 349| LOOP AT GT_DATA. 350| 351| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. 352| 353| IF NOT ( GT_DATA-GUBUN = '1' OR GT_DATA-GUBUN = '2' ). 354| GT_DATA-MESSAGE = '신규 생성/기존 구분값은 필수 입니다.(1: 신규, 2: 기존)'(F05). 355| GT_DATA-STATUS = GC_STATUS_RED. 356| GV_UPLOAD_ERROR = 'X'. 357| PERFORM SET_ERROR_FIELD_RED USING 'GUBUN'. 358| PERFORM ADD_DATA_MESSAGE USING 'E' 359| '' 360| GT_DATA-MESSAGE. 361| ENDIF. ``` - **EN**: Validates that the creation type flag GUBUN is 1 (new) or 2 (existing) and flags an error otherwise. - 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - 업무 키워드: 구분값 검증, 신규/기존 구분, 필수 입력 - English: Validation, Mandatory Field - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) - 위치: `abap://ZCOC0120/ZCOC0120F01#L349-L361` · confidence 0.88 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C5` #### [validation] 신규(1) 건은 코스트센터·자산클래스·자산내역 필수 여부와 CSKS/ANKT 존재를 검증하여 텍스트를 채우고 기존 자산번호를 지우며, 기존(2) 건은 ANLA 자산번호 존재를 검증하고 신규 생성 필드를 지운다. ```abap 363| IF GT_DATA-GUBUN = '1'. 364| IF GT_DATA-KOSTL IS INITIAL OR GT_DATA-ANLKL IS INITIAL OR 365| GT_DATA-TXT50 IS INITIAL. 366| GT_DATA-MESSAGE = '자산 생성을 위한 필수 항목이 누락되었습니다.'(F06). 367| GT_DATA-STATUS = GC_STATUS_RED. 368| GV_UPLOAD_ERROR = 'X'. 369| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. 370| PERFORM SET_ERROR_FIELD_RED USING 'ANLKL'. 371| PERFORM SET_ERROR_FIELD_RED USING 'TXT50'. 372| PERFORM ADD_DATA_MESSAGE USING 'E' 373| '' 374| GT_DATA-MESSAGE. 375| ENDIF. 376| 377| READ TABLE GT_KOSTL_ST WITH KEY KOSTL = GT_DATA-KOSTL 378| BINARY SEARCH. 379| 380| IF SY-SUBRC NE 0. 381| GT_DATA-MESSAGE = '존재하지 않는 코스트센터입니다.'(F07). 382| GT_DATA-STATUS = GC_STATUS_RED. 383| GV_UPLOAD_ERROR = 'X'. 384| PERFORM SET_ERROR_FIELD_RED USING 'KOSTL'. 385| PERFORM ADD_DATA_MESSAGE USING 'E' 386| GT_DATA-KOSTL 387| GT_DATA-MESSAGE. 388| ELSE. 389| GT_DATA-KOSTL_T = GT_KOSTL_ST-KTEXT. 390| ENDIF. 391| 392| READ TABLE GT_ANKT WITH KEY ANLKL = GT_DATA-ANLKL 393| BINARY SEARCH. 394| 395| IF SY-SUBRC NE 0. 396| GT_DATA-MESSAGE = '존재하지 않는 자산클래스입니다.'(F08). 397| GT_DATA-STATUS = GC_STATUS_RED. 398| GV_UPLOAD_ERROR = 'X'. 399| PERFORM SET_ERROR_FIELD_RED USING 'ANLKL'. 400| PERFORM ADD_DATA_MESSAGE USING 'E' 401| GT_DATA-ANLKL 402| GT_DATA-MESSAGE. 403| ELSE. 404| GT_DATA-ANLKL_T = GT_ANKT-TXK20. 405| ENDIF. 406| 407| " 신규 생성 내역이므로 기존 자산 필드는 CLEAR. 408| CLEAR : GT_DATA-ANLN1. 409| ELSEIF GT_DATA-GUBUN = '2'. 410| READ TABLE GT_ANLA WITH KEY ANLN1 = GT_DATA-ANLN1 411| BINARY SEARCH. 412| 413| IF SY-SUBRC NE 0. 414| GT_DATA-MESSAGE = '존재하지 않는 자산번호입니다.'(F09). 415| GT_DATA-STATUS = GC_STATUS_RED. 416| GV_UPLOAD_ERROR = 'X'. 417| PERFORM SET_ERROR_FIELD_RED USING 'ANLN1'. 418| PERFORM ADD_DATA_MESSAGE USING 'E' 419| GT_DATA-ANLN1 420| GT_DATA-MESSAGE. 421| ELSE. 422| GT_DATA-ANLN1_T = GT_ANLA-TXT50. 423| ENDIF. 424| 425| " 기존 자산 내역이므로 신규 생성 내역은 삭제. 426| CLEAR : GT_DATA-ANLKL, GT_DATA-TXT50, GT_DATA-KOSTL. 427| ENDIF. ``` - **EN**: For new assets checks mandatory cost center, asset class and description and their existence in CSKS/ANKT; for existing assets checks the asset number in ANLA, clearing the irrelevant fields. - 호출(파서): SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - SAP 객체: CSKS, ANKT, ANLA - 업무 키워드: 코스트센터 존재, 자산클래스 존재, 자산번호 존재, 필수 항목 검증, 신규 자산, 기존 자산 - English: Cost Center, Asset Class, Fixed Asset, Master Data Validation - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error), [`GT_KOSTL_ST`](#decl-zcoc0120top-95-gt_kostl_st), [`GT_ANKT`](#decl-zcoc0120top-101-gt_ankt), [`GT_ANLA`](#decl-zcoc0120top-110-gt_anla) - 위치: `abap://ZCOC0120/ZCOC0120F01#L363-L427` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C6` #### [validation] 금액(BETRR)/정산%(PROZS) 중 하나는 필수이고 동시에 입력되면 안 됨을 CHECK_VALUE_FIELD 로 검사하며, 오더번호가 AUFK 에 존재하는지 확인하여 오더 텍스트·오브젝트번호·오더유형을 채운다. ```abap 429| IF GT_DATA-BETRR IS INITIAL AND GT_DATA-PROZS IS INITIAL. 430| GT_DATA-MESSAGE = '금액, 정산% 중에 하나는 필수 입력입니다.'(F10). 431| GT_DATA-STATUS = GC_STATUS_RED. 432| GV_UPLOAD_ERROR = 'X'. 433| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. 434| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. 435| PERFORM ADD_DATA_MESSAGE USING 'E' 436| '' 437| GT_DATA-MESSAGE. 438| ENDIF. 439| 440| READ TABLE GT_AUFK_ST WITH KEY AUFNR = GT_DATA-AUFNR 441| BINARY SEARCH. 442| 443| IF SY-SUBRC NE 0. 444| GT_DATA-MESSAGE = '존재하지 않는 오더번호입니다.'(F11). 445| GT_DATA-STATUS = GC_STATUS_RED. 446| GV_UPLOAD_ERROR = 'X'. 447| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. 448| PERFORM ADD_DATA_MESSAGE USING 'E' 449| GT_DATA-AUFNR 450| GT_DATA-MESSAGE. 451| ELSE. 452| GT_DATA-AUFNR_T = GT_AUFK_ST-KTEXT. 453| GT_DATA-OBJNR = GT_AUFK_ST-OBJNR. 454| GT_DATA-AUART = GT_AUFK_ST-AUART. 455| ENDIF. 456| 457| PERFORM CHECK_VALUE_FIELD USING LV_ERR. 458| 459| IF LV_ERR = 'X'. 460| GT_DATA-MESSAGE = '금액, 정산% 하나만 입력되어야 합니다.'(F12). 461| GT_DATA-STATUS = GC_STATUS_RED. 462| GV_UPLOAD_ERROR = 'X'. 463| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. 464| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. 465| PERFORM ADD_DATA_MESSAGE USING 'E' 466| '' 467| GT_DATA-MESSAGE. 468| ENDIF. ``` - **EN**: Validates that exactly one of settlement amount or percentage is entered and that the order exists in AUFK, filling order text, object number and order type. - 호출(파서): SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, CHECK_VALUE_FIELD, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - SAP 객체: AUFK - 업무 키워드: 금액/비율 택일, 오더 존재 확인, 오더 텍스트, 필수 입력 - English: Settlement Amount, Settlement Percentage, Internal Order, Validation - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error), [`GT_AUFK_ST`](#decl-zcoc0120top-103-gt_aufk_st), [`LV_ERR`](#decl-zcoc0120f01-265-lv_err) - 위치: `abap://ZCOC0120/ZCOC0120F01#L429-L468` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C7` #### [validation] 오더·자산번호 조합이 이미 ZCOT0040 에 저장되어 있으면 중복 오류 처리하고, 같은 오더의 정산% 합계가 0 또는 100이 아니면 '합은 100%' 오류로 표시한다. ```abap 470| READ TABLE GT_ZCOT0040 WITH KEY 471| AUFNR = GT_DATA-AUFNR 472| ANLN1 = GT_DATA-ANLN1 473| BINARY SEARCH. 474| 475| IF SY-SUBRC EQ 0. 476| GT_DATA-MESSAGE = '이미 저장된 자산 번호 입니다.'(F13). 477| GT_DATA-STATUS = GC_STATUS_RED. 478| GV_UPLOAD_ERROR = 'X'. 479| PERFORM SET_ERROR_FIELD_RED USING 'ANLN1'. 480| PERFORM ADD_DATA_MESSAGE USING 'E' 481| '' 482| GT_DATA-MESSAGE. 483| ENDIF. 484| 485| LOOP AT LT_CHECK WHERE AUFNR = GT_DATA-AUFNR. 486| LV_PERCENT = LV_PERCENT + LT_CHECK-PROZS. 487| ENDLOOP. 488| 489| IF ( LV_PERCENT NE 100 ) AND ( LV_PERCENT NE 0 ). 490| GT_DATA-MESSAGE = '입력된 %의 합은 100%이어야 합니다.'(F14). 491| GT_DATA-STATUS = GC_STATUS_RED. 492| GV_UPLOAD_ERROR = 'X'. 493| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. 494| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. 495| PERFORM ADD_DATA_MESSAGE USING 'E' 496| '' 497| GT_DATA-MESSAGE. 498| ENDIF. ``` - **EN**: Checks for already saved order/asset combinations in ZCOT0040 and validates that settlement percentages per order sum to 100 percent. - 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - SAP 객체: ZCOT0040 - 업무 키워드: 중복 저장 검증, 정산 비율 합계, 100% 검증, 오더별 합계 - English: Duplicate Check, Settlement Percentage, Internal Order - 정의부(복사 시 함께 필요): [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error), [`LT_CHECK`](#decl-zcoc0120f01-266-lt_check), [`LV_PERCENT`](#decl-zcoc0120f01-267-lv_percent) - 위치: `abap://ZCOC0120/ZCOC0120F01#L470-L498` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C8` #### [fm_call] 같은 오더의 정산금액 합계를 구해 Z_CO_CHECK_BUDGET 으로 회사코드·오더·금액·통화 기준 오더 예산 초과 여부를 점검하고 결과코드 'E'면 오류 메시지를 기록한다. ```abap 500| LOOP AT LT_CHECK WHERE AUFNR = GT_DATA-AUFNR. 501| LV_BUDGET = LV_BUDGET + LT_CHECK-BETRR. 502| ENDLOOP. 503| 504| CALL FUNCTION 'Z_CO_CHECK_BUDGET' 505| EXPORTING 506| I_BUKRS = P_BUKRS 507| I_BUDAT = SY-DATUM 508| * I_KSTAR = 509| * I_KOSTL = 510| I_AUFNR = GT_DATA-AUFNR 511| I_DMBTR = LV_BUDGET 512| I_WAERS = GV_WAERS 513| IMPORTING 514| E_RESULTCODE = LV_CODE 515| E_RESULTMSG = LV_MSG. 516| 517| IF LV_CODE = 'E'. 518| GT_DATA-MESSAGE = LV_MSG. 519| * GT_DATA-MESSAGE = '오더 예산이 초과되었습니다.'(F29). 520| GT_DATA-STATUS = GC_STATUS_RED. 521| GV_UPLOAD_ERROR = 'X'. 522| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. 523| PERFORM ADD_DATA_MESSAGE USING 'E' 524| '' 525| GT_DATA-MESSAGE. 526| ENDIF. ``` - **EN**: Sums settlement amounts per order and calls Z_CO_CHECK_BUDGET to verify the order budget is not exceeded, flagging an error if so. - 호출(파서): Z_CO_CHECK_BUDGET, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - SAP 객체: Z_CO_CHECK_BUDGET - 업무 키워드: 오더 예산 점검, 예산 초과, 정산금액 합계, 가용성 관리 - English: Budget Check, Availability Control, Internal Order - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_CHECK`](#decl-zcoc0120f01-266-lt_check), [`LV_BUDGET`](#decl-zcoc0120f01-268-lv_budget), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_CODE`](#decl-zcoc0120f01-269-lv_code), [`LV_MSG`](#decl-zcoc0120f01-270-lv_msg), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) - 위치: `abap://ZCOC0120/ZCOC0120F01#L500-L526` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C9` #### [validation] 오더유형(AUART) 첫 글자가 I(투자오더) 또는 S(자가소비오더)가 아니면 사용 불가 오류로 표시하고 검증 결과를 GT_DATA 에 반영한다. ```abap 528| IF GT_DATA-AUART IS NOT INITIAL. 529| IF NOT ( GT_DATA-AUART+0(1) = 'I' OR GT_DATA-AUART+0(1) = 'S' ). 530| GT_DATA-MESSAGE = '투자오더(I) 와 자가소비오더(S)만 사용가능합니다.'(F27). 531| GT_DATA-STATUS = GC_STATUS_RED. 532| GV_UPLOAD_ERROR = 'X'. 533| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. 534| PERFORM ADD_DATA_MESSAGE USING 'E' 535| '' 536| GT_DATA-MESSAGE. 537| ENDIF. 538| ENDIF. 539| 540| MODIFY GT_DATA. ``` - **EN**: Restricts processing to investment (I) and self-consumption (S) order types and updates the row with validation results. - 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) - 호출(파서): SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - SAP 객체: AUFK - 업무 키워드: 오더유형 검증, 투자오더, 자가소비오더 - English: Order Type, Investment Order, Validation - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) - 위치: `abap://ZCOC0120/ZCOC0120F01#L528-L540` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_A#C10` ### FORM CHECK_VALUE_FIELD — `ZCOC0120F01` L893-L922 (30줄) *현재 GT_DATA 행에서 정산금액(BETRR)과 정산%(PROZS)가 둘 다 입력되었는지 확인하여 오류 플래그 PV_ERR 를 반환한다.* > 이 unit 의 조각 1개가 19/30줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] 필드카탈로그의 BETRR/PROZS 필드를 동적으로 참조해 값이 있는 필드 수를 세고 2개 이상이면 금액과 %가 동시에 입력된 오류로 PV_ERR='X' 를 설정한다. ```abap 902| LOOP AT GT_MAIN_FIELDCAT INTO LS_FIELDCAT 903| WHERE FIELDNAME = 'BETRR' OR 904| FIELDNAME = 'PROZS'. 905| 906| CONCATENATE 'GT_DATA-' LS_FIELDCAT-FIELDNAME 907| INTO LV_FIELD. 908| 909| ASSIGN (LV_FIELD) TO . 910| 911| CHECK SY-SUBRC EQ 0. 912| 913| IF IS NOT INITIAL. 914| ADD 1 TO LV_CNT. 915| ENDIF. 916| ENDLOOP. 917| 918| IF LV_CNT >= 2. 919| PV_ERR = 'X'. 920| ENDIF. ``` - **EN**: Counts filled values among settlement amount and percentage fields dynamically and flags an error when both are entered. - 업무 키워드: 금액/비율 동시 입력 검증, 정산금액, 정산 비율, 택일 검사 - English: Settlement Amount, Settlement Percentage, Validation - 정의부(복사 시 함께 필요): [`GT_MAIN_FIELDCAT`](#decl-zcoc0120top-41-gt_main_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0120f01-895-ls_fieldcat), [`LV_FIELD`](#decl-zcoc0120f01-896-lv_field), [``](#decl-zcoc0120f01-898--fs-), [`LV_CNT`](#decl-zcoc0120f01-897-lv_cnt) - 위치: `abap://ZCOC0120/ZCOC0120F01#L902-L920` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#CHECK_VALUE_FIELD#C1` ### FORM SELECT_COSP — `ZCOC0120F01` L1536-L1614 (79줄) *오더 오브젝트번호별 COSP 실제/통계/약정/임시(WRTTP 04,11,22,60) 버전 000 의 12개월 합계를 조회하여 GT_DATA-WKG_SUM(실적 누계)에 채운다.* > 이 unit 의 조각 2개가 59/79줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] 값유형 범위(04 실제, 11 통계실제, 22 약정, 60 임시)와 버전 000, 오더 오브젝트번호 범위를 만들어 COSP 에서 연도 P_GJAHR 의 월별 금액 WKG001~WKG012 를 OBJNR 별 SUM 으로 조회한다. ```abap 1554| ADD_RANGE_EQ : LR_WRTTP '04'. " 실제 1555| ADD_RANGE_EQ : LR_WRTTP '11'. " 통계실제 1556| ADD_RANGE_EQ : LR_WRTTP '22'. " 약정 1557| ADD_RANGE_EQ : LR_WRTTP '60'. " 임시 1558| 1559| ADD_RANGE_EQ : LR_VERSN '000'. 1560| 1561| CLEAR : LT_FORALL, LT_FORALL[]. 1562| LT_FORALL[] = GT_DATA[]. 1563| SORT LT_FORALL BY OBJNR. 1564| DELETE ADJACENT DUPLICATES FROM LT_FORALL 1565| COMPARING OBJNR. 1566| 1567| LOOP AT LT_FORALL. 1568| ADD_RANGE_EQ : LR_OBJNR LT_FORALL-OBJNR. 1569| ENDLOOP. 1570| 1571| SELECT 1572| OBJNR 1573| SUM( WKG001 ) AS WKG001 1574| SUM( WKG002 ) AS WKG002 1575| SUM( WKG003 ) AS WKG003 1576| SUM( WKG004 ) AS WKG004 1577| SUM( WKG005 ) AS WKG005 1578| SUM( WKG006 ) AS WKG006 1579| SUM( WKG007 ) AS WKG007 1580| SUM( WKG008 ) AS WKG008 1581| SUM( WKG009 ) AS WKG009 1582| SUM( WKG010 ) AS WKG010 1583| SUM( WKG011 ) AS WKG011 1584| SUM( WKG012 ) AS WKG012 1585| FROM COSP 1586| INTO CORRESPONDING FIELDS OF TABLE GT_COSP 1587| WHERE LEDNR = '00' 1588| AND OBJNR IN LR_OBJNR 1589| AND GJAHR = P_GJAHR 1590| AND WRTTP IN LR_WRTTP 1591| AND VERSN IN LR_VERSN 1592| * AND KSTAR IN GR_KSTAR 1593| GROUP BY OBJNR. 1594| 1595| SORT GT_COSP BY OBJNR. ``` - **EN**: Selects period totals WKG001-WKG012 from COSP grouped by object number for actual, statistical, commitment and provisional value types (WRTTP 04/11/22/60) in version 000 for the fiscal year. - 테이블(파서): read [COSP](/tables/COSP.md) / write - - SAP 객체: COSP, ONROR - 업무 키워드: 실적 누계, 약정, 오더 실적, 값유형, 월별 합계 - English: COSP, Actual Costs, Commitment, Value Type, Object Number - 정의부(복사 시 함께 필요): [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_WRTTP`](#decl-zcoc0120f01-1546-lr_wrttp), [`LR_VERSN`](#decl-zcoc0120f01-1547-lr_versn), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-1537-lt_forall), [`LR_OBJNR`](#decl-zcoc0120f01-1539-lr_objnr), [`GT_COSP`](#decl-zcoc0120top-115-gt_cosp), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1554-L1595` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#SELECT_COSP#C1` #### [aggregation] 각 행의 오브젝트번호에 해당하는 GT_COSP 의 WKG001~WKG012 를 동적 필드 할당으로 합산해 오더 실적 누계 WKG_SUM 을 GT_DATA에 반영한다. ```abap 1597| LOOP AT GT_DATA. 1598| LOOP AT GT_COSP WHERE OBJNR = GT_DATA-OBJNR. 1599| LV_CNT = 1. 1600| DO 12 TIMES. 1601| LV_NPERBL = SY-INDEX. 1602| CONCATENATE 'GT_COSP-WKG' LV_NPERBL 1603| INTO LV_FIELD. 1604| ASSIGN (LV_FIELD) TO . 1605| IF SY-SUBRC EQ 0. 1606| LV_SUM = LV_SUM + . 1607| ENDIF. 1608| ENDDO. 1609| ENDLOOP. 1610| GT_DATA-WKG_SUM = LV_SUM. 1611| CLEAR : LV_SUM. 1612| MODIFY GT_DATA. 1613| ENDLOOP. ``` - **EN**: Sums the twelve period fields of the matching COSP totals dynamically and stores the cumulative actual amount WKG_SUM per row. - 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) - SAP 객체: COSP - 업무 키워드: 누계 합산, 12개월 합계, 동적 필드, 실적 - English: Cumulative Actuals, Period Totals, Field Symbol - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GT_COSP`](#decl-zcoc0120top-115-gt_cosp), [`LV_CNT`](#decl-zcoc0120f01-1540-lv_cnt), [`LV_NPERBL`](#decl-zcoc0120f01-1541-lv_nperbl), [`LV_FIELD`](#decl-zcoc0120f01-1542-lv_field), [``](#decl-zcoc0120f01-1543--fs_field-), [`LV_SUM`](#decl-zcoc0120f01-1538-lv_sum) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1597-L1613` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#SELECT_COSP#C2` ### FORM EDIT_DATA_A — `ZCOC0120F01` L814-L831 (18줄) *업로드 데이터에 구분 텍스트(자산신규생성/기존 자산)와 통화·단위를 채워 ALV 표시용으로 편집한다.* > 이 unit 의 조각 1개가 13/18줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [other] 구분값 1/2에 따라 GUBUN_T 를 '자산신규생성'/'기존 자산'으로 설정하고 통화(GV_WAERS)와 단위(GC_MEINS)를 각 행에 채운다. ```abap 817| LOOP AT GT_DATA. 818| 819| IF GT_DATA-GUBUN = '1'. 820| GT_DATA-GUBUN_T = '자산신규생성'(F18). 821| ELSEIF GT_DATA-GUBUN = '2'. 822| GT_DATA-GUBUN_T = '기존 자산'(F19). 823| ENDIF. 824| 825| GT_DATA-WAERS = GV_WAERS. 826| GT_DATA-MEINS = GC_MEINS. 827| 828| MODIFY GT_DATA. 829| ENDLOOP. ``` - **EN**: Sets the description for asset creation type (new/existing) and fills currency and unit of measure on each upload row. - 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) - 업무 키워드: 구분 텍스트, 신규 자산, 기존 자산, 통화, 단위 - English: Asset Type, Currency, Unit of Measure - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`GC_MEINS`](#decl-zcoc0120top-35-gc_meins) - 위치: `abap://ZCOC0120/ZCOC0120F01#L817-L829` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#EDIT_DATA_A#C1` ### FORM PROCESS_SETTLEMENT — `ZCOC0120F01` L1398-L1406 (9줄) *정산규칙 모드의 처리 흐름으로 SELECT_DATA(ZCOT0040 조회)·SELECT_COSP(실적 누계)·VALIDATION_CHECK_C(검증)를 순서대로 수행하고 점검 완료 메시지를 낸다.* > 이 unit 의 조각 1개가 7/9줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] 저장 내역 조회, COSP 실적/약정 누계 조회, 정산규칙 유효성 검증을 차례로 수행하고 새로고침 플래그 설정·변경 플래그 해제 후 '점검이 완료되었습니다' 메시지를 표시한다. ```abap 1399| PERFORM SELECT_DATA. 1400| PERFORM SELECT_COSP. 1401| PERFORM VALIDATION_CHECK_C. 1402| 1403| GV_REFRESH = 'X'. 1404| CLEAR : GV_CHANGED. 1405| MESSAGE S000 WITH '점검이 완료되었습니다.'(F24). ``` - **EN**: Orchestrates settlement mode processing: read saved data, read COSP actuals, validate, then reset change flag and show completion message. - 호출(파서): SELECT_DATA, SELECT_COSP, VALIDATION_CHECK_C - SAP 객체: ZCOT0040, COSP - 업무 키워드: 정산규칙 점검, 처리 흐름, 실적 누계, 유효성 검증 - English: Settlement Rule, Validation, Process Flow - 정의부(복사 시 함께 필요): [`GV_REFRESH`](#decl-zco_common-45-gv_refresh), [`GV_CHANGED`](#decl-zcoc0120top-26-gv_changed) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1399-L1405` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#PROCESS_SETTLEMENT#C1` ### FORM SELECT_DATA — `ZCOC0120F01` L721-L770 (50줄) *정산규칙 모드에서 ZCOT0040 저장 내역을 상태(미처리/실패/성공)로 필터링하고 ONROR 오브젝트번호를 붙여 GT_DATA를 구성한다.* > 이 unit 의 조각 2개가 42/50줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] 선택 옵션(P_OPEN 미처리/P_FAIL 실패/P_SUCC 성공)에 따라 GT_ZCOT0040 에서 해당 정산 상태(SETTL_SUCCESS)가 아닌 건을 삭제하여 조회 대상을 좁힌다. ```abap 726| IF P_OPEN = 'X'. 727| DELETE GT_ZCOT0040 WHERE SETTL_SUCCESS NE SPACE. 728| ELSEIF P_FAIL = 'X'. 729| DELETE GT_ZCOT0040 WHERE SETTL_SUCCESS NE 'E'. 730| ELSEIF P_SUCC = 'X'. 731| DELETE GT_ZCOT0040 WHERE SETTL_SUCCESS NE 'S'. 732| ENDIF. 733| 734| SORT GT_ZCOT0040 BY AUFNR ANLN1. 735| 736| CHECK GT_ZCOT0040[] IS NOT INITIAL. ``` - **EN**: Filters the ZCOT0040 records by settlement status (open, failed, successful) according to the selected radio button. - SAP 객체: ZCOT0040 - 업무 키워드: 상태 필터, 미처리, 실패, 성공, 정산 상태 - English: Settlement Status, Filter, Selection Option - 정의부(복사 시 함께 필요): [`P_OPEN`](#decl-zcoc0120top-171-p_open), [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`P_FAIL`](#decl-zcoc0120top-176-p_fail), [`P_SUCC`](#decl-zcoc0120top-181-p_succ) - 위치: `abap://ZCOC0120/ZCOC0120F01#L726-L736` · confidence 0.88 · `ZCOC0120#ZCOC0120F01#FORM#SELECT_DATA#C1` #### [sql_select] ONROR 에서 오더별 오브젝트번호(OBJNR)를 조회한 뒤 GT_ZCOT0040 을 GT_DATA 로 옮기며 정산 성공 여부에 따라 상태 아이콘(적/녹/초기)을 설정하고 OBJNR을 붙인다. ```abap 738| SELECT AUFNR OBJNR 739| FROM ONROR 740| INTO CORRESPONDING FIELDS OF TABLE LT_AUFK_OBJNR 741| FOR ALL ENTRIES IN GT_ZCOT0040 742| WHERE AUFNR = GT_ZCOT0040-AUFNR. 743| 744| SORT LT_AUFK_OBJNR BY AUFNR. 745| 746| LOOP AT GT_ZCOT0040. 747| MOVE-CORRESPONDING GT_ZCOT0040 TO GT_DATA. 748| 749| IF GT_DATA-SETTL_SUCCESS = 'E'. 750| GT_DATA-STATUS = GC_STATUS_RED. 751| ELSEIF GT_DATA-SETTL_SUCCESS = 'S'. 752| GT_DATA-STATUS = GC_STATUS_GREEN. 753| ELSE. 754| GT_DATA-STATUS = GC_STATUS_INIT. 755| ENDIF. 756| 757| READ TABLE LT_AUFK_OBJNR WITH KEY AUFNR = GT_DATA-AUFNR 758| BINARY SEARCH. 759| 760| IF SY-SUBRC EQ 0. 761| GT_DATA-OBJNR = LT_AUFK_OBJNR-OBJNR. 762| ENDIF. 763| 764| APPEND GT_DATA. CLEAR : GT_DATA. 765| CLEAR : LT_AUFK_OBJNR. 766| ENDLOOP. 767| 768| SORT GT_DATA BY AUFNR. ``` - **EN**: Reads object numbers from ONROR for the orders and builds GT_DATA from ZCOT0040 records with status icon derived from settlement success flag. - 테이블(파서): read [ONROR](/tables/ONROR.md) / write - - SAP 객체: ONROR, ZCOT0040 - 업무 키워드: 오브젝트번호 조회, 상태 아이콘, 정산 성공 여부, 조회 데이터 구성 - English: Object Number, Internal Order, Status Icon - 정의부(복사 시 함께 필요): [`LT_AUFK_OBJNR`](#decl-zcoc0120f01-722-lt_aufk_objnr), [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init) - 위치: `abap://ZCOC0120/ZCOC0120F01#L738-L768` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#SELECT_DATA#C2` ### FORM VALIDATION_CHECK_C — `ZCOC0120F01` L1255-L1389 (135줄) *정산규칙 모드에서 저장 내역의 오더(AUFK/ONROR)·자산(ANLA) 존재를 확인하고 오더별 정산% 합계 100%, 금액/% 택일, Z_CO_CHECK_BUDGET 예산 초과를 검증하여 상태·메시지를 설정한다.* > 이 unit 의 조각 5개가 113/135줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] GT_DATA의 오더번호를 중복 제거한 뒤 AUFK 와 ONROR 를 조인하여 오더 존재 여부·오더 텍스트(KTEXT)·오브젝트번호(OBJNR)를 GT_AUFK_ST 로 조회한다. ```abap 1264| CLEAR : LT_FORALL, LT_FORALL[]. 1265| LT_FORALL[] = GT_DATA[]. 1266| SORT LT_FORALL BY AUFNR. 1267| DELETE ADJACENT DUPLICATES FROM LT_FORALL 1268| COMPARING AUFNR. 1269| 1270| SELECT A~AUFNR A~KTEXT B~OBJNR 1271| FROM AUFK AS A INNER JOIN ONROR AS B 1272| ON A~AUFNR = B~AUFNR 1273| INTO CORRESPONDING FIELDS OF TABLE GT_AUFK_ST 1274| FOR ALL ENTRIES IN LT_FORALL 1275| WHERE A~AUFNR = LT_FORALL-AUFNR. 1276| 1277| SORT GT_AUFK_ST BY AUFNR OBJNR. ``` - **EN**: Selects order text and object number from AUFK joined with ONROR for the distinct orders in GT_DATA to verify order existence. - 테이블(파서): read [AUFK](/tables/AUFK.md), [ONROR](/tables/ONROR.md) / write - - SAP 객체: AUFK, ONROR - 업무 키워드: 오더 존재 확인, 오더 텍스트, 오브젝트번호, 투자오더 - English: Internal Order, Object Number, Order Master - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-1256-lt_forall), [`GT_AUFK_ST`](#decl-zcoc0120top-103-gt_aufk_st) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1264-L1277` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C1` #### [sql_select] 자산번호를 중복 제거한 뒤 회사코드 P_BUKRS 의 ANLA 에서 자산번호·자산내역(TXT50)을 GT_ANLA 로 조회하여 자산 존재를 확인한다. ```abap 1278| CLEAR : LT_FORALL, LT_FORALL[]. 1279| LT_FORALL[] = GT_DATA[]. 1280| SORT LT_FORALL BY ANLN1. 1281| DELETE ADJACENT DUPLICATES FROM LT_FORALL 1282| COMPARING ANLN1. 1283| 1284| SELECT ANLN1 TXT50 1285| FROM ANLA 1286| INTO CORRESPONDING FIELDS OF TABLE GT_ANLA 1287| FOR ALL ENTRIES IN LT_FORALL 1288| WHERE BUKRS = P_BUKRS 1289| AND ANLN1 = LT_FORALL-ANLN1. 1290| 1291| SORT GT_DATA BY AUFNR ANLN1. ``` - **EN**: Selects asset number and description from ANLA for the company code to verify that the fixed assets exist. - 테이블(파서): read [ANLA](/tables/ANLA.md) / write - - SAP 객체: ANLA - 업무 키워드: 자산 존재 확인, 자산내역, 본자산, 회사코드 - English: Fixed Asset Master, Asset Description, Company Code - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_FORALL`](#decl-zcoc0120f01-1256-lt_forall), [`GT_ANLA`](#decl-zcoc0120top-110-gt_anla), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1278-L1291` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C2` #### [validation] 각 행에 오더 텍스트·오브젝트번호·자산내역을 붙이고 같은 오더의 정산%(PROZS) 합계를 계산해 0 또는 100이 아니면 '입력된 %의 합은 100%이어야 합니다' 오류로 PROZS/AUFNR 필드를 적색 표시한다. ```abap 1297| LOOP AT GT_DATA. 1298| IF P_SUCC NE 'X'. 1299| GT_DATA-STATUS = GC_STATUS_INIT. 1300| ENDIF. 1301| READ TABLE GT_AUFK_ST WITH KEY AUFNR = GT_DATA-AUFNR 1302| BINARY SEARCH. 1303| 1304| IF SY-SUBRC EQ 0. 1305| GT_DATA-AUFNR_T = GT_AUFK_ST-KTEXT. 1306| GT_DATA-OBJNR = GT_AUFK_ST-OBJNR. 1307| ENDIF. 1308| 1309| READ TABLE GT_ANLA WITH KEY ANLN1 = GT_DATA-ANLN1 1310| BINARY SEARCH. 1311| 1312| IF SY-SUBRC EQ 0. 1313| GT_DATA-ANLN1_T = GT_ANLA-TXT50. 1314| ENDIF. 1315| 1316| LOOP AT LT_CHECK WHERE AUFNR = GT_DATA-AUFNR. 1317| LV_PERCENT = LV_PERCENT + LT_CHECK-PROZS. 1318| ENDLOOP. 1319| 1320| IF ( LV_PERCENT NE 100 ) AND ( LV_PERCENT NE 0 ). 1321| GT_DATA-MESSAGE = '입력된 %의 합은 100%이어야 합니다.'(F14). 1322| GT_DATA-STATUS = GC_STATUS_RED. 1323| GV_UPLOAD_ERROR = 'X'. 1324| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. 1325| PERFORM SET_ERROR_FIELD_RED USING 'AUFNR'. 1326| PERFORM ADD_DATA_MESSAGE USING 'E' 1327| '' 1328| GT_DATA-MESSAGE. 1329| ENDIF. ``` - **EN**: Enriches rows with order and asset texts and validates that the settlement percentage sum per order equals 100 percent, flagging errors otherwise. - 호출(파서): SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - SAP 객체: COBRB - 업무 키워드: 정산 비율 합계, 100% 검증, 오더별 합계, 오류 표시 - English: Settlement Percentage, Validation, Internal Order - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`P_SUCC`](#decl-zcoc0120top-181-p_succ), [`GC_STATUS_INIT`](#decl-zco_alv-131-gc_status_init), [`GT_AUFK_ST`](#decl-zcoc0120top-103-gt_aufk_st), [`GT_ANLA`](#decl-zcoc0120top-110-gt_anla), [`LT_CHECK`](#decl-zcoc0120f01-1257-lt_check), [`LV_PERCENT`](#decl-zcoc0120f01-1258-lv_percent), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1297-L1329` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C3` #### [validation] CHECK_VALUE_FIELD 로 금액(BETRR)과 정산%(PROZS)가 동시에 입력되었는지, 그리고 둘 다 비어 있는지 검사하여 각각 '하나만 입력'/'하나는 필수' 오류 메시지와 적색 상태를 설정한다. ```abap 1331| PERFORM CHECK_VALUE_FIELD USING LV_ERR. 1332| 1333| IF LV_ERR = 'X'. 1334| GT_DATA-MESSAGE = '금액, 정산% 하나만 입력되어야 합니다.'(F12). 1335| GT_DATA-STATUS = GC_STATUS_RED. 1336| GV_UPLOAD_ERROR = 'X'. 1337| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. 1338| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. 1339| PERFORM ADD_DATA_MESSAGE USING 'E' 1340| '' 1341| GT_DATA-MESSAGE. 1342| ENDIF. 1343| 1344| IF GT_DATA-BETRR IS INITIAL AND GT_DATA-PROZS IS INITIAL. 1345| GT_DATA-MESSAGE = '금액, 정산% 중에 하나는 필수 입력입니다.'(F10). 1346| GT_DATA-STATUS = GC_STATUS_RED. 1347| GV_UPLOAD_ERROR = 'X'. 1348| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. 1349| PERFORM SET_ERROR_FIELD_RED USING 'PROZS'. 1350| PERFORM ADD_DATA_MESSAGE USING 'E' 1351| '' 1352| GT_DATA-MESSAGE. 1353| ENDIF. ``` - **EN**: Validates that exactly one of settlement amount BETRR or percentage PROZS is entered, raising an error when both or neither are filled. - 호출(파서): CHECK_VALUE_FIELD, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE, SET_ERROR_FIELD_RED, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - 업무 키워드: 금액/비율 택일, 필수 입력 검증, 정산 금액, 정산 비율 - English: Settlement Amount, Settlement Percentage, Mandatory Check - 정의부(복사 시 함께 필요): [`LV_ERR`](#decl-zcoc0120f01-1259-lv_err), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1331-L1353` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C4` #### [fm_call] 같은 오더의 정산금액(BETRR) 합계를 구해 Z_CO_CHECK_BUDGET 에 회사코드·전기일·오더·금액·통화를 넘겨 오더 예산 초과 여부를 점검하고 결과코드 'E'면 오류 메시지와 적색 상태로 GT_DATA를 갱신한다. ```abap 1355| LOOP AT LT_CHECK WHERE AUFNR = GT_DATA-AUFNR. 1356| LV_BUDGET = LV_BUDGET + LT_CHECK-BETRR. 1357| ENDLOOP. 1358| 1359| CALL FUNCTION 'Z_CO_CHECK_BUDGET' 1360| EXPORTING 1361| I_BUKRS = P_BUKRS 1362| I_BUDAT = SY-DATUM 1363| * I_KSTAR = 1364| * I_KOSTL = 1365| I_AUFNR = GT_DATA-AUFNR 1366| I_DMBTR = LV_BUDGET 1367| I_WAERS = GV_WAERS 1368| IMPORTING 1369| E_RESULTCODE = LV_CODE 1370| E_RESULTMSG = LV_MSG. 1371| 1372| IF LV_CODE = 'E'. 1373| GT_DATA-MESSAGE = LV_MSG. 1374| * GT_DATA-MESSAGE = '오더 예산이 초과되었습니다.'(F29). 1375| GT_DATA-STATUS = GC_STATUS_RED. 1376| GV_UPLOAD_ERROR = 'X'. 1377| PERFORM SET_ERROR_FIELD_RED USING 'BETRR'. 1378| PERFORM ADD_DATA_MESSAGE USING 'E' 1379| '' 1380| GT_DATA-MESSAGE. 1381| ENDIF. 1382| 1383| MODIFY GT_DATA. ``` - **EN**: Sums the settlement amounts per order and calls Z_CO_CHECK_BUDGET to check order budget availability, marking the row as error when the budget is exceeded. - 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) - 호출(파서): Z_CO_CHECK_BUDGET, SET_ERROR_FIELD_RED, ADD_DATA_MESSAGE - SAP 객체: Z_CO_CHECK_BUDGET - 업무 키워드: 오더 예산 점검, 예산 초과, 정산금액 합계, 가용성 관리 - English: Budget Check, Availability Control, Internal Order, Settlement Amount - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_CHECK`](#decl-zcoc0120f01-1257-lt_check), [`LV_BUDGET`](#decl-zcoc0120f01-1260-lv_budget), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`GV_WAERS`](#decl-zco_common-52-gv_waers), [`LV_CODE`](#decl-zcoc0120f01-1261-lv_code), [`LV_MSG`](#decl-zcoc0120f01-1262-lv_msg), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_UPLOAD_ERROR`](#decl-zcoc0120top-22-gv_upload_error) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1355-L1383` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#VALIDATION_CHECK_C#C5` ### EVENT END-OF-SELECTION — `ZCOC0120` L55-L66 (12줄) *온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다.* > 이 unit 의 조각 1개가 11/12줄(92%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] 배치가 아닌 온라인 실행이고 GT_DATA가 있으면 CALL SCREEN 100으로 ALV 검증 결과 화면을 띄우고, 없으면 '조회된 데이터가 없습니다' 메시지를 낸다. ```abap 56| IF SY-BATCH NE 'X'. 57| IF GT_DATA[] IS NOT INITIAL. 58| CALL SCREEN 100. 59| ELSE. 60| MESSAGE S000 WITH '조회된 데이터가 없습니다.'. 61| ENDIF. 62| ELSE. 63| IF GT_DATA[] IS NOT INITIAL. 64| * PERFORM DISPLAY_SPOOL_BY_SALV TABLES GT_DATA[]. 65| ENDIF. 66| ENDIF... ``` - **EN**: In dialog mode call screen 100 to show the ALV when GT_DATA is filled, otherwise issue a no-data message; batch mode does nothing. - 호출(파서): 100 - SAP 객체: GT_DATA - 업무 키워드: 결과 화면 호출, 데이터 없음 메시지 - English: CALL SCREEN, ALV, Batch Mode - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data) - 위치: `abap://ZCOC0120/ZCOC0120#L56-L66` · confidence 0.85 · `ZCOC0120#ZCOC0120#EVENT#END-OF-SELECTION#C1` ### FORM GET_SETLEAF_VALUES — `ZCO_COMMON` L233-L297 (65줄) *세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다.* > 이 unit 의 조각 1개가 48/65줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 세트 클래스(0101 코스트센터, 0102 원가요소, 0103 오더, 0106 손익센터, 0109 계정과목)에 따라 관리회계영역(GC_KOKRS) 또는 계정과목표(GV_KTOPL)를 붙여 SETID를 만들고 K_HIERARCHY_TABLES_READ로 세트 계층의 값 구간(T_VALUES)을 GT_VALUE_SET에 조회한다. ```abap 249| L_CLASS = PV_CLASS. 250| 251| CASE PV_CLASS. 252| WHEN '0101'. " 코스트센터 253| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. 254| WHEN '0102'. " 원가요소 255| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. 256| WHEN '0103'. " 오더 257| * CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. 258| CONCATENATE PV_CLASS P_SETNAME INTO L_SETID. " New GL/Segment 259| WHEN '0106'. " 손익센터 260| CONCATENATE PV_CLASS GC_KOKRS P_SETNAME INTO L_SETID. 261| WHEN '0109'. " 계정과목 262| CONCATENATE PV_CLASS GV_KTOPL P_SETNAME INTO L_SETID. 263| ENDCASE. 264| 265| CALL FUNCTION 'K_HIERARCHY_TABLES_READ' 266| EXPORTING 267| E_CLASS = L_CLASS 268| E_SETID = L_SETID 269| E_KOKRS = GC_KOKRS 270| E_MANDT = SY-MANDT 271| TABLES 272| T_NODES = LT_NODE 273| T_VALUES = GT_VALUE_SET 274| CHANGING 275| C_INFO = LT_GRPHINFO 276| C_OVERWRITE = SY-DATAR 277| EXCEPTIONS 278| NO_CONTROLLING_AREA = 1 279| NO_CHART_OF_ACCOUNT = 2 280| DIFFERENT_CONTROLLING_AREAS = 3 281| DIFFERENT_CHART_OF_ACCOUNTS = 4 282| SET_NOT_FOUND = 5 283| ILLEGAL_FIELD_REPLACEMENT = 6 284| ILLEGAL_TABLE_REPLACEMENT = 7 285| FM_RAISE = 8 286| CONVERT_ERROR = 9 287| NO_OVERWRITE_STANDARD_HIER = 10 288| NO_BUKRS_FOR_KOKRS = 11 289| OTHERS = 12. 290| 291| IF SY-SUBRC <> 0. 292| * MESSAGE ID 'GS' TYPE 'E' NUMBER '004' 293| * WITH P_SETNAME INTO L_MESSAGE. 294| * MESSAGE S000(ZCOM1) DISPLAY LIKE 'E' WITH L_MESSAGE. 295| * LEAVE LIST-PROCESSING. 296| ENDIF. ``` - **EN**: Compose the SETID by set class with controlling area or chart of accounts, then read the set hierarchy values via K_HIERARCHY_TABLES_READ into GT_VALUE_SET. - 호출(파서): K_HIERARCHY_TABLES_READ - SAP 객체: K_HIERARCHY_TABLES_READ, SETHIER, SETLEAF, GT_VALUE_SET - 업무 키워드: 세트 값 조회, 코스트센터 그룹, 원가요소 그룹, 계정과목 그룹, 관리회계영역 - English: Set Hierarchy, Cost Center Group, Cost Element Group, K_HIERARCHY_TABLES_READ - 정의부(복사 시 함께 필요): [`L_CLASS`](#decl-zco_common-238-l_class), [`GC_KOKRS`](#decl-zco_common-58-gc_kokrs), [`L_SETID`](#decl-zco_common-239-l_setid), [`GV_KTOPL`](#decl-zco_common-53-gv_ktopl), [`LT_NODE`](#decl-zco_common-237-lt_node), [`GT_VALUE_SET`](#decl-zco_common-21-gt_value_set), [`LT_GRPHINFO`](#decl-zco_common-240-lt_grphinfo) - 위치: `abap://ZCOC0120/ZCO_COMMON#L249-L296` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#GET_SETLEAF_VALUES#C1` ### FORM DYNPRO — `ZCO_COMMON` L309-L335 (27줄) *BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다.* > 이 unit 의 조각 1개가 19/27줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [interface] DYNBEGIN='X'면 프로그램·화면번호로 BDC 화면 시작 레코드를, 아니면 필드명·값 레코드를 BDCDATA에 추가하며, GT_EXCP_INIT_FIELD에 등록된 필드는 값이 없을 때 추가하지 않는다. ```abap 315| IF PV_DYNBEGIN = 'X'. 316| WRITE : PV_INPUT TO LS_BDCTAB-PROGRAM LEFT-JUSTIFIED. 317| WRITE : PV_VALUE TO LS_BDCTAB-DYNPRO LEFT-JUSTIFIED. 318| WRITE : 'X' TO LS_BDCTAB-DYNBEGIN LEFT-JUSTIFIED. 319| 320| APPEND LS_BDCTAB TO PT_BDCTAB. 321| ELSE. 322| READ TABLE GT_EXCP_INIT_FIELD TRANSPORTING NO FIELDS 323| WITH KEY FNAME = PV_INPUT BINARY SEARCH. 324| 325| IF SY-SUBRC EQ 0 AND PV_VALUE IS INITIAL. 326| EXIT. 327| ENDIF. 328| 329| WRITE : PV_INPUT TO LS_BDCTAB-FNAM LEFT-JUSTIFIED. 330| WRITE : PV_VALUE TO LS_BDCTAB-FVAL LEFT-JUSTIFIED. 331| 332| APPEND LS_BDCTAB TO PT_BDCTAB. 333| ENDIF. ``` - **EN**: Append a BDCDATA screen-start record or a field/value record, skipping fields registered in GT_EXCP_INIT_FIELD when their value is initial. - SAP 객체: BDCDATA, GT_EXCP_INIT_FIELD - 업무 키워드: BDC 데이터 생성, 화면 필드 입력, 초기값 예외 필드 - English: BDCDATA, Batch Input, Call Transaction - 정의부(복사 시 함께 필요): [`LS_BDCTAB`](#decl-zco_common-311-ls_bdctab), [`GT_EXCP_INIT_FIELD`](#decl-zco_common-92-gt_excp_init_field) - 위치: `abap://ZCOC0120/ZCO_COMMON#L315-L333` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#DYNPRO#C1` ### FORM DATE_CHK — `ZCO_COMMON` L446-L455 (10줄) *DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다.* > 이 unit 의 조각 1개가 8/10줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] 입력 날짜를 DATE_CHECK_PLAUSIBILITY로 검증하고 SY-SUBRC를 P_SUBRC로 반환해 호출자가 잘못된 날짜를 판단하게 한다. ```abap 447| CALL FUNCTION 'DATE_CHECK_PLAUSIBILITY' 448| EXPORTING 449| DATE = P_IN_DATE 450| EXCEPTIONS 451| PLAUSIBILITY_CHECK_FAILED = 1 452| OTHERS = 2. 453| 454| P_SUBRC = SY-SUBRC. ``` - **EN**: Validate the date with DATE_CHECK_PLAUSIBILITY and return the result code to the caller. - 호출(파서): DATE_CHECK_PLAUSIBILITY - SAP 객체: DATE_CHECK_PLAUSIBILITY - 업무 키워드: 날짜 유효성 검사 - English: Date Validation, Plausibility Check - 위치: `abap://ZCOC0120/ZCO_COMMON#L447-L454` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#DATE_CHK#C1` ### FORM BAR_MSG_PER — `ZCO_COMMON` L492-L516 (25줄) *처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다.* > 이 unit 의 조각 1개가 18/25줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [output] 현재 건수/전체 건수로 진행률(%)을 계산해 텍스트에 붙이고 SAPGUI_PROGRESS_INDICATOR로 상태바에 진행 상황을 표시한다. ```abap 498| L_NCNT1 = P_CNT1. 499| L_NCNT2 = P_CNT2. 500| 501| GV_CALC_I = P_CNT1 * 100 / P_CNT2. 502| GV_CALC_C0 = GV_CALC_I. 503| 504| IF L_NCNT1 IS INITIAL AND L_NCNT2 IS INITIAL. 505| GV_PROGRESS_MSG = P_TEXT. 506| ELSE. 507| CONCATENATE P_TEXT '(' GV_CALC_C0 '% )' 508| INTO GV_PROGRESS_MSG SEPARATED BY SPACE. 509| CONDENSE GV_PROGRESS_MSG. 510| ENDIF. 511| 512| CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' 513| EXPORTING 514| PERCENTAGE = GV_CALC_I 515| TEXT = GV_PROGRESS_MSG. ``` - **EN**: Compute the percentage of processed lines and show it with the text in the status bar via SAPGUI_PROGRESS_INDICATOR. - 호출(파서): SAPGUI_PROGRESS_INDICATOR - SAP 객체: SAPGUI_PROGRESS_INDICATOR - 업무 키워드: 진행률 표시, 처리 건수 - English: Progress Indicator, Status Bar - 정의부(복사 시 함께 필요): [`L_NCNT1`](#decl-zco_common-493-l_ncnt1), [`L_NCNT2`](#decl-zco_common-494-l_ncnt2), [`GV_CALC_I`](#decl-zco_common-14-gv_calc_i), [`GV_CALC_C0`](#decl-zco_common-16-gv_calc_c0), [`GV_PROGRESS_MSG`](#decl-zco_common-15-gv_progress_msg) - 위치: `abap://ZCOC0120/ZCO_COMMON#L498-L515` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#BAR_MSG_PER#C1` ### FORM DISPLAY_SPOOL_BY_SALV — `ZCO_COMMON` L525-L535 (11줄) *CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다.* > 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [output] CL_SALV_TABLE=>FACTORY로 SALV 객체를 생성하고 DISPLAY로 내부테이블 내용을 ALV 리스트(스풀)로 출력한다. ```abap 528| CL_SALV_TABLE=>FACTORY( 529| IMPORTING 530| R_SALV_TABLE = GR_TABLE 531| CHANGING 532| T_TABLE = PT_TABLE[] ). 533| 534| GR_TABLE->DISPLAY( ). ``` - **EN**: Create a SALV table object with CL_SALV_TABLE=>FACTORY and display the internal table as an ALV list for spool output. - 호출(파서): CL_SALV_TABLE=>FACTORY, GR_TABLE->DISPLAY - SAP 객체: CL_SALV_TABLE - 업무 키워드: ALV 리스트 출력, 스풀 출력 - English: SALV, ALV List, Spool - 정의부(복사 시 함께 필요): [`GR_TABLE`](#decl-zco_common-526-gr_table) - 위치: `abap://ZCOC0120/ZCO_COMMON#L528-L534` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#DISPLAY_SPOOL_BY_SALV#C1` ### FORM UPLOAD_DATA — `ZCO_COMMON` L595-L652 (58줄) *엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다.* > 이 unit 의 조각 2개가 43/58줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 대상 테이블·구조체를 동적 ASSIGN한 뒤 지정 행/열 범위로 ALSM_EXCEL_TO_INTERNAL_TABLE을 호출해 엑셀 셀 데이터를 LT_INTERN에 읽고, 실패 시 파일 없음/경로 오류 메시지 또는 시스템 메시지를 낸다. ```abap 607| ASSIGN: (PT_EXCEL_TABLE) TO , 608| (PS_EXCEL_STRUC) TO . 609| 610| CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE' 611| EXPORTING 612| FILENAME = PV_EXCEL_FILENAME 613| I_BEGIN_COL = PV_BEGIN_COL 614| I_BEGIN_ROW = PV_BEGIN_ROW 615| I_END_COL = PV_END_COL 616| I_END_ROW = PV_END_ROW 617| TABLES 618| INTERN = LT_INTERN 619| EXCEPTIONS 620| INCONSISTENT_PARAMETERS = 1 621| UPLOAD_OLE = 2 622| OTHERS = 3. 623| 624| IF SY-SUBRC <> 0. 625| IF SY-MSGID IS INITIAL. 626| MESSAGE I000 WITH 'No Selected File Exists or Too Long File path'. 627| LEAVE LIST-PROCESSING. 628| ELSE. 629| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 630| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 631| ENDIF. 632| ENDIF. ``` - **EN**: Dynamically assign the target table and structure, read the Excel cell range with ALSM_EXCEL_TO_INTERNAL_TABLE and report file/path errors on failure. - 호출(파서): ALSM_EXCEL_TO_INTERNAL_TABLE - SAP 객체: ALSM_EXCEL_TO_INTERNAL_TABLE, ALSMEX_TABLINE - 업무 키워드: 엑셀 업로드, 파일 읽기, 업로드 오류 메시지 - English: Excel Upload, ALSM_EXCEL_TO_INTERNAL_TABLE, OLE - 정의부(복사 시 함께 필요): [``](#decl-zco_common-605--l_fs02-), [``](#decl-zco_common-606--l_fs03-), [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern) - 위치: `abap://ZCOC0120/ZCO_COMMON#L607-L632` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#UPLOAD_DATA#C1` #### [calculation] 셀 데이터를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거) 행이 끝날 때마다 대상 내부테이블(GT_UPLOAD)에 APPEND한다. ```abap 634| LOOP AT LT_INTERN. 635| AT NEW ROW. 636| CLEAR : . 637| ENDAT. 638| 639| ASSIGN COMPONENT LT_INTERN-COL OF STRUCTURE TO . 640| 641| IF LT_INTERN-VALUE CO '0123456789,.- '. 642| REPLACE ALL OCCURRENCES OF ',' IN LT_INTERN-VALUE WITH ''. 643| ENDIF. 644| 645| MOVE LT_INTERN-VALUE TO . 646| 647| AT END OF ROW. 648| APPEND TO . 649| ENDAT. 650| ENDLOOP. ``` - **EN**: Map each cell value to the structure component by column (removing thousand separators) and append one line per Excel row to the target table. - SAP 객체: ALSMEX_TABLINE, GT_UPLOAD - 업무 키워드: 셀 값 매핑, 행 단위 적재, 콤마 제거 - English: Cell Mapping, ASSIGN COMPONENT, Internal Table - 정의부(복사 시 함께 필요): [`ALSMEX_TABLINE`](#decl-zco_common-5-alsmex_tabline), [`LT_INTERN`](#decl-zco_common-603-lt_intern), [``](#decl-zco_common-606--l_fs03-), [``](#decl-zco_common-604--l_fs01-), [``](#decl-zco_common-605--l_fs02-) - 위치: `abap://ZCOC0120/ZCO_COMMON#L634-L650` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#UPLOAD_DATA#C2` ### FORM BUILD_MESSAGE — `ZCO_COMMON` L701-L722 (22줄) *BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* > 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] BDCMSGCOLL의 MSGID/MSGNR/MSGV1~4를 MESSAGE_TEXT_BUILD에 넘겨 Call Transaction 결과 메시지 텍스트를 만들고 남은 '&'를 제거한다. ```abap 706| CALL FUNCTION 'MESSAGE_TEXT_BUILD' 707| EXPORTING 708| MSGID = PS_MESSAGE-MSGID 709| MSGNR = PS_MESSAGE-MSGNR 710| MSGV1 = PS_MESSAGE-MSGV1 711| MSGV2 = PS_MESSAGE-MSGV2 712| MSGV3 = PS_MESSAGE-MSGV3 713| MSGV4 = PS_MESSAGE-MSGV4 714| IMPORTING 715| MESSAGE_TEXT_OUTPUT = PV_TEXT. 716| 717| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. ``` - **EN**: Build the readable message text from a BDCMSGCOLL entry via MESSAGE_TEXT_BUILD and remove leftover ampersand placeholders. - 호출(파서): MESSAGE_TEXT_BUILD - SAP 객체: MESSAGE_TEXT_BUILD, BDCMSGCOLL - 업무 키워드: BDC 메시지 텍스트, 메시지 조립 - English: BDCMSGCOLL, Message Text, Call Transaction - 위치: `abap://ZCOC0120/ZCO_COMMON#L706-L717` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#BUILD_MESSAGE#C1` ### FORM BUILD_MESSAGE_BAPI — `ZCO_COMMON` L732-L753 (22줄) *BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다.* > 이 unit 의 조각 1개가 12/22줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] BAPIRET2의 ID/NUMBER/MESSAGE_V1~4를 MESSAGE_TEXT_BUILD에 넘겨 메시지 텍스트를 만들고 남은 '&' 자리표시자를 제거한다. ```abap 737| CALL FUNCTION 'MESSAGE_TEXT_BUILD' 738| EXPORTING 739| MSGID = PS_MESSAGE-ID 740| MSGNR = PS_MESSAGE-NUMBER 741| MSGV1 = PS_MESSAGE-MESSAGE_V1 742| MSGV2 = PS_MESSAGE-MESSAGE_V2 743| MSGV3 = PS_MESSAGE-MESSAGE_V3 744| MSGV4 = PS_MESSAGE-MESSAGE_V4 745| IMPORTING 746| MESSAGE_TEXT_OUTPUT = PV_TEXT. 747| 748| REPLACE ALL OCCURRENCES OF '&' IN PV_TEXT WITH ''. ``` - **EN**: Build the message text from a BAPIRET2 entry with MESSAGE_TEXT_BUILD and strip remaining placeholder ampersands. - 호출(파서): MESSAGE_TEXT_BUILD - SAP 객체: MESSAGE_TEXT_BUILD, BAPIRET2 - 업무 키워드: BAPI 메시지 텍스트, 메시지 조립 - English: BAPIRET2, Message Text - 위치: `abap://ZCOC0120/ZCO_COMMON#L737-L748` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#BUILD_MESSAGE_BAPI#C1` ### FORM EXCEL_FORM_DOWNLOAD — `ZCO_COMMON` L760-L890 (131줄) *엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다.* > 이 unit 의 조각 2개가 85/131줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [calculation] 전달받은 엑셀 컬럼 제목마다 필드카탈로그(COLnn)를 만들고 CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE로 동적 테이블을 생성한 뒤 컬럼 제목을 값으로 한 헤더 1행을 APPEND해 업로드 양식 데이터를 구성한다. ```abap 802| CHECK PT_EXCEL_EXPORT[] IS NOT INITIAL. 803| 804| LOOP AT PT_EXCEL_EXPORT. 805| ADD_EXCEL_COL : PT_EXCEL_EXPORT-EXCEL_COL. 806| ENDLOOP. 807| 808| " 동적 테이블 생성 809| CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE 810| EXPORTING 811| IT_FIELDCATALOG = LT_FCAT 812| IMPORTING 813| EP_TABLE = LF_DATA. 814| 815| ASSIGN LF_DATA->* TO . 816| 817| " 테이블 라인 생성 818| CREATE DATA LL_DATA LIKE LINE OF . 819| ASSIGN LL_DATA->* TO . 820| 821| " 템플릿 내용 단 한라인만 등록 822| LOOP AT LT_FCAT INTO LS_FCAT. 823| ASSIGN COMPONENT LS_FCAT-COL_POS 824| OF STRUCTURE TO . 825| 826| IF SY-SUBRC EQ 0. 827| = LS_FCAT-COLTEXT. " COLTEXT 의 내용을 그대로. 828| ENDIF. 829| ENDLOOP. 830| 831| " 테이블에 담기. 832| APPEND TO . ``` - **EN**: Build a field catalog from the Excel column titles, create a dynamic table with CL_ALV_TABLE_CREATE and append one header row containing the titles as the upload template. - 호출(파서): CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE - SAP 객체: CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE, LVC_S_FCAT, GT_EXCEL_EXPORT - 업무 키워드: 업로드 양식 생성, 동적 테이블, 엑셀 헤더 - English: Dynamic Table, Field Catalog, Upload Template - 정의부(복사 시 함께 필요): [`LT_FCAT`](#decl-zco_common-762-lt_fcat), [`LF_DATA`](#decl-zco_common-767-lf_data), [``](#decl-zco_common-776--fs_table-), [`LL_DATA`](#decl-zco_common-768-ll_data), [``](#decl-zco_common-777--fs_line-), [`LS_FCAT`](#decl-zco_common-763-ls_fcat), [``](#decl-zco_common-778--fs_col-) - 위치: `abap://ZCOC0120/ZCO_COMMON#L802-L832` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C1` #### [fm_call] '<프로그램명>_UploadForm.xls' 기본 파일명으로 FILE_SAVE_DIALOG를 열고 사용자가 확인하면 CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD(탭 구분)로 양식 테이블을 저장한 뒤 성공/실패/취소 메시지를 낸다. ```abap 836| CONCATENATE SY-REPID '_UploadForm.xls' INTO L_FNAME. 837| 838| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG 839| EXPORTING 840| DEFAULT_EXTENSION = 'XLS' 841| DEFAULT_FILE_NAME = L_FNAME 842| FILE_FILTER = '*.XLS' 843| CHANGING 844| FILENAME = L_EXT_FILENAME 845| PATH = L_PATH 846| FULLPATH = L_FULLPATH 847| USER_ACTION = L_USR_ACT. 848| 849| IF L_USR_ACT = '0'. 850| CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD 851| EXPORTING 852| FILENAME = L_FULLPATH 853| WRITE_FIELD_SEPARATOR = 'X' 854| IMPORTING 855| FILELENGTH = L_FILE_LEN 856| CHANGING 857| DATA_TAB = 858| EXCEPTIONS 859| FILE_WRITE_ERROR = 1 860| NO_BATCH = 2 861| GUI_REFUSE_FILETRANSFER = 3 862| INVALID_TYPE = 4 863| NO_AUTHORITY = 5 864| UNKNOWN_ERROR = 6 865| HEADER_NOT_ALLOWED = 7 866| SEPARATOR_NOT_ALLOWED = 8 867| FILESIZE_NOT_ALLOWED = 9 868| HEADER_TOO_LONG = 10 869| DP_ERROR_CREATE = 11 870| DP_ERROR_SEND = 12 871| DP_ERROR_WRITE = 13 872| UNKNOWN_DP_ERROR = 14 873| ACCESS_DENIED = 15 874| DP_OUT_OF_MEMORY = 16 875| DISK_FULL = 17 876| DP_TIMEOUT = 18 877| FILE_NOT_FOUND = 19 878| DATAPROVIDER_EXCEPTION = 20 879| CONTROL_FLUSH_ERROR = 21 880| OTHERS = 22. 881| 882| IF SY-SUBRC = 0. 883| MESSAGE S000 WITH 'Success.'. 884| ELSE. 885| MESSAGE I000 WITH 'Failure'. 886| ENDIF. 887| ELSE. 888| MESSAGE I000 WITH 'Cancled'. 889| ENDIF. ``` - **EN**: Open a save dialog with a default template filename and download the template table via CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD, reporting success, failure or cancel. - 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD - SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD - 업무 키워드: 엑셀 양식 다운로드, 파일 저장, 결과 메시지 - English: GUI_DOWNLOAD, File Save Dialog, Excel Template - 정의부(복사 시 함께 필요): [`L_FNAME`](#decl-zco_common-771-l_fname), [`L_EXT_FILENAME`](#decl-zco_common-772-l_ext_filename), [`L_PATH`](#decl-zco_common-774-l_path), [`L_FULLPATH`](#decl-zco_common-773-l_fullpath), [`L_USR_ACT`](#decl-zco_common-769-l_usr_act), [`L_FILE_LEN`](#decl-zco_common-770-l_file_len), [``](#decl-zco_common-776--fs_table-) - 위치: `abap://ZCOC0120/ZCO_COMMON#L836-L889` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#EXCEL_FORM_DOWNLOAD#C2` ### FORM CONVERT_CURRENCY — `ZCO_COMMON` L903-L922 (20줄) *전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다.* > 이 unit 의 조각 1개가 15/20줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 외화와 현지통화가 같으면 금액을 그대로 쓰고, 다르면 전기일 기준 환율로 CONVERT_TO_LOCAL_CURRENCY를 호출해 현지통화 금액(P_LAMT)을 구한다. ```abap 906| IF P_FCURR = P_LCURR. 907| P_LAMT = P_FAMT. 908| ELSE. 909| CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY' 910| EXPORTING 911| CLIENT = SY-MANDT 912| DATE = P_BUDAT 913| FOREIGN_CURRENCY = P_FCURR 914| FOREIGN_AMOUNT = P_FAMT 915| LOCAL_CURRENCY = P_LCURR 916| IMPORTING 917| LOCAL_AMOUNT = P_LAMT 918| EXCEPTIONS 919| NO_RATE_FOUND = 01. 920| ENDIF. ``` - **EN**: Convert the foreign amount to local currency at the posting-date exchange rate using CONVERT_TO_LOCAL_CURRENCY unless both currencies are identical. - 호출(파서): CONVERT_TO_LOCAL_CURRENCY - SAP 객체: CONVERT_TO_LOCAL_CURRENCY, TCURR - 업무 키워드: 환율 환산, 현지통화 금액, 외화 - English: Exchange Rate, Local Currency, Foreign Currency - 위치: `abap://ZCOC0120/ZCO_COMMON#L906-L920` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CONVERT_CURRENCY#C1` ### FORM CONVERT_CHAR_TO_AMT — `ZCO_COMMON` L932-L959 (28줄) *콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다.* > 이 unit 의 조각 1개가 22/28줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [calculation] STRING_REPLACE로 문자 금액의 콤마를 제거한 뒤 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화(P_WAERS)에 맞는 내부 금액으로 변환해 P_AMT에 넣는다(엑셀 업로드 금액 정리용). ```abap 936| CALL FUNCTION 'STRING_REPLACE' 937| EXPORTING 938| PATTERN = ',' 939| SUBSTITUTE = '' 940| CHANGING 941| TEXT = P_VALUE. 942| 943| IF SY-SUBRC NE 0. 944| 945| ENDIF. 946| 947| LV_EXT = P_VALUE. 948| 949| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' 950| EXPORTING 951| CURRENCY = P_WAERS 952| AMOUNT_EXTERNAL = LV_EXT 953| MAX_NUMBER_OF_DIGITS = '11' 954| IMPORTING 955| AMOUNT_INTERNAL = LV_AMT. 956| 957| P_AMT = LV_AMT. ``` - **EN**: Strip thousand separators from the character amount and convert it to internal currency amount via BAPI_CURRENCY_CONV_TO_INTERNAL for uploaded Excel values. - 호출(파서): STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL - SAP 객체: STRING_REPLACE, BAPI_CURRENCY_CONV_TO_INTERNAL - 업무 키워드: 문자 금액 변환, 콤마 제거, 통화 내부형식 - English: Currency Conversion, Internal Amount, Excel Upload - 정의부(복사 시 함께 필요): [`LV_EXT`](#decl-zco_common-934-lv_ext), [`LV_AMT`](#decl-zco_common-933-lv_amt) - 위치: `abap://ZCOC0120/ZCO_COMMON#L936-L957` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CONVERT_CHAR_TO_AMT#C1` ### FORM POPUP_TO_CONFIRM_02 — `ZCO_COMMON` L1010-L1023 (14줄) *POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다.* > 이 unit 의 조각 1개가 7/14줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 제목과 두 줄 질문으로 POPUP_TO_CONFIRM_STEP을 호출해 예(J)/아니오(N)/취소(A) 응답을 PV_ANSWER로 받는다(예산 전기 전 확인에 사용). ```abap 1015| CALL FUNCTION 'POPUP_TO_CONFIRM_STEP' 1016| EXPORTING 1017| TEXTLINE1 = PV_QUESTION1 1018| TEXTLINE2 = PV_QUESTION2 1019| TITEL = PV_TITLE 1020| IMPORTING 1021| ANSWER = PV_ANSWER. " J:예 N:아니오 A:취소 ``` - **EN**: Show a confirmation popup via POPUP_TO_CONFIRM_STEP and return J/N/A answer, used before posting the plan budget. - 호출(파서): POPUP_TO_CONFIRM_STEP - SAP 객체: POPUP_TO_CONFIRM_STEP - 업무 키워드: 확인 팝업, 전기 전 확인 - English: Confirmation Popup, POPUP_TO_CONFIRM_STEP - 위치: `abap://ZCOC0120/ZCO_COMMON#L1015-L1021` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#POPUP_TO_CONFIRM_02#C1` ### FORM POPUP_TO_CONFIRM — `ZCO_COMMON` L1035-L1060 (26줄) *POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다.* > 이 unit 의 조각 1개가 18/26줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 제목·질문·기본 버튼·취소 버튼 표시 여부로 POPUP_TO_CONFIRM(Yes/No)을 호출해 응답(P_ANSWER)을 받고 예외 시 시스템 메시지 후 응답을 비운다. ```abap 1041| CALL FUNCTION 'POPUP_TO_CONFIRM' 1042| EXPORTING 1043| TITLEBAR = P_TITLE 1044| TEXT_QUESTION = P_TEXT 1045| TEXT_BUTTON_1 = 'Yes' 1046| TEXT_BUTTON_2 = 'No' 1047| DEFAULT_BUTTON = P_DEFAULT 1048| DISPLAY_CANCEL_BUTTON = P_CANC 1049| IMPORTING 1050| ANSWER = P_ANSWER 1051| EXCEPTIONS 1052| TEXT_NOT_FOUND = 1 1053| OTHERS = 2. 1054| IF SY-SUBRC <> 0. 1055| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1057| CLEAR P_ANSWER. 1058| ENDIF. ``` - **EN**: Show a Yes/No confirmation popup with POPUP_TO_CONFIRM and return the user answer, clearing it on exception. - 호출(파서): POPUP_TO_CONFIRM - SAP 객체: POPUP_TO_CONFIRM - 업무 키워드: 확인 팝업, 사용자 확인 - English: Confirmation Popup, POPUP_TO_CONFIRM - 위치: `abap://ZCOC0120/ZCO_COMMON#L1041-L1058` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#POPUP_TO_CONFIRM#C1` ### FORM GET_LAST_DAY — `ZCO_COMMON` L1069-L1078 (10줄) *RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다.* > 이 unit 의 조각 1개가 5/10줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 입력 날짜를 RP_LAST_DAY_OF_MONTHS에 넘겨 해당 월의 말일을 P_LAST_DATE로 돌려받는다. ```abap 1073| CALL FUNCTION 'RP_LAST_DAY_OF_MONTHS' 1074| EXPORTING 1075| DAY_IN = P_DATE 1076| IMPORTING 1077| LAST_DAY_OF_MONTH = P_LAST_DATE. ``` - **EN**: Determine the last day of the month for the given date via RP_LAST_DAY_OF_MONTHS. - 호출(파서): RP_LAST_DAY_OF_MONTHS - SAP 객체: RP_LAST_DAY_OF_MONTHS - 업무 키워드: 월 말일 계산, 날짜 계산 - English: Last Day of Month, Date - 위치: `abap://ZCOC0120/ZCO_COMMON#L1073-L1077` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#GET_LAST_DAY#C1` ### FORM FILE_EXISTS — `ZCO_COMMON` L1104-L1135 (32줄) *CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다.* > 이 unit 의 조각 1개가 21/32줄(66%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] 파일명이 있을 때 CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 로컬 파일 존재 여부를 조회해 P_EXISTS에 반환하고 호출 예외 시 시스템 메시지를 낸다. ```abap 1113| CHECK P_FNAME IS NOT INITIAL. 1114| 1115| L_FILENM = P_FNAME. 1116| 1117| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST 1118| EXPORTING 1119| FILE = L_FILENM 1120| RECEIVING 1121| RESULT = L_RESULT 1122| EXCEPTIONS 1123| CNTL_ERROR = 1 1124| ERROR_NO_GUI = 2 1125| WRONG_PARAMETER = 3 1126| NOT_SUPPORTED_BY_GUI = 4 1127| OTHERS = 5. 1128| IF SY-SUBRC <> 0. 1129| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1130| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1131| ENDIF. 1132| 1133| P_EXISTS = L_RESULT. ``` - **EN**: Check whether the local file exists via CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and return the boolean result. - 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST - SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST - 업무 키워드: 파일 존재 확인, 업로드 파일 검증 - English: File Exist Check, Frontend Services - 정의부(복사 시 함께 필요): [`P_FNAME`](#decl-zcoc0120top-160-p_fname), [`L_FILENM`](#decl-zco_common-1107-l_filenm), [`L_RESULT`](#decl-zco_common-1106-l_result) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1113-L1133` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#FILE_EXISTS#C1` ### FORM AMT_CONV_TO_INTERNAL — `ZCO_COMMON` L1144-L1161 (18줄) *외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다.* > 이 unit 의 조각 1개가 11/18줄(61%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 통화(P_WAERS)에 따라 외부 표시 금액을 BAPI_CURRENCY_CONV_TO_INTERNAL로 내부 저장 형식 금액으로 변환해 P_AMOUNT에 되돌려준다. ```abap 1149| L_INTERNAL = P_AMOUNT. 1150| 1151| CALL FUNCTION 'BAPI_CURRENCY_CONV_TO_INTERNAL' 1152| EXPORTING 1153| CURRENCY = P_WAERS 1154| AMOUNT_EXTERNAL = L_INTERNAL 1155| MAX_NUMBER_OF_DIGITS = 22 1156| IMPORTING 1157| AMOUNT_INTERNAL = L_INTERNAL. 1158| 1159| P_AMOUNT = L_INTERNAL. ``` - **EN**: Convert an externally formatted amount to SAP internal format for the currency using BAPI_CURRENCY_CONV_TO_INTERNAL. - 호출(파서): BAPI_CURRENCY_CONV_TO_INTERNAL - SAP 객체: BAPI_CURRENCY_CONV_TO_INTERNAL, BAPICURR - 업무 키워드: 금액 내부형식 변환, 통화 소수점 - English: Currency Conversion, Internal Amount - 정의부(복사 시 함께 필요): [`L_INTERNAL`](#decl-zco_common-1147-l_internal) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1149-L1159` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#AMT_CONV_TO_INTERNAL#C1` ### FORM GET_NEXT_NUMBER — `ZCO_COMMON` L1172-L1203 (32줄) *번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다.* > 이 unit 의 조각 1개가 23/32줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 번호범위 객체와 구간 번호로 NUMBER_GET_NEXT를 호출해 다음 번호를 채번하고 예외 발생 시 결과를 비운다. ```abap 1179| LV_NRRANG = P_NRRANG. 1180| LV_OBJECT = P_OBJECT. 1181| 1182| CALL FUNCTION 'NUMBER_GET_NEXT' 1183| EXPORTING 1184| NR_RANGE_NR = LV_NRRANG 1185| OBJECT = LV_OBJECT 1186| IMPORTING 1187| NUMBER = P_DOCNO 1188| EXCEPTIONS 1189| INTERVAL_NOT_FOUND = 1 1190| NUMBER_RANGE_NOT_INTERN = 2 1191| OBJECT_NOT_FOUND = 3 1192| QUANTITY_IS_0 = 4 1193| QUANTITY_IS_NOT_1 = 5 1194| INTERVAL_OVERFLOW = 6 1195| BUFFER_OVERFLOW = 7 1196| OTHERS = 8. 1197| IF SY-SUBRC <> 0. 1198| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1199| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1200| CLEAR P_DOCNO. 1201| ENDIF. ``` - **EN**: Draw the next number from the number range object and interval via NUMBER_GET_NEXT and clear it on exception. - 호출(파서): NUMBER_GET_NEXT - SAP 객체: NUMBER_GET_NEXT, NRIV - 업무 키워드: 채번, 번호범위 - English: Number Range, NUMBER_GET_NEXT - 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1176-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1177-lv_object) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1179-L1201` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_NEXT_NUMBER#C1` ### FORM GET_NEXT_NUMBER_YEAR — `ZCO_COMMON` L1215-L1254 (40줄) *번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다.* > 이 unit 의 조각 1개가 30/40줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 번호범위 객체(NRIV-OBJECT)와 구간 번호, 연도(없으면 '0000')를 지정해 NUMBER_GET_NEXT로 다음 번호를 채번하고 실패 시 번호를 비운다. ```abap 1223| LV_NRRANG = P_NRRANG. 1224| LV_OBJECT = P_OBJECT. 1225| IF P_YEAR IS NOT INITIAL. 1226| LV_YEAR = P_YEAR. 1227| ELSE. 1228| LV_YEAR = '0000'. 1229| 1230| ENDIF. 1231| 1232| CALL FUNCTION 'NUMBER_GET_NEXT' 1233| EXPORTING 1234| NR_RANGE_NR = LV_NRRANG 1235| OBJECT = LV_OBJECT 1236| TOYEAR = LV_YEAR 1237| IMPORTING 1238| NUMBER = P_DOCNO 1239| EXCEPTIONS 1240| INTERVAL_NOT_FOUND = 1 1241| NUMBER_RANGE_NOT_INTERN = 2 1242| OBJECT_NOT_FOUND = 3 1243| QUANTITY_IS_0 = 4 1244| QUANTITY_IS_NOT_1 = 5 1245| INTERVAL_OVERFLOW = 6 1246| BUFFER_OVERFLOW = 7 1247| OTHERS = 8. 1248| IF SY-SUBRC <> 0. 1249| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1250| * WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1251| CLEAR P_DOCNO. 1252| ENDIF. ``` - **EN**: Draw the next number from the number range object and interval for the given year (or 0000) via NUMBER_GET_NEXT, clearing the result on error. - 호출(파서): NUMBER_GET_NEXT - SAP 객체: NUMBER_GET_NEXT, NRIV - 업무 키워드: 채번, 번호범위, 연도별 번호 - English: Number Range, NUMBER_GET_NEXT, Fiscal Year - 정의부(복사 시 함께 필요): [`LV_NRRANG`](#decl-zco_common-1219-lv_nrrang), [`LV_OBJECT`](#decl-zco_common-1220-lv_object), [`LV_YEAR`](#decl-zco_common-1221-lv_year) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1223-L1252` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_NEXT_NUMBER_YEAR#C1` ### FORM GET_VALUE_LIST_DOM — `ZCO_COMMON` L1263-L1278 (16줄) *도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다.* > 이 unit 의 조각 1개가 11/16줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] DD07T에서 지정 도메인의 활성 고정값(DOMVALUE_L)과 텍스트(DDTEXT)를 로그온 언어로 조회해 P_TAB에 넣고 정렬하며, 없으면 테이블을 비운다. ```abap 1266| SELECT DOMVALUE_L DDTEXT 1267| INTO TABLE P_TAB 1268| FROM DD07T 1269| WHERE DOMNAME EQ P_DOMAIN 1270| AND DDLANGUAGE EQ SY-LANGU 1271| AND AS4LOCAL EQ 'A'. 1272| IF SY-SUBRC EQ 0. 1273| SORT P_TAB. 1274| ELSE. 1275| REFRESH P_TAB. 1276| ENDIF. ``` - **EN**: Read active domain fixed values and texts from DD07T for the logon language into the given table, sorting it or clearing it when nothing is found. - 테이블(파서): read [DD07T](/tables/DD07T.md) / write - - SAP 객체: DD07T - 업무 키워드: 도메인 값 목록, 드롭다운 값, F4 값 목록 - English: Domain Fixed Values, DD07T, Value List - 위치: `abap://ZCOC0120/ZCO_COMMON#L1266-L1276` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_VALUE_LIST_DOM#C1` ### FORM GET_DOM_TEXT_LIST — `ZCO_COMMON` L1287-L1298 (12줄) *도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다.* > 이 unit 의 조각 1개가 8/12줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] DD07T에서 지정 도메인의 활성(AS4LOCAL='A') 고정값과 로그온 언어 텍스트를 조회해 GT_DOMAIN에 추가하고 정렬한다. ```abap 1289| SELECT DOMNAME DOMVALUE_L DDTEXT 1290| APPENDING TABLE GT_DOMAIN 1291| FROM DD07T 1292| WHERE DOMNAME = P_DOMNA 1293| AND DDLANGUAGE = SY-LANGU 1294| AND AS4LOCAL = 'A'. 1295| 1296| SORT : GT_DOMAIN. ``` - **EN**: Select active domain fixed values and their texts in the logon language from DD07T and append them to GT_DOMAIN. - 테이블(파서): read [DD07T](/tables/DD07T.md) / write - - SAP 객체: DD07T, GT_DOMAIN - 업무 키워드: 도메인 고정값, 값 텍스트 조회 - English: Domain Fixed Values, DD07T - 정의부(복사 시 함께 필요): [`GS_DOMAIN`](#decl-zco_common-27-gs_domain), [`GT_DOMAIN`](#decl-zco_common-32-gt_domain) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1289-L1296` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_DOM_TEXT_LIST#C1` ### FORM MD_CONVER_MAT_UNIT — `ZCO_COMMON` L1311-L1341 (31줄) *자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다.* > 이 unit 의 조각 1개가 23/31줄(74%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 수량이 0이거나 단위가 같으면 그대로 반환하고, 그 외에는 MD_CONVERT_MATERIAL_UNIT으로 자재(MATNR)의 단위 환산 비율에 따라 수량을 변환하며 오류 시 0으로 처리한다. ```abap 1317| IF P_MENGE IS INITIAL. 1318| CLEAR PV_MENGE. 1319| EXIT. 1320| ELSEIF P_IN_ME EQ P_OUT_ME. 1321| PV_MENGE = P_MENGE. 1322| EXIT. 1323| ENDIF. 1324| 1325| CALL FUNCTION 'MD_CONVERT_MATERIAL_UNIT' 1326| EXPORTING 1327| I_MATNR = P_MATNR 1328| I_IN_ME = P_IN_ME 1329| I_OUT_ME = P_OUT_ME 1330| I_MENGE = P_MENGE 1331| IMPORTING 1332| E_MENGE = PV_MENGE 1333| EXCEPTIONS 1334| ERROR_IN_APPLICATION = 1 1335| ERROR = 2 1336| OTHERS = 3. 1337| IF SY-SUBRC <> 0. 1338| CLEAR PV_MENGE. 1339| ENDIF. ``` - **EN**: Return the quantity unchanged for zero or identical units, otherwise convert it between units of measure for the material via MD_CONVERT_MATERIAL_UNIT. - 호출(파서): MD_CONVERT_MATERIAL_UNIT - SAP 객체: MD_CONVERT_MATERIAL_UNIT, EKPO - 업무 키워드: 자재 단위 환산, 수량 변환, 기본단위 - English: Unit of Measure Conversion, Material, Quantity - 위치: `abap://ZCOC0120/ZCO_COMMON#L1317-L1339` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#MD_CONVER_MAT_UNIT#C1` ### FORM SHOW_MESSAGE_LIST — `ZCO_COMMON` L1349-L1359 (11줄) *누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다.* > 이 unit 의 조각 1개가 7/11줄(64%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [output] 제목과 함께 GT_HEAMSG(메시지 목록)·GT_DETMSG(상세)를 SCPR_SV_SHOW_MESSAGE_LIST에 넘겨 처리 결과 메시지 목록을 팝업으로 보여준다. ```abap 1351| CALL FUNCTION 'SCPR_SV_SHOW_MESSAGE_LIST' 1352| EXPORTING 1353| TITLE_TEXT = P_TITLE 1354| SORT_BY_LEVEL = ' ' 1355| SHOW_IDS = 'X' 1356| MESSAGE_LIST = GT_HEAMSG 1357| DETAILS_LIST = GT_DETMSG. ``` - **EN**: Display the collected message list and details in a popup via SCPR_SV_SHOW_MESSAGE_LIST. - 호출(파서): SCPR_SV_SHOW_MESSAGE_LIST - SAP 객체: SCPR_SV_SHOW_MESSAGE_LIST, GT_HEAMSG, GT_DETMSG - 업무 키워드: 메시지 목록 팝업, 처리 결과 표시 - English: Message List, Popup - 정의부(복사 시 함께 필요): [`GT_HEAMSG`](#decl-zco_common-24-gt_heamsg), [`GT_DETMSG`](#decl-zco_common-23-gt_detmsg) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1351-L1357` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#SHOW_MESSAGE_LIST#C1` ### FORM GET_FILE_PATH — `ZCO_COMMON` L1368-L1399 (32줄) *파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다.* > 이 unit 의 조각 1개가 22/32줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] XLS 필터로 CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG를 열어 사용자가 OK를 누르면 첫 번째 선택 파일 경로를 P_FILENM에 반환한다. ```abap 1376| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG 1377| EXPORTING 1378| WINDOW_TITLE = 'Upload' 1379| MULTISELECTION = ' ' 1380| DEFAULT_EXTENSION = 'XLS' 1381| DEFAULT_FILENAME = ' ' 1382| FILE_FILTER = '*.XLS' 1383| CHANGING 1384| FILE_TABLE = LT_FILETABLE 1385| RC = RTN_CODE 1386| USER_ACTION = USER_ACTION. 1387| 1388| CALL METHOD CL_GUI_CFW=>FLUSH. 1389| 1390| CASE USER_ACTION. 1391| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_OK. 1392| READ TABLE LT_FILETABLE INTO LS_FILETABLE INDEX 1. 1393| CHECK SY-SUBRC IS INITIAL. 1394| MOVE: LS_FILETABLE-FILENAME TO P_FILENM. 1395| 1396| WHEN CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL. 1397| ENDCASE. ``` - **EN**: Open a file-open dialog filtered to XLS and return the first selected file path when the user confirms. - 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH, CL_GUI_FRONTEND_SERVICES=>ACTION_OK, CL_GUI_FRONTEND_SERVICES=>ACTION_CANCEL - SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG, CL_GUI_CFW=>FLUSH - 업무 키워드: 파일 선택 대화상자, 엑셀 업로드 경로 - English: File Open Dialog, Frontend Services, Excel Upload - 정의부(복사 시 함께 필요): [`LT_FILETABLE`](#decl-zco_common-1373-lt_filetable), [`RTN_CODE`](#decl-zco_common-1372-rtn_code), [`USER_ACTION`](#decl-zco_common-1371-user_action), [`LS_FILETABLE`](#decl-zco_common-1374-ls_filetable) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1376-L1397` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#GET_FILE_PATH#C1` ### FORM CHK_FILE_PATH — `ZCO_COMMON` L1408-L1433 (26줄) *CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다.* > 이 unit 의 조각 1개가 17/26줄(65%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] 프론트엔드 파일 존재 여부를 FILE_EXIST로 검사해 호출 오류 시 시스템 메시지를, 파일이 없으면 'Please check your file path' 메시지 후 LEAVE LIST-PROCESSING으로 중단한다. ```abap 1415| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST 1416| EXPORTING 1417| FILE = LV_FILE 1418| RECEIVING 1419| RESULT = LV_RESULT. 1420| 1421| IF NOT SY-SUBRC IS INITIAL. 1422| 1423| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1424| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1425| 1426| ELSEIF LV_RESULT IS INITIAL. 1427| 1428| MESSAGE S001(00) WITH 'Please check your file path'. 1429| LEAVE LIST-PROCESSING. 1430| 1431| ENDIF. ``` - **EN**: Verify the local file exists with CL_GUI_FRONTEND_SERVICES=>FILE_EXIST and stop processing with a message when it is missing. - 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILE_EXIST - SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_EXIST - 업무 키워드: 파일 존재 확인, 업로드 경로 검증 - English: File Exist Check, Frontend Services - 정의부(복사 시 함께 필요): [`LV_FILE`](#decl-zco_common-1411-lv_file), [`LV_RESULT`](#decl-zco_common-1410-lv_result) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1415-L1431` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CHK_FILE_PATH#C1` ### FORM BDC_CREATE_AENNR — `ZCO_COMMON` L1545-L1612 (68줄) *변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다.* > 이 unit 의 조각 2개가 60/68줄(88%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] AENR 테이블에서 변경번호(AENNR)가 이미 존재하는지 조회하여 있으면 성공(S)으로 종료해 중복 생성을 막는다. ```abap 1550| SELECT SINGLE AENNR 1551| INTO P_AENNR 1552| FROM AENR 1553| WHERE AENNR EQ P_AENNR. 1554| IF SY-SUBRC EQ 0. 1555| P_MSGTY = 'S'. 1556| EXIT. 1557| ENDIF. ``` - **EN**: Check AENR for an existing change number and exit with success if it already exists to avoid duplicate creation. - 테이블(파서): read [AENR](/tables/AENR.md) / write - - SAP 객체: AENR - 업무 키워드: 변경번호 존재 확인, 중복 생성 방지, 설계변경관리 - English: Change Number, AENR, Engineering Change Management - 위치: `abap://ZCOC0120/ZCO_COMMON#L1550-L1557` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C1` #### [fm_call] SAPMC29C 화면(0100/0010/0020)에 변경번호·내역·효력시작일·변경사유·상태 등을 채운 BDC 데이터를 구성해 CALL TRANSACTION 'CC01'(N 모드, 동기 업데이트)로 변경마스터를 생성하고, 메시지 CC001 성공 여부로 P_MSGTY를 정하며 실패 시 BUILD_MESSAGE로 오류 텍스트를 만든다. ```abap 1559| REFRESH : GT_BDCDATA, GT_MESSTAB. 1560| CLEAR : GS_BDC_OPTION. 1561| 1562| GS_BDC_OPTION-DISMODE = 'N'. 1563| GS_BDC_OPTION-UPDMODE = 'S'. 1564| 1565| PERFORM DYNPRO TABLES PT_TABLES USING: 1566| 'X' 'SAPMC29C' '0100', "설계변경관리: 초기화면 1567| ' ' 'BDC_OKCODE' '/00', 1568| ' ' 'RC29A-AENNR' P_AENNR, 1569| 1570| 'X' 'SAPMC29C' '0010', "ECM: Basic Screen 1571| ' ' 'BDC_OKCODE' '/00', 1572| ' ' 'RC29A-AETXT' P_TEXT, "내역 1573| ' ' 'RC29A-DATUV' P_DATUV, "효력 시작일 1574| ' ' 'RC29A-AEGRU' P_AEGRU, "변경사유 1575| ' ' 'RC29A-AENST' '01', "변경 번호 상태 1576| 1577| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen 1578| ' ' 'BDC_OKCODE' '=ENT1', 1579| ' ' 'RC29A-AEERL(01)' 'X', "Obj. 유형 활성 1580| 1581| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen 1582| ' ' 'BDC_OKCODE' '=ENT1', 1583| ' ' 'RC29A-INDFL(01)' 'X', "오브젝트 1584| 1585| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen 1586| ' ' 'BDC_OKCODE' '=ENT1', 1587| ' ' 'RC29A-OIGEN(01)' 'X', "관리레코드생성 1588| 1589| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen 1590| ' ' 'BDC_OKCODE' '/00', 1591| 1592| 'X' 'SAPMC29C' '0020', "ECM: Basic Screen 1593| ' ' 'BDC_OKCODE' '=FCBU'. 1594| 1595| CALL TRANSACTION 'CC01' 1596| USING GT_BDCDATA[] 1597| OPTIONS FROM GS_BDC_OPTION 1598| MESSAGES INTO GT_MESSTAB[]. 1599| 1600| *-- 메시지 처리 1601| READ TABLE GT_MESSTAB WITH KEY MSGTYP = 'S' 1602| MSGID = 'CC' 1603| MSGNR = '001'. 1604| IF SY-SUBRC EQ 0. 1605| P_MSGTY = 'S'. 1606| ELSE. 1607| P_MSGTY = 'E'. 1608| PERFORM BUILD_MESSAGE USING GT_MESSTAB 1609| CHANGING P_MSGTX. 1610| ENDIF. ``` - **EN**: Build BDC screens for SAPMC29C with change number, description, valid-from date, reason and status, run CALL TRANSACTION CC01, and derive success/error message from BDC messages (CC 001). - 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO - SAP 객체: CC01, SAPMC29C, GT_BDCDATA, GT_MESSTAB, BUILD_MESSAGE, DYNPRO - 업무 키워드: 변경마스터 생성, BDC 배치입력, CC01, 효력 시작일, 변경사유, 메시지 처리 - English: Change Master, BDC, Call Transaction, CC01, ECM - 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1559-L1610` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#BDC_CREATE_AENNR#C2` ### FORM GET_DYNP_VALUES_READ — `ZCO_COMMON` L1620-L1669 (50줄) *DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다.* > 이 unit 의 조각 1개가 35/50줄(70%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] DYNP_VALUES_READ로 현재 화면(SY-REPID/SY-DYNNR)의 지정 필드 값을 읽고, 성공하면 동적 ASSIGN한 동일 이름의 ABAP 변수에 값을 대입한다(F4/PAI 전 값 취득용). ```abap 1632| LS_DYNPFIELDS-FIELDNAME = P_FIELD. 1633| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. 1634| 1635| CALL FUNCTION 'DYNP_VALUES_READ' 1636| EXPORTING 1637| DYNAME = LV_DYNAME 1638| DYNUMB = LV_DYNUM 1639| TABLES 1640| DYNPFIELDS = LT_DYNPFIELDS 1641| EXCEPTIONS 1642| INVALID_ABAPWORKAREA = 1 1643| INVALID_DYNPROFIELD = 2 1644| INVALID_DYNPRONAME = 3 1645| INVALID_DYNPRONUMMER = 4 1646| INVALID_REQUEST = 5 1647| NO_FIELDDESCRIPTION = 6 1648| INVALID_PARAMETER = 7 1649| UNDEFIND_ERROR = 8 1650| DOUBLE_CONVERSION = 9 1651| STEPL_NOT_FOUND = 10 1652| OTHERS = 11. 1653| 1654| IF SY-SUBRC <> 0. 1655| EXIT. 1656| 1657| ELSE. 1658| READ TABLE LT_DYNPFIELDS INTO LS_DYNPFIELDS 1659| WITH KEY FIELDNAME = P_FIELD. 1660| IF SY-SUBRC EQ 0. 1661| ASSIGN (P_FIELD) TO . 1662| IF IS ASSIGNED. 1663| = LS_DYNPFIELDS-FIELDVALUE. 1664| ENDIF. 1665| ENDIF. 1666| ``` - **EN**: Read the current screen field value with DYNP_VALUES_READ and move it into the ABAP variable of the same name via dynamic assignment. - 호출(파서): DYNP_VALUES_READ - SAP 객체: DYNP_VALUES_READ, DYNPREAD - 업무 키워드: 화면 필드 값 읽기, F4 도움말 전 값 취득 - English: Dynpro, DYNP_VALUES_READ, Screen Field - 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1623-ls_dynpfields), [`LT_DYNPFIELDS`](#decl-zco_common-1622-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1624-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1625-lv_dynum), [``](#decl-zco_common-1627--fs_field-) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1632-L1666` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#GET_DYNP_VALUES_READ#C1` ### FORM SET_DYNP_VALUES — `ZCO_COMMON` L1678-L1719 (42줄) *프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다.* > 이 unit 의 조각 1개가 23/42줄(55%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 필드명으로 ABAP 변수를 동적 ASSIGN하여 값을 DYNPREAD에 담고 DYNP_VALUES_UPDATE로 현재 화면(SY-REPID/SY-DYNNR)의 해당 필드 값을 갱신한다. ```abap 1690| LS_DYNPFIELDS-FIELDNAME = P_FIELD. 1691| 1692| ASSIGN (P_FIELD) TO . 1693| IF IS ASSIGNED. 1694| LS_DYNPFIELDS-FIELDVALUE = . 1695| ENDIF. 1696| APPEND LS_DYNPFIELDS TO LT_DYNPFIELDS. 1697| 1698| CALL FUNCTION 'DYNP_VALUES_UPDATE' 1699| EXPORTING 1700| DYNAME = LV_DYNAME 1701| DYNUMB = LV_DYNUM 1702| TABLES 1703| DYNPFIELDS = LT_DYNPFIELDS 1704| EXCEPTIONS 1705| INVALID_ABAPWORKAREA = 1 1706| INVALID_DYNPROFIELD = 2 1707| INVALID_DYNPRONAME = 3 1708| INVALID_DYNPRONUMMER = 4 1709| INVALID_REQUEST = 5 1710| NO_FIELDDESCRIPTION = 6 1711| UNDEFIND_ERROR = 7 1712| OTHERS = 8. ``` - **EN**: Read the ABAP variable by dynamic assignment and push its value to the current screen field via DYNP_VALUES_UPDATE. - 호출(파서): DYNP_VALUES_UPDATE - SAP 객체: DYNP_VALUES_UPDATE, DYNPREAD - 업무 키워드: 화면 필드 값 갱신, 선택화면 동적 값 설정 - English: Dynpro, DYNP_VALUES_UPDATE, Screen Field - 정의부(복사 시 함께 필요): [`LS_DYNPFIELDS`](#decl-zco_common-1681-ls_dynpfields), [``](#decl-zco_common-1685--fs_field-), [`LT_DYNPFIELDS`](#decl-zco_common-1680-lt_dynpfields), [`LV_DYNAME`](#decl-zco_common-1682-lv_dyname), [`LV_DYNUM`](#decl-zco_common-1683-lv_dynum) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1690-L1712` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#SET_DYNP_VALUES#C1` ### FORM AUTHORITY_CHECK_TCODE — `ZCO_COMMON` L1725-L1738 (14줄) *S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다.* > 이 unit 의 조각 1개가 8/14줄(57%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [validation] AUTHORITY-CHECK OBJECT 'S_TCODE'로 SY-TCODE 실행 권한을 검사해 없으면 E077(S#) 오류로 중단하고, T-Code가 '*1' 패턴이면 조회 전용 모드 플래그를 켠다. ```abap 1729| AUTHORITY-CHECK OBJECT 'S_TCODE' 1730| ID 'TCD' FIELD SY-TCODE. 1731| 1732| IF SY-SUBRC NE 0. 1733| MESSAGE E077(S#) WITH SY-TCODE. 1734| ELSEIF SY-TCODE CP '*1'. 1735| GV_DIP_MOD = 'X'. 1736| ENDIF. ``` - **EN**: Check transaction authorization via S_TCODE; raise error E077(S#) if missing, and set display-only mode when the T-Code ends with 1. - SAP 객체: S_TCODE - 업무 키워드: 트랜잭션 권한 검사, 조회 모드 설정 - English: Authorization Check, S_TCODE, Display Mode - 정의부(복사 시 함께 필요): [`GV_DIP_MOD`](#decl-zco_common-43-gv_dip_mod) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1729-L1736` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#AUTHORITY_CHECK_TCODE#C1` ### FORM F_PDF_DOWNLOAD — `ZCO_COMMON` L1777-L1842 (66줄) *Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다.* > 이 unit 의 조각 2개가 47/66줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] Smart Forms 잡 결과(SSFCRESCL-OTFDATA)의 OTF 데이터를 CONVERT_OTF로 PDF 바이너리로 변환하고, OTF 라인을 텍스트 테이블로 만들어 SX_OBJECT_CONVERT_OTF_PDF로 PDF 바이너리 컨텐츠(LT_CONTENT_BIN)와 길이를 얻는다. ```abap 1792| LT_OTF[] = P_JOB-OTFDATA. 1793| 1794| CALL FUNCTION 'CONVERT_OTF' 1795| EXPORTING 1796| FORMAT = 'PDF' 1797| IMPORTING 1798| BIN_FILESIZE = LV_BIN_FILESIZE 1799| BIN_FILE = LV_BIN_FILE 1800| TABLES 1801| OTF = LT_OTF 1802| LINES = LT_LINES 1803| EXCEPTIONS 1804| ERR_MAX_LINEWIDTH = 1 1805| ERR_FORMAT = 2 1806| ERR_CONV_NOT_POSSIBLE = 3 1807| ERR_BAD_OTF = 4 1808| OTHERS = 5. 1809| 1810| LOOP AT LT_OTF. 1811| CONCATENATE LT_OTF-TDPRINTCOM LT_OTF-TDPRINTPAR INTO LS_OTF. 1812| APPEND LS_OTF TO LT_CONTENT_TXT. 1813| ENDLOOP. 1814| 1815| CALL FUNCTION 'SX_OBJECT_CONVERT_OTF_PDF' 1816| EXPORTING 1817| FORMAT_SRC = 'OTF' 1818| FORMAT_DST = 'PDF' 1819| DEVTYPE = 'PRINTER' 1820| CHANGING 1821| TRANSFER_BIN = LV_TRANSFER_BIN 1822| CONTENT_TXT = LT_CONTENT_TXT 1823| CONTENT_BIN = LT_CONTENT_BIN 1824| OBJHEAD = LT_OBJHEAD 1825| LEN = LV_LEN_IN 1826| EXCEPTIONS 1827| ERR_CONV_FAILED = 1 1828| OTHERS = 2. ``` - **EN**: Convert Smart Forms OTF output to PDF using CONVERT_OTF and SX_OBJECT_CONVERT_OTF_PDF, producing binary PDF content and its length. - 호출(파서): CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF - SAP 객체: CONVERT_OTF, SX_OBJECT_CONVERT_OTF_PDF, SSFCRESCL, ITCOO - 업무 키워드: OTF PDF 변환, Smart Forms 출력, 양식 다운로드 - English: Smart Forms, OTF, PDF Conversion - 정의부(복사 시 함께 필요): [`LT_OTF`](#decl-zco_common-1790-lt_otf), [`LV_BIN_FILESIZE`](#decl-zco_common-1785-lv_bin_filesize), [`LV_BIN_FILE`](#decl-zco_common-1786-lv_bin_file), [`LT_LINES`](#decl-zco_common-1787-lt_lines), [`LS_OTF`](#decl-zco_common-1784-ls_otf), [`LT_CONTENT_TXT`](#decl-zco_common-1780-lt_content_txt), [`LV_TRANSFER_BIN`](#decl-zco_common-1779-lv_transfer_bin), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin), [`LT_OBJHEAD`](#decl-zco_common-1782-lt_objhead), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1792-L1828` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C1` #### [fm_call] OPEN_SAVE_FILE_SEL로 pdf 저장 경로를 받은 뒤 GUI_DOWNLOAD(FILETYPE='BIN')로 PDF 바이너리를 로컬 PC에 저장한다. ```abap 1831| LV_FILESIZE = LV_LEN_IN. 1832| PERFORM OPEN_SAVE_FILE_SEL USING 'pdf' CHANGING LV_FILENAME. 1833| 1834| CALL FUNCTION 'GUI_DOWNLOAD' 1835| EXPORTING 1836| BIN_FILESIZE = LV_FILESIZE 1837| FILENAME = LV_FILENAME 1838| FILETYPE = 'BIN' 1839| TABLES 1840| DATA_TAB = LT_CONTENT_BIN. ``` - **EN**: Ask for a PDF save path via OPEN_SAVE_FILE_SEL and download the binary PDF content to the frontend with GUI_DOWNLOAD. - 호출(파서): OPEN_SAVE_FILE_SEL, GUI_DOWNLOAD - SAP 객체: GUI_DOWNLOAD, OPEN_SAVE_FILE_SEL - 업무 키워드: PDF 다운로드, 로컬 저장 - English: GUI_DOWNLOAD, PDF, Frontend Download - 정의부(복사 시 함께 필요): [`LV_FILESIZE`](#decl-zco_common-1788-lv_filesize), [`LV_LEN_IN`](#decl-zco_common-1783-lv_len_in), [`LV_FILENAME`](#decl-zco_common-1789-lv_filename), [`LT_CONTENT_BIN`](#decl-zco_common-1781-lt_content_bin) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1831-L1840` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#F_PDF_DOWNLOAD#C2` ### FORM OPEN_SAVE_FILE_SEL — `ZCO_COMMON` L1851-L1907 (57줄) *파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다.* > 이 unit 의 조각 1개가 36/57줄(63%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 확장자·기본 파일명·필터(전체/엑셀)·초기 디렉토리를 설정한 뒤 CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG를 호출하고, 오류 시 메시지, 취소 시 종료, 확인 시 파일명을 P_FILENAME에 반환한다. ```abap 1868| LV_DEFAULT_EXTENSION = P_EXT. 1869| CONCATENATE '*.' P_EXT INTO LV_DEFAULT_FILE_NAME. 1870| LV_INITIAL_DIRECTORY = 'C:\'. 1871| CONCATENATE CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL 1872| * CL_GUI_FRONTEND_SERVICES=>FILETYPE_TEXT 1873| CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL 1874| INTO LV_FILE_FILTER. 1875| 1876| CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG 1877| EXPORTING 1878| * WINDOW_TITLE 1879| DEFAULT_EXTENSION = LV_DEFAULT_EXTENSION 1880| DEFAULT_FILE_NAME = LV_DEFAULT_FILE_NAME 1881| * WITH_ENCODING = ABAP_TRUE 1882| FILE_FILTER = LV_FILE_FILTER 1883| INITIAL_DIRECTORY = LV_INITIAL_DIRECTORY 1884| CHANGING 1885| FILENAME = LV_FILENAME 1886| PATH = LV_PATH 1887| FULLPATH = LV_FULLPATH 1888| USER_ACTION = LV_USER_ACTION 1889| EXCEPTIONS 1890| CNTL_ERROR = 2 1891| ERROR_NO_GUI = 3 1892| NOT_SUPPORTED_BY_GUI = 4 1893| OTHERS = 5. 1894| IF SY-SUBRC <> 0. 1895| MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO 1896| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1897| EXIT. 1898| ELSE. 1899| IF LV_USER_ACTION NE CL_GUI_FRONTEND_SERVICES=>ACTION_OK. 1900| EXIT. 1901| ENDIF. 1902| 1903| P_FILENAME = LV_FILENAME. ``` - **EN**: Prepare extension, default name, file filter and initial directory, call CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG and return the chosen filename when the user confirms. - 호출(파서): CL_GUI_FRONTEND_SERVICES=>FILETYPE_ALL, CL_GUI_FRONTEND_SERVICES=>FILETYPE_EXCEL, CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG, CL_GUI_FRONTEND_SERVICES=>ACTION_OK - SAP 객체: CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG - 업무 키워드: 파일 저장 대화상자, 다운로드 경로 선택 - English: File Save Dialog, Frontend Services - 정의부(복사 시 함께 필요): [`LV_DEFAULT_EXTENSION`](#decl-zco_common-1858-lv_default_extension), [`LV_DEFAULT_FILE_NAME`](#decl-zco_common-1861-lv_default_file_name), [`LV_INITIAL_DIRECTORY`](#decl-zco_common-1860-lv_initial_directory), [`LV_FILE_FILTER`](#decl-zco_common-1859-lv_file_filter), [`LV_FILENAME`](#decl-zco_common-1855-lv_filename), [`LV_PATH`](#decl-zco_common-1856-lv_path), [`LV_FULLPATH`](#decl-zco_common-1857-lv_fullpath), [`LV_USER_ACTION`](#decl-zco_common-1864-lv_user_action) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1868-L1903` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#OPEN_SAVE_FILE_SEL#C1` ### FORM ALSMEX_TAB_TO_ITAB — `ZCO_COMMON` L1917-L1945 (29줄) *ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다.* > 이 unit 의 조각 1개가 20/29줄(69%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [calculation] 엑셀 셀 데이터(ROW/COL/VALUE)를 순회하며 열 번호에 해당하는 구조체 컴포넌트에 값을 넣고(숫자는 콤마 제거), 행이 바뀔 때마다 대상 내부테이블에 APPEND한다. ```abap 1924| ASSIGN : (PT_EXCEL_TABLE) TO . 1925| ASSIGN : (PS_EXCEL_STRUC) TO . 1926| 1927| LOOP AT PT_INTERN. 1928| AT NEW ROW. 1929| CLEAR : . 1930| ENDAT. 1931| 1932| ASSIGN COMPONENT PT_INTERN-COL OF STRUCTURE TO . 1933| 1934| IF PT_INTERN-VALUE CO '0123456789,.- '. 1935| REPLACE ALL OCCURRENCES OF ',' IN PT_INTERN-VALUE WITH ''. 1936| ENDIF. 1937| 1938| MOVE PT_INTERN-VALUE TO . 1939| 1940| AT END OF ROW. 1941| APPEND TO . 1942| ENDAT. 1943| ENDLOOP. ``` - **EN**: Iterate Excel cell lines, move each value into the structure component matching the column (removing thousand separators from numerics) and append one line per row to the dynamically assigned target table. - SAP 객체: ALSMEX_TABLINE, ALSM_EXCEL_TO_INTERNAL_TABLE - 업무 키워드: 엑셀 셀 매핑, 동적 내부테이블, 콤마 제거 - English: Excel Upload, ALSMEX_TABLINE, Dynamic Assign - 정의부(복사 시 함께 필요): [``](#decl-zco_common-1921--itab-), [``](#decl-zco_common-1922--iline-), [``](#decl-zco_common-1920--field-) - 위치: `abap://ZCOC0120/ZCO_COMMON#L1924-L1943` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#ALSMEX_TAB_TO_ITAB#C1` ### FORM START_INTERFACE_BDC — `ZCO_COMMON` L1953-L1973 (21줄) *FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다.* > 이 unit 의 조각 1개가 13/21줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] POSTING_INTERFACE_START를 I_FUNCTION='C'(Call Transaction), 지정 모드(P_MODE), 동기 업데이트('S')로 호출해 FI 전표 전기 인터페이스를 연다. ```abap 1960| CALL FUNCTION 'POSTING_INTERFACE_START' 1961| EXPORTING 1962| I_FUNCTION = 'C' " Using Call Transaction 1963| I_KEEP = 'Y' 1964| I_MODE = P_MODE 1965| I_UPDATE = 'S' 1966| EXCEPTIONS 1967| CLIENT_INCORRECT = 1 1968| FUNCTION_INVALID = 2 1969| GROUP_NAME_MISSING = 3 1970| MODE_INVALID = 4 1971| UPDATE_INVALID = 5 1972| OTHERS = 6. ``` - **EN**: Open the FI posting interface with POSTING_INTERFACE_START in call-transaction mode, given display mode and synchronous update. - 호출(파서): POSTING_INTERFACE_START - SAP 객체: POSTING_INTERFACE_START - 업무 키워드: 전기 인터페이스 시작, Call Transaction, 전표 전기 - English: Posting Interface, Call Transaction, FI Document - 위치: `abap://ZCOC0120/ZCO_COMMON#L1960-L1972` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#START_INTERFACE_BDC#C1` ### FORM END_INTERFACE_BDC — `ZCO_COMMON` L1980-L1990 (11줄) *POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다.* > 이 unit 의 조각 1개가 3/11줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] FI Posting Interface 처리를 POSTING_INTERFACE_END(I_BDCIMMED='X')로 종료해 BDC 세션을 즉시 처리한다. ```abap 1981| CALL FUNCTION 'POSTING_INTERFACE_END' 1982| EXPORTING 1983| I_BDCIMMED = 'X'. ``` - **EN**: Close the FI posting interface session via POSTING_INTERFACE_END with immediate BDC processing. - 호출(파서): POSTING_INTERFACE_END - SAP 객체: POSTING_INTERFACE_END - 업무 키워드: 전기 인터페이스 종료, BDC 세션 - English: Posting Interface, BDC Session - 위치: `abap://ZCOC0120/ZCO_COMMON#L1981-L1983` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#END_INTERFACE_BDC#C1` ### FORM FILL_FIELD — `ZCO_COMMON` L2000-L2023 (24줄) *Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다.* > 이 unit 의 조각 1개가 18/24줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [interface] 값이 있는 경우에만 FTPOST에 STYPE/COUNT와 필드명을 설정하고, 금액 필드(FCURR_X='X')는 통화(GV_FTPOST_WAERS) 기준으로 WRITE 편집 후 FTPOST-FVAL에 넣어 Posting Interface 전표 필드로 APPEND한다. ```abap 2004| CHECK FVAL NE SPACE. 2005| 2006| FTPOST-FNAM = FNAM. 2007| FTPOST-STYPE = GV_FTPOST_TYPE. 2008| FTPOST-COUNT = GV_FTPOST_CNT. 2009| 2010| " 금액 필드일 경우. 2011| IF FCURR_X = 'X'. 2012| WRITE FVAL TO LV_CURR CURRENCY 2013| GV_FTPOST_WAERS LEFT-JUSTIFIED. 2014| CONDENSE LV_CURR NO-GAPS. 2015| WRITE LV_CURR TO FTPOST-FVAL. 2016| ELSE. 2017| WRITE FVAL TO FTPOST-FVAL. 2018| ENDIF. 2019| 2020| APPEND FTPOST. 2021| CLEAR FTPOST. ``` - **EN**: Populate one FTPOST entry for the FI posting interface: set field name, segment type and count, format amount fields with currency and append. - SAP 객체: FTPOST, POSTING_INTERFACE_DOCUMENT - 업무 키워드: 전기 인터페이스, FTPOST 필드 구성, 금액 통화 편집 - English: Posting Interface, FTPOST, Currency Format - 정의부(복사 시 함께 필요): [`FTPOST`](#decl-zco_common-71-ftpost), [`GV_FTPOST_TYPE`](#decl-zco_common-74-gv_ftpost_type), [`GV_FTPOST_CNT`](#decl-zco_common-75-gv_ftpost_cnt), [`LV_CURR`](#decl-zco_common-2002-lv_curr), [`GV_FTPOST_WAERS`](#decl-zco_common-76-gv_ftpost_waers) - 위치: `abap://ZCOC0120/ZCO_COMMON#L2004-L2021` · confidence 0.85 · `ZCOC0120#ZCO_COMMON#FORM#FILL_FIELD#C1` ### FORM BUILD_MESSGE_IF — `ZCO_COMMON` L2032-L2047 (16줄) *인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다.* > 이 unit 의 조각 1개가 10/16줄(62%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 메시지 클래스·번호·변수 1~4를 MESSAGE_TEXT_BUILD에 넘겨 사용자에게 보여줄 메시지 문장을 생성한다. ```abap 2037| CALL FUNCTION 'MESSAGE_TEXT_BUILD' 2038| EXPORTING 2039| MSGID = PS_MESSAGE-MSGID 2040| MSGNR = PS_MESSAGE-MSGNO 2041| MSGV1 = PS_MESSAGE-MSGV1 2042| MSGV2 = PS_MESSAGE-MSGV2 2043| MSGV3 = PS_MESSAGE-MSGV3 2044| MSGV4 = PS_MESSAGE-MSGV4 2045| IMPORTING 2046| MESSAGE_TEXT_OUTPUT = PV_TEXT. ``` - **EN**: Build the readable message text from message ID, number and variables using MESSAGE_TEXT_BUILD. - 호출(파서): MESSAGE_TEXT_BUILD - SAP 객체: MESSAGE_TEXT_BUILD, GT_IF_MSG - 업무 키워드: 메시지 텍스트 생성, 인터페이스 메시지 - English: Message Text, Message Class - 위치: `abap://ZCOC0120/ZCO_COMMON#L2037-L2046` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#BUILD_MESSGE_IF#C1` ### FORM GET_POST_PERIOD — `ZCO_COMMON` L2057-L2084 (28줄) *회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다.* > 이 unit 의 조각 1개가 21/28줄(75%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 회사코드(BUKRS)와 전기일(BUDAT)로 FI_PERIOD_DETERMINE을 호출해 회계연도(GJAHR)와 전기기간(MONAT)을 구하고, 예외 발생 시 달력 연도·월을 대신 사용한다. ```abap 2062| CALL FUNCTION 'FI_PERIOD_DETERMINE' 2063| EXPORTING 2064| I_BUKRS = PV_BUKRS 2065| I_BUDAT = PV_DATE 2066| IMPORTING 2067| E_GJAHR = P_LFGJA 2068| E_MONAT = P_LFMON 2069| EXCEPTIONS 2070| FISCAL_YEAR = 1 2071| PERIOD = 2 2072| PERIOD_VERSION = 3 2073| POSTING_PERIOD = 4 2074| SPECIAL_PERIOD = 5 2075| VERSION = 6 2076| POSTING_DATE = 7 2077| OTHERS = 8. 2078| 2079| IF SY-SUBRC NE 0. 2080| P_LFGJA = PV_DATE(4). 2081| P_LFMON = PV_DATE+4(2). 2082| ENDIF. ``` - **EN**: Determine fiscal year and posting period from company code and posting date via FI_PERIOD_DETERMINE, falling back to calendar year/month on exception. - 호출(파서): FI_PERIOD_DETERMINE - SAP 객체: FI_PERIOD_DETERMINE - 업무 키워드: 회계연도 결정, 전기기간, 회사코드, 전기일 - English: Fiscal Year, Posting Period, Company Code, Posting Date - 위치: `abap://ZCOC0120/ZCO_COMMON#L2062-L2082` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_POST_PERIOD#C1` ### FORM CONV_VIEW_WAERS — `ZCO_COMMON` L2126-L2134 (9줄) *CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다.* > 이 unit 의 조각 1개가 6/9줄(67%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 통화 코드(P_WAERS)에 따라 내부 금액을 CURRENCY_AMOUNT_SAP_TO_IDOC로 IDoc/BAPI 외부 금액 형식으로 변환해 BAPI 금액 필드에 넣을 값을 만든다. ```abap 2128| CALL FUNCTION 'CURRENCY_AMOUNT_SAP_TO_IDOC' 2129| EXPORTING 2130| CURRENCY = P_WAERS 2131| SAP_AMOUNT = P_VALUE 2132| IMPORTING 2133| IDOC_AMOUNT = P_DOC_VALUE. ``` - **EN**: Convert an SAP internal amount to IDoc/BAPI external amount format for the given currency using CURRENCY_AMOUNT_SAP_TO_IDOC. - 호출(파서): CURRENCY_AMOUNT_SAP_TO_IDOC - SAP 객체: CURRENCY_AMOUNT_SAP_TO_IDOC - 업무 키워드: 통화 금액 변환, 외부 형식, BAPI 금액 - English: Currency Conversion, IDoc Amount, BAPI Amount - 위치: `abap://ZCOC0120/ZCO_COMMON#L2128-L2133` · confidence 0.9 · `ZCOC0120#ZCO_COMMON#FORM#CONV_VIEW_WAERS#C1` ### FORM GET_VERSN_TEXT — `ZCO_COMMON` L2168-L2177 (10줄) *TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다.* > 이 unit 의 조각 1개가 6/10줄(60%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [sql_select] TKT09에서 관리회계영역(KOKRS)·버전(VERSN)·언어(SY-LANGU)로 계획 버전 텍스트를 조회해 선택화면 표시용으로 반환한다. ```abap 2171| SELECT SINGLE TXT 2172| INTO P_VERSN_TXT 2173| FROM TKT09 2174| WHERE KOKRS = P_KOKRS 2175| AND VERSN = P_VERSN 2176| AND LANGU = SY-LANGU. ``` - **EN**: Read the CO plan version description from TKT09 for the controlling area, version and logon language. - 테이블(파서): read [TKT09](/tables/TKT09.md) / write - - SAP 객체: TKT09 - 업무 키워드: 계획 버전 텍스트, 관리회계영역 - English: Plan Version, TKT09, Controlling Area - 정의부(복사 시 함께 필요): [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) - 위치: `abap://ZCOC0120/ZCO_COMMON#L2171-L2176` · confidence 0.95 · `ZCOC0120#ZCO_COMMON#FORM#GET_VERSN_TEXT#C1` ### FORM DATA_CHANGED_MODIFY — `ZCOC0120F01` L1414-L1492 (79줄) *ALV에서 정산금액(BETRR)·정산%(PROZS) 셀이 수정되면 GT_DATA에 반영하고 즉시 ZCOT0040 을 UPDATE 하며 변경 플래그(GV_CHANGED)를 설정한다.* > 이 unit 의 조각 2개가 56/79줄(71%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [other] 변경된 셀(MT_GOOD_CELLS)마다 해당 GT_DATA 행을 읽고 GET_CELL_VALUE 로 새 값을 필드심볼에 받아 MODIFY_CELL 로 ALV 셀 값을 반영한다. ```abap 1434| LOOP AT P_DATA_CHANGED->MT_GOOD_CELLS INTO LS_LVC_MODI. 1435| LV_IDX = LS_LVC_MODI-ROW_ID. 1436| READ TABLE GT_DATA INTO LS_DATA INDEX LV_IDX. 1437| ASSIGN COMPONENT LS_LVC_MODI-FIELDNAME 1438| OF STRUCTURE GT_DATA TO . 1439| Z_GET_CELL_VALUE : LS_LVC_MODI-FIELDNAME. 1440| CALL METHOD P_DATA_CHANGED->MODIFY_CELL 1441| EXPORTING 1442| I_ROW_ID = LS_LVC_MODI-ROW_ID 1443| I_FIELDNAME = LS_LVC_MODI-FIELDNAME 1444| I_VALUE = LS_LVC_MODI-VALUE. 1445| ``` - **EN**: Reads each changed ALV cell via CL_ALV_CHANGED_DATA_PROTOCOL, fetches the new value and applies it to the grid cell. - 호출(파서): P_DATA_CHANGED->MT_GOOD_CELLS, P_DATA_CHANGED->MODIFY_CELL - SAP 객체: CL_ALV_CHANGED_DATA_PROTOCOL - 업무 키워드: ALV 셀 변경, 변경 셀 읽기, 값 반영 - English: ALV Data Changed, Cell Value, Editable Grid - 정의부(복사 시 함께 필요): [`LS_LVC_MODI`](#decl-zcoc0120f01-1416-ls_lvc_modi), [`LV_IDX`](#decl-zcoc0120f01-1419-lv_idx), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LS_DATA`](#decl-zcoc0120f01-1420-ls_data), [``](#decl-zcoc0120f01-1421--fs_data-) - 선언을 못 찾은 이름: Z_GET_CELL_VALUE (수집 안 된 인클루드·함수 인터페이스일 수 있다) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1434-L1445` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#DATA_CHANGED_MODIFY#C1` #### [db_write] 수정 필드가 BETRR(정산금액) 또는 PROZS(정산%)이면 관리회계영역·회사코드·연도·기간·오더·자산번호 키로 ZCOT0040 을 UPDATE 하고 성공 시 COMMIT, 실패 시 ROLLBACK 하며 재검증 필요 플래그 GV_CHANGED 를 세운다. ```abap 1446| IF SY-SUBRC EQ 0. 1447| CASE LS_LVC_MODI-FIELDNAME. 1448| WHEN 'BETRR'. 1449| LS_DATA-BETRR = . 1450| 1451| UPDATE ZCOT0040 SET 1452| BETRR = LS_DATA-BETRR 1453| WHERE KOKRS = P_KOKRS 1454| AND BUKRS = P_BUKRS 1455| AND GJAHR = P_GJAHR 1456| AND PERBL = P_PERBL 1457| AND AUFNR = LS_DATA-AUFNR 1458| AND ANLN1 = LS_DATA-ANLN1. 1459| 1460| IF SY-SUBRC EQ 0. 1461| COMMIT WORK. 1462| ELSE. 1463| ROLLBACK WORK. 1464| ENDIF. 1465| 1466| GV_CHANGED = 'X'. 1467| 1468| WHEN 'PROZS'. 1469| 1470| LS_DATA-PROZS = . 1471| 1472| UPDATE ZCOT0040 SET 1473| PROZS = LS_DATA-PROZS 1474| WHERE KOKRS = P_KOKRS 1475| AND BUKRS = P_BUKRS 1476| AND GJAHR = P_GJAHR 1477| AND PERBL = P_PERBL 1478| AND AUFNR = LS_DATA-AUFNR 1479| AND ANLN1 = LS_DATA-ANLN1. 1480| 1481| IF SY-SUBRC EQ 0. 1482| COMMIT WORK. 1483| ELSE. 1484| ROLLBACK WORK. 1485| ENDIF. 1486| 1487| GV_CHANGED = 'X'. 1488| ENDCASE. 1489| ENDIF. ``` - **EN**: Updates settlement amount BETRR or percentage PROZS in ZCOT0040 for the changed row keyed by controlling area, company code, year, period, order and asset, with commit/rollback and sets the changed flag. - 테이블(파서): read - / write [ZCOT0040](/tables/ZCOT0040.md) - SAP 객체: ZCOT0040 - 업무 키워드: 정산금액 수정, 정산 비율 수정, DB 즉시 갱신, 커밋/롤백, 변경 플래그 - English: Settlement Amount, Settlement Percentage, Database Update, Commit Work - 정의부(복사 시 함께 필요): [`LS_LVC_MODI`](#decl-zcoc0120f01-1416-ls_lvc_modi), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LS_DATA`](#decl-zcoc0120f01-1420-ls_data), [``](#decl-zcoc0120f01-1421--fs_data-), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr), [`P_PERBL`](#decl-zcoc0120top-157-p_perbl), [`GV_CHANGED`](#decl-zcoc0120top-26-gv_changed) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1446-L1489` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#DATA_CHANGED_MODIFY#C2` ### FORM CALL_KOB1 — `ZCOC0120F01` L1622-L1648 (27줄) *선택한 행의 오더번호로 KOB1(오더 실적 라인아이템) 조회 프로그램 RKAEP000 을 전체 전기일 기간으로 호출한다.* > 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 선택 행의 오더번호(AUFNR)를 범위에 담고 잔액 완전정산이 아니므로 전기일 범위를 2000.01.01~9999.12.31 로 두어 관리회계영역 파라미터(CAC) 설정 후 SUBMIT RKAEP000(KOB1 실적 라인아이템)을 호출한다. ```abap 1626| CHECK P_ROW CO '0123456789 '. 1627| 1628| READ TABLE GT_DATA INDEX P_ROW. 1629| 1630| CHECK SY-SUBRC EQ 0. 1631| 1632| ADD_RANGE_EQ : LR_AUFNR GT_DATA-AUFNR. 1633| " 잔액을 완전정산 하지 않으므로 전체 기간을 조회해야 한다. 1634| CLEAR : LR_BUDAT. 1635| LR_BUDAT-LOW = '20000101'. 1636| LR_BUDAT-HIGH = '99991231'. 1637| LR_BUDAT-SIGN = 'I'. 1638| LR_BUDAT-OPTION = 'BT'. 1639| APPEND LR_BUDAT. 1640| 1641| SET PARAMETER ID 'CAC' FIELD P_KOKRS. 1642| 1643| SUBMIT RKAEP000 WITH AUFNR IN LR_AUFNR 1644| WITH R_BUDAT IN LR_BUDAT 1645| WITH P_TCODE EQ 'KOB1' 1646| AND RETURN. ``` - **EN**: Submits report RKAEP000 as transaction KOB1 for the selected order over the full posting date range to display actual cost line items. - 호출(파서): RKAEP000 - SAP 객체: RKAEP000, KOB1, AUFK, COBK - 업무 키워드: 실적 라인아이템 조회, 오더 실적, 전기일 전체 기간, 관리회계영역 - English: Actual Line Items, Internal Order, Posting Date, Controlling Area - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`ADD_RANGE_EQ`](#decl-zco_common-123-add_range_eq), [`LR_AUFNR`](#decl-zcoc0120f01-1623-lr_aufnr), [`LR_BUDAT`](#decl-zcoc0120f01-1624-lr_budat), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) - 선언을 못 찾은 이름: R_BUDAT, P_TCODE (수집 안 된 인클루드·함수 인터페이스일 수 있다) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1626-L1646` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#CALL_KOB1#C1` ### FORM EXECUTE_BDC — `ZCOC0120F01` L602-L630 (29줄) *정산규칙 생성 버튼(&RUN) 처리: 중복 실행·미검증 변경 여부를 점검하고 확인 팝업 후 CREATE_SETTLEMENT_RULE(KO02 BDC)과 MODIFY_DB(ZCOT0040 갱신)를 수행한다.* > 이 unit 의 조각 1개가 23/29줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] 이미 처리(GV_ALREADY_POST)했거나 변경 후 유효성 점검이 안 된 경우(GV_CHANGED) 오류로 중단하고, 확인 팝업 승인 시 BDC 옵션 설정 후 KO02 정산규칙 BDC 실행과 ZCOT0040 결과 갱신을 수행한다. ```abap 607| IF GV_ALREADY_POST = 'X'. 608| MESSAGE S000 DISPLAY LIKE 'E' 609| WITH '이미 처리한 내역입니다.'(F15). 610| EXIT. 611| ENDIF. 612| 613| IF GV_CHANGED = 'X'. 614| MESSAGE S000 DISPLAY LIKE 'E' 615| WITH '변경된 내역이 있습니다. 유효성 점검을 먼저 해주십시오.'(F16). 616| EXIT. 617| ENDIF. 618| 619| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' 620| '정산 규칙을 생성하시겠습니까?'(F17) '' 621| CHANGING L_ANSWER. 622| IF L_ANSWER <> 'J'. 623| EXIT. 624| ENDIF. 625| 626| GV_ALREADY_POST = 'X'. 627| PERFORM BDC_OPTION USING P_DSMOD. 628| PERFORM CREATE_SETTLEMENT_RULE. 629| PERFORM MODIFY_DB. ``` - **EN**: Guards against duplicate posting and unvalidated changes, asks confirmation, then runs the KO02 settlement rule BDC and updates ZCOT0040. - 호출(파서): POPUP_TO_CONFIRM_02, BDC_OPTION, CREATE_SETTLEMENT_RULE, MODIFY_DB - SAP 객체: KO02, ZCOT0040 - 업무 키워드: 중복 처리 방지, 유효성 점검 선행, 확인 팝업, 정산규칙 생성 - English: Confirmation Popup, Settlement Rule, Batch Input, Validation - 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0120top-23-gv_already_post), [`GV_CHANGED`](#decl-zcoc0120top-26-gv_changed), [`L_ANSWER`](#decl-zcoc0120f01-603-l_answer), [`P_DSMOD`](#decl-zcoc0120top-189-p_dsmod) - 위치: `abap://ZCOC0120/ZCOC0120F01#L607-L629` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#EXECUTE_BDC#C1` ### FORM CREATE_SETTLEMENT_RULE — `ZCOC0120F01` L1087-L1202 (116줄) *오더별로 KO02 BDC(SAPLKOBS 정산규칙 화면)를 구성·실행하여 자산별 정산규칙(금액 또는 %)을 생성하고 결과를 GT_DATA에 반영한다.* > 이 unit 의 조각 4개가 101/116줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [other] BDC 옵션(P_DSMOD)을 설정하고 GT_DATA를 오더번호(AUFNR) 단위로 중복 제거한 헤더 목록 LT_HEADER를 만들며 관리회계영역 파라미터 'CAC'를 설정한다. ```abap 1096| SORT GT_DATA BY OBJNR. 1097| PERFORM BDC_OPTION USING P_DSMOD. 1098| 1099| LT_HEADER[] = GT_DATA[]. 1100| SORT LT_HEADER BY AUFNR. 1101| DELETE ADJACENT DUPLICATES FROM LT_HEADER 1102| COMPARING AUFNR. 1103| 1104| SET PARAMETER ID 'CAC' FIELD P_KOKRS. ``` - **EN**: Sets BDC options, builds a distinct order-level header list from GT_DATA and sets the controlling area parameter ID CAC for KO02. - 호출(파서): BDC_OPTION - SAP 객체: KO02 - 업무 키워드: 오더 단위 헤더, 중복 제거, BDC 옵션, 관리회계영역 - English: Internal Order, Controlling Area, BDC Option - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`P_DSMOD`](#decl-zcoc0120top-189-p_dsmod), [`LT_HEADER`](#decl-zcoc0120f01-1089-lt_header), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1096-L1104` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_SETTLEMENT_RULE#C1` #### [interface] 오더마다 KO02 화면(SAPMKAUF 0110/0600 → 정산규칙 SAPLKOBS 0130/0100 → SAPLKACB 0002)의 BDC 데이터를 구성해, 자산별로 COBL-ANLN1 자산번호와 COBRB 유효 기간/연도(P_PERBL/P_GJAHR), 정산%(PROZS) 또는 정산금액(BETRR, 통화 포맷 변환)을 입력하고 저장(=SICH)한다. ```abap 1106| LOOP AT LT_HEADER WHERE ANLN1 IS NOT INITIAL. 1107| 1108| CLEAR : GT_BDCDATA, GT_BDCDATA[]. 1109| CLEAR : GT_MESSTAB, GT_MESSTAB[]. 1110| 1111| PERFORM DYNPRO TABLES GT_BDCDATA USING: 1112| 'X' 'SAPMKAUF' '0110', 1113| ' ' 'BDC_OKCODE' '/00', 1114| '' 'COAS-AUFNR' LT_HEADER-AUFNR, 1115| 'X' 'SAPMKAUF' '0600', 1116| ' ' 'BDC_OKCODE' '=ABVO'. 1117| 1118| LOOP AT GT_DATA WHERE OBJNR = LT_HEADER-OBJNR. 1119| PERFORM DYNPRO TABLES GT_BDCDATA USING: 1120| 1121| 'X' 'SAPLKOBS' '0130', 1122| ' ' 'BDC_OKCODE' '=NEUR', 1123| 'X' 'SAPLKOBS' '0100', 1124| ' ' 'BDC_OKCODE' '=COBL_MORE', 1125| 'X' 'SAPLKACB' '0002', 1126| ' ' 'BDC_OKCODE' '=ENTE', 1127| ' ' 'COBL-ANLN1' GT_DATA-ANLN1, 1128| 'X' 'SAPLKOBS' '0100', 1129| ' ' 'BDC_OKCODE' '/00', 1130| ' ' 'COBRB-GABPE' P_PERBL, 1131| ' ' 'COBRB-GABJA' P_GJAHR, 1132| ' ' 'COBRB-GBISP' P_PERBL, 1133| ' ' 'COBRB-GBISJ' P_GJAHR. 1134| 1135| IF GT_DATA-PROZS IS NOT INITIAL. 1136| PERFORM DYNPRO TABLES GT_BDCDATA USING: 1137| ' ' 'COBRB-AQZIF' '', 1138| ' ' 'COBRB-BETRR' '', 1139| ' ' 'COBRB-PROZS' GT_DATA-PROZS. 1140| ENDIF. 1141| 1142| IF GT_DATA-BETRR IS NOT INITIAL. 1143| CLEAR : LV_C_BETRR. 1144| WRITE GT_DATA-BETRR TO LV_C_BETRR 1145| CURRENCY GV_WAERS NO-GAP LEFT-JUSTIFIED. 1146| 1147| PERFORM DYNPRO TABLES GT_BDCDATA USING: 1148| ' ' 'COBRB-AQZIF' '', 1149| ' ' 'COBRB-BETRR' LV_C_BETRR, 1150| ' ' 'COBRB-PROZS' ''. 1151| ENDIF. 1152| 1153| PERFORM DYNPRO TABLES GT_BDCDATA USING: 1154| 'X' 'SAPLKOBS' '0100', 1155| ' ' 'BDC_OKCODE' '=BACK'. 1156| ENDLOOP. 1157| 1158| PERFORM DYNPRO TABLES GT_BDCDATA USING: 1159| 'X' 'SAPLKOBS' '0130', 1160| ' ' 'BDC_OKCODE' '=BACK', 1161| 'X' 'SAPMKAUF' '0600', 1162| ' ' 'BDC_OKCODE' '=SICH'. ``` - **EN**: Builds the KO02 batch-input screen sequence (SAPMKAUF, SAPLKOBS, SAPLKACB) filling settlement receiver asset COBL-ANLN1, COBRB validity period/year and either percentage PROZS or amount BETRR for each asset of the order. - 호출(파서): DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO, DYNPRO - SAP 객체: KO02, SAPMKAUF, SAPLKOBS, SAPLKACB, COBRB, COBL - 업무 키워드: 정산규칙 생성, BDC 화면 구성, 정산 비율, 정산 금액, 유효 기간, 본자산 수신자 - English: Settlement Rule, Batch Input, Distribution Rule, Settlement Receiver, Fixed Asset - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_HEADER`](#decl-zcoc0120f01-1089-lt_header), [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`P_PERBL`](#decl-zcoc0120top-157-p_perbl), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr), [`LV_C_BETRR`](#decl-zcoc0120f01-1091-lv_c_betrr), [`GV_WAERS`](#decl-zco_common-52-gv_waers) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1106-L1162` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_SETTLEMENT_RULE#C2` #### [interface] CALL TRANSACTION 'KO02' 로 정산규칙 BDC를 실행하고 GT_MESSTAB 메시지를 행 메시지로 기록하며 SY-SUBRC 에 따라 정산 성공(SETTL_SUCCESS='S', 녹색)/실패('E', 적색) 상태를 LT_HEADER에 설정한다. ```abap 1164| CALL TRANSACTION 'KO02' 1165| USING GT_BDCDATA[] 1166| OPTIONS FROM GS_BDC_OPTION 1167| MESSAGES INTO GT_MESSTAB[]. 1168| 1169| LV_BDC_SUBRC = SY-SUBRC. 1170| 1171| LOOP AT GT_MESSTAB. 1172| PERFORM BUILD_MESSAGE USING GT_MESSTAB 1173| CHANGING LT_HEADER-MESSAGE. 1174| PERFORM ADD_DATA_MESSAGE USING 1175| GT_MESSTAB-MSGTYP '' 1176| LT_HEADER-MESSAGE. 1177| ENDLOOP. 1178| 1179| IF LV_BDC_SUBRC EQ 0. 1180| * 성공 메세지 처리 1181| LT_HEADER-STATUS = GC_STATUS_GREEN. 1182| LT_HEADER-SETTL_SUCCESS = 'S'. 1183| LT_HEADER-MESSAGE = '정산규칙을 정상적으로 반영했습니다'(F23). 1184| ELSE. 1185| LT_HEADER-STATUS = GC_STATUS_RED. 1186| LT_HEADER-SETTL_SUCCESS = 'E'. 1187| * 실패 메세지 처리 1188| ENDIF. 1189| 1190| MODIFY LT_HEADER. ``` - **EN**: Executes CALL TRANSACTION KO02 with the BDC data, collects BDCMSGCOLL messages and sets settlement success or error status on the order header. - 호출(파서): KO02, BUILD_MESSAGE, ADD_DATA_MESSAGE - SAP 객체: KO02, BDCMSGCOLL - 업무 키워드: BDC 실행, 정산규칙 반영, 결과 메시지, 성공/실패 상태 - English: Call Transaction, BDC Messages, Settlement Rule, Status - 정의부(복사 시 함께 필요): [`GT_BDCDATA`](#decl-zco_common-65-gt_bdcdata), [`GS_BDC_OPTION`](#decl-zco_common-64-gs_bdc_option), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`LV_BDC_SUBRC`](#decl-zcoc0120f01-1090-lv_bdc_subrc), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_HEADER`](#decl-zcoc0120f01-1089-lt_header), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1164-L1190` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_SETTLEMENT_RULE#C3` #### [other] 오더 단위 BDC 결과(상태·메시지·정산 성공 여부)를 같은 오더의 모든 자산 행 GT_DATA에 전파하고 ALV 새로고침 플래그를 설정한다. ```abap 1194| LOOP AT LT_HEADER WHERE ANLN1 IS NOT INITIAL.. 1195| MODIFY GT_DATA FROM LT_HEADER 1196| TRANSPORTING STATUS MESSAGE MSG_LIST SETTL_SUCCESS 1197| WHERE ANLN1 IS NOT INITIAL 1198| AND AUFNR EQ LT_HEADER-AUFNR. 1199| ENDLOOP. 1200| 1201| GV_REFRESH = 'X'. ``` - **EN**: Propagates the order-level BDC result status and messages to all asset rows of that order in GT_DATA and sets the refresh flag. - 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) - 업무 키워드: 결과 전파, 상태 반영, 오더별 결과 - English: Status Update, Internal Order - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_HEADER`](#decl-zcoc0120f01-1089-lt_header), [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1194-L1201` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_SETTLEMENT_RULE#C4` ### FORM MODIFY_DB — `ZCOC0120F01` L1501-L1527 (27줄) *정산규칙 BDC 처리 결과(정산금액·정산%·성공 여부)를 기존 ZCOT0040 저장 내역에 반영하여 DB를 갱신한다.* > 이 unit 의 조각 1개가 21/27줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [db_write] GT_DATA 각 행을 오더번호(AUFNR)·자산번호(ANLN1) 키로 GT_ZCOT0040 에서 찾아 정산금액(BETRR)·정산%(PROZS)·정산 성공 여부(SETTL_SUCCESS)를 갱신한 뒤 MODIFY ZCOT0040 으로 DB에 저장한다. ```abap 1505| LOOP AT GT_DATA. 1506| READ TABLE GT_ZCOT0040 WITH KEY 1507| AUFNR = GT_DATA-AUFNR 1508| ANLN1 = GT_DATA-ANLN1 1509| BINARY SEARCH. 1510| 1511| IF SY-SUBRC EQ 0. 1512| GT_ZCOT0040-BETRR = GT_DATA-BETRR. 1513| GT_ZCOT0040-PROZS = GT_DATA-PROZS. 1514| GT_ZCOT0040-SETTL_SUCCESS = GT_DATA-SETTL_SUCCESS. 1515| MOVE-CORRESPONDING GT_ZCOT0040 TO LT_ZCOT0040. 1516| APPEND LT_ZCOT0040. 1517| ENDIF. 1518| 1519| CLEAR : GT_ZCOT0040. 1520| 1521| ENDLOOP. 1522| 1523| IF LT_ZCOT0040[] IS NOT INITIAL. 1524| MODIFY ZCOT0040 FROM TABLE LT_ZCOT0040. 1525| ENDIF. ``` - **EN**: Updates settlement amount, percentage and settlement success flag on matching ZCOT0040 records by order and asset number and writes them back with MODIFY ZCOT0040. - 테이블(파서): read - / write [ZCOT0040](/tables/ZCOT0040.md) - SAP 객체: ZCOT0040 - 업무 키워드: 정산규칙 결과 반영, 정산금액, 정산 비율, DB 갱신, 오더번호, 자산번호 - English: Settlement Rule, Settlement Amount, Database Update, Internal Order - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`GT_ZCOT0040`](#decl-zcoc0120top-117-gt_zcot0040), [`LT_ZCOT0040`](#decl-zcoc0120f01-1503-lt_zcot0040) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1505-L1525` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#MODIFY_DB#C1` ### FORM SHOW_ERROR_LOG — `ZCOC0120F01` L654-L712 (59줄) *ALV에서 선택한 행(P_ROW)의 처리 메시지 목록(MSG_LIST)을 팝업 그리드로 표시한다.* > 이 unit 의 조각 2개가 45/59줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [output] 선택 행 번호가 숫자인지 확인하고 GT_DATA 해당 행을 읽어 팝업 필드카탈로그(상태/메시지 컬럼명)를 만들고 MSG_LIST 를 팝업용 LT_POPUP 으로 옮긴다. ```abap 666| CHECK P_ROW CO '0123456789 '. 667| 668| READ TABLE GT_DATA INDEX P_ROW. 669| 670| CHECK SY-SUBRC EQ 0. 671| 672| PERFORM GET_FCAT_LIKE_ITAB TABLES POPUP_FIELDCAT 673| USING 'GT_LOG_POP'. 674| 675| LOOP AT POPUP_FIELDCAT INTO LS_FIELDCAT. 676| 677| CASE LS_FIELDCAT-FIELDNAME. 678| * WHEN 'AUFNR'. 679| * LS_FIELDCAT-COLTEXT = '오더번호'(F18). 680| WHEN 'STATUS'. 681| LS_FIELDCAT-COLTEXT = '상태'(F25). 682| WHEN 'MESSAGE'. 683| LS_FIELDCAT-COLTEXT = '메시지'(F26). 684| ENDCASE. 685| 686| MODIFY POPUP_FIELDCAT FROM LS_FIELDCAT. 687| ENDLOOP. 688| 689| LOOP AT GT_DATA-MSG_LIST INTO GS_MSG_T_S. 690| * LT_POPUP-AUFNR = GT_DATA-AUFNR. 691| LT_POPUP-STATUS = GS_MSG_T_S-STATUS. 692| LT_POPUP-MESSAGE = GS_MSG_T_S-MESSAGE. 693| APPEND LT_POPUP. 694| CLEAR : LT_POPUP. 695| ENDLOOP. ``` - **EN**: Validates the selected row, reads the GT_DATA row and collects its message list into a popup table with status and message columns. - 호출(파서): GET_FCAT_LIKE_ITAB - SAP 객체: LVC_T_FCAT - 업무 키워드: 오류 로그, 메시지 목록, 선택 행, 팝업 데이터 구성 - English: Error Log, Message List, ALV Popup - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`POPUP_FIELDCAT`](#decl-zcoc0120f01-655-popup_fieldcat), [`LS_FIELDCAT`](#decl-zcoc0120f01-658-ls_fieldcat), [`GS_MSG_T_S`](#decl-zcoc0120top-92-gs_msg_t_s), [`GT_LOG_POP`](#decl-zcoc0120top-84-gt_log_pop), [`LT_POPUP`](#decl-zcoc0120f01-657-lt_popup) - 위치: `abap://ZCOC0120/ZCOC0120F01#L666-L695` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#SHOW_ERROR_LOG#C1` #### [output] 팝업 ALV 그리드 객체(W_POPUP_GRID)를 생성하고 SHOW_DATA 로 메시지 목록을 팝업 창에 출력한다. ```abap 697| PERFORM SET_ALV_LAYOUT_POP CHANGING LS_LAYO. 698| 699| CREATE OBJECT W_POPUP_GRID 700| EXPORTING 701| I_T_FIELDCATALOG = POPUP_FIELDCAT 702| I_S_LAYOUT = LS_LAYO 703| I_CAPTION = '' 704| I_LEFT = 100 705| I_TOP = 150 706| I_HEIGHT = 400 707| I_WIDTH = 900. 708| 709| CALL METHOD W_POPUP_GRID->SHOW_DATA 710| EXPORTING 711| I_T_DATA = LT_POPUP[]. ``` - **EN**: Instantiates the popup ALV grid and displays the collected message list via SHOW_DATA. - 호출(파서): SET_ALV_LAYOUT_POP, W_POPUP_GRID->SHOW_DATA - 업무 키워드: 팝업 ALV, 메시지 표시, 오류 로그 출력 - English: ALV Grid Popup, Message Display - 정의부(복사 시 함께 필요): [`LS_LAYO`](#decl-zcoc0120f01-656-ls_layo), [`W_POPUP_GRID`](#decl-zcoc0120top-90-w_popup_grid), [`POPUP_FIELDCAT`](#decl-zcoc0120f01-655-popup_fieldcat), [`GT_LOG_POP`](#decl-zcoc0120top-84-gt_log_pop), [`LT_POPUP`](#decl-zcoc0120f01-657-lt_popup) - 위치: `abap://ZCOC0120/ZCOC0120F01#L697-L711` · confidence 0.8 · `ZCOC0120#ZCOC0120F01#FORM#SHOW_ERROR_LOG#C2` ### FORM EXECUTE_BAPI — `ZCOC0120F01` L958-L983 (26줄) *자산 생성 버튼(&SAV) 처리: 중복 실행을 막고 확인 팝업 후 CREATE_FIXED_ASSET(본자산 생성)과 SAVE_DB(ZCOT0040 저장)를 수행한다.* > 이 unit 의 조각 1개가 19/26줄(73%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] 이미 생성된 경우(GV_ALREADY_POST) 오류 메시지 후 중단하고, POPUP_TO_CONFIRM_02 확인('J') 시 CREATE_FIXED_ASSET 로 본자산을 생성한 뒤 SAVE_DB 로 정산규칙 내역을 ZCOT0040에 저장하고 완료 메시지와 새로고침 플래그를 설정한다. ```abap 963| IF GV_ALREADY_POST = 'X'. 964| MESSAGE S000 DISPLAY LIKE 'E' WITH '이미 생성하였습니다.'(F21). 965| EXIT. 966| ENDIF. 967| 968| PERFORM POPUP_TO_CONFIRM_02 USING 'Confirm' 969| '자산 생성 및 정산 규칙 내역을 저장하시겠습니까??'(F20) '' 970| CHANGING L_ANSWER. 971| IF L_ANSWER <> 'J'. 972| EXIT. 973| ENDIF. 974| 975| GV_ALREADY_POST = 'X'. 976| 977| PERFORM CREATE_FIXED_ASSET. 978| PERFORM SAVE_DB. 979| MESSAGE S000 WITH '처리가 완료되었습니다.'(F22). 980| 981| GV_REFRESH = 'X'. ``` - **EN**: Prevents duplicate posting, asks user confirmation, then runs fixed asset creation (BAPI_FIXEDASSET_CREATE) and saves settlement rule data to ZCOT0040. - 호출(파서): POPUP_TO_CONFIRM_02, CREATE_FIXED_ASSET, SAVE_DB - SAP 객체: ZCOT0040, BAPI_FIXEDASSET_CREATE - 업무 키워드: 중복 실행 방지, 확인 팝업, 자산 생성, 정산규칙 저장 - English: Confirmation Popup, Fixed Asset, Settlement Rule, Duplicate Check - 정의부(복사 시 함께 필요): [`GV_ALREADY_POST`](#decl-zcoc0120top-23-gv_already_post), [`L_ANSWER`](#decl-zcoc0120f01-959-l_answer), [`GV_REFRESH`](#decl-zco_common-45-gv_refresh) - 위치: `abap://ZCOC0120/ZCOC0120F01#L963-L981` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#EXECUTE_BAPI#C1` ### FORM CREATE_FIXED_ASSET — `ZCOC0120F01` L992-L1078 (87줄) *업로드 구분 '1'(신규) 건에 대해 BAPI_FIXEDASSET_CREATE 로 본자산을 생성하고 결과(자산번호·상태·메시지)를 GT_DATA에 반영하며 기존 자산(구분 2)은 성공으로 표시한다.* > 이 unit 의 조각 3개가 71/87줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [fm_call] 신규 자산 건마다 자산클래스(ANLKL)·자산내역(TXT50)·수량·단위와 코스트센터(KOSTL)를 BAPI1022 구조에 채우고 BAPI_FIXEDASSET_CREATE 를 호출해 회사코드 P_BUKRS 에 본자산을 생성한다. ```abap 1004| LOOP AT GT_DATA WHERE GUBUN = '1'. 1005| CLEAR : GT_DATA-MSG_LIST, GT_DATA-MSG_LIST[]. 1006| CLEAR : LT_RETURNS, LT_RETURNS[]. 1007| CLEAR : LS_CREATED. 1008| CLEAR : LS_GENERAL, LS_TIMEDEPENDANT. 1009| 1010| LS_GENERAL-ASSETCLASS = GT_DATA-ANLKL. 1011| LS_GENERAL-DESCRIPT = GT_DATA-TXT50. 1012| LS_GENERAL-DESCRIPT2 = GT_DATA-TXT50. 1013| LS_GENERAL-QUANTITY = GT_DATA-MENGE. 1014| LS_GENERAL-BASE_UOM = GC_MEINS. 1015| LS_GENERALX-ASSETCLASS = 'X'. 1016| LS_GENERALX-DESCRIPT = 'X'. 1017| LS_GENERALX-DESCRIPT2 = 'X'. 1018| LS_GENERALX-QUANTITY = 'X'. 1019| LS_GENERALX-BASE_UOM = 'X'. 1020| 1021| LS_TIMEDEPENDANT-COSTCENTER = GT_DATA-KOSTL. 1022| LS_TIMEDEPENDANTX-COSTCENTER = 'X'. 1023| 1024| CALL FUNCTION 'BAPI_FIXEDASSET_CREATE' 1025| EXPORTING 1026| COMPANYCODE = P_BUKRS 1027| GENERALDATA = LS_GENERAL 1028| GENERALDATAX = LS_GENERALX 1029| TIMEDEPENDENTDATA = LS_TIMEDEPENDANT 1030| TIMEDEPENDENTDATAX = LS_TIMEDEPENDANTX 1031| IMPORTING 1032| ASSETCREATED = LS_CREATED 1033| RETURN = LT_RETURNS. ``` - **EN**: Fills general and time-dependent data (asset class, description, quantity, cost center) and calls BAPI_FIXEDASSET_CREATE to create a fixed asset master in the company code. - 호출(파서): BAPI_FIXEDASSET_CREATE - SAP 객체: BAPI_FIXEDASSET_CREATE, BAPI1022_FEGLG001, BAPI1022_FEGLG003 - 업무 키워드: 본자산 생성, 자산클래스, 코스트센터, 자산내역, 신규 자산 - English: Fixed Asset Create, Asset Class, Cost Center, Asset Master - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_RETURNS`](#decl-zcoc0120f01-993-lt_returns), [`LS_CREATED`](#decl-zcoc0120f01-994-ls_created), [`LS_GENERAL`](#decl-zcoc0120f01-995-ls_general), [`LS_TIMEDEPENDANT`](#decl-zcoc0120f01-997-ls_timedependant), [`GC_MEINS`](#decl-zcoc0120top-35-gc_meins), [`LS_GENERALX`](#decl-zcoc0120f01-996-ls_generalx), [`LS_TIMEDEPENDANTX`](#decl-zcoc0120f01-998-ls_timedependantx), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1004-L1033` · confidence 0.95 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_FIXED_ASSET#C1` #### [fm_call] BAPI RETURN 메시지를 행 메시지로 기록하고, 오류 없이 자산이 생성되면 BAPI_TRANSACTION_COMMIT 후 자산번호(ANLN1)·성공 상태(ASSET_SUCCESS='S')와 AA228 메시지를 저장하고, 실패 시 BAPI_TRANSACTION_ROLLBACK 및 오류 상태를 설정한다. ```abap 1035| LOOP AT LT_RETURNS. 1036| PERFORM BUILD_MESSAGE_BAPI USING LT_RETURNS 1037| CHANGING GT_DATA-MESSAGE. 1038| PERFORM ADD_DATA_MESSAGE USING 1039| GT_MESSTAB-MSGTYP '' 1040| GT_DATA-MESSAGE. 1041| ENDLOOP. 1042| 1043| IF LT_RETURNS[] IS INITIAL AND LS_CREATED IS NOT INITIAL. 1044| 1045| CALL FUNCTION 'BAPI_TRANSACTION_COMMIT' 1046| EXPORTING 1047| WAIT = 'X'. 1048| 1049| GT_DATA-ANLN1 = LS_CREATED-ASSET. 1050| GT_DATA-ANLN1_T = GT_DATA-TXT50. 1051| GT_DATA-STATUS = GC_STATUS_GREEN. 1052| GT_DATA-ASSET_SUCCESS = 'S'. 1053| 1054| MESSAGE ID 'AA' TYPE 'S' NUMBER '228' 1055| INTO GT_DATA-MESSAGE 1056| WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4. 1057| GT_DATA-STATUS = GC_STATUS_GREEN. 1058| 1059| PERFORM ADD_DATA_MESSAGE USING 1060| 'S' '' 1061| GT_DATA-MESSAGE. 1062| 1063| ELSE. 1064| CALL FUNCTION 'BAPI_TRANSACTION_ROLLBACK'. 1065| GT_DATA-STATUS = GC_STATUS_RED. 1066| GT_DATA-ASSET_SUCCESS = 'E'. 1067| GV_POST_ERROR = 'X'. 1068| ENDIF. 1069| 1070| MODIFY GT_DATA. ``` - **EN**: Processes BAPI return messages, commits with BAPI_TRANSACTION_COMMIT and stores the new asset number on success, otherwise rolls back and flags the row as error. - 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) - 호출(파서): BUILD_MESSAGE_BAPI, ADD_DATA_MESSAGE, BAPI_TRANSACTION_COMMIT, ADD_DATA_MESSAGE, BAPI_TRANSACTION_ROLLBACK - SAP 객체: BAPI_TRANSACTION_COMMIT, BAPI_TRANSACTION_ROLLBACK, BAPIRET2 - 업무 키워드: 커밋, 롤백, 자산번호 반영, 오류 처리, 결과 메시지 - English: BAPI Return, Commit, Rollback, Asset Number - 정의부(복사 시 함께 필요): [`LT_RETURNS`](#decl-zcoc0120f01-993-lt_returns), [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`BDCMSGCOLL`](#decl-zco_common-4-bdcmsgcoll), [`GT_MESSTAB`](#decl-zco_common-66-gt_messtab), [`LS_CREATED`](#decl-zcoc0120f01-994-ls_created), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green), [`GC_STATUS_RED`](#decl-zco_alv-130-gc_status_red), [`GV_POST_ERROR`](#decl-zcoc0120top-24-gv_post_error) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1035-L1070` · confidence 0.93 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_FIXED_ASSET#C2` #### [other] 기존 자산(GUBUN='2')으로 자산번호가 이미 있는 건은 자산 생성 없이 성공 상태(ASSET_SUCCESS='S', 녹색)로 일괄 표시한다. ```abap 1073| LS_DATA-ASSET_SUCCESS = 'S'. 1074| LS_DATA-STATUS = GC_STATUS_GREEN. 1075| MODIFY GT_DATA FROM LS_DATA TRANSPORTING ASSET_SUCCESS 1076| STATUS 1077| WHERE ANLN1 IS NOT INITIAL AND GUBUN = '2'. ``` - **EN**: Marks existing-asset rows (GUBUN '2' with asset number) as successful without creating a new asset. - 테이블(파서): read - / write [GT_DATA](/tables/GT_DATA.md) - 업무 키워드: 기존 자산, 성공 표시, 상태 갱신 - English: Existing Asset, Status Update - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LS_DATA`](#decl-zcoc0120f01-999-ls_data), [`GC_STATUS_GREEN`](#decl-zco_alv-128-gc_status_green) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1073-L1077` · confidence 0.85 · `ZCOC0120#ZCOC0120F01#FORM#CREATE_FIXED_ASSET#C3` ### FORM SAVE_DB — `ZCOC0120F01` L1211-L1246 (36줄) *본자산 생성에 성공한 건의 정산규칙 내역을 ZCOT0040 테이블에 저장하고 결과 메시지를 GT_DATA에 반영한다.* > 이 unit 의 조각 2개가 29/36줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [aggregation] 자산 생성 성공(ASSET_SUCCESS='S') 건만 골라 회사코드·관리회계영역·연도·기간과 생성자/일시를 채워 ZCOT0040 저장용 내부테이블 LT_ZCOT0040을 구성한다. ```abap 1215| LOOP AT GT_DATA WHERE ASSET_SUCCESS = 'S'. 1216| MOVE-CORRESPONDING GT_DATA TO LT_ZCOT0040. 1217| LT_ZCOT0040-BUKRS = P_BUKRS. 1218| LT_ZCOT0040-KOKRS = P_KOKRS. 1219| LT_ZCOT0040-GJAHR = P_GJAHR. 1220| LT_ZCOT0040-PERBL = P_PERBL. 1221| LT_ZCOT0040-ERDAT = SY-DATUM. 1222| LT_ZCOT0040-ERNAM = SY-UNAME. 1223| LT_ZCOT0040-ERZEIT = SY-UZEIT. 1224| APPEND LT_ZCOT0040. CLEAR : LT_ZCOT0040. 1225| 1226| ENDLOOP. ``` - **EN**: Builds the ZCOT0040 save table from successfully created asset rows, adding company code, controlling area, fiscal year, period and creation user/date. - SAP 객체: ZCOT0040 - 업무 키워드: 정산규칙 내역, 자산 생성 성공, 저장 데이터 구성, 회사코드, 기간 - English: Settlement Rule, Fixed Asset, Company Code, Fiscal Period - 정의부(복사 시 함께 필요): [`GT_DATA`](#decl-zcoc0120top-58-gt_data), [`LT_ZCOT0040`](#decl-zcoc0120f01-1213-lt_zcot0040), [`P_BUKRS`](#decl-zcoc0120top-140-p_bukrs), [`P_KOKRS`](#decl-zcoc0120top-149-p_kokrs), [`P_GJAHR`](#decl-zcoc0120top-155-p_gjahr), [`P_PERBL`](#decl-zcoc0120top-157-p_perbl) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1215-L1226` · confidence 0.9 · `ZCOC0120#ZCOC0120F01#FORM#SAVE_DB#C1` #### [db_write] 구성된 정산규칙 내역을 MODIFY ZCOT0040 으로 DB에 저장하고 성공 시 각 행에 '정산규칙 내역이 저장되었습니다' 메시지를 ADD_DATA_MESSAGE 로 기록한다. ```abap 1228| IF LT_ZCOT0040[] IS NOT INITIAL. 1229| MODIFY ZCOT0040 FROM TABLE LT_ZCOT0040. 1230| 1231| IF SY-SUBRC EQ 0. 1232| LV_MESSAGE = '정산규칙 내역이 저장되었습니다.'(F28). 1233| LOOP AT GT_DATA. 1234| PERFORM ADD_DATA_MESSAGE USING 1235| 'S' '' 1236| LV_MESSAGE. 1237| IF GT_DATA-MESSAGE IS INITIAL. 1238| GT_DATA-MESSAGE = LV_MESSAGE. 1239| ENDIF. 1240| MODIFY GT_DATA. 1241| CLEAR : LV_MESSAGE. 1242| ENDLOOP. 1243| ENDIF. 1244| ENDIF. ``` - **EN**: Writes the settlement rule records to custom table ZCOT0040 via MODIFY and logs a success message on every GT_DATA row. - 테이블(파서): read - / write [ZCOT0040](/tables/ZCOT0040.md), [GT_DATA](/tables/GT_DATA.md) - 호출(파서): ADD_DATA_MESSAGE - SAP 객체: ZCOT0040 - 업무 키워드: 정산규칙 저장, DB 저장, 성공 메시지, 결과 기록 - English: Settlement Rule, Database Update, Message Log - 정의부(복사 시 함께 필요): [`LT_ZCOT0040`](#decl-zcoc0120f01-1213-lt_zcot0040), [`LV_MESSAGE`](#decl-zcoc0120f01-1212-lv_message), [`GT_DATA`](#decl-zcoc0120top-58-gt_data) - 위치: `abap://ZCOC0120/ZCOC0120F01#L1228-L1244` · confidence 0.92 · `ZCOC0120#ZCOC0120F01#FORM#SAVE_DB#C2` ### MODULE USER_COMMAND_0100 INPUT — `ZCOC0120I01` L6-L32 (27줄) *화면 0100의 OK 코드에 따라 자산 생성(&SAV), 정산규칙 BDC 실행(&RUN), 재검증(&VAL) 또는 화면 종료를 분기하는 PAI 모듈이다.* > 이 unit 의 조각 1개가 22/27줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다. #### [control_flow] OK 코드별로 BACK/EXIT 시 컨테이너 해제 후 화면 종료, &SAV 시 EXECUTE_BAPI(본자산 생성), &RUN 시 EXECUTE_BDC(KO02 정산규칙), &VAL 시 PROCESS_DATA(재검증)로 분기한다. ```abap 9| CASE GV_T_OK_CODE. 10| WHEN 'BACK' OR 'CANC' OR 'EXIT'. 11| PERFORM CLEAR_CONTAINER_PROC USING 12| GO_ALV1 GO_DOCKING_CONT1 GO_SPLITTER1 13| GO_CONTAINER_TOP1 GO_CONTAINER_ALV1 14| GO_HTML_VIEW1 15| GO_EVENT_RECEIVER1. 16| 17| IF GV_T_OK_CODE = 'EXIT'. 18| LEAVE PROGRAM. 19| ELSE. 20| LEAVE TO SCREEN 0. 21| ENDIF. 22| WHEN '&SAV'. 23| PERFORM EXECUTE_BAPI. 24| WHEN '&RUN'. 25| PERFORM EXECUTE_BDC. 26| WHEN '&VAL'. 27| PERFORM PROCESS_DATA. 28| WHEN OTHERS. 29| * LEAVE PROGRAM. 30| ENDCASE. ``` - **EN**: Dispatches screen 0100 user commands to fixed asset creation (EXECUTE_BAPI), settlement rule BDC (EXECUTE_BDC) or re-validation (PROCESS_DATA), or leaves the screen. - 호출(파서): CLEAR_CONTAINER_PROC, EXECUTE_BAPI, EXECUTE_BDC, PROCESS_DATA - SAP 객체: KO02 - 업무 키워드: 사용자 명령, 자산 생성, 정산규칙, 재검증, 화면 종료 - English: User Command, PAI, Fixed Asset, Settlement Rule - 정의부(복사 시 함께 필요): [`GV_T_OK_CODE`](#decl-zcoc0120top-15-gv_t_ok_code), [`LCL_DEF_GRID`](#decl-zco_alv-203-lcl_def_grid), [`GO_ALV1`](#decl-zco_alv-161-go_alv1), [`GO_DOCKING_CONT1`](#decl-zco_alv-183-go_docking_cont1), [`GO_SPLITTER1`](#decl-zco_alv-167-go_splitter1), [`GO_CONTAINER_TOP1`](#decl-zco_alv-149-go_container_top1), [`GO_CONTAINER_ALV1`](#decl-zco_alv-150-go_container_alv1), [`GO_HTML_VIEW1`](#decl-zco_alv-193-go_html_view1), [`LCL_DEF_RECEIVER`](#decl-zcoc0120c01-5-lcl_def_receiver), [`GO_EVENT_RECEIVER1`](#decl-zco_alv-179-go_event_receiver1) - 위치: `abap://ZCOC0120/ZCOC0120I01#L9-L30` · confidence 0.9 · `ZCOC0120#ZCOC0120I01#MODULE#USER_COMMAND_0100_INPUT#C1` ## 정의부 (370건) 로직 조각을 다른 프로그램으로 옮겨 붙일 때 **함께 가야 하는 선언**이다. 조각별로 무엇이 필요한지는 위 조각 항목의 `정의부` 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 `GET /chunks/` 의 `declaration_code` 로 받는다. ### `ZCOC0120C01` (1건) #### LCL_DEF_RECEIVER — class · L5-L56 {#decl-zcoc0120c01-5-lcl_def_receiver} ```abap CLASS LCL_DEF_RECEIVER DEFINITION. PUBLIC SECTION. METHODS: HANDLE_TOP_OF_PAGE FOR EVENT TOP_OF_PAGE OF CL_GUI_ALV_GRID IMPORTING E_DYNDOC_ID TABLE_INDEX. METHODS : HANDLE_TOOLBAR FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID IMPORTING SENDER E_OBJECT E_INTERACTIVE. METHODS : HANDLE_USER_COMMAND FOR EVENT USER_COMMAND OF CL_GUI_ALV_GRID IMPORTING SENDER E_UCOMM. METHODS : HANDLE_DATA_CHANGED FOR EVENT DATA_CHANGED OF CL_GUI_ALV_GRID IMPORTING SENDER ER_DATA_CHANGED. METHODS : HANDLE_DATA_CHANGED_FINISHED FOR EVENT DATA_CHANGED_FINISHED OF CL_GUI_ALV_GRID IMPORTING SENDER E_MODIFIED ET_GOOD_CELLS. METHODS : HANDLE_HOTSPOT_CLICK FOR EVENT HOTSPOT_CLICK OF CL_GUI_ALV_GRID IMPORTING SENDER E_ROW_ID E_COLUMN_ID. METHODS : HANDLE_DOUBLE_CLICK FOR EVENT DOUBLE_CLICK OF CL_GUI_ALV_GRID IMPORTING SENDER E_ROW E_COLUMN ES_ROW_NO. METHODS: HANDLE_ON_F4 FOR EVENT ONF4 OF CL_GUI_ALV_GRID IMPORTING SENDER E_FIELDNAME E_FIELDVALUE ES_ROW_NO ER_EVENT_DATA ET_BAD_CELLS E_DISPLAY. METHODS : HANDLE_CONTEXT_MENU_REQ FOR EVENT CONTEXT_MENU_REQUEST OF CL_GUI_ALV_GRID IMPORTING E_OBJECT. ENDCLASS. " LCL_DEF_RECEIVER ``` ### `ZCOC0120TOP` (48건) #### IBRTT — type-pool · L1-L1 {#decl-zcoc0120top-1-ibrtt} ```abap TYPE-POOLS : IBRTT, VRM, ICON. ``` #### ICON — type-pool · L1-L1 {#decl-zcoc0120top-1-icon} ```abap TYPE-POOLS : IBRTT, VRM, ICON. ``` #### VRM — type-pool · L1-L1 {#decl-zcoc0120top-1-vrm} ```abap TYPE-POOLS : IBRTT, VRM, ICON. ``` #### ICON — tables · L2-L2 {#decl-zcoc0120top-2-icon} ```abap TABLES : ICON, SSCRFIELDS. ``` #### SSCRFIELDS — tables · L2-L2 {#decl-zcoc0120top-2-sscrfields} ```abap TABLES : ICON, SSCRFIELDS. ``` #### ISELLIST — tables · L3-L3 {#decl-zcoc0120top-3-isellist} ```abap TABLES : ISELLIST. " 선택한 달력 조회 ``` #### DD03L — tables · L4-L4 {#decl-zcoc0120top-4-dd03l} ```abap TABLES : DD03L. ``` #### GV_OK_CODE — data · L14-L14 {#decl-zcoc0120top-14-gv_ok_code} ```abap DATA : GV_OK_CODE LIKE SY-UCOMM. ``` #### GV_T_OK_CODE — data · L15-L15 {#decl-zcoc0120top-15-gv_t_ok_code} ```abap DATA : GV_T_OK_CODE LIKE SY-UCOMM. ``` #### GT_UCOMM — data · L17-L17 {#decl-zcoc0120top-17-gt_ucomm} ```abap DATA : GT_UCOMM TYPE TABLE OF SY-UCOMM. ``` #### GV_LOCK — data · L21-L21 {#decl-zcoc0120top-21-gv_lock} ```abap DATA : GV_LOCK(1) TYPE C. " Locking ``` #### GV_UPLOAD_ERROR — data · L22-L22 {#decl-zcoc0120top-22-gv_upload_error} ```abap DATA : GV_UPLOAD_ERROR(1) TYPE C. " 업로드 오류 ``` #### GV_ALREADY_POST — data · L23-L23 {#decl-zcoc0120top-23-gv_already_post} ```abap DATA : GV_ALREADY_POST(1) TYPE C. " 실행 여부 ``` #### GV_POST_ERROR — data · L24-L24 {#decl-zcoc0120top-24-gv_post_error} ```abap DATA : GV_POST_ERROR(1) TYPE C. " 전기 오류 ``` #### GV_CHANGED — data · L26-L26 {#decl-zcoc0120top-26-gv_changed} ```abap DATA : GV_CHANGED TYPE C. ``` #### GC_MAIN_ITAB_NAME — constants · L30-L31 {#decl-zcoc0120top-30-gc_main_itab_name} ```abap CONSTANTS : GC_MAIN_ITAB_NAME TYPE DD03L-TABNAME VALUE 'GT_DATA'. ``` #### GC_UPLOAD_STRUCT — constants · L32-L33 {#decl-zcoc0120top-32-gc_upload_struct} ```abap CONSTANTS : GC_UPLOAD_STRUCT TYPE DD03L-TABNAME VALUE 'ZCOS0180'. ``` #### GC_SMW0 — constants · L34-L34 {#decl-zcoc0120top-34-gc_smw0} ```abap CONSTANTS : GC_SMW0 TYPE W3_QVALUE VALUE 'ZCOC0120'. ``` #### GC_MEINS — constants · L35-L35 {#decl-zcoc0120top-35-gc_meins} ```abap CONSTANTS : GC_MEINS TYPE ANLA-MEINS VALUE 'EA'. ``` #### GT_MAIN_FIELDCAT — data · L41-L41 {#decl-zcoc0120top-41-gt_main_fieldcat} ```abap DATA : GT_MAIN_FIELDCAT TYPE LVC_T_FCAT. ``` #### — field-symbol · L46-L46 {#decl-zcoc0120top-46--gf_uploadt-} ```abap FIELD-SYMBOLS : TYPE STANDARD TABLE. ``` #### — field-symbol · L47-L47 {#decl-zcoc0120top-47--gf_uploads-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### GF_UPLOADT — data · L49-L49 {#decl-zcoc0120top-49-gf_uploadt} ```abap DATA : GF_UPLOADT TYPE REF TO DATA. ``` #### GF_UPLOADS — data · L50-L50 {#decl-zcoc0120top-50-gf_uploads} ```abap DATA : GF_UPLOADS TYPE REF TO DATA. ``` #### GT_UPLD_FCAT — data · L52-L52 {#decl-zcoc0120top-52-gt_upld_fcat} ```abap DATA : GT_UPLD_FCAT TYPE LVC_T_FCAT. ``` #### GS_UPLD_FCAT — data · L53-L53 {#decl-zcoc0120top-53-gs_upld_fcat} ```abap DATA : GS_UPLD_FCAT TYPE LVC_S_FCAT. ``` #### GT_DATA — data · L58-L80 {#decl-zcoc0120top-58-gt_data} ```abap DATA : BEGIN OF GT_DATA OCCURS 0. INCLUDE STRUCTURE ZCOS0180. DATA : GUBUN_T(10) TYPE C, AUART LIKE AUFK-AUART, KOSTL_T LIKE CSKT-KTEXT, ANLKL_T LIKE ANKT-TXK20, AUFNR_T LIKE AUFK-KTEXT, ASSET_SUCCESS TYPE C, SETTL_SUCCESS TYPE C, OBJNR LIKE ONROR-OBJNR, ANLN1_T LIKE ANLA-TXT50, WKG_SUM LIKE COSP-WKG001, EXCEL_LINE TYPE I, MARK TYPE C , STATUS LIKE ICON-ID, F_COL TYPE LVC_T_SCOL, CELLTAB TYPE LVC_T_STYL, MESSAGE LIKE BDCMSGCOLL-MSGV1, MSG_LIST TYPE ZMSG_T_S, END OF GT_DATA. ``` #### GS_DATA — data · L82-L82 {#decl-zcoc0120top-82-gs_data} ```abap DATA : GS_DATA LIKE GT_DATA. ``` #### GT_LOG_POP — data · L84-L87 {#decl-zcoc0120top-84-gt_log_pop} ```abap DATA : BEGIN OF GT_LOG_POP OCCURS 0, STATUS LIKE ICON-ID, MESSAGE LIKE BDCMSGCOLL-MSGV1, END OF GT_LOG_POP. ``` #### W_POPUP_GRID — data · L90-L90 {#decl-zcoc0120top-90-w_popup_grid} ```abap DATA : W_POPUP_GRID TYPE REF TO CL_RS_ALV_GRID_POPUP. ``` #### GS_MSG_T_S — data · L92-L92 {#decl-zcoc0120top-92-gs_msg_t_s} ```abap DATA : GS_MSG_T_S TYPE ZMSG_S_S. ``` #### GT_KOSTL_ST — data · L95-L99 {#decl-zcoc0120top-95-gt_kostl_st} ```abap DATA : BEGIN OF GT_KOSTL_ST OCCURS 0, KOSTL LIKE CSKS-KOSTL, OBJNR LIKE ONRKS-KOSTL, KTEXT LIKE CSKT-KTEXT, END OF GT_KOSTL_ST. ``` #### GT_ANKT — data · L101-L101 {#decl-zcoc0120top-101-gt_ankt} ```abap DATA : GT_ANKT LIKE ANKT OCCURS 0 WITH HEADER LINE. ``` #### GT_AUFK_ST — data · L103-L108 {#decl-zcoc0120top-103-gt_aufk_st} ```abap DATA : BEGIN OF GT_AUFK_ST OCCURS 0, AUFNR LIKE AUFK-AUFNR, OBJNR LIKE ONROR-OBJNR, KTEXT LIKE AUFK-KTEXT, AUART LIKE AUFK-AUART, END OF GT_AUFK_ST. ``` #### GT_ANLA — data · L110-L113 {#decl-zcoc0120top-110-gt_anla} ```abap DATA : BEGIN OF GT_ANLA OCCURS 0, ANLN1 LIKE ANLA-ANLN1, TXT50 LIKE ANLA-TXT50, END OF GT_ANLA. ``` #### GT_COSP — data · L115-L115 {#decl-zcoc0120top-115-gt_cosp} ```abap DATA : GT_COSP LIKE COSP OCCURS 0 WITH HEADER LINE. ``` #### GT_ZCOT0040 — data · L117-L117 {#decl-zcoc0120top-117-gt_zcot0040} ```abap DATA : GT_ZCOT0040 LIKE ZCOT0040 OCCURS 0 WITH HEADER LINE. ``` #### P_SAV — parameter · L126-L127 {#decl-zcoc0120top-126-p_sav} ```abap PARAMETERS : P_SAV RADIOBUTTON GROUP RG2 DEFAULT 'X' USER-COMMAND UC1. ``` #### P_SETT — parameter · L130-L130 {#decl-zcoc0120top-130-p_sett} ```abap PARAMETERS : P_SETT RADIOBUTTON GROUP RG2. ``` #### P_BUKRS — parameter · L140-L141 {#decl-zcoc0120top-140-p_bukrs} ```abap PARAMETERS : P_BUKRS LIKE T001-BUKRS OBLIGATORY DEFAULT 'KR01' MODIF ID MG1. ``` #### P_KOKRS — parameter · L149-L150 {#decl-zcoc0120top-149-p_kokrs} ```abap PARAMETERS : P_KOKRS LIKE TKA01-KOKRS OBLIGATORY DEFAULT 'KR01' MODIF ID MG1. ``` #### P_GJAHR — parameter · L155-L156 {#decl-zcoc0120top-155-p_gjahr} ```abap PARAMETER : P_GJAHR LIKE COBRB-GABJA OBLIGATORY DEFAULT SY-DATUM+0(4). ``` #### P_PERBL — parameter · L157-L158 {#decl-zcoc0120top-157-p_perbl} ```abap PARAMETER : P_PERBL LIKE COBRB-GABPE OBLIGATORY DEFAULT SY-DATUM+4(2). ``` #### P_FNAME — parameter · L160-L161 {#decl-zcoc0120top-160-p_fname} ```abap PARAMETER : P_FNAME TYPE RLGRAP-FILENAME MEMORY ID ZCOC0120_P_FNAME MODIF ID MG2. ``` #### P_OPEN — parameter · L171-L172 {#decl-zcoc0120top-171-p_open} ```abap PARAMETERS : P_OPEN RADIOBUTTON GROUP RG3 DEFAULT 'X' MODIF ID MG3. ``` #### P_FAIL — parameter · L176-L177 {#decl-zcoc0120top-176-p_fail} ```abap PARAMETERS : P_FAIL RADIOBUTTON GROUP RG3 MODIF ID MG3. ``` #### P_SUCC — parameter · L181-L182 {#decl-zcoc0120top-181-p_succ} ```abap PARAMETERS : P_SUCC RADIOBUTTON GROUP RG3 MODIF ID MG3. ``` #### P_DSMOD — parameter · L189-L189 {#decl-zcoc0120top-189-p_dsmod} ```abap PARAMETER : P_DSMOD TYPE DISPMODE DEFAULT 'N' NO-DISPLAY. ``` ### `ZCO_ALV` (123건) #### F4TYP — type-pool · L9-L9 {#decl-zco_alv-9-f4typ} ```abap TYPE-POOLS : SLIS, F4TYP, SDYDO. ``` #### SDYDO — type-pool · L9-L9 {#decl-zco_alv-9-sdydo} ```abap TYPE-POOLS : SLIS, F4TYP, SDYDO. ``` #### SLIS — type-pool · L9-L9 {#decl-zco_alv-9-slis} ```abap TYPE-POOLS : SLIS, F4TYP, SDYDO. ``` #### T_MSG — types · L11-L19 {#decl-zco_alv-11-t_msg} ```abap TYPES : BEGIN OF T_MSG, MSGID TYPE SYMSGID, MSGNO TYPE SYMSGNO, MSGTY, MSG1(50), MSG2(50), MSG3(50), MSG4(50), END OF T_MSG. ``` #### GS_MSG — data · L20-L20 {#decl-zco_alv-20-gs_msg} ```abap DATA : GS_MSG TYPE T_MSG. ``` #### GT_TOP_OF_PAGE_TXT — data · L22-L26 {#decl-zco_alv-22-gt_top_of_page_txt} ```abap DATA : BEGIN OF GT_TOP_OF_PAGE_TXT OCCURS 0, TOP_TEXT TYPE SDYDO_TEXT_ELEMENT, FONTSIZE TYPE SDYDO_ATTRIBUTE, COLOR TYPE SDYDO_ATTRIBUTE, END OF GT_TOP_OF_PAGE_TXT. ``` #### GC_STATUS_SET — constants · L28-L28 {#decl-zco_alv-28-gc_status_set} ```abap CONSTANTS : GC_STATUS_SET TYPE SLIS_FORMNAME VALUE 'PF_STATUS_SET'. ``` #### GC_USER_COMMAND — constants · L29-L29 {#decl-zco_alv-29-gc_user_command} ```abap CONSTANTS : GC_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'. ``` #### GC_TOP_OF_PAGE — constants · L30-L30 {#decl-zco_alv-30-gc_top_of_page} ```abap CONSTANTS : GC_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'. ``` #### GC_TOP_OF_LIST — constants · L31-L31 {#decl-zco_alv-31-gc_top_of_list} ```abap CONSTANTS : GC_TOP_OF_LIST TYPE SLIS_FORMNAME VALUE 'TOP_OF_LIST'. ``` #### GC_END_OF_LIST — constants · L32-L32 {#decl-zco_alv-32-gc_end_of_list} ```abap CONSTANTS : GC_END_OF_LIST TYPE SLIS_FORMNAME VALUE 'END_OF_LIST'. ``` #### GC_DATA_CHANGED — constants · L33-L33 {#decl-zco_alv-33-gc_data_changed} ```abap CONSTANTS : GC_DATA_CHANGED TYPE SLIS_FORMNAME VALUE 'DATA_CHANGED'. ``` #### GC_HTML_TOP_OF_PAGE — constants · L34-L35 {#decl-zco_alv-34-gc_html_top_of_page} ```abap CONSTANTS : GC_HTML_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'HTML_TOP_OF_PAGE'. ``` #### GC_PRT_TOP_OF_PAGE — constants · L36-L37 {#decl-zco_alv-36-gc_prt_top_of_page} ```abap CONSTANTS : GC_PRT_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'PRT_TOP_OF_PAGE'. ``` #### GV_SAVE — data · L40-L40 {#decl-zco_alv-40-gv_save} ```abap DATA : GV_SAVE. ``` #### GV_TABIX — data · L41-L41 {#decl-zco_alv-41-gv_tabix} ```abap DATA : GV_TABIX LIKE SY-TABIX. ``` #### GV_FLD_NAME — data · L42-L42 {#decl-zco_alv-42-gv_fld_name} ```abap DATA : GV_FLD_NAME(30). ``` #### GV_EXGT_CAUSED_BY_CALLER — data · L43-L43 {#decl-zco_alv-43-gv_exgt_caused_by_caller} ```abap DATA : GV_EXGT_CAUSED_BY_CALLER. ``` #### GV_REPID — data · L44-L44 {#decl-zco_alv-44-gv_repid} ```abap DATA : GV_REPID TYPE SY-REPID. ``` #### GV_DYNNR — data · L45-L45 {#decl-zco_alv-45-gv_dynnr} ```abap DATA : GV_DYNNR TYPE SY-DYNNR. ``` #### GV_PROGRAM_NAME — data · L46-L46 {#decl-zco_alv-46-gv_program_name} ```abap DATA : GV_PROGRAM_NAME LIKE SY-REPID. ``` #### GV_INCLNAME — data · L47-L47 {#decl-zco_alv-47-gv_inclname} ```abap DATA : GV_INCLNAME LIKE TRDIR-NAME. ``` #### GV_EXTENSION — data · L48-L48 {#decl-zco_alv-48-gv_extension} ```abap DATA : GV_EXTENSION TYPE I. ``` #### GS_LAYOUT — data · L51-L51 {#decl-zco_alv-51-gs_layout} ```abap DATA : GS_LAYOUT TYPE SLIS_LAYOUT_ALV. ``` #### GS_EXGT_CAUSED_BY_USER — data · L52-L52 {#decl-zco_alv-52-gs_exgt_caused_by_user} ```abap DATA: GS_EXGT_CAUSED_BY_USER TYPE SLIS_EXIT_BY_USER. ``` #### GS_FIELDCAT — data · L53-L53 {#decl-zco_alv-53-gs_fieldcat} ```abap DATA: GS_FIELDCAT TYPE SLIS_FIELDCAT_ALV. ``` #### GS_SORT — data · L54-L54 {#decl-zco_alv-54-gs_sort} ```abap DATA: GS_SORT TYPE SLIS_SORTINFO_ALV. ``` #### GS_KEYINFO — data · L55-L55 {#decl-zco_alv-55-gs_keyinfo} ```abap DATA: GS_KEYINFO TYPE SLIS_KEYINFO_ALV. ``` #### GS_VARIANT — data · L56-L56 {#decl-zco_alv-56-gs_variant} ```abap DATA: GS_VARIANT TYPE DISVARIANT. ``` #### GS_SCROLL — data · L57-L57 {#decl-zco_alv-57-gs_scroll} ```abap DATA: GS_SCROLL TYPE SLIS_LIST_SCROLL. ``` #### GS_DETAIL_FUNC — data · L58-L58 {#decl-zco_alv-58-gs_detail_func} ```abap DATA: GS_DETAIL_FUNC LIKE DD02L-TABNAME. ``` #### GS_LVC_LAYO1 — data · L60-L60 {#decl-zco_alv-60-gs_lvc_layo1} ```abap DATA : GS_LVC_LAYO1 TYPE LVC_S_LAYO. " LAYOUT\ ``` #### GS_LVC_LAYO2 — data · L61-L61 {#decl-zco_alv-61-gs_lvc_layo2} ```abap DATA: GS_LVC_LAYO2 TYPE LVC_S_LAYO. ``` #### GS_LVC_LAYO3 — data · L62-L62 {#decl-zco_alv-62-gs_lvc_layo3} ```abap DATA: GS_LVC_LAYO3 TYPE LVC_S_LAYO. ``` #### GS_LVC_LAYO4 — data · L63-L63 {#decl-zco_alv-63-gs_lvc_layo4} ```abap DATA: GS_LVC_LAYO4 TYPE LVC_S_LAYO. ``` #### GS_LVC_FCAT — data · L65-L65 {#decl-zco_alv-65-gs_lvc_fcat} ```abap DATA : GS_LVC_FCAT TYPE LVC_S_FCAT. " FIELDCATALOG ``` #### GS_ROW — data · L67-L67 {#decl-zco_alv-67-gs_row} ```abap DATA : GS_ROW LIKE LVC_S_ROW. ``` #### GS_COL — data · L68-L68 {#decl-zco_alv-68-gs_col} ```abap DATA: GS_COL LIKE LVC_S_COL. ``` #### GS_STABLE — data · L69-L69 {#decl-zco_alv-69-gs_stable} ```abap DATA : GS_STABLE TYPE LVC_S_STBL. ``` #### GT_EVENTS — data · L72-L72 {#decl-zco_alv-72-gt_events} ```abap DATA : GT_EVENTS TYPE SLIS_T_EVENT. ``` #### GT_LISTHEADER — data · L73-L73 {#decl-zco_alv-73-gt_listheader} ```abap DATA: GT_LISTHEADER TYPE SLIS_T_LISTHEADER. ``` #### GT_FIELDCAT — data · L74-L74 {#decl-zco_alv-74-gt_fieldcat} ```abap DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. ``` #### GT_SORT — data · L75-L75 {#decl-zco_alv-75-gt_sort} ```abap DATA: GT_SORT TYPE SLIS_T_SORTINFO_ALV. ``` #### GT_EXIT — data · L76-L76 {#decl-zco_alv-76-gt_exit} ```abap DATA: GT_EXIT TYPE SLIS_EVENT_EXIT OCCURS 0. ``` #### GT_PRINT — data · L77-L77 {#decl-zco_alv-77-gt_print} ```abap DATA: GT_PRINT TYPE SLIS_PRINT_ALV. ``` #### GT_UI_FUNCTIONS1 — data · L79-L79 {#decl-zco_alv-79-gt_ui_functions1} ```abap DATA : GT_UI_FUNCTIONS1 TYPE UI_FUNCTIONS. " TOOLBAR ``` #### GT_UI_FUNCTIONS2 — data · L80-L80 {#decl-zco_alv-80-gt_ui_functions2} ```abap DATA: GT_UI_FUNCTIONS2 TYPE UI_FUNCTIONS. ``` #### GT_UI_FUNCTIONS3 — data · L81-L81 {#decl-zco_alv-81-gt_ui_functions3} ```abap DATA: GT_UI_FUNCTIONS3 TYPE UI_FUNCTIONS. ``` #### GT_UI_FUNCTIONS4 — data · L82-L82 {#decl-zco_alv-82-gt_ui_functions4} ```abap DATA: GT_UI_FUNCTIONS4 TYPE UI_FUNCTIONS. ``` #### GT_LVC_SORT1 — data · L84-L84 {#decl-zco_alv-84-gt_lvc_sort1} ```abap DATA : GT_LVC_SORT1 TYPE LVC_T_SORT. " SORT ``` #### GT_LVC_SORT2 — data · L85-L85 {#decl-zco_alv-85-gt_lvc_sort2} ```abap DATA: GT_LVC_SORT2 TYPE LVC_T_SORT. ``` #### GT_LVC_SORT3 — data · L86-L86 {#decl-zco_alv-86-gt_lvc_sort3} ```abap DATA: GT_LVC_SORT3 TYPE LVC_T_SORT. ``` #### GT_LVC_SORT4 — data · L87-L87 {#decl-zco_alv-87-gt_lvc_sort4} ```abap DATA: GT_LVC_SORT4 TYPE LVC_T_SORT. ``` #### GT_LVC_FCAT1 — data · L89-L89 {#decl-zco_alv-89-gt_lvc_fcat1} ```abap DATA : GT_LVC_FCAT1 TYPE LVC_T_FCAT. " FIELDCATALOG ``` #### GT_LVC_FCAT2 — data · L90-L90 {#decl-zco_alv-90-gt_lvc_fcat2} ```abap DATA: GT_LVC_FCAT2 TYPE LVC_T_FCAT. ``` #### GT_LVC_FCAT3 — data · L91-L91 {#decl-zco_alv-91-gt_lvc_fcat3} ```abap DATA: GT_LVC_FCAT3 TYPE LVC_T_FCAT. ``` #### GT_LVC_FCAT4 — data · L92-L92 {#decl-zco_alv-92-gt_lvc_fcat4} ```abap DATA: GT_LVC_FCAT4 TYPE LVC_T_FCAT. ``` #### GT_LVC_DROP — data · L95-L95 {#decl-zco_alv-95-gt_lvc_drop} ```abap DATA : GT_LVC_DROP TYPE LVC_T_DROP. ``` #### GS_LVC_DROP — data · L96-L96 {#decl-zco_alv-96-gs_lvc_drop} ```abap DATA: GS_LVC_DROP TYPE LVC_S_DROP. ``` #### GT_ALV_COLOR — data · L99-L99 {#decl-zco_alv-99-gt_alv_color} ```abap DATA : GT_ALV_COLOR TYPE LVC_T_SCOL WITH HEADER LINE. ``` #### GS_ALV_COLOR — data · L100-L100 {#decl-zco_alv-100-gs_alv_color} ```abap DATA: GS_ALV_COLOR TYPE LVC_S_COLO. ``` #### GT_ROWS — data · L103-L103 {#decl-zco_alv-103-gt_rows} ```abap DATA : GT_ROWS TYPE LVC_T_ROW. ``` #### GS_ROWS — data · L104-L104 {#decl-zco_alv-104-gs_rows} ```abap DATA: GS_ROWS TYPE LVC_S_ROW. ``` #### GV_FUN — data · L105-L105 {#decl-zco_alv-105-gv_fun} ```abap DATA: GV_FUN(1) VALUE 'D'. ``` #### GS_F4_VALUE — data · L109-L109 {#decl-zco_alv-109-gs_f4_value} ```abap DATA : GS_F4_VALUE TYPE SEAHLPRES. ``` #### GS_F4_FIELD — data · L110-L110 {#decl-zco_alv-110-gs_f4_field} ```abap DATA: GS_F4_FIELD TYPE DFIES. ``` #### GS_F4 — data · L111-L111 {#decl-zco_alv-111-gs_f4} ```abap DATA: GS_F4 TYPE DDSHRETVAL. ``` #### GS_LVC_MODI — data · L112-L112 {#decl-zco_alv-112-gs_lvc_modi} ```abap DATA: GS_LVC_MODI TYPE LVC_S_MODI. ``` #### GS_LVC_F4 — data · L113-L113 {#decl-zco_alv-113-gs_lvc_f4} ```abap DATA: GS_LVC_F4 TYPE LVC_S_F4. ``` #### GT_F4_VALUES — data · L116-L116 {#decl-zco_alv-116-gt_f4_values} ```abap DATA : GT_F4_VALUES TYPE TABLE OF SEAHLPRES. ``` #### GT_F4_FIELDS — data · L117-L117 {#decl-zco_alv-117-gt_f4_fields} ```abap DATA: GT_F4_FIELDS TYPE TABLE OF DFIES. ``` #### GT_LVC_F4 — data · L118-L118 {#decl-zco_alv-118-gt_lvc_f4} ```abap DATA: GT_LVC_F4 TYPE LVC_T_F4. ``` #### — field-symbol · L121-L121 {#decl-zco_alv-121--fs_f4tab-} ```abap FIELD-SYMBOLS : TYPE LVC_T_MODI. ``` #### GV_CONSISTENCY_CHECK — data · L123-L123 {#decl-zco_alv-123-gv_consistency_check} ```abap DATA : GV_CONSISTENCY_CHECK(1) TYPE C. ``` #### GV_ALV_COLPOS — data · L125-L125 {#decl-zco_alv-125-gv_alv_colpos} ```abap DATA : GV_ALV_COLPOS TYPE I. ``` #### GC_STATUS_GREEN — constants · L128-L128 {#decl-zco_alv-128-gc_status_green} ```abap CONSTANTS : GC_STATUS_GREEN LIKE ICON-ID VALUE ICON_GREEN_LIGHT. ``` #### GC_STATUS_YELLOW — constants · L129-L129 {#decl-zco_alv-129-gc_status_yellow} ```abap CONSTANTS : GC_STATUS_YELLOW LIKE ICON-ID VALUE ICON_YELLOW_LIGHT. ``` #### GC_STATUS_RED — constants · L130-L130 {#decl-zco_alv-130-gc_status_red} ```abap CONSTANTS : GC_STATUS_RED LIKE ICON-ID VALUE ICON_RED_LIGHT. ``` #### GC_STATUS_INIT — constants · L131-L131 {#decl-zco_alv-131-gc_status_init} ```abap CONSTANTS : GC_STATUS_INIT LIKE ICON-ID VALUE ICON_LIGHT_OUT. ``` #### GV_TOP_OF_PAGE — data · L133-L133 {#decl-zco_alv-133-gv_top_of_page} ```abap DATA : GV_TOP_OF_PAGE(255) TYPE C. ``` #### GC_ALV1_CONTNAME — constants · L143-L143 {#decl-zco_alv-143-gc_alv1_contname} ```abap CONSTANTS : GC_ALV1_CONTNAME TYPE SCRFNAME VALUE 'ALV1_CONT'. ``` #### GC_ALV2_CONTNAME — constants · L144-L144 {#decl-zco_alv-144-gc_alv2_contname} ```abap CONSTANTS : GC_ALV2_CONTNAME TYPE SCRFNAME VALUE 'ALV2_CONT'. ``` #### GC_ALV3_CONTNAME — constants · L145-L145 {#decl-zco_alv-145-gc_alv3_contname} ```abap CONSTANTS : GC_ALV3_CONTNAME TYPE SCRFNAME VALUE 'ALV3_CONT'. ``` #### GC_ALV4_CONTNAME — constants · L146-L146 {#decl-zco_alv-146-gc_alv4_contname} ```abap CONSTANTS : GC_ALV4_CONTNAME TYPE SCRFNAME VALUE 'ALV4_CONT'. ``` #### GO_CONTAINER_TOP1 — data · L149-L149 {#decl-zco_alv-149-go_container_top1} ```abap DATA: GO_CONTAINER_TOP1 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CONTAINER_ALV1 — data · L150-L150 {#decl-zco_alv-150-go_container_alv1} ```abap DATA: GO_CONTAINER_ALV1 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CONTAINER_TOP2 — data · L152-L152 {#decl-zco_alv-152-go_container_top2} ```abap DATA: GO_CONTAINER_TOP2 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CONTAINER_ALV2 — data · L153-L153 {#decl-zco_alv-153-go_container_alv2} ```abap DATA: GO_CONTAINER_ALV2 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CONTAINER_TOP3 — data · L155-L155 {#decl-zco_alv-155-go_container_top3} ```abap DATA: GO_CONTAINER_TOP3 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CONTAINER_ALV3 — data · L156-L156 {#decl-zco_alv-156-go_container_alv3} ```abap DATA: GO_CONTAINER_ALV3 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CONTAINER_TOP4 — data · L158-L158 {#decl-zco_alv-158-go_container_top4} ```abap DATA: GO_CONTAINER_TOP4 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_CONTAINER_ALV4 — data · L159-L159 {#decl-zco_alv-159-go_container_alv4} ```abap DATA: GO_CONTAINER_ALV4 TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_ALV1 — data · L161-L161 {#decl-zco_alv-161-go_alv1} ```abap DATA: GO_ALV1 TYPE REF TO LCL_DEF_GRID. ``` #### GO_ALV2 — data · L162-L162 {#decl-zco_alv-162-go_alv2} ```abap DATA: GO_ALV2 TYPE REF TO LCL_DEF_GRID. ``` #### GO_ALV3 — data · L163-L163 {#decl-zco_alv-163-go_alv3} ```abap DATA: GO_ALV3 TYPE REF TO LCL_DEF_GRID. ``` #### GO_ALV4 — data · L164-L164 {#decl-zco_alv-164-go_alv4} ```abap DATA: GO_ALV4 TYPE REF TO LCL_DEF_GRID. ``` #### GO_SPLITTER0 — data · L166-L166 {#decl-zco_alv-166-go_splitter0} ```abap DATA: GO_SPLITTER0 TYPE REF TO CL_GUI_EASY_SPLITTER_CONTAINER. ``` #### GO_SPLITTER1 — data · L167-L167 {#decl-zco_alv-167-go_splitter1} ```abap DATA: GO_SPLITTER1 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. ``` #### GO_SPLITTER2 — data · L168-L168 {#decl-zco_alv-168-go_splitter2} ```abap DATA: GO_SPLITTER2 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. ``` #### GO_SPLITTER3 — data · L169-L169 {#decl-zco_alv-169-go_splitter3} ```abap DATA: GO_SPLITTER3 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. ``` #### GO_SPLITTER4 — data · L170-L170 {#decl-zco_alv-170-go_splitter4} ```abap DATA: GO_SPLITTER4 TYPE REF TO CL_GUI_SPLITTER_CONTAINER. ``` #### GO_DOCKING — data · L172-L172 {#decl-zco_alv-172-go_docking} ```abap DATA: GO_DOCKING TYPE REF TO CL_GUI_CONTAINER. ``` #### GO_COLUMN_TREE — data · L174-L174 {#decl-zco_alv-174-go_column_tree} ```abap DATA: GO_COLUMN_TREE TYPE REF TO CL_GUI_COLUMN_TREE. ``` #### GO_TREE — data · L175-L175 {#decl-zco_alv-175-go_tree} ```abap DATA: GO_TREE TYPE REF TO CL_GUI_ALV_TREE. ``` #### GO_TOOLBAR — data · L176-L176 {#decl-zco_alv-176-go_toolbar} ```abap DATA: GO_TOOLBAR TYPE REF TO CL_GUI_TOOLBAR. ``` #### GO_TEXTEDIT — data · L177-L177 {#decl-zco_alv-177-go_textedit} ```abap DATA: GO_TEXTEDIT TYPE REF TO CL_GUI_TEXTEDIT. ``` #### GO_EVENT_RECEIVER1 — data · L179-L179 {#decl-zco_alv-179-go_event_receiver1} ```abap DATA: GO_EVENT_RECEIVER1 TYPE REF TO LCL_DEF_RECEIVER. ``` #### GO_EVENT_RECEIVER2 — data · L180-L180 {#decl-zco_alv-180-go_event_receiver2} ```abap DATA: GO_EVENT_RECEIVER2 TYPE REF TO LCL_DEF_RECEIVER. ``` #### GO_EVENT_RECEIVER3 — data · L181-L181 {#decl-zco_alv-181-go_event_receiver3} ```abap DATA: GO_EVENT_RECEIVER3 TYPE REF TO LCL_DEF_RECEIVER. ``` #### GO_DOCKING_CONT1 — data · L183-L183 {#decl-zco_alv-183-go_docking_cont1} ```abap DATA : GO_DOCKING_CONT1 TYPE REF TO CL_GUI_DOCKING_CONTAINER. ``` #### GO_DOCKING_CONT2 — data · L184-L184 {#decl-zco_alv-184-go_docking_cont2} ```abap DATA : GO_DOCKING_CONT2 TYPE REF TO CL_GUI_DOCKING_CONTAINER. ``` #### GO_DOCKING_CONT3 — data · L185-L185 {#decl-zco_alv-185-go_docking_cont3} ```abap DATA : GO_DOCKING_CONT3 TYPE REF TO CL_GUI_DOCKING_CONTAINER. ``` #### GO_DOCKING_CONT4 — data · L186-L186 {#decl-zco_alv-186-go_docking_cont4} ```abap DATA : GO_DOCKING_CONT4 TYPE REF TO CL_GUI_DOCKING_CONTAINER. ``` #### GO_DD_DOCUMENT1 — data · L188-L188 {#decl-zco_alv-188-go_dd_document1} ```abap DATA : GO_DD_DOCUMENT1 TYPE REF TO CL_DD_DOCUMENT. ``` #### GO_DD_DOCUMENT2 — data · L189-L189 {#decl-zco_alv-189-go_dd_document2} ```abap DATA : GO_DD_DOCUMENT2 TYPE REF TO CL_DD_DOCUMENT. ``` #### GO_DD_DOCUMENT3 — data · L190-L190 {#decl-zco_alv-190-go_dd_document3} ```abap DATA : GO_DD_DOCUMENT3 TYPE REF TO CL_DD_DOCUMENT. ``` #### GO_DD_DOCUMENT4 — data · L191-L191 {#decl-zco_alv-191-go_dd_document4} ```abap DATA : GO_DD_DOCUMENT4 TYPE REF TO CL_DD_DOCUMENT. ``` #### GO_HTML_VIEW1 — data · L193-L193 {#decl-zco_alv-193-go_html_view1} ```abap DATA : GO_HTML_VIEW1 TYPE REF TO CL_GUI_HTML_VIEWER. ``` #### GO_HTML_VIEW2 — data · L194-L194 {#decl-zco_alv-194-go_html_view2} ```abap DATA : GO_HTML_VIEW2 TYPE REF TO CL_GUI_HTML_VIEWER. ``` #### GO_HTML_VIEW3 — data · L195-L195 {#decl-zco_alv-195-go_html_view3} ```abap DATA : GO_HTML_VIEW3 TYPE REF TO CL_GUI_HTML_VIEWER. ``` #### GO_HTML_VIEW4 — data · L196-L196 {#decl-zco_alv-196-go_html_view4} ```abap DATA : GO_HTML_VIEW4 TYPE REF TO CL_GUI_HTML_VIEWER. ``` #### GO_DDIC_FCAT — data · L198-L198 {#decl-zco_alv-198-go_ddic_fcat} ```abap DATA : GO_DDIC_FCAT TYPE LVC_T_FCAT. ``` #### LCL_DEF_GRID — class · L203-L215 {#decl-zco_alv-203-lcl_def_grid} ```abap CLASS LCL_DEF_GRID DEFINITION INHERITING FROM CL_GUI_ALV_GRID. PUBLIC SECTION. METHODS : U_SET_FIXED_ROWS, U_SET_RESIZE_COLS, U_SCROLL_TO_BOTTOM, U_SET_OPTIMIZE, U_SET_CURRENT_CELL_BASE IMPORTING ROW TYPE I COL TYPE I. ENDCLASS. "LCL_DEF_GRID DEFINITION ``` ### `ZCO_COMMON` (132건) #### BDCMSGCOLL — tables · L4-L4 {#decl-zco_common-4-bdcmsgcoll} ```abap TABLES: BDCMSGCOLL. " * Collecting messages in the SAP System ``` #### ALSMEX_TABLINE — tables · L5-L5 {#decl-zco_common-5-alsmex_tabline} ```abap TABLES: ALSMEX_TABLINE. " * Rows for Table with Excel Data ``` #### TBTCO — tables · L6-L6 {#decl-zco_common-6-tbtco} ```abap TABLES: TBTCO. " * Job status overview table ``` #### RFCDOC — tables · L7-L7 {#decl-zco_common-7-rfcdoc} ```abap TABLES: RFCDOC. ``` #### RFCDES — tables · L8-L8 {#decl-zco_common-8-rfcdes} ```abap TABLES: RFCDES. ``` #### DBCON — tables · L9-L9 {#decl-zco_common-9-dbcon} ```abap TABLES: DBCON. ``` #### STXH — tables · L10-L10 {#decl-zco_common-10-stxh} ```abap TABLES: STXH. ``` #### GSETH — type-pool · L11-L11 {#decl-zco_common-11-gseth} ```abap TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. ``` #### ICON — type-pool · L11-L11 {#decl-zco_common-11-icon} ```abap TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. ``` #### KCDE — type-pool · L11-L11 {#decl-zco_common-11-kcde} ```abap TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. ``` #### SCP1 — type-pool · L11-L11 {#decl-zco_common-11-scp1} ```abap TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. ``` #### SLIS — type-pool · L11-L11 {#decl-zco_common-11-slis} ```abap TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. ``` #### VRM — type-pool · L11-L11 {#decl-zco_common-11-vrm} ```abap TYPE-POOLS: KCDE, VRM, ICON, SCP1, GSETH, SLIS. ``` #### GV_CALC_I — data · L14-L14 {#decl-zco_common-14-gv_calc_i} ```abap DATA : GV_CALC_I TYPE I. "* % ``` #### GV_PROGRESS_MSG — data · L15-L15 {#decl-zco_common-15-gv_progress_msg} ```abap DATA : GV_PROGRESS_MSG(100). "* Display ``` #### GV_CALC_C0 — data · L16-L16 {#decl-zco_common-16-gv_calc_c0} ```abap DATA : GV_CALC_C0(5). ``` #### GV_CALC_C1 — data · L17-L17 {#decl-zco_common-17-gv_calc_c1} ```abap DATA : GV_CALC_C1(5). ``` #### GV_VALUE_SET — data · L20-L20 {#decl-zco_common-20-gv_value_set} ```abap DATA : GV_VALUE_SET TYPE GSETH_VAL_LINE. ``` #### GT_VALUE_SET — data · L21-L21 {#decl-zco_common-21-gt_value_set} ```abap DATA : GT_VALUE_SET TYPE GSETH_VAL_TAB. ``` #### GT_DETMSG — data · L23-L23 {#decl-zco_common-23-gt_detmsg} ```abap DATA : GT_DETMSG TYPE TABLE OF SCP1_GENERAL_ERROR. ``` #### GT_HEAMSG — data · L24-L24 {#decl-zco_common-24-gt_heamsg} ```abap DATA : GT_HEAMSG TYPE TABLE OF SCP1_GENERAL_ERROR. ``` #### GS_DOMAIN — data · L27-L31 {#decl-zco_common-27-gs_domain} ```abap DATA : BEGIN OF GS_DOMAIN, DOMAIN LIKE DD07T-DOMNAME, VALUE LIKE DD07T-DOMVALUE_L, DDTEXT LIKE DD07T-DDTEXT, END OF GS_DOMAIN. ``` #### GT_DOMAIN — data · L32-L32 {#decl-zco_common-32-gt_domain} ```abap DATA : GT_DOMAIN LIKE TABLE OF GS_DOMAIN. ``` #### T_EXCEL_EXPORT — types · L35-L37 {#decl-zco_common-35-t_excel_export} ```abap TYPES : BEGIN OF T_EXCEL_EXPORT, EXCEL_COL TYPE STRING, END OF T_EXCEL_EXPORT. ``` #### GT_EXCEL_EXPORT — data · L39-L39 {#decl-zco_common-39-gt_excel_export} ```abap DATA : GT_EXCEL_EXPORT TYPE T_EXCEL_EXPORT OCCURS 0 WITH HEADER LINE. ``` #### GV_DIP_MOD — data · L43-L43 {#decl-zco_common-43-gv_dip_mod} ```abap DATA : GV_DIP_MOD TYPE C. ``` #### GV_REFRESH — data · L45-L45 {#decl-zco_common-45-gv_refresh} ```abap DATA : GV_REFRESH TYPE C. ``` #### GV_BUKRS_TXT — data · L50-L50 {#decl-zco_common-50-gv_bukrs_txt} ```abap DATA : GV_BUKRS_TXT TYPE T001-BUTXT VALUE ''. ``` #### GV_KOKRS_TXT — data · L51-L51 {#decl-zco_common-51-gv_kokrs_txt} ```abap DATA : GV_KOKRS_TXT TYPE TKT09-TXT VALUE ''. ``` #### GV_WAERS — data · L52-L52 {#decl-zco_common-52-gv_waers} ```abap DATA : GV_WAERS TYPE T001-WAERS VALUE 'KRW'. ``` #### GV_KTOPL — data · L53-L53 {#decl-zco_common-53-gv_ktopl} ```abap DATA : GV_KTOPL TYPE T001-KTOPL VALUE '1000'. ``` #### GV_SPRAS — data · L54-L54 {#decl-zco_common-54-gv_spras} ```abap DATA : GV_SPRAS TYPE T001-SPRAS VALUE '3'. " KO ``` #### GV_LAND1 — data · L55-L55 {#decl-zco_common-55-gv_land1} ```abap DATA : GV_LAND1 TYPE T001-LAND1 VALUE 'KR'. ``` #### GC_BUKRS — constants · L57-L57 {#decl-zco_common-57-gc_bukrs} ```abap CONSTANTS : GC_BUKRS TYPE T001-BUKRS VALUE 'KR01'. ``` #### GC_KOKRS — constants · L58-L58 {#decl-zco_common-58-gc_kokrs} ```abap CONSTANTS : GC_KOKRS TYPE TKA02-KOKRS VALUE 'KR01'. ``` #### GV_KOKRS_BEZEI — data · L60-L60 {#decl-zco_common-60-gv_kokrs_bezei} ```abap DATA : GV_KOKRS_BEZEI LIKE TKA01-BEZEI VALUE ''. ``` #### GS_BDC_OPTION — data · L64-L64 {#decl-zco_common-64-gs_bdc_option} ```abap DATA: GS_BDC_OPTION TYPE CTU_PARAMS. ``` #### GT_BDCDATA — data · L65-L65 {#decl-zco_common-65-gt_bdcdata} ```abap DATA: GT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE. ``` #### GT_MESSTAB — data · L66-L66 {#decl-zco_common-66-gt_messtab} ```abap DATA: GT_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE. ``` #### FTPOST — data · L71-L71 {#decl-zco_common-71-ftpost} ```abap DATA: FTPOST LIKE FTPOST OCCURS 0 WITH HEADER LINE. ``` #### FTTAX — data · L72-L72 {#decl-zco_common-72-fttax} ```abap DATA : FTTAX LIKE FTTAX OCCURS 0 WITH HEADER LINE. ``` #### BLNTAB — data · L73-L73 {#decl-zco_common-73-blntab} ```abap DATA : BLNTAB LIKE BLNTAB OCCURS 0 WITH HEADER LINE. ``` #### GV_FTPOST_TYPE — data · L74-L74 {#decl-zco_common-74-gv_ftpost_type} ```abap DATA : GV_FTPOST_TYPE TYPE C. ``` #### GV_FTPOST_CNT — data · L75-L75 {#decl-zco_common-75-gv_ftpost_cnt} ```abap DATA : GV_FTPOST_CNT TYPE I. ``` #### GV_FTPOST_WAERS — data · L76-L76 {#decl-zco_common-76-gv_ftpost_waers} ```abap DATA : GV_FTPOST_WAERS LIKE T001-WAERS. ``` #### GT_IF_MSG — data · L78-L88 {#decl-zco_common-78-gt_if_msg} ```abap DATA : BEGIN OF GT_IF_MSG OCCURS 0, MSGID LIKE SY-MSGID, MSGNO LIKE SY-MSGNO, MSGTY LIKE SY-MSGTY, MSGV1 LIKE SY-MSGV1, MSGV2 LIKE SY-MSGV2, MSGV3 LIKE SY-MSGV3, MSGV4 LIKE SY-MSGV4, SUBRC LIKE SY-SUBRC, MESSAGE LIKE BDCMSGCOLL-MSGV1, END OF GT_IF_MSG. ``` #### GT_EXCP_INIT_FIELD — data · L92-L94 {#decl-zco_common-92-gt_excp_init_field} ```abap DATA : BEGIN OF GT_EXCP_INIT_FIELD OCCURS 0, FNAME TYPE FNAM_____4, END OF GT_EXCP_INIT_FIELD. ``` #### MACRO_VALUE_TO_RANGE — macro · L103-L121 {#decl-zco_common-103-macro_value_to_range} ```abap DEFINE MACRO_VALUE_TO_RANGE. CLEAR : GV_VALUE_SET. CLEAR : &1. REFRESH : &1. LOOP AT &2 INTO GV_VALUE_SET. &1-LOW = GV_VALUE_SET-VFROM. &1-SIGN = 'I'. IF GV_VALUE_SET-VFROM NE GV_VALUE_SET-VTO. &1-OPTION = 'BT'. &1-HIGH = GV_VALUE_SET-VTO. ELSE. &1-OPTION = 'EQ'. ENDIF. APPEND &1. CLEAR : &1. ENDLOOP. CLEAR : &2. REFRESH : &2. END-OF-DEFINITION. ``` #### ADD_RANGE_EQ — macro · L123-L129 {#decl-zco_common-123-add_range_eq} ```abap DEFINE ADD_RANGE_EQ. CLEAR &1. &1-SIGN = 'I'. &1-OPTION = 'EQ'. &1-LOW = &2. APPEND &1. END-OF-DEFINITION. ``` #### ADD_RANGE_FULL — macro · L131-L138 {#decl-zco_common-131-add_range_full} ```abap DEFINE ADD_RANGE_FULL. CLEAR &1. &1-SIGN = &2. &1-OPTION = &3. &1-LOW = &4. &1-HIGH = &5. APPEND &1. END-OF-DEFINITION. ``` #### LT_TABLE — data · unit 로컬 · L164-L164 {#decl-zco_common-164-lt_table} ```abap DATA : LT_TABLE LIKE DD02L-TABNAME OCCURS 0 WITH HEADER LINE. ``` #### LT_FIELDCAT — data · unit 로컬 · L165-L165 {#decl-zco_common-165-lt_fieldcat} ```abap DATA : LT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV. ``` #### LT_ALV_CAT — data · unit 로컬 · L166-L166 {#decl-zco_common-166-lt_alv_cat} ```abap DATA : LT_ALV_CAT TYPE TABLE OF LVC_S_FCAT. ``` #### L_T001 — data · unit 로컬 · L211-L211 {#decl-zco_common-211-l_t001} ```abap DATA : L_T001 LIKE T001. ``` #### LT_NODE — data · unit 로컬 · L237-L237 {#decl-zco_common-237-lt_node} ```abap DATA : LT_NODE TYPE GSETH_NODE_TAB. ``` #### L_CLASS — data · unit 로컬 · L238-L238 {#decl-zco_common-238-l_class} ```abap DATA : L_CLASS TYPE SETHIER-SETCLASS. ``` #### L_SETID — data · unit 로컬 · L239-L239 {#decl-zco_common-239-l_setid} ```abap DATA : L_SETID TYPE SETHIER-SETID. ``` #### LT_GRPHINFO — data · unit 로컬 · L240-L240 {#decl-zco_common-240-lt_grphinfo} ```abap DATA : LT_GRPHINFO TYPE GRPHINFO OCCURS 0 WITH HEADER LINE. ``` #### LS_BDCTAB — data · unit 로컬 · L311-L311 {#decl-zco_common-311-ls_bdctab} ```abap DATA : LS_BDCTAB TYPE BDCDATA. ``` #### L_NCNT1 — data · unit 로컬 · L493-L493 {#decl-zco_common-493-l_ncnt1} ```abap DATA : L_NCNT1(5) TYPE N. ``` #### L_NCNT2 — data · unit 로컬 · L494-L494 {#decl-zco_common-494-l_ncnt2} ```abap DATA : L_NCNT2(5) TYPE N. ``` #### GR_TABLE — data · unit 로컬 · L526-L526 {#decl-zco_common-526-gr_table} ```abap DATA : GR_TABLE TYPE REF TO CL_SALV_TABLE. ``` #### LT_INTERN — data · unit 로컬 · L603-L603 {#decl-zco_common-603-lt_intern} ```abap DATA : LT_INTERN LIKE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. ``` #### — field-symbol · unit 로컬 · L604-L604 {#decl-zco_common-604--l_fs01-} ```abap FIELD-SYMBOLS : . ``` #### — field-symbol · unit 로컬 · L605-L605 {#decl-zco_common-605--l_fs02-} ```abap FIELD-SYMBOLS: TYPE STANDARD TABLE. ``` #### — field-symbol · unit 로컬 · L606-L606 {#decl-zco_common-606--l_fs03-} ```abap FIELD-SYMBOLS: . ``` #### LT_FCAT — data · unit 로컬 · L762-L762 {#decl-zco_common-762-lt_fcat} ```abap DATA : LT_FCAT TYPE TABLE OF LVC_S_FCAT. ``` #### LS_FCAT — data · unit 로컬 · L763-L763 {#decl-zco_common-763-ls_fcat} ```abap DATA : LS_FCAT TYPE LVC_S_FCAT. ``` #### LF_DATA — data · unit 로컬 · L767-L767 {#decl-zco_common-767-lf_data} ```abap DATA : LF_DATA TYPE REF TO DATA. ``` #### LL_DATA — data · unit 로컬 · L768-L768 {#decl-zco_common-768-ll_data} ```abap DATA : LL_DATA TYPE REF TO DATA. ``` #### L_USR_ACT — data · unit 로컬 · L769-L769 {#decl-zco_common-769-l_usr_act} ```abap DATA : L_USR_ACT TYPE I. ``` #### L_FILE_LEN — data · unit 로컬 · L770-L770 {#decl-zco_common-770-l_file_len} ```abap DATA : L_FILE_LEN TYPE I. ``` #### L_FNAME — data · unit 로컬 · L771-L771 {#decl-zco_common-771-l_fname} ```abap DATA : L_FNAME TYPE STRING. ``` #### L_EXT_FILENAME — data · unit 로컬 · L772-L772 {#decl-zco_common-772-l_ext_filename} ```abap DATA : L_EXT_FILENAME TYPE STRING. ``` #### L_FULLPATH — data · unit 로컬 · L773-L773 {#decl-zco_common-773-l_fullpath} ```abap DATA : L_FULLPATH TYPE STRING. ``` #### L_PATH — data · unit 로컬 · L774-L774 {#decl-zco_common-774-l_path} ```abap DATA : L_PATH TYPE STRING. ``` #### — field-symbol · unit 로컬 · L776-L776 {#decl-zco_common-776--fs_table-} ```abap FIELD-SYMBOLS : TYPE STANDARD TABLE. ``` #### — field-symbol · unit 로컬 · L777-L777 {#decl-zco_common-777--fs_line-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### — field-symbol · unit 로컬 · L778-L778 {#decl-zco_common-778--fs_col-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### LV_AMT — data · unit 로컬 · L933-L933 {#decl-zco_common-933-lv_amt} ```abap DATA : LV_AMT(20) TYPE C. ``` #### LV_EXT — data · unit 로컬 · L934-L934 {#decl-zco_common-934-lv_ext} ```abap DATA : LV_EXT TYPE BAPICURR-BAPICURR. ``` #### L_RESULT — data · unit 로컬 · L1106-L1106 {#decl-zco_common-1106-l_result} ```abap DATA : L_RESULT TYPE ABAP_BOOL. ``` #### L_FILENM — data · unit 로컬 · L1107-L1107 {#decl-zco_common-1107-l_filenm} ```abap DATA : L_FILENM TYPE STRING. ``` #### L_INTERNAL — data · unit 로컬 · L1147-L1147 {#decl-zco_common-1147-l_internal} ```abap DATA: L_INTERNAL TYPE BAPICURR-BAPICURR. ``` #### LV_NRRANG — data · unit 로컬 · L1176-L1176 {#decl-zco_common-1176-lv_nrrang} ```abap DATA: LV_NRRANG LIKE INRDP-NRRANGENR. ``` #### LV_OBJECT — data · unit 로컬 · L1177-L1177 {#decl-zco_common-1177-lv_object} ```abap DATA: LV_OBJECT LIKE NRIV-OBJECT. ``` #### LV_NRRANG — data · unit 로컬 · L1219-L1219 {#decl-zco_common-1219-lv_nrrang} ```abap DATA: LV_NRRANG LIKE INRDP-NRRANGENR. ``` #### LV_OBJECT — data · unit 로컬 · L1220-L1220 {#decl-zco_common-1220-lv_object} ```abap DATA: LV_OBJECT LIKE NRIV-OBJECT. ``` #### LV_YEAR — data · unit 로컬 · L1221-L1221 {#decl-zco_common-1221-lv_year} ```abap DATA: LV_YEAR LIKE INRI-TOYEAR. ``` #### USER_ACTION — data · unit 로컬 · L1371-L1371 {#decl-zco_common-1371-user_action} ```abap DATA: USER_ACTION TYPE I. ``` #### RTN_CODE — data · unit 로컬 · L1372-L1372 {#decl-zco_common-1372-rtn_code} ```abap DATA: RTN_CODE LIKE SY-SUBRC. ``` #### LT_FILETABLE — data · unit 로컬 · L1373-L1373 {#decl-zco_common-1373-lt_filetable} ```abap DATA: LT_FILETABLE TYPE FILETABLE. ``` #### LS_FILETABLE — data · unit 로컬 · L1374-L1374 {#decl-zco_common-1374-ls_filetable} ```abap DATA: LS_FILETABLE TYPE FILE_TABLE. ``` #### LV_RESULT — data · unit 로컬 · L1410-L1410 {#decl-zco_common-1410-lv_result} ```abap DATA: LV_RESULT TYPE CHAR1. ``` #### LV_FILE — data · unit 로컬 · L1411-L1411 {#decl-zco_common-1411-lv_file} ```abap DATA: LV_FILE TYPE STRING. ``` #### LT_DYNPFIELDS — data · unit 로컬 · L1622-L1622 {#decl-zco_common-1622-lt_dynpfields} ```abap DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. ``` #### LS_DYNPFIELDS — data · unit 로컬 · L1623-L1623 {#decl-zco_common-1623-ls_dynpfields} ```abap DATA: LS_DYNPFIELDS TYPE DYNPREAD. ``` #### LV_DYNAME — data · unit 로컬 · L1624-L1624 {#decl-zco_common-1624-lv_dyname} ```abap DATA: LV_DYNAME TYPE SY-REPID. ``` #### LV_DYNUM — data · unit 로컬 · L1625-L1625 {#decl-zco_common-1625-lv_dynum} ```abap DATA: LV_DYNUM TYPE SY-DYNNR. ``` #### — field-symbol · unit 로컬 · L1627-L1627 {#decl-zco_common-1627--fs_field-} ```abap FIELD-SYMBOLS TYPE ANY. ``` #### LT_DYNPFIELDS — data · unit 로컬 · L1680-L1680 {#decl-zco_common-1680-lt_dynpfields} ```abap DATA : LT_DYNPFIELDS TYPE TABLE OF DYNPREAD. ``` #### LS_DYNPFIELDS — data · unit 로컬 · L1681-L1681 {#decl-zco_common-1681-ls_dynpfields} ```abap DATA: LS_DYNPFIELDS TYPE DYNPREAD. ``` #### LV_DYNAME — data · unit 로컬 · L1682-L1682 {#decl-zco_common-1682-lv_dyname} ```abap DATA: LV_DYNAME TYPE SY-REPID. ``` #### LV_DYNUM — data · unit 로컬 · L1683-L1683 {#decl-zco_common-1683-lv_dynum} ```abap DATA: LV_DYNUM TYPE SY-DYNNR. ``` #### — field-symbol · unit 로컬 · L1685-L1685 {#decl-zco_common-1685--fs_field-} ```abap FIELD-SYMBOLS TYPE ANY. ``` #### LV_TRANSFER_BIN — data · unit 로컬 · L1779-L1779 {#decl-zco_common-1779-lv_transfer_bin} ```abap DATA : LV_TRANSFER_BIN TYPE SX_BOOLEAN. ``` #### LT_CONTENT_TXT — data · unit 로컬 · L1780-L1780 {#decl-zco_common-1780-lt_content_txt} ```abap DATA: LT_CONTENT_TXT TYPE SOLI_TAB. ``` #### LT_CONTENT_BIN — data · unit 로컬 · L1781-L1781 {#decl-zco_common-1781-lt_content_bin} ```abap DATA: LT_CONTENT_BIN TYPE SOLIX_TAB. ``` #### LT_OBJHEAD — data · unit 로컬 · L1782-L1782 {#decl-zco_common-1782-lt_objhead} ```abap DATA: LT_OBJHEAD TYPE SOLI_TAB. ``` #### LV_LEN_IN — data · unit 로컬 · L1783-L1783 {#decl-zco_common-1783-lv_len_in} ```abap DATA: LV_LEN_IN LIKE SOOD-OBJLEN. ``` #### LS_OTF — data · unit 로컬 · L1784-L1784 {#decl-zco_common-1784-ls_otf} ```abap DATA: LS_OTF TYPE SOLISTI1. ``` #### LV_BIN_FILESIZE — data · unit 로컬 · L1785-L1785 {#decl-zco_common-1785-lv_bin_filesize} ```abap DATA: LV_BIN_FILESIZE TYPE I. ``` #### LV_BIN_FILE — data · unit 로컬 · L1786-L1786 {#decl-zco_common-1786-lv_bin_file} ```abap DATA: LV_BIN_FILE TYPE XSTRING. ``` #### LT_LINES — data · unit 로컬 · L1787-L1787 {#decl-zco_common-1787-lt_lines} ```abap DATA: LT_LINES LIKE TLINE OCCURS 0 WITH HEADER LINE. ``` #### LV_FILESIZE — data · unit 로컬 · L1788-L1788 {#decl-zco_common-1788-lv_filesize} ```abap DATA : LV_FILESIZE TYPE I. ``` #### LV_FILENAME — data · unit 로컬 · L1789-L1789 {#decl-zco_common-1789-lv_filename} ```abap DATA: LV_FILENAME TYPE STRING. ``` #### LT_OTF — data · unit 로컬 · L1790-L1790 {#decl-zco_common-1790-lt_otf} ```abap DATA : LT_OTF TYPE TABLE OF ITCOO WITH HEADER LINE. ``` #### LV_FILENAME — data · unit 로컬 · L1855-L1855 {#decl-zco_common-1855-lv_filename} ```abap DATA: LV_FILENAME TYPE STRING. ``` #### LV_PATH — data · unit 로컬 · L1856-L1856 {#decl-zco_common-1856-lv_path} ```abap DATA: LV_PATH TYPE STRING. ``` #### LV_FULLPATH — data · unit 로컬 · L1857-L1857 {#decl-zco_common-1857-lv_fullpath} ```abap DATA: LV_FULLPATH TYPE STRING. ``` #### LV_DEFAULT_EXTENSION — data · unit 로컬 · L1858-L1858 {#decl-zco_common-1858-lv_default_extension} ```abap DATA: LV_DEFAULT_EXTENSION TYPE STRING. ``` #### LV_FILE_FILTER — data · unit 로컬 · L1859-L1859 {#decl-zco_common-1859-lv_file_filter} ```abap DATA: LV_FILE_FILTER TYPE STRING. ``` #### LV_INITIAL_DIRECTORY — data · unit 로컬 · L1860-L1860 {#decl-zco_common-1860-lv_initial_directory} ```abap DATA: LV_INITIAL_DIRECTORY TYPE STRING. ``` #### LV_DEFAULT_FILE_NAME — data · unit 로컬 · L1861-L1861 {#decl-zco_common-1861-lv_default_file_name} ```abap DATA: LV_DEFAULT_FILE_NAME TYPE STRING. ``` #### LV_USER_ACTION — data · unit 로컬 · L1864-L1864 {#decl-zco_common-1864-lv_user_action} ```abap DATA: LV_USER_ACTION TYPE I. ``` #### — field-symbol · unit 로컬 · L1920-L1920 {#decl-zco_common-1920--field-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### — field-symbol · unit 로컬 · L1921-L1921 {#decl-zco_common-1921--itab-} ```abap FIELD-SYMBOLS : TYPE STANDARD TABLE. ``` #### — field-symbol · unit 로컬 · L1922-L1922 {#decl-zco_common-1922--iline-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### LV_CURR — data · unit 로컬 · L2002-L2002 {#decl-zco_common-2002-lv_curr} ```abap DATA : LV_CURR(15) TYPE C. ``` #### LT_INTERN — data · unit 로컬 · L2198-L2198 {#decl-zco_common-2198-lt_intern} ```abap DATA : LT_INTERN TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE. ``` #### LV_INDEX — data · unit 로컬 · L2200-L2200 {#decl-zco_common-2200-lv_index} ```abap DATA : LV_INDEX TYPE I. ``` #### — field-symbol · unit 로컬 · L2201-L2201 {#decl-zco_common-2201--fs_line-} ```abap FIELD-SYMBOLS : . ``` ### `ZCOC0120F01` (66건) #### L_UCOMM — data · unit 로컬 · L47-L47 {#decl-zcoc0120f01-47-l_ucomm} ```abap DATA : L_UCOMM LIKE SY-UCOMM. ``` #### LT_LOWERCASE — data · unit 로컬 · L158-L161 {#decl-zcoc0120f01-158-lt_lowercase} ```abap DATA : BEGIN OF LT_LOWERCASE OCCURS 0, DOMNAME LIKE DD01L-DOMNAME, LOWERCASE LIKE DD01L-LOWERCASE, END OF LT_LOWERCASE. ``` #### — field-symbol · unit 로컬 · L163-L163 {#decl-zcoc0120f01-163--fs_upld_field-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### — field-symbol · unit 로컬 · L164-L164 {#decl-zcoc0120f01-164--fs_data_field-} ```abap FIELD-SYMBOLS: TYPE ANY. ``` #### LV_CONVFUNC — data · unit 로컬 · L165-L165 {#decl-zcoc0120f01-165-lv_convfunc} ```abap DATA : LV_CONVFUNC TYPE STRING. ``` #### LF_OREF — data · unit 로컬 · L166-L166 {#decl-zcoc0120f01-166-lf_oref} ```abap DATA : LF_OREF TYPE REF TO CX_ROOT. ``` #### LV_TEXT — data · unit 로컬 · L167-L167 {#decl-zcoc0120f01-167-lv_text} ```abap DATA : LV_TEXT TYPE STRING. ``` #### LT_FORALL — data · unit 로컬 · L264-L264 {#decl-zcoc0120f01-264-lt_forall} ```abap DATA : LT_FORALL LIKE GT_DATA OCCURS 0 WITH HEADER LINE. ``` #### LV_ERR — data · unit 로컬 · L265-L265 {#decl-zcoc0120f01-265-lv_err} ```abap DATA : LV_ERR. ``` #### LT_CHECK — data · unit 로컬 · L266-L266 {#decl-zcoc0120f01-266-lt_check} ```abap DATA : LT_CHECK LIKE GT_DATA OCCURS 0 WITH HEADER LINE. ``` #### LV_PERCENT — data · unit 로컬 · L267-L267 {#decl-zcoc0120f01-267-lv_percent} ```abap DATA : LV_PERCENT LIKE COBRB-PROZS. ``` #### LV_BUDGET — data · unit 로컬 · L268-L268 {#decl-zcoc0120f01-268-lv_budget} ```abap DATA : LV_BUDGET LIKE BSEG-DMBTR. ``` #### LV_CODE — data · unit 로컬 · L269-L269 {#decl-zcoc0120f01-269-lv_code} ```abap DATA : LV_CODE TYPE C. ``` #### LV_MSG — data · unit 로컬 · L270-L270 {#decl-zcoc0120f01-270-lv_msg} ```abap DATA : LV_MSG(100) TYPE C. ``` #### L_ANSWER — data · unit 로컬 · L603-L603 {#decl-zcoc0120f01-603-l_answer} ```abap DATA: L_ANSWER. ``` #### POPUP_FIELDCAT — data · unit 로컬 · L655-L655 {#decl-zcoc0120f01-655-popup_fieldcat} ```abap DATA : POPUP_FIELDCAT TYPE LVC_T_FCAT. ``` #### LS_LAYO — data · unit 로컬 · L656-L656 {#decl-zcoc0120f01-656-ls_layo} ```abap DATA : LS_LAYO TYPE LVC_S_LAYO. ``` #### LT_POPUP — data · unit 로컬 · L657-L657 {#decl-zcoc0120f01-657-lt_popup} ```abap DATA : LT_POPUP LIKE GT_LOG_POP OCCURS 0 WITH HEADER LINE. ``` #### LS_FIELDCAT — data · unit 로컬 · L658-L658 {#decl-zcoc0120f01-658-ls_fieldcat} ```abap DATA : LS_FIELDCAT TYPE LVC_S_FCAT. ``` #### LT_AUFK_OBJNR — data · unit 로컬 · L722-L722 {#decl-zcoc0120f01-722-lt_aufk_objnr} ```abap DATA : LT_AUFK_OBJNR LIKE ONROR OCCURS 0 WITH HEADER LINE. ``` #### LV_STRNM — data · unit 로컬 · L840-L840 {#decl-zcoc0120f01-840-lv_strnm} ```abap DATA : LV_STRNM LIKE DD02L-TABNAME. ``` #### LT_UPLD_FCAT — data · unit 로컬 · L841-L841 {#decl-zcoc0120f01-841-lt_upld_fcat} ```abap DATA : LT_UPLD_FCAT LIKE TABLE OF GS_UPLD_FCAT. ``` #### LS_FIELDCAT — data · unit 로컬 · L895-L895 {#decl-zcoc0120f01-895-ls_fieldcat} ```abap DATA : LS_FIELDCAT TYPE LVC_S_FCAT. ``` #### LV_FIELD — data · unit 로컬 · L896-L896 {#decl-zcoc0120f01-896-lv_field} ```abap DATA : LV_FIELD(30) TYPE C. ``` #### LV_CNT — data · unit 로컬 · L897-L897 {#decl-zcoc0120f01-897-lv_cnt} ```abap DATA : LV_CNT TYPE I. ``` #### — field-symbol · unit 로컬 · L898-L898 {#decl-zcoc0120f01-898--fs-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### LS_FIELDCAT — data · unit 로컬 · L930-L930 {#decl-zcoc0120f01-930-ls_fieldcat} ```abap DATA : LS_FIELDCAT TYPE LVC_S_FCAT. ``` #### — field-symbol · unit 로컬 · L931-L931 {#decl-zcoc0120f01-931--fs_field-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### — field-symbol · unit 로컬 · L932-L932 {#decl-zcoc0120f01-932--fs_data-} ```abap FIELD-SYMBOLS : LIKE GT_DATA. ``` #### LV_FIELD — data · unit 로컬 · L933-L933 {#decl-zcoc0120f01-933-lv_field} ```abap DATA : LV_FIELD(30) TYPE C. ``` #### L_ANSWER — data · unit 로컬 · L959-L959 {#decl-zcoc0120f01-959-l_answer} ```abap DATA: L_ANSWER. ``` #### LT_RETURNS — data · unit 로컬 · L993-L993 {#decl-zcoc0120f01-993-lt_returns} ```abap DATA : LT_RETURNS LIKE BAPIRET2 OCCURS 0 WITH HEADER LINE. ``` #### LS_CREATED — data · unit 로컬 · L994-L994 {#decl-zcoc0120f01-994-ls_created} ```abap DATA : LS_CREATED LIKE BAPI1022_REFERENCE. ``` #### LS_GENERAL — data · unit 로컬 · L995-L995 {#decl-zcoc0120f01-995-ls_general} ```abap DATA : LS_GENERAL LIKE BAPI1022_FEGLG001. ``` #### LS_GENERALX — data · unit 로컬 · L996-L996 {#decl-zcoc0120f01-996-ls_generalx} ```abap DATA : LS_GENERALX LIKE BAPI1022_FEGLG001X. ``` #### LS_TIMEDEPENDANT — data · unit 로컬 · L997-L997 {#decl-zcoc0120f01-997-ls_timedependant} ```abap DATA : LS_TIMEDEPENDANT LIKE BAPI1022_FEGLG003. ``` #### LS_TIMEDEPENDANTX — data · unit 로컬 · L998-L998 {#decl-zcoc0120f01-998-ls_timedependantx} ```abap DATA : LS_TIMEDEPENDANTX LIKE BAPI1022_FEGLG003X. ``` #### LS_DATA — data · unit 로컬 · L999-L999 {#decl-zcoc0120f01-999-ls_data} ```abap DATA : LS_DATA LIKE GT_DATA. ``` #### LT_HEADER — data · unit 로컬 · L1089-L1089 {#decl-zcoc0120f01-1089-lt_header} ```abap DATA : LT_HEADER LIKE GT_DATA OCCURS 0 WITH HEADER LINE. ``` #### LV_BDC_SUBRC — data · unit 로컬 · L1090-L1090 {#decl-zcoc0120f01-1090-lv_bdc_subrc} ```abap DATA : LV_BDC_SUBRC LIKE SY-DATUM. ``` #### LV_C_BETRR — data · unit 로컬 · L1091-L1091 {#decl-zcoc0120f01-1091-lv_c_betrr} ```abap DATA : LV_C_BETRR(16) TYPE C. ``` #### LV_MESSAGE — data · unit 로컬 · L1212-L1212 {#decl-zcoc0120f01-1212-lv_message} ```abap DATA : LV_MESSAGE LIKE BDCMSGCOLL-MSGV1. ``` #### LT_ZCOT0040 — data · unit 로컬 · L1213-L1213 {#decl-zcoc0120f01-1213-lt_zcot0040} ```abap DATA : LT_ZCOT0040 LIKE ZCOT0040 OCCURS 0 WITH HEADER LINE. ``` #### LT_FORALL — data · unit 로컬 · L1256-L1256 {#decl-zcoc0120f01-1256-lt_forall} ```abap DATA : LT_FORALL LIKE GT_DATA OCCURS 0 WITH HEADER LINE. ``` #### LT_CHECK — data · unit 로컬 · L1257-L1257 {#decl-zcoc0120f01-1257-lt_check} ```abap DATA : LT_CHECK LIKE GT_DATA OCCURS 0 WITH HEADER LINE. ``` #### LV_PERCENT — data · unit 로컬 · L1258-L1258 {#decl-zcoc0120f01-1258-lv_percent} ```abap DATA : LV_PERCENT LIKE COBRB-PROZS. ``` #### LV_ERR — data · unit 로컬 · L1259-L1259 {#decl-zcoc0120f01-1259-lv_err} ```abap DATA : LV_ERR. ``` #### LV_BUDGET — data · unit 로컬 · L1260-L1260 {#decl-zcoc0120f01-1260-lv_budget} ```abap DATA : LV_BUDGET LIKE BSEG-DMBTR. ``` #### LV_CODE — data · unit 로컬 · L1261-L1261 {#decl-zcoc0120f01-1261-lv_code} ```abap DATA : LV_CODE TYPE C. ``` #### LV_MSG — data · unit 로컬 · L1262-L1262 {#decl-zcoc0120f01-1262-lv_msg} ```abap DATA : LV_MSG(100) TYPE C. ``` #### LS_LVC_MODI — data · unit 로컬 · L1416-L1416 {#decl-zcoc0120f01-1416-ls_lvc_modi} ```abap DATA : LS_LVC_MODI TYPE LVC_S_MODI. ``` #### LV_IDX — data · unit 로컬 · L1419-L1419 {#decl-zcoc0120f01-1419-lv_idx} ```abap DATA : LV_IDX LIKE LS_LVC_MODI-ROW_ID. ``` #### LS_DATA — data · unit 로컬 · L1420-L1420 {#decl-zcoc0120f01-1420-ls_data} ```abap DATA : LS_DATA LIKE GT_DATA. ``` #### — field-symbol · unit 로컬 · L1421-L1421 {#decl-zcoc0120f01-1421--fs_data-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### LT_ZCOT0040 — data · unit 로컬 · L1503-L1503 {#decl-zcoc0120f01-1503-lt_zcot0040} ```abap DATA : LT_ZCOT0040 LIKE ZCOT0040 OCCURS 0 WITH HEADER LINE. ``` #### LT_FORALL — data · unit 로컬 · L1537-L1537 {#decl-zcoc0120f01-1537-lt_forall} ```abap DATA : LT_FORALL LIKE GT_DATA OCCURS 0 WITH HEADER LINE. ``` #### LV_SUM — data · unit 로컬 · L1538-L1538 {#decl-zcoc0120f01-1538-lv_sum} ```abap DATA : LV_SUM LIKE COSP-WKG001. ``` #### LR_OBJNR — ranges · unit 로컬 · L1539-L1539 {#decl-zcoc0120f01-1539-lr_objnr} ```abap RANGES : LR_OBJNR FOR ONROR-OBJNR. ``` #### LV_CNT — data · unit 로컬 · L1540-L1540 {#decl-zcoc0120f01-1540-lv_cnt} ```abap DATA : LV_CNT TYPE I. ``` #### LV_NPERBL — data · unit 로컬 · L1541-L1541 {#decl-zcoc0120f01-1541-lv_nperbl} ```abap DATA : LV_NPERBL(3) TYPE N. ``` #### LV_FIELD — data · unit 로컬 · L1542-L1542 {#decl-zcoc0120f01-1542-lv_field} ```abap DATA : LV_FIELD(30) TYPE C. ``` #### — field-symbol · unit 로컬 · L1543-L1543 {#decl-zcoc0120f01-1543--fs_field-} ```abap FIELD-SYMBOLS : TYPE ANY. ``` #### LR_WRTTP — ranges · unit 로컬 · L1546-L1546 {#decl-zcoc0120f01-1546-lr_wrttp} ```abap RANGES : LR_WRTTP FOR COSP-WRTTP. ``` #### LR_VERSN — ranges · unit 로컬 · L1547-L1547 {#decl-zcoc0120f01-1547-lr_versn} ```abap RANGES : LR_VERSN FOR COSP-VERSN. ``` #### LR_AUFNR — ranges · unit 로컬 · L1623-L1623 {#decl-zcoc0120f01-1623-lr_aufnr} ```abap RANGES : LR_AUFNR FOR AUFK-AUFNR. ``` #### LR_BUDAT — ranges · unit 로컬 · L1624-L1624 {#decl-zcoc0120f01-1624-lr_budat} ```abap RANGES : LR_BUDAT FOR COBK-BUDAT. ``` ## Unit 목록 (컨테이너) | unit | 유형 | 위치 | 조각 | 한 줄 요약 | |---|---|---|---|---| | INITIALIZATION | EVENT | ZCOC0120 L25-31 | 0 | INITIALIZATION 에서 화면 기본값(SET_DYNP)과 엑셀 양식 다운로드 버튼(FC01_ACTIVE)을 설정한다. | | AT SELECTION-SCREEN | EVENT | ZCOC0120 L32-34 | 0 | AT SELECTION-SCREEN 에서 CONTROL_FCXX 를 호출하여 선택화면 기능키(FC01 엑셀 양식 다운로드) 명령을 처리한다. | | AT SELECTION-SCREEN OUTPUT | EVENT | ZCOC0120 L35-40 | 0 | 선택화면 PBO 에서 LOOP_AT_SCREEN 을 호출하여 모드별 화면 필드 표시/숨김을 제어한다. | | AT SELECTION-SCREEN ON VALUE-REQUEST | EVENT | ZCOC0120 L41-46 | 0 | 업로드 파일 경로 P_FNAME 의 F4 도움말로 파일 선택 다이얼로그(F4_FNAME)를 호출한다. | | START-OF-SELECTION | EVENT | ZCOC0120 L47-54 | 1 | 입력 검증(CHECK_INPUT) → 초기화(INITIALIZE_DATA) → 엑셀 읽기·검증(PROCESS_DATA) 순으로 메인 처리를 호출하는 START-OF-SELECTION 이벤트이다. | | END-OF-SELECTION | EVENT | ZCOC0120 L55-66 | 1 | 온라인 실행 시 검증된 업로드 데이터(GT_DATA)가 있으면 화면 100(ALV)을 호출하고 없으면 메시지를 내는 END-OF-SELECTION 이벤트이다. | | LCL_DEF_RECEIVER~HANDLE_TOP_OF_PAGE | METHOD | ZCOC0120C01 L63-65 | 0 | | | LCL_DEF_RECEIVER~HANDLE_TOOLBAR | METHOD | ZCOC0120C01 L67-71 | 0 | | | LCL_DEF_RECEIVER~HANDLE_USER_COMMAND | METHOD | ZCOC0120C01 L73-77 | 0 | | | LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED | METHOD | ZCOC0120C01 L79-83 | 0 | | | LCL_DEF_RECEIVER~HANDLE_DATA_CHANGED_FINISHED | METHOD | ZCOC0120C01 L85-89 | 0 | | | LCL_DEF_RECEIVER~HANDLE_HOTSPOT_CLICK | METHOD | ZCOC0120C01 L91-95 | 0 | | | LCL_DEF_RECEIVER~HANDLE_DOUBLE_CLICK | METHOD | ZCOC0120C01 L97-101 | 0 | | | LCL_DEF_RECEIVER~HANDLE_ON_F4 | METHOD | ZCOC0120C01 L103-111 | 0 | | | LCL_DEF_RECEIVER~HANDLE_CONTEXT_MENU_REQ | METHOD | ZCOC0120C01 L113-115 | 0 | | | TOOBAR_PART | FORM | ZCOC0120C01 L123-127 | 0 | | | USER_COMMAND_PART | FORM | ZCOC0120C01 L135-141 | 0 | | | DATA_CHANGED | FORM | ZCOC0120C01 L149-152 | 0 | | | F_OUT_MESSAGE_PROC | FORM | ZCOC0120C01 L161-177 | 0 | | | DATA_CHANGED_FINISHED | FORM | ZCOC0120C01 L186-189 | 0 | | | HOTSPOT_CLICK | FORM | ZCOC0120C01 L198-201 | 0 | | | DOUBLE_CLICK | FORM | ZCOC0120C01 L211-219 | 0 | | | ON_F4 | FORM | ZCOC0120C01 L233-249 | 0 | | | ON_F4_100 | FORM | ZCOC0120C01 L263-281 | 0 | | | DISPLAY_ALV_LIST | FORM | ZCOC0120C01 L291-361 | 0 | | | SET_FCAT_DDIC_X01 | FORM | ZCOC0120C01 L371-436 | 0 | | | FILL_FIELD_CATALOGS | FORM | ZCOC0120C01 L448-466 | 0 | | | FILL_FCAT | FORM | ZCOC0120C01 L480-561 | 0 | | | GET_LIKEITAB_FACT | FORM | ZCOC0120C01 L572-622 | 0 | | | SET_TOP_OF_PAGE | FORM | ZCOC0120C01 L634-692 | 0 | | | SET_TOP_OF_PAGE_TEXT | FORM | ZCOC0120C01 L702-712 | 0 | | | LOOP_AT_SCREEN | FORM | ZCOC0120F01 L6-23 | 0 | 선택화면에서 MG1 그룹 필드를 입력 불가로 만들고 모드(P_SETT/P_SAV)에 따라 파일(MG2)·상태(MG3) 필드 그룹을 숨긴다. | | SET_DYNP | FORM | ZCOC0120F01 L30-37 | 0 | 선택화면 초기화 시 회사코드(P_BUKRS)·관리회계영역(P_KOKRS) 기본 정보를 읽어 텍스트(P_BUTXT, P_BEZEI)를 화면에 설정한다. | | CONTROL_FCXX | FORM | ZCOC0120F01 L46-59 | 1 | 선택화면 기능키 FC01(엑셀 양식 다운로드) 클릭 시 Z_CO_OPEN_SMW0 로 SMW0 에 등록된 ZCOC0120 엑셀 양식을 연다. | | CHECK_INPUT | FORM | ZCOC0120F01 L68-75 | 1 | 자산생성 모드(P_SAV)에서 업로드 파일 경로(P_FNAME)가 입력되지 않으면 오류 메시지를 내고 처리를 중단한다. | | INITIALIZE_DATA | FORM | ZCOC0120F01 L81-112 | 0 | 회사코드·관리회계영역 텍스트 설정, 메인 ALV 필드카탈로그 취득, BDC 표시 모드 설정 및 처리 상태 플래그(업로드 오류·기처리·변경) 초기화를 수행한다. | | PROCESS_DATA | FORM | ZCOC0120F01 L118-136 | 1 | 선택 조건(회사코드·관리회계영역·연도·기간)의 기존 ZCOT0040 저장 내역을 조회하고 모드(P_SAV 자산생성/P_SETT 정산규칙)에 따라 READ_DATA 또는 PROCESS_SETTLEMENT 로 분기한다. | | FC01_ACTIVE | FORM | ZCOC0120F01 L145-148 | 0 | 선택화면 버튼 FC01 을 '엑셀 양식 다운로드' 아이콘 버튼으로 활성화한다. | | TRANSFER_GT_DATA | FORM | ZCOC0120F01 L157-252 | 2 | 동적 업로드 테이블 의 문자 데이터를 대문자 변환·%제거·CONVERSION_EXIT·숫자/날짜 변환을 거쳐 GT_DATA 구조로 이관한다. | | VALIDATION_CHECK_A | FORM | ZCOC0120F01 L262-546 | 10 | 엑셀 업로드 데이터(자산생성 모드)를 코스트센터·자산클래스·오더·기존 자산 마스터로 검증하고 금액/% 규칙, 중복 저장, 예산 초과, 오더유형(I/S)을 점검하여 행별 오류 상태·메시지를 설정한다. | | READ_DATA | FORM | ZCOC0120F01 L555-580 | 1 | 자산생성 모드의 엑셀 읽기 흐름: 동적 업로드 테이블 생성, 엑셀 읽기(UPLOAD_XLS_STRUCT), GT_DATA 이관, 통화 변환·검증(VALIDATION_CHECK_A)·COSP 실적 조회, 표시 편집을 수행한다. | | SET_ERROR_FIELD_RED | FORM | ZCOC0120F01 L588-596 | 0 | 오류 필드명을 ALV 셀 색상 테이블(F_COL)에 적색(COL=6)으로 등록하여 해당 셀을 강조 표시하는 헬퍼이다. | | EXECUTE_BDC | FORM | ZCOC0120F01 L602-630 | 1 | 정산규칙 생성 버튼(&RUN) 처리: 중복 실행·미검증 변경 여부를 점검하고 확인 팝업 후 CREATE_SETTLEMENT_RULE(KO02 BDC)과 MODIFY_DB(ZCOT0040 갱신)를 수행한다. | | BDC_OPTION | FORM | ZCOC0120F01 L638-646 | 0 | KO02 BDC 실행 옵션(DEFSIZE, 업데이트 모드 S, 표시 모드 PV_DSMOD)을 SET_BDC_OPTION 으로 GS_BDC_OPTION에 설정하는 단순 래퍼이다. | | SHOW_ERROR_LOG | FORM | ZCOC0120F01 L654-712 | 2 | ALV에서 선택한 행(P_ROW)의 처리 메시지 목록(MSG_LIST)을 팝업 그리드로 표시한다. | | SELECT_DATA | FORM | ZCOC0120F01 L721-770 | 2 | 정산규칙 모드에서 ZCOT0040 저장 내역을 상태(미처리/실패/성공)로 필터링하고 ONROR 오브젝트번호를 붙여 GT_DATA를 구성한다. | | ADD_DATA_MESSAGE | FORM | ZCOC0120F01 L779-805 | 0 | 상태(S/E/W)에 따른 아이콘과 메시지 텍스트를 구성하여 현재 GT_DATA 행의 메시지 목록(MSG_LIST)에 추가하는 공통 로그 헬퍼이다. | | EDIT_DATA_A | FORM | ZCOC0120F01 L814-831 | 1 | 업로드 데이터에 구분 텍스트(자산신규생성/기존 자산)와 통화·단위를 채워 ALV 표시용으로 편집한다. | | CREATE_UPLOAD_TABLE | FORM | ZCOC0120F01 L839-885 | 1 | 업로드 구조(ZCOS0180)의 필드카탈로그를 LVC_FIELDCATALOG_MERGE 로 얻어 모든 필드를 CHAR 로 바꾼 뒤 CL_ALV_TABLE_CREATE 로 동적 업로드 테이블을 생성한다. | | CHECK_VALUE_FIELD | FORM | ZCOC0120F01 L893-922 | 1 | 현재 GT_DATA 행에서 정산금액(BETRR)과 정산%(PROZS)가 둘 다 입력되었는지 확인하여 오류 플래그 PV_ERR 를 반환한다. | | CONVERT_KRW_DATA | FORM | ZCOC0120F01 L929-949 | 1 | ALV 필드카탈로그의 CURR 타입 필드마다 GT_DATA 금액을 CONV_DB_WAERS로 통화(GV_WAERS) 소수점 기준 DB 내부 형식으로 변환하는 FORM이다. | | EXECUTE_BAPI | FORM | ZCOC0120F01 L958-983 | 1 | 자산 생성 버튼(&SAV) 처리: 중복 실행을 막고 확인 팝업 후 CREATE_FIXED_ASSET(본자산 생성)과 SAVE_DB(ZCOT0040 저장)를 수행한다. | | CREATE_FIXED_ASSET | FORM | ZCOC0120F01 L992-1078 | 3 | 업로드 구분 '1'(신규) 건에 대해 BAPI_FIXEDASSET_CREATE 로 본자산을 생성하고 결과(자산번호·상태·메시지)를 GT_DATA에 반영하며 기존 자산(구분 2)은 성공으로 표시한다. | | CREATE_SETTLEMENT_RULE | FORM | ZCOC0120F01 L1087-1202 | 4 | 오더별로 KO02 BDC(SAPLKOBS 정산규칙 화면)를 구성·실행하여 자산별 정산규칙(금액 또는 %)을 생성하고 결과를 GT_DATA에 반영한다. | | SAVE_DB | FORM | ZCOC0120F01 L1211-1246 | 2 | 본자산 생성에 성공한 건의 정산규칙 내역을 ZCOT0040 테이블에 저장하고 결과 메시지를 GT_DATA에 반영한다. | | VALIDATION_CHECK_C | FORM | ZCOC0120F01 L1255-1389 | 5 | 정산규칙 모드에서 저장 내역의 오더(AUFK/ONROR)·자산(ANLA) 존재를 확인하고 오더별 정산% 합계 100%, 금액/% 택일, Z_CO_CHECK_BUDGET 예산 초과를 검증하여 상태·메시지를 설정한다. | | PROCESS_SETTLEMENT | FORM | ZCOC0120F01 L1398-1406 | 1 | 정산규칙 모드의 처리 흐름으로 SELECT_DATA(ZCOT0040 조회)·SELECT_COSP(실적 누계)·VALIDATION_CHECK_C(검증)를 순서대로 수행하고 점검 완료 메시지를 낸다. | | DATA_CHANGED_MODIFY | FORM | ZCOC0120F01 L1414-1492 | 2 | ALV에서 정산금액(BETRR)·정산%(PROZS) 셀이 수정되면 GT_DATA에 반영하고 즉시 ZCOT0040 을 UPDATE 하며 변경 플래그(GV_CHANGED)를 설정한다. | | MODIFY_DB | FORM | ZCOC0120F01 L1501-1527 | 1 | 정산규칙 BDC 처리 결과(정산금액·정산%·성공 여부)를 기존 ZCOT0040 저장 내역에 반영하여 DB를 갱신한다. | | SELECT_COSP | FORM | ZCOC0120F01 L1536-1614 | 2 | 오더 오브젝트번호별 COSP 실제/통계/약정/임시(WRTTP 04,11,22,60) 버전 000 의 12개월 합계를 조회하여 GT_DATA-WKG_SUM(실적 누계)에 채운다. | | CALL_KOB1 | FORM | ZCOC0120F01 L1622-1648 | 1 | 선택한 행의 오더번호로 KOB1(오더 실적 라인아이템) 조회 프로그램 RKAEP000 을 전체 전기일 기간으로 호출한다. | | USER_COMMAND_0100 INPUT | MODULE | ZCOC0120I01 L6-32 | 1 | 화면 0100의 OK 코드에 따라 자산 생성(&SAV), 정산규칙 BDC 실행(&RUN), 재검증(&VAL) 또는 화면 종료를 분기하는 PAI 모듈이다. | | STATUS_0100 OUTPUT | MODULE | ZCOC0120O01 L6-33 | 0 | | | CREATE_AND_INIT_CONTROLS_0100 OUTPUT | MODULE | ZCOC0120O01 L39-82 | 0 | | | CREATE_CUSTOM_OBJECT_0100 | FORM | ZCOC0120O01 L92-136 | 0 | | | SET_ALV_LAYOUT_0100 | FORM | ZCOC0120O01 L144-168 | 0 | | | SET_ALV_LAYOUT_POP | FORM | ZCOC0120O01 L176-185 | 0 | | | SET_ALV_TOOLBAR_0100 | FORM | ZCOC0120O01 L193-215 | 0 | | | SET_ALV_EVENT_REGISTER_0100 | FORM | ZCOC0120O01 L224-252 | 0 | | | SET_TOP_OF_PAGE_TEXT_0100 | FORM | ZCOC0120O01 L261-280 | 0 | | | SET_FCAT_LIKETAB_0100 | FORM | ZCOC0120O01 L290-414 | 0 | | | SET_ALV_SORT_0100 | FORM | ZCOC0120O01 L422-447 | 0 | | | LCL_DEF_GRID~U_SET_FIXED_ROWS | METHOD | ZCO_ALV L222-226 | 0 | | | LCL_DEF_GRID~U_SET_RESIZE_COLS | METHOD | ZCO_ALV L228-232 | 0 | | | LCL_DEF_GRID~U_SCROLL_TO_BOTTOM | METHOD | ZCO_ALV L234-236 | 0 | | | LCL_DEF_GRID~U_SET_CURRENT_CELL_BASE | METHOD | ZCO_ALV L238-243 | 0 | | | LCL_DEF_GRID~U_SET_OPTIMIZE | METHOD | ZCO_ALV L245-249 | 0 | | | CLEAR_CONTAINER_PROC | FORM | ZCO_ALV L263-311 | 0 | | | UCOMM_PROC | FORM | ZCO_ALV L320-343 | 0 | | | GET_SELECTED_ROW | FORM | ZCO_ALV L352-361 | 0 | | | GET_SELECTED_ROW2 | FORM | ZCO_ALV L370-398 | 0 | | | REFRESH_CONTAINER | FORM | ZCO_ALV L407-437 | 0 | | | APPEND_EXCLUDE_FUNCTIONS | FORM | ZCO_ALV L446-454 | 0 | | | REGISTER_ALV_EVENT | FORM | ZCO_ALV L463-466 | 0 | | | CHECK_SORT_PARAMETER | FORM | ZCO_ALV L473-494 | 0 | | | ADD_EXCP_FIELD_WHEN_INITIAL | FORM | ZCO_COMMON L146-151 | 0 | | | GET_FCAT_LIKE_ITAB | FORM | ZCO_COMMON L160-201 | 1 | 프로그램 내부테이블 이름으로 REUSE_ALV_FIELDCATALOG_MERGE→LVC 변환→LVC_FIELDCAT_COMPLETE를 거쳐 LVC 필드카탈로그를 생성하는 공통 FORM이다. | | SET_COMPANY_BASE | FORM | ZCO_COMMON L210-227 | 1 | 회사코드로 T001을 읽어 통화·계정과목표·언어·회사명·국가 전역변수를 설정하는 공통 FORM이다. | | GET_SETLEAF_VALUES | FORM | ZCO_COMMON L233-297 | 1 | 세트 클래스(코스트센터 그룹/원가요소 그룹 등)와 세트명으로 SETID를 구성해 K_HIERARCHY_TABLES_READ로 세트의 값 목록을 GT_VALUE_SET에 읽어오는 공통 FORM이다. | | DYNPRO | FORM | ZCO_COMMON L309-335 | 1 | BDCDATA 한 줄(화면 시작 또는 필드/값)을 생성해 BDC 테이블에 추가하되, 예외 등록 필드가 초기값이면 건너뛰는 공통 FORM이다. | | SET_BDC_OPTION | FORM | ZCO_COMMON L349-366 | 0 | | | ZERO_O | FORM | ZCO_COMMON L375-381 | 0 | | | ZERO_I | FORM | ZCO_COMMON L390-396 | 0 | | | F4_DATE_FORMAT_YYYYMM | FORM | ZCO_COMMON L405-421 | 0 | | | F4_DATE_FORMAT_YYYYMMDD | FORM | ZCO_COMMON L430-436 | 0 | | | DATE_CHK | FORM | ZCO_COMMON L446-455 | 1 | DATE_CHECK_PLAUSIBILITY로 날짜의 유효성을 검사해 결과 코드를 돌려주는 공통 FORM이다. | | BAR_MSG | FORM | ZCO_COMMON L465-470 | 0 | | | BAR_MSG_PER | FORM | ZCO_COMMON L492-516 | 1 | 처리 건수 비율(%)을 계산해 SAPGUI_PROGRESS_INDICATOR로 진행률 메시지를 표시하는 공통 FORM이다. | | DISPLAY_SPOOL_BY_SALV | FORM | ZCO_COMMON L525-535 | 1 | CL_SALV_TABLE=>FACTORY로 전달받은 내부테이블을 SALV(ALV) 리스트로 표시하는 공통 FORM(배치 스풀 출력용)이다. | | SET_MINUS_FRONT | FORM | ZCO_COMMON L544-550 | 0 | | | F4_FNAME | FORM | ZCO_COMMON L558-581 | 0 | | | UPLOAD_DATA | FORM | ZCO_COMMON L595-652 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 동적으로 지정된 내부테이블·구조체에 행/열 단위로 적재하는 공통 업로드 FORM이다. | | BDC_DATE | FORM | ZCO_COMMON L661-667 | 0 | | | BDC_CURR | FORM | ZCO_COMMON L676-680 | 0 | | | BDC_CHECKBOX | FORM | ZCO_COMMON L689-691 | 0 | | | BUILD_MESSAGE | FORM | ZCO_COMMON L701-722 | 1 | BDC 메시지(BDCMSGCOLL)를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | | BUILD_MESSAGE_BAPI | FORM | ZCO_COMMON L732-753 | 1 | BAPIRET2 메시지를 MESSAGE_TEXT_BUILD로 텍스트화하고 '&' 치환문자를 제거하는 공통 FORM이다. | | EXCEL_FORM_DOWNLOAD | FORM | ZCO_COMMON L760-890 | 2 | 엑셀 컬럼 제목 목록으로 동적 테이블을 만들어 헤더 1행만 담은 업로드 양식(xls)을 저장 대화상자를 통해 PC에 다운로드하는 공통 FORM이다. | | CONVERT_CURRENCY | FORM | ZCO_COMMON L903-922 | 1 | 전기일 환율로 외화 금액을 현지통화 금액으로 CONVERT_TO_LOCAL_CURRENCY를 이용해 환산하는 공통 FORM이다. | | CONVERT_CHAR_TO_AMT | FORM | ZCO_COMMON L932-959 | 1 | 콤마가 포함된 문자형 금액을 콤마 제거 후 BAPI_CURRENCY_CONV_TO_INTERNAL로 통화 내부 금액으로 변환하는 공통 FORM이다. | | F4IF_INT_TABLE_VALUE_REQUEST | FORM | ZCO_COMMON L971-999 | 0 | | | POPUP_TO_CONFIRM_02 | FORM | ZCO_COMMON L1010-1023 | 1 | POPUP_TO_CONFIRM_STEP으로 두 줄 질문의 확인 팝업(J/N/A)을 띄워 응답을 돌려주는 공통 FORM이다. | | POPUP_TO_CONFIRM | FORM | ZCO_COMMON L1035-1060 | 1 | POPUP_TO_CONFIRM으로 Yes/No 확인 팝업을 띄워 사용자 응답을 돌려주는 공통 FORM이다. | | GET_LAST_DAY | FORM | ZCO_COMMON L1069-1078 | 1 | RP_LAST_DAY_OF_MONTHS로 주어진 날짜가 속한 월의 마지막 날을 구하는 공통 FORM이다. | | SET_DSMOD | FORM | ZCO_COMMON L1086-1095 | 1 | BDC 처리 모드 입력값이 A/E/N 중 하나인지 검사하고 아니면 오류 메시지로 중단하는 공통 FORM이다. | | FILE_EXISTS | FORM | ZCO_COMMON L1104-1135 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 프론트엔드 파일 존재 여부를 확인해 참/거짓을 돌려주는 공통 FORM이다. | | AMT_CONV_TO_INTERNAL | FORM | ZCO_COMMON L1144-1161 | 1 | 외부 형식 금액을 통화별 소수점에 맞는 SAP 내부 금액으로 BAPI_CURRENCY_CONV_TO_INTERNAL로 변환하는 공통 FORM이다. | | GET_NEXT_NUMBER | FORM | ZCO_COMMON L1172-1203 | 1 | 번호범위 객체·구간으로 NUMBER_GET_NEXT를 호출해 다음 채번 번호를 가져오는 공통 FORM이다. | | GET_NEXT_NUMBER_YEAR | FORM | ZCO_COMMON L1215-1254 | 1 | 번호범위 객체·구간·연도로 NUMBER_GET_NEXT를 호출해 연도별 다음 채번 번호를 가져오는 공통 FORM이다. | | GET_VALUE_LIST_DOM | FORM | ZCO_COMMON L1263-1278 | 1 | 도메인 고정값과 텍스트를 DD07T에서 읽어 전달받은 테이블에 채우는 공통 FORM(F4/드롭다운용)이다. | | GET_DOM_TEXT_LIST | FORM | ZCO_COMMON L1287-1298 | 1 | 도메인 고정값 텍스트를 DD07T에서 읽어 GT_DOMAIN에 누적하는 공통 FORM이다. | | MD_CONVER_MAT_UNIT | FORM | ZCO_COMMON L1311-1341 | 1 | 자재의 수량을 입력 단위에서 출력 단위로 MD_CONVERT_MATERIAL_UNIT을 이용해 환산하는 공통 FORM이다. | | SHOW_MESSAGE_LIST | FORM | ZCO_COMMON L1349-1359 | 1 | 누적된 헤더/상세 메시지 테이블(GT_HEAMSG/GT_DETMSG)을 SCPR_SV_SHOW_MESSAGE_LIST로 팝업 표시하는 공통 FORM이다. | | GET_FILE_PATH | FORM | ZCO_COMMON L1368-1399 | 1 | 파일 열기 대화상자(FILE_OPEN_DIALOG)로 업로드할 XLS 파일을 선택받아 파일 경로를 반환하는 공통 FORM이다. | | CHK_FILE_PATH | FORM | ZCO_COMMON L1408-1433 | 1 | CL_GUI_FRONTEND_SERVICES=>FILE_EXIST로 업로드 파일 경로의 존재를 확인하고 없으면 메시지 후 처리를 중단하는 공통 FORM이다. | | SET_BUTTON_100 | FORM | ZCO_COMMON L1444-1466 | 0 | | | BDC_CREATE_AENNR | FORM | ZCO_COMMON L1545-1612 | 2 | 변경번호(AENNR) 존재 여부를 AENR에서 확인한 뒤 없으면 BDC로 CC01(변경마스터 생성)을 실행하고 결과 메시지를 반환하는 공통 FORM이다. | | GET_DYNP_VALUES_READ | FORM | ZCO_COMMON L1620-1669 | 1 | DYNP_VALUES_READ로 현재 화면의 필드 값을 읽어 같은 이름의 프로그램 변수에 넣는 공통 FORM이다. | | SET_DYNP_VALUES | FORM | ZCO_COMMON L1678-1719 | 1 | 프로그램 변수 값을 DYNP_VALUES_UPDATE로 현재 화면 필드에 반영하는 공통 FORM이다. | | AUTHORITY_CHECK_TCODE | FORM | ZCO_COMMON L1725-1738 | 1 | S_TCODE 권한 객체로 현재 T-Code 실행 권한을 검사하고 T-Code 끝자리가 1이면 조회 모드(GV_DIP_MOD)로 설정하는 공통 FORM이다. | | SET_BTN_1000 | FORM | ZCO_COMMON L1748-1768 | 0 | | | F_PDF_DOWNLOAD | FORM | ZCO_COMMON L1777-1842 | 2 | Smart Forms 출력 결과(OTF)를 PDF로 변환하고 저장 대화상자를 거쳐 PC에 다운로드하는 공통 FORM이다. | | OPEN_SAVE_FILE_SEL | FORM | ZCO_COMMON L1851-1907 | 1 | 파일 저장 대화상자(FILE_SAVE_DIALOG)를 열어 사용자가 지정한 저장 파일명을 돌려주는 공통 FORM이다. | | ALSMEX_TAB_TO_ITAB | FORM | ZCO_COMMON L1917-1945 | 1 | ALSM_EXCEL_TO_INTERNAL_TABLE 결과(ALSMEX_TABLINE)를 동적으로 지정한 내부테이블·구조체에 행/열 매핑하여 적재하는 공통 FORM이다. | | START_INTERFACE_BDC | FORM | ZCO_COMMON L1953-1973 | 1 | FTPOST 작업 테이블을 초기화하고 POSTING_INTERFACE_START로 FI Posting Interface(Call Transaction 방식)를 시작하는 공통 FORM이다. | | END_INTERFACE_BDC | FORM | ZCO_COMMON L1980-1990 | 1 | POSTING_INTERFACE_END를 호출해 FI Posting Interface 세션을 종료하고 FTPOST/FTTAX/BLNTAB 작업 테이블을 초기화하는 공통 FORM이다. | | FILL_FIELD | FORM | ZCO_COMMON L2000-2023 | 1 | Posting Interface(FTPOST)용 필드명·값을 한 건 채우며 금액 필드는 통화 형식으로 편집하여 FTPOST 테이블에 추가하는 공통 FORM이다. | | BUILD_MESSGE_IF | FORM | ZCO_COMMON L2032-2047 | 1 | 인터페이스 메시지 구조(MSGID/MSGNO/MSGV1~4)를 MESSAGE_TEXT_BUILD로 메시지 텍스트로 조립하는 공통 FORM이다. | | GET_POST_PERIOD | FORM | ZCO_COMMON L2057-2084 | 1 | 회사코드와 전기일로 FI_PERIOD_DETERMINE을 호출해 회계연도·전기기간을 구하고 실패 시 날짜에서 직접 추출하는 공통 FORM이다. | | SET_KOKRS_BASE | FORM | ZCO_COMMON L2094-2101 | 1 | TKA01에서 관리회계영역의 명칭·통화·계정과목표를 읽어 전역변수에 설정하는 공통 FORM이다. | | CONV_DB_WAERS | FORM | ZCO_COMMON L2109-2116 | 1 | CURRENCY_AMOUNT_IDOC_TO_SAP로 외부(IDoc) 형식 금액을 통화 소수점에 맞는 SAP 내부 금액으로 변환하는 공통 FORM이다. | | CONV_VIEW_WAERS | FORM | ZCO_COMMON L2126-2134 | 1 | CURRENCY_AMOUNT_SAP_TO_IDOC로 SAP 내부 금액을 통화 소수점에 맞는 외부(IDoc) 형식 문자열로 변환하는 공통 FORM이다. | | CONVERT_1000_U | FORM | ZCO_COMMON L2143-2146 | 0 | | | CONVERT_1000_D | FORM | ZCO_COMMON L2155-2158 | 0 | | | GET_VERSN_TEXT | FORM | ZCO_COMMON L2168-2177 | 1 | TKT09에서 관리회계영역·버전의 계획 버전 텍스트를 로그온 언어로 읽는 공통 FORM이다. | | UPLOAD_XLS_STRUCT | FORM | ZCO_COMMON L2191-2245 | 2 | 엑셀 파일을 ALSM_EXCEL_TO_INTERNAL_TABLE로 읽어 행/열 단위 값을 구조체 컴포넌트에 매핑해 내부테이블로 적재하는 공통 업로드 FORM이다. |