Files

148 KiB

type, title, description, resource, tags, generated, status, x-package, x-changed-on, x-tables-read, x-tables-write, x-calls, x-code-hash, x-unit-count, x-chunk-count, x-declaration-count
type title description resource tags generated status x-package x-changed-on x-tables-read x-tables-write x-calls x-code-hash x-unit-count x-chunk-count x-declaration-count
abap-program ZFIR0140 — [FI] 매출 세금계산서 발행 매출채권(BSID/BSAD)과 매출 전표(BKPF/BSEG/BSET), SD 청구(VBRK)를 논리DB(GET BSID/BKPF/BSEG)로 읽어 매출 세금계산서 발행 대상을 선별하는 프로그램이다. 합산계산서(COLLECTIVE)와 개별계산서(INDIVIDUAL) 방식을 지원하고, 세금 데이터와 고객 주소를 붙여 ALV 로 보여준 뒤 실제 출력·전송은 ZFIR0141 에 위임한다. 전자세금계산서 전환(2006) 이후 ZDTI_* 상태 테이블로 발행 상태를 관리한다. abap://ZFIR0140
세금계산서
전자세금계산서
매출
부가세
채권관리
FI
세액
공급가액
차대구분
순액
부호반전
고객수집
세금라인
임시전표
매출전표
전표헤더
회사코드
전표유형
자동세금계산
세금코드
by at
abap-indexing/z-ai/glm-5.2:free 2026-09-20T15:36:22+00:00
stable
BKPF
BSAD
BSEC
BSEG
BSET
J_1BBRANCH
KNA1
RBKP
T001
T003
T074U
VBKPF
VBRK
VBSEGD
VBSEGS
ZDTI_SAPP
ZDTI_STATUS
AUSGLOP_ITAB
GT_AUSGLOP
GT_KUNDE
SEL_AUSGLOP_ITAB
DYNP_VALUES_UPDATE
FB03
FI_PERIOD_DETERMINE
HELP_VALUES_GET_WITH_TABLE_EXT
KR_USER_EXIT_ROUNDOFF
KR_USER_EXIT_TAX_CODE
NUMBER_GET_NEXT
REUSE_ALV_COMMENTARY_WRITE
REUSE_ALV_EVENTS_GET
REUSE_ALV_FIELDCATALOG_MERGE
REUSE_ALV_HIERSEQ_LIST_DISPLAY
REUSE_ALV_VARIANT_DEFAULT_GET
REUSE_ALV_VARIANT_EXISTENCE
REUSE_ALV_VARIANT_F4
ZFIR0141
Z_SB_TAX_CAL
ef875a229ba3c4a355668341b70f07c0fcb07bce602483bc6f97c13e45519f94 47 51 127

업무 목적

매출채권(BSID/BSAD)과 매출 전표(BKPF/BSEG/BSET), SD 청구(VBRK)를 논리DB(GET BSID/BKPF/BSEG)로 읽어 매출 세금계산서 발행 대상을 선별하는 프로그램이다. 합산계산서(COLLECTIVE)와 개별계산서(INDIVIDUAL) 방식을 지원하고, 세금 데이터와 고객 주소를 붙여 ALV 로 보여준 뒤 실제 출력·전송은 ZFIR0141 에 위임한다. 전자세금계산서 전환(2006) 이후 ZDTI_* 상태 테이블로 발행 상태를 관리한다.

주 흐름

  1. ALV 변형을 초기화하고 선택화면을 준비한다 (VARIANT_INIT → F4_FOR_VARIANT)
  2. 회사코드와 전표유형 입력값을 검증한다 (CHECK_BUKRS → CHECK_DOC_TYPE)
  3. 논리DB 로 매출채권(GET BSID)·전표헤더(GET BKPF)·아이템(GET BSEG)을 순차 읽는다
  4. 세금코드 유효성을 확인하고 아이템 선택을 정리한다 (CHECK_MWSKZ → CLEAR_ITEM_SELECTION)
  5. 전자세금계산서 발행 상태를 확인한다 (DTI_CHECK)
  6. 세금 데이터와 고객 주소를 보강한다 (GET_TAX_DATA → GET_CUSTOMER_ADDRESS)
  7. 합산/개별 계산서 방식으로 발행 번호를 부여한다 (COLLECTIVE_INVOICES / INDIVIDUAL_INVOICES → GET_TAX_INVOICE_NUMBER)
  8. ALV 레이아웃을 구성해 출력하고 사용자 액션을 처리한다 (BUILD_UP_ALV_LAYOUT → USER_COMMAND, 400줄)
  9. 실제 세금계산서 출력·전송은 ZFIR0141 을 호출한다

핵심 내부테이블

  • AUSGLOP_ITAB — 세금계산서 발행 대상 미결/반제 항목 (채움: GET BSID, GET BKPF / 소비: CLEAR_ITEM_SELECTION, GET_TAX_DATA)
  • GT_KUNDE — 고객 주소·사업자정보 (채움: GET_CUSTOMER_ADDRESS / 소비: BUILD_UP_ALV_LAYOUT)

테이블 / 외부 호출

  • read: BKPF, BSAD, BSEC, BSEG, BSET, J_1BBRANCH, KNA1, RBKP, T001, T003, T074U, VBKPF, VBRK, VBSEGD, VBSEGS, ZDTI_SAPP, ZDTI_STATUS
  • write: AUSGLOP_ITAB, GT_AUSGLOP, GT_KUNDE, SEL_AUSGLOP_ITAB
  • 외부 호출: DYNP_VALUES_UPDATE, FB03, FI_PERIOD_DETERMINE, HELP_VALUES_GET_WITH_TABLE_EXT, KR_USER_EXIT_ROUNDOFF, KR_USER_EXIT_TAX_CODE, NUMBER_GET_NEXT, REUSE_ALV_COMMENTARY_WRITE, REUSE_ALV_EVENTS_GET, REUSE_ALV_FIELDCATALOG_MERGE, REUSE_ALV_HIERSEQ_LIST_DISPLAY, REUSE_ALV_VARIANT_DEFAULT_GET, REUSE_ALV_VARIANT_EXISTENCE, REUSE_ALV_VARIANT_F4, ZFIR0141, Z_SB_TAX_CAL

로직 조각 (51건 / unit 26개)

LLM 이 코드에서 골라낸 업무 로직 단위다. 조각마다 소스 원문과 자연어 설명을 함께 싣는다 — 설명이 코드와 맞는지 바로 대조할 수 있어야 하기 때문이다. 테이블·호출은 LLM 이 쓴 값이 아니라 파서가 조각 범위에서 다시 뽑은 사실이다. 순서는 실행 순서다.

EVENT INITIALIZATION — ZFIR0140 L167-L218 (52줄)

INITIALIZATION 에서 계층 ALV 의 헤더/아이템 테이블명과 키정보(KUNNR/BELNR)를 정의하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 기본 변형을 P_VARI 에 제안한다.

이 unit 의 조각 1개가 28/52줄(54%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[other] 계층 ALV 의 헤더(GT_KUNDE)-아이템(GT_AUSGLOP) 테이블명과 연결 키(KUNNR, BELNR)를 GS_KEYINFO 에 정의하고 변형 저장 옵션(G_SAVE='A')을 둔 뒤 REUSE_ALV_VARIANT_DEFAULT_GET 으로 사용자 기본 ALV 변형을 P_VARI 에 제안한다.

   189|   G_REPID = SY-REPID.
   190|   G_TABNAME_HEADER = 'GT_KUNDE'.
   191|   G_TABNAME_ITEM   = 'GT_AUSGLOP'.
   192| 
   193| * define keyinfo
   194|   CLEAR GS_KEYINFO.
   195|   GS_KEYINFO-HEADER01 = 'KUNNR'.
   196|   GS_KEYINFO-ITEM01   = 'KUNNR'.
   197| 
   198|   GS_KEYINFO-HEADER02 = SPACE.
   199|   GS_KEYINFO-ITEM02 = 'BELNR'.
   200| 
   201| * set Options: save variants userspecific or general
   202|   G_SAVE = 'A'.
   203|   PERFORM VARIANT_INIT.
   204| 
   205| * get default variant
   206|   GX_VARIANT = G_VARIANT.
   207|   CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
   208|        EXPORTING
   209|             I_SAVE     = G_SAVE
   210|        CHANGING
   211|             CS_VARIANT = GX_VARIANT
   212|        EXCEPTIONS
   213|             NOT_FOUND  = 2.
   214|   IF SY-SUBRC = 0.
   215|     P_VARI = GX_VARIANT-VARIANT.
   216|   ENDIF.
  • EN: Define the hierarchical ALV header/item table names and key linkage (KUNNR, BELNR) in GS_KEYINFO, set the variant save mode, and propose the user's default ALV layout variant via REUSE_ALV_VARIANT_DEFAULT_GET.
  • 호출(파서): VARIANT_INIT, REUSE_ALV_VARIANT_DEFAULT_GET
  • SAP 객체: REUSE_ALV_VARIANT_DEFAULT_GET
  • 업무 키워드: 계층 ALV 키정보, 고객-전표 연결, ALV 기본 변형, 초기화
  • English: Hierarchical ALV, Key Info, ALV Variant, REUSE_ALV_VARIANT_DEFAULT_GET
  • 정의부(복사 시 함께 필요): G_REPID, G_TABNAME_HEADER, G_TABNAME_ITEM, GS_KEYINFO, G_SAVE, GX_VARIANT, G_VARIANT, P_VARI
  • 위치: abap://ZFIR0140/ZFIR0140#L189-L216 · confidence 0.7 · ZFIR0140#ZFIR0140#EVENT#INITIALIZATION#C1

FORM CHECK_BUKRS — ZFIR0140 L1661-L1667 (7줄)

회사코드(DD_BUKRS-LOW)가 비어 있으면 오류 메시지 E501 을 내는 필수 입력 검증 FORM 이다.

이 unit 의 조각 1개가 3/7줄(43%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[validation] 선택화면의 회사코드가 입력되지 않았으면 오류 메시지 E501 로 실행을 막는다.

  1663|   IF DD_BUKRS-LOW IS INITIAL.
  1664|     MESSAGE E501.
  1665|   ENDIF.
  • EN: Raise error message E501 when no company code has been entered on the selection screen.
  • 업무 키워드: 회사코드, 필수 입력 검증, 오류 메시지
  • English: Company Code, Mandatory Check, Error Message
  • 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L1663-L1665 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#CHECK_BUKRS#C1

EVENT AT SELECTION-SCREEN ON SBLART — ZFIR0140 L239-L316 (78줄)

전표유형 입력 시 유효성을 검증하고 세금코드·전표유형·사업장·회사코드 선택값을 KR_USER_EXIT_TAX_CODE 에 넘긴 뒤 SD/FI 선택 조건 입력 여부로 SD_SELECTION/FI_SELECTION 플래그를 결정한다.

이 unit 의 조각 2개가 59/78줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[fm_call] 전표유형(T003) 검증 후 세금코드·전표유형·사업장·회사코드 선택옵션을 작업 테이블로 옮겨 한국 세금계산서 User-Exit KR_USER_EXIT_TAX_CODE 로 사용자·상태별 세금코드 보정을 수행한다.

   240|   PERFORM CHECK_DOC_TYPE.
   241| 
   242|   LOOP AT SMWSKZ.
   243|     MOVE-CORRESPONDING SMWSKZ TO TAX_CODE.
   244|   ENDLOOP.
   245| 
   246|   LOOP AT PBLART.
   247|     MOVE-CORRESPONDING PBLART TO BLART.
   248|   ENDLOOP.
   249| 
   250|   LOOP AT SBUPLA.
   251|     MOVE-CORRESPONDING SBUPLA TO BUPLA.
   252|   ENDLOOP.
   253| 
   254|   LOOP AT DD_BUKRS.
   255|     MOVE-CORRESPONDING DD_BUKRS TO BUKRS.
   256|   ENDLOOP.
   257| 
   258|   CALL FUNCTION 'KR_USER_EXIT_TAX_CODE'
   259|        EXPORTING
   260|             YUSNAM   = SY-UNAME
   261|             YSTA1    = STA1
   262|        TABLES
   263|             YTAXCODE = TAX_CODE
   264|             YPBLART  = BLART
   265|             YBUPLA   = BUPLA
   266|             YBUKRS   = BUKRS.
  • EN: Validate the document type, copy the tax code, document type, business place and company code select-options into work tables and call the Korean user exit KR_USER_EXIT_TAX_CODE to adjust tax codes by user and status.
  • 호출(파서): CHECK_DOC_TYPE, KR_USER_EXIT_TAX_CODE
  • SAP 객체: KR_USER_EXIT_TAX_CODE, T003
  • 업무 키워드: 전표유형 검증, 세금코드, User-Exit, 사업장, 선택옵션
  • English: Document Type, Tax Code, User Exit, Business Place
  • 정의부(복사 시 함께 필요): SMWSKZ, CODE, TAX_CODE, PBLART, BLART, SBUPLA, BUPLA, BUKRS, STA1
  • 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L240-L266 · confidence 0.85 · ZFIR0140#ZFIR0140#EVENT#AT_SELECTION-SCREEN_ON_SBLART#C1

[control_flow] 청구번호(SVBELN)·청구유형(SFKART)·청구일(SFKDAT) 조건이 입력되면 SD_SELECTION 을, 회계전표번호(SBELNR)·전표일(SBDAT) 조건이 입력되면 FI_SELECTION 을 설정해 이후 선별 방식(SD/FI)을 결정한다.

   271|   CLEAR SD_SELECTION.
   272|   CLEAR FI_SELECTION.
   273| 
   274|   DESCRIBE TABLE SVBELN LINES LINE_COUNT_SD.       "billing document
   275|   IF LINE_COUNT_SD > 0.                "selection internal
   276|     SD_SELECTION = 'X'.                "table not empty
   277|   ENDIF.
   278| 
   279|   DESCRIBE TABLE SFKART LINES LINE_COUNT_SD.      "billing document type
   280|   IF LINE_COUNT_SD > 0.                "selection internal
   281|     SD_SELECTION = 'X'.                "table not empty
   282|   ENDIF.
   283| 
   284|   DESCRIBE TABLE SFKDAT LINES
   285|     LINE_COUNT_SD.                     "billing date selection
   286|   IF LINE_COUNT_SD > 0.                "internal table not
   287|     SD_SELECTION = 'X'.                "empty
   288|   ENDIF.
   289| 
   290| * set fi_selection flag if fi-document or accounting document
   291| * date selection cases not empty.
   292| 
   293|   DESCRIBE TABLE SBELNR LINES
   294|     LINE_COUNT_FI.                     "accounting document
   295|   IF LINE_COUNT_FI > 0.                "selection internal
   296|     FI_SELECTION = 'X'.                "table not empty
   297|   ENDIF.
   298| 
   299|   DESCRIBE TABLE SBDAT LINES LINE_COUNT_FI.   "accounting document date
   300|   IF LINE_COUNT_FI > 0.                "selection internal
   301|     FI_SELECTION = 'X'.                "table not empty
   302|   ENDIF.
  • EN: Set SD_SELECTION when billing document, billing type or billing date selections are filled, and FI_SELECTION when accounting document number or document date selections are filled, to steer the later item selection.
  • 업무 키워드: SD 선택조건, FI 선택조건, 청구전표, 회계전표, 선별 방식
  • English: Billing Document, Accounting Document, Selection Flag, Select-Option
  • 정의부(복사 시 함께 필요): SD_SELECTION, FI_SELECTION, SVBELN, LINE_COUNT_SD, SFKART, SFKDAT, SBELNR, LINE_COUNT_FI, SBDAT
  • 위치: abap://ZFIR0140/ZFIR0140#L271-L302 · confidence 0.85 · ZFIR0140#ZFIR0140#EVENT#AT_SELECTION-SCREEN_ON_SBLART#C2

FORM CHECK_DOC_TYPE — ZFIR0140 L2123-L2130 (8줄)

세금계산서 전표유형(SBLART)이 T003 에 존재하고 번호범위(NUMKR)가 지정되어 있는지 검증해 없으면 E098 오류를 낸다.

이 unit 의 조각 1개가 4/8줄(50%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[validation] 입력된 전표유형이 T003 에 없거나 번호범위(NUMKR)가 비어 있으면 세금계산서 채번이 불가능하므로 오류 메시지 E098 을 낸다.

  2125|   SELECT SINGLE * FROM T003 WHERE BLART = SBLART.
  2126|   IF SY-SUBRC NE 0 OR T003-NUMKR = ' ' .
  2127|     MESSAGE E098.
  2128|   ENDIF.
  • EN: Check that the entered document type exists in T003 with a number range (NUMKR) assigned, since it is used for tax invoice numbering; otherwise raise E098.
  • 테이블(파서): read T003 / write -
  • SAP 객체: T003
  • 업무 키워드: 전표유형 검증, 번호범위, 세금계산서 채번, 오류 메시지
  • English: Document Type, T003, Number Range, Validation
  • 정의부(복사 시 함께 필요): T003, CODE, BLART, SBLART
  • 위치: abap://ZFIR0140/ZFIR0140#L2125-L2128 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#CHECK_DOC_TYPE#C1

EVENT START-OF-SELECTION — ZFIR0140 L317-L327 (11줄)

START-OF-SELECTION 에서 회사코드의 현지통화(T001-WAERS)를 CURR 에 읽어 이후 논리DB 처리에 사용한다.

이 unit 의 조각 1개가 1/11줄(9%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[sql_select] 회사코드(T001)의 현지통화 WAERS 를 CURR 에 읽어 발행 항목의 통화 기본값으로 사용한다.

   326|   SELECT SINGLE WAERS  FROM T001 INTO CURR  WHERE BUKRS = BSID-BUKRS.
  • EN: Read the company code local currency (T001-WAERS) into CURR as the default currency for candidate items.
  • 테이블(파서): read T001 / write -
  • SAP 객체: T001
  • 업무 키워드: 현지통화, 회사코드, 통화 기본값
  • English: Local Currency, Company Code, T001
  • 정의부(복사 시 함께 필요): T001, CURR, CODE, BUKRS, BSID
  • 위치: abap://ZFIR0140/ZFIR0140#L326-L326 · confidence 0.75 · ZFIR0140#ZFIR0140#EVENT#START-OF-SELECTION#C1

EVENT GET BSID — ZFIR0140 L328-L353 (26줄)

논리DB GET BSID 이벤트에서 사업영역·세금코드·미반제 조건을 통과한 미결 매출채권 항목의 키 필드를 발행 후보 AUSGLOP_ITAB 에 채운다.

이 unit 의 조각 1개가 21/26줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[validation] 미결 매출채권(BSID) 중 사업영역·전표일·사업장 선택조건에 맞고 세금코드가 있으며 아직 반제되지 않은(AUGBL 없음) 항목만 회사코드·고객·전표번호·일자·사업장·특별G/L·계정을 AUSGLOP_ITAB 에 옮긴다.

   330|   CHECK BSID-GSBER IN SBAREA.
   331|   CHECK BSID-MWSKZ NE ' ' .
   332|   CHECK SBDAT.
   333|   CHECK SBUPLA.                        "check selection parameters
   334|   CHECK BSID-AUGBL IS INITIAL.
   335|   CLEAR AUSGLOP_ITAB.
   336| *  SELECT SINGLE * FROM t001 WHERE bukrs = bsid-bukrs.
   337| *  MOVE t001-waers TO ausglop_itab-hwaer.
   338|   MOVE CURR TO AUSGLOP_ITAB-WAERS.
   339|   MOVE BSID-WAERS TO AUSGLOP_ITAB-WAERS.
   340|   MOVE BSID-BUKRS TO AUSGLOP_ITAB-BUKRS.
   341|   MOVE BSID-KUNNR TO AUSGLOP_ITAB-KUNNR.
   342|   MOVE BSID-GJAHR TO AUSGLOP_ITAB-GJAHR.
   343|   MOVE BSID-GSBER TO AUSGLOP_ITAB-GSBER.
   344|   MOVE BSID-BELNR TO AUSGLOP_ITAB-BELNR.
   345|   MOVE BSID-BUDAT TO AUSGLOP_ITAB-BUDAT.
   346|   MOVE BSID-BLDAT TO AUSGLOP_ITAB-BLDAT.
   347|   MOVE BSID-BUZEI TO AUSGLOP_ITAB-BUZEI.
   348|   MOVE BSID-BUPLA TO AUSGLOP_ITAB-BUPLA.
   349|   MOVE BSID-UMSKZ TO AUSGLOP_ITAB-UMSKZ.
   350|   MOVE BSID-HKONT TO AUSGLOP_ITAB-HKONT.
  • EN: Accept open customer items (BSID) matching business area, document date and business place selections, with a tax code and no clearing document, and copy company code, customer, document, dates, business place, special G/L indicator and G/L account into AUSGLOP_ITAB.
  • SAP 객체: BSID
  • 업무 키워드: 미결 매출채권, 미반제 항목, 사업영역, 세금코드, 사업장
  • English: Open Customer Items, BSID, Business Area, Tax Code, Business Place
  • 정의부(복사 시 함께 필요): BSID, SBAREA, SBDAT, SBUPLA, AUSGLOP_ITAB, CURR
  • 위치: abap://ZFIR0140/ZFIR0140#L330-L350 · confidence 0.9 · ZFIR0140#ZFIR0140#EVENT#GET_BSID#C1

EVENT GET BKPF — ZFIR0140 L354-L471 (118줄)

논리DB GET BKPF 이벤트에서 전표 헤더를 검증(헤더텍스트·역분개·비망·전표유형·FB05 제외)하고 SD 청구(VBRK)·MM 송장(RBKP) 참조 정보를 보강해 발행 후보 항목을 준비한다.

이 unit 의 조각 2개가 44/118줄(37%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[validation] 헤더텍스트(BKTXT)가 있거나 역분개(STBLG)·비망전표(BSTAT)·선택 전표유형 범위 밖·FB05 반제전표인 BKPF 는 건너뛰고 참조유형(AWTYP)·참조키(AWKEY)·전표유형을 AUSGLOP_ITAB 에 옮긴다.

   357|   CHECK BKPF-BKTXT = ' ' .
   358| *doc not reversed...
   359|   CHECK BKPF-STBLG =  ' '.
   360| *doc not a noted item...
   361|   CHECK BKPF-BSTAT = ' '.
   362| * doc in the given range of document type
   363|   CHECK BKPF-BLART IN PBLART.
   364| 
   365|  CHECK BKPF-TCODE <> 'FB05'.    "check document not a FB05-clearing doc.
   366|   MOVE BKPF-AWTYP TO AUSGLOP_ITAB-AWTYP.
   367|   MOVE BKPF-AWKEY TO AUSGLOP_ITAB-AWKEY.
   368|   MOVE BKPF-BLART TO AUSGLOP_ITAB-BLART.
  • EN: Skip BKPF headers with header text, reversals (STBLG), noted items (BSTAT), document types outside PBLART or FB05 clearing documents, then copy reference type, reference key and document type into AUSGLOP_ITAB.
  • SAP 객체: BKPF, FB05
  • 업무 키워드: 전표 헤더 검증, 역분개 제외, 비망 전표 제외, 전표유형, 반제 전표 제외
  • English: Document Header, Reversal, Noted Item, Document Type, FB05
  • 정의부(복사 시 함께 필요): BKPF, PBLART, AUSGLOP_ITAB
  • 위치: abap://ZFIR0140/ZFIR0140#L357-L368 · confidence 0.9 · ZFIR0140#ZFIR0140#EVENT#GET_BKPF#C1

[validation] SD 청구 유래(AWTYP='VBRK') 전표는 VBRK 를 읽어 취소(FKSTO/SFAKN) 건을 제외하고 청구번호·청구유형·청구일을 저장하며, MM 송장(RMRP)은 RBKP 취소 여부를 확인하고, SD 전용 선택이면 청구번호·청구유형·청구일 조건을 추가 검증한다.

   369|   IF BKPF-AWTYP = 'VBRK'.
   370| *
   371| *    SELECT SINGLE * FROM vbrk WHERE bukrs = ausglop_itab-bukrs
   372| *                     AND vbeln = ausglop_itab-awkey.
   373|     SELECT SINGLE * FROM VBRK WHERE  VBELN = AUSGLOP_ITAB-AWKEY
   374|                                  AND BUKRS = AUSGLOP_ITAB-BUKRS.
   375|     IF SY-SUBRC = 0.
   376|       CHECK VBRK-FKSTO IS INITIAL.
   377|       CHECK VBRK-SFAKN IS INITIAL.
   378|       MOVE VBRK-VBELN TO AUSGLOP_ITAB-VBELN.
   379|       MOVE VBRK-FKART TO AUSGLOP_ITAB-FKART.
   380|       MOVE VBRK-FKDAT TO AUSGLOP_ITAB-FKDAT.
   381|       MOVE VBRK-FKTYP TO AUSGLOP_ITAB-FKTYP.
   382|     ENDIF.
   383|   ENDIF.
   384| 
   385|   IF BKPF-AWTYP = 'RMRP'.
   386| 
   387|     SELECT SINGLE STBLG FROM RBKP INTO STBLG WHERE
   388|                               BELNR = AUSGLOP_ITAB-AWKEY
   389|                               AND GJAHR = BKPF-GJAHR.
   390|     CHECK STBLG IS INITIAL.
   391|     CLEAR STBLG.
   392| 
   393|   ENDIF.
   394| 
   395|   IF SD_SELECTION = 'X' AND FI_SELECTION NE 'X'.
   396|     CHECK BKPF-AWTYP = 'VBRK'.
   397|     CHECK BKPF-AWKEY IN SVBELN.
   398|     CHECK VBRK-FKART IN SFKART.        "check sd selection parameters
   399|     CHECK VBRK-FKDAT IN SFKDAT.        "check sd selection parameters
   400|   ENDIF.
  • EN: For SD billing references read VBRK, exclude cancelled billing documents (FKSTO/SFAKN) and keep billing number, type and date; for MM invoice references check RBKP for reversal; for SD-only selection apply billing number, type and date filters.
  • 테이블(파서): read VBRK, RBKP / write -
  • SAP 객체: VBRK, RBKP
  • 업무 키워드: SD 청구전표, 청구 취소 검증, MM 송장 취소, 청구유형, SD 선택조건
  • English: Billing Document, VBRK, Cancellation, RBKP, Billing Type
  • 정의부(복사 시 함께 필요): BKPF, VBRK, AUSGLOP_ITAB, CODE, BUKRS, STBLG, SD_SELECTION, FI_SELECTION, SVBELN, SFKART, SFKDAT
  • 위치: abap://ZFIR0140/ZFIR0140#L369-L400 · confidence 0.9 · ZFIR0140#ZFIR0140#EVENT#GET_BKPF#C2

EVENT GET BSEG — ZFIR0140 L472-L484 (13줄)

논리DB GET BSEG 이벤트에서 고객 라인(KOART='D')의 세금코드가 선택범위에 있을 때 지급조건·기산일·금액을 채워 발행 후보 AUSGLOP_ITAB 에 추가한다.

이 unit 의 조각 1개가 11/13줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[validation] BSEG 라인 중 고객 계정유형(KOART='D')이고 세금코드(MWSKZ)가 SMWSKZ 범위에 있는 라인만 지급조건(ZTERM)·기산일(ZFBDT)·전표통화금액(WRBTR)·현지통화금액(DMBTR)을 채워 AUSGLOP_ITAB 에 APPEND 한다.

   473|   CHECK BSEG-KOART = 'D'.
   474|   MOVE BSEG-KOART TO AUSGLOP_ITAB-KOART.
   475|   CHECK BSEG-MWSKZ IN SMWSKZ.
   476|   MOVE BSEG-MWSKZ TO AUSGLOP_ITAB-MWSKZ.
   477|   MOVE BSEG-ZTERM TO AUSGLOP_ITAB-ZTERM.
   478|   MOVE BSEG-ZFBDT TO AUSGLOP_ITAB-ZFBDT.
   479|   MOVE BSEG-WRBTR TO AUSGLOP_ITAB-WRBTR.
   480|   MOVE BSEG-DMBTR TO AUSGLOP_ITAB-DMBTR.
   481| * 추가
   482| *  MOVE bseg-sgtxt TO ausglop_itab-sgtxt.
   483|   APPEND AUSGLOP_ITAB.
  • EN: Accept only customer line items (KOART='D') whose tax code is within SMWSKZ, copy payment terms, baseline date, document and local currency amounts, and append the row to AUSGLOP_ITAB.
  • SAP 객체: BSEG
  • 업무 키워드: 고객 라인, 계정유형, 세금코드 필터, 지급조건, 현지통화금액
  • English: Customer Line Item, Account Type, Tax Code, Payment Terms, Local Currency Amount
  • 정의부(복사 시 함께 필요): BSEG, AUSGLOP_ITAB, SMWSKZ
  • 위치: abap://ZFIR0140/ZFIR0140#L473-L483 · confidence 0.9 · ZFIR0140#ZFIR0140#EVENT#GET_BSEG#C1

EVENT END-OF-SELECTION — ZFIR0140 L485-L538 (54줄)

END-OF-SELECTION 에서 반제 항목 선별, 전자세금계산서 발행 여부 확인, 세금·고객주소 보강, 한국 반올림 User-Exit 호출 후 계층 ALV 를 출력하는 메인 흐름을 수행한다.

이 unit 의 조각 2개가 39/54줄(72%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[control_flow] 반제 매출채권(BSAD) 항목을 추가 선별(CLEAR_ITEM_SELECTION)하고 ZDTI 상태로 기발행 건을 제외(DTI_CHECK)한 뒤 세금 데이터(GET_TAX_DATA)와 고객 주소·CPD 정보(GET_CUSTOMER_ADDRESS)를 보강하고 고객·전표·라인 순으로 정렬한다.

   488|   PERFORM CLEAR_ITEM_SELECTION.
   489| 
   490| ** 임시전표로 매출 발행하는 업체에서는 주석처리 풀고 사용하면 됨.
   491| ** 임시전표 가져오는 로직 추가 - 2006.08.30
   492| *  PERFORM PARK_DOCUMENT_SELECTION.
   493| 
   494| * 기본적으로는 BKPF-BKTXT에 값이 있으면 매출 세금계산서 발행 프로그램에
   495| * 리스트에 보여지지 않는다.
   496| * 허브업체별로 BKPF-BKTXT값을 사용하지 않을 경우 아래의 Perform에서
   497| * 체크하여 준다.
   498| 
   499| * 세금계산서 발행여부 체크 - 금호  2006.08.30
   500|   PERFORM DTI_CHECK.
   501| 
   502| * bif용 - 주석처리 2006.08.14.------------------------------*
   503| ** 매출부가세의 텍스트를 가져온다.
   504| *  PERFORM GET_SALES_TAX_SGTXT.
   505| 
   506| * getting bset data ( tax related data )
   507|   REFRESH GT_KUNDE.
   508| 
   509|   CLEAR AUSGLOP_ITAB.
   510| *Add tax data to internal table...
   511|   PERFORM GET_TAX_DATA.
   512| 
   513| *Get customer address and CPD data...
   514|   PERFORM GET_CUSTOMER_ADDRESS.
   515| 
   516|   SORT AUSGLOP_ITAB BY KUNNR BELNR BUZEI.
  • EN: Add cleared AR items, remove documents already issued as electronic tax invoices, enrich with tax data and customer address / one-time customer data, then sort AUSGLOP_ITAB by customer, document and line.
  • 호출(파서): CLEAR_ITEM_SELECTION, DTI_CHECK, GET_TAX_DATA, GET_CUSTOMER_ADDRESS
  • SAP 객체: BSAD, ZDTI_SAPP, BSET
  • 업무 키워드: 반제 항목 선별, 기발행 제외, 세금 데이터 보강, 고객 주소, 발행 대상 정렬
  • English: Cleared Items, Electronic Tax Invoice, Tax Data, Customer Address
  • 정의부(복사 시 함께 필요): KNA1, GT_KUNDE, AUSGLOP_ITAB
  • 위치: abap://ZFIR0140/ZFIR0140#L488-L516 · confidence 0.85 · ZFIR0140#ZFIR0140#EVENT#END-OF-SELECTION#C1

[fm_call] 한국 세금계산서 User-Exit KR_USER_EXIT_ROUNDOFF 로 발행 대상 금액을 합산옵션(SN1OP)·상태(STA1)에 따라 반올림 처리한 뒤 BUILD_UP_ALV_LAYOUT 으로 계층 ALV 를 표시한다.

   518|   CALL FUNCTION 'KR_USER_EXIT_ROUNDOFF'
   519|        EXPORTING
   520|             YSN1OP        = SN1OP
   521|             YSTA1         = STA1
   522|             YPROG_NAME    = SY-CPROG
   523|        TABLES
   524|             YAUSGLOP_ITAB = AUSGLOP_ITAB.
   525| 
   526| * build up ALV layout
   527|   PERFORM BUILD_UP_ALV_LAYOUT.
  • EN: Call the Korean tax invoice user exit KR_USER_EXIT_ROUNDOFF to round the candidate amounts according to the aggregate option and status, then display the hierarchical ALV via BUILD_UP_ALV_LAYOUT.
  • 호출(파서): KR_USER_EXIT_ROUNDOFF, BUILD_UP_ALV_LAYOUT
  • SAP 객체: KR_USER_EXIT_ROUNDOFF, REUSE_ALV_HIERSEQ_LIST_DISPLAY
  • 업무 키워드: 금액 반올림, User-Exit, 세금계산서 금액, ALV 출력
  • English: Round-off, User Exit, Tax Invoice Amount, ALV
  • 정의부(복사 시 함께 필요): SN1OP, STA1, AUSGLOP_ITAB
  • 위치: abap://ZFIR0140/ZFIR0140#L518-L527 · confidence 0.85 · ZFIR0140#ZFIR0140#EVENT#END-OF-SELECTION#C2

FORM CLEAR_ITEM_SELECTION — ZFIR0140 L2299-L2389 (91줄)

반제된 매출채권(BSAD)을 선택조건으로 읽어 역분개·비망·FB05 반제 전표를 제외하고 SD 청구(VBRK)·MM 송장(RBKP) 취소 여부와 세금코드를 확인해 세금계산서 발행 후보(AUSGLOP_ITAB)를 만든다.

이 unit 의 조각 4개가 83/91줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[sql_select] 회사코드·일자·전표번호·사업장·고객·사업영역·전표유형·세금코드 조건으로 반제 매출채권(BSAD)을 읽어 세금코드가 있고 자기반제가 아닌 건만 AUSGLOP_ITAB 기본 필드에 옮긴다.

  2301|   SELECT * FROM BSAD WHERE BUKRS = DD_BUKRS-LOW
  2302|                        AND BLDAT IN SBDAT
  2303|                        AND BUDAT IN SBUDAT
  2304|                        AND BUDAT IN SFKDAT
  2305|                        AND BELNR IN SBELNR
  2306|                        AND BUPLA IN SBUPLA
  2307|                        AND KUNNR IN DD_KUNNR
  2308|                        AND GSBER IN SBAREA
  2309|                        AND BLART IN PBLART
  2310|                        AND MWSKZ IN SMWSKZ.
  2311|     CHECK BSAD-MWSKZ NE ' '.
  2312|     CHECK BSAD-AUGBL NE BSAD-BELNR.
  2313|     CLEAR AUSGLOP_ITAB.
  2314|     MOVE CURR TO AUSGLOP_ITAB-WAERS.
  2315|     MOVE BSAD-WAERS TO AUSGLOP_ITAB-WAERS.
  2316|     MOVE BSAD-BUKRS TO AUSGLOP_ITAB-BUKRS.
  2317|     MOVE BSAD-KUNNR TO AUSGLOP_ITAB-KUNNR.
  2318|     MOVE BSAD-GJAHR TO AUSGLOP_ITAB-GJAHR.
  2319|     MOVE BSAD-GSBER TO AUSGLOP_ITAB-GSBER.
  2320|     MOVE BSAD-BELNR TO AUSGLOP_ITAB-BELNR.
  2321|     MOVE BSAD-BUDAT TO AUSGLOP_ITAB-BUDAT.
  2322|     MOVE BSAD-BLDAT TO AUSGLOP_ITAB-BLDAT.
  2323|     MOVE BSAD-BUZEI TO AUSGLOP_ITAB-BUZEI.
  2324|     MOVE BSAD-BUPLA TO AUSGLOP_ITAB-BUPLA.
  2325|     MOVE BSAD-UMSKZ TO AUSGLOP_ITAB-UMSKZ.
  2326|     MOVE BSAD-HKONT TO AUSGLOP_ITAB-HKONT.
  • EN: Read cleared customer items from BSAD by company code, dates, document, business place, customer, business area, document type and tax code; keep only items with a tax code that are not self-cleared and copy key fields into AUSGLOP_ITAB.
  • 테이블(파서): read BSAD / write -
  • SAP 객체: BSAD
  • 업무 키워드: 반제 매출채권, 고객 반제 항목, 세금코드, 사업장, 자기반제 제외
  • English: Cleared Customer Items, BSAD, Tax Code, Business Place, Clearing Document
  • 정의부(복사 시 함께 필요): BSAD, CODE, BUKRS, SBDAT, SBUDAT, SFKDAT, SBELNR, BUPLA, SBUPLA, SBAREA, BLART, PBLART 외 3건
  • 선언을 못 찾은 이름: DD_BUKRS, DD_KUNNR (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L2301-L2326 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#CLEAR_ITEM_SELECTION#C1

[validation] 전표 헤더(BKPF)를 읽어 헤더텍스트가 있거나 역분개(STBLG)·비망전표(BSTAT)·FB05 반제전표인 건을 제외하고 참조유형(AWTYP)·참조키(AWKEY)·전표유형을 저장한다.

  2328|     SELECT SINGLE * FROM BKPF WHERE BUKRS = AUSGLOP_ITAB-BUKRS AND
  2329|                                     BELNR = AUSGLOP_ITAB-BELNR AND
  2330|                                     GJAHR = AUSGLOP_ITAB-GJAHR.
  2331| 
  2332|     CHECK BKPF-BKTXT = ' ' .
  2333| *    CHECK BKPF-BKTXT(2) <> '80'. "= ' ' .   "bif용 2006.08.14
  2334| *doc not reversed...
  2335|     CHECK BKPF-STBLG =  ' '.
  2336| *doc not a noted item...
  2337|     CHECK BKPF-BSTAT = ' '.
  2338| 
  2339|  CHECK BKPF-TCODE <> 'FB05'.    "check document not a FB05-clearing doc.
  2340|     MOVE BKPF-AWTYP TO AUSGLOP_ITAB-AWTYP.
  2341|     MOVE BKPF-AWKEY TO AUSGLOP_ITAB-AWKEY.
  2342|     MOVE BKPF-BLART TO AUSGLOP_ITAB-BLART.
  • EN: Read the document header BKPF and exclude documents with header text, reversed documents (STBLG), noted items (BSTAT) and FB05 clearing documents; keep reference type, reference key and document type.
  • 테이블(파서): read BKPF / write -
  • SAP 객체: BKPF, FB05
  • 업무 키워드: 전표 헤더, 역분개 제외, 비망 전표 제외, 반제 전표 제외, 참조 키
  • English: Document Header, Reversal, Noted Item, FB05, Reference Key
  • 정의부(복사 시 함께 필요): BKPF, CODE, BUKRS, AUSGLOP_ITAB
  • 위치: abap://ZFIR0140/ZFIR0140#L2328-L2342 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#CLEAR_ITEM_SELECTION#C2

[validation] SD 청구 유래 전표는 VBRK 로 취소(FKSTO/SFAKN)·청구유형(SFKART)을 검증해 청구 정보를 옮기고, MM 송장(RMRP) 유래 전표는 RBKP 취소전표(STBLG) 유무를 확인하며, SD 전용 선택이면 청구번호·청구유형·청구일 조건을 추가 검사한다.

  2343|     IF BKPF-AWTYP = 'VBRK'.
  2344| 
  2345|       SELECT SINGLE * FROM VBRK WHERE  VBELN = AUSGLOP_ITAB-AWKEY
  2346|                                    AND BUKRS = AUSGLOP_ITAB-BUKRS. "bif
  2347|       IF SY-SUBRC = 0.
  2348|         CHECK VBRK-FKSTO IS INITIAL.
  2349|         CHECK VBRK-SFAKN IS INITIAL.
  2350|         CHECK VBRK-FKART IN SFKART.
  2351|         MOVE VBRK-VBELN TO AUSGLOP_ITAB-VBELN.
  2352|         MOVE VBRK-FKART TO AUSGLOP_ITAB-FKART.
  2353|         MOVE VBRK-FKDAT TO AUSGLOP_ITAB-FKDAT.
  2354|         MOVE VBRK-FKTYP TO AUSGLOP_ITAB-FKTYP.
  2355|       ENDIF.
  2356|     ENDIF.
  2357| 
  2358|     IF BKPF-AWTYP = 'RMRP'.
  2359|       SELECT SINGLE STBLG FROM RBKP INTO STBLG
  2360|                                    WHERE BELNR = AUSGLOP_ITAB-AWKEY
  2361|                                      AND GJAHR = BKPF-GJAHR.
  2362|       CHECK STBLG IS INITIAL.
  2363|       CLEAR STBLG.
  2364|     ENDIF.
  2365| 
  2366|     IF SD_SELECTION = 'X' AND FI_SELECTION NE 'X'.
  2367|       CHECK BKPF-AWTYP = 'VBRK'.
  2368|       CHECK BKPF-AWKEY IN SVBELN.
  2369|       CHECK VBRK-FKART IN SFKART.        "check sd selection parameters
  2370|       CHECK VBRK-FKDAT IN SFKDAT.        "check sd selection parameters
  2371|     ENDIF.
  • EN: For SD billing documents validate VBRK (not cancelled via FKSTO/SFAKN, billing type in SFKART) and copy billing data; for MM invoices check RBKP for a reversal (STBLG); for SD-only selection apply billing number, type and date filters.
  • 테이블(파서): read VBRK, RBKP / write -
  • SAP 객체: VBRK, RBKP
  • 업무 키워드: SD 청구전표, 청구 취소 검증, MM 송장 취소, 청구유형, 청구일
  • English: Billing Document, VBRK, Cancellation, RBKP, Billing Type
  • 정의부(복사 시 함께 필요): BKPF, VBRK, AUSGLOP_ITAB, CODE, BUKRS, SFKART, STBLG, SD_SELECTION, FI_SELECTION, SVBELN, SFKDAT
  • 위치: abap://ZFIR0140/ZFIR0140#L2343-L2371 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#CLEAR_ITEM_SELECTION#C3

[sql_select] 전표의 고객 라인(BSEG KOART='D')을 읽어 세금코드가 선택범위(SMWSKZ)에 있는 건만 지급조건·기산일·금액을 채워 발행 후보 AUSGLOP_ITAB 에 추가한다.

  2374|     SELECT SINGLE * FROM BSEG WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2375|                                 AND BELNR = AUSGLOP_ITAB-BELNR
  2376|                                 AND GJAHR = AUSGLOP_ITAB-GJAHR
  2377|                                 AND KOART = 'D'.
  2378|     MOVE BSEG-KOART TO AUSGLOP_ITAB-KOART.
  2379|     CHECK BSEG-MWSKZ IN SMWSKZ.
  2380|     MOVE BSEG-MWSKZ TO AUSGLOP_ITAB-MWSKZ.
  2381|     MOVE BSEG-ZTERM TO AUSGLOP_ITAB-ZTERM.
  2382|     MOVE BSEG-ZFBDT TO AUSGLOP_ITAB-ZFBDT.
  2383|     MOVE BSEG-WRBTR TO AUSGLOP_ITAB-WRBTR.
  2384|     MOVE BSEG-DMBTR TO AUSGLOP_ITAB-DMBTR.
  2385|     APPEND AUSGLOP_ITAB.
  2386|   ENDSELECT.
  • EN: Read the customer line (KOART='D') from BSEG, keep only lines whose tax code is in SMWSKZ, and append payment terms, baseline date and amounts to AUSGLOP_ITAB.
  • 테이블(파서): read BSEG / write -
  • SAP 객체: BSEG
  • 업무 키워드: 고객 라인, 세금코드 필터, 지급조건, 발행 후보 적재
  • English: Customer Line Item, BSEG, Tax Code, Payment Terms
  • 정의부(복사 시 함께 필요): BSEG, CODE, BUKRS, AUSGLOP_ITAB, SMWSKZ
  • 위치: abap://ZFIR0140/ZFIR0140#L2374-L2386 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#CLEAR_ITEM_SELECTION#C4

FORM DTI_CHECK — ZFIR0140 L2576-L2628 (53줄)

전자세금계산서 상태 테이블(ZDTI_SAPP/ZDTI_STATUS)을 조회해 이미 발행(취소·거부 상태 제외)된 전표를 발행 대상(AUSGLOP_ITAB)에서 제거한다.

이 unit 의 조각 2개가 48/53줄(91%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[other] 재발행이 가능한 전자세금계산서 상태 코드(DC 공급받는자 취소승인, NC 거부, RJ 발행요청취소, RF 발행거부, CC 발행취소, VC 공급자 취소승인, IR 역발행거부)를 RANGE_CANCEL 범위로 구성한다.

  2578|   CLEAR : RANGE_CANCEL, RANGE_CANCEL[].
  2579|   RANGE_CANCEL-SIGN = 'I'.
  2580|   RANGE_CANCEL-OPTION = 'EQ'.
  2581|   RANGE_CANCEL-LOW = 'DC'.    "공받자발행취소요청승인
  2582|   APPEND RANGE_CANCEL.
  2583| 
  2584|   CLEAR : RANGE_CANCEL-LOW.
  2585|   RANGE_CANCEL-LOW = 'NC'.    "거부        ok
  2586|   APPEND RANGE_CANCEL.
  2587| 
  2588|   CLEAR : RANGE_CANCEL-LOW.
  2589|   RANGE_CANCEL-LOW = 'RJ'.    "발행요청취소
  2590|   APPEND RANGE_CANCEL.
  2591| 
  2592|   CLEAR : RANGE_CANCEL-LOW.
  2593|   RANGE_CANCEL-LOW = 'RF'.    "발행거부
  2594|   APPEND RANGE_CANCEL.
  2595| 
  2596|   CLEAR : RANGE_CANCEL-LOW.
  2597|   RANGE_CANCEL-LOW = 'CC'.    "발행취소       ok
  2598|   APPEND RANGE_CANCEL.
  2599| 
  2600|   CLEAR : RANGE_CANCEL-LOW.
  2601|   RANGE_CANCEL-LOW = 'VC'.    "공급자발행취소요청승인
  2602|   APPEND RANGE_CANCEL.
  2603| 
  2604|   CLEAR : RANGE_CANCEL-LOW.
  2605|   RANGE_CANCEL-LOW = 'IR'.    "역발행거부.
  2606|   APPEND RANGE_CANCEL.
  • EN: Build the RANGE_CANCEL range of electronic tax invoice status codes (DC, NC, RJ, RF, CC, VC, IR) that represent cancelled or rejected issues and therefore allow re-issuing.
  • SAP 객체: ZDTI_STATUS
  • 업무 키워드: 전자세금계산서 상태, 발행취소, 발행거부, 역발행, 재발행 가능 상태
  • English: Electronic Tax Invoice, Status Code, Cancellation, Rejection
  • 정의부(복사 시 함께 필요): RANGE_CANCEL
  • 위치: abap://ZFIR0140/ZFIR0140#L2578-L2606 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#DTI_CHECK#C1

[sql_select] 각 발행 후보 전표에 대해 ZDTI_SAPP 와 ZDTI_STATUS 를 조인 조회해 취소/거부가 아닌 유효한 전자세금계산서 발행 이력이 있으면 중복 발행을 막기 위해 AUSGLOP_ITAB 에서 삭제한다.

  2608|   LOOP AT AUSGLOP_ITAB.
  2609|     SELECT P~BUKRS   P~ZETNO P~ZARAP P~BELNR P~GJAHR P~REBELNR
  2610|            P~REGJAHR P~EBELN P~EBELP P~MBLNR P~MJAHR P~VBELN
  2611|            S~ZSTAT
  2612|            INTO CORRESPONDING FIELDS OF TABLE ITABSAPP
  2613|            FROM ZDTI_SAPP AS P JOIN ZDTI_STATUS AS S
  2614|              ON P~BUKRS = S~BUKRS
  2615|             AND P~ZETNO = S~ZETNO
  2616|             AND P~ZARAP = S~ZARAP
  2617|            WHERE P~BUKRS = AUSGLOP_ITAB-BUKRS
  2618|              AND P~GJAHR = AUSGLOP_ITAB-GJAHR
  2619|              AND P~BELNR = AUSGLOP_ITAB-BELNR
  2620|              AND S~ZSTAT NOT IN RANGE_CANCEL.
  2621| 
  2622|     IF SY-SUBRC = 0.
  2623|       DELETE AUSGLOP_ITAB.
  2624|       CLEAR AUSGLOP_ITAB.
  2625|     ENDIF.
  2626|   ENDLOOP.
  • EN: For each candidate document join ZDTI_SAPP with ZDTI_STATUS; if a valid (not cancelled/rejected) electronic tax invoice already exists, delete the document from AUSGLOP_ITAB to prevent duplicate issuing.
  • 테이블(파서): read ZDTI_SAPP, ZDTI_STATUS / write AUSGLOP_ITAB
  • SAP 객체: ZDTI_SAPP, ZDTI_STATUS
  • 업무 키워드: 전자세금계산서 발행 이력, 중복 발행 방지, 발행 상태 확인, 발행 대상 제외
  • English: Electronic Tax Invoice, Issued Status, Duplicate Check, ZDTI_SAPP
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, ITABSAPP, ZDTI_SAPP, ZDTI_STATUS, RANGE_CANCEL
  • 위치: abap://ZFIR0140/ZFIR0140#L2608-L2626 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#DTI_CHECK#C2

FORM GET_TAX_DATA — ZFIR0140 L1876-L2054 (179줄)

세금계산서 발행 대상 항목에 BSET 세금 데이터를 합산하고 부호를 맞춘 뒤 고객 목록을 만든다.

이 unit 의 조각 1개가 49/179줄(27%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[calculation] 발행 대상 항목마다 해당 전표의 세금 라인(BSET)을 모두 읽어 공급가액(HWBAS/FWBAS)과 세액(HWSTE/FWSTE)을 합산한다. 한 전표 안에 차·대변 세금 라인이 섞여 있으면(첫 라인의 차대구분과 다른 라인) 빼서 순액을 만들고, 차변(S) 세금 라인만 있는 경우에는 금액 부호를 반전한다. 마지막으로 고객이 바뀌는 지점에서 고객번호를 중복 없이 수집해 이후 주소 조회 대상으로 삼는다.

  1880|   LOOP AT AUSGLOP_ITAB.
  1881|     CLEAR: SIGN,CLEAR.
  1882| 
  1883|     SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1884|                          AND BELNR = AUSGLOP_ITAB-BELNR
  1885|                         AND GJAHR = AUSGLOP_ITAB-GJAHR.
  1886| 
  1887|       IF SIGN = ' '.
  1888|         SIGN = BSET-SHKZG.
  1889|       ENDIF.
  1890|       IF SIGN <> ' ' AND SIGN <>  BSET-SHKZG .
  1891|         AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE - BSET-HWSTE.
  1892|         AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS - BSET-HWBAS.
  1893|         AUSGLOP_ITAB-FWSTE = AUSGLOP_ITAB-FWSTE - BSET-FWSTE.
  1894|         AUSGLOP_ITAB-FWBAS = AUSGLOP_ITAB-FWBAS - BSET-FWBAS.
  1895| 
  1896| 
  1897|         CLEAR = 'X'.
  1898|       ELSE.
  1899|         ADD BSET-HWSTE TO AUSGLOP_ITAB-HWSTE.
  1900|         ADD BSET-HWBAS TO AUSGLOP_ITAB-HWBAS.
  1901|         ADD BSET-FWBAS TO AUSGLOP_ITAB-FWBAS.
  1902|         ADD BSET-FWSTE TO AUSGLOP_ITAB-FWSTE.
  1903| 
  1904|       ENDIF.
  1905| 
  1906| *      ADD bset-hwbas TO ausglop_itab-hwbas.
  1907| *      ADD bset-hwste TO ausglop_itab-hwste.
  1908| *      ADD bset-fwbas TO ausglop_itab-fwbas.
  1909| *      ADD bset-fwste TO ausglop_itab-fwste.
  1910| *      IF bset-shkzg = 'S'.
  1911|       IF BSET-SHKZG = 'S' AND CLEAR = ' '.
  1912|         AUSGLOP_ITAB-WRBTR = -1 * ( AUSGLOP_ITAB-WRBTR ).
  1913|         AUSGLOP_ITAB-DMBTR = -1 * ( AUSGLOP_ITAB-DMBTR ).
  1914|       ENDIF.
  1915| *      MOVE bset-shkzg to ausglop_itab-shkzg.
  1916|       IF AUSGLOP_ITAB-SHKZG = ' ' .
  1917|         MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG.
  1918|       ENDIF.
  1919|       MODIFY AUSGLOP_ITAB.
  1920|     ENDSELECT.
  1921|     AT NEW KUNNR.
  1922|       READ TABLE CUSTOMER_TAB WITH KEY KUNNR = AUSGLOP_ITAB-KUNNR.
  1923|       IF SY-SUBRC <> 0.
  1924|         MOVE AUSGLOP_ITAB-KUNNR TO CUSTOMER_TAB-KUNNR.
  1925|         APPEND CUSTOMER_TAB.
  1926|       ENDIF.
  1927|     ENDAT.
  1928|   ENDLOOP.
  • EN: Aggregates tax base and tax amounts from BSET per issuing item, netting mixed debit/credit tax lines, flipping signs for debit-only cases, and collecting distinct customers for later address lookup.
  • 테이블(파서): read BSET / write AUSGLOP_ITAB
  • SAP 객체: BSET, HWBAS, HWSTE, FWBAS, FWSTE, SHKZG, KUNNR
  • 업무 키워드: 세금계산서, 세액, 공급가액, 부가세, 차대구분, 순액, 부호반전, 고객수집, 세금라인
  • English: tax invoice, tax amount, tax base, VAT, debit credit, net amount, sign reversal, BSET
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, CLEAR, SIGN, BSET, CODE, BUKRS, CUSTOMER_TAB
  • 위치: abap://ZFIR0140/ZFIR0140#L1880-L1928 · confidence 0.8 · ZFIR0140#ZFIR0140#FORM#GET_TAX_DATA#C1

FORM GET_CUSTOMER_ADDRESS — ZFIR0140 L2063-L2114 (52줄)

고객 마스터(KNA1)에서 사업자번호와 주소를 읽어 고객 헤더(GT_KUNDE)와 발행 항목에 보강하고, 일회성(CPD) 고객은 전표의 BSEC 주소 데이터를 사용하며 종사업장번호(J_1BBRANCH)를 붙인다.

이 unit 의 조각 3개가 42/52줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[sql_select] 회사코드의 사업장 K000 에 대한 종사업장번호(STATE_INSC)를 J_1BBRANCH 에서 읽어 공급자 종사업장 정보로 사용한다.

  2068|       SELECT  SINGLE  STATE_INSC  INTO L_STATE_INSC
  2069|                    FROM   J_1BBRANCH
  2070|                   WHERE   BUKRS   =  DD_BUKRS-LOW
  2071|                     AND   BRANCH  =  'K000'.
  • EN: Read the branch (sub-business place) number STATE_INSC for business place K000 of the company code from J_1BBRANCH.
  • 테이블(파서): read J_1BBRANCH / write -
  • SAP 객체: J_1BBRANCH
  • 업무 키워드: 종사업장번호, 사업장, 공급자 정보
  • English: Business Place, Branch, J_1BBRANCH
  • 정의부(복사 시 함께 필요): L_STATE_INSC, CODE, BUKRS
  • 선언을 못 찾은 이름: J_1BBRANCH, DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L2068-L2071 · confidence 0.8 · ZFIR0140#ZFIR0140#FORM#GET_CUSTOMER_ADDRESS#C1

[sql_select] 발행 대상 고객마다 KNA1 을 읽어 고객 헤더 GT_KUNDE 를 만들고, 일반 고객은 사업자등록번호(STCD1)·주민번호(STCD2)를 AUSGLOP_ITAB 에 반영하며 일회성 고객(XCPDK)은 CPD 플래그를 표시한다.

  2073|   LOOP AT CUSTOMER_TAB.
  2074|     SELECT SINGLE * FROM KNA1 WHERE KUNNR  = CUSTOMER_TAB-KUNNR.
  2075| 
  2076|     IF SY-SUBRC = 0.
  2077|       MOVE-CORRESPONDING KNA1 TO GT_KUNDE.
  2078|       GT_KUNDE-STATE_INSC =  L_STATE_INSC.
  2079| 
  2080|       APPEND GT_KUNDE.
  2081|       IF KNA1-XCPDK  NE 'X'.
  2082|         MOVE KNA1-STCD1 TO CUSTOMER_TAB-STCD1.
  2083|         MOVE KNA1-STCD2 TO CUSTOMER_TAB-STCD2.
  2084| 
  2085|         AUSGLOP_ITAB-STCD1 = CUSTOMER_TAB-STCD1.
  2086|         AUSGLOP_ITAB-STCD2 = CUSTOMER_TAB-STCD2.
  2087|         MODIFY AUSGLOP_ITAB TRANSPORTING STCD1 STCD2  WHERE
  2088|         KUNNR = CUSTOMER_TAB-KUNNR.
  2089|       ELSE.
  2090| *one time customers.
  2091|         AUSGLOP_ITAB-XCPDK = 'X'.
  2092|         MODIFY AUSGLOP_ITAB TRANSPORTING XCPDK WHERE
  2093|                      KUNNR = CUSTOMER_TAB-KUNNR.
  2094|       ENDIF.
  2095|     ENDIF.
  2096| 
  2097|   ENDLOOP.
  • EN: For each customer read KNA1 to build the customer header GT_KUNDE; copy tax numbers STCD1/STCD2 to the items for regular customers and flag one-time (CPD) customers with XCPDK.
  • 테이블(파서): read KNA1 / write AUSGLOP_ITAB
  • SAP 객체: KNA1
  • 업무 키워드: 고객 마스터, 사업자등록번호, 주민등록번호, 일회성 고객, 고객 헤더
  • English: Customer Master, KNA1, Tax Number, One-time Customer, CPD
  • 정의부(복사 시 함께 필요): CUSTOMER_TAB, KNA1, GT_KUNDE, L_STATE_INSC, AUSGLOP_ITAB
  • 위치: abap://ZFIR0140/ZFIR0140#L2073-L2097 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#GET_CUSTOMER_ADDRESS#C2

[sql_select] 일회성 고객 전표는 BSEC 에서 전표별 CPD 주소 데이터(상호·도시·사업자번호·주민번호)를 읽어 발행 항목에 채운다.

  2099|   LOOP AT AUSGLOP_ITAB WHERE XCPDK = 'X'.
  2100| * getting bsec data for CPD-Customers
  2101|     SELECT * FROM BSEC WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2102|                          AND BELNR = AUSGLOP_ITAB-BELNR
  2103|                          AND GJAHR = AUSGLOP_ITAB-GJAHR
  2104|                          AND XCPDK = 'X'.
  2105|       MOVE BSEC-NAME1 TO AUSGLOP_ITAB-NAME1.
  2106|       MOVE BSEC-ORT01 TO AUSGLOP_ITAB-ORT01.
  2107|       MOVE BSEC-STCD1 TO AUSGLOP_ITAB-STCD1.
  2108|       MOVE BSEC-STCD2 TO AUSGLOP_ITAB-STCD2.
  2109|       MODIFY AUSGLOP_ITAB.
  2110|     ENDSELECT.
  2111|   ENDLOOP.
  • EN: For one-time customer documents read the CPD address data (name, city, tax numbers) from BSEC per document and store it in the items.
  • 테이블(파서): read BSEC / write AUSGLOP_ITAB
  • SAP 객체: BSEC
  • 업무 키워드: 일회성 고객, CPD 주소, 사업자번호, 전표별 고객정보
  • English: One-time Customer, BSEC, CPD Data, Tax Number
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, BSEC, CODE, BUKRS
  • 위치: abap://ZFIR0140/ZFIR0140#L2099-L2111 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#GET_CUSTOMER_ADDRESS#C3

FORM BUILD_UP_ALV_LAYOUT — ZFIR0140 L2399-L2445 (47줄)

필드카탈로그·이벤트·헤더·특수그룹을 구성하고 SELECTION 으로 대상을 확정한 뒤 REUSE_ALV_HIERSEQ_LIST_DISPLAY 로 고객(GT_KUNDE)-전표(GT_AUSGLOP) 계층 ALV 를 출력한다.

이 unit 의 조각 1개가 42/47줄(89%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[output] ALV 구성요소(필드카탈로그·이벤트·TOP_OF_PAGE·특수그룹)를 준비하고 SELECTION 으로 FI/SD 항목을 확정한 후 REUSE_ALV_HIERSEQ_LIST_DISPLAY 를 호출해 고객 헤더-전표 아이템 계층 목록을 PF-STATUS·USER_COMMAND 콜백과 함께 표시한다.

  2402|   PERFORM E01_FIELDCAT_INIT  USING GT_FIELDCAT[].
  2403|   PERFORM E03_EVENTTAB_BUILD USING GT_EVENTS[].
  2404|   PERFORM E04_COMMENT_BUILD  USING GT_LIST_TOP_OF_PAGE[].
  2405|   PERFORM E07_SP_GROUP_BUILD USING GT_SP_GROUP[].
  2406| 
  2407| * selection of the fi and sd-items
  2408|   PERFORM SELECTION.
  2409| 
  2410| * build up ALV layout (part 2)
  2411|   PERFORM E05_LAYOUT_BUILD USING GS_LAYOUT.     "wg. Parameters
  2412| 
  2413| * Call ABAP/4 List Viewer
  2414|   CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
  2415|        EXPORTING
  2416|             I_CALLBACK_PROGRAM       = G_REPID
  2417|             I_CALLBACK_PF_STATUS_SET = G_STATUS
  2418|             I_CALLBACK_USER_COMMAND  = G_USER_COMMAND
  2419|             IS_LAYOUT                = GS_LAYOUT
  2420|             IT_FIELDCAT              = GT_FIELDCAT[]
  2421| *           IT_EXCLUDING             =
  2422|             IT_SPECIAL_GROUPS        = GT_SP_GROUP[]
  2423| *           IT_SORT                  =
  2424| *           IT_FILTER                =
  2425| *           IS_SEL_HIDE              =
  2426| *           I_SCREEN_START_COLUMN    = 0
  2427| *           I_SCREEN_START_LINE      = 0
  2428| *           I_SCREEN_END_COLUMN      = 0
  2429| *           I_SCREEN_END_LINE        = 0
  2430| *           i_default                = g_default
  2431|             I_SAVE                   = G_SAVE
  2432|             IS_VARIANT               = G_VARIANT
  2433|             IT_EVENTS                = GT_EVENTS[]
  2434| *           IT_EVENT_EXIT            =
  2435|             I_TABNAME_HEADER         = G_TABNAME_HEADER
  2436|             I_TABNAME_ITEM           = G_TABNAME_ITEM
  2437|             IS_KEYINFO               = GS_KEYINFO
  2438| *           IS_PRINT                 =
  2439| *      IMPORTING
  2440| *           E_EXIT_CAUSED_BY_CALLER  =
  2441|        TABLES
  2442|             T_OUTTAB_HEADER          = GT_KUNDE
  2443|             T_OUTTAB_ITEM            = GT_AUSGLOP.
  • EN: Prepare the ALV field catalog, events, header and special groups, run SELECTION to finalise FI/SD items, and call REUSE_ALV_HIERSEQ_LIST_DISPLAY to show the customer header / document item hierarchical list with PF-status and user-command callbacks.
  • 호출(파서): E01_FIELDCAT_INIT, E03_EVENTTAB_BUILD, E04_COMMENT_BUILD, E07_SP_GROUP_BUILD, SELECTION, E05_LAYOUT_BUILD, REUSE_ALV_HIERSEQ_LIST_DISPLAY
  • SAP 객체: REUSE_ALV_HIERSEQ_LIST_DISPLAY
  • 업무 키워드: 계층 ALV, 세금계산서 발행 목록, 고객 헤더, 전표 아이템, 사용자 명령
  • English: Hierarchical ALV, REUSE_ALV_HIERSEQ_LIST_DISPLAY, Callback, Field Catalog
  • 정의부(복사 시 함께 필요): GT_FIELDCAT, GT_EVENTS, GT_LIST_TOP_OF_PAGE, GT_SP_GROUP, GS_LAYOUT, G_REPID, G_STATUS, G_USER_COMMAND, G_SAVE, G_VARIANT, G_TABNAME_HEADER, G_TABNAME_ITEM 외 5건
  • 위치: abap://ZFIR0140/ZFIR0140#L2402-L2443 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#BUILD_UP_ALV_LAYOUT#C1

FORM E04_COMMENT_BUILD — ZFIR0140 L1012-L1049 (38줄)

ALV TOP-OF-PAGE 헤더에 발행 방식(합산/개별), 회사코드, 세금계산서 작성일자를 표시하는 리스트 헤더를 구성한다.

이 unit 의 조각 1개가 29/38줄(76%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[output] 옵션 S11OP 에 따라 발행 방식 텍스트를, 그리고 회사코드(DD_BUKRS)와 세금계산서 작성일(SBLDAT)을 ALV 리스트 헤더(SLIS_LISTHEADER)로 만든다.

  1016|   IF S11OP = 'X'.
  1017|     CLEAR LS_LINE.
  1018|     LS_LINE-TYP  = 'S'.
  1019|     LS_LINE-KEY = TEXT-104.
  1020|     LS_LINE-INFO = TEXT-103.
  1021|     APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
  1022|   ELSE.
  1023|     CLEAR LS_LINE.
  1024|     LS_LINE-TYP  = 'S'.
  1025|     LS_LINE-KEY = TEXT-104.
  1026|     LS_LINE-INFO = TEXT-102.
  1027|     APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
  1028| 
  1029|   ENDIF.
  1030| 
  1031| * Listheader: show company code
  1032|   CLEAR LS_LINE.
  1033|   LS_LINE-TYP  = 'S'.
  1034|   LS_LINE-KEY =  TEXT-001.
  1035|   LS_LINE-INFO = DD_BUKRS-LOW.
  1036|   APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
  1037| 
  1038| *  head-info: show acc doc date
  1039|   WRITE SBLDAT TO BLDATE.     "    YYYY.MM.DD.
  1040|   CLEAR LS_LINE.
  1041|   LS_LINE-TYP  = 'S'.
  1042|   LS_LINE-KEY  =  TEXT-101.
  1043|   LS_LINE-INFO = BLDATE.
  1044|   APPEND LS_LINE TO E04_LT_TOP_OF_PAGE.
  • EN: Build ALV list header lines showing the issue mode text (by S11OP), the company code and the tax invoice date SBLDAT.
  • SAP 객체: REUSE_ALV_COMMENTARY_WRITE
  • 업무 키워드: 리스트 헤더, 회사코드, 세금계산서 작성일, 발행 방식
  • English: List Header, TOP_OF_PAGE, Company Code, Tax Invoice Date
  • 정의부(복사 시 함께 필요): S11OP, LS_LINE, SBLDAT, BLDATE
  • 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L1016-L1044 · confidence 0.75 · ZFIR0140#ZFIR0140#FORM#E04_COMMENT_BUILD#C1

FORM SELECTION — ZFIR0140 L1098-L1135 (38줄)

발행 후보(AUSGLOP_ITAB)에서 차변 부호를 조정하고 선수금 요청(T074U 비망항목)을 제외하며 FI/SD 선택 옵션에 따라 ALV 아이템(GT_AUSGLOP)과 고객 헤더(GT_KUNDE)를 확정한다.

이 unit 의 조각 2개가 32/38줄(84%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[validation] 차변(SHKZG='S') 건은 공급가액·세액의 부호를 반전하고, T074U 로 특별G/L 지시자가 비망항목(MERKP, 선수금 요청)인 건을 제외하며, FI 전용 선택이면 SD 청구(AWTYP='VBRK') 유래 전표를 빼고 GT_AUSGLOP 에 적재한다.

  1102|   LOOP AT AUSGLOP_ITAB.
  1103|     IF AUSGLOP_ITAB-SHKZG = 'S'.
  1104|       AUSGLOP_ITAB-HWBAS = -1 * AUSGLOP_ITAB-HWBAS.
  1105|       AUSGLOP_ITAB-HWSTE = -1 * AUSGLOP_ITAB-HWSTE.
  1106|     ENDIF.
  1107| 
  1108| * check document not down payment request
  1109| 
  1110|     SELECT SINGLE * FROM T074U WHERE KOART = AUSGLOP_ITAB-KOART
  1111|                                AND   UMSKZ = AUSGLOP_ITAB-UMSKZ.
  1112|     CHECK T074U-MERKP = ' '.
  1113| 
  1114| * if fi_selection flag is set display only acounting documents
  1115| 
  1116|     IF FI_SELECTION = 'X' AND SD_SELECTION NE 'X'.
  1117|       CHECK AUSGLOP_ITAB-AWTYP <> 'VBRK'.
  1118|       MOVE-CORRESPONDING AUSGLOP_ITAB TO GT_AUSGLOP.
  1119|       APPEND GT_AUSGLOP.
  1120|     ELSE.
  1121|       MOVE-CORRESPONDING AUSGLOP_ITAB TO GT_AUSGLOP.
  1122|       APPEND GT_AUSGLOP.
  1123|     ENDIF.
  1124| 
  1125|   ENDLOOP.
  • EN: Negate tax base and tax amount for debit items, exclude noted-item special G/L transactions (down payment requests) via T074U-MERKP, and, for FI-only selection, skip SD billing documents (AWTYP='VBRK') before appending to GT_AUSGLOP.
  • 테이블(파서): read T074U / write -
  • SAP 객체: T074U
  • 업무 키워드: 차대 구분, 선수금 요청 제외, 특별 G/L, 비망 항목, FI/SD 선택
  • English: Debit/Credit Indicator, Noted Item, Special G/L, Down Payment Request, T074U
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, T074U, FI_SELECTION, SD_SELECTION, GT_AUSGLOP
  • 위치: abap://ZFIR0140/ZFIR0140#L1102-L1125 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#SELECTION#C1

[aggregation] 아이템이 하나도 남지 않은 고객은 헤더 테이블(GT_KUNDE)에서 삭제하고 아이템을 고객·전표·라인 순으로 정렬한 뒤 E02_DATA_ADD 로 표시 속성을 보강한다.

  1127|   LOOP AT GT_KUNDE.
  1128|     READ TABLE GT_AUSGLOP WITH KEY KUNNR = GT_KUNDE-KUNNR.
  1129|     IF SY-SUBRC NE 0.
  1130|       DELETE GT_KUNDE.
  1131|     ENDIF.
  1132|   ENDLOOP.
  1133|   SORT GT_AUSGLOP BY KUNNR BELNR BUZEI.
  1134|   PERFORM E02_DATA_ADD TABLES GT_AUSGLOP GT_KUNDE.
  • EN: Delete customer header rows without remaining items, sort items by customer/document/line and call E02_DATA_ADD to prepare display attributes.
  • 테이블(파서): read - / write GT_KUNDE
  • 호출(파서): E02_DATA_ADD
  • 업무 키워드: 고객 헤더 정리, 정렬, 계층 ALV
  • English: Customer Header, Hierarchical ALV, Sort
  • 정의부(복사 시 함께 필요): KNA1, GT_KUNDE, AUSGLOP_ITAB, GT_AUSGLOP
  • 위치: abap://ZFIR0140/ZFIR0140#L1127-L1134 · confidence 0.8 · ZFIR0140#ZFIR0140#FORM#SELECTION#C2

FORM E02_DATA_ADD — ZFIR0140 L942-L980 (39줄)

ALV 출력 전 아이템(GT_AUSGLOP)의 체크박스를 초기화하고 선수금(특별G/L) 건의 공급가액·세액을 양수로 바꾸며 고객 헤더(GT_KUNDE)의 신호등 값을 설정한다.

이 unit 의 조각 2개가 34/39줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[calculation] 각 발행 항목의 체크박스를 지우고 특별G/L지시자(UMSKZ)가 있는 선수금 건은 음수인 공급가액(HWBAS)·세액(HWSTE)을 양수로 변환해 리스트에 양수로 표시한다.

   945|   LOOP AT E02_LT_AUSGLOP.
   946|     E02_LT_AUSGLOP-BOX  = ' '.
   947| 
   948| * if the invoice is a down payment write positive values of base amount
   949| * and tax amount in the list.
   950| 
   951|     IF E02_LT_AUSGLOP-UMSKZ <> ' '.
   952|       IF E02_LT_AUSGLOP-HWBAS < 0.
   953|         E02_LT_AUSGLOP-HWBAS = -1 * ( E02_LT_AUSGLOP-HWBAS ).
   954|       ENDIF.
   955|       IF E02_LT_AUSGLOP-HWSTE < 0.
   956|         E02_LT_AUSGLOP-HWSTE = -1 * ( E02_LT_AUSGLOP-HWSTE ).
   957|       ENDIF.
   958|     ENDIF.
   959| 
   960|     E02_LT_AUSGLOP-WERT = SY-TABIX MOD 5.
   961| 
   962| 
   963| 
   964|     MODIFY E02_LT_AUSGLOP.
   965|   ENDLOOP.
  • EN: Reset the checkbox of each item and, for down-payment items with a special G/L indicator (UMSKZ), convert negative tax base (HWBAS) and tax amount (HWSTE) to positive values for display.
  • 업무 키워드: 선수금, 특별 G/L 지시자, 공급가액, 세액, 부호 변환
  • English: Down Payment, Special G/L Indicator, Tax Base Amount, Tax Amount
  • 위치: abap://ZFIR0140/ZFIR0140#L945-L965 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#E02_DATA_ADD#C1

[output] 고객 헤더 라인(GT_KUNDE)의 체크박스를 초기화하고 ALV 신호등(LIGHTS) 값을 설정한다.

   967|   LOOP AT E02_LT_KUNDE.
   968|     IF SY-TABIX > 0.
   969|       E02_LT_KUNDE-BOX  = ' '.
   970|       E02_LT_KUNDE-LIGHTS = '3'.
   971|     ELSE.
   972|       IF SY-TABIX = 1.
   973|         E02_LT_KUNDE-LIGHTS = '2'.
   974|       ELSE.
   975|         E02_LT_KUNDE-LIGHTS = '1'.
   976|       ENDIF.
   977|     ENDIF.
   978|     MODIFY E02_LT_KUNDE.
   979|   ENDLOOP.
  • EN: Initialise the checkbox and set the ALV traffic-light value (LIGHTS) for each customer header line.
  • 테이블(파서): read - / write E02_LT_KUNDE
  • 업무 키워드: 고객 헤더, 신호등, 체크박스 초기화
  • English: Customer Header, Traffic Light, ALV
  • 위치: abap://ZFIR0140/ZFIR0140#L967-L979 · confidence 0.7 · ZFIR0140#ZFIR0140#FORM#E02_DATA_ADD#C2

FORM USER_COMMAND — ZFIR0140 L1158-L1557 (400줄)

ALV 사용자 명령 처리 FORM 의 시작부(1/3 창)로 로컬 변수 선언과 시뮬레이션 플래그 초기화만 있다.

이 unit 의 조각 11개가 322/400줄(80%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[interface] 커서 위치의 전표(GT_AUSGLOP)에 대해 파라미터 ID BLN/BUK/GJR 를 설정하고 선택된 건이면 FB03 으로 회계전표를 조회하며 미선택 건이면 오류 메시지 E204 를 낸다.

  1168|     WHEN  'WAHL'.
  1169|       READ TABLE GT_AUSGLOP INDEX RS_SELFIELD-TABINDEX. "cursorposit.
  1170|       SET PARAMETER ID 'BLN' FIELD  GT_AUSGLOP-BELNR.
  1171|       SET PARAMETER ID 'BUK' FIELD  GT_AUSGLOP-BUKRS.
  1172|       SET PARAMETER ID 'GJR' FIELD  GT_AUSGLOP-GJAHR.
  1173|       IF GT_AUSGLOP-BELNR <> SPACE AND
  1174|         ( GT_AUSGLOP-BOX = 'X' OR GT_AUSGLOP-BOX = '1' ).
  1175|         CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
  1176|       ENDIF.
  1177|       IF GT_AUSGLOP-BELNR <> SPACE AND
  1178|          GT_AUSGLOP-BOX = ' '.
  1179|         MESSAGE E204.
  1180|       ENDIF.
  1181|       CLEAR R_UCOMM.
  • EN: On WAHL set parameter IDs BLN/BUK/GJR for the cursor row and call transaction FB03 to display the FI document if the row is selected; otherwise raise message E204.
  • 호출(파서): FB03
  • SAP 객체: FB03
  • 업무 키워드: 전표 조회, 회계전표, 파라미터 ID, 선택 검증
  • English: Display Document, FB03, SET PARAMETER ID
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, GT_AUSGLOP
  • 위치: abap://ZFIR0140/ZFIR0140#L1168-L1181 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C1

[aggregation] POST 시 고객 단위(GT_KUNDE)로 체크된 선택을 해당 고객의 모든 전표(GT_AUSGLOP)에 전파하고, 체크된 전표를 발행일(SBLDAT)·사업자번호(STCD2 우선, 없으면 STCD1)와 함께 SEL_AUSGLOP_ITAB 에 모아 회사코드·고객·전표번호 기준 중복을 제거한다.

  1193|       CLEAR GT_KUNDE.
  1194|       LOOP AT GT_KUNDE.
  1195|         IF GT_KUNDE-BOX = 'X'.
  1196|           CLEAR GT_AUSGLOP.
  1197|           LOOP AT GT_AUSGLOP WHERE KUNNR = GT_KUNDE-KUNNR.
  1198|             GT_AUSGLOP-BOX = 'X'.
  1199|             MODIFY GT_AUSGLOP.
  1200|           ENDLOOP.
  1201|         ENDIF.
  1202|       ENDLOOP.
  1203| 
  1204| * Check flags at document level and fill sel_ausglop_itab with selected
  1205| * items.
  1206|       REFRESH SEL_AUSGLOP_ITAB.
  1207|       CLEAR SAVE_BELNR.
  1208|       CLEAR SAVE_AWTYP.
  1209|       CLEAR GT_AUSGLOP.
  1210|       LOOP AT GT_AUSGLOP.
  1211|         IF GT_AUSGLOP-BOX = 'X'.
  1212|           SAVE_BELNR = GT_AUSGLOP-BELNR.
  1213| *          LOOP AT gt_ausglop WHERE belnr = save_belnr.
  1214|           MOVE-CORRESPONDING GT_AUSGLOP TO SEL_AUSGLOP_ITAB.
  1215|           SEL_AUSGLOP_ITAB-AUGDT = SBLDAT.
  1216|           IF GT_AUSGLOP-STCD2 <> ' '.
  1217|             MOVE GT_AUSGLOP-STCD2 TO SEL_AUSGLOP_ITAB-STCD.
  1218|             APPEND SEL_AUSGLOP_ITAB.
  1219|           ELSE.
  1220|             MOVE GT_AUSGLOP-STCD1 TO SEL_AUSGLOP_ITAB-STCD.
  1221|             APPEND SEL_AUSGLOP_ITAB.
  1222|           ENDIF.
  1223| *          ENDLOOP.
  1224|         ENDIF.
  1225|       ENDLOOP.
  1226| 
  1227|       DELETE ADJACENT DUPLICATES FROM SEL_AUSGLOP_ITAB COMPARING BUKRS
  1228|                                                          KUNNR BELNR.
  • EN: Propagate customer-level checkbox selection to all documents of that customer, collect the selected documents into SEL_AUSGLOP_ITAB with issue date and tax registration number (STCD2 preferred over STCD1), and remove duplicates by company code, customer and document.
  • 테이블(파서): read - / write GT_AUSGLOP
  • 업무 키워드: 발행 대상 선택, 고객별 선택 전파, 사업자등록번호, 중복 제거, 세금계산서 작성일
  • English: Selected Items, Tax Number, Customer Selection, Tax Invoice Date
  • 정의부(복사 시 함께 필요): KNA1, GT_KUNDE, AUSGLOP_ITAB, GT_AUSGLOP, SEL_AUSGLOP_ITAB, SAVE_BELNR, SAVE_AWTYP, SBLDAT, CODE, BUKRS
  • 위치: abap://ZFIR0140/ZFIR0140#L1193-L1228 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C2

[control_flow] 회계연도를 결정(GET_TAXINVOICE_YEAR)하고 전표유형(T003, SBLART)이 유효하면 합산 옵션(SN1OP)에 따라 COLLECTIVE_INVOICES 또는 INDIVIDUAL_INVOICES 로 세금계산서 번호를 채번한다.

  1236|       PERFORM GET_TAXINVOICE_YEAR.
  1237| 
  1238|       SELECT SINGLE * FROM T003 WHERE BLART = SBLART.
  1239|       IF SY-SUBRC = 0.
  1240|         IF SN1OP = 'X'.         "aggregate invoices option
  1241| 
  1242|           PERFORM COLLECTIVE_INVOICES.
  1243|         ELSE.
  1244|           PERFORM INDIVIDUAL_INVOICES.
  1245|         ENDIF.
  1246|       ENDIF.
  • EN: Determine the fiscal year, verify the document type in T003 and assign tax invoice numbers either collectively or individually depending on the aggregate option SN1OP.
  • 테이블(파서): read T003 / write -
  • 호출(파서): GET_TAXINVOICE_YEAR, COLLECTIVE_INVOICES, INDIVIDUAL_INVOICES
  • SAP 객체: T003
  • 업무 키워드: 세금계산서 번호 채번, 합산/개별 발행, 전표유형 검증, 회계연도
  • English: Tax Invoice Number, Collective Invoice, Document Type, T003
  • 정의부(복사 시 함께 필요): T003, CODE, BLART, SBLART, SN1OP
  • 위치: abap://ZFIR0140/ZFIR0140#L1236-L1246 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C3

[calculation] 채번된 세금계산서 번호(AUGBL)의 최소·최대값과 회사코드·회계연도를 구해 출력 프로그램 ZFIR0141 의 선택화면 파라미터(SAUGBL BT, SBUKRS, SGJAHR)용 SELTAB 을 구성한다.

  1248|       CLEAR SEL_AUSGLOP_ITAB.
  1249|       REFRESH CLEARING_ITAB1.
  1250|       CLEAR CLEARING_DATA-SBUKRS.
  1251|       CLEAR CLEARING_DATA-SGJAHR.
  1252|       CLEAR CLEARING_DATA-LOW.
  1253|       CLEAR CLEARING_DATA-HIGH.
  1254|       LINE_COUNT = 0.
  1255|       LOOP AT SEL_AUSGLOP_ITAB.
  1256|         MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO CLEARING_ITAB1.
  1257|         APPEND CLEARING_ITAB1.
  1258|       ENDLOOP.
  1259|       SORT CLEARING_ITAB1 BY AUGBL.
  1260|       DESCRIBE TABLE CLEARING_ITAB1 LINES LINE_COUNT2.
  1261| 
  1262| * filling the fields used to fill the internal table seltab, which
  1263| * will be transmitted to the selection-screen of the print report.
  1264|       LOOP AT CLEARING_ITAB1.
  1265|         IF SY-TABIX = 1.
  1266|           MOVE CLEARING_ITAB1-AUGBL TO CLEARING_DATA-LOW.
  1267|         ENDIF.
  1268|         IF SY-TABIX = LINE_COUNT2.
  1269|           MOVE CLEARING_ITAB1-AUGBL TO CLEARING_DATA-HIGH.
  1270|         ENDIF.
  1271|       ENDLOOP.
  1272|       LOOP AT SEL_AUSGLOP_ITAB.
  1273|         MOVE SEL_AUSGLOP_ITAB-BUKRS TO CLEARING_DATA-SBUKRS.
  1274|         MOVE SEL_AUSGLOP_ITAB-GJAHR TO CLEARING_DATA-SGJAHR.
  1275|       ENDLOOP.
  1276| 
  1277| * filling the internal table seltab to be transmitted to the
  1278| * print programm.
  1279| 
  1280| * Pass in the sel_augslop_itab with tax inv no and date duly filled in.
  1281|       SELTAB-SELNAME = 'SAUGBL'.
  1282|       SELTAB-KIND    = 'S'.
  1283|       SELTAB-SIGN    = 'I'.
  1284|       SELTAB-OPTION  = 'BT'.
  1285|       SELTAB-LOW     = CLEARING_DATA-LOW.
  1286|       SELTAB-HIGH    = CLEARING_DATA-HIGH.
  1287|       APPEND SELTAB.
  1288| 
  1289|       SELTAB-SELNAME = 'SBUKRS'.
  1290|       SELTAB-OPTION  = 'EQ'.
  1291|       SELTAB-LOW     = CLEARING_DATA-SBUKRS.
  1292|       SELTAB-HIGH    = CLEARING_DATA-SBUKRS.
  1293|       APPEND SELTAB.
  1294| 
  1295|       SELTAB-SELNAME = 'SGJAHR'.
  1296|       SELTAB-LOW     = CLEARING_DATA-SGJAHR.
  1297|       SELTAB-HIGH    = CLEARING_DATA-SGJAHR.
  1298|       APPEND SELTAB.
  • EN: Derive the lowest and highest assigned tax invoice number plus company code and fiscal year, and build the SELTAB selection table (SAUGBL range, SBUKRS, SGJAHR) for the print program ZFIR0141.
  • SAP 객체: ZFIR0141
  • 업무 키워드: 세금계산서 번호 범위, 선택 테이블, 출력 프로그램 파라미터
  • English: Selection Table, RSPARAMS, Tax Invoice Number Range
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, CLEARING_ITAB1, CLEARING_DATA, LINE_COUNT, LINE_COUNT2, SELTAB
  • 위치: abap://ZFIR0140/ZFIR0140#L1248-L1298 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C4

[interface] 발행 대상이 있으면 SEL_AUSGLOP_ITAB·호출 프로그램명·합산옵션·작성일자를 ABAP 메모리(ID TI/KRPROG/SN1OP/SBLDAT)로 넘기고 ZFIR0141 을 SUBMIT AND RETURN 하여 세금계산서 출력·전자전송을 수행한다.

  1305|       IF LINE_COUNT2 > 0.
  1306|         PROG_NAME = SY-CPROG.
  1307|         EXPORT SEL_AUSGLOP_ITAB[] TO MEMORY ID 'TI'.
  1308|         EXPORT PROG_NAME TO MEMORY ID 'KRPROG'.
  1309| * Smartbill 추가 2006.07.19
  1310|         EXPORT SN1OP TO MEMORY ID 'SN1OP'.
  1311|         EXPORT SBLDAT TO MEMORY ID 'SBLDAT'.
  1312| 
  1313| 
  1314|         SUBMIT ZFIR0141
  1315|         WITH SELECTION-TABLE SELTAB
  1316|         WITH STA1 EQ STA1
  1317|         WITH STA2 EQ STA2
  1318|         WITH LIST EQ LIST
  1319|         WITH FULLLIST EQ FULLLIST
  1320|         WITH SAP EQ SAP
  1321|         WITH RECEIPT EQ RECEIPT
  1322|         WITH BILLING EQ BILLING
  1323| 
  1324| *        WITH sbldat EQ sbldat
  1325|         AND RETURN.
  1326|       ENDIF.
  • EN: Export the selected items, calling program name, aggregate option and issue date to ABAP memory and SUBMIT ZFIR0141 with the selection table to print/transmit the tax invoices, returning afterwards.
  • 호출(파서): ZFIR0141
  • SAP 객체: ZFIR0141
  • 업무 키워드: 세금계산서 출력, 전자세금계산서 전송, 프로그램 호출, ABAP 메모리
  • English: SUBMIT, EXPORT TO MEMORY, Electronic Tax Invoice, Print Program
  • 정의부(복사 시 함께 필요): LINE_COUNT2, PROG_NAME, SEL_AUSGLOP_ITAB, SN1OP, SBLDAT, SELTAB, STA1, STA2, LIST, FULLLIST, SAP, RECEIPT 외 1건
  • 위치: abap://ZFIR0140/ZFIR0140#L1305-L1326 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C5

[output] ZFIR0141 이 메모리 ID TI 로 돌려준 전송 결과(RESULT='Y')를 읽어 정상 전송된 전표는 체크박스를 비활성(BOX='1')하고 세금계산서 번호를 표시·색상 강조하며 ALV 를 갱신한다.

  1334|       IMPORT SEL_AUSGLOP_ITAB[] FROM MEMORY ID 'TI'.
  1335|       FREE MEMORY ID 'TI'.
  1336| 
  1337| * setting inactive the checkboxes of FB05-cleared documents
  1338|       LOOP AT SEL_AUSGLOP_ITAB.
  1339|         LOOP AT GT_AUSGLOP WHERE BELNR = SEL_AUSGLOP_ITAB-BELNR.
  1340|           IF SEL_AUSGLOP_ITAB-RESULT EQ 'Y'.
  1341|             GT_AUSGLOP-BOX = '1'.
  1342|             MOVE SEL_AUSGLOP_ITAB-AUGBL TO GT_AUSGLOP-AUGBL.
  1343| *    defining field-color
  1344| 
  1345| *    Field AUGBL defined
  1346|             WA_COLORF-FIELDNAME = 'AUGBL'.
  1347|             WA_COLORF-COLOR-COL       = '5'.
  1348|             WA_COLORF-COLOR-INT       = '1'.
  1349|             WA_COLORF-COLOR-INV       = '0'.
  1350|             WA_COLORF-NOKEYCOL       = 'X'.
  1351|             APPEND WA_COLORF TO INT_COLORF.
  1352| 
  1353|             GT_AUSGLOP-COLORF  = INT_COLORF.
  1354|             GT_AUSGLOP-SIM = ' '.
  1355|             MODIFY GT_AUSGLOP.
  1356|           ELSE.
  1357| **    defining field-color
  1358| *
  1359| **    Field AUGBL defined
  1360| *            WA_COLORF-FIELDNAME = 'AUGBL'.
  1361| *            WA_COLORF-COLOR-COL       = '3'.
  1362| *            WA_COLORF-COLOR-INT       = '1'.
  1363| *            WA_COLORF-COLOR-INV       = '0'.
  1364| *            WA_COLORF-NOKEYCOL       = 'X'.
  1365| *            APPEND WA_COLORF TO INT_COLORF.
  1366| *
  1367| *            GT_AUSGLOP-COLORF  = INT_COLORF.
  1368|             GT_AUSGLOP-SIM = ' '.
  1369|             MODIFY GT_AUSGLOP.
  1370|           ENDIF.
  1371| 
  1372|         ENDLOOP.
  1373|         RS_SELFIELD-REFRESH = 'X'.
  1374|         IF SY-SUBRC <> 0.
  1375|           ERR_DEB = SEL_AUSGLOP_ITAB-KUNNR.
  1376|         ENDIF.
  1377|       ENDLOOP.
  • EN: Import the transmission result returned by ZFIR0141; for successfully issued documents (RESULT='Y') disable the checkbox, store the tax invoice number with a colored AUGBL cell and refresh the ALV.
  • 테이블(파서): read - / write GT_AUSGLOP
  • SAP 객체: ZFIR0141
  • 업무 키워드: 전송 결과 반영, 발행 완료 표시, 세금계산서 번호, ALV 갱신
  • English: Transmission Result, ALV Refresh, Cell Color, Tax Invoice Number
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, AUSGLOP_ITAB, GT_AUSGLOP, WA_COLORF, INT_COLORF, ERR_DEB
  • 위치: abap://ZFIR0140/ZFIR0140#L1334-L1377 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C6

[aggregation] SIM(시뮬레이션) 시 시뮬레이션 플래그를 켜고 POST 와 동일하게 고객 단위 선택을 전표에 전파해 체크된 전표를 SEL_AUSGLOP_ITAB 에 모아 중복 제거한다.

  1395|     WHEN 'SIM'.
  1396|       SIM = 'X'.
  1397|       CLEAR GT_KUNDE.
  1398| 
  1399|       LOOP AT GT_KUNDE.
  1400|         IF GT_KUNDE-BOX = 'X'.
  1401|           CLEAR GT_AUSGLOP.
  1402|           LOOP AT GT_AUSGLOP WHERE KUNNR = GT_KUNDE-KUNNR.
  1403|             GT_AUSGLOP-BOX = 'X'.
  1404|             MODIFY GT_AUSGLOP.
  1405|           ENDLOOP.
  1406|         ENDIF.
  1407|       ENDLOOP.
  1408| 
  1409| * Check flags at document level and fill sel_ausglop_itab with selected
  1410| * items.
  1411|       REFRESH SEL_AUSGLOP_ITAB.
  1412|       CLEAR SAVE_BELNR.
  1413|       CLEAR SAVE_AWTYP.
  1414|       CLEAR GT_AUSGLOP.
  1415|       LOOP AT GT_AUSGLOP.
  1416|         IF GT_AUSGLOP-BOX = 'X'.
  1417|           SAVE_BELNR = GT_AUSGLOP-BELNR.
  1418| *          LOOP AT gt_ausglop WHERE belnr = save_belnr.
  1419|           MOVE-CORRESPONDING GT_AUSGLOP TO SEL_AUSGLOP_ITAB.
  1420|           SEL_AUSGLOP_ITAB-AUGDT = SBLDAT.
  1421|           IF GT_AUSGLOP-STCD2 <> ' '.
  1422|             MOVE GT_AUSGLOP-STCD2 TO SEL_AUSGLOP_ITAB-STCD.
  1423|             APPEND SEL_AUSGLOP_ITAB.
  1424|           ELSE.
  1425|             MOVE GT_AUSGLOP-STCD1 TO SEL_AUSGLOP_ITAB-STCD.
  1426|             APPEND SEL_AUSGLOP_ITAB.
  1427|           ENDIF.
  1428| *          ENDLOOP.
  1429|         ENDIF.
  1430|       ENDLOOP.
  1431| 
  1432|       DELETE ADJACENT DUPLICATES FROM SEL_AUSGLOP_ITAB COMPARING BUKRS
  1433|                                                            KUNNR BELNR.
  • EN: In simulation mode set SIM='X', propagate customer-level selection to documents and collect the checked documents into SEL_AUSGLOP_ITAB without duplicates, same as POST.
  • 테이블(파서): read - / write GT_AUSGLOP
  • 업무 키워드: 시뮬레이션, 발행 대상 선택, 고객별 선택 전파, 사업자등록번호
  • English: Simulation, Selected Items, Tax Number
  • 정의부(복사 시 함께 필요): SIM, KNA1, GT_KUNDE, AUSGLOP_ITAB, GT_AUSGLOP, SEL_AUSGLOP_ITAB, SAVE_BELNR, SAVE_AWTYP, SBLDAT, CODE, BUKRS
  • 위치: abap://ZFIR0140/ZFIR0140#L1395-L1433 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C7

[control_flow] 시뮬레이션에서도 전표유형(T003)을 확인한 뒤 합산 옵션(SN1OP)에 따라 COLLECTIVE_INVOICES / INDIVIDUAL_INVOICES 로 가상 세금계산서 번호를 부여한다.

  1438|       SELECT SINGLE * FROM T003 WHERE BLART = SBLART.
  1439|       IF SY-SUBRC = 0.
  1440|         IF SN1OP = 'X'.         "aggregate invoices option
  1441| 
  1442|           PERFORM COLLECTIVE_INVOICES.
  1443|         ELSE.
  1444|           PERFORM INDIVIDUAL_INVOICES.
  1445|         ENDIF.
  1446|       ENDIF.
  • EN: Verify the document type in T003 and assign simulated tax invoice numbers collectively or individually according to SN1OP.
  • 테이블(파서): read T003 / write -
  • 호출(파서): COLLECTIVE_INVOICES, INDIVIDUAL_INVOICES
  • SAP 객체: T003
  • 업무 키워드: 시뮬레이션 채번, 전표유형, 합산/개별
  • English: Simulation, Document Type, T003
  • 정의부(복사 시 함께 필요): T003, CODE, BLART, SBLART, SN1OP
  • 위치: abap://ZFIR0140/ZFIR0140#L1438-L1446 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C8

[calculation] 시뮬레이션 번호(AUGBL)의 범위와 회사코드·연도로 ZFIR0141 선택화면용 SELTAB(SAUGBL, SBUKRS, SGJAHR)을 구성한다.

  1448|       CLEAR SEL_AUSGLOP_ITAB.
  1449|       REFRESH CLEARING_ITAB1.
  1450|       CLEAR CLEARING_DATA-SBUKRS.
  1451|       CLEAR CLEARING_DATA-SGJAHR.
  1452|       CLEAR CLEARING_DATA-LOW.
  1453|       CLEAR CLEARING_DATA-HIGH.
  1454|       LINE_COUNT = 0.
  1455|       LOOP AT SEL_AUSGLOP_ITAB.
  1456|         MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO CLEARING_ITAB1.
  1457|         APPEND CLEARING_ITAB1.
  1458|       ENDLOOP.
  1459|       SORT CLEARING_ITAB1 BY AUGBL.
  1460|       DESCRIBE TABLE CLEARING_ITAB1 LINES LINE_COUNT2.
  1461| 
  1462| * filling the fields used to fill the internal table seltab, which
  1463| * will be transmitted to the selection-screen of the print report.
  1464|       LOOP AT CLEARING_ITAB1.
  1465|         IF SY-TABIX = 1.
  1466|           MOVE CLEARING_ITAB1-AUGBL TO CLEARING_DATA-LOW.
  1467|         ENDIF.
  1468|         IF SY-TABIX = LINE_COUNT2.
  1469|           MOVE CLEARING_ITAB1-AUGBL TO CLEARING_DATA-HIGH.
  1470|         ENDIF.
  1471|       ENDLOOP.
  1472|       LOOP AT SEL_AUSGLOP_ITAB.
  1473|         MOVE SEL_AUSGLOP_ITAB-BUKRS TO CLEARING_DATA-SBUKRS.
  1474|         MOVE SEL_AUSGLOP_ITAB-GJAHR TO CLEARING_DATA-SGJAHR.
  1475|       ENDLOOP.
  1476| 
  1477| * filling the internal table seltab to be transmitted to the
  1478| * print programm.
  1479| 
  1480| * Pass in the sel_augslop_itab with tax inv no and date duly filled in.
  1481|       SELTAB-SELNAME = 'SAUGBL'.
  1482|       SELTAB-KIND    = 'S'.
  1483|       SELTAB-SIGN    = 'I'.
  1484|       SELTAB-OPTION  = 'BT'.
  1485|       SELTAB-LOW     = CLEARING_DATA-LOW.
  1486|       SELTAB-HIGH    = CLEARING_DATA-HIGH.
  1487|       APPEND SELTAB.
  1488| 
  1489|       SELTAB-SELNAME = 'SBUKRS'.
  1490|       SELTAB-OPTION  = 'EQ'.
  1491|       SELTAB-LOW     = CLEARING_DATA-SBUKRS.
  1492|       SELTAB-HIGH    = CLEARING_DATA-SBUKRS.
  1493|       APPEND SELTAB.
  1494| 
  1495|       SELTAB-SELNAME = 'SGJAHR'.
  1496|       SELTAB-LOW     = CLEARING_DATA-SGJAHR.
  1497|       SELTAB-HIGH    = CLEARING_DATA-SGJAHR.
  1498|       APPEND SELTAB.
  • EN: Build the SELTAB selection table (SAUGBL range, SBUKRS, SGJAHR) from the simulated invoice numbers for the print program.
  • SAP 객체: ZFIR0141
  • 업무 키워드: 선택 테이블, 번호 범위, 시뮬레이션
  • English: Selection Table, Simulation, Tax Invoice Number Range
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, CLEARING_ITAB1, CLEARING_DATA, LINE_COUNT, LINE_COUNT2, SELTAB
  • 위치: abap://ZFIR0140/ZFIR0140#L1448-L1498 · confidence 0.8 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C9

[interface] 시뮬레이션 대상을 메모리(TI/KRPROG/KRSIM/SN1OP/SBLDAT)로 넘기고 ZFIR0141 을 SUBMIT AND RETURN 하여 세금계산서를 시뮬레이션 출력(미리보기)한다.

  1504|       IF LINE_COUNT2 > 0.
  1505|         PROG_NAME = SY-CPROG.
  1506|         EXPORT SEL_AUSGLOP_ITAB[] TO MEMORY ID 'TI'.
  1507|         EXPORT PROG_NAME TO MEMORY ID 'KRPROG'.
  1508| **Simulate
  1509|         EXPORT SIM TO MEMORY ID 'KRSIM'.
  1510| * Smartbill 추가 2006.07.19
  1511|         EXPORT SN1OP TO MEMORY ID 'SN1OP'.
  1512|         EXPORT SBLDAT TO MEMORY ID 'SBLDAT'.
  1513|         SUBMIT ZFIR0141
  1514|         WITH SELECTION-TABLE SELTAB
  1515|         WITH STA1 EQ STA1
  1516|         WITH STA2 EQ STA2
  1517|         WITH LIST EQ LIST
  1518|         WITH FULLLIST EQ FULLLIST
  1519|         WITH SAP EQ SAP
  1520|         WITH RECEIPT EQ RECEIPT
  1521|         WITH BILLING EQ BILLING
  1522| *        WITH sbldat EQ sbldat
  1523|         AND RETURN.
  1524|       ENDIF.
  • EN: Export the simulated items and the KRSIM simulation flag to ABAP memory and SUBMIT ZFIR0141 to preview the tax invoices without actual issuance.
  • 호출(파서): ZFIR0141
  • SAP 객체: ZFIR0141
  • 업무 키워드: 시뮬레이션 출력, 미리보기, 프로그램 호출, ABAP 메모리
  • English: SUBMIT, Simulation, EXPORT TO MEMORY
  • 정의부(복사 시 함께 필요): LINE_COUNT2, PROG_NAME, SEL_AUSGLOP_ITAB, SIM, SN1OP, SBLDAT, SELTAB, STA1, STA2, LIST, FULLLIST, SAP 외 2건
  • 위치: abap://ZFIR0140/ZFIR0140#L1504-L1524 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C10

[output] 시뮬레이션된 세금계산서 번호를 GT_AUSGLOP-AUGBL 에 표시하고 SIM 플래그와 셀 색상을 설정한 뒤 ALV 를 갱신한다.

  1528|       LOOP AT SEL_AUSGLOP_ITAB.
  1529| 
  1530|         LOOP AT GT_AUSGLOP WHERE BELNR = SEL_AUSGLOP_ITAB-BELNR.
  1531|           MOVE SEL_AUSGLOP_ITAB-AUGBL TO GT_AUSGLOP-AUGBL.
  1532| 
  1533| *    defining field-color
  1534| 
  1535| *    Field AUGBL defined
  1536|           WA_COLORF-FIELDNAME = 'AUGBL'.
  1537|           WA_COLORF-COLOR-COL       = '5'.
  1538|           WA_COLORF-COLOR-INT       = '1'.
  1539|           WA_COLORF-COLOR-INV       = '0'.
  1540|           WA_COLORF-NOKEYCOL       = 'X'.
  1541|           APPEND WA_COLORF TO INT_COLORF.
  1542| 
  1543|           GT_AUSGLOP-COLORF  = INT_COLORF.
  1544|           GT_AUSGLOP-SIM = 'X'.
  1545|           MODIFY GT_AUSGLOP.
  1546|         ENDLOOP.
  1547|         RS_SELFIELD-REFRESH = 'X'.
  1548|         IF SY-SUBRC <> 0.
  1549|           ERR_DEB = SEL_AUSGLOP_ITAB-KUNNR.
  1550|         ENDIF.
  1551|       ENDLOOP.
  • EN: Show the simulated tax invoice number in GT_AUSGLOP with a colored AUGBL cell and SIM flag, then refresh the ALV.
  • 테이블(파서): read - / write GT_AUSGLOP
  • 업무 키워드: 시뮬레이션 결과 표시, ALV 갱신, 셀 색상
  • English: Simulation Result, ALV Refresh, Cell Color
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, AUSGLOP_ITAB, GT_AUSGLOP, WA_COLORF, INT_COLORF, ERR_DEB
  • 위치: abap://ZFIR0140/ZFIR0140#L1528-L1551 · confidence 0.8 · ZFIR0140#ZFIR0140#FORM#USER_COMMAND#C11

FORM GET_TAXINVOICE_YEAR — ZFIR0140 L1676-L1708 (33줄)

선택 항목의 전기일(BUDAT)과 회사코드로 FI_PERIOD_DETERMINE 을 호출해 세금계산서 채번에 쓸 회계연도(YEAR)를 구한다.

이 unit 의 조각 1개가 26/33줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[fm_call] 전기일·회사코드로 FI_PERIOD_DETERMINE 을 호출해 회계연도(E_GJAHR)를 YEAR 에 받아 세금계산서 번호범위 채번 연도로 사용한다.

  1680|   CALL FUNCTION 'FI_PERIOD_DETERMINE'
  1681|     EXPORTING
  1682|       I_BUDAT              = SEL_AUSGLOP_ITAB-BUDAT
  1683|      I_BUKRS              =  DD_BUKRS-LOW
  1684| *   I_PERIV              = ' '
  1685| *   I_GJAHR              = 0000
  1686| *   I_MONAT              = 00
  1687| *   X_XMO16              = ' '
  1688|    IMPORTING
  1689|      E_GJAHR              = YEAR.
  1690| *   E_MONAT              =
  1691| *   E_POPER              =
  1692| * EXCEPTIONS
  1693| *   FISCAL_YEAR          = 1
  1694| *   PERIOD               = 2
  1695| *   PERIOD_VERSION       = 3
  1696| *   POSTING_PERIOD       = 4
  1697| *   SPECIAL_PERIOD       = 5
  1698| *   VERSION              = 6
  1699| *   POSTING_DATE         = 7
  1700| *   OTHERS               = 8
  1701|   .
  1702|   IF SY-SUBRC <> 0.
  1703| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  1704| *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  1705|   ENDIF.
  • EN: Determine the fiscal year from posting date and company code via FI_PERIOD_DETERMINE; the year is used as TOYEAR for tax invoice number assignment.
  • 호출(파서): FI_PERIOD_DETERMINE
  • SAP 객체: FI_PERIOD_DETERMINE
  • 업무 키워드: 회계연도, 전기일, 기간 결정, 채번 연도
  • English: Fiscal Year, Posting Date, Period Determination
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, YEAR
  • 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L1680-L1705 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#GET_TAXINVOICE_YEAR#C1

FORM COLLECTIVE_INVOICES — ZFIR0140 L1757-L1812 (56줄)

합산 세금계산서 방식으로 고객(KUNNR)·사업장(BUPLA) 단위(CPD 고객은 전표 단위)로 세금계산서 번호를 채번해 선택 항목(SEL_AUSGLOP_ITAB-AUGBL)에 부여한다.

이 unit 의 조각 3개가 43/56줄(77%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[aggregation] 선택된 발행 항목에서 일반 고객은 고객번호·사업장(KUNNR, BUPLA) 기준으로 중복 제거하여 합산 단위(CUST_TAB)를 만들고, 일회성(CPD, XCPDK='X') 고객은 전표별로 개별 단위로 추가한다.

  1763|   LOOP AT SEL_AUSGLOP_ITAB WHERE XCPDK = ' '.
  1764|     MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO CUST_TAB.
  1765|     APPEND CUST_TAB.
  1766|   ENDLOOP.
  1767| 
  1768|   SORT CUST_TAB BY KUNNR BUPLA.
  1769|   DELETE ADJACENT DUPLICATES FROM  CUST_TAB COMPARING KUNNR BUPLA.
  1770| 
  1771|   LOOP AT SEL_AUSGLOP_ITAB WHERE XCPDK = 'X'.
  1772|     MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO CUST_TAB.
  1773|     APPEND CUST_TAB.
  1774|   ENDLOOP.
  • EN: Build the collective invoice grouping table CUST_TAB: one entry per customer/business place (KUNNR, BUPLA) for regular customers and one per document for one-time (CPD) customers.
  • 업무 키워드: 합산 세금계산서, 고객별 그룹핑, 사업장, 일회성 고객, 중복 제거
  • English: Collective Tax Invoice, One-time Customer, Business Place, Customer Grouping
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, CUST_TAB, CODE, BUPLA
  • 위치: abap://ZFIR0140/ZFIR0140#L1763-L1774 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#COLLECTIVE_INVOICES#C1

[fm_call] 합산 단위(CUST_TAB)마다 시뮬레이션이면 순번을, 실제 발행이면 GET_TAX_INVOICE_NUMBER(NUMBER_GET_NEXT, RF_BELEG)로 세금계산서 번호를 채번해 AUGBL 에 저장한다.

  1777|   IF   SIM = 'X'.
  1778|     NUMBER = 0.
  1779|   ENDIF.
  1780| *End of simulate
  1781| 
  1782|   LOOP AT CUST_TAB.
  1783| *Simulate
  1784|     IF SIM = 'X'.
  1785|       NUMBER = NUMBER + 1.
  1786|     ELSE.
  1787|       PERFORM GET_TAX_INVOICE_NUMBER.
  1788|     ENDIF.
  1789| *End of simulate
  1790| 
  1791|     CUST_TAB-AUGBL = NUMBER.
  1792|     MODIFY CUST_TAB TRANSPORTING AUGBL.
  1793|   ENDLOOP.
  • EN: For each grouping entry assign a tax invoice number: a running counter in simulation mode, otherwise a real number from GET_TAX_INVOICE_NUMBER (NUMBER_GET_NEXT on RF_BELEG).
  • 호출(파서): GET_TAX_INVOICE_NUMBER
  • SAP 객체: NUMBER_GET_NEXT, RF_BELEG
  • 업무 키워드: 세금계산서 번호, 채번, 번호범위, 시뮬레이션
  • English: Tax Invoice Number, Number Range, Simulation, NUMBER_GET_NEXT
  • 정의부(복사 시 함께 필요): SIM, NUMBER, SEL_AUSGLOP_ITAB, CUST_TAB
  • 위치: abap://ZFIR0140/ZFIR0140#L1777-L1793 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#COLLECTIVE_INVOICES#C2

[other] 채번된 세금계산서 번호(AUGBL)를 CPD 고객은 해당 전표 한 건에, 일반 고객은 같은 고객·사업장의 모든 선택 항목(SEL_AUSGLOP_ITAB)에 되돌려 반영한다.

  1795|   LOOP AT CUST_TAB.
  1796|     IF  CUST_TAB-XCPDK = 'X'.
  1797|    READ TABLE  SEL_AUSGLOP_ITAB WITH KEY KUNNR = CUST_TAB-KUNNR BELNR =
  1798|                                                          CUST_TAB-BELNR.
  1799|       SEL_AUSGLOP_ITAB-AUGBL = CUST_TAB-AUGBL.
  1800|       MODIFY SEL_AUSGLOP_ITAB  INDEX SY-TABIX TRANSPORTING AUGBL.
  1801|     ELSE.
  1802| 
  1803|       SEL_AUSGLOP_ITAB-AUGBL = CUST_TAB-AUGBL.
  1804| 
  1805|       MODIFY SEL_AUSGLOP_ITAB TRANSPORTING AUGBL WHERE
  1806|       KUNNR = CUST_TAB-KUNNR AND BUPLA = CUST_TAB-BUPLA.
  1807|     ENDIF.
  1808|   ENDLOOP.
  • EN: Write the assigned tax invoice number back to SEL_AUSGLOP_ITAB: to the single document for CPD customers, or to all items of the same customer and business place otherwise.
  • 테이블(파서): read - / write SEL_AUSGLOP_ITAB
  • 업무 키워드: 세금계산서 번호 반영, 합산 단위, 일회성 고객
  • English: Tax Invoice Number, Collective Invoice, One-time Customer
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, CUST_TAB, CODE, BUPLA
  • 위치: abap://ZFIR0140/ZFIR0140#L1795-L1808 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#COLLECTIVE_INVOICES#C3

FORM GET_TAX_INVOICE_NUMBER — ZFIR0140 L1717-L1748 (32줄)

전표유형 번호범위(T003-NUMKR)와 회사코드·회계연도로 NUMBER_GET_NEXT(RF_BELEG)를 호출해 세금계산서 번호(NUMBER)를 채번한다.

이 unit 의 조각 1개가 25/32줄(78%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[fm_call] FI 전표 번호범위 객체 RF_BELEG 에서 전표유형의 번호범위(T003-NUMKR)·회사코드·연도로 다음 번호를 받아 세금계산서 번호로 사용한다(예외 처리는 주석 처리됨).

  1721|   CALL FUNCTION 'NUMBER_GET_NEXT'
  1722|     EXPORTING
  1723|       NR_RANGE_NR                  =  T003-NUMKR
  1724|       OBJECT                       =  'RF_BELEG'
  1725| *    QUANTITY                      = '1'
  1726|      SUBOBJECT                     = DD_BUKRS-LOW
  1727|      TOYEAR                        = YEAR
  1728| *    IGNORE_BUFFER                 = ' '
  1729|    IMPORTING
  1730|      NUMBER                        =  NUMBER.
  1731| *    QUANTITY                      =
  1732| *    RETURNCODE                    =
  1733| *  EXCEPTIONS
  1734| *    INTERVAL_NOT_FOUND            = 1
  1735| *    NUMBER_RANGE_NOT_INTERN       = 2
  1736| *    OBJECT_NOT_FOUND              = 3
  1737| *    QUANTITY_IS_0                 = 4
  1738| *    QUANTITY_IS_NOT_1             = 5
  1739| *    INTERVAL_OVERFLOW             = 6
  1740| *    OTHERS                        = 7
  1741|   .
  1742|   IF SY-SUBRC <> 0.
  1743| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  1744| *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  1745|   ENDIF.
  • EN: Call NUMBER_GET_NEXT on number range object RF_BELEG (range T003-NUMKR, subobject company code, fiscal year) to obtain the next tax invoice number; exception handling is commented out.
  • 호출(파서): NUMBER_GET_NEXT
  • SAP 객체: NUMBER_GET_NEXT, RF_BELEG, T003
  • 업무 키워드: 세금계산서 번호, 채번, 번호범위, 회계연도
  • English: Number Range, NUMBER_GET_NEXT, RF_BELEG, Fiscal Year
  • 정의부(복사 시 함께 필요): T003, YEAR, NUMBER
  • 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L1721-L1745 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#GET_TAX_INVOICE_NUMBER#C1

FORM INDIVIDUAL_INVOICES — ZFIR0140 L1821-L1867 (47줄)

개별 세금계산서 방식으로 선택된 전표마다 NUMBER_GET_NEXT(RF_BELEG)로 세금계산서 번호를 채번해 SEL_AUSGLOP_ITAB-AUGBL 에 부여한다(시뮬레이션이면 순번).

이 unit 의 조각 1개가 41/47줄(87%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[fm_call] 선택된 발행 항목마다 시뮬레이션이면 순번을, 실제 발행이면 NUMBER_GET_NEXT(객체 RF_BELEG, 번호범위 T003-NUMKR, 회사코드·연도)로 전표번호범위에서 세금계산서 번호를 채번해 AUGBL 에 저장한다.

  1824|   IF SIM = 'X'.
  1825|     NUMBER = 0.
  1826|   ENDIF.
  1827| 
  1828|   LOOP AT SEL_AUSGLOP_ITAB.
  1829| 
  1830| *Simulate
  1831|     IF SIM = 'X'.
  1832|       NUMBER = NUMBER + 1.
  1833|     ELSE.
  1834| 
  1835|       CALL FUNCTION 'NUMBER_GET_NEXT'
  1836|         EXPORTING
  1837|           NR_RANGE_NR                  =  T003-NUMKR
  1838|           OBJECT                       =  'RF_BELEG'
  1839| *    QUANTITY                      = '1'
  1840|          SUBOBJECT                     = DD_BUKRS-LOW
  1841|          TOYEAR                        = YEAR
  1842| *    IGNORE_BUFFER                 = ' '
  1843|        IMPORTING
  1844|          NUMBER                        =  NUMBER.
  1845| *    QUANTITY                      =
  1846| *    RETURNCODE                    =
  1847| *  EXCEPTIONS
  1848| *    INTERVAL_NOT_FOUND            = 1
  1849| *    NUMBER_RANGE_NOT_INTERN       = 2
  1850| *    OBJECT_NOT_FOUND              = 3
  1851| *    QUANTITY_IS_0                 = 4
  1852| *    QUANTITY_IS_NOT_1             = 5
  1853| *    INTERVAL_OVERFLOW             = 6
  1854| *    OTHERS                        = 7
  1855|       .
  1856|       IF SY-SUBRC <> 0.
  1857| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  1858| *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  1859|       ENDIF.
  1860|     ENDIF.
  1861|     SEL_AUSGLOP_ITAB-AUGBL = NUMBER.
  1862|     MODIFY SEL_AUSGLOP_ITAB TRANSPORTING AUGBL.
  1863| 
  1864|   ENDLOOP.
  • EN: For each selected item assign an individual tax invoice number: a counter in simulation mode, otherwise NUMBER_GET_NEXT on object RF_BELEG with number range T003-NUMKR, company code and fiscal year, stored in AUGBL.
  • 테이블(파서): read - / write SEL_AUSGLOP_ITAB
  • 호출(파서): NUMBER_GET_NEXT
  • SAP 객체: NUMBER_GET_NEXT, RF_BELEG, T003
  • 업무 키워드: 개별 세금계산서, 채번, 번호범위, 전표유형 번호범위, 시뮬레이션
  • English: Individual Tax Invoice, Number Range, NUMBER_GET_NEXT, Document Type
  • 정의부(복사 시 함께 필요): SIM, NUMBER, SEL_AUSGLOP_ITAB, T003, YEAR
  • 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L1824-L1864 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#INDIVIDUAL_INVOICES#C1

FORM POSSIBLE_ENTRY — ZFIR0140 L2154-L2200 (47줄)

매출 세금계산서용 세금코드(A1~A8)와 한글 설명을 하드코딩으로 구성해 세금코드 F4 도움말(VALUE_HELP)을 표시한다.

이 unit 의 조각 1개가 37/47줄(79%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[output] T007S 조회 대신 매출 세금코드 A1(일반)·A2(주민번호)·A4(특판)·A6~A8(영세율)과 설명을 IT_T007S 에 하드코딩하고 값 도움말 필드·값 테이블을 만들어 VALUE_HELP 팝업을 띄운다.

  2162|   MOVE 'A1' TO IT_T007S-MWSKZ.
  2163|   MOVE '세금계산서(일반)' TO IT_T007S-TEXT1.
  2164|   APPEND IT_T007S.
  2165|   MOVE 'A2' TO IT_T007S-MWSKZ.
  2166|   MOVE '세금계산서(주민번호발행)' TO IT_T007S-TEXT1.
  2167|   APPEND IT_T007S.
  2168|   MOVE 'A4' TO IT_T007S-MWSKZ.
  2169|   MOVE '세금계산서(특판)' TO IT_T007S-TEXT1.
  2170|   APPEND IT_T007S.
  2171|   MOVE 'A6' TO IT_T007S-MWSKZ.
  2172|   MOVE '세금계산서(영세율)' TO IT_T007S-TEXT1.
  2173|   APPEND IT_T007S.
  2174|   MOVE 'A7' TO IT_T007S-MWSKZ.
  2175|   MOVE '세금계산서(영세율-수출면장)' TO IT_T007S-TEXT1.
  2176|   APPEND IT_T007S.
  2177|   MOVE 'A8' TO IT_T007S-MWSKZ.
  2178|   MOVE '세금계산서(영세율-국내수출)' TO IT_T007S-TEXT1.
  2179|   APPEND IT_T007S.
  2180| 
  2181| 
  2182|   T_HELPFIELD-TABNAME    = 'T007S'.
  2183|   T_HELPFIELD-FIELDNAME  = 'MWSKZ'.
  2184|   T_HELPFIELD-SELECTFLAG = 'X'.
  2185|   APPEND T_HELPFIELD.
  2186|   T_HELPFIELD-TABNAME    = 'T007S'.
  2187|   T_HELPFIELD-FIELDNAME  = 'TEXT1'.
  2188|   T_HELPFIELD-SELECTFLAG = ' '.
  2189|   APPEND T_HELPFIELD.
  2190| 
  2191|   LOOP AT IT_T007S.
  2192|     T_HELPVALUE-VALUE = IT_T007S-MWSKZ.
  2193|     APPEND T_HELPVALUE.
  2194|     T_HELPVALUE-VALUE = IT_T007S-TEXT1.
  2195|     APPEND T_HELPVALUE.
  2196|   ENDLOOP.
  2197| 
  2198|   PERFORM VALUE_HELP USING '세금코드 조회'.
  • EN: Hard-code the sales tax codes A1..A8 with Korean descriptions instead of reading T007S, build the help field/value tables and call VALUE_HELP to show the tax code F4 popup.
  • 호출(파서): VALUE_HELP
  • SAP 객체: T007S, HELP_VALUES_GET_WITH_TABLE_EXT
  • 업무 키워드: 세금코드, 값 도움말, 영세율, 세금계산서 유형
  • English: Tax Code, F4 Help, Zero-rated Tax, T007S
  • 정의부(복사 시 함께 필요): IT_T007S, T_HELPFIELD, T_HELPVALUE
  • 위치: abap://ZFIR0140/ZFIR0140#L2162-L2198 · confidence 0.8 · ZFIR0140#ZFIR0140#FORM#POSSIBLE_ENTRY#C1

FORM CHECK_MWSKZ — ZFIR0140 L2269-L2290 (22줄)

세금코드 선택조건(SMWSKZ)이 비어 있으면 매출 세금계산서 대상 세금코드(A1,A2,A4,A6,A7,A8)를 기본값으로 채운다.

이 unit 의 조각 1개가 18/22줄(82%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[validation] 사용자가 세금코드(MWSKZ)를 입력하지 않으면 매출 세금계산서 대상 세금코드 A1·A2·A4·A6·A7·A8 을 SMWSKZ 선택옵션에 기본 적용한다.

  2271|   IF SMWSKZ-LOW EQ SPACE AND SMWSKZ-HIGH EQ SPACE.
  2272|     SMWSKZ-SIGN   = 'I'.
  2273|     SMWSKZ-OPTION = 'EQ'.
  2274| 
  2275|     SMWSKZ-LOW    = 'A1'.
  2276|     APPEND SMWSKZ.
  2277|     SMWSKZ-LOW    = 'A2'.
  2278|     APPEND SMWSKZ.
  2279|     SMWSKZ-LOW    = 'A4'.
  2280|     APPEND SMWSKZ.
  2281|     SMWSKZ-LOW    = 'A6'.
  2282|     APPEND SMWSKZ.
  2283|     SMWSKZ-LOW    = 'A7'.
  2284|     APPEND SMWSKZ.
  2285|     SMWSKZ-LOW    = 'A8'.
  2286|     APPEND SMWSKZ.
  2287| 
  2288|   ENDIF.
  • EN: Default the tax code select-option SMWSKZ to the output tax codes A1, A2, A4, A6, A7, A8 used for sales tax invoices when the user entered none.
  • 업무 키워드: 세금코드, 기본값, 매출부가세, 영세율, 선택옵션
  • English: Tax Code, Select-Option, Output Tax, Default Value
  • 정의부(복사 시 함께 필요): SMWSKZ
  • 위치: abap://ZFIR0140/ZFIR0140#L2271-L2288 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#CHECK_MWSKZ#C1

FORM GET_SALES_TAX_SGTXT — ZFIR0140 L2454-L2474 (21줄)

발행 대상 각 전표의 매출부가세 라인(BSEG MWART='A')의 품목텍스트(SGTXT)를 읽어 AUSGLOP_ITAB 에 보강한다.

이 unit 의 조각 1개가 17/21줄(81%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[sql_select] 발행 대상 전표별로 BSEG 에서 매출부가세 라인(MWART='A')을 SELECT SINGLE 하여 그 품목텍스트(SGTXT)를 세금계산서 적요로 AUSGLOP_ITAB 에 반영한다.

  2456|   LOOP AT AUSGLOP_ITAB.
  2457| 
  2458| *    SELECT SINGLE * FROM bseg WHERE belnr = ausglop_itab-belnr
  2459| *                                AND mwart = 'A'.
  2460| *   아래와 같이 고침 2003.10.14
  2461| 
  2462|     SELECT SINGLE * FROM BSEG WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2463|                                 AND BELNR = AUSGLOP_ITAB-BELNR
  2464|                                 AND GJAHR = AUSGLOP_ITAB-GJAHR
  2465|                                 AND MWART = 'A'.
  2466| 
  2467| 
  2468|     IF SY-SUBRC EQ 0.
  2469|       MOVE BSEG-SGTXT TO AUSGLOP_ITAB-SGTXT.
  2470|       MODIFY AUSGLOP_ITAB.
  2471|     ENDIF.
  2472|   ENDLOOP.
  • EN: For each candidate document, read the output tax line (MWART='A') from BSEG and copy its item text SGTXT into AUSGLOP_ITAB as the tax invoice description.
  • 테이블(파서): read BSEG / write AUSGLOP_ITAB
  • SAP 객체: BSEG
  • 업무 키워드: 매출부가세, 품목텍스트, 적요, 세금라인
  • English: Output Tax, Item Text, BSEG, Tax Line
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, BSEG, CODE, BUKRS
  • 위치: abap://ZFIR0140/ZFIR0140#L2456-L2472 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#GET_SALES_TAX_SGTXT#C1

FORM PARK_DOCUMENT_SELECTION — ZFIR0140 L2483-L2567 (85줄)

임시저장(Parked) 매출전표(VBKPF/VBSEGD/VBSEGS)를 읽어 고객·세금코드·공급가액·세액을 계산하고 세금계산서 발행 대상(AUSGLOP_ITAB)으로 적재한다.

이 unit 의 조각 3개가 72/85줄(85%)을 덮는다. 나머지는 선언·화면설정 등 업무 의미가 없다고 판단해 버린 구간이다.

[sql_select] 선택화면 조건(회사코드·전표번호·전기일·전표유형 DR)에 맞는 임시저장(BSTAT='V') 매출전표 헤더를 VBKPF 에서 조회한다.

  2492|   SELECT *  INTO CORRESPONDING FIELDS OF TABLE P_AUSGLOP_ITAB
  2493|             FROM VBKPF
  2494|             WHERE BUKRS = DD_BUKRS-LOW
  2495|               AND AUSBK = DD_BUKRS-LOW
  2496|               AND BELNR IN SBELNR
  2497|               AND BLDAT IN SBDAT
  2498|               AND BUDAT IN SBUDAT
  2499|               AND BUDAT IN SFKDAT
  2500|               AND BLART IN PBLART
  2501|               AND BLART EQ 'DR'
  2502|               AND BSTAT EQ 'V'.
  • EN: Select parked (BSTAT='V') customer invoice document headers of type DR from VBKPF by company code, document number and posting date ranges.
  • 테이블(파서): read VBKPF / write -
  • SAP 객체: VBKPF
  • 업무 키워드: 임시전표, 매출전표, 전표헤더, 회사코드, 전표유형
  • English: Parked Document, Document Header, Company Code, Document Type
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, P_AUSGLOP_ITAB, VBKPF, CODE, BUKRS, SBELNR, SBDAT, SBUDAT, SFKDAT, BLART, PBLART
  • 선언을 못 찾은 이름: DD_BUKRS (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L2492-L2502 · confidence 0.9 · ZFIR0140#ZFIR0140#FORM#PARK_DOCUMENT_SELECTION#C1

[calculation] 각 임시전표에 대해 VBSEGD 고객라인을 읽어 고객·세금코드·금액을 채우고, 자동세금계산(XMWST) 여부에 따라 Z_SB_TAX_CAL 세율로 역산하거나 입력세액(MWSTS) 또는 VBSEGS 세금라인(MWART='A')에서 공급가액(HWBAS)·세액(HWSTE)을 결정하며 고객라인이 없으면 대상에서 제외한다.

  2504|   LOOP AT P_AUSGLOP_ITAB.
  2505|     CLEAR : VBSEGD, VBSEGS, T_VBSEGS, T_VBSEGS[], GV_KBETR.
  2506|     SELECT SINGLE *
  2507|       FROM VBSEGD
  2508|      WHERE AUSBK EQ P_AUSGLOP_ITAB-BUKRS
  2509|        AND BELNR EQ P_AUSGLOP_ITAB-BELNR
  2510|        AND GJAHR EQ P_AUSGLOP_ITAB-GJAHR
  2511|        AND KUNNR IN DD_KUNNR
  2512|        AND MWSKZ IN SMWSKZ.
  2513| 
  2514|     IF SY-SUBRC EQ 0.
  2515|       MOVE : VBSEGD-KUNNR TO P_AUSGLOP_ITAB-KUNNR,
  2516|              VBSEGD-BUPLA TO P_AUSGLOP_ITAB-BUPLA,
  2517|              VBSEGD-MWSKZ TO P_AUSGLOP_ITAB-MWSKZ,
  2518|              VBSEGD-ZTERM TO P_AUSGLOP_ITAB-ZTERM,
  2519|              VBSEGD-DMBTR TO P_AUSGLOP_ITAB-DMBTR.      " 총금액
  2520| 
  2521| * 1. 자동계산을 체크하는 방법
  2522|       IF P_AUSGLOP_ITAB-XMWST EQ 'X'.
  2523|         CALL FUNCTION 'Z_SB_TAX_CAL'
  2524|              EXPORTING
  2525|                   MWSKZ = VBSEGD-MWSKZ
  2526|              IMPORTING
  2527|                   KBETR = GV_KBETR.
  2528|         IF NOT GV_KBETR IS INITIAL.
  2529|           P_AUSGLOP_ITAB-HWBAS = VBSEGD-DMBTR / GV_KBETR.
  2530|           P_AUSGLOP_ITAB-HWSTE = VBSEGD-DMBTR - P_AUSGLOP_ITAB-HWBAS.
  2531| 
  2532|         ENDIF.
  2533|       ELSE.
  2534| * 2. 자동계산 체크 안하고 세액을 직접 입력하는 방법
  2535|         IF VBSEGD-MWSKZ NE ''.
  2536|           P_AUSGLOP_ITAB-HWBAS = VBSEGD-DMBTR - VBSEGD-MWSTS.
  2537|           P_AUSGLOP_ITAB-HWSTE = VBSEGD-MWSTS.
  2538| * 3. 자동계산 체크 않하고 전표항목에 세금계정을 추가해서 생성하는 방법
  2539|         ELSE.
  2540|           SELECT SINGLE *
  2541|             FROM VBSEGS
  2542|            WHERE AUSBK = P_AUSGLOP_ITAB-BUKRS
  2543|              AND BELNR = P_AUSGLOP_ITAB-BELNR
  2544|              AND GJAHR = P_AUSGLOP_ITAB-GJAHR
  2545|              AND MWART EQ 'A'        " 매출 부가가치세
  2546|              AND MWSKZ IN SMWSKZ.
  2547|           P_AUSGLOP_ITAB-HWBAS = VBSEGS-HWBAS.
  2548|           P_AUSGLOP_ITAB-HWSTE = VBSEGS-DMBTR.
  2549|           P_AUSGLOP_ITAB-MWSKZ = VBSEGS-MWSKZ.
  2550|         ENDIF.
  2551|       ENDIF.
  2552|       MODIFY P_AUSGLOP_ITAB.
  2553|       CLEAR P_AUSGLOP_ITAB.
  2554|     ELSE.
  2555|       DELETE P_AUSGLOP_ITAB.
  2556|       CLEAR P_AUSGLOP_ITAB.
  2557|     ENDIF.
  2558|   ENDLOOP.
  • EN: For each parked document read the customer line from VBSEGD and derive tax base (HWBAS) and tax amount (HWSTE) either via Z_SB_TAX_CAL rate back-calculation, the entered tax amount, or the output tax G/L line in VBSEGS (MWART='A'); drop documents without a matching customer line.
  • 테이블(파서): read VBSEGD, VBSEGS / write -
  • 호출(파서): Z_SB_TAX_CAL
  • SAP 객체: VBSEGD, VBSEGS, Z_SB_TAX_CAL
  • 업무 키워드: 공급가액, 세액, 자동세금계산, 세금코드, 매출부가세, 고객라인
  • English: Tax Base Amount, Tax Amount, Tax Code, Output Tax, Customer Line Item
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, P_AUSGLOP_ITAB, VBSEGD, VBSEGS, T_VBSEGS, GV_KBETR, SMWSKZ
  • 선언을 못 찾은 이름: DD_KUNNR (수집 안 된 인클루드·함수 인터페이스일 수 있다)
  • 위치: abap://ZFIR0140/ZFIR0140#L2504-L2558 · confidence 0.85 · ZFIR0140#ZFIR0140#FORM#PARK_DOCUMENT_SELECTION#C2

[other] 계산이 끝난 임시전표 목록을 세금계산서 발행 대상 내부테이블 AUSGLOP_ITAB 으로 옮긴다.

  2560|   CLEAR : AUSGLOP_ITAB.
  2561|   LOOP AT P_AUSGLOP_ITAB.
  2562|     MOVE-CORRESPONDING P_AUSGLOP_ITAB TO AUSGLOP_ITAB.
  2563|     APPEND AUSGLOP_ITAB.
  2564|     CLEAR AUSGLOP_ITAB.
  2565|   ENDLOOP.
  • EN: Copy the processed parked documents into the tax invoice candidate table AUSGLOP_ITAB.
  • 업무 키워드: 발행대상, 내부테이블 복사
  • English: Tax Invoice, Internal Table
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, P_AUSGLOP_ITAB
  • 위치: abap://ZFIR0140/ZFIR0140#L2560-L2565 · confidence 0.8 · ZFIR0140#ZFIR0140#FORM#PARK_DOCUMENT_SELECTION#C3

정의부 (131건)

로직 조각을 다른 프로그램으로 옮겨 붙일 때 함께 가야 하는 선언이다. 조각별로 무엇이 필요한지는 위 조각 항목의 정의부 줄에 있고(이름을 누르면 여기로 온다), 붙여넣기용으로 의존까지 묶은 코드는 GET /chunks/<chunk_id>declaration_code 로 받는다.

ZFIR0140 (42건)

SBAREA — select-option · L45-L45

SELECT-OPTIONS: SBAREA FOR BSID-GSBER  NO-DISPLAY.

SBUPLA — select-option · L46-L46

SELECT-OPTIONS: SBUPLA FOR BSID-BUPLA.

SMWSKZ — select-option · L47-L47

SELECT-OPTIONS: SMWSKZ FOR BSET-MWSKZ.

SBUDAT — select-option · L48-L48

SELECT-OPTIONS: SBUDAT FOR BSID-BUDAT.

PBLART — select-option · L49-L49

SELECT-OPTIONS: PBLART FOR BKPF-BLART.    " Document type

SBELNR — select-option · L57-L57

SELECT-OPTIONS:             SBELNR FOR BSID-BELNR.    "acc. doc. number

SBDAT — select-option · L58-L58

SELECT-OPTIONS:             SBDAT FOR BSID-BLDAT.     "acc. doc date

SVBELN — select-option · L64-L64

SELECT-OPTIONS:             SVBELN FOR VBRK-VBELN NO-DISPLAY.    "billing document

SFKART — select-option · L65-L65

SELECT-OPTIONS:             SFKART FOR VBRK-FKART NO-DISPLAY.    "bill. doc. type

SFKDAT — select-option · L66-L66

SELECT-OPTIONS:             SFKDAT FOR VBRK-FKDAT NO-DISPLAY.    "billing date

SBLDAT — parameter · L72-L72

PARAMETERS: SBLDAT LIKE BSID-BLDAT.  " DEFAULT sy-datum OBLIGATORY.

SBLART — parameter · L74-L74

PARAMETERS: SBLART LIKE BKPF-BLART OBLIGATORY.    " DEFAULT 'T1'.

SN1OP — parameter · L81-L81

PARAMETER  SN1OP RADIOBUTTON GROUP OPIT DEFAULT 'X'. "aggregate invoices

S11OP — parameter · L82-L82

PARAMETER  S11OP RADIOBUTTON GROUP OPIT.       "indiv.invoices

STA1 — parameter · L88-L88

PARAMETER  STA1 RADIOBUTTON GROUP TATI DEFAULT 'X'. " normal tax inv.

STA2 — parameter · L89-L89

PARAMETER  STA2 RADIOBUTTON GROUP TATI.        "tax exempted tax inv

SAP — parameter · L94-L94

PARAMETER SAP RADIOBUTTON GROUP OUT. " SAP Script output

FULLLIST — parameter · L95-L95

PARAMETER FULLLIST RADIOBUTTON GROUP OUT DEFAULT 'X'. "List Output

LIST — parameter · L96-L96

PARAMETER LIST RADIOBUTTON GROUP OUT. " List Output

RECEIPT — parameter · L99-L99

PARAMETER RECEIPT RADIOBUTTON GROUP IND. " Receipt indicator

BILLING — parameter · L103-L103

PARAMETER BILLING RADIOBUTTON GROUP IND DEFAULT 'X'." Billing indicator

P_MAXROW — parameter · L112-L112

PARAMETERS: P_MAXROW TYPE I DEFAULT 50.

P_VARI — parameter · L115-L115

PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.

P_ZEBRA — parameter · L119-L119

PARAMETERS:
            P_ZEBRA AS CHECKBOX DEFAULT 'X'.

P_COLOPT — parameter · L120-L120

PARAMETERS:
            P_COLOPT AS CHECKBOX DEFAULT 'X'.

CHCKBOXH — parameter · L122-L122

PARAMETERS:
            CHCKBOXH RADIOBUTTON GROUP BOX.

CHCKBOXI — parameter · L123-L123

PARAMETERS:
            CHCKBOXI RADIOBUTTON GROUP BOX DEFAULT 'X'.

P_DETPOP — parameter · L124-L124

PARAMETERS:
            P_DETPOP AS CHECKBOX DEFAULT 'X'.

G_BOXNAM — data · L129-L129

DATA:       G_BOXNAM TYPE SLIS_FIELDNAME VALUE  'BOX'.

P_F2CODE — data · L130-L130

DATA:
            P_F2CODE LIKE SY-UCOMM       VALUE  '&ETA'.

P_LIGNAM — data · L131-L131

DATA:
            P_LIGNAM TYPE SLIS_FIELDNAME VALUE  'LIGHTS'.

G_SAVE — data · L132-L132

DATA:
            G_SAVE(1) TYPE C.

G_TABNAME_HEADER — data · L133-L133

DATA:
            G_TABNAME_HEADER TYPE SLIS_TABNAME.

G_TABNAME_ITEM — data · L134-L134

DATA:
            G_TABNAME_ITEM   TYPE SLIS_TABNAME.

G_DEFAULT — data · L135-L135

DATA:
            G_DEFAULT(1) TYPE C.

G_EXIT — data · L136-L136

DATA:
            G_EXIT(1) TYPE C.

GX_VARIANT — data · L137-L137

DATA:
            GX_VARIANT LIKE DISVARIANT.

G_VARIANT — data · L138-L138

DATA:
            G_VARIANT LIKE DISVARIANT.

LS_LINE — data · unit 로컬 · L1013-L1013

  DATA: LS_LINE TYPE SLIS_LISTHEADER.

CLEAR — data · unit 로컬 · L1878-L1878

  DATA : SIGN TYPE C, CLEAR TYPE C.

SIGN — data · unit 로컬 · L1878-L1878

  DATA : SIGN TYPE C, CLEAR TYPE C.

L_STATE_INSC — data · unit 로컬 · L2066-L2066

   DATA: L_STATE_INSC(4).

ZFIR0140TOP (89건)

BSEG — tables · L8-L8

TABLES: BSEG.  " accounting document segment

BSID — tables · L9-L9

TABLES:
        BSID.  " secondary index for customers

BSEC — tables · L10-L10

TABLES:
        BSEC.  " One-time account data document

VBRK — tables · L12-L12

TABLES:
        VBRK.  " billing : header data

BSET — tables · L13-L13

TABLES:
        BSET.  " tax data document segment

T001 — tables · L14-L14

TABLES:
        T001.  " company codes

KNA1 — tables · L15-L15

TABLES:
        KNA1.  " customers

FIMSG — tables · L16-L16

TABLES:
        FIMSG.  " structure

BKPF — tables · L17-L17

TABLES:
        BKPF.  " acc. document header

BSAD — tables · L18-L18

TABLES:
        BSAD.  " sec. index for customers :

SADR — tables · L21-L21

TABLES:
        SADR.  " address administration

T074U — tables · L22-L22

TABLES:
        T074U.  " Special G/L indicator properties

T003 — tables · L23-L23

TABLES:
        T003.  " FI Document no range

VBKPF — tables · L24-L24

TABLES:
        VBKPF.

VBSEGD — tables · L25-L25

TABLES:
        VBSEGD.

VBSEGS — tables · L26-L26

TABLES:
        VBSEGS.

ZDTI_SAPP — tables · L27-L27

TABLES:
        ZDTI_SAPP.

ZDTI_STATUS — tables · L28-L28

TABLES:
        ZDTI_STATUS.

DATE — data · L35-L35

DATA: DATE(12).

BUDATE — data · L36-L36

DATA: BUDATE(12).

BLDATE — data · L37-L37

DATA: BLDATE(12).

ZFBDTE — data · L38-L38

DATA: ZFBDTE(12).

SAVE1_KUNNR — data · L39-L39

DATA: SAVE1_KUNNR LIKE BSID-KUNNR.

SAVE2_STCD — data · L40-L40

DATA: SAVE2_STCD LIKE BSEC-STCD1.

LINE_COUNT_SD — data · L41-L41

DATA: LINE_COUNT_SD TYPE I.            "number of lines

LINE_COUNT_FI — data · L42-L42

DATA: LINE_COUNT_FI TYPE I.            "number of lines

LINE_COUNT2 — data · L43-L43

DATA: LINE_COUNT2 TYPE I.              "number of lines

LINE_COUNT — data · L44-L44

DATA: LINE_COUNT TYPE I.               "number of lines

SD_SELECTION — data · L45-L45

DATA:  SD_SELECTION.                   "check billing doc.

FI_SELECTION — data · L47-L47

DATA:  FI_SELECTION.                   "check accounting doc.

SEL_INDEX — data · L50-L50

DATA:  SEL_INDEX TYPE I.

SAVE_BELNR — data · L51-L51

DATA:  SAVE_BELNR LIKE BSID-BELNR.

SAVE_AWTYP — data · L52-L52

DATA:  SAVE_AWTYP LIKE BKPF-AWTYP.

SAVE_KUNNR — data · L53-L53

DATA:  SAVE_KUNNR LIKE BSID-KUNNR.

SAVE_BUPLA — data · L54-L54

DATA:  SAVE_BUPLA LIKE BSID-BUPLA.

SAVE_UMSKZ — data · L55-L55

DATA:  SAVE_UMSKZ LIKE BSEG-UMSKZ.

ERR_DEB — data · L56-L56

DATA:  ERR_DEB LIKE BSID-KUNNR.

SAVE_STCD — data · L57-L57

DATA:  SAVE_STCD LIKE KNA1-STCD1.

CLEARING_DATA — data · L58-L58

DATA : CLEARING_DATA-SBUKRS LIKE BSID-BUKRS.

CLEARING_DATA — data · L59-L59

DATA : CLEARING_DATA-SGJAHR LIKE BSID-GJAHR.

CLEARING_DATA — data · L60-L60

DATA : CLEARING_DATA-LOW LIKE BSAD-AUGBL.

CLEARING_DATA — data · L61-L61

DATA : CLEARING_DATA-HIGH LIKE BSAD-AUGBL.

CZTERM — data · L62-L62

DATA:  CZTERM LIKE VBRK-ZTERM.

CWAERS — data · L63-L63

DATA:  CWAERS LIKE T001-WAERS.

SIM — data · L65-L65

DATA : SIM TYPE C.

AUSGLOP_ITAB — data · L74-L122

DATA : BEGIN OF AUSGLOP_ITAB OCCURS 0,
         BUKRS LIKE BSID-BUKRS,        "company code
         KUNNR LIKE BSID-KUNNR,        "customer number
         STCD2 LIKE BSEC-STCD2,        "CPD tax code2
         STCD1 LIKE BSEC-STCD1,        "CPD tax code1
         NAME1 LIKE BSEC-NAME1,        "CPD-customer name
         ORT01 LIKE BSEC-ORT01,        "CPD-customer city
         GJAHR LIKE BSID-GJAHR,        "business year
         GSBER LIKE BSID-GSBER,        "business area
         BUPLA LIKE BSID-BUPLA,        "business place
         BLART LIKE BKPF-BLART,        "acc. document type
         BELNR LIKE BSID-BELNR,        "acc. document number
         AUGBL LIKE BSAD-AUGBL,        "clearing document number
         KOART LIKE BSEG-KOART,        "account type
         BUZEI LIKE BSEG-BUZEI,        "item line in acc. document
         BUDAT LIKE BSID-BUDAT,        "posting document date
         BLDAT LIKE BSID-BLDAT,        "acc. document date
         SHKZG LIKE BSID-SHKZG,        "debit/credit indicator
         BSCHL LIKE BSID-BSCHL,        "posting key
         AWTYP LIKE BKPF-AWTYP,        "object type for
                                       "calling application
         AWKEY LIKE BKPF-AWKEY,        "object key
         DMBTR LIKE BSID-DMBTR,        "amount in local curr
         WRBTR LIKE BSID-WRBTR,           "amount in document currency
         HWBAS LIKE BSET-HWBAS,        "tax base amount
         HWSTE LIKE BSET-HWSTE,        "tax amount
         FWBAS LIKE BSET-FWBAS,        "tax base amount in doc. curr
         FWSTE LIKE BSET-FWSTE,        "tax amount in doc. curr
         WAERS LIKE T001-WAERS,        "company code currency
         HWAER LIKE T001-WAERS,        "company code currency
         MWSKZ LIKE BSET-MWSKZ,        "tax code
         UMSKZ LIKE BSID-UMSKZ,        "special G/L indicator
         HKONT LIKE BSID-HKONT,        "reconc. acc.
         FISTL LIKE BSID-FISTL,        "special G/L indicator
         ZTERM LIKE BSEG-ZTERM,        "payment terms
         ZFBDT LIKE BSEG-ZFBDT,        "base line date
         VBELN LIKE VBRK-VBELN,        "billing document
         FKDAT LIKE VBRK-FKDAT,        "billing date
         FKART LIKE VBRK-FKART,        "billing type
         FKTYP LIKE VBRK-FKTYP,        "billing category
         MSCHL LIKE BSEG-MSCHL,        "dunning key
         MANSP LIKE BSEG-MANSP,        "dunning block
         MADAT LIKE BSEG-MADAT,        "last dunned on
         MANST LIKE BSEG-MANST,        "dunning level
         MABER LIKE BSEG-MABER,        "dunning area
         XCPDK LIKE KNA1-XCPDK,        "one time customers..
         SGTXT LIKE BSEG-SGTXT,
         XMWST LIKE VBKPF-XMWST,       "임시전표를 위한 추가
         END OF AUSGLOP_ITAB.

SEL_AUSGLOP_ITAB — data · L126-L173

DATA: BEGIN OF SEL_AUSGLOP_ITAB OCCURS 0,
         BUKRS LIKE BSID-BUKRS,        "company code
         KUNNR LIKE BSID-KUNNR,        "customer number
         XCPDK LIKE KNA1-XCPDK,        "one time customer...
         STCD LIKE BSEC-STCD1,         "CPD tax code1
         NAME1 LIKE BSEC-NAME1,        "CPD-customer name
         ORT01 LIKE BSEC-ORT01,        "CPD-customer city
         GJAHR LIKE BSID-GJAHR,        "business year
         GSBER LIKE BSID-GSBER,        "business area
         BUPLA LIKE BSID-BUPLA,        "business place
         BLART LIKE BKPF-BLART,        "acc. document type
         BELNR LIKE BSID-BELNR,        "acc. document number
         AUGBL LIKE BSAD-AUGBL,        "tax invoice number
         AUGDT LIKE BSEG-AUGDT,        "tax invoice date
         BUZEI LIKE BSEG-BUZEI,        "item line in acc. document
         BUDAT LIKE BSID-BUDAT,        "posting documnet date
         BLDAT LIKE BSID-BLDAT,        "acc. document date
         SHKZG LIKE BSID-SHKZG,        "debit/credit indicator
         BSCHL LIKE BSID-BSCHL,        "posting key
         AWTYP LIKE BKPF-AWTYP,        "object type for
                                       "calling application
         AWKEY LIKE BKPF-AWKEY,        "object key
         DMBTR LIKE BSID-DMBTR,        "amount in document curr
         WRBTR LIKE BSID-WRBTR,           "amount in document currency
         HWBAS LIKE BSET-HWBAS,        "tax base amount
         HWSTE LIKE BSET-HWSTE,        "tax amount
         FWBAS LIKE BSET-FWBAS,        "tax base amount in doc. curr
         FWSTE LIKE BSET-FWSTE,        "tax amount in doc.curr
         WAERS LIKE T001-WAERS,        "document currency
         HWAER LIKE T001-WAERS,        "company code currency
         MWSKZ LIKE BSET-MWSKZ,        "tax code
         UMSKZ LIKE BSID-UMSKZ,        "special G/L indicator
         ZTERM LIKE BSEG-ZTERM,        "payment terms
         ZFBDT LIKE BSEG-ZFBDT,        "base line date
         VBELN LIKE VBRK-VBELN,        "billing document
         FKDAT LIKE VBRK-FKDAT,        "billing date
         FKART LIKE VBRK-FKART,        "billing type
         FKTYP LIKE VBRK-FKTYP,        "billing category
         MSCHL LIKE BSEG-MSCHL,        "dunning key
         MANSP LIKE BSEG-MANSP,        "dunning block
         MADAT LIKE BSEG-MADAT,        "last dunned on
         MANST LIKE BSEG-MANST,        "dunning level
         MABER LIKE BSEG-MABER,        "dunning area
         HKONT LIKE BSEG-HKONT,
         FISTL LIKE BSEG-FISTL,
         SGTXT LIKE BSEG-SGTXT,
         RESULT TYPE BAPIRETURN-CODE,    "smartbill 추가 2006.07.24
         END OF SEL_AUSGLOP_ITAB.

P_AUSGLOP_ITAB — data · L176-L176

DATA : P_AUSGLOP_ITAB LIKE TABLE OF AUSGLOP_ITAB  WITH HEADER LINE.

T_VBSEGS — data · L177-L177

DATA:
       T_VBSEGS       LIKE TABLE OF VBSEGS WITH HEADER LINE.

GV_KBETR — data · L180-L180

DATA : GV_KBETR LIKE KONP-KBETR.

RANGE_CANCEL — ranges · L183-L183

RANGES : RANGE_CANCEL FOR ZDTI_STATUS-ZSTAT.

ITABSAPP — data · L184-L198

DATA : BEGIN OF ITABSAPP OCCURS 0,
         BUKRS TYPE ZDTI_SAPP-BUKRS,
         ZETNO TYPE ZDTI_SAPP-ZETNO,
         ZARAP TYPE ZDTI_SAPP-ZARAP,
         BELNR TYPE ZDTI_SAPP-BELNR,
         GJAHR TYPE ZDTI_SAPP-GJAHR,
         REBELNR TYPE ZDTI_SAPP-REBELNR,
         REGJAHR TYPE ZDTI_SAPP-REGJAHR,
         EBELN TYPE ZDTI_SAPP-EBELN,
         EBELP TYPE ZDTI_SAPP-EBELP,
         MBLNR TYPE ZDTI_SAPP-MBLNR,
         MJAHR TYPE ZDTI_SAPP-MJAHR,
         VBELN TYPE ZDTI_SAPP-VBELN,
         ZSTAT TYPE ZDTI_STATUS-ZSTAT,
       END OF ITABSAPP.

CLEARING_ITAB1 — data · L203-L206

DATA : BEGIN OF CLEARING_ITAB1 OCCURS 0,
       BELNR LIKE BSAD-BELNR,
       AUGBL LIKE BSAD-AUGBL,
       END OF CLEARING_ITAB1.

SELTAB — data · L211-L213

DATA: BEGIN OF SELTAB OCCURS 6.        " internal table to transfer
        INCLUDE STRUCTURE RSPARAMS.    " select-options and paramete
DATA: END OF SELTAB.                   " between reports

CUST_TAB — data · L215-L215

DATA : CUST_TAB LIKE SEL_AUSGLOP_ITAB  OCCURS 0 WITH HEADER LINE.

CUSTOMER_TAB — data · L217-L221

DATA: BEGIN OF CUSTOMER_TAB OCCURS 0,
       KUNNR LIKE KNA1-KUNNR,
       STCD1 LIKE KNA1-STCD1,
       STCD2 LIKE KNA1-STCD2,
       END OF CUSTOMER_TAB.

YEAR — data · L224-L224

DATA : YEAR LIKE BKPF-GJAHR.            "FI Period determination

NUMBER — data · L225-L225

DATA : NUMBER LIKE BSEG-AUGBL .        "tax invoice number

CURR — data · L226-L226

DATA : CURR LIKE T001-WAERS .           "currency

PROG_NAME — data · L227-L227

DATA : PROG_NAME LIKE SYST-CPROG.       "program name for export

SLIS — type-pool · L232-L232

TYPE-POOLS: SLIS.

GC_FORMNAME_TOP_OF_PAGE — constants · L243-L243

CONSTANTS:
GC_FORMNAME_TOP_OF_PAGE TYPE SLIS_FORMNAME VALUE 'TOP_OF_PAGE'.

GT_FIELDCAT — data · L246-L246

DATA: GT_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.

GS_LAYOUT — data · L247-L247

DATA:
      GS_LAYOUT   TYPE SLIS_LAYOUT_ALV.

GS_KEYINFO — data · L248-L248

DATA:
      GS_KEYINFO  TYPE SLIS_KEYINFO_ALV.

GT_SP_GROUP — data · L249-L249

DATA:
      GT_SP_GROUP TYPE SLIS_T_SP_GROUP_ALV.

GT_EVENTS — data · L250-L250

DATA:
      GT_EVENTS   TYPE SLIS_T_EVENT.

G_USER_COMMAND — data · L251-L251

DATA:
      G_USER_COMMAND TYPE SLIS_FORMNAME VALUE 'USER_COMMAND'.

WA_COLORF — data · L255-L255

DATA : WA_COLORF TYPE SLIS_SPECIALCOL_ALV.

INT_COLORF — data · L257-L257

DATA: INT_COLORF TYPE SLIS_T_SPECIALCOL_ALV.

GT_AUSGLOP — data · L259-L267

DATA: BEGIN OF GT_AUSGLOP OCCURS 0.    "internal table
        INCLUDE STRUCTURE AUSGLOP_ITAB."for fieldcatalog
DATA: BOX,
      SIM(1),                              "simulation check
      WERT(4) TYPE P,
      LIGHTS,
      COLORF  TYPE SLIS_T_SPECIALCOL_ALV.       "fieldcolor
"items
DATA: END OF GT_AUSGLOP.

GT_KUNDE — data · L269-L274

DATA: BEGIN OF GT_KUNDE OCCURS 0.      "internal table
        INCLUDE STRUCTURE KNA1.        "for fieldcatalog header
DATA: BOX,
      LIGHTS,
      STATE_INSC   LIKE  J_1BBRANCH-STATE_INSC.
DATA: END OF GT_KUNDE.

G_REPID — data · L276-L276

DATA: G_REPID LIKE SY-REPID.

GT_LIST_TOP_OF_PAGE — data · L277-L277

DATA: GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER.

G_STATUS — data · L278-L278

DATA: G_STATUS TYPE SLIS_FORMNAME VALUE 'STANDARD01'.

GS_STATUS — data · L279-L279

DATA: GS_STATUS TYPE SLIS_STATUS.

CODE — types · L281-L286

TYPES : BEGIN OF CODE,
        SIGN LIKE RSDSSELOPT-SIGN,
        OPTION LIKE RSDSSELOPT-OPTION,
        LOW LIKE RSDSSELOPT-LOW,
        HIGH LIKE RSDSSELOPT-HIGH,
        END OF CODE.

TAX_CODE — data · L288-L288

DATA :  TAX_CODE TYPE CODE OCCURS 0 WITH HEADER LINE.

BLART — data · L289-L289

DATA:
        BLART TYPE CODE OCCURS 0 WITH HEADER LINE.

BUPLA — data · L290-L290

DATA:
        BUPLA TYPE CODE OCCURS 0 WITH HEADER LINE.

BUKRS — data · L291-L291

DATA:
        BUKRS TYPE CODE OCCURS 0 WITH HEADER LINE.

STBLG — data · L295-L295

DATA : STBLG LIKE RBKP-STBLG.

IT_FCODE — data · L296-L296

DATA : IT_FCODE LIKE RSMPE-FUNC OCCURS 0 WITH HEADER LINE.

IT_T007S — data · L299-L302

DATA : BEGIN OF IT_T007S OCCURS 0,
       MWSKZ    LIKE T007S-MWSKZ,
       TEXT1    LIKE T007S-TEXT1,
       END   OF IT_T007S.

T_HELPFIELD — data · L304-L306

DATA : BEGIN OF T_HELPFIELD OCCURS 0.
        INCLUDE STRUCTURE HELP_VALUE.
DATA : END   OF T_HELPFIELD.

T_HELPVTAB — data · L308-L310

DATA : BEGIN OF T_HELPVTAB OCCURS 0.
        INCLUDE STRUCTURE HELP_VTAB.
DATA : END   OF T_HELPVTAB.

T_HELPVALUE — data · L312-L314

DATA : BEGIN OF T_HELPVALUE OCCURS 0,
        VALUE      LIKE HELP_VTAB-VALUE,
       END   OF T_HELPVALUE.

T_DYNPREAD — data · L316-L318

DATA : BEGIN OF T_DYNPREAD OCCURS 0.
        INCLUDE STRUCTURE DYNPREAD.
DATA : END   OF T_DYNPREAD.

W_CURSORLOC — data · L320-L320

DATA : W_CURSORLOC LIKE SY-TABIX.

Unit 목록 (컨테이너)

unit 유형 위치 조각 한 줄 요약
AT SELECTION-SCREEN OUTPUT EVENT ZFIR0140 L145-166 0 선택화면 PBO 에서 회사코드·회계연도 범위의 HIGH 필드와 다중선택 버튼을 숨겨 단일 값 입력만 허용하는 화면 속성 플러밍 이벤트이다.
INITIALIZATION EVENT ZFIR0140 L167-218 1 INITIALIZATION 에서 계층 ALV 의 헤더/아이템 테이블명과 키정보(KUNNR/BELNR)를 정의하고 REUSE_ALV_VARIANT_DEFAULT_GET 으로 기본 변형을 P_VARI 에 제안한다.
AT SELECTION-SCREEN ON VALUE-REQUEST EVENT ZFIR0140 L219-232 0 ALV 변형 파라미터 P_VARI 의 F4 요청 시 F4_FOR_VARIANT 를 호출하는 선택화면 이벤트이다(세금코드 F4 는 주석 처리).
AT SELECTION-SCREEN EVENT ZFIR0140 L233-235 0 AT SELECTION-SCREEN 에서 PAI_OF_SELECTION_SCREEN 을 호출해 ALV 변형을 검증하는 이벤트이다.
AT SELECTION-SCREEN ON DD_BUKRS EVENT ZFIR0140 L236-238 0 회사코드 입력 시 CHECK_BUKRS 로 필수 입력을 검증하는 선택화면 이벤트이다.
AT SELECTION-SCREEN ON SBLART EVENT ZFIR0140 L239-316 2 전표유형 입력 시 유효성을 검증하고 세금코드·전표유형·사업장·회사코드 선택값을 KR_USER_EXIT_TAX_CODE 에 넘긴 뒤 SD/FI 선택 조건 입력 여부로 SD_SELECTION/FI_SELECTION 플래그를 결정한다.
START-OF-SELECTION EVENT ZFIR0140 L317-327 1 START-OF-SELECTION 에서 회사코드의 현지통화(T001-WAERS)를 CURR 에 읽어 이후 논리DB 처리에 사용한다.
GET BSID EVENT ZFIR0140 L328-353 1 논리DB GET BSID 이벤트에서 사업영역·세금코드·미반제 조건을 통과한 미결 매출채권 항목의 키 필드를 발행 후보 AUSGLOP_ITAB 에 채운다.
GET BKPF EVENT ZFIR0140 L354-471 2 논리DB GET BKPF 이벤트에서 전표 헤더를 검증(헤더텍스트·역분개·비망·전표유형·FB05 제외)하고 SD 청구(VBRK)·MM 송장(RBKP) 참조 정보를 보강해 발행 후보 항목을 준비한다.
GET BSEG EVENT ZFIR0140 L472-484 1 논리DB GET BSEG 이벤트에서 고객 라인(KOART='D')의 세금코드가 선택범위에 있을 때 지급조건·기산일·금액을 채워 발행 후보 AUSGLOP_ITAB 에 추가한다.
END-OF-SELECTION EVENT ZFIR0140 L485-538 2 END-OF-SELECTION 에서 반제 항목 선별, 전자세금계산서 발행 여부 확인, 세금·고객주소 보강, 한국 반올림 User-Exit 호출 후 계층 ALV 를 출력하는 메인 흐름을 수행한다.
STANDARD01 FORM ZFIR0140 L539-565 0 ALV PF-STATUS STANDARD01 을 설정하는 FORM 으로, 사용자별 인쇄 제어 로직은 주석 처리되어 있다.
E01_FIELDCAT_INIT FORM ZFIR0140 L574-935 0 REUSE_ALV_FIELDCATALOG_MERGE 로 고객 헤더(KNA1)와 아이템(AUSGLOP_ITAB) 필드카탈로그를 생성하고 비키 필드를 숨김 처리하는 ALV 필드카탈로그 초기화 FORM 이다(1/2 창).
E02_DATA_ADD FORM ZFIR0140 L942-980 2 ALV 출력 전 아이템(GT_AUSGLOP)의 체크박스를 초기화하고 선수금(특별G/L) 건의 공급가액·세액을 양수로 바꾸며 고객 헤더(GT_KUNDE)의 신호등 값을 설정한다.
E03_EVENTTAB_BUILD FORM ZFIR0140 L989-1003 0 REUSE_ALV_EVENTS_GET 으로 ALV 이벤트 목록을 받아 TOP_OF_PAGE 콜백 FORM 을 등록하는 ALV 플러밍 FORM 이다.
E04_COMMENT_BUILD FORM ZFIR0140 L1012-1049 1 ALV TOP-OF-PAGE 헤더에 발행 방식(합산/개별), 회사코드, 세금계산서 작성일자를 표시하는 리스트 헤더를 구성한다.
E05_LAYOUT_BUILD FORM ZFIR0140 L1058-1075 0 계층 ALV(REUSE_ALV_HIERSEQ_LIST_DISPLAY)의 레이아웃(체크박스 필드, 헤더/아이템 텍스트, 색상 필드 COLORF)을 설정하는 ALV 플러밍 FORM 이다.
E07_SP_GROUP_BUILD FORM ZFIR0140 L1084-1091 0 ALV 특수 그룹(SP_GROUP 'A') 하나를 등록하는 ALV 플러밍 FORM 이다.
SELECTION FORM ZFIR0140 L1098-1135 2 발행 후보(AUSGLOP_ITAB)에서 차변 부호를 조정하고 선수금 요청(T074U 비망항목)을 제외하며 FI/SD 선택 옵션에 따라 ALV 아이템(GT_AUSGLOP)과 고객 헤더(GT_KUNDE)를 확정한다.
TOP_OF_PAGE FORM ZFIR0140 L1142-1147 0 ALV TOP_OF_PAGE 이벤트에서 REUSE_ALV_COMMENTARY_WRITE 로 상단 코멘트를 출력하는 플러밍 FORM 이다.
USER_COMMAND FORM ZFIR0140 L1158-1557 11 ALV 사용자 명령 처리 FORM 의 시작부(1/3 창)로 로컬 변수 선언과 시뮬레이션 플래그 초기화만 있다.
F4_FOR_VARIANT FORM ZFIR0140 L1564-1586 0 REUSE_ALV_VARIANT_F4 로 ALV 변형 검색도움을 띄우고 선택한 변형을 P_VARI 에 넣는 F4 플러밍 FORM 이다.
PAI_OF_SELECTION_SCREEN FORM ZFIR0140 L1593-1608 0 선택화면 PAI 에서 입력된 ALV 변형(P_VARI)의 존재를 REUSE_ALV_VARIANT_EXISTENCE 로 확인하거나 기본 변형을 초기화하는 ALV 변형 플러밍 FORM 이다.
VARIANT_INIT FORM ZFIR0140 L1618-1622 0 ALV 변형 구조(G_VARIANT)를 초기화하고 리포트 ID 를 설정하는 플러밍 FORM 이다.
STATUS_2000 OUTPUT MODULE ZFIR0140 L1629-1634 0 화면 2000 PBO 에서 GUI 상태 PROTOK1 과 타이틀바를 설정하는 플러밍 MODULE 이다.
PROT OUTPUT MODULE ZFIR0140 L1643-1652 0 화면 PBO 에서 대화를 억제하고 리스트 처리로 전환하는 플러밍 MODULE 이다.
CHECK_BUKRS FORM ZFIR0140 L1661-1667 1 회사코드(DD_BUKRS-LOW)가 비어 있으면 오류 메시지 E501 을 내는 필수 입력 검증 FORM 이다.
GET_TAXINVOICE_YEAR FORM ZFIR0140 L1676-1708 1 선택 항목의 전기일(BUDAT)과 회사코드로 FI_PERIOD_DETERMINE 을 호출해 세금계산서 채번에 쓸 회계연도(YEAR)를 구한다.
GET_TAX_INVOICE_NUMBER FORM ZFIR0140 L1717-1748 1 전표유형 번호범위(T003-NUMKR)와 회사코드·회계연도로 NUMBER_GET_NEXT(RF_BELEG)를 호출해 세금계산서 번호(NUMBER)를 채번한다.
COLLECTIVE_INVOICES FORM ZFIR0140 L1757-1812 3 합산 세금계산서 방식으로 고객(KUNNR)·사업장(BUPLA) 단위(CPD 고객은 전표 단위)로 세금계산서 번호를 채번해 선택 항목(SEL_AUSGLOP_ITAB-AUGBL)에 부여한다.
INDIVIDUAL_INVOICES FORM ZFIR0140 L1821-1867 1 개별 세금계산서 방식으로 선택된 전표마다 NUMBER_GET_NEXT(RF_BELEG)로 세금계산서 번호를 채번해 SEL_AUSGLOP_ITAB-AUGBL 에 부여한다(시뮬레이션이면 순번).
GET_TAX_DATA FORM ZFIR0140 L1876-2054 1 세금계산서 발행 대상 항목에 BSET 세금 데이터를 합산하고 부호를 맞춘 뒤 고객 목록을 만든다.
GET_CUSTOMER_ADDRESS FORM ZFIR0140 L2063-2114 3 고객 마스터(KNA1)에서 사업자번호와 주소를 읽어 고객 헤더(GT_KUNDE)와 발행 항목에 보강하고, 일회성(CPD) 고객은 전표의 BSEC 주소 데이터를 사용하며 종사업장번호(J_1BBRANCH)를 붙인다.
CHECK_DOC_TYPE FORM ZFIR0140 L2123-2130 1 세금계산서 전표유형(SBLART)이 T003 에 존재하고 번호범위(NUMKR)가 지정되어 있는지 검증해 없으면 E098 오류를 낸다.
EXECLUDING_FCODE FORM ZFIR0140 L2138-2145 0 GUI 상태에서 제외할 기능코드(P_POST)를 IT_FCODE 에 담는 단순 유틸리티 FORM 이다.
POSSIBLE_ENTRY FORM ZFIR0140 L2154-2200 1 매출 세금계산서용 세금코드(A1~A8)와 한글 설명을 하드코딩으로 구성해 세금코드 F4 도움말(VALUE_HELP)을 표시한다.
FIELD_REFRESH FORM ZFIR0140 L2209-2220 0 F4 팝업에서 선택한 세금코드를 선택화면 필드에 반영(DYNP_VALUES_UPDATE)하고 도움말 작업 테이블을 초기화하는 플러밍 FORM 이다.
VALUE_HELP FORM ZFIR0140 L2229-2242 0 HELP_VALUES_GET_WITH_TABLE_EXT 로 세금코드 값 도움말 팝업을 띄우고 선택 인덱스를 받는 F4 도우미 FORM 이다.
VALUE_UPDATE FORM ZFIR0140 L2251-2260 0 DYNP_VALUES_UPDATE 로 선택화면 필드 값을 갱신하는 F4 결과 반영 유틸리티 FORM 이다.
CHECK_MWSKZ FORM ZFIR0140 L2269-2290 1 세금코드 선택조건(SMWSKZ)이 비어 있으면 매출 세금계산서 대상 세금코드(A1,A2,A4,A6,A7,A8)를 기본값으로 채운다.
CLEAR_ITEM_SELECTION FORM ZFIR0140 L2299-2389 4 반제된 매출채권(BSAD)을 선택조건으로 읽어 역분개·비망·FB05 반제 전표를 제외하고 SD 청구(VBRK)·MM 송장(RBKP) 취소 여부와 세금코드를 확인해 세금계산서 발행 후보(AUSGLOP_ITAB)를 만든다.
BUILD_UP_ALV_LAYOUT FORM ZFIR0140 L2399-2445 1 필드카탈로그·이벤트·헤더·특수그룹을 구성하고 SELECTION 으로 대상을 확정한 뒤 REUSE_ALV_HIERSEQ_LIST_DISPLAY 로 고객(GT_KUNDE)-전표(GT_AUSGLOP) 계층 ALV 를 출력한다.
GET_SALES_TAX_SGTXT FORM ZFIR0140 L2454-2474 1 발행 대상 각 전표의 매출부가세 라인(BSEG MWART='A')의 품목텍스트(SGTXT)를 읽어 AUSGLOP_ITAB 에 보강한다.
PARK_DOCUMENT_SELECTION FORM ZFIR0140 L2483-2567 3 임시저장(Parked) 매출전표(VBKPF/VBSEGD/VBSEGS)를 읽어 고객·세금코드·공급가액·세액을 계산하고 세금계산서 발행 대상(AUSGLOP_ITAB)으로 적재한다.
DTI_CHECK FORM ZFIR0140 L2576-2628 2 전자세금계산서 상태 테이블(ZDTI_SAPP/ZDTI_STATUS)을 조회해 이미 발행(취소·거부 상태 제외)된 전표를 발행 대상(AUSGLOP_ITAB)에서 제거한다.