Files

389 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 ZFIR0141 ZFIR0140 이 선별한 매출 세금계산서를 실제로 출력(SAPscript)하고 전자세금계산서 중계사(스마트빌)로 전송하는 프로그램이다. 세금계산서 양식에 품목·금액·합계·공란수를 채워 WRITE/SAPscript 로 인쇄하고, 재발행(REPRINT)과 전자 전송(SMARTBILL_TRANS, 316줄)을 함께 처리한다. 27본 중 가장 크고(6,376줄) 출력 서식 로직이 집중된 프로그램이다. abap://ZFIR0141
세금계산서
전자세금계산서
매출
부가세
출력
인터페이스
FI
공급가액
세액
매출부가세
영세율
특소세
반품
부호반전
세금코드
사용자 명령
ALV 변경 검증
화면 종료
PAI
공란수
by at
abap-indexing/z-ai/glm-5.2:free 2026-09-20T15:36:22+00:00
stable
ADR6
ADRC
BKPF
BSEC
BSEG
BSET
J_1BBRANCH
KNA1
T001
T001F
T074T
VBRK
VBRP
ZDTI_CONFIG
ZDTI_LAYOUT
ALL_ITEMS_ITAB
AUSGLOP_ITAB
AUSGLOP_ITAB2
AUSGLOP_MAT_ITAB
BKPF
BSEG
BSET
CHECK_ITAB
LINE
MATZEIL4_ITAB
SEL_AUSGLOP_ITAB
CLOSE_FORM
CONVERT_TO_LOCAL_CURRENCY
END_FORM
FB03
GET_BUPLA_ADDRESS
GET_PRINT_PARAMETERS
KR_USER_EXIT_CANCEL_TAXINVOICE
KR_USER_EXIT_COPY_TAXINVOICE
KR_USER_EXIT_LIST_TAXINVOICE
KR_USER_EXIT_ROUNDOFF
LAST_DAY_OF_MONTHS
NUMERIC_CHECK
OPEN_FORM
START_FORM
STRING_SPLIT
WRITE_FORM
Z_FI_COMMA_DEL
Z_SB_DTI_ISSUE
Z_SB_RETURN_MESSAGE
c00e842f51b6a0fd80c608908fe26e6c41172772cc4801035199a91ec41c97b3 85 144 168

업무 목적

ZFIR0140 이 선별한 매출 세금계산서를 실제로 출력(SAPscript)하고 전자세금계산서 중계사(스마트빌)로 전송하는 프로그램이다. 세금계산서 양식에 품목·금액·합계·공란수를 채워 WRITE/SAPscript 로 인쇄하고, 재발행(REPRINT)과 전자 전송(SMARTBILL_TRANS, 316줄)을 함께 처리한다. 27본 중 가장 크고(6,376줄) 출력 서식 로직이 집중된 프로그램이다.

주 흐름

  1. 출력 양식(레이아웃 세트)을 결정한다 (GET_LAYOUT)
  2. 대상 세금계산서와 세금·거래처 정보를 채운다 (FILL_TABLES → GET_TAXES → GET_BUPLA → GET_ADDRESS)
  3. 출력 옵션(영수/청구, 일반/세금계산서, 출력매체)을 검증한다 (CHECK_OPTION → CHECK_RECEIPT / CHECK_BILLING)
  4. 고객 유형별로 양식을 분기해 항목·금액·합계를 Write 한다 (KIND_OF_CUSTOMERS → WRITE_PART1-1/1-2 → PRINT_ITEM_* → PRINT_SUM_LINE)
  5. SAPscript 로 세금계산서를 출력한다 (SAP_SCRIPT, 373줄 / OPEN_FORM → WRITE_FORM → CLOSE_FORM)
  6. 전자세금계산서는 스마트빌 전송 데이터를 만들어 전송한다 (SMARTBILL_TRANS → MAKE_ZSB_HEADER / MAKE_ZSB_ITEM / MAKE_ZSB_PAYMENT → TRANSMIT_DTI_TO_SB)
  7. 전송 결과 코드를 저장하고 오류는 화면에 표시한다 (SAVE_RETURN_CODE_TO_AUSGLOP → DISPLAY_ERROR_MSG)
  8. 재발행 요청은 별도 경로로 처리한다 (REPRINT, 236줄)

핵심 내부테이블

  • AUSGLOP_ITAB — 출력 대상 세금계산서 항목 (채움: FILL_TABLES / 소비: PRINT_INVOICES, SMARTBILL_TRANS)
  • SEL_AUSGLOP_ITAB — 사용자가 선택한 발행 대상 (채움: SET_SELECTION, SEL_DOCUMENT / 소비: UPDATE_TABLE, SAVE_RETURN_CODE_TO_AUSGLOP)

테이블 / 외부 호출

  • read: ADR6, ADRC, BKPF, BSEC, BSEG, BSET, J_1BBRANCH, KNA1, T001, T001F, T074T, VBRK, VBRP, ZDTI_CONFIG, ZDTI_LAYOUT
  • write: ALL_ITEMS_ITAB, AUSGLOP_ITAB, AUSGLOP_ITAB2, AUSGLOP_MAT_ITAB, BKPF, BSEG, BSET, CHECK_ITAB, LINE, MATZEIL4_ITAB, SEL_AUSGLOP_ITAB
  • 외부 호출: CLOSE_FORM, CONVERT_TO_LOCAL_CURRENCY, END_FORM, FB03, GET_BUPLA_ADDRESS, GET_PRINT_PARAMETERS, KR_USER_EXIT_CANCEL_TAXINVOICE, KR_USER_EXIT_COPY_TAXINVOICE, KR_USER_EXIT_LIST_TAXINVOICE, KR_USER_EXIT_ROUNDOFF, LAST_DAY_OF_MONTHS, NUMERIC_CHECK, OPEN_FORM, START_FORM, STRING_SPLIT, WRITE_FORM, Z_FI_COMMA_DEL, Z_SB_DTI_ISSUE, Z_SB_RETURN_MESSAGE

로직 조각 (144건 / unit 75개)

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

EVENT AT SELECTION-SCREEN — ZFIR0141 L712-L742 (31줄)

선택화면 검증으로 SAPscript 재발행이면 양식(GET_LAYOUT)을 결정하고 전체 리스트와 추가 시트 옵션을 함께 선택하면 E353 오류를 낸다.

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

[validation] SAPscript 출력(SAP)과 재발행(REPRINT)이 선택되면 GET_LAYOUT 으로 T001F 양식을 결정하고, 전체 리스트(FULLLIST)와 추가 시트(CHK_PRAD) 조합은 허용하지 않아 E353 메시지를 낸다.

   714|   IF SAP = 'X' AND REPRINT = 'X'.
   715| 
   716|     PERFORM GET_LAYOUT.
   717| 
   718|   ENDIF.
   719| 
   720|   IF FULLLIST = 'X' AND CHK_PRAD = 'X'.
   721|     MESSAGE E353.
   722|   ENDIF.
  • EN: On the selection screen, determine the SAPscript form for reprint via GET_LAYOUT and reject the combination of full list with additional sheet with message E353.
  • 호출(파서): GET_LAYOUT
  • 업무 키워드: 선택화면 검증, 양식 결정, 출력 옵션 조합, 오류 E353
  • English: Selection Screen, Validation, SAPscript Form, Output Option
  • 정의부(복사 시 함께 필요): SAP, REPRINT, FULLLIST, CHK_PRAD
  • 위치: abap://ZFIR0141/ZFIR0141#L714-L722 · confidence 0.85 · ZFIR0141#ZFIR0141#EVENT#AT_SELECTION-SCREEN#C1

FORM GET_LAYOUT — ZFIR0141 L1447-L1493 (47줄)

회사코드 T001 을 읽고 양식 종류(STA1 일반/세금계산서)·인쇄 옵션(CHK_PRTI)에 따라 T001F 에서 SAPscript 양식명(FORNR)을 결정하며 없으면 E202 오류를 낸다.

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

[sql_select] T001 로 회사코드 정보를 읽고 STA1='X' 이면 세금계산서 인쇄(CHK_PRTI)는 EVENT 없는 T001F, 추가 시트는 EVENT='AS', 그 외는 EVENT='TF' 조건으로 회사코드별 → 공통(BUKRS 공백) 순으로 T001F 를 조회해 양식명 FORM 을 세팅하고 미존재 시 E202 메시지를 낸다.

  1449|   SELECT SINGLE * FROM T001 WHERE BUKRS = SBUKRS.
  1450| 
  1451|   IF STA1 = 'X'.
  1452|     IF CHK_PRTI = 'X'.
  1453|       SELECT SINGLE * FROM T001F WHERE BUKRS = SBUKRS
  1454|                                  AND PROGRAMM = SY-CPROG.
  1455|       IF SY-SUBRC <> 0.
  1456|         SELECT SINGLE * FROM T001F WHERE BUKRS = ' '
  1457|                                    AND PROGRAMM = SY-CPROG.
  1458|         IF SY-SUBRC <> 0.
  1459|           MESSAGE E202.
  1460|         ENDIF.
  1461|       ENDIF.
  1462|     ELSE.
  1463|       SELECT SINGLE * FROM T001F WHERE BUKRS = SBUKRS
  1464|                                   AND PROGRAMM = SY-CPROG
  1465|                                   AND EVENT = 'AS'.
  1466|       IF SY-SUBRC <> 0.
  1467|         SELECT SINGLE * FROM T001F WHERE BUKRS = ' '
  1468|                                    AND PROGRAMM = SY-CPROG
  1469|                                    AND EVENT = 'AS'.
  1470|         IF SY-SUBRC <> 0.
  1471|           MESSAGE E202.
  1472|         ENDIF.
  1473|       ENDIF.
  1474|     ENDIF.
  1475|     FORM = T001F-FORNR.                                  "note 0318410
  1476|   ELSE.
  1477|     SELECT SINGLE * FROM T001F WHERE BUKRS = SBUKRS
  1478|                                AND PROGRAMM = SY-CPROG
  1479|                                AND EVENT    = 'TF'.
  1480|     IF SY-SUBRC <> 0.
  1481|       SELECT SINGLE * FROM T001F WHERE BUKRS = ' '
  1482|                                  AND PROGRAMM = SY-CPROG
  1483|                                  AND EVENT    = 'TF'.
  1484|       IF SY-SUBRC <> 0.
  1485|         MESSAGE E202.
  1486|       ENDIF.
  1487|     ENDIF.
  1488| 
  1489|     FORM = T001F-FORNR.
  1490|   ENDIF.
  • EN: Read T001 and determine the SAPscript form name from T001F by program and event (none/AS/TF) with fallback to the cross-company entry; raise E202 if no form is configured.
  • 테이블(파서): read T001, T001F / write -
  • SAP 객체: T001, T001F
  • 업무 키워드: 양식 결정, SAPscript 양식, 회사코드 양식 설정, 추가 시트, 오류 E202
  • English: SAPscript Form, T001F, Form Determination, Company Code
  • 정의부(복사 시 함께 필요): T001, SBUKRS, STA1, CHK_PRTI, T001F, FORM
  • 위치: abap://ZFIR0141/ZFIR0141#L1449-L1490 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#GET_LAYOUT#C1

EVENT START-OF-SELECTION — ZFIR0141 L773-L801 (29줄)

호출 프로그램(ZFIR0140/YFIR0601)이 ABAP 메모리로 넘긴 선택 세금계산서·프로그램명·시뮬레이션·통합발행·발행일을 IMPORT 한 뒤 단독 실행이면 목록 표시, 호출 실행이면 재발행·테이블 갱신·User Exit 를 수행한다.

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

[interface] 메모리 ID 'TI'(선택 세금계산서), 'KRPROG'(호출 프로그램명), 'KRSIM'(시뮬레이션), 'SN1OP'(통합 세금계산서), 'SBLDAT'(발행일)를 IMPORT 하고 메모리를 해제하여 호출 프로그램과의 파라미터를 받는다.

   777|   IMPORT SEL_AUSGLOP_ITAB[] FROM MEMORY ID 'TI'.
   778|   IMPORT PROG_NAME FROM MEMORY ID 'KRPROG'.
   779|   IMPORT SIM FROM MEMORY ID 'KRSIM'.
   780|   IMPORT SN1OP FROM MEMORY ID 'SN1OP'.
   781|   IMPORT SBLDAT FROM MEMORY ID 'SBLDAT'.
   782|   FREE  MEMORY ID 'TI'.
   783|   FREE  MEMORY ID 'KRPROG'.
   784|   FREE  MEMORY ID 'KRSIM'.
   785|   FREE  MEMORY ID 'SN1OP'.
   786|   FREE  MEMORY ID 'SBLDAT'.
  • EN: Import the selected tax invoices, calling program name, simulation flag, consolidated invoice option and issue date from ABAP memory IDs and free them.
  • 업무 키워드: ABAP 메모리, 호출 프로그램 연계, 선택 세금계산서, 시뮬레이션, 발행일
  • English: ABAP Memory, IMPORT, Calling Program, Simulation
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, PROG_NAME, SIM, SN1OP, SBLDAT
  • 위치: abap://ZFIR0141/ZFIR0141#L777-L786 · confidence 0.9 · ZFIR0141#ZFIR0141#EVENT#START-OF-SELECTION#C1

[control_flow] 호출 프로그램명이 없으면(단독 실행) DISPLAY_TAX_INVOICE 로 발행 목록을 표시하고, YFIR0601 등에서 호출되면 REPRINT 로 출력/전송하고 UPDATE_TABLE·USER_EXIT2 로 전표에 세금계산서 정보를 반영한다.

   789|   IF PROG_NAME = ' ' .
   790|     PERFORM DISPLAY_TAX_INVOICE.
   791| 
   792| * YFIR0601에서 호출되어 실행  경우 -----------------------------------
   793|   ELSE.
   794|     PERFORM REPRINT.
   795|     PERFORM UPDATE_TABLE.
   796|     PERFORM USER_EXIT2.
   797| 
   798| 
   799|   ENDIF.
  • EN: Branch on standalone execution (display tax invoice list) versus called execution (REPRINT, UPDATE_TABLE and USER_EXIT2).
  • 호출(파서): DISPLAY_TAX_INVOICE, REPRINT, UPDATE_TABLE, USER_EXIT2
  • 업무 키워드: 단독 실행, 호출 실행, 재발행, 전표 갱신
  • English: Standalone, Reprint, Update Table, User Exit
  • 정의부(복사 시 함께 필요): PROG_NAME, REPRINT
  • 위치: abap://ZFIR0141/ZFIR0141#L789-L799 · confidence 0.85 · ZFIR0141#ZFIR0141#EVENT#START-OF-SELECTION#C2

FORM DISPLAY_TAX_INVOICE — ZFIR0141 L4029-L4051 (23줄)

출력 옵션을 검증한 뒤 재발행이면 반올림 User Exit KR_USER_EXIT_ROUNDOFF 를 적용하고 대상이 없으면 메시지 I500 을 표시하며 세금계산서 리스트를 표시한다.

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

[control_flow] CHECK_OPTION 으로 출력 옵션을 검증하고 재발행(REPRINT='X')이면 FM KR_USER_EXIT_ROUNDOFF 로 AUSGLOP_ITAB 금액을 고객사 반올림 규칙으로 보정하며, 대상 건이 없으면 I500 메시지 후 종료하고 있으면 DISPLAY_LIST 로 목록을 표시한다.

  4032|   PERFORM CHECK_OPTION.
  4033| 
  4034|   IF REPRINT = 'X'.
  4035|     CALL FUNCTION 'KR_USER_EXIT_ROUNDOFF'
  4036|       EXPORTING
  4037|         YSTA1         = STA1
  4038|         YPROG_NAME    = SY-CPROG
  4039|       TABLES
  4040|         YAUSGLOP_ITAB = AUSGLOP_ITAB.
  4041|   ENDIF.
  4042| 
  4043|   DESCRIBE TABLE AUSGLOP_ITAB LINES SY-TFILL.
  4044|   IF SY-TFILL = 0.
  4045|     MESSAGE I500.
  4046|     EXIT.
  4047|   ENDIF.
  4048| 
  4049|   PERFORM DISPLAY_LIST.
  • EN: Validate output options, apply the rounding user exit KR_USER_EXIT_ROUNDOFF for reprints, show message I500 when no rows exist, otherwise display the tax invoice list.
  • 호출(파서): CHECK_OPTION, KR_USER_EXIT_ROUNDOFF, DISPLAY_LIST
  • SAP 객체: KR_USER_EXIT_ROUNDOFF
  • 업무 키워드: 출력 옵션 검증, 재발행, 반올림 User Exit, 대상 없음
  • English: Option Check, Reprint, User Exit, Round Off
  • 정의부(복사 시 함께 필요): REPRINT, STA1, AUSGLOP_ITAB, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L4032-L4049 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#DISPLAY_TAX_INVOICE#C1

FORM CHECK_OPTION — ZFIR0141 L1925-L2136 (212줄)

단독 실행 시 선택 조건(세금계산서번호 SAUGBL 또는 발행일 SAUGDT)에 따라 BKPF/BSEG/BSET 에서 발행된 세금계산서 전표를 찾아 AUSGLOP_ITAB 을 구성하고 매출부가세 기준 공급가액·세액을 집계한다.

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

[sql_select] 세금계산서번호 조건이 있으면 BKPF-BKTXT(세금계산서번호 저장 필드)가 범위에 드는 전표를 읽고 고객(KOART='D') BSEG 라인에서 고객·사업영역·사업장·특별G/L·세금코드·전표금액(대변이면 부호 반전)을 가져와 AUSGLOP_ITAB 에 APPEND 한다.

  1931|   IF SAUGBL NE ' '.   " 세금계산서 번호가 있으면
  1932|     SELECT  * FROM BKPF WHERE  BUKRS = SBUKRS
  1933|                           AND  GJAHR = SGJAHR
  1934|                           AND  BKTXT IN SAUGBL.
  1935| 
  1936|       IF SY-SUBRC = 0.
  1937|         MOVE-CORRESPONDING BKPF TO AUSGLOP_ITAB.
  1938|         MOVE BKPF-BKTXT TO AUSGLOP_ITAB-AUGBL.
  1939|         SELECT  SINGLE * FROM BSEG WHERE BUKRS = BKPF-BUKRS
  1940|                                      AND BELNR = BKPF-BELNR
  1941|                                      AND GJAHR = BKPF-GJAHR
  1942|                                      AND KOART = 'D'
  1943|                                      AND KUNNR IN SKUNNR.
  1944|         IF SY-SUBRC = 0.
  1945|           MOVE BSEG-KUNNR TO AUSGLOP_ITAB-KUNNR.
  1946|           MOVE BSEG-GSBER TO AUSGLOP_ITAB-GSBER.
  1947|           MOVE BSEG-BELNR TO AUSGLOP_ITAB-BELNR.
  1948|           MOVE BSEG-BUPLA TO AUSGLOP_ITAB-BUPLA.
  1949|           MOVE BSEG-UMSKZ TO AUSGLOP_ITAB-UMSKZ.
  1950|           MOVE BSEG-MWSKZ TO AUSGLOP_ITAB-MWSKZ.
  1951| * 매출부가세 텍스트를 가져오기 위한 설정
  1952| *          MOVE bseg-sgtxt TO ausglop_itab-sgtxt.
  1953|           IF BSEG-SHKZG = 'H'.
  1954|             BSEG-DMBTR = -1 * ( BSEG-DMBTR ).
  1955|           ENDIF.
  1956|           MOVE BSEG-DMBTR TO AUSGLOP_ITAB-DMBTR.
  1957|           APPEND AUSGLOP_ITAB.
  1958|         ELSE.
  1959|           CONTINUE.
  1960|         ENDIF.
  1961|       ENDIF.
  1962|     ENDSELECT.
  • EN: When a tax invoice number range is given, read BKPF whose header text BKTXT holds the invoice number and take customer line data (KOART='D') from BSEG into AUSGLOP_ITAB with sign-adjusted amounts.
  • 테이블(파서): read BKPF, BSEG / write -
  • SAP 객체: BKPF, BSEG
  • 업무 키워드: 세금계산서 번호, 전표 헤더 텍스트, 고객 라인, 전표금액, 부호 반전
  • English: Tax Invoice Number, Document Header Text, Customer Line Item, BKPF, BSEG
  • 정의부(복사 시 함께 필요): SAUGBL, BKPF, SBUKRS, SGJAHR, AUSGLOP_ITAB, BSEG, SKUNNR
  • 위치: abap://ZFIR0141/ZFIR0141#L1931-L1962 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#CHECK_OPTION#C1

[aggregation] 매출부가세 텍스트를 가져온 뒤 각 전표의 세금 항목 BSET 를 매출부가세 계정 0040605000 으로 한정해(특소세 이중합산 방지, A6 세금코드는 세액 0 포함) 차대(SHKZG) 부호를 고려해 공급가액(HWBAS)·세액(HWSTE)을 합산하고 신고일(MLDDT)을 발행일 AUGDT 로 세팅한다.

  1965|     PERFORM GET_SALES_TAX_SGTXT.
  1966| 
  1967|     LOOP AT AUSGLOP_ITAB.
  1968| 
  1969|       CLEAR: SIGN,CLEAR.
  1970| * 특소세 때문에 LC표준액이 2 더해지므로 특소세를 제외한
  1971| * 매출부가가치세의 LC표준액만 더하기 위해 계정번호를 조건으로 추가.
  1972|       IF AUSGLOP_ITAB-MWSKZ <> 'A6'.
  1973|         SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1974|                              AND BELNR = AUSGLOP_ITAB-BELNR
  1975|                              AND GJAHR = AUSGLOP_ITAB-GJAHR
  1976|                              AND HKONT = '0040605000'
  1977|                              AND HWSTE <> ''.
  1978| 
  1979| 
  1980|           IF SY-SUBRC = 0.
  1981| 
  1982|             IF SIGN = ' '.
  1983|               SIGN = BSET-SHKZG.
  1984|             ENDIF.
  1985| 
  1986|             IF SIGN <> ' ' AND SIGN <>  BSET-SHKZG .
  1987|               AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE - BSET-HWSTE.
  1988|               AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS - BSET-HWBAS.
  1989|               CLEAR = 'X'.
  1990|             ELSE.
  1991|               ADD BSET-HWSTE TO AUSGLOP_ITAB-HWSTE.
  1992|               ADD BSET-HWBAS TO AUSGLOP_ITAB-HWBAS.
  1993|             ENDIF.
  1994| 
  1995| *          ADD bset-hwste TO ausglop_itab-hwste.
  1996| *          ADD bset-hwbas TO ausglop_itab-hwbas.
  1997| 
  1998|             MOVE BSET-MLDDT TO AUSGLOP_ITAB-AUGDT.
  1999| *          MOVE bset-shkzg to ausglop_itab-shkzg.
  2000|             IF AUSGLOP_ITAB-SHKZG = ' ' .
  2001|               MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG.
  2002|             ENDIF.
  2003| 
  2004| *          if bset-shkzg = 'S'.
  2005|             IF BSET-SHKZG = 'S' AND CLEAR = ' '.
  2006|               AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE * -1.
  2007|               AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS * -1.
  2008|             ENDIF.
  2009|             MODIFY AUSGLOP_ITAB.
  2010|           ENDIF.
  2011|         ENDSELECT.
  2012| 
  2013|       ELSEIF AUSGLOP_ITAB-MWSKZ = 'A6'.
  2014|         SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2015|                              AND BELNR = AUSGLOP_ITAB-BELNR
  2016|                              AND GJAHR = AUSGLOP_ITAB-GJAHR
  2017|                              AND HKONT = '0040605000'.
  2018| 
  2019| 
  2020| 
  2021|           IF SY-SUBRC = 0.
  2022| 
  2023|             IF SIGN = ' '.
  2024|               SIGN = BSET-SHKZG.
  2025|             ENDIF.
  2026| 
  2027|             IF SIGN <> ' ' AND SIGN <>  BSET-SHKZG .
  2028|               AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE - BSET-HWSTE.
  2029|               AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS - BSET-HWBAS.
  2030|               CLEAR = 'X'.
  2031|             ELSE.
  2032|               ADD BSET-HWSTE TO AUSGLOP_ITAB-HWSTE.
  2033|               ADD BSET-HWBAS TO AUSGLOP_ITAB-HWBAS.
  2034|             ENDIF.
  2035| 
  2036| *          ADD bset-hwste TO ausglop_itab-hwste.
  2037| *          ADD bset-hwbas TO ausglop_itab-hwbas.
  2038| 
  2039|             MOVE BSET-MLDDT TO AUSGLOP_ITAB-AUGDT.
  2040| *          MOVE bset-shkzg to ausglop_itab-shkzg.
  2041|             IF AUSGLOP_ITAB-SHKZG = ' ' .
  2042|               MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG.
  2043|             ENDIF.
  2044| 
  2045| *          if bset-shkzg = 'S'.
  2046|             IF BSET-SHKZG = 'S' AND CLEAR = ' '.
  2047|               AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE * -1.
  2048|               AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS * -1.
  2049|             ENDIF.
  2050|             MODIFY AUSGLOP_ITAB.
  2051|           ENDIF.
  2052|         ENDSELECT.
  2053|       ENDIF.
  2054|     ENDLOOP.
  • EN: Aggregate tax base and tax amount from BSET restricted to the output VAT account 0040605000 (avoiding double counting of special consumption tax, tax code A6 including zero tax), applying debit/credit sign logic, and set the reporting date as the issue date.
  • 테이블(파서): read BSET / write AUSGLOP_ITAB
  • 호출(파서): GET_SALES_TAX_SGTXT
  • SAP 객체: BSET
  • 업무 키워드: 매출부가세, 세금 항목, 공급가액 합산, 세액 합산, 특소세, 차대 구분, 신고일
  • English: Output VAT, BSET, Tax Base, Tax Amount, Debit/Credit Indicator, Reporting Date
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, CLEAR, SIGN, BSET
  • 위치: abap://ZFIR0141/ZFIR0141#L1965-L2054 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#CHECK_OPTION#C2

[sql_select] 발행일 조건만 있으면 매출부가세 계정 0040605000 의 BSET 를 신고일(MLDDT) 범위로 읽어 전표별로 공급가액·세액을 합산(차변이면 부호 반전)하고 신고일을 발행일로 하여 AUSGLOP_ITAB 에 추가·갱신한다.

  2056|   ELSEIF SAUGBL =  ' '  AND SAUGDT NE ' '.
  2057| 
  2058|     SELECT * FROM BSET  WHERE BUKRS = SBUKRS
  2059|                           AND GJAHR = SGJAHR
  2060| * 특소세 때문에 LC표준액이 2번 더해지므로 특소세를 제외한
  2061| * 매출부가가치세의 LC표준액만 더하기 위해 계정번호를 조건으로 추가.
  2062|                           AND HKONT = '0040605000'
  2063|                           AND MLDDT IN SAUGDT.
  2064|       IF SY-SUBRC = 0.
  2065|         READ  TABLE AUSGLOP_ITAB WITH KEY BUKRS = BSET-BUKRS
  2066|                                           BELNR = BSET-BELNR
  2067|                                           GJAHR = BSET-GJAHR.
  2068|         IF SY-SUBRC = 0.
  2069|           ADD BSET-HWBAS TO AUSGLOP_ITAB-HWBAS.
  2070|           ADD BSET-HWSTE TO AUSGLOP_ITAB-HWSTE.
  2071|           IF BSET-SHKZG = 'S'.
  2072|             AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE * -1.
  2073|             AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS * -1.
  2074|           ENDIF.
  2075|           MOVE BSET-MLDDT TO AUSGLOP_ITAB-AUGDT.
  2076|           MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG.
  2077|           MODIFY AUSGLOP_ITAB INDEX SY-TABIX.
  2078|         ELSE.
  2079|           MOVE-CORRESPONDING BSET TO AUSGLOP_ITAB.
  2080|           IF BSET-SHKZG = 'S'.
  2081|             AUSGLOP_ITAB-HWSTE = AUSGLOP_ITAB-HWSTE * -1.
  2082|             AUSGLOP_ITAB-HWBAS = AUSGLOP_ITAB-HWBAS * -1.
  2083|           ENDIF.
  2084|           MOVE BSET-MLDDT TO AUSGLOP_ITAB-AUGDT.
  2085|           APPEND AUSGLOP_ITAB.
  2086|         ENDIF.
  2087|       ENDIF.
  2088| 
  2089|     ENDSELECT.
  • EN: When only an issue date range is given, read BSET by reporting date for the output VAT account and accumulate tax base and tax per document into AUSGLOP_ITAB.
  • 테이블(파서): read BSET / write AUSGLOP_ITAB
  • SAP 객체: BSET
  • 업무 키워드: 발행일 조건, 신고일, 세금 항목, 공급가액, 세액
  • English: Reporting Date, BSET, Tax Base, Tax Amount
  • 정의부(복사 시 함께 필요): SAUGBL, SAUGDT, BSET, SBUKRS, SGJAHR, AUSGLOP_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L2056-L2089 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#CHECK_OPTION#C3

[sql_select] 발행일 기준으로 모은 각 전표에 대해 고객 BSEG 라인(KOART='D', 고객 범위)과 BKPF 헤더(원천 유형·참조키·통화·세금계산서번호 BKTXT·전표일·전기일·전표유형)를 읽어 채우고 STRING_CHECK 로 세금계산서번호가 숫자형이 아니거나 고객 라인이 없으면 삭제한다.

  2093|       LOOP AT AUSGLOP_ITAB.
  2094|         SELECT SINGLE * FROM BSEG WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2095|                                     AND BELNR = AUSGLOP_ITAB-BELNR
  2096|                                     AND GJAHR = AUSGLOP_ITAB-GJAHR
  2097|                                     AND KOART = 'D'
  2098|                                     AND KUNNR IN SKUNNR.
  2099|         IF SY-SUBRC = 0.
  2100|           MOVE BSEG-KUNNR TO AUSGLOP_ITAB-KUNNR.
  2101|           MOVE BSEG-GSBER TO AUSGLOP_ITAB-GSBER.
  2102|           MOVE BSEG-BUPLA TO AUSGLOP_ITAB-BUPLA.
  2103|           MOVE BSEG-UMSKZ TO AUSGLOP_ITAB-UMSKZ.
  2104|           MOVE BSEG-SGTXT TO AUSGLOP_ITAB-SGTXT.
  2105|           IF BSEG-SHKZG = 'H'.
  2106|             BSEG-DMBTR = -1 * ( BSEG-DMBTR ).
  2107|           ENDIF.
  2108|           MOVE BSEG-DMBTR TO AUSGLOP_ITAB-DMBTR.
  2109| 
  2110|           SELECT SINGLE * FROM BKPF WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2111|                                       AND BELNR = AUSGLOP_ITAB-BELNR
  2112|                                       AND GJAHR =  AUSGLOP_ITAB-GJAHR.
  2113| 
  2114|           AUSGLOP_ITAB-AWTYP = BKPF-AWTYP.
  2115|           AUSGLOP_ITAB-AWKEY = BKPF-AWKEY.
  2116|           AUSGLOP_ITAB-HWAER = BKPF-HWAER.
  2117|           AUSGLOP_ITAB-WAERS = BKPF-WAERS.
  2118|           AUSGLOP_ITAB-AUGBL = BKPF-BKTXT.
  2119|           AUSGLOP_ITAB-BLDAT = BKPF-BLDAT.
  2120|           AUSGLOP_ITAB-BUDAT = BKPF-BUDAT.
  2121|           AUSGLOP_ITAB-BLART = BKPF-BLART.
  2122| *augbl이 세금계산서번호로만(숫자) 이루어진것을 체크한다.
  2123|           PERFORM STRING_CHECK.
  2124|           IF W_HTYPE = 'NUMC' AND AUSGLOP_ITAB-AUGDT NE 0.
  2125|             MODIFY AUSGLOP_ITAB.
  2126|           ELSE.
  2127|             DELETE AUSGLOP_ITAB.
  2128|           ENDIF.
  2129|         ELSE.
  2130|           DELETE AUSGLOP_ITAB.
  2131|         ENDIF.
  2132|       ENDLOOP.
  • EN: For each collected document, enrich with the customer line from BSEG and header data from BKPF, then drop rows whose tax invoice number is not numeric or that have no matching customer line.
  • 테이블(파서): read BSEG, BKPF / write AUSGLOP_ITAB
  • 호출(파서): STRING_CHECK
  • SAP 객체: BSEG, BKPF
  • 업무 키워드: 고객 라인, 전표 헤더, 세금계산서번호 검증, 숫자형 체크, 대상 정리
  • English: Customer Line Item, Document Header, Validation, NUMERIC_CHECK
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, BSEG, SKUNNR, BKPF, W_HTYPE
  • 위치: abap://ZFIR0141/ZFIR0141#L2093-L2132 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#CHECK_OPTION#C4

FORM GET_SALES_TAX_SGTXT — ZFIR0141 L4801-L4820 (20줄)

각 출력 대상 전표의 매출세(MWART='A') BSEG 라인 항목 텍스트(SGTXT)를 읽어 AUSGLOP_ITAB-SGTXT 에 저장한다.

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

[sql_select] 전표(BUKRS/BELNR/GJAHR)의 매출세 유형(MWART='A') BSEG 라인을 SELECT SINGLE 하여 항목 텍스트 SGTXT 를 AUSGLOP_ITAB 에 MODIFY 로 반영해 세금계산서 품목명 원천으로 사용한다.

  4803|   LOOP AT AUSGLOP_ITAB.
  4804| 
  4805| *    SELECT SINGLE * FROM bseg WHERE belnr = ausglop_itab-belnr
  4806| *                                AND mwart = 'A'.
  4807| *   아래와 같이 고침 2003.10.16
  4808| 
  4809|     SELECT SINGLE * FROM BSEG WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4810|                                 AND BELNR = AUSGLOP_ITAB-BELNR
  4811|                                 AND GJAHR = AUSGLOP_ITAB-GJAHR
  4812|                                 AND MWART = 'A'.
  4813| 
  4814|     IF SY-SUBRC EQ 0.
  4815|       MOVE BSEG-SGTXT TO AUSGLOP_ITAB-SGTXT.
  4816|       MODIFY AUSGLOP_ITAB.
  4817|     ENDIF.
  4818|   ENDLOOP.
  • EN: Read the output tax (MWART='A') line item from BSEG for each document and store its text SGTXT in AUSGLOP_ITAB.
  • 테이블(파서): read BSEG / write AUSGLOP_ITAB
  • SAP 객체: BSEG
  • 업무 키워드: 매출세, 전표 항목 텍스트, 세금 라인
  • English: Output Tax, Line Item Text, BSEG
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, BSEG
  • 위치: abap://ZFIR0141/ZFIR0141#L4803-L4818 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#GET_SALES_TAX_SGTXT#C1

FORM STRING_CHECK — ZFIR0141 L3541-L3551 (11줄)

세금계산서번호(AUSGLOP_ITAB-AUGBL)가 숫자형인지 FM NUMERIC_CHECK 로 판정해 W_HTYPE 에 담는다.

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

[validation] AUSGLOP_ITAB-AUGBL 을 FM NUMERIC_CHECK 에 넘겨 데이터 유형(HTYPE, NUMC 여부)을 받아 세금계산서번호 형식 검증에 사용한다.

  3544|   CALL FUNCTION 'NUMERIC_CHECK'
  3545|     EXPORTING
  3546|       STRING_IN  = AUSGLOP_ITAB-AUGBL
  3547|     IMPORTING
  3548| *     STRING_OUT =
  3549|       HTYPE      = W_HTYPE.
  • EN: Call FM NUMERIC_CHECK on the tax invoice number to obtain its type (NUMC or not) for format validation.
  • 호출(파서): NUMERIC_CHECK
  • SAP 객체: NUMERIC_CHECK
  • 업무 키워드: 세금계산서번호, 숫자형 검증
  • English: NUMERIC_CHECK, Validation, Tax Invoice Number
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, W_HTYPE
  • 위치: abap://ZFIR0141/ZFIR0141#L3544-L3549 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#STRING_CHECK#C1

FORM DISPLAY_LIST — ZFIR0141 L2406-L2522 (117줄)

발행된 세금계산서를 번호(AUGBL) 단위로 금액을 합산해 AUSGLOP_ITAB2 로 요약하고 고객명·사업자번호와 함께 체크박스 리스트로 표시한다.

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

[aggregation] 동일 세금계산서번호·발행일의 항목은 AUSGLOP_ITAB2 에 전표금액(DMBTR)·공급가액·세액을 누적하고, 새 번호는 STRING_CHECK 로 숫자형 확인 후 TX 전표유형 번호범위(8000000000~)이면 최신 전기일(BUDAT1)과 함께 AUSGLOP_ITAB2 에 APPEND 한다.

  2410|   LOOP AT AUSGLOP_ITAB.
  2411|     LOOP AT AUSGLOP_ITAB2 WHERE AUGBL = AUSGLOP_ITAB-AUGBL
  2412|                             AND AUGDT = AUSGLOP_ITAB-AUGDT.
  2413|       AUG = 'X'.
  2414|       AUSGLOP_ITAB2-DMBTR = AUSGLOP_ITAB2-DMBTR + AUSGLOP_ITAB-DMBTR.
  2415|       AUSGLOP_ITAB2-HWBAS = AUSGLOP_ITAB2-HWBAS + AUSGLOP_ITAB-HWBAS.
  2416|       AUSGLOP_ITAB2-HWSTE = AUSGLOP_ITAB2-HWSTE + AUSGLOP_ITAB-HWSTE.
  2417|       MODIFY AUSGLOP_ITAB2.
  2418|     ENDLOOP.
  2419| 
  2420|     IF AUG <> 'X'.
  2421|       CLEAR L_AUGBL.
  2422| *    ausglop_itab-augbl의 type 체크
  2423|       PERFORM STRING_CHECK.
  2424| 
  2425| *      IF w_htype = 'NUMC' AND ausglop_itab-augdt NE 0.
  2426| *        MOVE-CORRESPONDING ausglop_itab TO ausglop_itab2.
  2427| *        APPEND ausglop_itab2.
  2428| *      ENDIF.
  2429|       IF W_HTYPE = 'NUMC' AND AUSGLOP_ITAB-AUGDT NE 0.
  2430|         WRITE AUSGLOP_ITAB-AUGBL TO L_AUGBL.
  2431| 
  2432| * 전표 번호 범위 체크
  2433| * 전표유형 TX  번호 범위가  8000000000 번대
  2434|         IF L_AUGBL >= 8000000000 AND L_AUGBL =< 81999999999.
  2435|           MOVE-CORRESPONDING AUSGLOP_ITAB TO AUSGLOP_ITAB2.
  2436| 
  2437|           LOOP AT AUSGLOP_ITAB WHERE AUGBL = L_AUGBL .
  2438| 
  2439|             MOVE-CORRESPONDING AUSGLOP_ITAB TO IT_BUDAT.
  2440|             APPEND IT_BUDAT.
  2441|           ENDLOOP.
  2442|           SORT IT_BUDAT BY BUDAT DESCENDING .
  2443| 
  2444|           LOOP AT IT_BUDAT .
  2445| 
  2446|             SY-TABIX = 1.
  2447|             AUSGLOP_ITAB2-BUDAT1 = IT_BUDAT-BUDAT.
  2448|             EXIT.
  2449|           ENDLOOP.
  2450| 
  2451|           REFRESH IT_BUDAT. CLEAR IT_BUDAT.
  2452| 
  2453|           APPEND AUSGLOP_ITAB2.
  2454|           CLEAR AUSGLOP_ITAB2.
  2455|         ENDIF.
  2456|       ENDIF.
  2457| 
  2458|     ENDIF.
  2459| 
  2460|     CLEAR AUG.
  2461| 
  2462|   ENDLOOP.
  • EN: Summarize rows per tax invoice number into AUSGLOP_ITAB2 by accumulating amounts, and for new numeric numbers in the TX document number range append a new row with the latest posting date.
  • 테이블(파서): read - / write AUSGLOP_ITAB2
  • 호출(파서): STRING_CHECK
  • 업무 키워드: 세금계산서 번호, 금액 합산, 번호 범위, 전표유형 TX, 최신 전기일
  • English: Tax Invoice Number, Aggregation, Number Range, Posting Date
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, AUSGLOP_ITAB2, AUGBL, AUG, L_AUGBL, W_HTYPE, IT_BUDAT, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L2410-L2462 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#DISPLAY_LIST#C1

[output] 재발행/취소·세금계산서/추가시트 옵션 조합에 따라 제목 텍스트(B01~B04)를 쓰고 T001 을 읽은 뒤 리스트 헤더(세금계산서번호·발행일·고객·고객명·사업자번호·사업장·금액·공급가액·세액)를 출력한다.

  2465|   IF REPRINT = 'X' AND CHK_PRTI = 'X'.
  2466|     WRITE: TEXT-B01.
  2467|   ELSEIF REPRINT = 'X' AND CHK_PRAD = 'X'.
  2468|     WRITE: TEXT-B03.
  2469|   ELSEIF CANCEL = 'X' AND CHK_PRTI = 'X'.
  2470|     WRITE: TEXT-B02.
  2471|   ELSEIF CANCEL = 'X' AND CHK_PRAD = 'X'.
  2472|     WRITE: TEXT-B04.
  2473|   ENDIF.
  2474| 
  2475|   SKIP.
  2476| 
  2477|   FORMAT COLOR COL_HEADING INTENSIFIED.
  2478| 
  2479|   SET COUNTRY 'KR'.
  2480|   SELECT SINGLE * FROM T001 WHERE BUKRS = SBUKRS.
  2481| 
  2482|   WRITE:/3 TEXT-B05,                 "'Tax Inv. No.',
  2483|         15 TEXT-B06,                 "'Tax. inv. date',
  2484|         30 TEXT-B07,                 "'Customer',
  2485|         40 TEXT-B11,                 "'Customer Name',
  2486| *        추가필드 2004.1.13
  2487|         60 TEXT-B12,  "사업자번호 stcd2
  2488|         72 TEXT-B13,  "사업장 bupla
  2489|         82 TEXT-B08,                 "'Doc. Amt',
  2490|        103 TEXT-B09,                 "'Base Amt',
  2491|        122 TEXT-B10.                 "'Tax Amt'.
  • EN: Print the list title depending on reprint/cancel and form options, read T001 and write the column header line.
  • 테이블(파서): read T001 / write -
  • SAP 객체: T001
  • 업무 키워드: 리스트 헤더, 재발행, 취소, 제목
  • English: List Header, Reprint, Cancel
  • 정의부(복사 시 함께 필요): REPRINT, CHK_PRTI, CHK_PRAD, CANCEL, T001, SBUKRS
  • 위치: abap://ZFIR0141/ZFIR0141#L2465-L2491 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#DISPLAY_LIST#C2

[output] 요약된 세금계산서마다 KNA1 에서 고객명·사업자번호를 조회하고 체크박스·번호·발행일·고객·사업장·전표금액·공급가액·세액을 회사 통화로 WRITE 하며 라인 번호(LIST_LINE)를 저장해 이후 선택 처리에 사용한다.

  2498|   LOOP AT AUSGLOP_ITAB2.
  2499|     SELECT SINGLE NAME1 STCD2
  2500|       INTO (AUSGLOP_ITAB2-NAME1, STCD2)
  2501|       FROM KNA1
  2502|      WHERE KUNNR = AUSGLOP_ITAB2-KUNNR.
  2503| 
  2504|     CHECK NOT AUSGLOP_ITAB2-AUGBL IS INITIAL.
  2505| *     CHECK ausglop_itab2-augbl IS NUMERIC.
  2506|     WRITE:/1 AUSGLOP_ITAB2-CHECK AS CHECKBOX,
  2507|            3 AUSGLOP_ITAB2-AUGBL,
  2508|           15 AUSGLOP_ITAB2-BUDAT1 ,"augdt,
  2509|           30 AUSGLOP_ITAB2-KUNNR,
  2510|           40 AUSGLOP_ITAB2-NAME1,
  2511|           60 STCD2, "사업자번호 추가 2003.1.13
  2512|           72 AUSGLOP_ITAB2-BUPLA,
  2513|           77 AUSGLOP_ITAB2-DMBTR CURRENCY T001-WAERS,
  2514|           93 AUSGLOP_ITAB2-HWBAS CURRENCY T001-WAERS,
  2515|           120 AUSGLOP_ITAB2-HWSTE CURRENCY T001-WAERS.
  2516| 
  2517|     AUSGLOP_ITAB2-LIST_LINE = SY-LINNO.
  2518|     MODIFY AUSGLOP_ITAB2.
  2519|     CLEAR STCD2.
  2520|   ENDLOOP.
  • EN: For each summarized tax invoice, read customer name and tax number from KNA1, write the checkbox list line with amounts in company currency and store the list line number.
  • 테이블(파서): read KNA1 / write AUSGLOP_ITAB2
  • SAP 객체: KNA1
  • 업무 키워드: 체크박스 리스트, 고객명, 사업자번호, 세금계산서 목록
  • English: Checkbox, Customer Name, KNA1, List Output
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB2, STCD2, KNA1, T001
  • 위치: abap://ZFIR0141/ZFIR0141#L2498-L2520 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#DISPLAY_LIST#C3

FORM REPRINT — ZFIR0141 L2531-L2766 (236줄)

세금계산서 재발행 메인 흐름으로 호출 프로그램에서 넘어온 선택 항목을 AUSGLOP_ITAB 에 옮기고 원천·세금코드·특별G/L·사업장·주소·품목·합계를 순서대로 준비한 뒤 출력 옵션(LIST/FULLLIST/SAP)에 따라 인쇄한다.

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

[calculation] 다른 프로그램에서 호출된 경우 SEL_AUSGLOP_ITAB 을 AUSGLOP_ITAB 으로 옮기며 발행일(AUGDT)을 입력 SBLDAT 로, 통합 세금계산서(SN1OP)면 FM LAST_DAY_OF_MONTHS 로 전기일의 말일로 세팅한다.

  2535|   IF PROG_NAME <> ' '.
  2536|     DESCRIBE TABLE SEL_AUSGLOP_ITAB LINES G_LINES. "sy-tfill.
  2537| *only reprint is called
  2538|     CHECK G_LINES > 0.
  2539| *    CHECK sy-tfill > 0.
  2540| * values coming in from the calling program move values to ausglop_itab.
  2541|     LOOP AT SEL_AUSGLOP_ITAB.
  2542|       MOVE-CORRESPONDING SEL_AUSGLOP_ITAB TO AUSGLOP_ITAB.
  2543| * 세금계산서 발행일자   - smartbill 2006.07.21
  2544|       IF SBLDAT IS INITIAL.
  2545|         IF SN1OP EQ 'X'.          " 통합 세금계산서 발행일 경우
  2546| * 전기일자의 말일.
  2547|           CALL FUNCTION 'LAST_DAY_OF_MONTHS'
  2548|             EXPORTING
  2549|               DAY_IN            = SEL_AUSGLOP_ITAB-BUDAT
  2550|             IMPORTING
  2551|               LAST_DAY_OF_MONTH = AUSGLOP_ITAB-AUGDT
  2552|             EXCEPTIONS
  2553|               DAY_IN_NO_DATE    = 1
  2554|               OTHERS            = 2.
  2555|         ENDIF.
  2556|       ELSE.
  2557|         AUSGLOP_ITAB-AUGDT = SBLDAT.
  2558|       ENDIF.
  2559| 
  2560|       APPEND AUSGLOP_ITAB.
  2561|     ENDLOOP.
  2562| 
  2563| * 주석처리 - 2006.08.16
  2564| ** 영세율 세금계산서 체크.
  2565| *    LOOP AT AUSGLOP_ITAB TRANSPORTING NO FIELDS
  2566| *                         WHERE MWSKZ IN SMWSKZ.
  2567| *      EXIT.
  2568| *    ENDLOOP.
  2569| *    IF SY-SUBRC EQ 0.
  2570| *      FL_TAX_RAT = '0'.
  2571| *    ENDIF.
  2572|   ENDIF.
  • EN: When called externally, copy SEL_AUSGLOP_ITAB into AUSGLOP_ITAB and set the issue date from SBLDAT or, for consolidated invoices, the month-end of the posting date via LAST_DAY_OF_MONTHS.
  • 호출(파서): LAST_DAY_OF_MONTHS
  • SAP 객체: LAST_DAY_OF_MONTHS
  • 업무 키워드: 재발행, 세금계산서 발행일, 통합 세금계산서, 월말일
  • English: Reprint, Issue Date, Consolidated Tax Invoice, LAST_DAY_OF_MONTHS
  • 정의부(복사 시 함께 필요): PROG_NAME, SEL_AUSGLOP_ITAB, G_LINES, AUSGLOP_ITAB, SBLDAT, SN1OP
  • 위치: abap://ZFIR0141/ZFIR0141#L2535-L2572 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#REPRINT#C1

[control_flow] FILL_CHECK_TABLE·GET_TAX_CODE·CHECK_G_L_INDICATOR 로 원천 유형·사업자번호·특별G/L 을 채운 뒤 FI 전표(BKPF) 항목은 CHECK_ITAB 에 AWTYP_FI 를 표시하고 없으면 SAVE_UMSKZ 와 함께 새로 APPEND 한다.

  2575|   PERFORM FILL_CHECK_TABLE.
  2576| 
  2577| * Getting the tax code 1 or tax code 2
  2578|   PERFORM GET_TAX_CODE.
  2579| 
  2580| * check special g_l-indicator
  2581|   PERFORM CHECK_G_L_INDICATOR.
  2582| *  if document is a special g_l transaction document.
  2583| 
  2584|   LOOP AT AUSGLOP_ITAB.
  2585|     IF PROG_NAME = ' '.
  2586|       CHECK AUSGLOP_ITAB-CHECK = 'X'.
  2587|     ENDIF.
  2588| 
  2589|     IF AUSGLOP_ITAB-AWTYP = 'BKPF'.
  2590| 
  2591|       CLEAR CHECK_ITAB.
  2592|       LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2593|                            AND KUNNR = AUSGLOP_ITAB-KUNNR
  2594|                            AND STCD  = AUSGLOP_ITAB-STCD
  2595|                            AND AUGBL = AUSGLOP_ITAB-AUGBL.
  2596|         CHECK_ITAB-AWTYP_FI = AUSGLOP_ITAB-AWTYP.
  2597|         MOVE AUSGLOP_ITAB-BUKRS TO CHECK_ITAB-BUKRS.
  2598|         MOVE AUSGLOP_ITAB-KUNNR TO CHECK_ITAB-KUNNR.
  2599|         MOVE AUSGLOP_ITAB-STCD  TO CHECK_ITAB-STCD.
  2600|         MOVE AUSGLOP_ITAB-AUGBL TO CHECK_ITAB-AUGBL.
  2601|         MODIFY CHECK_ITAB.
  2602|       ENDLOOP.
  2603| 
  2604| * if check_itab not already filled :
  2605|       IF SY-SUBRC <> 0.
  2606|         CHECK_ITAB-AWTYP_FI = AUSGLOP_ITAB-AWTYP.
  2607|         MOVE AUSGLOP_ITAB-BUKRS TO CHECK_ITAB-BUKRS.
  2608|         MOVE AUSGLOP_ITAB-KUNNR TO CHECK_ITAB-KUNNR.
  2609|         MOVE AUSGLOP_ITAB-STCD  TO CHECK_ITAB-STCD.
  2610|         MOVE AUSGLOP_ITAB-AUGBL TO CHECK_ITAB-AUGBL.
  2611|         MOVE AUSGLOP_ITAB-UMSKZ TO CHECK_ITAB-SAVE_UMSKZ.
  2612|         APPEND CHECK_ITAB.
  2613|       ENDIF.
  2614| 
  2615|     ENDIF.
  2616| 
  2617|   ENDLOOP.
  • EN: Fill the check table, tax codes and special G/L indicators, then mark FI-originated rows in CHECK_ITAB (AWTYP_FI) or append new entries with the saved special G/L indicator.
  • 테이블(파서): read - / write CHECK_ITAB
  • 호출(파서): FILL_CHECK_TABLE, GET_TAX_CODE, CHECK_G_L_INDICATOR
  • SAP 객체: BKPF
  • 업무 키워드: 체크 테이블, FI 전표, 특별 G/L, 원천 유형
  • English: Check Table, FI Document, Special G/L Indicator
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, PROG_NAME, CHECK_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L2575-L2617 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#REPRINT#C2

[validation] 추가 시트 인쇄(CHK_PRAD)인데 순수 FI 전표만으로 발행된 세금계산서면 오류 E203 을 내고, 각 항목의 발행 사업장 주소를 GET_BUPLA 로 수집한다.

  2619|   LOOP AT AUSGLOP_ITAB.
  2620|     IF PROG_NAME = ' '.
  2621|       CHECK AUSGLOP_ITAB-CHECK = 'X'.
  2622|     ENDIF.
  2623| 
  2624| * Check if Tax invoice not issued from pure fi-documents
  2625|     IF CHK_PRAD = 'X'.
  2626|       LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2627|                            AND KUNNR = AUSGLOP_ITAB-KUNNR
  2628|                            AND STCD = AUSGLOP_ITAB-STCD
  2629|                            AND AUGBL = AUSGLOP_ITAB-AUGBL.
  2630| 
  2631|         IF CHECK_ITAB-AWTYP_FI = 'BKPF' AND CHECK_ITAB-AWTYP_SD = ' '.
  2632|           MESSAGE E203 WITH AUSGLOP_ITAB-AUGBL.
  2633|         ENDIF.
  2634|       ENDLOOP.
  2635|     ENDIF.
  2636| 
  2637| *----------------------------------------------------------------------*
  2638| * get base amount and tax amount from bset
  2639| *----------------------------------------------------------------------*
  2640| 
  2641| *    PERFORM get_taxes.
  2642| 
  2643| *----------------------------------------------------------------------*
  2644| * get issuer business place data
  2645| *----------------------------------------------------------------------*
  2646|     PERFORM GET_BUPLA.
  2647| 
  2648|   ENDLOOP.
  • EN: Raise error E203 when the additional sheet is requested for a pure FI-document tax invoice, and collect the issuing business place address via GET_BUPLA.
  • 호출(파서): GET_BUPLA
  • 업무 키워드: 추가 시트, 순수 FI 전표 검증, 사업장 주소
  • English: Additional Sheet, Validation, Business Place
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, PROG_NAME, CHK_PRAD, CHECK_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L2619-L2648 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#REPRINT#C3

[sql_select] 본사 사업장 'K000' 의 종사업장 번호(STATE_INSC)를 J_1BBRANCH 에서 조회해 세금계산서에 표시할 값으로 보관한다.

  2658|   CLEAR L_STATE_INSC.
  2659|   SELECT  SINGLE  STATE_INSC  INTO L_STATE_INSC
  2660|                FROM   J_1BBRANCH
  2661|               WHERE   BUKRS   =  SBUKRS
  2662|                 AND   BRANCH  =  'K000'.
  • EN: Read the sub-business place number STATE_INSC of branch 'K000' from J_1BBRANCH for printing.
  • 테이블(파서): read J_1BBRANCH / write -
  • SAP 객체: J_1BBRANCH
  • 업무 키워드: 종사업장, 사업장 마스터
  • English: Business Place, J_1BBRANCH
  • 정의부(복사 시 함께 필요): L_STATE_INSC, J_1BBRANCH, SBUKRS
  • 위치: abap://ZFIR0141/ZFIR0141#L2658-L2662 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#REPRINT#C4

[calculation] GET_ADDRESS 로 고객 주소, FILL_TABLES 로 품목·합계 테이블을 만든 뒤 FI 합계(ALL_ITEMS_FI_ITAB)의 공급가액·세액을 KRW 편집으로 4번째 라인 MATZEIL4_ITAB 에 채운다.

  2669|   PERFORM GET_ADDRESS.
  2670| 
  2671| 
  2672| *----------------------------------------------------------------------*
  2673| * filling of the internal table ausglop_mat_itab with
  2674| * material-related data. For FI documents, fill aggregated table
  2675| *----------------------------------------------------------------------*
  2676|   PERFORM FILL_TABLES.
  2677| 
  2678| * Filling the base amount and tax amount fields of the 4th line  in case
  2679| * fi + sd-data or only fi-data.
  2680| 
  2681|   LOOP AT MATZEIL4_ITAB.
  2682|     LOOP AT ALL_ITEMS_FI_ITAB WHERE BUKRS = MATZEIL4_ITAB-BUKRS
  2683|                                 AND KUNNR = MATZEIL4_ITAB-KUNNR
  2684|                                 AND STCD  = MATZEIL4_ITAB-STCD
  2685|                                 AND AUGBL = MATZEIL4_ITAB-AUGBL.
  2686|       WRITE ALL_ITEMS_FI_ITAB-NETWR TO MATZEIL4_ITAB-NETWR
  2687|                                     CURRENCY 'KRW'.
  2688|       WRITE ALL_ITEMS_FI_ITAB-MWSBP TO MATZEIL4_ITAB-MWSBP
  2689|                                     CURRENCY 'KRW'.
  2690|       MODIFY MATZEIL4_ITAB.
  2691|     ENDLOOP.
  2692|   ENDLOOP.
  • EN: Collect customer addresses and material tables, then fill the fourth line MATZEIL4_ITAB with the FI totals in KRW.
  • 테이블(파서): read - / write MATZEIL4_ITAB
  • 호출(파서): GET_ADDRESS, FILL_TABLES
  • 업무 키워드: 고객 주소, 품목 테이블, FI 합계, 4번째 라인
  • English: Address, Material Line, FI Totals, Item Line 4
  • 정의부(복사 시 함께 필요): MATZEIL4_ITAB, ALL_ITEMS_FI_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L2669-L2692 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#REPRINT#C5

[aggregation] 품목을 세금계산서별로 정렬해 4번째 이후 품목을 ALL_MAT_ITAB 에 COLLECT(FLAG='X')하여 '외' 요약 합계를 만들고 전체 품목을 ALL_ITEMS_ITAB 에 COLLECT 한 뒤 GET_TOTALS 로 FI 세금 합계와 대사하며 SD 전용 합계 ALL_ITEMS_SD_ITAB 을 만든다.

  2697|   CLEAR : ALL_MAT_ITAB[], AUSGLOP_MAT_ITAB, COUNT.
  2698| 
  2699|   SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING.
  2700| 
  2701|   LOOP AT AUSGLOP_MAT_ITAB.
  2702|     IF AUSGLOP_MAT_ITAB NE SPACE.
  2703|       AT NEW AUGBL.
  2704|         COUNT = 0.
  2705|       ENDAT.
  2706|       COUNT = COUNT + 1.
  2707|       MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO ALL_MAT_ITAB.
  2708| *      IF count le 4.
  2709| *       append all_items_itab.
  2710|       IF COUNT GE 4.
  2711|         COLLECT ALL_MAT_ITAB.
  2712|         ALL_MAT_ITAB-FLAG = 'X'.
  2713|         MODIFY ALL_MAT_ITAB INDEX SY-TABIX TRANSPORTING FLAG .
  2714| *      ELSE.
  2715| *        append all_mat_itab.
  2716|       ENDIF.
  2717|     ENDIF.
  2718|   ENDLOOP.
  2719| 
  2720|   LOOP AT AUSGLOP_MAT_ITAB.
  2721|     IF AUSGLOP_MAT_ITAB NE SPACE.
  2722|       MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO ALL_ITEMS_ITAB.
  2723|       COLLECT ALL_ITEMS_ITAB.
  2724|     ENDIF.
  2725|   ENDLOOP.
  2726| 
  2727| 
  2728| * checking if currency conversion to KRW has been successfully done:
  2729| * the sum over all item values = document value
  2730| * if not then add the difference to first item when printing the
  2731| * tax invoice
  2732| * GET TOTALS...
  2733| 
  2734|   PERFORM GET_TOTALS.
  2735| 
  2736| * filling  all_items_sd_itab with only sd-data : to print
  2737| * in the first line the total amount from pure sd-data.
  2738| * to be printed in case of fi + sd data and number of materials  > 4.
  2739| 
  2740|   REFRESH ALL_ITEMS_SD_ITAB.
  2741| 
  2742|   LOOP AT AUSGLOP_MAT_ITAB.
  2743|     MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO ALL_ITEMS_SD_ITAB.
  2744|     COLLECT ALL_ITEMS_SD_ITAB.
  2745|   ENDLOOP.
  • EN: Aggregate materials from the fourth line onward into ALL_MAT_ITAB for the summary line, collect all items into ALL_ITEMS_ITAB, reconcile with FI totals via GET_TOTALS and build the SD-only totals table.
  • 호출(파서): GET_TOTALS
  • 업무 키워드: 품목 집계, 요약 라인, 합계 대사, SD 합계
  • English: COLLECT, Summary Line, Reconciliation, Totals
  • 정의부(복사 시 함께 필요): ALL_ITEMS_ITAB, ALL_MAT_ITAB, AUSGLOP_MAT_ITAB, LINE_COUNT, COUNT, AUGBL, ALL_ITEMS_SD_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L2697-L2745 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#REPRINT#C6

[control_flow] USER_EXIT3 로 고객사 가공을 거치고 사업장 주소 중복을 제거한 뒤 출력 옵션에 따라 리스트(LIST, PF-STATUS LIST2), 전체 리스트 인쇄(FULLLIST → LIST_OUTPUT), SAPscript 출력(SAP → SAP_SCRIPT)으로 분기한다.

  2747|   PERFORM USER_EXIT3.
  2748| 
  2749|   SORT BUPLA_ADRESSE BY BRANCH AUGBL.
  2750| 
  2751|   DELETE ADJACENT DUPLICATES FROM BUPLA_ADRESSE COMPARING BRANCH AUGBL
  2752|                   STCD2 STCD1.
  2753| 
  2754| * 출력옵션 체크 --------------------------------------------------------
  2755|   IF LIST = 'X'.
  2756|     SET PF-STATUS 'LIST2'.
  2757|     PERFORM USER_EXIT3.
  2758| 
  2759|   ELSEIF FULLLIST = 'X'.
  2760|     PERFORM LIST_OUTPUT.
  2761| 
  2762|   ELSEIF SAP = 'X'.
  2763|     PERFORM SAP_SCRIPT.
  2764|   ENDIF.
  • EN: Apply the user exit, dedupe business place addresses and branch by output option to list display, full list printing (LIST_OUTPUT) or SAPscript printing (SAP_SCRIPT).
  • 호출(파서): USER_EXIT3, USER_EXIT3, LIST_OUTPUT, SAP_SCRIPT
  • 업무 키워드: 출력 옵션, 리스트, SAPscript, User Exit
  • English: Output Option, List, SAPscript, User Exit
  • 정의부(복사 시 함께 필요): BUPLA_ADRESSE, AUGBL, LIST, FULLLIST, SAP
  • 위치: abap://ZFIR0141/ZFIR0141#L2747-L2764 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#REPRINT#C7

FORM FILL_CHECK_TABLE — ZFIR0141 L1502-L1553 (52줄)

출력 대상 전표마다 BKPF 로 원천 유형(AWTYP/AWKEY)을 확인하고 SD 빌링 원천이면 CHECK_ITAB 에 등록한 뒤 VBRK 의 빌링 유형·통화·환율 정보를 AUSGLOP_ITAB 에 채운다.

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

[sql_select] 회계전표 헤더 BKPF 를 읽어 다른 프로그램에서 호출된 경우 참조 트랜잭션 유형(AWTYP)·참조키(AWKEY)·현지통화(HWAER)를 AUSGLOP_ITAB 에 세팅한다.

  1511|     SELECT SINGLE * FROM BKPF WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1512|                                 AND BELNR = AUSGLOP_ITAB-BELNR
  1513|                                 AND GJAHR = AUSGLOP_ITAB-GJAHR.
  1514|     IF SY-SUBRC = 0.
  1515|       IF PROG_NAME NE SY-CPROG.
  1516|         MOVE BKPF-AWTYP TO AUSGLOP_ITAB-AWTYP.
  1517|         MOVE BKPF-AWKEY TO AUSGLOP_ITAB-AWKEY.
  1518|         MOVE BKPF-HWAER TO AUSGLOP_ITAB-HWAER.
  1519|       ENDIF.
  1520|     ENDIF.
  • EN: Read the accounting document header BKPF and, when called from another program, copy reference transaction type, reference key and local currency to AUSGLOP_ITAB.
  • 테이블(파서): read BKPF / write -
  • SAP 객체: BKPF
  • 업무 키워드: 회계전표 헤더, 참조 트랜잭션, 참조키, 현지통화
  • English: Accounting Document Header, Reference Transaction, AWKEY, Local Currency
  • 정의부(복사 시 함께 필요): BKPF, AUSGLOP_ITAB, PROG_NAME
  • 위치: abap://ZFIR0141/ZFIR0141#L1511-L1520 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#FILL_CHECK_TABLE#C1

[sql_select] 원천이 SD 빌링(VBRK)이면 CHECK_ITAB 에 회사코드·고객·세금계산서번호·사업자번호와 AWTYP_SD 를 등록하고 빌링 헤더 VBRK 에서 빌링번호·빌링유형·빌링일·통화·환율·환율유형(없으면 'M')·환율일을 AUSGLOP_ITAB 에 채운다.

  1522|     IF BKPF-AWTYP = 'VBRK'.
  1523|       MOVE BKPF-AWTYP TO CHECK_ITAB-AWTYP_SD.
  1524|       MOVE AUSGLOP_ITAB-BUKRS TO CHECK_ITAB-BUKRS.
  1525|       MOVE AUSGLOP_ITAB-KUNNR TO CHECK_ITAB-KUNNR.
  1526|       MOVE AUSGLOP_ITAB-AUGBL TO CHECK_ITAB-AUGBL.
  1527|       MOVE AUSGLOP_ITAB-STCD  TO CHECK_ITAB-STCD.
  1528|       APPEND CHECK_ITAB.
  1529| 
  1530| * getting sd-related data for the selected document from table VBRK
  1531|       SELECT  SINGLE * FROM VBRK WHERE VBELN = BKPF-AWKEY.
  1532| 
  1533|       IF SY-SUBRC = 0.
  1534|         MOVE VBRK-VBELN TO AUSGLOP_ITAB-VBELN.
  1535|         MOVE VBRK-FKART TO AUSGLOP_ITAB-FKART.
  1536|         MOVE VBRK-FKDAT TO AUSGLOP_ITAB-FKDAT.
  1537|         MOVE VBRK-FKTYP TO AUSGLOP_ITAB-FKTYP.
  1538|         MOVE VBRK-WAERK TO AUSGLOP_ITAB-WAERK.
  1539|         MOVE VBRK-KURRF TO AUSGLOP_ITAB-KURRF.
  1540|         IF VBRK-KURST <> ' '.
  1541|           MOVE VBRK-KURST TO AUSGLOP_ITAB-KURST.
  1542|         ELSE.
  1543|           AUSGLOP_ITAB-KURST = 'M'.
  1544|         ENDIF.
  1545|         MOVE VBRK-KURRF_DAT TO AUSGLOP_ITAB-KURRF_DAT.
  1546|       ENDIF.
  1547| *        ENDSELECT.
  1548|     ENDIF.
  1549|     MODIFY AUSGLOP_ITAB.
  • EN: For SD billing origin, register the row in CHECK_ITAB and read billing header VBRK to fill billing number, type, date, currency, exchange rate, rate type (default 'M') and rate date.
  • 테이블(파서): read VBRK / write AUSGLOP_ITAB
  • SAP 객체: VBRK
  • 업무 키워드: SD 빌링, 빌링 헤더, 환율, 환율유형, 통화, 세금계산서 체크 테이블
  • English: Billing Document, VBRK, Exchange Rate, Rate Type, Currency
  • 정의부(복사 시 함께 필요): BKPF, CHECK_ITAB, AUSGLOP_ITAB, VBRK
  • 위치: abap://ZFIR0141/ZFIR0141#L1522-L1549 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#FILL_CHECK_TABLE#C2

FORM GET_TAX_CODE — ZFIR0141 L891-L919 (29줄)

일회성 고객 전표의 BSEC 에서 사업자번호(STCD2 우선, 없으면 주민번호 STCD1)를 읽어 AUSGLOP_ITAB 과 CHECK_ITAB 의 STCD 에 세팅한다.

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

[sql_select] 전표의 일회성 고객 데이터 BSEC 를 읽어 STCD2(사업자번호) 가 있으면 그것을, 없으면 STCD1 을 세금 식별번호 STCD 로 AUSGLOP_ITAB 에 저장하고 동일 세금계산서의 CHECK_ITAB-STCD 에도 반영한다.

   898|     SELECT SINGLE * FROM BSEC WHERE BUKRS = AUSGLOP_ITAB-BUKRS
   899|                                 AND BELNR = AUSGLOP_ITAB-BELNR
   900|                                 AND GJAHR = AUSGLOP_ITAB-GJAHR.
   901|     IF SY-SUBRC = 0.
   902|       IF BSEC-STCD2 = ' '.
   903|         MOVE BSEC-STCD1 TO AUSGLOP_ITAB-STCD.
   904|       ELSE.
   905|         MOVE BSEC-STCD2 TO AUSGLOP_ITAB-STCD.
   906|       ENDIF.
   907|       MODIFY AUSGLOP_ITAB.
   908|       LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
   909|                            AND KUNNR = AUSGLOP_ITAB-KUNNR
   910|                            AND AUGBL = AUSGLOP_ITAB-AUGBL.
   911|         MOVE AUSGLOP_ITAB-STCD TO CHECK_ITAB-STCD.
   912|         MODIFY CHECK_ITAB.
   913|       ENDLOOP.
   914| 
   915|     ENDIF.
  • EN: Read one-time customer data BSEC and set the tax number (STCD2, else STCD1) as STCD on AUSGLOP_ITAB and the matching CHECK_ITAB rows.
  • 테이블(파서): read BSEC / write AUSGLOP_ITAB, CHECK_ITAB
  • SAP 객체: BSEC
  • 업무 키워드: 일회성 고객, 사업자등록번호, 주민등록번호, 세금 식별번호
  • English: One-Time Customer, BSEC, Tax Number
  • 정의부(복사 시 함께 필요): BSEC, AUSGLOP_ITAB, CHECK_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L898-L915 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#GET_TAX_CODE#C1

FORM CHECK_G_L_INDICATOR — ZFIR0141 L925-L956 (32줄)

출력 대상 전표의 BSEG 에서 특별 G/L 지시자(UMSKZ)를 읽어 AUSGLOP_ITAB 과 CHECK_ITAB(SAVE_UMSKZ)에 저장한다.

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

[sql_select] 전표(BUKRS/BELNR/GJAHR)의 BSEG 라인 중 특별 G/L 지시자가 있는 항목을 SELECT 하여 AUSGLOP_ITAB-UMSKZ 에 넣고 같은 세금계산서의 CHECK_ITAB-SAVE_UMSKZ 에도 반영해 선수금 등 특별 G/L 거래를 식별한다.

   932|     SELECT UMSKZ
   933|       FROM BSEG
   934|       INTO UMSKZ
   935|      WHERE BUKRS = AUSGLOP_ITAB-BUKRS
   936|        AND BELNR = AUSGLOP_ITAB-BELNR
   937|        AND GJAHR = AUSGLOP_ITAB-GJAHR
   938|        AND UMSKZ <> ' '.
   939| 
   940|       IF SY-SUBRC = 0.
   941|         MOVE UMSKZ TO AUSGLOP_ITAB-UMSKZ.
   942|         LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
   943|                            AND KUNNR = AUSGLOP_ITAB-KUNNR
   944|                            AND STCD = AUSGLOP_ITAB-STCD
   945|                            AND AUGBL = AUSGLOP_ITAB-AUGBL.
   946|           MOVE BSEG-UMSKZ TO CHECK_ITAB-SAVE_UMSKZ.
   947|           MODIFY CHECK_ITAB.
   948|         ENDLOOP.
   949|         MODIFY AUSGLOP_ITAB.
   950|       ENDIF.
   951|     ENDSELECT.
  • EN: Select non-blank special G/L indicators from BSEG for the document and store them in AUSGLOP_ITAB and CHECK_ITAB to identify special G/L transactions such as down payments.
  • 테이블(파서): read BSEG / write CHECK_ITAB, AUSGLOP_ITAB
  • SAP 객체: BSEG
  • 업무 키워드: 특별 G/L 지시자, 선수금, 전표 라인, 세금계산서 체크
  • English: Special G/L Indicator, Down Payment, BSEG
  • 정의부(복사 시 함께 필요): UMSKZ, BSEG, AUSGLOP_ITAB, CHECK_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L932-L951 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#CHECK_G_L_INDICATOR#C1

FORM GET_BUPLA — ZFIR0141 L1562-L1633 (72줄)

세금계산서 발행 사업장(BUPLA)의 주소와 J_1BBRANCH 사업장 마스터(대표자·업태·업종)를 읽어 BUPLA_ADRESSE 에 세금계산서번호와 함께 추가한다.

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

[fm_call] FM GET_BUPLA_ADDRESS 로 회사코드·사업장의 주소를 받아 BUPLA_ADRESSE 에 옮기고 J_1BBRANCH 에서 사업장 마스터(명칭·대표자 KR_REPRES·업태·업종·사업자번호)를 읽어 합친 뒤 발행일과 세금계산서번호(AUGBL)를 붙여 APPEND 한다.

  1567|   CALL FUNCTION 'GET_BUPLA_ADDRESS'
  1568|     EXPORTING
  1569|       BUKRS   = SBUKRS
  1570|       BUPLA   = AUSGLOP_ITAB-BUPLA
  1571|     IMPORTING
  1572|       ADRESSE = ADRESSE.
  1573| 
  1574|   MOVE-CORRESPONDING ADRESSE TO BUPLA_ADRESSE.
  1575| 
  1576|   SELECT SINGLE * FROM J_1BBRANCH WHERE BUKRS = SBUKRS
  1577|                            AND BRANCH = AUSGLOP_ITAB-BUPLA.
  1578|   IF SY-SUBRC = 0.
  1579| 
  1580|     MOVE-CORRESPONDING J_1BBRANCH TO BUPLA_ADRESSE.
  1581| **   clear BUPLA_adresse-name1
  1582| *     bupla_adress-name1 = '(주)보루네오가구'.
  1583| 
  1584| 
  1585| *    CLEAR BUPLA_ADRESSE-KR_REPRES.
  1586| 
  1587| ** "세금계산서 처음출력시 대표자 출력조건 2004.11.27 수정
  1588| *    IF PROG_NAME = 'YFIR0601'.
  1589| *
  1590| *      WA_ITAB2-BUDAT1 =  AUSGLOP_ITAB-BUDAT .
  1591| *
  1592| *    ELSE.  "세금계산서 재인쇄시 로직
  1593| *
  1594| *
  1595| *      LOOP AT AUSGLOP_ITAB2 WHERE AUGBL = AUSGLOP_ITAB-AUGBL
  1596| *                              AND CHECK = 'X' .
  1597| *        SY-TABIX = 1.
  1598| *        WA_ITAB2-BUDAT1 = AUSGLOP_ITAB2-BUDAT1.
  1599| *        EXIT.
  1600| *      ENDLOOP.
  1601| *    ENDIF.
  1602| *     read table  ausglop_itab2 into wa_itab2 with key augbl =
  1603| *        ausglop_itab-augbl.
  1604| *      if sy-subrc = 0.
  1605| *        move wa_itab2-budat1 to ausglop_itab2-budat1.
  1606| *      endif.
  1607| 
  1608| * bif용 주석처리
  1609| *    IF WA_ITAB2-BUDAT1 <= '20040417' .
  1610| *      BUPLA_ADRESSE-KR_REPRES = '임창빈'.
  1611| *      MOVE WA_ITAB2-BUDAT1 TO BUPLA_ADRESSE-BUDAT1.
  1612| *      MOVE AUSGLOP_ITAB-AUGBL TO BUPLA_ADRESSE-AUGBL.
  1613| *    ELSEIF WA_ITAB2-BUDAT1 >= '20040418' .
  1614| *      BUPLA_ADRESSE-KR_REPRES = '한순현'.
  1615| *      MOVE WA_ITAB2-BUDAT1 TO  BUPLA_ADRESSE-BUDAT1.
  1616| *      MOVE AUSGLOP_ITAB-AUGBL TO BUPLA_ADRESSE-AUGBL.
  1617| *    ENDIF.
  1618| 
  1619|     MOVE WA_ITAB2-BUDAT1 TO  BUPLA_ADRESSE-BUDAT1.
  1620|     MOVE AUSGLOP_ITAB-AUGBL TO BUPLA_ADRESSE-AUGBL.
  1621| 
  1622|     APPEND BUPLA_ADRESSE.
  1623| 
  1624|     CLEAR WA_ITAB2.
  1625|     BUPLA = J_1BBRANCH-BRANCH.
  1626|   ENDIF.
  • EN: Get the business place address via FM GET_BUPLA_ADDRESS, merge business place master data from J_1BBRANCH (name, representative, business/industry type) and append to BUPLA_ADRESSE with the tax invoice number.
  • 테이블(파서): read J_1BBRANCH / write -
  • 호출(파서): GET_BUPLA_ADDRESS
  • SAP 객체: GET_BUPLA_ADDRESS, J_1BBRANCH
  • 업무 키워드: 사업장 주소, 사업장 마스터, 대표자, 업태, 업종, 공급자 정보
  • English: Business Place, J_1BBRANCH, GET_BUPLA_ADDRESS, Supplier
  • 정의부(복사 시 함께 필요): SBUKRS, AUSGLOP_ITAB, ADRESSE, BUPLA_ADRESSE, J_1BBRANCH, AUSGLOP_ITAB2, WA_ITAB2, BUPLA
  • 위치: abap://ZFIR0141/ZFIR0141#L1567-L1626 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#GET_BUPLA#C1

FORM GET_ADDRESS — ZFIR0141 L1642-L1661 (20줄)

출력 대상 각 고객의 KNA1 을 조회해 일회성 고객 여부(XCPDK)에 따라 마스터 주소 또는 BSEC 일회성 주소를 ADDRESS_ITAB 에 채운다.

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

[sql_select] 선택된 AUSGLOP_ITAB 항목마다 고객 마스터 KNA1 을 SELECT SINGLE 하고 XCPDK 가 아니면 GET_ADDRESS_OF_CUSTOMER, 일회성 고객이면 GET_ADDRESS_OF_CPD_CUSTOMER 로 주소 정보를 수집한다.

  1644|   LOOP AT AUSGLOP_ITAB.
  1645| 
  1646|     IF PROG_NAME = ' '.
  1647|       CHECK AUSGLOP_ITAB-CHECK = 'X'.
  1648|     ENDIF.
  1649| *    IF ausglop_itab-filkd = ' '.
  1650|     SELECT SINGLE   * FROM KNA1 WHERE KUNNR = AUSGLOP_ITAB-KUNNR.
  1651| 
  1652| 
  1653|     IF KNA1-XCPDK <> 'X'.
  1654|       PERFORM GET_ADDRESS_OF_CUSTOMER.
  1655|     ELSE.
  1656|       PERFORM GET_ADDRESS_OF_CPD_CUSTOMER.
  1657|     ENDIF.
  1658|   ENDLOOP.
  • EN: For each selected row read KNA1 and collect the address via the customer master or one-time customer routine depending on XCPDK.
  • 테이블(파서): read KNA1 / write -
  • 호출(파서): GET_ADDRESS_OF_CUSTOMER, GET_ADDRESS_OF_CPD_CUSTOMER
  • SAP 객체: KNA1
  • 업무 키워드: 고객 마스터 조회, 일회성 고객, 주소 수집
  • English: Customer Master, One-Time Customer, Address
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, PROG_NAME, KNA1
  • 위치: abap://ZFIR0141/ZFIR0141#L1644-L1658 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#GET_ADDRESS#C1

FORM GET_ADDRESS_OF_CUSTOMER — ZFIR0141 L4060-L4085 (26줄)

고객 마스터 KNA1 의 주소·사업자번호·업태·업종·대표자·주소번호를 ADDRESS_ITAB 에 고객당 1건 추가한다.

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

[calculation] KNA1 의 이름·우편번호·주소·도시·업태(J_1KFTBUS)·업종(J_1KFTIND)·대표자(J_1KFREPRE)·STCD1/STCD2·주소번호(ADRNR)를 ADDRESS_ITAB 에 옮기고 사업자번호(STCD2 우선, 없으면 STCD1)를 STCD 로 정한 뒤 동일 고객이 없을 때만 APPEND 한다.

  4062|   MOVE KNA1-KUNNR      TO ADDRESS_ITAB-KUNNR.
  4063|   MOVE KNA1-NAME1      TO ADDRESS_ITAB-NAME.
  4064|   MOVE KNA1-PSTLZ      TO ADDRESS_ITAB-PSTLZ.
  4065|   MOVE KNA1-STRAS      TO ADDRESS_ITAB-STRAS.
  4066|   MOVE KNA1-ORT01      TO ADDRESS_ITAB-ORT01.
  4067|   MOVE KNA1-ORT02      TO ADDRESS_ITAB-ORT02.
  4068|   MOVE KNA1-J_1KFTBUS  TO ADDRESS_ITAB-BUSTYP.
  4069|   MOVE KNA1-J_1KFTIND  TO ADDRESS_ITAB-INDTYP.
  4070|   MOVE KNA1-J_1KFREPRE TO ADDRESS_ITAB-REPRE.
  4071|   MOVE KNA1-STCD1      TO ADDRESS_ITAB-STCD1.
  4072|   MOVE KNA1-STCD2      TO ADDRESS_ITAB-STCD2.
  4073|   MOVE KNA1-ADRNR      TO ADDRESS_ITAB-ADRNR.   " smartbill 2006.07.24
  4074|   IF KNA1-STCD2 = ' '.
  4075|     MOVE KNA1-STCD1 TO ADDRESS_ITAB-STCD.
  4076|   ELSE.
  4077|     MOVE KNA1-STCD2 TO ADDRESS_ITAB-STCD.
  4078|   ENDIF.
  4079|   READ TABLE ADDRESS_ITAB WITH KEY KUNNR = KNA1-KUNNR.
  4080|   IF SY-SUBRC <> 0.
  4081| *      AT NEW kunnr.
  4082|     APPEND ADDRESS_ITAB.
  4083|   ENDIF.
  • EN: Copy customer master address, Korean tax fields (business type, industry type, representative), tax numbers and address number from KNA1 into ADDRESS_ITAB once per customer.
  • SAP 객체: KNA1
  • 업무 키워드: 고객 마스터, 주소, 사업자등록번호, 업태, 업종, 대표자
  • English: Customer Master, KNA1, Tax Number, Address
  • 정의부(복사 시 함께 필요): KNA1, ADDRESS_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L4062-L4083 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#GET_ADDRESS_OF_CUSTOMER#C1

FORM GET_ADDRESS_OF_CPD_CUSTOMER — ZFIR0141 L4095-L4136 (42줄)

일회성 고객(CPD)의 주소·사업자번호·업태·업종·대표자를 전표의 일회성 고객 데이터 BSEC 에서 읽어 ADDRESS_ITAB 에 추가하고 AUSGLOP_ITAB/CHECK_ITAB 의 STCD·XCPDK 를 갱신한다.

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

[sql_select] 전표(BUKRS/BELNR/GJAHR)의 일회성 고객 데이터 BSEC 를 읽어 이름·도시·우편번호·주소·STCD1/STCD2·업태(J_1KFTBUS)·업종(J_1KFTIND)·대표자(J_1KFREPRE)를 ADDRESS_ITAB 에 APPEND 하고, 사업자번호(STCD2 우선, 없으면 STCD1)를 AUSGLOP_ITAB 과 CHECK_ITAB 의 STCD 에 반영하며 XCPDK='X' 로 일회성 고객임을 표시한다.

  4100|   SELECT * FROM BSEC WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4101|                        AND BELNR = AUSGLOP_ITAB-BELNR
  4102|                        AND GJAHR = AUSGLOP_ITAB-GJAHR.
  4103|     IF SY-SUBRC = 0.
  4104|       MOVE AUSGLOP_ITAB-BUKRS TO ADDRESS_ITAB-BUKRS.
  4105|       MOVE AUSGLOP_ITAB-KUNNR TO ADDRESS_ITAB-KUNNR.
  4106|       MOVE BSEC-NAME1 TO ADDRESS_ITAB-NAME.
  4107|       MOVE BSEC-ORT01 TO ADDRESS_ITAB-ORT01.
  4108|       MOVE BSEC-PSTLZ TO ADDRESS_ITAB-PSTLZ.
  4109|       MOVE BSEC-STRAS TO ADDRESS_ITAB-STRAS.
  4110|       MOVE BSEC-STCD1 TO ADDRESS_ITAB-STCD1.
  4111|       MOVE BSEC-STCD2 TO ADDRESS_ITAB-STCD2.
  4112|       IF BSEC-STCD2 = ' '.
  4113|         MOVE BSEC-STCD1 TO AUSGLOP_ITAB-STCD.
  4114|       ELSE.
  4115|         MOVE BSEC-STCD2 TO AUSGLOP_ITAB-STCD.
  4116|       ENDIF.
  4117| 
  4118|       MOVE AUSGLOP_ITAB-STCD TO ADDRESS_ITAB-STCD.
  4119| 
  4120|       LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4121|                           AND KUNNR = AUSGLOP_ITAB-KUNNR
  4122|                           AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4123|         MOVE AUSGLOP_ITAB-STCD TO CHECK_ITAB-STCD.
  4124|         AUSGLOP_ITAB-XCPDK = 'X'.
  4125|         MODIFY CHECK_ITAB.
  4126|       ENDLOOP.
  4127| 
  4128|       MOVE BSEC-J_1KFTBUS  TO ADDRESS_ITAB-BUSTYP.
  4129|       MOVE BSEC-J_1KFTIND  TO ADDRESS_ITAB-INDTYP.
  4130|       MOVE BSEC-J_1KFREPRE TO ADDRESS_ITAB-REPRE.
  4131|       APPEND ADDRESS_ITAB.
  4132|       MODIFY AUSGLOP_ITAB.
  4133|     ENDIF.
  4134|   ENDSELECT.
  • EN: Read one-time customer data from BSEC for the document, append address, tax numbers, business/industry type and representative to ADDRESS_ITAB, and set STCD and XCPDK on AUSGLOP_ITAB and CHECK_ITAB.
  • 테이블(파서): read BSEC / write CHECK_ITAB, AUSGLOP_ITAB
  • SAP 객체: BSEC
  • 업무 키워드: 일회성 고객, 주소, 사업자등록번호, 업태, 업종, 대표자
  • English: One-Time Customer, BSEC, Tax Number, Address
  • 정의부(복사 시 함께 필요): BSEC, AUSGLOP_ITAB, ADDRESS_ITAB, CHECK_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L4100-L4134 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#GET_ADDRESS_OF_CPD_CUSTOMER#C1

FORM FILL_TABLES — ZFIR0141 L1670-L1871 (202줄)

출력 대상 세금계산서의 품목 테이블(AUSGLOP_MAT_ITAB)·항목 합계(ALL_ITEMS_ITAB/ALL_ITEMS_FI_ITAB)·특별G/L 라인 정보(CHECK_ITAB, MATZEIL4_ITAB)를 SD 빌링(VBRP)과 FI 전표로부터 채운다.

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

[control_flow] FI 전표(BKPF) 원천 항목에 대해 CHECK_TEXT 를 호출해 전표 텍스트에서 자재·단위·수량을 파싱하여 SD 유형 품목으로 변환한다.

  1675|   LOOP AT AUSGLOP_ITAB WHERE AWTYP = 'BKPF'.
  1676|     IF PROG_NAME = ' '.
  1677|       CHECK AUSGLOP_ITAB-CHECK = 'X'.
  1678|     ENDIF.
  1679|     PERFORM CHECK_TEXT.
  1680|   ENDLOOP.
  • EN: For FI-originated rows, call CHECK_TEXT to parse material/unit/quantity from the line item text.
  • 호출(파서): CHECK_TEXT
  • SAP 객체: BKPF
  • 업무 키워드: FI 전표, 전표 텍스트 파싱, 품목 변환
  • English: FI Document, Line Item Text, Material
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, PROG_NAME
  • 위치: abap://ZFIR0141/ZFIR0141#L1675-L1680 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C1

[sql_select] SD 빌링(VBRK) 항목은 빌링 품목 VBRP 를 수량 0 제외로 읽어 자재·품목텍스트·단위·수량을 옮기고 특소세(KZWI2) 보정, 대변(FAREG 4/5) 부호 반전, CONVERT_TO_LOCAL_CURRENCY 현지통화 환산, 반품(SHKZG='S') 부호 반전 후 AUSGLOP_MAT_ITAB 에 COLLECT 하고 IT_VBRP 에 전기일·세금계산서번호와 함께 보관하며 품목 수 LINE_COUNT 를 센다.

  1688|     IF AUSGLOP_ITAB-AWTYP = 'VBRK' AND AUSGLOP_ITAB-FLAG = ' '.
  1689|       MOVE-CORRESPONDING AUSGLOP_ITAB TO AUSGLOP_MAT_ITAB.
  1690| 
  1691|       SELECT * FROM VBRP WHERE VBELN = AUSGLOP_ITAB-VBELN
  1692|                            AND FKIMG <> '0'.
  1693|         CLEAR AUSGLOP_MAT_ITAB-FKIMG.
  1694| 
  1695|         MOVE VBRP-MATNR TO AUSGLOP_MAT_ITAB-MATNR.
  1696| *       Material description
  1697|         MOVE VBRP-ARKTX TO AUSGLOP_MAT_ITAB-ARKTX.
  1698| *       MOVE vbrp-fkimg TO ausglop_mat_itab-fkimg.
  1699|         MOVE VBRP-VRKME TO AUSGLOP_MAT_ITAB-VRKME.
  1700| * 특소세가 있을 경우 20060424 sms
  1701|         IF NOT VBRP-KZWI2 IS INITIAL.
  1702|           VBRP-NETWR = VBRP-NETWR + VBRP-KZWI2.   "정가+
  1703|           VBRP-MWSBP = VBRP-MWSBP - VBRP-KZWI2.   "세액-
  1704|         ENDIF.
  1705| * 특소세가 있을 경우 
  1706| 
  1707|         IF VBRP-FAREG = 4 OR VBRP-FAREG = 5.
  1708|           VBRP-NETWR = VBRP-NETWR * -1.
  1709|           VBRP-MWSBP = VBRP-MWSBP * -1.
  1710|         ELSE.
  1711|           MOVE VBRP-FKIMG TO AUSGLOP_MAT_ITAB-FKIMG.
  1712|         ENDIF.
  1713| 
  1714|         MOVE VBRP-NETWR TO AUSGLOP_MAT_ITAB-NETWR.
  1715|         MOVE VBRP-MWSBP TO AUSGLOP_MAT_ITAB-MWSBP.
  1716| *       정가, 세액의 통화단위 변환
  1717|         PERFORM CONVERT_TO_LOCAL_CURRENCY.
  1718| 
  1719|         MOVE AUSGLOP_MAT_ITAB-NETWR TO AUSGLOP_MAT_ITAB-HWBAS.
  1720|         MOVE AUSGLOP_MAT_ITAB-MWSBP TO AUSGLOP_MAT_ITAB-MWSBP.
  1721| 
  1722| * in case of a material return
  1723|         IF AUSGLOP_ITAB-SHKZG = 'S'.
  1724|           AUSGLOP_MAT_ITAB-NETWR = ( -1 ) * AUSGLOP_MAT_ITAB-NETWR.
  1725|           AUSGLOP_MAT_ITAB-MWSBP = ( -1 ) * AUSGLOP_MAT_ITAB-MWSBP.
  1726|           AUSGLOP_MAT_ITAB-FKIMG = ( -1 ) * AUSGLOP_MAT_ITAB-FKIMG.
  1727|         ENDIF.
  1728|         COLLECT AUSGLOP_MAT_ITAB.
  1729|       ENDSELECT.
  1730| 
  1731|       SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING.
  1732| 
  1733|       SELECT * FROM VBRP WHERE VBELN = AUSGLOP_ITAB-VBELN
  1734|                                      AND FKIMG <> '0'.
  1735|         MOVE-CORRESPONDING VBRP  TO IT_VBRP.
  1736|         MOVE AUSGLOP_ITAB-BUDAT  TO IT_VBRP-BUDAT.
  1737|         MOVE AUSGLOP_ITAB-AUGBL  TO IT_VBRP-AUGBL.
  1738|         APPEND IT_VBRP.
  1739|       ENDSELECT.
  1740| 
  1741| * number of item lines in ausglop_mat_itab --> number of sold materials
  1742|       LINE_COUNT = 0.
  1743|       LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1744|                                  AND KUNNR = AUSGLOP_ITAB-KUNNR
  1745|                                  AND STCD  = AUSGLOP_ITAB-STCD
  1746|                                  AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1747|         LINE_COUNT = LINE_COUNT + 1.
  1748|       ENDLOOP.
  • EN: For SD billing rows, read billing items VBRP, adjust for special consumption tax (KZWI2), reverse sign for credit memos (FAREG 4/5) and returns (SHKZG='S'), convert to local currency and COLLECT into AUSGLOP_MAT_ITAB; keep VBRP rows with posting date and count material lines.
  • 테이블(파서): read VBRP / write -
  • 호출(파서): CONVERT_TO_LOCAL_CURRENCY
  • SAP 객체: VBRP, CONVERT_TO_LOCAL_CURRENCY
  • 업무 키워드: 빌링 품목, 특소세, 대변 메모, 반품, 현지통화 환산, 품목 집계
  • English: Billing Item, VBRP, Credit Memo, Returns, Currency Conversion, COLLECT
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, AUSGLOP_MAT_ITAB, VBRP, AUGBL, IT_VBRP, LINE_COUNT
  • 위치: abap://ZFIR0141/ZFIR0141#L1688-L1748 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C2

[aggregation] FI 전표(BKPF) 항목은 현지통화 공급가액(HWBAS)·세액(HWSTE)을 NETWR/MWSBP 로 하여 전표번호 단위로 ALL_ITEMS_ITAB 과 ALL_ITEMS_FI_ITAB 에 COLLECT 하여 세금계산서별 FI 합계를 만든다.

  1751|     ELSEIF AUSGLOP_ITAB-AWTYP = 'BKPF'.
  1752|       MOVE-CORRESPONDING AUSGLOP_ITAB TO ALL_ITEMS_ITAB.
  1753|       MOVE AUSGLOP_ITAB-HWBAS         TO ALL_ITEMS_ITAB-NETWR.
  1754|       MOVE AUSGLOP_ITAB-HWSTE         TO ALL_ITEMS_ITAB-MWSBP.
  1755| 
  1756|       AT NEW BELNR.
  1757|         COLLECT ALL_ITEMS_ITAB.
  1758|       ENDAT.
  1759|     ENDIF.
  1760| 
  1761| * if cleared documents are sd-documents and fi-documents or pure FI-data
  1762| * sum over tax amount and base amount
  1763| 
  1764|     IF AUSGLOP_ITAB-AWTYP = 'BKPF'.
  1765|       MOVE AUSGLOP_ITAB-BUKRS   TO ALL_ITEMS_FI_ITAB-BUKRS.
  1766|       MOVE AUSGLOP_ITAB-KUNNR   TO ALL_ITEMS_FI_ITAB-KUNNR.
  1767|       MOVE AUSGLOP_ITAB-STCD    TO ALL_ITEMS_FI_ITAB-STCD.
  1768|       MOVE AUSGLOP_ITAB-AUGBL   TO ALL_ITEMS_FI_ITAB-AUGBL.
  1769|       MOVE ALL_ITEMS_ITAB-HWBAS TO ALL_ITEMS_FI_ITAB-NETWR.
  1770|       MOVE ALL_ITEMS_ITAB-HWSTE TO ALL_ITEMS_FI_ITAB-MWSBP.
  1771|       AT NEW BELNR.
  1772|         COLLECT ALL_ITEMS_FI_ITAB.
  1773|       ENDAT.
  1774|     ENDIF.
  • EN: For FI documents, COLLECT tax base and tax amount per document into ALL_ITEMS_ITAB and ALL_ITEMS_FI_ITAB as tax invoice totals.
  • SAP 객체: BKPF
  • 업무 키워드: FI 합계, 공급가액, 세액, 전표 집계
  • English: FI Document, Tax Base, Tax Amount, COLLECT
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, ALL_ITEMS_ITAB, ALL_ITEMS_FI_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L1751-L1774 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C3

[sql_select] 세금계산서 번호가 바뀔 때 CHECK_ITAB 별로 저장된 특별 G/L 지시자(SAVE_UMSKZ)와 다른 FI 라인 수 LINE_COUNT2 를 세고, FI 원천이면 4번째 라인용 MATZEIL4_ITAB 을 만들되 특별 G/L 이 하나면 T074T 의 지시자 텍스트(LTEXT)를, 아니면 TEXT-030 을 품목명으로 넣는다.

  1777|     AT NEW AUGBL.
  1778|       IF AUSGLOP_ITAB-AUGBL NE  AUGBL.
  1779|         CLEAR CHECK_ITAB.
  1780|         LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1781|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  1782|                              AND STCD  = AUSGLOP_ITAB-STCD
  1783|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1784| 
  1785|           CHECK_ITAB-LINE_COUNT2 = 0.
  1786| 
  1787|           LOOP AT AUSGLOP_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1788|                                  AND KUNNR = AUSGLOP_ITAB-KUNNR
  1789|                                  AND STCD  = AUSGLOP_ITAB-STCD
  1790|                                  AND AUGBL = AUSGLOP_ITAB-AUGBL
  1791|                                  AND UMSKZ <> CHECK_ITAB-SAVE_UMSKZ
  1792|                                  AND AWTYP = 'BKPF'.
  1793| 
  1794|             CHECK_ITAB-LINE_COUNT2 = CHECK_ITAB-LINE_COUNT2 + 1.
  1795|           ENDLOOP.
  1796|           MODIFY CHECK_ITAB.
  1797|         ENDLOOP.
  1798| 
  1799| * Filling matzeil4_itab for printing the fourth line
  1800|         LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1801|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  1802|                              AND STCD  = AUSGLOP_ITAB-STCD
  1803|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1804| 
  1805|           IF CHECK_ITAB-AWTYP_FI = 'BKPF'.
  1806|             MOVE AUSGLOP_ITAB-BUKRS TO MATZEIL4_ITAB-BUKRS.
  1807|             MOVE AUSGLOP_ITAB-KUNNR TO MATZEIL4_ITAB-KUNNR.
  1808|             MOVE AUSGLOP_ITAB-STCD  TO MATZEIL4_ITAB-STCD.
  1809|             MOVE AUSGLOP_ITAB-AUGBL TO MATZEIL4_ITAB-AUGBL.
  1810| 
  1811| * check if a special g_l indicator exists.
  1812|             IF CHECK_ITAB-SAVE_UMSKZ <> ' '.
  1813| * if exactly one special g_l indicator
  1814|               IF CHECK_ITAB-LINE_COUNT2 = 0.
  1815|                 SELECT SINGLE * FROM T074T WHERE SPRAS = T001-SPRAS
  1816| *                                      AND koart = bseg-koart
  1817|                                       AND KOART = 'D'
  1818|                                       AND SHBKZ = CHECK_ITAB-SAVE_UMSKZ.
  1819|                 MOVE T074T-LTEXT TO MATZEIL4_ITAB-MATNR.
  1820| * if more than one special g_l indicator
  1821|               ELSE.
  1822|                 MOVE TEXT-030 TO MATZEIL4_ITAB-MATNR.
  1823|               ENDIF.
  1824|             ELSE.
  1825|               MOVE TEXT-030 TO MATZEIL4_ITAB-MATNR.
  1826|             ENDIF.
  1827| *proposed design...
  1828|             READ TABLE MATZEIL4_ITAB WITH KEY BUKRS = CHECK_ITAB-BUKRS
  1829|                                               KUNNR = CHECK_ITAB-KUNNR
  1830|                                               AUGBL = CHECK_ITAB-AUGBL.
  1831|             IF SY-SUBRC NE 0.
  1832|               APPEND MATZEIL4_ITAB.
  1833|             ENDIF.
  1834| *end of proposed design.
  1835|           ENDIF.
  1836|         ENDLOOP.
  1837|       ENDIF.
  1838|     ENDAT.
  • EN: At each new tax invoice, count FI lines with a different special G/L indicator and build MATZEIL4_ITAB for the fourth line using the T074T special G/L text or TEXT-030.
  • 테이블(파서): read T074T / write CHECK_ITAB
  • SAP 객체: T074T, T001
  • 업무 키워드: 특별 G/L 지시자, 4번째 라인, 지시자 텍스트, 라인 수
  • English: Special G/L Indicator, T074T, Item Line 4
  • 정의부(복사 시 함께 필요): AUGBL, AUSGLOP_ITAB, CHECK_ITAB, UMSKZ, MATZEIL4_ITAB, T074T, T001
  • 위치: abap://ZFIR0141/ZFIR0141#L1777-L1838 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C4

[calculation] IT_VBRP 를 자재·전기일로 정렬하고 각 품목(AUSGLOP_MAT_ITAB)에 동일 자재·세금계산서번호의 전기일을 YYYYMMDD 로 세팅한 뒤 세금계산서번호·일자·자재 순으로 정렬한다.

  1842|   SORT IT_VBRP BY MATNR BUDAT.
  1843|   DATA : L_MATNR LIKE VBRP-MATNR. CLEAR L_MATNR.
  1844| *  LOOP AT it_vbrp.
  1845| *    IF it_vbrp-matnr = l_matnr.
  1846| *      DELETE it_vbrp.
  1847| *    ENDIF.
  1848| *    MOVE it_vbrp-matnr TO l_matnr.
  1849| *  ENDLOOP.
  1850| 
  1851| 
  1852| 
  1853|   LOOP AT AUSGLOP_MAT_ITAB.
  1854| 
  1855|     READ TABLE IT_VBRP WITH KEY MATNR = AUSGLOP_MAT_ITAB-MATNR
  1856|                                 AUGBL = AUSGLOP_MAT_ITAB-AUGBL.
  1857|     IF SY-SUBRC EQ 0.
  1858| 
  1859|       MOVE IT_VBRP-BUDAT TO AUSGLOP_MAT_ITAB-YYYYMMDD.
  1860| 
  1861|     ENDIF.
  1862|     MODIFY AUSGLOP_MAT_ITAB.
  1863|     CLEAR AUSGLOP_MAT_ITAB.
  1864|   ENDLOOP.
  1865| 
  1866| 
  1867| *  SORT ausglop_mat_itab BY augbl yyyymmdd matnr ASCENDING.
  1868|   SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING.
  • EN: Assign the posting date of the matching VBRP row to each material line as YYYYMMDD and sort AUSGLOP_MAT_ITAB by invoice number, date and material.
  • 테이블(파서): read - / write AUSGLOP_MAT_ITAB
  • 업무 키워드: 전기일 매핑, 품목 정렬, 세금계산서 품목
  • English: Posting Date, Sort, Material Line
  • 정의부(복사 시 함께 필요): IT_VBRP, AUSGLOP_MAT_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L1842-L1868 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#FILL_TABLES#C5

FORM CHECK_TEXT — ZFIR0141 L2269-L2357 (89줄)

FI 전표의 항목 텍스트(BSEG-SGTXT)를 '자재,단위,수량' 형식으로 파싱하여 SD 빌링처럼 취급할 품목 정보를 AUSGLOP_MAT_ITAB 에 만들고 원천 유형을 VBRK 로 표시한다.

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

[sql_select] 전표(BUKRS/BELNR/GJAHR)의 비어 있지 않은 항목 텍스트 SGTXT 를 BSEG 에서 읽고 FM STRING_SPLIT 을 ',' 구분자로 3번 호출해 자재(MATERIAL)·단위(UNIT)·수량(QTY)을 분리한다.

  2275|   SELECT SINGLE  SGTXT INTO  SGTXT FROM BSEG
  2276|                       WHERE
  2277|                       BUKRS =    AUSGLOP_ITAB-BUKRS
  2278|                       AND BELNR = AUSGLOP_ITAB-BELNR
  2279|                       AND GJAHR = AUSGLOP_ITAB-GJAHR
  2280|                       AND SGTXT NE ' '.
  2281| 
  2282| 
  2283|   WRITE  SGTXT LEFT-JUSTIFIED TO SGTXT.
  2284|   CALL FUNCTION 'STRING_SPLIT'
  2285|     EXPORTING
  2286|       DELIMITER = ','
  2287|       STRING    = SGTXT
  2288|     IMPORTING
  2289|       HEAD      = MATERIAL
  2290|       TAIL      = BAL_TEXT
  2291|     EXCEPTIONS
  2292|       NOT_FOUND = 1
  2293|       NOT_VALID = 2
  2294|       TOO_LONG  = 3
  2295|       TOO_SMALL = 4.
  2296|   IF SY-SUBRC = 0.
  2297|     WRITE BAL_TEXT LEFT-JUSTIFIED TO BAL_TEXT.
  2298|     CALL FUNCTION 'STRING_SPLIT'
  2299|       EXPORTING
  2300|         DELIMITER = ','
  2301|         STRING    = BAL_TEXT
  2302|       IMPORTING
  2303|         HEAD      = UNIT
  2304|         TAIL      = BAL_TEXT
  2305|       EXCEPTIONS
  2306|         NOT_FOUND = 1
  2307|         NOT_VALID = 2
  2308|         TOO_LONG  = 3
  2309|         TOO_SMALL = 4.
  2310| 
  2311|     IF SY-SUBRC = 0.
  2312| *     write bal_text left-justified to bal_text.
  2313|       CALL FUNCTION 'STRING_SPLIT'
  2314|         EXPORTING
  2315|           DELIMITER = ','
  2316|           STRING    = BAL_TEXT
  2317|         IMPORTING
  2318|           HEAD      = QTY
  2319|           TAIL      = BAL_TEXT
  2320|         EXCEPTIONS
  2321|           NOT_FOUND = 1
  2322|           NOT_VALID = 2
  2323|           TOO_LONG  = 3
  2324|           TOO_SMALL = 4.
  2325| 
  • EN: Read the non-empty line item text SGTXT from BSEG and split it by comma with FM STRING_SPLIT into material, unit and quantity.
  • 테이블(파서): read BSEG / write -
  • 호출(파서): STRING_SPLIT, STRING_SPLIT, STRING_SPLIT
  • SAP 객체: BSEG, STRING_SPLIT
  • 업무 키워드: 전표 항목 텍스트, 자재, 단위, 수량, 문자열 분리
  • English: Line Item Text, BSEG, STRING_SPLIT, Material, Quantity
  • 정의부(복사 시 함께 필요): SGTXT, BSEG, AUSGLOP_ITAB, MATERIAL, BAL_TEXT, UNIT, QTY
  • 위치: abap://ZFIR0141/ZFIR0141#L2275-L2325 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#CHECK_TEXT#C1

[calculation] 파싱에 성공하면 해당 항목을 SD 빌링(AWTYP='VBRK', FLAG='X')으로 표시하고 자재·단위·수량(소수 3자리 보정 ×1000)·공급가액(HWBAS)·세액(HWSTE)을 AUSGLOP_MAT_ITAB 에 COLLECT 하며 CHECK_ITAB 의 AWTYP_SD 를 VBRK 로 갱신한다.

  2326|       IF SY-SUBRC = 0.
  2327| 
  2328|         WRITE BAL_TEXT LEFT-JUSTIFIED TO BAL_TEXT.
  2329| *      ausglop_itab-matnr = material.
  2330| *      ausglop_itab-vrkme = unit.
  2331| *      ausglop_itab-fkmig = qty.
  2332|         AUSGLOP_ITAB-AWTYP = 'VBRK'.
  2333|         AUSGLOP_ITAB-FLAG = 'X'.
  2334|         MODIFY AUSGLOP_ITAB.
  2335|         MOVE-CORRESPONDING AUSGLOP_ITAB TO AUSGLOP_MAT_ITAB.
  2336|         AUSGLOP_MAT_ITAB-MATNR = MATERIAL.
  2337|         AUSGLOP_MAT_ITAB-VRKME = UNIT.
  2338| *offset 3 decimal places in domain of fkimg...
  2339|         QTY = QTY * 1000.
  2340|         AUSGLOP_MAT_ITAB-FKIMG = QTY.
  2341|         AUSGLOP_MAT_ITAB-NETWR = AUSGLOP_MAT_ITAB-HWBAS.
  2342|         AUSGLOP_MAT_ITAB-MWSBP = AUSGLOP_MAT_ITAB-HWSTE.
  2343|         COLLECT AUSGLOP_MAT_ITAB.
  2344|         LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  2345|                             AND KUNNR = AUSGLOP_ITAB-KUNNR
  2346|                             AND STCD = AUSGLOP_ITAB-STCD
  2347|                             AND AUGBL = AUSGLOP_ITAB-AUGBL.
  2348| 
  2349| *       check_itab-awtyp_fi = ' ' .
  2350|           CHECK_ITAB-AWTYP_SD = 'VBRK'.
  2351|           MODIFY CHECK_ITAB.
  2352|         ENDLOOP.
  2353|       ENDIF.
  • EN: On successful parsing, flag the row as SD-type (VBRK), collect material, unit, quantity (scaled by 1000), tax base and tax into AUSGLOP_MAT_ITAB and set AWTYP_SD='VBRK' in CHECK_ITAB.
  • 테이블(파서): read - / write AUSGLOP_ITAB, CHECK_ITAB
  • SAP 객체: VBRK
  • 업무 키워드: 품목 정보 생성, SD 빌링 취급, 수량 보정, 공급가액, 세액
  • English: Material Line, Billing Type, Quantity, COLLECT
  • 정의부(복사 시 함께 필요): BAL_TEXT, AUSGLOP_ITAB, AUSGLOP_MAT_ITAB, MATERIAL, UNIT, QTY, CHECK_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L2326-L2353 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#CHECK_TEXT#C2

FORM CONVERT_TO_LOCAL_CURRENCY — ZFIR0141 L4557-L4603 (47줄)

SD 품목의 외화 공급가액·세액을 전표의 환율 정보로 현지통화(KRW)로 환산한다.

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

[fm_call] 판매 통화(WAERK)의 품목 공급가액(NETWR)과 세액(MWSBP)을 환율일(KURRF_DAT)·환율(KURRF)·환율유형(KURST) 기준으로 FM CONVERT_TO_LOCAL_CURRENCY 로 현지통화(HWAER)로 환산하고 실패 시 E013 오류를 낸다.

  4559|   CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
  4560|     EXPORTING
  4561|       CLIENT           = SY-MANDT
  4562|       DATE             = AUSGLOP_ITAB-KURRF_DAT
  4563|       FOREIGN_AMOUNT   = AUSGLOP_MAT_ITAB-NETWR
  4564|       FOREIGN_CURRENCY = AUSGLOP_ITAB-WAERK
  4565|       LOCAL_CURRENCY   = AUSGLOP_ITAB-HWAER
  4566|       RATE             = AUSGLOP_ITAB-KURRF
  4567|       TYPE_OF_RATE     = AUSGLOP_ITAB-KURST
  4568|     IMPORTING
  4569|       LOCAL_AMOUNT     = AUSGLOP_MAT_ITAB-NETWR
  4570|     EXCEPTIONS
  4571|       NO_RATE_FOUND    = 1
  4572|       OVERFLOW         = 2
  4573|       NO_FACTORS_FOUND = 3
  4574|       NO_SPREAD_FOUND  = 4
  4575|       DERIVED_2_TIMES  = 5
  4576|       OTHERS           = 6.
  4577|   IF SY-SUBRC <> 0.
  4578|     MESSAGE E013.
  4579|   ENDIF.
  4580| 
  4581|   CALL FUNCTION 'CONVERT_TO_LOCAL_CURRENCY'
  4582|     EXPORTING
  4583|       CLIENT           = SY-MANDT
  4584|       DATE             = AUSGLOP_ITAB-KURRF_DAT
  4585|       FOREIGN_AMOUNT   = AUSGLOP_MAT_ITAB-MWSBP
  4586|       FOREIGN_CURRENCY = AUSGLOP_ITAB-WAERK
  4587|       LOCAL_CURRENCY   = AUSGLOP_ITAB-HWAER
  4588|       RATE             = AUSGLOP_ITAB-KURRF
  4589|       TYPE_OF_RATE     = AUSGLOP_ITAB-KURST
  4590|     IMPORTING
  4591|       LOCAL_AMOUNT     = AUSGLOP_MAT_ITAB-MWSBP
  4592|     EXCEPTIONS
  4593|       NO_RATE_FOUND    = 1
  4594|       OVERFLOW         = 2
  4595|       NO_FACTORS_FOUND = 3
  4596|       NO_SPREAD_FOUND  = 4
  4597|       DERIVED_2_TIMES  = 5
  4598|       OTHERS           = 6.
  4599|   IF SY-SUBRC <> 0.
  4600|     MESSAGE E013.
  4601|   ENDIF.
  • EN: Convert the item net value and tax amount from the sales currency to the local currency with FM CONVERT_TO_LOCAL_CURRENCY using the document exchange rate, date and rate type; raise error E013 on failure.
  • 호출(파서): CONVERT_TO_LOCAL_CURRENCY, CONVERT_TO_LOCAL_CURRENCY
  • SAP 객체: CONVERT_TO_LOCAL_CURRENCY
  • 업무 키워드: 환율 환산, 현지통화, 외화, 공급가액, 세액
  • English: Currency Conversion, Local Currency, Exchange Rate, Rate Type
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, AUSGLOP_MAT_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L4559-L4601 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#CONVERT_TO_LOCAL_CURRENCY#C1

FORM GET_TOTALS — ZFIR0141 L1880-L1916 (37줄)

세금계산서별 FI 세금 합계(HWBAS/HWSTE)와 SD 품목 합계(NETWR/MWSBP)를 비교하여 차이(DELTAN/DELTAM)를 기록하고 SD 합계를 FI 세금 합계로 맞춘다.

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

[aggregation] 세금계산서(BUKRS/KUNNR/STCD/AUGBL)별로 선택된 AUSGLOP_ITAB 의 공급가액·세액을 SUM_TAXES 에 COLLECT 하고, SD 품목 합계(NETWR+MWSBP)와 다르면 차액을 DELTAN/DELTAM 에 저장한 뒤 ALL_ITEMS_ITAB 의 NETWR/MWSBP 를 FI 세금 합계로 대체하여 환산 오차를 보정한다.

  1882|   LOOP AT ALL_ITEMS_ITAB.
  1883|     LOOP AT AUSGLOP_ITAB WHERE BUKRS = ALL_ITEMS_ITAB-BUKRS
  1884|                          AND   KUNNR = ALL_ITEMS_ITAB-KUNNR
  1885|                          AND   STCD  = ALL_ITEMS_ITAB-STCD
  1886|                          AND   AUGBL = ALL_ITEMS_ITAB-AUGBL.
  1887|       IF PROG_NAME = ' '.
  1888|         CHECK AUSGLOP_ITAB-CHECK = 'X'.
  1889|       ENDIF.
  1890| 
  1891|       MOVE-CORRESPONDING AUSGLOP_ITAB TO SUM_TAXES.
  1892|       COLLECT SUM_TAXES.
  1893|     ENDLOOP.
  1894| 
  1895|     LOOP AT SUM_TAXES    WHERE BUKRS = ALL_ITEMS_ITAB-BUKRS
  1896|                          AND   KUNNR = ALL_ITEMS_ITAB-KUNNR
  1897|                          AND   STCD  = ALL_ITEMS_ITAB-STCD
  1898|                          AND   AUGBL = ALL_ITEMS_ITAB-AUGBL.
  1899| 
  1900|       VALUE1 = SUM_TAXES-HWBAS + SUM_TAXES-HWSTE.
  1901|       VALUE2 = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP.
  1902|       IF ( VALUE1 <> VALUE2 ).
  1903|         ALL_ITEMS_ITAB-DELTAN =
  1904|                               SUM_TAXES-HWBAS - ALL_ITEMS_ITAB-NETWR.
  1905|         ALL_ITEMS_ITAB-DELTAM =
  1906|                               SUM_TAXES-HWSTE - ALL_ITEMS_ITAB-MWSBP.
  1907| 
  1908|         ALL_ITEMS_ITAB-NETWR = SUM_TAXES-HWBAS.
  1909|         ALL_ITEMS_ITAB-MWSBP = SUM_TAXES-HWSTE.
  1910|       ENDIF.
  1911|       MODIFY ALL_ITEMS_ITAB.
  1912|     ENDLOOP.
  1913|   ENDLOOP.
  • EN: Collect FI tax base and tax per tax invoice into SUM_TAXES, compare with the SD item totals, store the differences and align ALL_ITEMS_ITAB amounts with the FI totals to correct rounding/conversion errors.
  • 테이블(파서): read - / write ALL_ITEMS_ITAB
  • 업무 키워드: 합계 검증, 공급가액 차이, 세액 차이, 환산 오차 보정, 세금계산서 합계
  • English: Total Reconciliation, Tax Base, Tax Amount, Delta, COLLECT
  • 정의부(복사 시 함께 필요): ALL_ITEMS_ITAB, AUSGLOP_ITAB, AUGBL, PROG_NAME, SUM_TAXES, VALUE1, VALUE2
  • 위치: abap://ZFIR0141/ZFIR0141#L1882-L1913 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#GET_TOTALS#C1

FORM USER_EXIT3 — ZFIR0141 L2865-L2893 (29줄)

세금계산서 출력 직전 모든 출력 내부테이블과 옵션을 한국 세금계산서 리스트 User Exit FM KR_USER_EXIT_LIST_TAXINVOICE 에 넘겨 고객사 로직으로 가공한다.

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

[fm_call] 영수/청구·인쇄옵션·양식 종류·품목 라인 MATZEIL1~4·SAPscript 양식명·시뮬레이션·본사 사업장과 AUSGLOP_ITAB 등 출력 테이블들을 User Exit FM KR_USER_EXIT_LIST_TAXINVOICE 로 전달해 세금계산서 출력 데이터를 고객사 요구에 맞게 수정할 수 있게 한다.

  2867|   CALL FUNCTION 'KR_USER_EXIT_LIST_TAXINVOICE'
  2868|     EXPORTING
  2869|       YRECEIPT           = RECEIPT
  2870|       YCHK_PRTI          = CHK_PRTI
  2871|       YSTA1              = STA1
  2872|       ZMATZEIL1          = MATZEIL1
  2873|       ZMATZEIL2          = MATZEIL2
  2874|       ZMATZEIL3          = MATZEIL3
  2875|       ZMATZEIL4          = MATZEIL4
  2876|       YPROG_NAME         = PROG_NAME
  2877|       SFORM_NAME         = SAP_FORM        "Note 975866
  2878|       YSIM               = SIM             "Note 1019954
  2879|       YBUPLA_HQ          = BUPLA_HQ
  2880|     TABLES
  2881|       ZAUSGLOP_ITAB      = AUSGLOP_ITAB
  2882|       ZALL_ITEMS_ITAB    = ALL_ITEMS_ITAB
  2883|       ZAUSGLOP_MAT_ITAB  = AUSGLOP_MAT_ITAB
  2884|       ZADDRESS_ITAB      = ADDRESS_ITAB
  2885|       ZBUPLA_ADRESSE     = BUPLA_ADRESSE
  2886|       ZCHECK_ITAB        = CHECK_ITAB
  2887|       ZALL_MAT_ITAB      = ALL_MAT_ITAB
  2888|       ZMATZEIL4_ITAB     = MATZEIL4_ITAB
  2889|       ZALL_ITEMS_SD_ITAB = ALL_ITEMS_SD_ITAB.
  • EN: Call user exit FM KR_USER_EXIT_LIST_TAXINVOICE with print options, item lines, form name and all output tables so customer-specific tax invoice adjustments can be applied.
  • 호출(파서): KR_USER_EXIT_LIST_TAXINVOICE
  • SAP 객체: KR_USER_EXIT_LIST_TAXINVOICE
  • 업무 키워드: User Exit, 세금계산서 출력, 고객사 로직, 출력 테이블
  • English: User Exit, Tax Invoice, Print Option, SAPscript Form
  • 정의부(복사 시 함께 필요): RECEIPT, CHK_PRTI, STA1, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3, MATZEIL4, PROG_NAME, SAP_FORM, SIM, BUPLA_HQ 외 9건
  • 위치: abap://ZFIR0141/ZFIR0141#L2867-L2889 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#USER_EXIT3#C1

FORM LIST_OUTPUT — ZFIR0141 L2902-L2937 (36줄)

시뮬레이션이거나 직접 실행이면 세금계산서를 WRITE 리스트로 인쇄(PRINT_INVOICES)하고 인쇄 파라미터를 설정하며, 그 외에는 스마트빌 전송(SMARTBILL_TRANS)으로 분기한다.

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

[control_flow] 시뮬레이션(SIM='X') 또는 직접 실행이면 SALL/DSALL/SAVE 를 제외한 PF-STATUS LIST1 을 설정하고 PRINT_INVOICES 로 세금계산서를 인쇄한 뒤 GET_PRINT_PARAMETERS 로 X_90_120 레이아웃 인쇄 파라미터를 무대화 설정하며, 그렇지 않으면 SMARTBILL_TRANS 로 전자세금계산서를 전송한다.

  2906|   IF SIM EQ 'X' OR PROG_NAME = ' '.
  2907| *  SET PF-STATUS 'LIST1'.
  2908|     PERFORM  EXCL_FCODE01 USING 'SALL' 'DSALL' 'SAVE'.
  2909|     SET PF-STATUS 'LIST1' EXCLUDING IT_FCODE.
  2910| 
  2911| * 세금계산서 인쇄
  2912|     PERFORM PRINT_INVOICES.
  2913| 
  2914|     CALL FUNCTION 'GET_PRINT_PARAMETERS'
  2915|       EXPORTING
  2916|         IN_PARAMETERS  = PRIPAR
  2917|         LAYOUT         = 'X_90_120'
  2918|         LINE_COUNT     = 90
  2919|         LINE_SIZE      = 120
  2920|         NO_DIALOG      = 'X'
  2921|       IMPORTING
  2922|         OUT_PARAMETERS = PRIPAR
  2923|         VALID          = VAL.
  2924| 
  2925|     IF SY-SUBRC <> 0.
  2926| * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
  2927| *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  2928|     ENDIF.
  2929|   ELSE.
  2930|     PERFORM SMARTBILL_TRANS.
  2931|   ENDIF.
  • EN: In simulation or standalone mode set PF-STATUS LIST1, print tax invoices and fetch print parameters (layout X_90_120) via GET_PRINT_PARAMETERS; otherwise transmit to Smartbill via SMARTBILL_TRANS.
  • 호출(파서): EXCL_FCODE01, PRINT_INVOICES, GET_PRINT_PARAMETERS, SMARTBILL_TRANS
  • SAP 객체: GET_PRINT_PARAMETERS
  • 업무 키워드: 시뮬레이션, 세금계산서 인쇄, 인쇄 파라미터, 스마트빌 전송
  • English: Simulation, Print Parameters, GET_PRINT_PARAMETERS, Smartbill
  • 정의부(복사 시 함께 필요): SIM, PROG_NAME, IT_FCODE, PRIPAR, VAL
  • 위치: abap://ZFIR0141/ZFIR0141#L2906-L2931 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#LIST_OUTPUT#C1

FORM PRINT_INVOICES — ZFIR0141 L3316-L3532 (217줄)

선택된 세금계산서(AUGBL)별로 공급자용·공급받는자용 2부를 WRITE 리스트 형식으로 인쇄하며 제목·번호·거래처·합계·품목·영수/청구 구분을 순서대로 출력한다.

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

[control_flow] 출력 대상을 고객·사업장·세금계산서번호 순으로 정렬하고 직접 실행(PROG_NAME 공백)이면 체크된 항목만 인쇄 대상으로 한다.

  3327|   SORT AUSGLOP_ITAB BY KUNNR BUPLA AUGBL.
  3328| 
  3329|   LOOP AT AUSGLOP_ITAB.
  3330| 
  3331| 
  3332| 
  3333|     IF PROG_NAME = ' '.
  3334|       CHECK AUSGLOP_ITAB-CHECK = 'X'.
  3335|     ENDIF.
  • EN: Sort output rows by customer, business place and tax invoice number and restrict to checked rows when run standalone.
  • 업무 키워드: 정렬, 선택 항목, 인쇄 대상
  • English: Sort, Selection, Tax Invoice
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, BUPLA, AUGBL, PROG_NAME
  • 위치: abap://ZFIR0141/ZFIR0141#L3327-L3335 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C1

[aggregation] 세금계산서 번호가 바뀔 때 해당 번호의 전표를 DOC_CNT_ITAB 에 모아 전기일·전표번호로 정렬하고 마지막 전표를 읽은 뒤 발행일자를 입력 SBLDAT 우선(없으면 반제일 AUGDT)으로 정해 연·월·일(YY1/MM1/DD1)을 세팅한다.

  3347|     AT NEW AUGBL.
  3348| *추가로직
  3349|       CLEAR : YY1 , MM1 , DD1.
  3350|       CLEAR L_LINES.
  3351| 
  3352|       CLEAR DOC_CNT_ITAB.
  3353|       REFRESH DOC_CNT_ITAB.
  3354| 
  3355|       LOOP AT AUSGLOP_ITAB WHERE AUGBL =  AUSGLOP_ITAB-AUGBL.
  3356| 
  3357|         MOVE AUSGLOP_ITAB  TO DOC_CNT_ITAB.
  3358|         APPEND DOC_CNT_ITAB.
  3359|       ENDLOOP.
  3360| 
  3361| 
  3362|       SORT DOC_CNT_ITAB BY BUDAT BELNR .
  3363| 
  3364|       DESCRIBE TABLE DOC_CNT_ITAB LINES L_LINES.
  3365| 
  3366|       READ TABLE DOC_CNT_ITAB INDEX L_LINES.
  3367| 
  3368| * 세금계산서 발행일자
  3369|       IF SBLDAT IS INITIAL.
  3370|         DOC_CNT_ITAB-BUDAT = AUSGLOP_ITAB-AUGDT.
  3371|       ELSE.
  3372|         DOC_CNT_ITAB-BUDAT = SBLDAT.
  3373|       ENDIF.
  3374| 
  3375| *      IF SN1OP EQ 'X'.          " 통합 세금계산서 발행일 경우
  3376| ** 전기일자의 말일.
  3377| *        CALL FUNCTION 'LAST_DAY_OF_MONTHS'
  3378| *             EXPORTING
  3379| *                  DAY_IN            = DOC_CNT_ITAB-BUDAT
  3380| *             IMPORTING
  3381| *                  LAST_DAY_OF_MONTH = DOC_CNT_ITAB-BUDAT
  3382| *             EXCEPTIONS
  3383| *                  DAY_IN_NO_DATE    = 1
  3384| *                  OTHERS            = 2.
  3385| *      ENDIF.
  3386| 
  3387|       YY1 = DOC_CNT_ITAB-BUDAT+2(2).
  3388|       MM1 = DOC_CNT_ITAB-BUDAT+4(2).
  3389|       DD1 = DOC_CNT_ITAB-BUDAT+6(2).
  • EN: At each new tax invoice number, collect its documents, and derive the issue date (SBLDAT or clearing date AUGDT) into year/month/day fields.
  • 업무 키워드: 세금계산서 발행일, 반제일, 전표 집계, AT NEW
  • English: Issue Date, Clearing Date, Document Count
  • 정의부(복사 시 함께 필요): AUGBL, YY1, MM1, DD1, L_LINES, AUSGLOP_ITAB, DOC_CNT_ITAB, SBLDAT
  • 위치: abap://ZFIR0141/ZFIR0141#L3347-L3389 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C2

[output] 공급자용·공급받는자용 2부(COPY 1,2)를 WHILE 로 반복하며 판매 품목 수(LINE_COUNT)를 세고 양식 상단 테두리·제목(TAX_INVOICE_TITLE_CHANGE)·세금계산서 번호 칸(TRUNCATE_TAXNUM)을 WRITE 한다.

  3394|       IF AUSGLOP_ITAB-AUGBL NE AUGBL.
  3395| 
  3396| 
  3397|         CLEAR COPY.
  3398|         WHILE COPY < 2.
  3399|           COPY = COPY + 1.
  3400|           READ TABLE AUSGLOP_ITAB INDEX SEL_INDEX.
  3401|           CLEAR AUSGLOP_MAT_ITAB.
  3402|           CLEAR ALL_ITEMS_ITAB.
  3403| 
  3404| * number of item lines in ausglop_mat_itab --> number of sold
  3405| * materials
  3406|           LINE_COUNT = 0.
  3407|           LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  3408|                                      AND KUNNR = AUSGLOP_ITAB-KUNNR
  3409|                                      AND STCD  = AUSGLOP_ITAB-STCD
  3410|                                      AND AUGBL = AUSGLOP_ITAB-AUGBL.
  3411|             LINE_COUNT = LINE_COUNT + 1.
  3412|           ENDLOOP.
  3413| 
  3414| *    new-page.
  3415|           WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  3416|           WRITE:/ TEXT-CA2,
  3417|                85 TEXT-WA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3418|                97 TEXT-CA2,
  3419|               110 TEXT-CA2,
  3420|               114 TEXT-WA2 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3421|               117 TEXT-CA2.
  3422|           WRITE:/ TEXT-CA2,
  3423|                97 TEXT-CA4,
  3424|               117 TEXT-CA2.
  3425| * start of tax invoice title change
  3426| * create text elements w11 and w12 for this change
  3427|           PERFORM TAX_INVOICE_TITLE_CHANGE.
  3428| * end of tax invoice title change
  3429| 
  3430|           PERFORM TRUNCATE_TAXNUM.
  3431| 
  3432|           WRITE:/ TEXT-CA2,
  3433|                81 TEXT-WA4 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3434|                97 TAX_NUM, 117 TEXT-CA2.
  3435|           WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Loop twice for supplier and buyer copies, count material lines and print the form header with title and boxed tax invoice number.
  • 호출(파서): TAX_INVOICE_TITLE_CHANGE, TRUNCATE_TAXNUM
  • 업무 키워드: 2부 인쇄, 공급자용, 공급받는자용, 세금계산서 번호, 제목
  • English: Supplier Copy, Buyer Copy, Tax Invoice Number, Title
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, AUGBL, COPY, SEL_INDEX, AUSGLOP_MAT_ITAB, ALL_ITEMS_ITAB, LINE_COUNT, TAX_NUM
  • 위치: abap://ZFIR0141/ZFIR0141#L3394-L3435 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C3

[output] 고객 유형별 파트1(KIND_OF_CUSTOMERS)·합계 라인(PRINT_SUM_LINE)·품목 라인 채우기(FILL_ITEM_TABLES) 후 종사업장 표시, 전표 건수(G_LINES)와 세율 플래그(FL_TAX_RAT)에 따른 비고 텍스트(TEXT-001/002/003), 공급가액·세액 합계(FILL_AMOUNT)를 WRITE 한다.

  3437|           WRITE AUSGLOP_ITAB-AUGDT+2(2) TO BYEAR.
  3438|           WRITE AUSGLOP_ITAB-AUGDT+4(2) TO BMONTH.
  3439|           WRITE AUSGLOP_ITAB-AUGDT+6(2) TO BDAY.
  3440| 
  3441| * 고객종류에 따라(On-Time, Master)
  3442|           PERFORM KIND_OF_CUSTOMERS.
  3443| 
  3444| *----------------------------------------------------------------------*
  3445| * print total amount and total tax amount in appropriate cases on the
  3446| * tax invoice
  3447| *----------------------------------------------------------------------*
  3448|           PERFORM PRINT_SUM_LINE.
  3449| 
  3450| *----------------------------------------------------------------------*
  3451| *                        Print items
  3452| *----------------------------------------------------------------------*
  3453| 
  3454| * Item라인에 보여주기위한 테이블(matzeil1,matzeil2,matzeil3,matzeil4)
  3455| * 채운다.
  3456|           PERFORM FILL_ITEM_TABLES.
  3457| 
  3458| * 년월일, 비고, Item공급가액 , 세액합.
  3459|           WRITE:/ TEXT-CA2,
  3460|                 2 TEXT-YA3 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3461|                58 TEXT-CA2, 117 TEXT-CA2,
  3462| 
  3463|                60 '종사업장 :',
  3464|                71 L_STATE_INSC.
  3465| 
  3466| 
  3467| *         비고
  3468|           IF G_LINES > 1 AND  FL_TAX_RAT EQ '0'.
  3469|             WRITE:/ TEXT-C10,
  3470|                 58 TEXT-CA2,
  3471|                 60 TEXT-001,
  3472|                117 TEXT-CA2.
  3473|           ELSEIF G_LINES EQ 1 AND FL_TAX_RAT EQ '0'.
  3474|             WRITE:/ TEXT-C10,
  3475|                 58 TEXT-CA2,
  3476|                 60 TEXT-003,
  3477|                117 TEXT-CA2.
  3478|           ELSEIF G_LINES > 1 AND FL_TAX_RAT EQ '1'.
  3479|             WRITE:/ TEXT-C10,
  3480|                 58 TEXT-CA2,
  3481|                 60 TEXT-002,
  3482|                117 TEXT-CA2.
  3483|           ELSE.
  3484|             WRITE:/ TEXT-C10,
  3485|                 58 TEXT-CA2,
  3486|                117 TEXT-CA2.
  3487|           ENDIF.
  3488| 
  3489| *         공급가액,세액 합계
  3490|           PERFORM FILL_AMOUNT USING FELD1A FELD1B.
  3491| 
  3492| * 내역 (Item Print).
  3493|           WRITE:/ TEXT-CA2,
  3494|                 2 TEXT-YA4 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3495|               117 TEXT-CA2.
  3496|           WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Print part 1 by customer type, the sum line, the remark text chosen by document count and tax rate flag, and the boxed tax base/tax amount totals.
  • 호출(파서): KIND_OF_CUSTOMERS, PRINT_SUM_LINE, FILL_ITEM_TABLES, FILL_AMOUNT
  • 업무 키워드: 파트1, 합계 라인, 비고, 세율, 공급가액 합계, 세액 합계, 종사업장
  • English: Sum Line, Remark, Tax Rate, Tax Base, Business Place
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, BYEAR, BMONTH, BDAY, L_STATE_INSC, G_LINES, FL_TAX_RAT, FELD1A, FELD1B
  • 위치: abap://ZFIR0141/ZFIR0141#L3437-L3496 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C4

[output] 원천 유형(VBRK=SD 빌링/BKPF=FI 전표)에 따라 WRITE_ITEM_SD 또는 WRITE_ITEM_FI 로 품목 4줄을 인쇄하고 영수(RECEIPT='X')/청구 구분에 따라 CHECK_RECEIPT/CHECK_BILLING 으로 하단을 출력한 뒤 NEW-PAGE 한다.

  3498|           IF AUSGLOP_ITAB-AWTYP = 'VBRK'.
  3499|             PERFORM WRITE_ITEM_SD USING MATZEIL1.
  3500|             PERFORM WRITE_ITEM_SD USING MATZEIL2.
  3501|             PERFORM WRITE_ITEM_SD USING MATZEIL3.
  3502|             PERFORM WRITE_ITEM_SD USING MATZEIL4.
  3503|           ELSEIF AUSGLOP_ITAB-AWTYP = 'BKPF'.
  3504|             PERFORM WRITE_ITEM_FI USING MATZEIL1.
  3505|             PERFORM WRITE_ITEM_FI USING MATZEIL2.
  3506|             PERFORM WRITE_ITEM_FI USING MATZEIL3.
  3507|             PERFORM WRITE_ITEM_FI USING MATZEIL4.
  3508| *            PERFORM write_lines_fi.
  3509|           ENDIF.
  3510| 
  3511|           IF RECEIPT = 'X'.
  3512|             PERFORM CHECK_RECEIPT.
  3513|           ELSE.
  3514|             PERFORM CHECK_BILLING.
  3515|           ENDIF.
  3516|           DO 2 TIMES.
  3517|             WRITE: /.
  3518|           ENDDO.
  3519|           WRITE : / TEXT-CA1.
  3520|           DO 2 TIMES.
  3521|             WRITE: /.
  3522|           ENDDO.
  3523|         ENDWHILE.
  3524|         NEW-PAGE.
  • EN: Print four item lines via the SD or FI routine depending on the reference type, then the receipt or billing footer, and start a new page.
  • 호출(파서): WRITE_ITEM_SD, WRITE_ITEM_SD, WRITE_ITEM_SD, WRITE_ITEM_SD, WRITE_ITEM_FI, WRITE_ITEM_FI, WRITE_ITEM_FI, WRITE_ITEM_FI, CHECK_RECEIPT, CHECK_BILLING
  • SAP 객체: VBRK, BKPF
  • 업무 키워드: 품목 라인 인쇄, 영수, 청구, SD 빌링, FI 전표, 새 페이지
  • English: Item Line, Receipt, Billing, Billing Document, FI Document
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3, MATZEIL4, RECEIPT
  • 위치: abap://ZFIR0141/ZFIR0141#L3498-L3524 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_INVOICES#C5

FORM TAX_INVOICE_TITLE_CHANGE — ZFIR0141 L3905-L3961 (57줄)

세금계산서 제목 라인을 부수(COPY 1=공급자용, 2=공급받는자용)와 양식 종류(STA1 일반세금계산서/STA2 세금계산서)에 따라 다른 텍스트로 인쇄하고 시뮬레이션이면 표시를 덧붙인다.

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

[output] COPY(공급자용/공급받는자용)와 STA1/STA2(일반세금계산서/세금계산서) 조합에 따라 제목 TEXT-WA3/W11/W10/W12 를 WRITE 하고 시뮬레이션(SIM='X')이면 TEXT-W17 강조 표시를 추가한 뒤 TEXT-CA7 을 우측에 출력한다.

  3908|   IF COPY = 1 AND STA1 = 'X'.
  3909|     WRITE:/ TEXT-CA2,
  3910|          41 TEXT-WA3 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3911|         117 TEXT-CA2.
  3912| 
  3913|     IF SIM = 'X'.
  3914|       WRITE:/ TEXT-CA2,
  3915|            41 TEXT-W17 COLOR COL_HEADING INTENSIFIED ON,
  3916|           117 TEXT-CA2.
  3917|     ENDIF.
  3918| 
  3919|     WRITE:/ TEXT-CA2, 97 TEXT-CA7, 117 TEXT-CA2.
  3920| * 공급자용(세금계산서)
  3921|   ELSEIF COPY = 1 AND STA2 = 'X'.
  3922|     WRITE:/ TEXT-CA2,
  3923|             41  TEXT-W11 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3924|             117 TEXT-CA2.
  3925|     IF SIM = 'X'.
  3926|       WRITE: / TEXT-CA2,
  3927|                41  TEXT-W17 COLOR COL_HEADING INTENSIFIED ON,
  3928|                117 TEXT-CA2.
  3929|     ENDIF.
  3930| 
  3931|     WRITE:/ TEXT-CA2, 97 TEXT-CA7, 117 TEXT-CA2.
  3932| * 공급받는자용(일반세금계산서)
  3933|   ELSEIF COPY = 2 AND STA1 = 'X'.
  3934|     WRITE:/ TEXT-CA2,
  3935|             41  TEXT-W10 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3936|             117 TEXT-CA2.
  3937| 
  3938|     IF SIM = 'X'.
  3939|       WRITE:/ TEXT-CA2,
  3940|            41 TEXT-W17 COLOR COL_HEADING INTENSIFIED ON,
  3941|           117 TEXT-CA2.
  3942|     ENDIF.
  3943| 
  3944|     WRITE:/ TEXT-CA2, 97 TEXT-CA7, 117 TEXT-CA2.
  3945| * 공급받는자용(세금계산서)
  3946|   ELSEIF COPY = 2 AND STA2 = 'X'.
  3947|     WRITE:/ TEXT-CA2,
  3948|          41 TEXT-W12 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3949|         117 TEXT-CA2.
  3950| 
  3951|     IF SIM = 'X'.
  3952|       WRITE:/ TEXT-CA2,
  3953|            41 TEXT-W17 COLOR COL_HEADING INTENSIFIED ON,
  3954|           117 TEXT-CA2.
  3955|     ENDIF.
  3956| 
  3957|     WRITE:/ TEXT-CA2, 97 TEXT-CA7, 117 TEXT-CA2.
  3958| 
  3959|   ENDIF.
  • EN: Print the tax invoice title text depending on copy (supplier/buyer) and form type (general tax invoice/tax invoice), adding a simulation marker when SIM='X'.
  • 업무 키워드: 세금계산서 제목, 공급자용, 공급받는자용, 일반세금계산서, 시뮬레이션
  • English: Tax Invoice, Title, Supplier Copy, Buyer Copy, Simulation
  • 정의부(복사 시 함께 필요): COPY, STA1, SIM, STA2
  • 위치: abap://ZFIR0141/ZFIR0141#L3908-L3959 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#TAX_INVOICE_TITLE_CHANGE#C1

FORM TRUNCATE_TAXNUM — ZFIR0141 L2946-L2964 (19줄)

세금계산서 번호(AUGBL)를 10자리로 편집해 세금계산서 양식의 번호란 자릿수 칸(TAX_NUM)에 한 자리씩 배치한다.

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

[calculation] 반제전표번호 기반 세금계산서 번호를 EDIT MASK 로 좌측 정렬한 뒤 각 자리를 2칸 간격의 TAX_NUM 위치에 WRITE 하여 세금계산서 일련번호 칸 형식으로 변환한다.

  2949|   MOVE AUSGLOP_ITAB-AUGBL TO TAX_NO.
  2950|   WRITE TAX_NO TO TAX_INV_NO USING EDIT MASK 'LL__________'.
  2951| *WRITE TAX_INV_NO TO TAX_INV_NO USING EDIT MASK 'RR__________'.
  2952| 
  2953|   WRITE TAX_INV_NO TO TAX_NUM+1(1).
  2954|   WRITE TAX_INV_NO+1 TO TAX_NUM+3(1).
  2955|   WRITE TAX_INV_NO+2 TO TAX_NUM+5(1).
  2956|   WRITE TAX_INV_NO+3 TO TAX_NUM+7(1).
  2957|   WRITE TAX_INV_NO+4 TO TAX_NUM+9(1).
  2958|   WRITE TAX_INV_NO+5 TO TAX_NUM+11(1).
  2959|   WRITE TAX_INV_NO+6 TO TAX_NUM+13(1).
  2960|   WRITE TAX_INV_NO+7 TO TAX_NUM+15(1).
  2961|   WRITE TAX_INV_NO+8 TO TAX_NUM+17(1).
  2962|   WRITE TAX_INV_NO+9 TO TAX_NUM+19(1).
  • EN: Format the tax invoice number (clearing document AUGBL) and spread its digits into the boxed serial number field TAX_NUM of the form.
  • 업무 키워드: 세금계산서 번호, 일련번호 칸, 자릿수 배치
  • English: Tax Invoice Number, Digit Boxes, EDIT MASK
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, TAX_NO, TAX_INV_NO, TAX_NUM
  • 위치: abap://ZFIR0141/ZFIR0141#L2949-L2962 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#TRUNCATE_TAXNUM#C1

FORM KIND_OF_CUSTOMERS — ZFIR0141 L3970-L4020 (51줄)

고객 유형(일회성 CPD·마스터 고객·지점 고객)에 따라 고객 주소와 사업장 주소를 찾아 세금계산서 파트1(공급자/공급받는자 정보)을 WRITE_PART1-1/1-2 로 인쇄한다.

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

[control_flow] 일회성 고객(XCPDK='X')이면 고객번호·사업자번호로 ADDRESS_ITAB 을 READ 하고 사업장·세금계산서번호에 해당하는 BUPLA_ADRESSE 를 찾아 WRITE_PART1-1 로 공급자/공급받는자 정보를 인쇄한다.

  3974|   IF AUSGLOP_ITAB-XCPDK = 'X'.
  3975| 
  3976|     READ TABLE ADDRESS_ITAB WITH KEY KUNNR = AUSGLOP_ITAB-KUNNR
  3977|                                      STCD  = AUSGLOP_ITAB-STCD.
  3978| 
  3979|     LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA
  3980|                            AND AUGBL =  AUSGLOP_ITAB-AUGBL.
  3981| *     Part 1 (사업자등록번호, 공급자, 공급받는자, 년도, 비고)
  3982|       PERFORM WRITE_PART1-1.
  3983|       IF SY-SUBRC = 0.
  3984|         EXIT.
  3985|       ENDIF.
  3986|     ENDLOOP.
  • EN: For one-time (CPD) customers, read the address by customer and tax number, find the business place address and print part 1 via WRITE_PART1-1.
  • 호출(파서): WRITE_PART1-1
  • 업무 키워드: 일회성 고객, 사업장 주소, 공급받는자, 세금계산서 파트1
  • English: One-Time Customer, Business Place, Address, Tax Invoice
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, ADDRESS_ITAB, BUPLA_ADRESSE, AUGBL, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L3974-L3986 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#KIND_OF_CUSTOMERS#C1

[control_flow] 마스터 고객이면 KUNNR, 지점 고객이면 FILKD 기준으로 ADDRESS_ITAB 을 LOOP 하고 세금계산서 인쇄 모드(CHK_PRTI)에서 BUPLA_ADRESSE 를 찾아 WRITE_PART1-2 로 파트1을 인쇄한다(지점 고객 분기는 출력 호출이 비어 있음).

  3988|   ELSE.
  3989|     IF AUSGLOP_ITAB-FILKD = ' '.
  3990| 
  3991|       LOOP AT ADDRESS_ITAB WHERE  KUNNR = AUSGLOP_ITAB-KUNNR.
  3992| 
  3993|         IF CHK_PRTI = 'X'.
  3994|           LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA
  3995|                                 AND AUGBL = AUSGLOP_ITAB-AUGBL .
  3996| 
  3997| *           Part 1 (사업자등록번호, 공급자, 공급받는자, 년도, 비고)
  3998|             PERFORM WRITE_PART1-2.
  3999|             IF SY-SUBRC = 0.
  4000|               EXIT.
  4001|             ENDIF.
  4002|           ENDLOOP.
  4003|         ENDIF.
  4004|       ENDLOOP.
  4005|     ELSE.
  4006|       LOOP AT ADDRESS_ITAB WHERE  KUNNR = AUSGLOP_ITAB-FILKD.
  4007|         IF CHK_PRTI = 'X'.
  4008|           LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA
  4009|                                   AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4010|             IF SY-SUBRC = 0.
  4011|               EXIT.
  4012|             ENDIF.
  4013| 
  4014|           ENDLOOP.
  4015|         ENDIF.
  4016|       ENDLOOP.
  4017|     ENDIF.
  4018|   ENDIF.
  • EN: For master customers (by KUNNR) or branch customers (by FILKD), loop the address and business place tables and print part 1 via WRITE_PART1-2.
  • 호출(파서): WRITE_PART1-2
  • 업무 키워드: 마스터 고객, 지점 고객, 사업장 주소, 파트1 인쇄
  • English: Customer Master, Branch, Business Place, Tax Invoice
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, ADDRESS_ITAB, CHK_PRTI, BUPLA_ADRESSE, AUGBL, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L3988-L4018 · confidence 0.75 · ZFIR0141#ZFIR0141#FORM#KIND_OF_CUSTOMERS#C2

FORM WRITE_PART1-1 — ZFIR0141 L3645-L3764 (120줄)

세금계산서 파트1(공급자 보관용 1번째 양식)의 사업자등록번호·상호·대표자·주소·업종·업태를 WRITE 로 인쇄한다.

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

[output] FILL_VAT_NUMBER 로 공급자(사업장 STCD2)와 공급받는자(고객 STCD2)의 사업자등록번호를 자릿수 칸에 인쇄하고 사업장·고객 주소 문자열(ADDRESS_BUPLA/ADDRESS_COMP)을 만든다.

  3647|   PERFORM FILL_VAT_NUMBER USING BUPLA_ADRESSE-STCD2
  3648|                                 ADDRESS_ITAB-STCD2.
  3649| 
  3650| 
  3651|   CONCATENATE BUPLA_ADRESSE-CITY1
  3652| *  CONCATENATE bupla_adresse-city1 bupla_adresse-city2
  3653|              BUPLA_ADRESSE-STREET INTO ADDRESS_BUPLA SEPARATED BY SPACE.
  3654| 
  3655|   CONCATENATE ADDRESS_ITAB-ORT01
  3656| *  CONCATENATE address_itab-ort01 address_itab-ort02
  3657|               ADDRESS_ITAB-STRAS INTO ADDRESS_COMP SEPARATED BY SPACE.
  • EN: Print supplier and buyer tax registration numbers via FILL_VAT_NUMBER and build the business place and customer address strings.
  • 호출(파서): FILL_VAT_NUMBER
  • 업무 키워드: 사업자등록번호, 공급자, 공급받는자, 주소
  • English: Tax Number, Supplier, Buyer, Address
  • 정의부(복사 시 함께 필요): BUPLA_ADRESSE, ADDRESS_ITAB, ADDRESS_BUPLA, ADDRESS_COMP
  • 위치: abap://ZFIR0141/ZFIR0141#L3647-L3657 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1#C1

[output] 세금계산서 파트1 양식에 공급자 상호(NAME1)·대표자(KR_REPRES)·주소·업종·업태와 공급받는자 상호·대표자·주소·업태·업종을 양식 컬럼 위치에 맞춰 WRITE 한다.

  3660|   WRITE:/ TEXT-CA2,
  3661|         4 TEXT-CA2,
  3662|         5 TEXT-WA7 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3663|         9 TEXT-CA2,
  3664| *2005년 11월3일 현업요청에의해 회사이름만 출력(사업자명 배제)
  3665|        10 BUPLA_ADRESSE-NAME1, "bupla_adresse-name1,
  3666|        35 TEXT-CA2,
  3667|        31 TEXT-WA8 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3668|        42 TEXT-CA2,
  3669|        43 BUPLA_ADRESSE-KR_REPRES, "공급자 대표자 성명
  3670|        59 TEXT-CA2,
  3671|        60 '  ' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3672|        62 TEXT-CA2,
  3673|        63 TEXT-WA7 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3674|        67 TEXT-CA2,
  3675|        68 ADDRESS_ITAB-NAME,
  3676|        93 TEXT-CA2,
  3677|        94 TEXT-WA8 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3678|       100 TEXT-CA2,
  3679|       101 ADDRESS_ITAB-REPRE,  "공급반는자 대표자 성명
  3680|       117 TEXT-CA2.
  3681| *이름1
  3682|   WRITE:/ TEXT-CA2,
  3683|           2 '급' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3684|           4 TEXT-CA2,
  3685|           5 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3686|           9 TEXT-CA2,
  3687|          35 TEXT-CA2,
  3688|          36 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3689|          40 TEXT-CA2,
  3690|          59 TEXT-CA2,
  3691|          60 '받' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3692|          62 TEXT-CA2,
  3693|          63 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3694|          67 TEXT-CA2,
  3695|          93 TEXT-CA2,
  3696|          94 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3697|         100 TEXT-CA2,
  3698|         117 TEXT-CA2.
  3699| 
  3700| *이름 다음 선1
  3701|   WRITE:/ TEXT-CA2,
  3702|           2 '  ' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3703|           4 TEXT-CA9, 63 TEXT-CA9, 59 TEXT-CA2,
  3704|          60 '는' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3705|          62 TEXT-CA2.
  3706| 
  3707| *주소1
  3708|   WRITE:/ TEXT-CA2,
  3709|           2 '자' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3710|           4 TEXT-CA2,
  3711|           5 TEXT-XA4 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3712|           9 TEXT-CA2,
  3713|          10 ADDRESS_BUPLA,
  3714|          59 TEXT-CA2,
  3715|          60 '자' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3716|          62 TEXT-CA2,
  3717|          63 TEXT-XA4 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3718|          67 TEXT-CA2,
  3719|          68 ADDRESS_COMP,
  3720|         117 TEXT-CA2.
  3721| 
  3722|   WRITE:/ TEXT-CA2,
  3723|           4 TEXT-CA9,
  3724|          59 TEXT-CA2,
  3725|          63 TEXT-CA9,
  3726|          60 '  ' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3727|          62 TEXT-CA2.
  3728| * 업종/ 업태
  3729|   WRITE:/ TEXT-CA2,
  3730|           4 TEXT-CA2,
  3731|           5 TEXT-XA5 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3732|           9 TEXT-CA2,
  3733|          10 BUPLA_ADRESSE-KR_INDTYPE,
  3734|          35 TEXT-CA2,
  3735|          36 TEXT-XA6 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3736|          40 TEXT-CA2,
  3737|          41 BUPLA_ADRESSE-KR_BUSTYPE, 59 TEXT-CA2,
  3738|          60 '  ' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3739|          62 TEXT-CA2,
  3740|          63 TEXT-XA5 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3741|          67 TEXT-CA2,
  3742| *2004.5.28업종과 업태필드 교체...
  3743| *         68 address_itab-indtyp,
  3744|          68 ADDRESS_ITAB-BUSTYP,
  3745|          93 TEXT-CA2,
  3746|          94 TEXT-XA6 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3747|         100 TEXT-CA2, 101 ADDRESS_ITAB-INDTYP, 117 TEXT-CA2.
  3748| *        100 text-ca2, 101 address_itab-bustyp, 117 text-ca2.
  3749| 
  3750|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  3751| 
  3752|   WRITE:/ TEXT-CA2,
  3753|           4 TEXT-YA9 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3754|          10 TEXT-CA2,
  3755|          20 TEXT-XA9 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3756|          38 TEXT-CA2,
  3757|          46 TEXT-YA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3758|          58 TEXT-CA2,
  3759|          63 TEXT-YA2 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3760|         117 TEXT-CA2.
  3761| 
  3762|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Print supplier name, representative, address, industry and business type together with the buyer's data in the part 1 area of the tax invoice form.
  • 업무 키워드: 세금계산서 파트1, 상호, 대표자, 업종, 업태, 주소 출력
  • English: Tax Invoice, Supplier, Buyer, Business Type, WRITE
  • 정의부(복사 시 함께 필요): BUPLA_ADRESSE, ADDRESS_ITAB, ADDRESS_BUPLA, ADDRESS_COMP
  • 위치: abap://ZFIR0141/ZFIR0141#L3660-L3762 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1#C2

FORM FILL_VAT_NUMBER — ZFIR0141 L2973-L3020 (48줄)

공급자(B)와 공급받는자(C)의 사업자등록번호 10자리를 세금계산서 양식의 사업자등록번호 칸(VAT_BUS/VAT_COM)에 한 자리씩 배치해 WRITE 한다.

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

[calculation] 사업장 사업자번호 B 와 고객 사업자번호 C 를 EDIT MASK 로 정렬한 뒤 각 자리를 3-2-5 구분(하이픈 위치 건너뜀)의 VAT_BUS/VAT_COM 칸 위치에 WRITE 하여 사업자등록번호 칸 형식으로 변환한다.

  2975|   WRITE B TO BVAT USING EDIT MASK 'LL__________'.
  2976|   WRITE BVAT TO BVAT USING EDIT MASK 'RR__________'.
  2977| 
  2978|   WRITE BVAT TO VAT_BUS+1(1).
  2979|   WRITE BVAT+1 TO VAT_BUS+3(1).
  2980|   WRITE BVAT+2 TO VAT_BUS+5(1).
  2981|   WRITE BVAT+3 TO VAT_BUS+9(1).
  2982|   WRITE BVAT+4 TO VAT_BUS+11(1).
  2983|   WRITE BVAT+5 TO VAT_BUS+15(1).
  2984|   WRITE BVAT+6 TO VAT_BUS+17(1).
  2985|   WRITE BVAT+7 TO VAT_BUS+19(1).
  2986|   WRITE BVAT+8 TO VAT_BUS+21(1).
  2987|   WRITE BVAT+9 TO VAT_BUS+23(1).
  2988| 
  2989|   WRITE C TO CVAT USING EDIT MASK 'LL__________'.
  2990|   WRITE CVAT TO CVAT USING EDIT MASK 'RR__________'.
  2991| 
  2992|   WRITE CVAT TO VAT_COM+1(1).
  2993|   WRITE CVAT+1 TO VAT_COM+3(1).
  2994|   WRITE CVAT+2 TO VAT_COM+5(1).
  2995|   WRITE CVAT+3 TO VAT_COM+9(1).
  2996|   WRITE CVAT+4 TO VAT_COM+11(1).
  2997|   WRITE CVAT+5 TO VAT_COM+15(1).
  2998|   WRITE CVAT+6 TO VAT_COM+17(1).
  2999|   WRITE CVAT+7 TO VAT_COM+19(1).
  3000|   WRITE CVAT+8 TO VAT_COM+21(1).
  3001|   WRITE CVAT+9 TO VAT_COM+23(1).
  • EN: Format supplier and buyer tax registration numbers and spread the digits into the boxed VAT number fields VAT_BUS and VAT_COM (3-2-5 layout).
  • 업무 키워드: 사업자등록번호, 자릿수 칸, 공급자, 공급받는자
  • English: Tax Number, VAT Registration, Digit Boxes
  • 정의부(복사 시 함께 필요): BVAT, VAT_BUS, CVAT, VAT_COM
  • 위치: abap://ZFIR0141/ZFIR0141#L2975-L3001 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#FILL_VAT_NUMBER#C1

[output] 세금계산서 상단에 공급자·공급받는자 사업자등록번호 칸(VAT_BUS/VAT_COM)과 구분선을 양식 위치에 WRITE 한다.

  3005|   WRITE:   / TEXT-CA2,
  3006|            4 TEXT-CA2,
  3007|            5 TEXT-WA5 COLOR COL_BACKGROUND INTENSIFIED OFF, 35 VAT_BUS,
  3008|           59 TEXT-CA2,
  3009|           62 TEXT-CA2, 63 TEXT-WA5 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3010|           93 VAT_COM, 117 TEXT-CA2,
  3011| *사업자등록번호 다음 선
  3012|           / TEXT-CA2,
  3013|           2 '공' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3014|           4 TEXT-CA9,
  3015|          59 TEXT-CA9,
  3016|          61 TEXT-CA2,
  3017|          60 '공' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3018|          62 TEXT-CA9, 117 TEXT-CA2.
  • EN: Print the supplier and buyer tax registration number boxes and separator lines on the tax invoice header.
  • 업무 키워드: 세금계산서 상단, 사업자등록번호 출력
  • English: Tax Invoice, WRITE
  • 정의부(복사 시 함께 필요): VAT_BUS, VAT_COM
  • 위치: abap://ZFIR0141/ZFIR0141#L3005-L3018 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#FILL_VAT_NUMBER#C2

FORM WRITE_PART1-2 — ZFIR0141 L3773-L3896 (124줄)

세금계산서 파트1(공급자/공급받는자 보관용 2번째 양식)의 사업자등록번호·상호·대표자·주소·업종·업태를 WRITE 로 인쇄한다.

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

[output] FILL_VAT_NUMBER 로 공급자(사업장 STCD2)와 공급받는자(고객 STCD2)의 사업자등록번호를 자릿수 칸에 인쇄하고 사업장·고객 주소 문자열(ADDRESS_BUPLA/ADDRESS_COMP)을 만든다.

  3775|   PERFORM FILL_VAT_NUMBER USING BUPLA_ADRESSE-STCD2
  3776|                                 ADDRESS_ITAB-STCD2.
  3777| 
  3778|   CONCATENATE BUPLA_ADRESSE-CITY1
  3779| *  CONCATENATE bupla_adresse-city1 bupla_adresse-city2
  3780|              BUPLA_ADRESSE-STREET INTO ADDRESS_BUPLA SEPARATED BY SPACE.
  3781| 
  3782|   CONCATENATE ADDRESS_ITAB-ORT01
  3783| *  CONCATENATE address_itab-ort01 address_itab-ort02
  3784|               ADDRESS_ITAB-STRAS INTO ADDRESS_COMP SEPARATED BY SPACE.
  • EN: Print supplier and buyer tax registration numbers via FILL_VAT_NUMBER and build the business place and customer address strings.
  • 호출(파서): FILL_VAT_NUMBER
  • 업무 키워드: 사업자등록번호, 공급자, 공급받는자, 주소
  • English: Tax Number, Supplier, Buyer, Address
  • 정의부(복사 시 함께 필요): BUPLA_ADRESSE, ADDRESS_ITAB, ADDRESS_BUPLA, ADDRESS_COMP
  • 위치: abap://ZFIR0141/ZFIR0141#L3775-L3784 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_PART1-2#C1

[output] 세금계산서 파트1 양식에 공급자 상호(NAME1)·대표자(KR_REPRES)·주소·업종·업태와 공급받는자 상호·대표자·주소·업태·업종을 양식 컬럼 위치에 맞춰 WRITE 한다.

  3786|   WRITE:/ TEXT-CA2,
  3787|         4 TEXT-CA2,
  3788|         5 TEXT-WA7 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3789|         9 TEXT-CA2,
  3790| *2005년 11월3일 회사이름출력시 사업장 배제.. 수정자 박진성
  3791|        10 BUPLA_ADRESSE-NAME1,
  3792|        35 TEXT-CA2,
  3793|        36 TEXT-WA8 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3794|        42 TEXT-CA2,
  3795|        43 BUPLA_ADRESSE-KR_REPRES, "공급자 대표자 성명
  3796|        59 TEXT-CA2,
  3797|        60 '급' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3798|        62 TEXT-CA2,
  3799|        63 TEXT-WA7 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3800|        67 TEXT-CA2,
  3801|        68 ADDRESS_ITAB-NAME,
  3802|        93 TEXT-CA2,
  3803|        94 TEXT-WA8 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3804|       100 TEXT-CA2,
  3805|       101 ADDRESS_ITAB-REPRE, " 공급받는자 대표자 성명
  3806|       117 TEXT-CA2.
  3807| 
  3808| *이름2
  3809|   WRITE:/ TEXT-CA2,
  3810|         2 '급' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3811|         4 TEXT-CA2,
  3812|         5 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3813|         9 TEXT-CA2,
  3814|        35 TEXT-CA2,
  3815|        36 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3816|        42 TEXT-CA2,
  3817|        59 TEXT-CA2,
  3818|        60 '받' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3819|        62 TEXT-CA2,
  3820|        63 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3821|        67 TEXT-CA2,
  3822|        93 TEXT-CA2,
  3823|        94 TEXT-XA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3824|       100 TEXT-CA2,
  3825|       117 TEXT-CA2.
  3826| 
  3827| *이름 다음 선2
  3828|   WRITE:/ TEXT-CA2,
  3829|         2 '  ' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3830|         4 TEXT-CA9,
  3831|        59 TEXT-CA9,
  3832|        60 '는' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3833|        62 TEXT-CA9,
  3834|       117 TEXT-CA2.
  3835| 
  3836| *주소2
  3837|   WRITE:/ TEXT-CA2,
  3838|         2 '자' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3839|         4 TEXT-CA2,
  3840|         5 TEXT-XA4 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3841|         9 TEXT-CA2,
  3842|        10 ADDRESS_BUPLA,
  3843|        59 TEXT-CA2,
  3844|        60 '자' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3845|        62 TEXT-CA2,
  3846|        63 TEXT-XA4 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3847|        67 TEXT-CA2,
  3848|        68 ADDRESS_COMP,
  3849|       117 TEXT-CA2.
  3850| 
  3851|   WRITE:/ TEXT-CA2,
  3852|         4 TEXT-CA9,
  3853|        59 TEXT-CA2,
  3854|        60 '  ' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3855|        62 TEXT-CA9,
  3856|       117 TEXT-CA2.
  3857| 
  3858| * 업종/업태
  3859|   WRITE:/ TEXT-CA2,
  3860|         4 TEXT-CA2,
  3861|         5 TEXT-XA5 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3862|         9 TEXT-CA2,
  3863|        10 BUPLA_ADRESSE-KR_INDTYPE,
  3864|        35 TEXT-CA2,
  3865|        36 TEXT-XA6 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3866|        42 TEXT-CA2, 43 BUPLA_ADRESSE-KR_BUSTYPE,
  3867|        59 TEXT-CA2,
  3868|        60 ' ' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3869|        62 TEXT-CA2,
  3870|        63 TEXT-XA5 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3871|        67 TEXT-CA2,
  3872| *2004.5.28 업종과 업태 필드교체..
  3873| *       68 address_itab-indtyp,
  3874|        68 ADDRESS_ITAB-BUSTYP,
  3875|        93 TEXT-CA2,
  3876|        94 TEXT-XA6 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3877|       100 TEXT-CA2,
  3878|       101 ADDRESS_ITAB-INDTYP,
  3879|       117 TEXT-CA2.
  3880| 
  3881|   WRITE:/ TEXT-CA1,
  3882|       117 TEXT-CA2.
  3883| 
  3884|   WRITE:/ TEXT-CA2,
  3885|         4 TEXT-YA9 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3886|        10 TEXT-CA2,
  3887|        18 TEXT-XA9 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3888|        38 TEXT-CA2,
  3889|        43 TEXT-YA1 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3890|        58 TEXT-CA2,
  3891|        63 TEXT-YA2 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3892|       117 TEXT-CA2.
  3893| 
  3894|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Print supplier name, representative, address, industry and business type together with the buyer's data in the part 1 area of the tax invoice form.
  • 업무 키워드: 세금계산서 파트1, 상호, 대표자, 업종, 업태, 주소 출력
  • English: Tax Invoice, Supplier, Buyer, Business Type, WRITE
  • 정의부(복사 시 함께 필요): BUPLA_ADRESSE, ADDRESS_ITAB, ADDRESS_BUPLA, ADDRESS_COMP
  • 위치: abap://ZFIR0141/ZFIR0141#L3786-L3894 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#WRITE_PART1-2#C2

FORM PRINT_SUM_LINE — ZFIR0141 L1014-L1136 (123줄)

세금계산서 합계 라인용으로 원천 유형(SD 전용/FI 전용/SD+FI)에 따라 총금액(FELD3)·공급가액(FELD1A)·세액(FELD1B) 문자열과 공란수(COUNT1)를 만든다.

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

[aggregation] 현재 세금계산서의 항목을 LOOP 하며 SD 전용(VBRK) 건은 NETWR+MWSBP 총금액을 FELD3 에, 공급가액 NETWR 을 EDIT MASK 로 FELD1A 에 넣고 12자리 기준 공란수 COUNT1(음수면 1 감소)을 계산하며 세액 MWSBP 를 FELD1B 에(0 이면 '0') 세팅한다.

  1016|   LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1017|                        AND KUNNR = AUSGLOP_ITAB-KUNNR
  1018|                        AND STCD  = AUSGLOP_ITAB-STCD
  1019|                        AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1020| 
  1021|     LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = CHECK_ITAB-BUKRS
  1022|                              AND KUNNR = CHECK_ITAB-KUNNR
  1023|                              AND STCD  = CHECK_ITAB-STCD
  1024|                              AND AUGBL = CHECK_ITAB-AUGBL.
  1025| 
  1026| * only sd-data
  1027|       IF CHECK_ITAB-AWTYP_SD = 'VBRK'.
  1028|         IF CHECK_ITAB-AWTYP_FI = ' '.
  1029| 
  1030|           TOT_AMOUNT = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP.
  1031| 
  1032|           WRITE TOT_AMOUNT TO FELD3 CURRENCY 'KRW'.
  1033| *          CURRENCY t001-waers USING EDIT MASK 'V____________'.
  1034|           SHIFT FELD3 LEFT DELETING LEADING '0'.
  1035| 
  1036|           WRITE ALL_ITEMS_ITAB-NETWR TO FELD1A
  1037|           CURRENCY T001-WAERS USING EDIT MASK 'V____________'.
  1038|           SHIFT FELD1A LEFT DELETING LEADING '0'.
  1039|           COUNT1 = 12 - STRLEN( FELD1A ).
  1040|           SHIFT FELD1A RIGHT DELETING TRAILING ' '.
  1041| 
  1042|           IF FELD1A < 0.
  1043|             COUNT1 = COUNT1 - 1.
  1044|           ENDIF.
  1045| 
  1046|           IF ALL_ITEMS_ITAB-MWSBP <> 0.
  1047|             WRITE ALL_ITEMS_ITAB-MWSBP TO FELD1B
  1048|             CURRENCY T001-WAERS USING EDIT MASK 'V___________'.
  1049|             SHIFT FELD1B LEFT DELETING LEADING '0'.
  1050|             SHIFT FELD1B RIGHT DELETING TRAILING ' '.
  1051|           ELSE.
  1052|             WRITE TEXT-ZER TO FELD1B.
  1053| * 0 instead of "Zero tax"
  1054|             WRITE '0' TO FELD1B RIGHT-JUSTIFIED.
  1055|           ENDIF.
  1056| 
  1057|         ENDIF.
  1058|       ENDIF.
  • EN: For pure SD billing items, compute the total amount, format tax base into FELD1A with blank count COUNT1 and tax amount into FELD1B (or '0' when zero).
  • SAP 객체: VBRK, T001
  • 업무 키워드: 합계 라인, 총금액, 공급가액, 세액, 공란수, SD 빌링
  • English: Sum Line, Total Amount, Tax Base, Tax Amount, Blank Count
  • 정의부(복사 시 함께 필요): CHECK_ITAB, AUSGLOP_ITAB, AUGBL, ALL_ITEMS_ITAB, TOT_AMOUNT, FELD3, FELD1A, T001, COUNT1, FELD1B
  • 위치: abap://ZFIR0141/ZFIR0141#L1016-L1058 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_SUM_LINE#C1

[calculation] FI 전용(BKPF) 건은 총금액을 FELD3 에, 현지통화 공급가액 HWBAS 를 FELD1A 에 넣고 공란수 COUNT1 을 계산하며 세액 HWSTE 를 FELD1B 에(0 이면 '0') 세팅한다.

  1061|       IF CHECK_ITAB-AWTYP_SD = ' '.
  1062|         IF CHECK_ITAB-AWTYP_FI = 'BKPF'.
  1063| 
  1064|           TOT_AMOUNT = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP.
  1065| 
  1066|           WRITE TOT_AMOUNT TO FELD3 CURRENCY 'KRW'.
  1067| *          CURRENCY t001-waers USING EDIT MASK 'V____________'.
  1068|           SHIFT FELD3 LEFT DELETING LEADING '0'.
  1069| 
  1070|           WRITE ALL_ITEMS_ITAB-HWBAS CURRENCY T001-WAERS TO FELD1A.
  1071| 
  1072|           WRITE ALL_ITEMS_ITAB-HWBAS TO FELD1A
  1073|           CURRENCY T001-WAERS USING EDIT MASK 'V____________'.
  1074|           SHIFT FELD1A LEFT DELETING LEADING '0'.
  1075|           COUNT1 = 12 - STRLEN( FELD1A ).
  1076|           SHIFT FELD1A RIGHT DELETING TRAILING ' '.
  1077| 
  1078|           IF FELD1A < 0.
  1079|             COUNT1 = COUNT1 - 1.
  1080|           ENDIF.
  1081| 
  1082|           IF  ALL_ITEMS_ITAB-HWSTE <> 0.
  1083|             WRITE ALL_ITEMS_ITAB-HWSTE CURRENCY T001-WAERS TO FELD1B.
  1084| 
  1085|             WRITE ALL_ITEMS_ITAB-HWSTE TO FELD1B
  1086|             CURRENCY T001-WAERS USING EDIT MASK 'V___________'.
  1087|             SHIFT FELD1B LEFT DELETING LEADING '0'.
  1088|             SHIFT FELD1B RIGHT DELETING TRAILING ' '.
  1089|           ELSE.
  1090|             WRITE TEXT-ZER TO FELD1B.
  1091| * 0 instead of "zero tax"
  1092|             WRITE '0' TO FELD1B RIGHT-JUSTIFIED.
  1093|           ENDIF.
  1094|         ENDIF.
  1095|       ENDIF.
  • EN: For pure FI documents, format total amount, local-currency tax base HWBAS with blank count and tax amount HWSTE into the sum line fields.
  • SAP 객체: BKPF, T001
  • 업무 키워드: FI 전표, 공급가액, 세액, 공란수, 합계 라인
  • English: FI Document, Tax Base, Tax Amount, Blank Count
  • 정의부(복사 시 함께 필요): CHECK_ITAB, TOT_AMOUNT, ALL_ITEMS_ITAB, FELD3, T001, FELD1A, COUNT1, FELD1B
  • 위치: abap://ZFIR0141/ZFIR0141#L1061-L1095 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_SUM_LINE#C2

[calculation] SD+FI 혼합 건은 NETWR+MWSBP 총금액을 FELD3 에, 공급가액 NETWR 을 FELD1A 에 넣고 공란수 COUNT1 을 계산하며 세액 MWSBP 를 FELD1B 에(0 이면 '0') 세팅한다.

  1098|       IF CHECK_ITAB-AWTYP_SD = 'VBRK'.
  1099|         IF CHECK_ITAB-AWTYP_FI = 'BKPF'.
  1100| 
  1101|           TOT_AMOUNT = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP.
  1102| 
  1103|           WRITE TOT_AMOUNT TO FELD3 CURRENCY 'KRW'.
  1104| *          CURRENCY t001-waers USING EDIT MASK 'V____________'.
  1105| 
  1106|           SHIFT FELD3 LEFT DELETING LEADING '0'.
  1107| 
  1108|           WRITE ALL_ITEMS_ITAB-NETWR TO FELD1A
  1109|           CURRENCY T001-WAERS USING EDIT MASK 'V____________'.
  1110|           SHIFT FELD1A LEFT DELETING LEADING '0'.
  1111|           COUNT1 = 12 - STRLEN( FELD1A ).
  1112|           SHIFT FELD1A RIGHT DELETING TRAILING ' '.
  1113| 
  1114|           IF FELD1A < 0.
  1115|             COUNT1 = COUNT1 - 1.
  1116|           ENDIF.
  1117| 
  1118|           IF ALL_ITEMS_ITAB-MWSBP <> 0.
  1119| 
  1120|             WRITE ALL_ITEMS_ITAB-MWSBP TO FELD1B
  1121|             CURRENCY T001-WAERS USING EDIT MASK 'V____________'.
  1122|             SHIFT FELD1B LEFT DELETING LEADING '0'.
  1123|             SHIFT FELD1B RIGHT DELETING TRAILING ' '.
  1124|           ELSE.
  1125|             WRITE TEXT-ZER TO FELD1B.
  1126| * 0 instead of "Zero tax"
  1127|             WRITE '0' TO FELD1B RIGHT-JUSTIFIED.
  1128|           ENDIF.
  1129|         ENDIF.
  1130|       ENDIF.
  • EN: For mixed SD+FI documents, format total amount, tax base with blank count and tax amount into the sum line fields.
  • SAP 객체: T001
  • 업무 키워드: SD+FI 혼합, 합계 라인, 공급가액, 세액, 공란수
  • English: Sum Line, Tax Base, Tax Amount, Blank Count
  • 정의부(복사 시 함께 필요): CHECK_ITAB, TOT_AMOUNT, ALL_ITEMS_ITAB, FELD3, FELD1A, T001, COUNT1, FELD1B
  • 위치: abap://ZFIR0141/ZFIR0141#L1098-L1130 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_SUM_LINE#C3

FORM FILL_ITEM_TABLES — ZFIR0141 L4527-L4548 (22줄)

현재 세금계산서의 CHECK_ITAB 항목을 돌며 원천 유형별(순수 SD, SD+FI, 순수 FI)로 인쇄용 품목 라인을 채우는 하위 FORM 을 호출한다.

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

[control_flow] 세금계산서(BUKRS/KUNNR/STCD/AUGBL) 별 CHECK_ITAB 을 LOOP 하며 PRINT_ITEM_PURE_SD, PRINT_ITEM_SD_AND_FI, PRINT_ITEM_PURE_FI 를 차례로 호출해 품목 라인 MATZEIL1~4 를 구성한다.

  4536|   LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4537|                        AND KUNNR = AUSGLOP_ITAB-KUNNR
  4538|                        AND STCD  = AUSGLOP_ITAB-STCD
  4539|                        AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4540| * SD-data
  4541|     PERFORM PRINT_ITEM_PURE_SD.
  4542| * SD + FI-data
  4543|     PERFORM PRINT_ITEM_SD_AND_FI.
  4544| * FI-data
  4545|     PERFORM PRINT_ITEM_PURE_FI.
  4546|   ENDLOOP.
  • EN: Loop over CHECK_ITAB of the current tax invoice and dispatch to the pure-SD, SD+FI and pure-FI item filling routines.
  • 호출(파서): PRINT_ITEM_PURE_SD, PRINT_ITEM_SD_AND_FI, PRINT_ITEM_PURE_FI
  • 업무 키워드: 품목 라인 구성, 원천 유형, SD, FI
  • English: Item Line, Billing Document, FI Document
  • 정의부(복사 시 함께 필요): CHECK_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L4536-L4546 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#FILL_ITEM_TABLES#C1

FORM PRINT_ITEM_PURE_SD — ZFIR0141 L1143-L1190 (48줄)

순수 SD 빌링(VBRK 전용) 세금계산서의 품목 라인을 최대 4줄로 채우거나, 추가 시트 인쇄 시 품목별 평균 단가를 계산한다(인쇄용).

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

[control_flow] 원천이 SD 빌링(VBRK)이고 FI 전표가 없는 순수 SD 건에서 세금계산서 인쇄 모드이면 품목 수에 따라 MATZEIL1~4 를 초기화한 뒤 PRINT_LINES 로 최대 4개 품목 라인을 채운다.

  1145|   IF CHECK_ITAB-AWTYP_SD = 'VBRK'.
  1146| 
  1147|     IF CHECK_ITAB-AWTYP_FI = ' '.
  1148| * if document is a pure SD-document --> print max. 4 lines
  1149|       IF CHK_PRTI = 'X'.
  1150|         CLEAR LINE_COUNT_PR.
  1151| * if number of lines < 5
  1152| * 4th Mat line in tax invoice
  1153|         CLEAR MATNUM.
  1154|         CLEAR NUMBER.
  1155| 
  1156|         IF LINE_COUNT < 5.
  1157|           PERFORM PRINT_LINES.
  1158|         ELSE.
  1159|           CLEAR MATZEIL1.
  1160|           CLEAR MATZEIL2.
  1161|           CLEAR MATZEIL3.
  1162|           CLEAR MATZEIL4.
  1163|           CLEAR COUNT.
  1164| 
  1165|           PERFORM PRINT_LINES.
  1166|         ENDIF.
  • EN: For pure SD billing documents in tax invoice print mode, reset item lines and call PRINT_LINES to fill up to four item lines.
  • 호출(파서): PRINT_LINES, PRINT_LINES
  • SAP 객체: VBRK
  • 업무 키워드: 순수 SD 빌링, 품목 라인, 세금계산서 인쇄
  • English: Billing Document, Item Line, Tax Invoice
  • 정의부(복사 시 함께 필요): CHECK_ITAB, CHK_PRTI, LINE_COUNT_PR, MATNUM, NUMBER, LINE_COUNT, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3, MATZEIL4, COUNT
  • 위치: abap://ZFIR0141/ZFIR0141#L1145-L1166 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_SD#C1

[calculation] 추가 시트 인쇄 시 해당 세금계산서의 품목별 평균 단가(NETWR/FKIMG)를 계산해 AUSGLOP_MAT_ITAB-UPRICE 에 MODIFY 한다.

  1169|         LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1170|                                    AND KUNNR = AUSGLOP_ITAB-KUNNR
  1171|                                    AND STCD  =  AUSGLOP_ITAB-STCD
  1172|                                    AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1173| 
  1174| * calculating the unit price as the average price of the reported
  1175| * material
  1176|           IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL.
  1177|             AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) /
  1178|                                       ( AUSGLOP_MAT_ITAB-FKIMG ).
  1179|           ELSE.
  1180|             AUSGLOP_MAT_ITAB-UPRICE = ' '.
  1181|           ENDIF.
  1182|           MODIFY AUSGLOP_MAT_ITAB.
  1183|         ENDLOOP.
  • EN: For the additional sheet, compute the average unit price per material line and update AUSGLOP_MAT_ITAB.
  • 테이블(파서): read - / write AUSGLOP_MAT_ITAB
  • 업무 키워드: 추가 시트, 평균 단가, 품목
  • English: Additional Sheet, Unit Price
  • 정의부(복사 시 함께 필요): AUSGLOP_MAT_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L1169-L1183 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_SD#C2

FORM PRINT_LINES — ZFIR0141 L1341-L1438 (98줄)

세금계산서별 판매 품목(AUSGLOP_MAT_ITAB)을 일자·자재 순으로 정렬해 최대 4개 품목 라인(MATZEIL1~4)에 배치하고, 5개 이상이면 4번째 라인을 '외' 요약 라인으로 만든다(인쇄용).

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

[output] 판매 품목을 세금계산서번호·일자·자재로 정렬한 뒤 현재 세금계산서의 품목을 순서대로 13번째 라인 MATZEIL13 에 품목텍스트(ARKTX)·일자와 함께 옮기고 FILL_ITEM_AMOUNT 로 단가·수량·금액을 채운다.

  1343|   SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING.
  1344| 
  1345|   LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1346|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  1347|                              AND STCD  = AUSGLOP_ITAB-STCD
  1348|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1349| 
  1350|     LINE_COUNT_PR = LINE_COUNT_PR + 1.
  1351| 
  1352|     IF LINE_COUNT_PR = 1.
  1353|       MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL1.
  1354|       WRITE AUSGLOP_MAT_ITAB-ARKTX        TO MATZEIL1-ARKTX.
  1355|       MOVE  AUSGLOP_MAT_ITAB-FKIMG        TO MATZEIL1-FKIMG.
  1356|       MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL1-BUDAT.
  1357| * correct currency conversion error
  1358| *      LOOP AT all_items_itab  WHERE bukrs = ausglop_itab-bukrs
  1359| *                                AND kunnr = ausglop_itab-kunnr
  1360| *                                AND stcd  = ausglop_itab-stcd
  1361| *                                AND augbl = ausglop_itab-augbl.
  1362| *        ausglop_mat_itab-netwr =
  1363| *                 ausglop_mat_itab-netwr + all_items_itab-deltan.
  1364| *        ausglop_mat_itab-mwsbp =
  1365| *                 ausglop_mat_itab-mwsbp + all_items_itab-deltam.
  1366| *      ENDLOOP.
  1367| 
  1368|       PERFORM FILL_ITEM_AMOUNT TABLES AUSGLOP_MAT_ITAB
  1369|                                USING  MATZEIL1.
  1370|     ENDIF.
  1371| 
  1372|     IF LINE_COUNT_PR = 2.
  1373|       MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL2.
  1374|       WRITE AUSGLOP_MAT_ITAB-ARKTX        TO MATZEIL2-ARKTX.
  1375|       MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL2-BUDAT.
  1376| * calculating the unit price as the average price of the reported
  1377| * material
  1378| 
  1379|       PERFORM FILL_ITEM_AMOUNT TABLES AUSGLOP_MAT_ITAB
  1380|                                USING MATZEIL2.
  1381| 
  1382|     ENDIF.
  1383| 
  1384|     IF LINE_COUNT_PR = 3.
  1385|       MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL3.
  1386|       WRITE AUSGLOP_MAT_ITAB-ARKTX        TO MATZEIL3-ARKTX.
  1387|       MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL3-BUDAT.
  1388| * calculating the unit price as the average price of the reported
  1389| * material
  1390|       PERFORM FILL_ITEM_AMOUNT TABLES AUSGLOP_MAT_ITAB
  1391|                                USING MATZEIL3.
  1392|     ENDIF.
  • EN: Sort material lines and fill tax invoice item lines 1-3 with material text, date and amounts via FILL_ITEM_AMOUNT.
  • 호출(파서): FILL_ITEM_AMOUNT, FILL_ITEM_AMOUNT, FILL_ITEM_AMOUNT
  • 업무 키워드: 품목 라인, 정렬, 세금계산서 품목, 단가
  • English: Item Line, Sort, Tax Invoice, Material Text
  • 정의부(복사 시 함께 필요): AUSGLOP_MAT_ITAB, AUGBL, AUSGLOP_ITAB, LINE_COUNT_PR, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3
  • 위치: abap://ZFIR0141/ZFIR0141#L1343-L1392 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_LINES#C1

[output] 품목이 5개 미만이면 4번째 품목을 MATZEIL4 에 그대로 채우고, 5개 이상이면 ALL_MAT_ITAB 의 합계 금액(KRW 편집)과 4번째 자재명·'외' 표기로 나머지 품목을 요약한 4번째 라인을 만든다.

  1395|     IF LINE_COUNT > 4 AND LINE_COUNT_PR = 4.
  1396|       MOVE AUSGLOP_MAT_ITAB-MATNR TO MATNUM.
  1397|       NUMBER = LINE_COUNT - 4.
  1398|     ENDIF.
  1399| 
  1400| * Item 개수가 5개미만일 경우
  1401|     IF LINE_COUNT < 5.
  1402|       IF LINE_COUNT_PR = 4.
  1403|         MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL4.
  1404|         WRITE AUSGLOP_MAT_ITAB-ARKTX        TO MATZEIL4-ARKTX.
  1405|         MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL4-BUDAT.
  1406| * calculating the unit price as the average price of the reported
  1407| * material
  1408|         PERFORM FILL_ITEM_AMOUNT TABLES AUSGLOP_MAT_ITAB
  1409|                                  USING MATZEIL4.
  1410|       ENDIF.
  1411| * item 개수가 5개 이상일 경우
  1412|     ELSE.
  1413|       READ TABLE ALL_MAT_ITAB WITH KEY BUKRS = AUSGLOP_ITAB-BUKRS
  1414|                                        KUNNR = AUSGLOP_ITAB-KUNNR
  1415|                                        STCD  = AUSGLOP_ITAB-STCD
  1416|                                        AUGBL = AUSGLOP_ITAB-AUGBL
  1417|                                        FLAG  = 'X'.
  1418|       IF SY-SUBRC = 0.
  1419| * material description
  1420|         WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL4-ARKTX.
  1421|         WRITE ALL_MAT_ITAB-NETWR CURRENCY 'KRW'  TO MATZEIL4-NETWR.
  1422|         WRITE ALL_MAT_ITAB-MWSBP CURRENCY 'KRW'  TO MATZEIL4-MWSBP.
  1423|         MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD          TO MATZEIL4-BUDAT.
  1424| * 4th mat line in tax invoice
  1425|         MOVE MATNUM TO MATZEIL4-MATNR.                      "2
  1426|         MOVE '외'   TO MATZEIL4-VRKME.
  1427| *        MOVE number TO matzeil4-fkimg.
  1428| 
  1429| *       WRITE number TO matzeil4-uprice USING EDIT MASK'_______________'
  1430| *                                                     RIGHT-JUSTIFIED.
  1431| *        MOVE text-034 TO matzeil4-uprice+5(3).
  1432|       ENDIF.
  1433| 
  1434|     ENDIF.
  • EN: If fewer than five items, fill line 4 normally; otherwise build a summary fourth line with KRW totals from ALL_MAT_ITAB, the fourth material and the '외' (and others) marker.
  • 호출(파서): FILL_ITEM_AMOUNT
  • 업무 키워드: 요약 라인, 외 N건, 품목 수, 합계 금액
  • English: Summary Line, Item Count, Total Amount
  • 정의부(복사 시 함께 필요): LINE_COUNT, LINE_COUNT_PR, AUSGLOP_MAT_ITAB, MATNUM, NUMBER, MATTYPE, MATZEIL4, ALL_ITEMS_ITAB, ALL_MAT_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L1395-L1434 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_LINES#C2

FORM FILL_ITEM_AMOUNT — ZFIR0141 L3560-L3579 (20줄)

품목 테이블 행의 평균 단가(공급가액/수량)를 계산하고 단가·수량·공급가액·부가세액을 KRW 통화 편집으로 세금계산서 품목 라인(MATZEIL)에 옮긴다.

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

[calculation] 수량(FKIMG)이 있으면 공급가액(NETWR)/수량으로 평균 단가 UPRICE 를 계산하고, 단가·공급가액·부가세액(MWSBP)을 KRW 통화 편집으로, 수량은 그대로 세금계산서 품목 라인 구조 P_MATZEIL 에 넣는다.

  3563|   IF NOT P_MAT_ITAB-FKIMG IS INITIAL.
  3564|     P_MAT_ITAB-UPRICE = ( P_MAT_ITAB-NETWR ) / ( P_MAT_ITAB-FKIMG ).
  3565|   ELSE.
  3566|     P_MAT_ITAB-UPRICE = ' '.
  3567|   ENDIF.
  3568| 
  3569| * 단가
  3570|   WRITE P_MAT_ITAB-UPRICE CURRENCY 'KRW' TO P_MATZEIL-UPRICE.
  3571| 
  3572| * 수량
  3573|   MOVE  P_MAT_ITAB-FKIMG TO P_MATZEIL-FKIMG.
  3574| * 공급가액
  3575|   WRITE P_MAT_ITAB-NETWR CURRENCY 'KRW' TO P_MATZEIL-NETWR.
  3576| * 부가세액
  3577|   WRITE P_MAT_ITAB-MWSBP CURRENCY 'KRW' TO P_MATZEIL-MWSBP .
  • EN: Compute the average unit price as net value divided by quantity and write unit price, net value and VAT amount in KRW plus quantity into the tax invoice item line structure.
  • 업무 키워드: 평균 단가, 수량, 공급가액, 부가세액, 품목 라인
  • English: Unit Price, Quantity, Net Value, VAT Amount
  • 위치: abap://ZFIR0141/ZFIR0141#L3563-L3577 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#FILL_ITEM_AMOUNT#C1

FORM PRINT_ITEM_SD_AND_FI — ZFIR0141 L1196-L1330 (135줄)

SD 빌링과 FI 전표가 함께 반제된 세금계산서의 품목 라인(MATZEIL1~4)을 KRW 편집 금액으로 채우고 품목별 평균 단가를 계산한다(인쇄용).

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

[calculation] SD+FI 혼합 건에 대해 MATZEIL4_ITAB 의 공급가액·세액을 KRW 로 편집해 4번째 라인 MATZEIL4 에 넣고 특별 G/L 여부와 라인 수(LINE_COUNT2)에 따라 자재명/품목텍스트를 실제 자재 또는 TEXT-023 으로 세팅한 뒤 SDFI 플래그를 켠다.

  1202|       LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1203|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  1204|                              AND STCD = AUSGLOP_ITAB-STCD
  1205|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1206| 
  1207|         LOOP AT MATZEIL4_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1208|                               AND KUNNR = AUSGLOP_ITAB-KUNNR
  1209|                               AND STCD = AUSGLOP_ITAB-STCD
  1210|                               AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1211| 
  1212|           WRITE MATZEIL4_ITAB-NETWR  CURRENCY 'KRW' TO MATZEIL4-NETWR.
  1213| *          MOVE matzeil4-netwr TO matzeil4-netwr.
  1214|           WRITE MATZEIL4_ITAB-MWSBP CURRENCY 'KRW' TO MATZEIL4-MWSBP.
  1215| *          MOVE matzeil4-mwsbp TO matzeil4-mwsbp.
  1216|           MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL4-BUDAT.
  1217| 
  1218|           IF CHECK_ITAB-SAVE_UMSKZ <> ' '.
  1219|             IF CHECK_ITAB-LINE_COUNT2 = 0.
  1220|               MOVE MATZEIL4_ITAB-MATNR TO MATZEIL4-MATNR.
  1221|               WRITE MATZEIL4_ITAB-ARKTX TO MATZEIL4-ARKTX.
  1222|             ELSE.
  1223|               MOVE TEXT-023 TO MATZEIL4-MATNR.
  1224|               MOVE TEXT-023 TO MATZEIL4-ARKTX.
  1225|             ENDIF.
  1226|           ELSEIF AUSGLOP_ITAB-FLAG = ' ' .
  1227|             MOVE TEXT-023 TO MATZEIL4-MATNR.
  1228|             MOVE TEXT-023 TO MATZEIL4-ARKTX.
  1229|           ENDIF.
  1230|         ENDLOOP.
  1231|       ENDLOOP.
  1232| 
  1233|       SDFI = 'X'.
  • EN: For mixed SD+FI clearing, write net value and tax in KRW into item line 4 and set the material text depending on the special G/L indicator, then flag SDFI.
  • 업무 키워드: SD+FI 혼합, 품목 라인 4, 특별 G/L, 품목 텍스트
  • English: Billing Document, FI Document, Item Line, Special G/L Indicator
  • 정의부(복사 시 함께 필요): ALL_ITEMS_ITAB, AUSGLOP_ITAB, AUGBL, MATZEIL4_ITAB, MATTYPE, MATZEIL4, AUSGLOP_MAT_ITAB, CHECK_ITAB, SDFI
  • 위치: abap://ZFIR0141/ZFIR0141#L1202-L1233 · confidence 0.75 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI#C1

[calculation] 세금계산서 인쇄 시 품목 수가 4 미만이면 AUSGLOP_MAT_ITAB 각 품목의 평균 단가(NETWR/FKIMG)를 계산해 단가·수량·공급가액·세액을 KRW 편집으로 MATZEIL1~3 에 채우고, 4 이상이면 ALL_ITEMS_SD_ITAB 합계를 MATZEIL4 에 TEXT-030 품명으로 요약한다.

  1235|       IF CHK_PRTI = 'X'.
  1236|         LINE_COUNT_PR = 0.
  1237| * if number of lines < 4
  1238|         IF LINE_COUNT < 4.
  1239|           LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS =  AUSGLOP_ITAB-BUKRS
  1240|                                      AND KUNNR =  AUSGLOP_ITAB-KUNNR
  1241|                                      AND STCD = AUSGLOP_ITAB-STCD
  1242|                                      AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1243|             LINE_COUNT_PR = LINE_COUNT_PR + 1.
  1244| 
  1245| * calculating the unit price as the average price of the reported
  1246| * material
  1247|             IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL.
  1248|               AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) /
  1249|                                         ( AUSGLOP_MAT_ITAB-FKIMG ).
  1250|             ELSE.
  1251|               AUSGLOP_MAT_ITAB-UPRICE = ' '.
  1252|             ENDIF.
  1253| 
  1254|             IF LINE_COUNT_PR = 1.
  1255|               MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL1.
  1256|               WRITE AUSGLOP_MAT_ITAB-UPRICE CURRENCY 'KRW'
  1257|                                             TO MATZEIL1-UPRICE.
  1258|               MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL1-FKIMG.
  1259|               WRITE AUSGLOP_MAT_ITAB-NETWR CURRENCY 'KRW'
  1260|                                            TO MATZEIL1-NETWR.
  1261|               WRITE AUSGLOP_MAT_ITAB-MWSBP CURRENCY 'KRW'
  1262|                                            TO MATZEIL1-MWSBP.
  1263|               MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL1-BUDAT.
  1264| 
  1265|             ENDIF.
  1266| 
  1267|             IF LINE_COUNT_PR = 2.
  1268|               MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL2.
  1269|               WRITE AUSGLOP_MAT_ITAB-UPRICE CURRENCY 'KRW'
  1270|                                             TO MATZEIL2-UPRICE.
  1271|               MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL2-FKIMG.
  1272|               WRITE AUSGLOP_MAT_ITAB-NETWR CURRENCY 'KRW'
  1273|                                            TO MATZEIL2-NETWR.
  1274|               WRITE AUSGLOP_MAT_ITAB-MWSBP CURRENCY 'KRW'
  1275|                                            TO MATZEIL2-MWSBP.
  1276|               MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL2-BUDAT.
  1277|             ENDIF.
  1278| 
  1279|             IF LINE_COUNT_PR = 3.
  1280|               MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL3.
  1281|               WRITE AUSGLOP_MAT_ITAB-UPRICE CURRENCY T001-WAERS
  1282|                                             TO MATZEIL3-UPRICE.
  1283| 
  1284|               WRITE AUSGLOP_MAT_ITAB-UPRICE CURRENCY 'KRW'
  1285|                                             TO MATZEIL3-UPRICE.
  1286|               MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL3-FKIMG.
  1287|               WRITE AUSGLOP_MAT_ITAB-NETWR CURRENCY 'KRW'
  1288|                                            TO MATZEIL3-NETWR.
  1289|               WRITE AUSGLOP_MAT_ITAB-MWSBP CURRENCY 'KRW'
  1290|                                            TO MATZEIL3-MWSBP.
  1291|               MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL3-BUDAT.
  1292|             ENDIF.
  1293| 
  1294|           ENDLOOP.
  1295| 
  1296| * if number of lines >=4
  1297|         ELSE.
  1298|           LOOP AT ALL_ITEMS_SD_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1299|                                       AND KUNNR = AUSGLOP_ITAB-KUNNR
  1300|                                       AND STCD  = AUSGLOP_ITAB-STCD
  1301|                                       AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1302|             WRITE ALL_ITEMS_ITAB-NETWR CURRENCY 'KRW' TO MATZEIL4-NETWR.
  1303|             WRITE ALL_ITEMS_ITAB-MWSBP CURRENCY 'KRW' TO MATZEIL4-MWSBP.
  1304|             MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL4-BUDAT.
  1305|             MOVE TEXT-030 TO MATZEIL4-MATNR.
  1306|           ENDLOOP.
  1307|         ENDIF.
  • EN: When printing the tax invoice, compute the average unit price per material and fill item lines 1-3 in KRW if fewer than 4 lines, otherwise summarize SD totals into line 4 with text TEXT-030.
  • SAP 객체: T001
  • 업무 키워드: 평균 단가, 품목 라인, 세금계산서 인쇄, 요약 라인
  • English: Unit Price, Item Line, Tax Invoice, Summary Line
  • 정의부(복사 시 함께 필요): CHK_PRTI, LINE_COUNT_PR, LINE_COUNT, AUSGLOP_MAT_ITAB, AUSGLOP_ITAB, AUGBL, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3, T001, ALL_ITEMS_SD_ITAB 외 2건
  • 위치: abap://ZFIR0141/ZFIR0141#L1235-L1307 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI#C2

[calculation] 추가 시트 인쇄 시 AUSGLOP_MAT_ITAB 각 품목의 평균 단가(NETWR/FKIMG)를 계산해 UPRICE 에 MODIFY 로 반영한다.

  1310|       ELSE.
  1311|         LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  1312|                                       AND KUNNR = AUSGLOP_ITAB-KUNNR
  1313|                                       AND STCD =  AUSGLOP_ITAB-STCD
  1314|                                       AND AUGBL = AUSGLOP_ITAB-AUGBL.
  1315| * calculating the unit price as the average price of the reported
  1316| * material
  1317|           IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL.
  1318| 
  1319|             AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) /
  1320|                                       ( AUSGLOP_MAT_ITAB-FKIMG ).
  1321|           ELSE.
  1322|             AUSGLOP_MAT_ITAB-UPRICE = ' '.
  1323|           ENDIF.
  1324|           MODIFY AUSGLOP_MAT_ITAB.
  1325|         ENDLOOP.
  1326|       ENDIF.
  • EN: For the additional sheet, compute the average unit price per material line and update AUSGLOP_MAT_ITAB.
  • 테이블(파서): read - / write AUSGLOP_MAT_ITAB
  • 업무 키워드: 추가 시트, 평균 단가, 품목 갱신
  • English: Additional Sheet, Unit Price
  • 정의부(복사 시 함께 필요): AUSGLOP_MAT_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L1310-L1326 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI#C3

FORM PRINT_ITEM_PURE_FI — ZFIR0141 L3588-L3636 (49줄)

순수 FI 전표(BKPF 전용)로 반제된 세금계산서의 첫 품목 라인 MATZEIL1 을 전표 텍스트(SGTXT)와 KRW 편집된 공급가액·세액으로 채운다.

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

[calculation] 원천이 FI 전표(BKPF)이고 SD 빌링이 없는 경우 ALL_ITEMS_ITAB 을 돌며 세금계산서번호로 AUSGLOP_ITAB 을 READ 해 전기일을 넣고 전표 항목 텍스트(SGTXT)를 '/' 로 SPLIT 해 품명·수량·단위로 분리하며 공급가액(HWBAS)·세액(HWSTE)을 KRW 로 편집해 MATZEIL1 에 넣고, 특별 G/L 지시자(SAVE_UMSKZ)가 있으면 MATZEIL1_ITAB 의 자재명으로 대체한다.

  3594|   IF CHECK_ITAB-AWTYP_FI = 'BKPF'.
  3595|     IF CHECK_ITAB-AWTYP_SD = ' '.
  3596| * if the cleared invoices are pure FI-documents fill first line
  3597|       CLEAR MATZEIL1.
  3598|       LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  3599|                                AND KUNNR = AUSGLOP_ITAB-KUNNR
  3600|                                AND STCD  = AUSGLOP_ITAB-STCD
  3601|                                AND AUGBL = AUSGLOP_ITAB-AUGBL.
  3602| 
  3603| *        READ TABLE ausglop_itab INDEX l_lines.
  3604|         READ TABLE AUSGLOP_ITAB WITH KEY  AUGBL = ALL_ITEMS_ITAB-AUGBL.
  3605| 
  3606|         IF SY-SUBRC EQ 0.
  3607|           MOVE AUSGLOP_ITAB-BUDAT TO MATZEIL1-BUDAT.
  3608|         ENDIF.
  3609| 
  3610|         SPLIT AUSGLOP_ITAB-SGTXT AT '/' INTO MATZEIL1-MATNR
  3611|                                              MATZEIL1-FKIMG
  3612|                                              MATZEIL1-VRKME.
  3613| 
  3614|         WRITE ALL_ITEMS_ITAB-HWBAS TO MATZEIL1-NETWR CURRENCY 'KRW'.
  3615|         WRITE ALL_ITEMS_ITAB-HWSTE TO MATZEIL1-MWSBP CURRENCY 'KRW'.
  3616| 
  3617|         LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  3618|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  3619|                              AND STCD  = AUSGLOP_ITAB-STCD
  3620|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  3621|           IF CHECK_ITAB-SAVE_UMSKZ = ' '.
  3622| *            MOVE text-030 TO matzeil1-matnr.
  3623|           ELSE.
  3624|             LOOP AT MATZEIL1_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  3625|                                     AND KUNNR = AUSGLOP_ITAB-KUNNR
  3626|                                     AND STCD  = AUSGLOP_ITAB-STCD
  3627|                                     AND AUGBL = AUSGLOP_ITAB-AUGBL.
  3628|               MOVE MATZEIL1_ITAB-MATNR TO MATZEIL1-MATNR.
  3629|             ENDLOOP.
  3630|           ENDIF.
  3631|         ENDLOOP.
  3632|       ENDLOOP.
  3633|     ENDIF.
  3634| 
  3635|   ENDIF.
  • EN: For pure FI documents, fill the first tax invoice item line MATZEIL1 by splitting the line item text SGTXT into material/quantity/unit and writing tax base and tax amount in KRW; override the material with MATZEIL1_ITAB when a special G/L indicator exists.
  • SAP 객체: BKPF
  • 업무 키워드: 순수 FI 전표, 품목 라인, 전표 텍스트 분리, 공급가액, 세액, 특별 G/L
  • English: FI Document, Item Line, Line Item Text, Tax Base, Special G/L Indicator
  • 정의부(복사 시 함께 필요): CHECK_ITAB, MATTYPE, MATZEIL1, ALL_ITEMS_ITAB, AUSGLOP_ITAB, AUGBL, MATZEIL4_ITAB, MATZEIL1_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L3594-L3635 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_FI#C1

FORM FILL_AMOUNT — ZFIR0141 L3029-L3134 (106줄)

세금계산서 상단의 공급가액·세액을 자릿수별 칸(AMT_BASE/AMT_TAX)에 한 자리씩 배치하고 발행일·전표수·사업장 주소와 함께 WRITE 한다.

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

[calculation] 사업장 주소를 합치고 공급가액(A)과 세액(T)을 EDIT MASK 로 좌·우 정렬한 뒤 각 자리를 AMT_BASE/AMT_TAX 의 2칸 간격 위치에 한 자리씩 WRITE 하여 세금계산서 금액란(자릿수 칸) 형식으로 변환한다.

  3036|   CONCATENATE BUPLA_ADRESSE-CITY1 BUPLA_ADRESSE-STREET  INTO  L_AAA.
  3037| 
  3038| *****  CLEAR : yy,mm,dd, l_last_date, l_date.
  3039| 
  3040|   WRITE A TO BASE USING EDIT MASK 'LL____________'.
  3041|   WRITE BASE TO BASE USING EDIT MASK 'RR____________'.
  3042| 
  3043|   WRITE BASE+1 TO AMT_BASE+0(1).
  3044|   WRITE BASE+2 TO AMT_BASE+2(1).
  3045|   WRITE BASE+3 TO AMT_BASE+4(1).
  3046|   WRITE BASE+4 TO AMT_BASE+6(1).
  3047|   WRITE BASE+5 TO AMT_BASE+8(1).
  3048|   WRITE BASE+6 TO AMT_BASE+10(1).
  3049|   WRITE BASE+7 TO AMT_BASE+12(1).
  3050|   WRITE BASE+8 TO AMT_BASE+14(1).
  3051|   WRITE BASE+9 TO AMT_BASE+16(1).
  3052|   WRITE BASE+10 TO AMT_BASE+18(1).
  3053|   WRITE BASE+11 TO AMT_BASE+20(1).
  3054| 
  3055|   WRITE T TO TAX USING EDIT MASK 'LL___________'.
  3056|   WRITE TAX TO TAX USING EDIT MASK 'RR___________'.
  3057| 
  3058|   WRITE TAX+1 TO AMT_TAX+0(1).
  3059|   WRITE TAX+2 TO AMT_TAX+2(1).
  3060|   WRITE TAX+3 TO AMT_TAX+4(1).
  3061|   WRITE TAX+4 TO AMT_TAX+6(1).
  3062|   WRITE TAX+5 TO AMT_TAX+8(1).
  3063|   WRITE TAX+6 TO AMT_TAX+10(1).
  3064|   WRITE TAX+7 TO AMT_TAX+12(1).
  3065|   WRITE TAX+8 TO AMT_TAX+14(1).
  3066|   WRITE TAX+9 TO AMT_TAX+16(1).
  3067|   WRITE TAX+10 TO AMT_TAX+18(1).
  • EN: Concatenate the business place address and split the tax base and tax amount digit by digit into the boxed amount fields AMT_BASE and AMT_TAX of the tax invoice form.
  • 업무 키워드: 공급가액, 세액, 자릿수 칸, 금액 편집, 사업장 주소
  • English: Tax Base, Tax Amount, Digit Boxes, EDIT MASK
  • 정의부(복사 시 함께 필요): BUPLA_ADRESSE, L_AAA, BASE, AMT_BASE, TAX, AMT_TAX
  • 위치: abap://ZFIR0141/ZFIR0141#L3036-L3067 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#FILL_AMOUNT#C1

[output] 발행일(YY1/MM1/DD1)·전표 수(COUNT1)·자릿수별 공급가액·세액·사업장 주소를 세금계산서 상단 라인에 WRITE 한다.

  3115|   WRITE:/ TEXT-CA2, 2 TEXT-CA5,
  3116|         2 YY1,
  3117|         5 MM1,
  3118|         8 DD1,
  3119| *        2 byear,
  3120| *        5 bmonth,
  3121| *        8 bday,
  3122|        12 COUNT1,
  3123|        16 TEXT-CA2, 17 AMT_BASE, 39 AMT_TAX, 117 TEXT-CA2,
  3124| 
  3125|        60 '주    소 :',
  3126|        71 L_AAA.
  3127| 
  3128| 
  3129| 
  3130| 
  3131|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Print the issue date, document count, boxed tax base/tax amounts and address on the tax invoice header line.
  • 업무 키워드: 세금계산서 상단, 발행일, 공급가액, 세액 출력
  • English: Tax Invoice, Issue Date, WRITE
  • 정의부(복사 시 함께 필요): YY1, MM1, DD1, COUNT1, AMT_BASE, AMT_TAX, L_AAA
  • 위치: abap://ZFIR0141/ZFIR0141#L3115-L3131 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#FILL_AMOUNT#C2

FORM WRITE_ITEM_SD — ZFIR0141 L4611-L4671 (61줄)

SD 빌링 기준 세금계산서 품목 라인 한 줄의 공급가액·세액 부호와 정렬을 정리한 뒤 월/일·품목·단위·수량·단가·공급가액·세액을 WRITE 로 인쇄한다.

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

[calculation] 전기일에서 월·일을 추출하고 공급가액(NETWR)·세액(MWSBP) 문자열의 '-' 부호를 앞으로 옮긴 뒤 CIRCULAR SHIFT 로 우측 정렬한다.

  4616|   MM = P_MATZEIL-BUDAT+4(2). DD = P_MATZEIL-BUDAT+6(2).
  4617| * 마이너스부호 앞으로 보낸다
  4618|   IF P_MATZEIL-NETWR CA '-'.
  4619|     SHIFT P_MATZEIL-NETWR RIGHT CIRCULAR.
  4620|   ENDIF.
  4621|   CONDENSE P_MATZEIL-NETWR NO-GAPS.
  4622| * 오른쪽 정렬
  4623|   L_LEN =  STRLEN( P_MATZEIL-NETWR ).
  4624|   DO L_LEN TIMES.
  4625|     SHIFT P_MATZEIL-NETWR CIRCULAR.
  4626|   ENDDO.
  4627| * 마이너스부호 앞으로 보낸다
  4628|   IF P_MATZEIL-MWSBP CA '-'.
  4629|     SHIFT P_MATZEIL-MWSBP RIGHT CIRCULAR.
  4630|   ENDIF.
  4631|   CONDENSE P_MATZEIL-MWSBP NO-GAPS.
  4632| * 오른쪽 정렬
  4633|   L_LEN =  STRLEN( P_MATZEIL-MWSBP ).
  4634|   DO L_LEN TIMES.
  4635|     SHIFT P_MATZEIL-MWSBP CIRCULAR.
  4636|   ENDDO.
  • EN: Extract month/day from the posting date and normalize sign and right-alignment of net value and tax amount strings.
  • 업무 키워드: 월/일 추출, 음수 부호, 우측 정렬, 금액 편집
  • English: Formatting, Sign Handling, Posting Date
  • 정의부(복사 시 함께 필요): MM, DD, L_LEN
  • 위치: abap://ZFIR0141/ZFIR0141#L4616-L4636 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_SD#C1

[output] 월/일(0 이면 공백)·자재·판매단위·수량·단가·공급가액·세액을 KRW 통화 형식으로 세금계산서 양식 컬럼 위치에 WRITE 한다.

  4640|   WRITE: / TEXT-CA2.
  4641|   IF MM = 0. WRITE: 2 ' '. ELSE. WRITE: 2 MM. ENDIF.
  4642|   WRITE: 5 TEXT-CA2.
  4643|   IF DD = 0. WRITE: 6 ' '. ELSE. WRITE: 6 DD. ENDIF.
  4644|   WRITE:10 TEXT-CA2,
  4645|         11 P_MATZEIL-MATNR,			
  4646|         38 TEXT-CA2,			
  4647|         39 P_MATZEIL-VRKME, 44 TEXT-CA2, 45 P_MATZEIL-FKIMG(8),	
  4648| 	
  4649| 	
  4650|         54 TEXT-CA2,			
  4651|         55 P_MATZEIL-UPRICE CURRENCY 'KRW', 72 TEXT-CA2,		
  4652| 	
  4653|         73 P_MATZEIL-NETWR  CURRENCY 'KRW', 89 TEXT-CA2,		
  4654| 	
  4655|         90 P_MATZEIL-MWSBP  CURRENCY 'KRW', 103 TEXT-CA2,		
  4656| 	
  4657|        117 TEXT-CA2.
  4658|   			
  4659| 
  4660| *  수정전 로직    2004.4.23
  4661| *        11 p_matzeil-matnr,
  4662| *        28 text-ca2,
  4663| *        29 p_matzeil-vrkme, 34 text-ca2, 35 p_matzeil-fkimg(8),
  4664| *        45 text-ca2,
  4665| *        46 p_matzeil-uprice CURRENCY 'KRW', 63 text-ca2,
  4666| *        64 p_matzeil-netwr  CURRENCY 'KRW', 82 text-ca2,
  4667| *        83 p_matzeil-mwsbp  CURRENCY 'KRW', 98 text-ca2,
  4668| *       117 text-ca2.
  4669| WRITE: / TEXT-CA1, 117 TEXT-CA2.
  • EN: Print month/day, material, sales unit, quantity, unit price, net value and tax amount in KRW at fixed tax invoice columns.
  • 업무 키워드: 세금계산서 인쇄, 품목 라인, SD 빌링, 공급가액, 세액
  • English: Tax Invoice, Item Line, Billing, WRITE
  • 정의부(복사 시 함께 필요): MM, DD
  • 위치: abap://ZFIR0141/ZFIR0141#L4640-L4669 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_SD#C2

FORM WRITE_ITEM_FI — ZFIR0141 L4679-L4773 (95줄)

FI 전표 기준 세금계산서 품목 라인 한 줄의 단가를 공급가액/수량으로 계산하고 금액 부호·정렬을 정리한 뒤 월/일·품목·단위·수량·단가·공급가액·세액을 WRITE 로 인쇄한다.

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

[calculation] 수량(FKIMG)을 숫자로 변환하고 FM Z_FI_COMMA_DEL 로 공급가액(NETWR)의 콤마를 제거한 뒤 공급가액/수량/100 으로 인쇄용 단가(L_DANGA)를 계산한다.

  4688|   WRITE P_MATZEIL-FKIMG TO LN_FKIMG.
  4689| 
  4690|   CALL FUNCTION 'Z_FI_COMMA_DEL'
  4691|     EXPORTING
  4692|       INPUT  = P_MATZEIL-NETWR
  4693|     IMPORTING
  4694|       OUTPUT = LN_NETWR.
  4695| 
  4696| * O으로 나눌수 없다.
  4697|   IF LN_FKIMG NE ' ' OR  LN_FKIMG NE 0.
  4698|     L_DANGA = LN_NETWR / LN_FKIMG.
  4699|     L_DANGA = L_DANGA / 100.
  4700|   ENDIF.
  • EN: Convert quantity to numeric, strip commas from net value via FM Z_FI_COMMA_DEL and compute the unit price as net value divided by quantity (scaled by 100).
  • 호출(파서): Z_FI_COMMA_DEL
  • SAP 객체: Z_FI_COMMA_DEL
  • 업무 키워드: 단가 계산, 수량, 공급가액, 콤마 제거
  • English: Unit Price, Quantity, Net Value
  • 정의부(복사 시 함께 필요): LN_FKIMG, LN_NETWR, L_DANGA
  • 위치: abap://ZFIR0141/ZFIR0141#L4688-L4700 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI#C1

[calculation] 수량·공급가액·세액 문자열을 CIRCULAR SHIFT 로 우측 정렬하고 음수면 '-' 부호를 앞으로 옮겨 세금계산서 인쇄 형식으로 정리한다.

  4702|   L_LEN =  STRLEN( P_MATZEIL-FKIMG ).
  4703|   DO L_LEN TIMES.
  4704|     SHIFT P_MATZEIL-FKIMG CIRCULAR.
  4705|   ENDDO.
  4706| 
  4707| * 마이너스부호 앞으로 보내고 오른쪽 정렬
  4708|   IF P_MATZEIL-NETWR CA '-'.
  4709|     SHIFT P_MATZEIL-NETWR RIGHT CIRCULAR.
  4710|   ENDIF.
  4711|   CONDENSE P_MATZEIL-NETWR NO-GAPS.
  4712| 
  4713|   L_LEN =  STRLEN( P_MATZEIL-NETWR ).
  4714|   DO L_LEN TIMES.
  4715|     SHIFT P_MATZEIL-NETWR CIRCULAR.
  4716|   ENDDO.
  4717| 
  4718| * 마이너스부호 앞으로 보내고 오른쪽 정렬
  4719|   IF P_MATZEIL-MWSBP CA '-'.
  4720|     SHIFT P_MATZEIL-MWSBP RIGHT CIRCULAR.
  4721|   ENDIF.
  4722|   CONDENSE P_MATZEIL-MWSBP NO-GAPS.
  4723| 
  4724|   L_LEN =  STRLEN( P_MATZEIL-MWSBP ).
  4725|   DO L_LEN TIMES.
  4726|     SHIFT P_MATZEIL-MWSBP CIRCULAR.
  4727|   ENDDO.
  • EN: Right-align quantity, net value and tax amount strings and move the minus sign to the front for printing.
  • 업무 키워드: 우측 정렬, 음수 부호, 금액 편집
  • English: Formatting, Sign Handling
  • 정의부(복사 시 함께 필요): L_LEN
  • 위치: abap://ZFIR0141/ZFIR0141#L4702-L4727 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI#C2

[output] 월/일(0 이면 공백)·자재·단위·수량·단가(0 이면 공백)·공급가액·세액을 KRW 통화 형식으로 세금계산서 양식 컬럼 위치에 WRITE 한다.

  4729|   WRITE: / TEXT-CA2.
  4730|   IF MM = 0. WRITE: 2 ' '. ELSE. WRITE: 2 MM. ENDIF.
  4731|   WRITE: 5 TEXT-CA2.
  4732|   IF DD = 0. WRITE: 6 ' '. ELSE. WRITE: 6 DD. ENDIF.
  4733|   WRITE:10 TEXT-CA2,
  4734|         11 P_MATZEIL-MATNR, 38 TEXT-CA2,		
  4735|         39 P_MATZEIL-VRKME, 44 TEXT-CA2, 45 P_MATZEIL-FKIMG+5(8),	
  4736| 	
  4737|         54 TEXT-CA2.
  4738|   		
  4739| IF L_DANGA EQ 0.
  4740|   		
  4741| WRITE:55 ' '.
  4742|   		
  4743| ELSE.
  4744|   		
  4745| WRITE:55 L_DANGA CURRENCY 'KRW'.
  4746|   		
  4747| ENDIF.
  4748|   		
  4749| 		
  4750| WRITE:72 TEXT-CA2,		
  4751| *        46 p_matzeil-uprice CURRENCY 'KRW', 63 text-ca2,		
  4752|  73 P_MATZEIL-NETWR  CURRENCY 'KRW', 89 TEXT-CA2,		
  4753|  90 P_MATZEIL-MWSBP  CURRENCY 'KRW', 103 TEXT-CA2,		
  4754| 117 TEXT-CA2.
  4755|   		
  4756| 
  4757| *        11 p_matzeil-matnr, 28 text-ca2,
  4758| *        29 p_matzeil-vrkme, 34 text-ca2, 35 p_matzeil-fkimg+5(8),
  4759| *        45 text-ca2.
  4760| *  IF l_danga EQ 0.
  4761| *    WRITE:46 ' '.
  4762| *  ELSE.
  4763| *    WRITE:46 l_danga CURRENCY 'KRW'.
  4764| *  ENDIF.
  4765| *
  4766| *  WRITE:63 text-ca2,
  4767| **        46 p_matzeil-uprice CURRENCY 'KRW', 63 text-ca2,
  4768| *       64 p_matzeil-netwr  CURRENCY 'KRW', 82 text-ca2,
  4769| *       83 p_matzeil-mwsbp  CURRENCY 'KRW', 98 text-ca2,
  4770| *      117 text-ca2.
  4771| WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Print month/day, material, unit, quantity, unit price, net value and tax amount in KRW at fixed tax invoice columns.
  • 업무 키워드: 세금계산서 인쇄, 품목 라인, 공급가액, 세액
  • English: Tax Invoice, Item Line, WRITE
  • 정의부(복사 시 함께 필요): MM, DD, L_DANGA
  • 위치: abap://ZFIR0141/ZFIR0141#L4729-L4771 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI#C3

FORM CHECK_RECEIPT — ZFIR0141 L3232-L3266 (35줄)

세금계산서 하단 '영수' 구분 영역에 합계금액(FELD3)을 부호 정리·우측정렬해 WRITE 하고 영수 체크 아이콘과 '이 금액을 영수함' 문구를 표시한다.

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

[calculation] 합계금액 FELD3 을 문자로 편집하고 음수면 '-' 부호를 맨 앞으로 옮긴 뒤 공백을 제거하고 CIRCULAR SHIFT 로 우측 정렬한다.

  3236|   WRITE FELD3 TO L_TOTAL.
  3237| 
  3238| * 마이너스부호 앞으로 보낸다
  3239|   IF L_TOTAL CA '-'.
  3240|     SHIFT L_TOTAL RIGHT CIRCULAR.
  3241|   ENDIF.
  3242|   CONDENSE L_TOTAL NO-GAPS.
  3243| * 오른쪽 정렬
  3244|   L_LEN =  STRLEN( L_TOTAL ).
  3245|   DO L_LEN TIMES.
  3246|     SHIFT L_TOTAL CIRCULAR.
  3247|   ENDDO.
  • EN: Format the total amount, move the minus sign to the front, condense and right-align it for the tax invoice footer.
  • 업무 키워드: 합계금액, 음수 부호, 우측 정렬
  • English: Total Amount, Sign Handling, Formatting
  • 정의부(복사 시 함께 필요): FELD3, L_TOTAL, L_LEN
  • 위치: abap://ZFIR0141/ZFIR0141#L3236-L3247 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#CHECK_RECEIPT#C1

[output] 세금계산서 하단에 합계금액과 '영수' 구분(ICON_CHECKED) 및 '이 금액을 … 함' 문구를 양식 위치에 맞춰 WRITE 로 인쇄한다.

  3249|   WRITE:/ TEXT-CA2, 2 TEXT-YA5 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3250|        80 TEXT-CA2, 94 ICON_CHECKED AS ICON,
  3251|        98 TEXT-YA7 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3252|       117 TEXT-CA2.
  3253| 
  3254|   WRITE:/ TEXT-C13,
  3255|        84 '이 금액을' COLOR COL_BACKGROUND INTENSIFIED OFF,
  3256|      117 TEXT-CA2,
  3257|      105 '함' COLOR COL_BACKGROUND INTENSIFIED OFF.
  3258| 
  3259|   WRITE:/ TEXT-CA2, 2 TEXT-YA6 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3260|         3 L_TOTAL, 80 TEXT-CA2,
  3261|        98 TEXT-YA8 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3262|       117 TEXT-CA2.
  3263| 
  3264|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Print the tax invoice footer with the total amount, the receipt (영수) check icon and the receipt statement text.
  • SAP 객체: ICON_CHECKED
  • 업무 키워드: 세금계산서 하단, 영수 구분, 합계금액 출력
  • English: Tax Invoice, Receipt Indicator, WRITE
  • 정의부(복사 시 함께 필요): L_TOTAL
  • 위치: abap://ZFIR0141/ZFIR0141#L3249-L3264 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#CHECK_RECEIPT#C2

FORM CHECK_BILLING — ZFIR0141 L3275-L3307 (33줄)

세금계산서 하단 '청구' 구분 영역에 합계금액(FELD3)을 부호 정리·우측정렬해 WRITE 하고 청구 체크 아이콘을 표시한다.

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

[calculation] 합계금액 FELD3 을 문자로 편집하고 음수면 '-' 부호를 맨 앞으로 옮긴 뒤 공백을 제거하고 CIRCULAR SHIFT 로 우측 정렬한다.

  3279|   WRITE FELD3 TO L_TOTAL.
  3280| 
  3281| * 마이너스부호 앞으로 보낸다
  3282|   IF L_TOTAL CA '-'.
  3283|     SHIFT L_TOTAL RIGHT CIRCULAR.
  3284|   ENDIF.
  3285|   CONDENSE L_TOTAL NO-GAPS.
  3286| * 오른쪽 정렬
  3287|   L_LEN =  STRLEN( L_TOTAL ).
  3288|   DO L_LEN TIMES.
  3289|     SHIFT L_TOTAL CIRCULAR.
  3290|   ENDDO.
  • EN: Format the total amount, move the minus sign to the front, condense and right-align it for the tax invoice footer.
  • 업무 키워드: 합계금액, 음수 부호, 우측 정렬, 금액 편집
  • English: Total Amount, Sign Handling, Formatting
  • 정의부(복사 시 함께 필요): FELD3, L_TOTAL, L_LEN
  • 위치: abap://ZFIR0141/ZFIR0141#L3279-L3290 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#CHECK_BILLING#C1

[output] 세금계산서 하단에 합계금액과 '청구' 구분(ICON_CHECKED)을 양식 위치에 맞춰 WRITE 로 인쇄한다.

  3292|   WRITE:/ TEXT-CA2, 2 TEXT-YA5 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3293|        80 TEXT-CA2, 98 TEXT-YA7 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3294|       117 TEXT-CA2.
  3295| 
  3296|   WRITE:/ TEXT-C13, 117 TEXT-CA2.
  3297| 
  3298|   WRITE:/ TEXT-CA2, 2 TEXT-YA6 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3299|         3 L_TOTAL,
  3300|        80 TEXT-CA2,
  3301|        94 ICON_CHECKED AS ICON,
  3302|        98 TEXT-YA8 COLOR COL_BACKGROUND INTENSIFIED OFF,
  3303|       117 TEXT-CA2.
  3304| 
  3305|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Print the footer of the tax invoice with the total amount and the 'billing' (청구) check icon.
  • SAP 객체: ICON_CHECKED
  • 업무 키워드: 세금계산서 하단, 청구 구분, 합계금액 출력
  • English: Tax Invoice, Billing Indicator, WRITE
  • 정의부(복사 시 함께 필요): L_TOTAL
  • 위치: abap://ZFIR0141/ZFIR0141#L3292-L3305 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#CHECK_BILLING#C2

FORM SMARTBILL_TRANS — ZFIR0141 L4829-L5144 (316줄)

선택된 세금계산서를 스마트빌 전송용 헤더(GT_ZSBBSEG)·품목(GT_ZSBISSUE) 데이터로 변환하고 사업자단위과세 적용 시 공급자 정보를 대표 사업장으로 바꾼 뒤 이메일 확인 팝업(화면 100)을 띄운다.

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

[aggregation] 출력 대상을 고객·사업장·세금계산서번호로 정렬하고 세금계산서(AUGBL)별 전표를 DOC_CNT_ITAB 에 모아 마지막 전표를 읽으며, 판매 품목 수(LINE_COUNT)를 세고 고객 유형별 헤더 파트1을 KIND_OF_CUSTOMERS_SMARTBILL 로 채운다.

  4831|   SORT AUSGLOP_ITAB BY KUNNR BUPLA AUGBL.
  4832|   LOOP AT AUSGLOP_ITAB.
  4833| 
  4834|     LINE_COUNT_PR = 0.
  4835|     SEL_INDEX = SY-TABIX.
  4836|     GT_CNT = 0.
  4837| 
  4838| *    AT NEW AUGBL.
  4839|     CLEAR L_LINES.
  4840|     CLEAR DOC_CNT_ITAB.
  4841|     REFRESH DOC_CNT_ITAB.
  4842| 
  4843|     LOOP AT AUSGLOP_ITAB WHERE AUGBL =  AUSGLOP_ITAB-AUGBL.
  4844| 
  4845|       MOVE AUSGLOP_ITAB  TO DOC_CNT_ITAB.
  4846|       APPEND DOC_CNT_ITAB.
  4847|     ENDLOOP.
  4848| 
  4849| 
  4850|     SORT DOC_CNT_ITAB BY BUDAT BELNR .
  4851| 
  4852|     DESCRIBE TABLE DOC_CNT_ITAB LINES L_LINES.
  4853| 
  4854|     READ TABLE DOC_CNT_ITAB INDEX L_LINES.
  4855| 
  4856|     IF AUSGLOP_ITAB-AUGBL NE AUGBL.
  4857|       READ TABLE AUSGLOP_ITAB INDEX SEL_INDEX.
  4858|       CLEAR AUSGLOP_MAT_ITAB.
  4859|       CLEAR ALL_ITEMS_ITAB.
  4860| 
  4861| * number of item lines in ausglop_mat_itab --> number of sold
  4862| * materials
  4863|       LINE_COUNT = 0.
  4864|       LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4865|                                  AND KUNNR = AUSGLOP_ITAB-KUNNR
  4866|                                  AND STCD  = AUSGLOP_ITAB-STCD
  4867|                                  AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4868|         LINE_COUNT = LINE_COUNT + 1.
  4869|       ENDLOOP.
  4870| 
  4871| * 고객종류에 따라(On-Time, Master)
  4872|       PERFORM KIND_OF_CUSTOMERS_SMARTBILL.
  • EN: Sort output rows, collect documents per tax invoice number, count sold material lines and fill supplier/buyer header data via KIND_OF_CUSTOMERS_SMARTBILL.
  • 호출(파서): KIND_OF_CUSTOMERS_SMARTBILL
  • 업무 키워드: 세금계산서 번호, 전표 집계, 품목 수, 고객 유형
  • English: Tax Invoice, Document Count, Customer Type, Smartbill
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, BUPLA, AUGBL, LINE_COUNT_PR, SEL_INDEX, GT_CNT, L_LINES, DOC_CNT_ITAB, AUSGLOP_MAT_ITAB, ALL_ITEMS_ITAB, LINE_COUNT
  • 위치: abap://ZFIR0141/ZFIR0141#L4831-L4872 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C1

[calculation] 세금계산서 헤더의 총금액(DMBTR)·총공급가액(HWBAS)·총세액(HWSTE)·통화 KRW 를 세팅하고 전표 건수(G_LINES)와 세율 플래그(FL_TAX_RAT)에 따라 비고(ZREMK)를 TEXT-001/002/003 으로 정한다.

  4882|       GT_ZSBBSEG-ZTTAT = AUSGLOP_ITAB-DMBTR.
  4883| * 총공급가액
  4884|       GT_ZSBBSEG-HWBAS = AUSGLOP_ITAB-HWBAS.
  4885| * 총세액
  4886|       GT_ZSBBSEG-HWSTE = AUSGLOP_ITAB-HWSTE.
  4887| * 통화
  4888|       GT_ZSBBSEG-HWAER = 'KRW'.
  4889| 
  4890| *         비고
  4891|       IF G_LINES > 1 AND  FL_TAX_RAT EQ '0'.
  4892|         GT_ZSBBSEG-ZREMK = TEXT-001.
  4893|       ELSEIF G_LINES EQ 1 AND FL_TAX_RAT EQ '0'.
  4894|         GT_ZSBBSEG-ZREMK = TEXT-003.
  4895|       ELSEIF G_LINES > 1 AND FL_TAX_RAT EQ '1'.
  4896|         GT_ZSBBSEG-ZREMK = TEXT-002.
  4897|       ELSE.
  4898|       ENDIF.
  • EN: Set total amount, tax base, tax amount and currency on the e-tax invoice header and choose the remark text based on document count and tax rate flag.
  • SAP 객체: GT_ZSBBSEG
  • 업무 키워드: 총금액, 공급가액, 세액, 비고, 세율
  • English: Total Amount, Tax Base, Tax Amount, Remark
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, AUSGLOP_ITAB, G_LINES, FL_TAX_RAT
  • 위치: abap://ZFIR0141/ZFIR0141#L4882-L4898 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C2

[control_flow] FILL_ITEM_TABLES_SMARTBILL 로 품목 라인 MATZEIL1~4 를 채운 뒤 원천 유형(VBRK=SD 빌링, BKPF=FI 전표)에 따라 WRITE_ITEM_SD_SMARTBILL 또는 WRITE_ITEM_FI_SMARTBILL 로 GT_ZSBISSUE 품목을 적재한다.

  4907|       PERFORM FILL_ITEM_TABLES_SMARTBILL.
  4908| 
  4909|       IF AUSGLOP_ITAB-AWTYP = 'VBRK'.
  4910|         PERFORM WRITE_ITEM_SD_SMARTBILL USING MATZEIL1.
  4911|         PERFORM WRITE_ITEM_SD_SMARTBILL USING MATZEIL2.
  4912|         PERFORM WRITE_ITEM_SD_SMARTBILL USING MATZEIL3.
  4913|         PERFORM WRITE_ITEM_SD_SMARTBILL USING MATZEIL4.
  4914|       ELSEIF AUSGLOP_ITAB-AWTYP = 'BKPF'.
  4915|         PERFORM WRITE_ITEM_FI_SMARTBILL USING MATZEIL1.
  4916|         PERFORM WRITE_ITEM_FI_SMARTBILL USING MATZEIL2.
  4917|         PERFORM WRITE_ITEM_FI_SMARTBILL USING MATZEIL3.
  4918|         PERFORM WRITE_ITEM_FI_SMARTBILL USING MATZEIL4.
  4919| *            PERFORM write_lines_fi.
  4920|       ENDIF.
  • EN: Fill item lines and append them to GT_ZSBISSUE using the SD or FI item routine depending on the reference transaction type (VBRK/BKPF).
  • 호출(파서): FILL_ITEM_TABLES_SMARTBILL, WRITE_ITEM_SD_SMARTBILL, WRITE_ITEM_SD_SMARTBILL, WRITE_ITEM_SD_SMARTBILL, WRITE_ITEM_SD_SMARTBILL, WRITE_ITEM_FI_SMARTBILL, WRITE_ITEM_FI_SMARTBILL, WRITE_ITEM_FI_SMARTBILL, WRITE_ITEM_FI_SMARTBILL
  • SAP 객체: VBRK, BKPF
  • 업무 키워드: 품목 라인, SD 빌링, FI 전표, 스마트빌 품목
  • English: Billing Document, FI Document, Item, Reference Transaction
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3, MATZEIL4
  • 위치: abap://ZFIR0141/ZFIR0141#L4907-L4920 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C3

[calculation] 헤더에 회사코드·고객·전표번호·회계연도·사업장·전기일을 넣고 발행일(ZMKDT)은 입력 SBLDAT 우선 아니면 반제일(AUGDT), 세금코드, 세금계산서 일련번호(AUGBL), 영수(1)/청구(18) 구분, 종류 '01', 빌링문서번호를 세팅해 GT_ZSBBSEG 에 APPEND 하고 품목을 정렬·중복 제거한다.

  4942|       GT_ZSBBSEG-BUKRS = AUSGLOP_ITAB-BUKRS.
  4943|       GT_ZSBBSEG-KUNNR = AUSGLOP_ITAB-KUNNR.
  4944|       GT_ZSBBSEG-BELNR = AUSGLOP_ITAB-BELNR.
  4945|       GT_ZSBBSEG-GJAHR = AUSGLOP_ITAB-GJAHR.
  4946|       GT_ZSBBSEG-BUPLA = AUSGLOP_ITAB-BUPLA.
  4947|       GT_ZSBBSEG-BUDAT = AUSGLOP_ITAB-BUDAT.
  4948| * 세금계산서 발행일자
  4949|       IF SBLDAT IS INITIAL.
  4950|         GT_ZSBBSEG-ZMKDT = AUSGLOP_ITAB-AUGDT.
  4951|       ELSE.
  4952|         GT_ZSBBSEG-ZMKDT = SBLDAT.
  4953|       ENDIF.
  4954| *      IF SN1OP EQ 'X'.          " 통합 세금계산서 발행일 경우
  4955| ** 전기일자의 말일.
  4956| *        CALL FUNCTION 'LAST_DAY_OF_MONTHS'
  4957| *             EXPORTING
  4958| *                  DAY_IN            = DOC_CNT_ITAB-BUDAT
  4959| *             IMPORTING
  4960| *                  LAST_DAY_OF_MONTH = GT_ZSBBSEG-ZMKDT
  4961| *             EXCEPTIONS
  4962| *                  DAY_IN_NO_DATE    = 1
  4963| *                  OTHERS            = 2.
  4964| *      ELSE.
  4965| *        GT_ZSBBSEG-ZMKDT = DOC_CNT_ITAB-BUDAT.
  4966| *      ENDIF.
  4967| * 세금코드
  4968|       GT_ZSBBSEG-MWSKZ = AUSGLOP_ITAB-MWSKZ.
  4969| 
  4970| * 세금계산서 일련번호
  4971|       GT_ZSBBSEG-ZSQNO = AUSGLOP_ITAB-AUGBL.
  4972| * 영수/청구 구분
  4973|       IF RECEIPT = 'X'.
  4974|         GT_ZSBBSEG-ZRPTP = '1'.    " 영수
  4975|       ELSE.
  4976|         GT_ZSBBSEG-ZRPTP = '18'.    " 청구
  4977|       ENDIF.
  4978| 
  4979| * 세금계산서 종류
  4980|       GT_ZSBBSEG-ZDTIG = '01'.     " 과세, 영세
  4981| * 대금청구문서번호(Billing Doc)
  4982|       GT_ZSBBSEG-VBELN = AUSGLOP_ITAB-VBELN.
  4983| 
  4984|     ENDIF.
  4985|     CLEAR AUGBL.
  4986| 
  4987| *    ENDAT.
  4988| 
  4989|     APPEND GT_ZSBBSEG.
  4990|     CLEAR : GT_ZSBBSEG, GT_CNT.
  4991| 
  4992|   ENDLOOP.
  4993| 
  4994|   SORT GT_ZSBISSUE BY KUNNR BUZEI.
  4995| 
  4996|   DELETE ADJACENT DUPLICATES FROM GT_ZSBISSUE
  4997|                              COMPARING KUNNR ZSQNO BUZEI.
  • EN: Populate header keys, issue date (SBLDAT or clearing date), tax code, invoice sequence, receipt/billing type, invoice kind and billing document into GT_ZSBBSEG, then sort and dedupe GT_ZSBISSUE.
  • SAP 객체: GT_ZSBBSEG, GT_ZSBISSUE
  • 업무 키워드: 세금계산서 발행일, 영수/청구, 세금코드, 빌링문서, 일련번호, 중복 제거
  • English: Issue Date, Receipt, Billing, Tax Code, Billing Document
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, AUSGLOP_ITAB, SBLDAT, RECEIPT, AUGBL, GT_CNT, GT_ZSBISSUE
  • 위치: abap://ZFIR0141/ZFIR0141#L4942-L4997 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C4

[sql_select] 시스템ID·회사코드로 전자세금계산서 설정 ZDTI_CONFIG 를 조회해 사업자단위과세(ONEBUPLA) 적용이고 발행일이 적용 시작일(BUPLADATE) 이후이면 FLAG_ONEBUPLA 를 켠다.

  5001|   READ TABLE GT_ZSBBSEG INDEX 1.
  5002|   SELECT SINGLE * FROM ZDTI_CONFIG
  5003|         WHERE SYSID = SY-SYSID
  5004|               AND BUKRS = GT_ZSBBSEG-BUKRS.
  5005|   IF ZDTI_CONFIG-ONEBUPLA = 'X'
  5006|       AND GT_ZSBBSEG-ZMKDT >= ZDTI_CONFIG-BUPLADATE.
  5007|     FLAG_ONEBUPLA = 'X'.
  5008|   ELSE.
  5009|     CLEAR FLAG_ONEBUPLA.
  5010|   ENDIF.
  • EN: Read ZDTI_CONFIG for the company code and set FLAG_ONEBUPLA when unit-of-business taxation applies from the configured date.
  • 테이블(파서): read ZDTI_CONFIG / write -
  • SAP 객체: ZDTI_CONFIG
  • 업무 키워드: 사업자단위과세, 전자세금계산서 설정, 적용 시작일
  • English: Configuration, Business Place, Taxation Unit
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, ZDTI_CONFIG, FLAG_ONEBUPLA
  • 위치: abap://ZFIR0141/ZFIR0141#L5001-L5010 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C5

[sql_select] 사업자단위과세 적용 시 각 헤더의 사업장(J_1BBRANCH)과 주소(ADRC)로 비고란(ZREMK)에 실제 사업장 명·주소를 넣고, 공급자 정보(사업자번호·상호·대표자·업태·업종·주소)를 ZDTI_CONFIG 의 대표 사업장 기준으로 교체해 GT_ZSBBSEG 를 MODIFY 한다.

  5014|   IF FLAG_ONEBUPLA = 'X'.
  5015| *   사업자단위과세 적용시 - 헤더 비고란 수정 (2008.01.15)
  5016|     LOOP AT GT_ZSBBSEG.
  5017| 
  5018|       CLEAR : J_1BBRANCH, ADRC.
  5019|       SELECT SINGLE * FROM   J_1BBRANCH
  5020|                       WHERE  BUKRS  EQ GT_ZSBBSEG-BUKRS
  5021|                        AND   BRANCH EQ GT_ZSBBSEG-BUPLA.
  5022|       SELECT SINGLE * FROM   ADRC
  5023|                       WHERE  ADDRNUMBER EQ J_1BBRANCH-ADRNR.
  5024| 
  5025|       CONCATENATE J_1BBRANCH-NAME ADRC-CITY1 ADRC-STREET ADRC-HOUSE_NUM1
  5026|                   INTO GT_ZSBBSEG-ZREMK SEPARATED BY SPACE.
  5027| 
  5028|       MODIFY GT_ZSBBSEG TRANSPORTING ZREMK
  5029|                                WHERE BUKRS  = GT_ZSBBSEG-BUKRS
  5030|                                  AND KUNNR  = GT_ZSBBSEG-KUNNR
  5031|                                  AND ZSQNO  = GT_ZSBBSEG-ZSQNO.
  5032| 
  5033| * 공급자 정보를 대표사업자번호에 해당하는 내용으로 수정
  5034|       SELECT SINGLE * FROM   J_1BBRANCH
  5035|                   WHERE  BUKRS  EQ GT_ZSBBSEG-BUKRS
  5036|                    AND   BRANCH EQ ZDTI_CONFIG-BUPLA.
  5037|       SELECT SINGLE * FROM   ADRC
  5038|                       WHERE  ADDRNUMBER EQ J_1BBRANCH-ADRNR.
  5039| 
  5040|       GT_ZSBBSEG-SUPNO = ZDTI_CONFIG-STCD2.    "* 공급자 사업자번호
  5041|       GT_ZSBBSEG-ZSPCN = J_1BBRANCH-NAME.      "* 공급자 회사명
  5042|       GT_ZSBBSEG-ZSPNM = J_1BBRANCH-KR_REPRES. "* 공급자 대표자명
  5043|       GT_ZSBBSEG-ZSPIT = J_1BBRANCH-KR_BUSTYPE."* 공급자 업태
  5044|       GT_ZSBBSEG-ZSPBT = J_1BBRANCH-KR_INDTYPE."* 공급자 업종
  5045|       CONCATENATE ADRC-CITY1     ADRC-STREET
  5046|         INTO GT_ZSBBSEG-ZSPAR SEPARATED BY SPACE. "공급자 주소
  5047| 
  5048|       MODIFY GT_ZSBBSEG TRANSPORTING SUPNO ZSPCN ZSPNM ZSPIT ZSPBT
  5049|                                WHERE BUKRS  = GT_ZSBBSEG-BUKRS
  5050|                                  AND KUNNR  = GT_ZSBBSEG-KUNNR
  5051|                                  AND ZSQNO  = GT_ZSBBSEG-ZSQNO.
  5052|     ENDLOOP.
  5053|   ENDIF.
  • EN: Under unit-of-business taxation, put the actual business place name/address into the remark and replace supplier fields with the representative business place from ZDTI_CONFIG using J_1BBRANCH and ADRC.
  • 테이블(파서): read J_1BBRANCH, ADRC / write -
  • SAP 객체: J_1BBRANCH, ADRC, ZDTI_CONFIG
  • 업무 키워드: 사업자단위과세, 대표 사업장, 공급자 정보, 사업장 주소, 비고
  • English: Business Place, J_1BBRANCH, Address, Supplier
  • 정의부(복사 시 함께 필요): FLAG_ONEBUPLA, GT_ZSBBSEG, J_1BBRANCH, ADRC, ZDTI_CONFIG
  • 위치: abap://ZFIR0141/ZFIR0141#L5014-L5053 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C6

[output] 헤더를 GT_MAIL 로 COLLECT 해 고객 이메일 입력용 목록을 만들고 STATUS0100/TITLE0100 을 설정한 뒤 화면 100 을 팝업으로 호출해 사용자가 수신 이메일을 확인·입력하게 한다.

  5059|   LOOP AT GT_ZSBBSEG.
  5060|     MOVE-CORRESPONDING GT_ZSBBSEG TO GT_MAIL.
  5061|     COLLECT GT_MAIL.
  5062|     CLEAR : GT_MAIL, GT_ZSBBSEG.
  5063|   ENDLOOP.
  5064| 
  5065|   SET PF-STATUS 'STATUS0100'.
  5066|   SET TITLEBAR 'TITLE0100'.
  5067| 
  5068|   CALL SCREEN 100 STARTING AT 10 2
  5069|                  ENDING   AT 116 20.
  • EN: Collect header rows into GT_MAIL and call screen 100 as a popup so the user can review or enter customer e-mail addresses before transmission.
  • 호출(파서): 100
  • 업무 키워드: 이메일 입력, 팝업 화면, 전송 전 확인
  • English: E-Mail, Popup Screen, CALL SCREEN
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, GT_MAIL
  • 위치: abap://ZFIR0141/ZFIR0141#L5059-L5069 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C7

[calculation] 전송 확정(&NT1) 시 화면에서 입력받은 GT_MAIL 의 이메일(ZBYRE)을 회사코드·고객·일련번호가 일치하는 GT_ZSBBSEG 헤더에 MODIFY 로 반영한다.

  5071|   IF SAVE_CODE EQ '&NT1'.
  5072|     LOOP AT GT_MAIL.
  5073|       CLEAR GT_ZSBBSEG-ZBYRE.
  5074|       GT_ZSBBSEG-ZBYRE = GT_MAIL-ZBYRE.
  5075|       MODIFY GT_ZSBBSEG TRANSPORTING ZBYRE
  5076|                                WHERE BUKRS  = GT_MAIL-BUKRS
  5077|                                  AND KUNNR  = GT_MAIL-KUNNR
  5078|                                  AND ZSQNO  = GT_MAIL-ZSQNO.
  5079|     ENDLOOP.
  • EN: On transmit confirmation, copy the user-entered e-mail addresses from GT_MAIL into the matching e-tax invoice header rows.
  • SAP 객체: GT_ZSBBSEG
  • 업무 키워드: 수신 이메일, 헤더 갱신, 전송 확정
  • English: E-Mail, Header Update, Electronic Tax Invoice
  • 정의부(복사 시 함께 필요): OK_CODE, SAVE_CODE, GT_MAIL, GT_ZSBBSEG
  • 위치: abap://ZFIR0141/ZFIR0141#L5071-L5079 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C8

[interface] TRANSMIT_TO_SMARTBILL 로 전자세금계산서를 스마트빌(Z_SB_DTI_ISSUE)에 전송하고 SAVE_RETURN_CODE_TO_AUSGLOP 으로 리턴 코드를 AUSGLOP_ITAB/SEL_AUSGLOP_ITAB 의 RESULT 에 저장한다.

  5087|     PERFORM TRANSMIT_TO_SMARTBILL               CHANGING  RETURN_CODE.
  5088| 
  5089|     PERFORM SAVE_RETURN_CODE_TO_AUSGLOP         USING     RETURN_CODE.
  • EN: Transmit the e-tax invoice to Smartbill and store the return code on the output tables.
  • 호출(파서): TRANSMIT_TO_SMARTBILL, SAVE_RETURN_CODE_TO_AUSGLOP
  • SAP 객체: Z_SB_DTI_ISSUE
  • 업무 키워드: 스마트빌 전송, 리턴 코드, 발행 결과
  • English: Smartbill, Transmission, Return Code
  • 정의부(복사 시 함께 필요): RETURN_CODE
  • 위치: abap://ZFIR0141/ZFIR0141#L5087-L5089 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C9

[interface] 전송 결과가 담긴 SEL_AUSGLOP_ITAB 을 ABAP 메모리 ID 'TI' 로 EXPORT 해 호출 프로그램(ZFIR0140 등)이 결과를 읽게 하고 전송 테이블을 초기화한다.

  5136|     EXPORT SEL_AUSGLOP_ITAB[] TO MEMORY ID 'TI'.
  5137|   ENDIF.
  5138| 
  5139| 
  5140| * 호출이 끝난 이후 clear, refresh
  5141|   CLEAR : GT_ZSBBSEG, GT_ZSBBSEG[], GT_ZSBISSUE, GT_ZSBISSUE[].
  • EN: Export SEL_AUSGLOP_ITAB with transmission results to ABAP memory ID 'TI' for the calling program and clear the transmission tables.
  • 업무 키워드: 메모리 EXPORT, 호출 프로그램 연계, 전송 결과
  • English: ABAP Memory, EXPORT, Result
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, GT_ZSBBSEG, GT_ZSBISSUE
  • 위치: abap://ZFIR0141/ZFIR0141#L5136-L5141 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#SMARTBILL_TRANS#C10

FORM KIND_OF_CUSTOMERS_SMARTBILL — ZFIR0141 L5153-L5208 (56줄)

고객 유형(일회성 CPD·마스터 고객·지점 고객)에 따라 고객 주소와 사업장 주소를 찾아 스마트빌 헤더 파트1(공급자/공급받는자 정보)을 WRITE_PART1-1_SMARTBILL 로 채운다.

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

[control_flow] 일회성 고객(XCPDK='X')이면 고객번호·사업자번호로 ADDRESS_ITAB 을 READ 하고 사업장·세금계산서번호에 해당하는 BUPLA_ADRESSE 를 찾아 WRITE_PART1-1_SMARTBILL 로 공급자/공급받는자 정보를 채운다.

  5157|   IF AUSGLOP_ITAB-XCPDK = 'X'.
  5158| 
  5159|     READ TABLE ADDRESS_ITAB WITH KEY KUNNR = AUSGLOP_ITAB-KUNNR
  5160|                                      STCD  = AUSGLOP_ITAB-STCD.
  5161| 
  5162|     LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA
  5163|                            AND AUGBL =  AUSGLOP_ITAB-AUGBL.
  5164| *     Part 1 (사업자등록번호, 공급자, 공급받는자, 년도, 비고)
  5165|       PERFORM WRITE_PART1-1_SMARTBILL.
  5166|       IF SY-SUBRC = 0.
  5167|         EXIT.
  5168|       ENDIF.
  5169|     ENDLOOP.
  • EN: For one-time (CPD) customers, read the address by customer and tax number, find the business place address and fill part 1 of the e-tax invoice header.
  • 호출(파서): WRITE_PART1-1_SMARTBILL
  • 업무 키워드: 일회성 고객, 사업장 주소, 공급받는자, 세금계산서 헤더
  • English: One-Time Customer, Business Place, Address, Electronic Tax Invoice
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, ADDRESS_ITAB, BUPLA_ADRESSE, AUGBL, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L5157-L5169 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#KIND_OF_CUSTOMERS_SMARTBILL#C1

[control_flow] 마스터 고객이면 KUNNR, 지점 고객이면 FILKD 기준으로 ADDRESS_ITAB 을 LOOP 하고 세금계산서 인쇄 모드(CHK_PRTI)에서 BUPLA_ADRESSE 를 찾아 WRITE_PART1-1_SMARTBILL 로 헤더 파트1을 채운다(지점 고객 분기는 호출이 비어 있음).

  5171|   ELSE.
  5172|     IF AUSGLOP_ITAB-FILKD = ' '.
  5173| 
  5174|       LOOP AT ADDRESS_ITAB WHERE  KUNNR = AUSGLOP_ITAB-KUNNR.
  5175| 
  5176|         IF CHK_PRTI = 'X'.
  5177|           LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA
  5178|                                 AND AUGBL = AUSGLOP_ITAB-AUGBL .
  5179| 
  5180| *           Part 1 (사업자등록번호, 공급자, 공급받는자, 년도, 비고)
  5181| *            PERFORM WRITE_PART1-2.
  5182|             PERFORM WRITE_PART1-1_SMARTBILL.
  5183|             IF SY-SUBRC = 0.
  5184|               EXIT.
  5185|             ENDIF.
  5186|           ENDLOOP.
  5187|         ENDIF.
  5188|       ENDLOOP.
  5189|     ELSE.
  5190|       LOOP AT ADDRESS_ITAB WHERE  KUNNR = AUSGLOP_ITAB-FILKD.
  5191|         IF CHK_PRTI = 'X'.
  5192|           LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA
  5193|                                   AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5194|             IF SY-SUBRC = 0.
  5195|               EXIT.
  5196|             ENDIF.
  5197| 
  5198|           ENDLOOP.
  5199|         ENDIF.
  5200|       ENDLOOP.
  5201|     ENDIF.
  • EN: For master customers (by KUNNR) or branch customers (by FILKD), loop the address table and business place address to fill part 1 of the header via WRITE_PART1-1_SMARTBILL.
  • 호출(파서): WRITE_PART1-1_SMARTBILL
  • 업무 키워드: 마스터 고객, 지점 고객, 사업장 주소, 헤더 파트1
  • English: Customer Master, Branch, Business Place, Electronic Tax Invoice
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, ADDRESS_ITAB, CHK_PRTI, BUPLA_ADRESSE, AUGBL, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L5171-L5201 · confidence 0.75 · ZFIR0141#ZFIR0141#FORM#KIND_OF_CUSTOMERS_SMARTBILL#C2

FORM WRITE_PART1-1_SMARTBILL — ZFIR0141 L5217-L5284 (68줄)

전자세금계산서 헤더(GT_ZSBBSEG)의 공급자(사업장)·공급받는자(고객) 정보(주소·사업자번호·상호·대표자·업종·업태·담당자 이메일/전화)를 채운다.

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

[calculation] 사업장 주소 BUPLA_ADRESSE 에서 공급자 주소(ZSPAR)·사업자번호(SUPNO, STCD2 앞 10자리)·상호·대표자명·업종·업태를 GT_ZSBBSEG 에 세팅하고 고객 주소(ADDRESS_ITAB)에서 공급받는자 주소(ZBYAR)를 만든다.

  5221|   CONCATENATE BUPLA_ADRESSE-CITY1
  5222| *  CONCATENATE bupla_adresse-city1 bupla_adresse-city2
  5223|          BUPLA_ADRESSE-STREET INTO GT_ZSBBSEG-ZSPAR SEPARATED BY SPACE.
  5224| 
  5225| * 공급자 주소
  5226|   CONCATENATE ADDRESS_ITAB-ORT01
  5227| *  CONCATENATE address_itab-ort01 address_itab-ort02
  5228|          ADDRESS_ITAB-STRAS INTO GT_ZSBBSEG-ZBYAR SEPARATED BY SPACE.
  5229| 
  5230| * 공급자 사업자번호
  5231|   GT_ZSBBSEG-SUPNO = BUPLA_ADRESSE-STCD2+0(10).
  5232| * 공급자 상호
  5233|   GT_ZSBBSEG-ZSPCN = BUPLA_ADRESSE-NAME1.
  5234| * 공급자 대표자명
  5235|   GT_ZSBBSEG-ZSPNM   = BUPLA_ADRESSE-KR_REPRES.
  5236| * 공급자 업종
  5237|   GT_ZSBBSEG-ZSPBT   = BUPLA_ADRESSE-KR_INDTYPE.
  5238| * 공급자 업태
  5239|   GT_ZSBBSEG-ZSPIT   = BUPLA_ADRESSE-KR_BUSTYPE.
  • EN: Fill supplier data (address, tax number from STCD2, name, representative, industry and business type) from the business place address and the buyer address from ADDRESS_ITAB into the e-tax invoice header GT_ZSBBSEG.
  • SAP 객체: GT_ZSBBSEG
  • 업무 키워드: 공급자, 사업장, 사업자등록번호, 상호, 대표자, 업종, 업태
  • English: Supplier, Business Place, Tax Number, Electronic Tax Invoice
  • 정의부(복사 시 함께 필요): BUPLA_ADRESSE, GT_ZSBBSEG, ADDRESS_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L5221-L5239 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1_SMARTBILL#C1

[validation] 고객이 사업자(STCD2 있음)이면 사업자번호(10자리)·업종·업태·상호·대표자를 마스터 값으로, 개인이면 주민번호(STCD1 13자리)와 업종·업태 '서비스', 상호·대표자에 이름을 공급받는자 정보로 세팅한다.

  5242|   IF ADDRESS_ITAB-STCD2 <> ''.        " 사업자
  5243| * 공급받는자 사업자번호
  5244|     GT_ZSBBSEG-BUYNO = ADDRESS_ITAB-STCD2+0(10).
  5245| * 공급받는자 업종
  5246|     GT_ZSBBSEG-ZBYBT   = ADDRESS_ITAB-BUSTYP.
  5247| * 공급받는자 업태
  5248|     GT_ZSBBSEG-ZBYIT   = ADDRESS_ITAB-INDTYP.
  5249| * 공급받는자 상호
  5250|     GT_ZSBBSEG-ZBYCN = ADDRESS_ITAB-NAME.
  5251| * 공급받는자 대표자명
  5252|     GT_ZSBBSEG-ZBYNM = ADDRESS_ITAB-REPRE.
  5253| 
  5254|   ELSE.                               " 개인
  5255| * 공급받는자 사업자번호
  5256|     GT_ZSBBSEG-BUYNO = ADDRESS_ITAB-STCD1+0(13).
  5257| * 공급받는자 업종
  5258|     GT_ZSBBSEG-ZBYBT   = '서비스'.
  5259| * 공급받는자 업태
  5260|     GT_ZSBBSEG-ZBYIT   = '서비스'.
  5261| * 공급받는자 상호
  5262|     GT_ZSBBSEG-ZBYCN = ADDRESS_ITAB-NAME.
  5263| * 공급받는자 대표자명
  5264|     GT_ZSBBSEG-ZBYNM = ADDRESS_ITAB-NAME.
  5265| 
  5266|   ENDIF.
  • EN: Set buyer fields depending on whether the customer is a business (STCD2 present) or an individual (STCD1 resident number with default '서비스' industry/business type).
  • SAP 객체: GT_ZSBBSEG
  • 업무 키워드: 공급받는자, 사업자, 개인, 주민등록번호, 업종, 업태
  • English: Buyer, Tax Number, Individual Customer, Electronic Tax Invoice
  • 정의부(복사 시 함께 필요): ADDRESS_ITAB, GT_ZSBBSEG
  • 위치: abap://ZFIR0141/ZFIR0141#L5242-L5266 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1_SMARTBILL#C2

[sql_select] 공급받는자 담당자 이메일이 비어 있으면 고객 주소번호(ADRNR)로 ADR6 의 기본(FLGDEFAULT='X') SMTP 주소를 조회해 ZBYRE 에 넣고 담당자명·전화번호를 채운다.

  5269|   IF GT_ZSBBSEG-ZBYRE IS INITIAL.
  5270|     SELECT SINGLE SMTP_ADDR INTO GT_ZSBBSEG-ZBYRE
  5271|                             FROM  ADR6
  5272|                             WHERE ADDRNUMBER = ADDRESS_ITAB-ADRNR
  5273|                              AND  DATE_FROM  = '00010101'
  5274|                              AND  FLGDEFAULT = 'X'.
  5275| *                               AND  CONSNUMBER = '001'.
  5276|   ENDIF.
  5277| 
  5278| *  GT_ZSBBSEG-ZBYRE   = 'kscho96@frontiers.co.kr'.
  5279| * 공급받는자 담당자명
  5280|   GT_ZSBBSEG-ZBYRN = ADDRESS_ITAB-REPRE.
  5281| * 공급받는자 담당자 전화번호
  5282|   GT_ZSBBSEG-ZBYRT = ADDRESS_ITAB-TELF1.
  • EN: If the buyer e-mail is empty, read the default SMTP address from ADR6 by the customer address number and set the buyer contact name and phone.
  • 테이블(파서): read ADR6 / write -
  • SAP 객체: ADR6
  • 업무 키워드: 담당자 이메일, 전자세금계산서 수신, 주소번호, 전화번호
  • English: E-Mail Address, ADR6, Address Number, Contact
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, ADDRESS_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L5269-L5282 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#WRITE_PART1-1_SMARTBILL#C3

FORM FILL_ITEM_TABLES_SMARTBILL — ZFIR0141 L5364-L5386 (23줄)

현재 세금계산서의 CHECK_ITAB 항목을 돌며 원천 유형별(순수 SD, SD+FI, 순수 FI)로 스마트빌 품목 라인을 채우는 하위 FORM 을 호출한다.

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

[control_flow] 세금계산서(BUKRS/KUNNR/STCD/AUGBL) 별 CHECK_ITAB 을 LOOP 하며 PRINT_ITEM_PURE_SD_SMARTBILL, PRINT_ITEM_SD_AND_FI_SMARTBILL, PRINT_ITEM_PURE_FI_SMARTBILL 을 차례로 호출해 품목 라인 MATZEIL1~4 를 구성한다.

  5374|   LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5375|                        AND KUNNR = AUSGLOP_ITAB-KUNNR
  5376|                        AND STCD  = AUSGLOP_ITAB-STCD
  5377|                        AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5378| * SD-data
  5379|     PERFORM PRINT_ITEM_PURE_SD_SMARTBILL.
  5380| * SD + FI-data
  5381|     PERFORM PRINT_ITEM_SD_AND_FI_SMARTBILL.
  5382| * FI-data
  5383|     PERFORM PRINT_ITEM_PURE_FI_SMARTBILL.
  5384|   ENDLOOP.
  • EN: Loop over CHECK_ITAB of the current tax invoice and dispatch to the pure-SD, SD+FI and pure-FI item filling routines for Smartbill.
  • 호출(파서): PRINT_ITEM_PURE_SD_SMARTBILL, PRINT_ITEM_SD_AND_FI_SMARTBILL, PRINT_ITEM_PURE_FI_SMARTBILL
  • 업무 키워드: 품목 라인 구성, 원천 유형, SD, FI, 스마트빌
  • English: Item Line, Billing Document, FI Document, Smartbill
  • 정의부(복사 시 함께 필요): CHECK_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L5374-L5384 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#FILL_ITEM_TABLES_SMARTBILL#C1

FORM PRINT_ITEM_PURE_SD_SMARTBILL — ZFIR0141 L5601-L5648 (48줄)

순수 SD 빌링(VBRK 전용) 세금계산서의 품목 라인을 최대 4줄로 채우거나, 추가 시트 인쇄 시 품목별 평균 단가를 계산한다(스마트빌용).

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

[control_flow] 원천이 SD 빌링(VBRK)이고 FI 전표가 없는 순수 SD 건에서 세금계산서 인쇄 모드이면 품목 수에 따라 MATZEIL1~4 를 초기화한 뒤 PRINT_LINES_SMARTBILL 로 최대 4개 품목 라인을 채운다.

  5603|   IF CHECK_ITAB-AWTYP_SD = 'VBRK'.
  5604| 
  5605|     IF CHECK_ITAB-AWTYP_FI = ' '.
  5606| * if document is a pure SD-document --> print max. 4 lines
  5607|       IF CHK_PRTI = 'X'.
  5608|         CLEAR LINE_COUNT_PR.
  5609| * if number of lines < 5
  5610| * 4th Mat line in tax invoice
  5611|         CLEAR MATNUM.
  5612|         CLEAR NUMBER.
  5613| 
  5614|         IF LINE_COUNT < 5.
  5615|           PERFORM PRINT_LINES_SMARTBILL.
  5616|         ELSE.
  5617|           CLEAR MATZEIL1.
  5618|           CLEAR MATZEIL2.
  5619|           CLEAR MATZEIL3.
  5620|           CLEAR MATZEIL4.
  5621|           CLEAR COUNT.
  5622| 
  5623|           PERFORM PRINT_LINES_SMARTBILL.
  5624|         ENDIF.
  • EN: For pure SD billing documents in tax invoice print mode, reset item lines and call PRINT_LINES_SMARTBILL to fill up to four item lines.
  • 호출(파서): PRINT_LINES_SMARTBILL, PRINT_LINES_SMARTBILL
  • SAP 객체: VBRK
  • 업무 키워드: 순수 SD 빌링, 품목 라인, 세금계산서 인쇄
  • English: Billing Document, Item Line, Tax Invoice
  • 정의부(복사 시 함께 필요): CHECK_ITAB, CHK_PRTI, LINE_COUNT_PR, MATNUM, NUMBER, LINE_COUNT, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3, MATZEIL4, COUNT
  • 위치: abap://ZFIR0141/ZFIR0141#L5603-L5624 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_SD_SMARTBILL#C1

[calculation] 추가 시트 인쇄 시 해당 세금계산서의 품목별 평균 단가(NETWR/FKIMG)를 계산해 AUSGLOP_MAT_ITAB-UPRICE 에 MODIFY 한다.

  5627|         LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5628|                                    AND KUNNR = AUSGLOP_ITAB-KUNNR
  5629|                                    AND STCD  =  AUSGLOP_ITAB-STCD
  5630|                                    AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5631| 
  5632| * calculating the unit price as the average price of the reported
  5633| * material
  5634|           IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL.
  5635|             AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) /
  5636|                                       ( AUSGLOP_MAT_ITAB-FKIMG ).
  5637|           ELSE.
  5638|             AUSGLOP_MAT_ITAB-UPRICE = ' '.
  5639|           ENDIF.
  5640|           MODIFY AUSGLOP_MAT_ITAB.
  5641|         ENDLOOP.
  • EN: For the additional sheet, compute the average unit price per material line and update AUSGLOP_MAT_ITAB.
  • 테이블(파서): read - / write AUSGLOP_MAT_ITAB
  • 업무 키워드: 추가 시트, 평균 단가, 품목
  • English: Additional Sheet, Unit Price
  • 정의부(복사 시 함께 필요): AUSGLOP_MAT_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L5627-L5641 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_SD_SMARTBILL#C2

FORM PRINT_LINES_SMARTBILL — ZFIR0141 L5473-L5563 (91줄)

세금계산서별 판매 품목(AUSGLOP_MAT_ITAB)을 일자·자재 순으로 정렬해 최대 4개 품목 라인(MATZEIL1~4)에 배치하고, 5개 이상이면 4번째 라인을 '외 N건' 요약 라인으로 만든다(스마트빌용).

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

[output] 판매 품목을 세금계산서번호·일자·자재로 정렬한 뒤 현재 세금계산서의 품목을 순서대로 13번째 라인 MATZEIL13 에 품목텍스트(ARKTX)·일자와 함께 옮기고 FILL_ITEM_AMOUNT_SMARTBILL 로 단가·수량·금액을 채운다.

  5476|   SORT AUSGLOP_MAT_ITAB BY AUGBL YYYYMMDD MATNR ASCENDING.
  5477| 
  5478|   LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5479|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  5480|                              AND STCD  = AUSGLOP_ITAB-STCD
  5481|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5482| 
  5483|     LINE_COUNT_PR = LINE_COUNT_PR + 1.
  5484| 
  5485|     IF LINE_COUNT_PR = 1.
  5486|       MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL1.
  5487|       WRITE AUSGLOP_MAT_ITAB-ARKTX        TO MATZEIL1-ARKTX.
  5488|       MOVE  AUSGLOP_MAT_ITAB-FKIMG        TO MATZEIL1-FKIMG.
  5489|       MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL1-BUDAT.
  5490| 
  5491|       PERFORM FILL_ITEM_AMOUNT_SMARTBILL TABLES AUSGLOP_MAT_ITAB
  5492|                                          USING  MATZEIL1.
  5493|     ENDIF.
  5494| 
  5495|     IF LINE_COUNT_PR = 2.
  5496|       MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL2.
  5497|       WRITE AUSGLOP_MAT_ITAB-ARKTX        TO MATZEIL2-ARKTX.
  5498|       MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL2-BUDAT.
  5499| * calculating the unit price as the average price of the reported
  5500| * material
  5501| 
  5502|       PERFORM FILL_ITEM_AMOUNT_SMARTBILL TABLES AUSGLOP_MAT_ITAB
  5503|                                          USING MATZEIL2.
  5504|     ENDIF.
  5505| 
  5506|     IF LINE_COUNT_PR = 3.
  5507|       MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL3.
  5508|       WRITE AUSGLOP_MAT_ITAB-ARKTX        TO MATZEIL3-ARKTX.
  5509|       MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL3-BUDAT.
  5510| * calculating the unit price as the average price of the reported
  5511| * material
  5512|       PERFORM FILL_ITEM_AMOUNT_SMARTBILL TABLES AUSGLOP_MAT_ITAB
  5513|                                          USING MATZEIL3.
  5514|     ENDIF.
  • EN: Sort material lines and fill tax invoice item lines 1-3 with material text, date and amounts via FILL_ITEM_AMOUNT_SMARTBILL.
  • 호출(파서): FILL_ITEM_AMOUNT_SMARTBILL, FILL_ITEM_AMOUNT_SMARTBILL, FILL_ITEM_AMOUNT_SMARTBILL
  • 업무 키워드: 품목 라인, 정렬, 세금계산서 품목, 단가
  • English: Item Line, Sort, Tax Invoice, Material Text
  • 정의부(복사 시 함께 필요): AUSGLOP_MAT_ITAB, AUGBL, AUSGLOP_ITAB, LINE_COUNT_PR, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3
  • 위치: abap://ZFIR0141/ZFIR0141#L5476-L5514 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_LINES_SMARTBILL#C1

[output] 품목이 5개 미만이면 4번째 품목을 MATZEIL4 에 그대로 채우고, 5개 이상이면 ALL_MAT_ITAB 의 합계 금액과 4번째 자재명·'외' 표기로 나머지 품목을 요약한 4번째 라인을 만든다.

  5517|     IF LINE_COUNT > 4 AND LINE_COUNT_PR = 4.
  5518|       MOVE AUSGLOP_MAT_ITAB-MATNR TO MATNUM.
  5519|       NUMBER = LINE_COUNT - 4.
  5520|     ENDIF.
  5521| 
  5522| 
  5523| * Item 개수가 5개미만일 경우
  5524|     IF LINE_COUNT < 5.
  5525|       IF LINE_COUNT_PR = 4.
  5526|         MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL4.
  5527|         WRITE AUSGLOP_MAT_ITAB-ARKTX        TO MATZEIL4-ARKTX.
  5528|         MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL4-BUDAT.
  5529| * calculating the unit price as the average price of the reported
  5530| * material
  5531|         PERFORM FILL_ITEM_AMOUNT_SMARTBILL TABLES AUSGLOP_MAT_ITAB
  5532|                                            USING MATZEIL4.
  5533|       ENDIF.
  5534| * item 개수가 5 이상일 경우
  5535|     ELSE.
  5536|       READ TABLE ALL_MAT_ITAB WITH KEY BUKRS = AUSGLOP_ITAB-BUKRS
  5537|                                        KUNNR = AUSGLOP_ITAB-KUNNR
  5538|                                        STCD  = AUSGLOP_ITAB-STCD
  5539|                                        AUGBL = AUSGLOP_ITAB-AUGBL
  5540|                                        FLAG  = 'X'.
  5541|       IF SY-SUBRC = 0.
  5542| * material description
  5543|         MOVE AUSGLOP_MAT_ITAB-BUKRS TO MATZEIL4-BUKRS.
  5544|         MOVE AUSGLOP_MAT_ITAB-KUNNR TO MATZEIL4-KUNNR.
  5545|         WRITE AUSGLOP_MAT_ITAB-ARKTX TO MATZEIL4-ARKTX.
  5546|         MOVE ALL_MAT_ITAB-NETWR TO MATZEIL4-NETWR.
  5547|         MOVE ALL_MAT_ITAB-MWSBP TO MATZEIL4-MWSBP.
  5548|         MOVE  AUSGLOP_MAT_ITAB-YYYYMMDD          TO MATZEIL4-BUDAT.
  5549| * 4th mat line in tax invoice
  5550|         MOVE MATNUM TO MATZEIL4-MATNR.                      "2
  5551|         MOVE '외'   TO MATZEIL4-VRKME.
  5552| *        MOVE number TO matzeil4-fkimg.
  5553| 
  5554| *       WRITE number TO matzeil4-uprice USING EDIT MASK'_______________'
  5555| *                                                     RIGHT-JUSTIFIED.
  5556| *        MOVE text-034 TO matzeil4-uprice+5(3).
  5557|       ENDIF.
  5558| 
  5559|     ENDIF.
  • EN: If fewer than five items, fill line 4 normally; otherwise build a summary fourth line with totals from ALL_MAT_ITAB, the fourth material and the '외' (and others) marker.
  • 호출(파서): FILL_ITEM_AMOUNT_SMARTBILL
  • 업무 키워드: 요약 라인, 외 N건, 품목 수, 합계 금액
  • English: Summary Line, Item Count, Total Amount
  • 정의부(복사 시 함께 필요): LINE_COUNT, LINE_COUNT_PR, AUSGLOP_MAT_ITAB, MATNUM, NUMBER, MATTYPE, MATZEIL4, ALL_ITEMS_ITAB, ALL_MAT_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L5517-L5559 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_LINES_SMARTBILL#C2

FORM FILL_ITEM_AMOUNT_SMARTBILL — ZFIR0141 L5572-L5592 (21줄)

품목 테이블 행의 평균 단가(공급가액/수량)를 계산하고 단가·수량·공급가액·부가세액을 세금계산서 품목 라인(MATZEIL)에 옮긴다.

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

[calculation] 수량(FKIMG)이 있으면 공급가액(NETWR)/수량으로 평균 단가 UPRICE 를 계산하고, 단가·수량·공급가액·부가세액(MWSBP)을 세금계산서 품목 라인 구조 P_MATZEIL 에 복사한다.

  5576|   IF NOT P_MAT_ITAB-FKIMG IS INITIAL.
  5577|     P_MAT_ITAB-UPRICE = ( P_MAT_ITAB-NETWR ) / ( P_MAT_ITAB-FKIMG ).
  5578|   ELSE.
  5579|     P_MAT_ITAB-UPRICE = ' '.
  5580|   ENDIF.
  5581| 
  5582| * 단가
  5583|   MOVE P_MAT_ITAB-UPRICE  TO P_MATZEIL-UPRICE.
  5584| 
  5585| * 수량
  5586|   MOVE P_MAT_ITAB-FKIMG TO P_MATZEIL-FKIMG.
  5587| * 공급가액
  5588|   MOVE P_MAT_ITAB-NETWR TO P_MATZEIL-NETWR.
  5589| * 부가세액
  5590|   MOVE P_MAT_ITAB-MWSBP TO P_MATZEIL-MWSBP .
  • EN: Compute the average unit price as net value divided by quantity and move unit price, quantity, net value and VAT amount into the tax invoice item line structure.
  • 업무 키워드: 평균 단가, 수량, 공급가액, 부가세액, 품목 라인
  • English: Unit Price, Quantity, Net Value, VAT Amount
  • 위치: abap://ZFIR0141/ZFIR0141#L5576-L5590 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#FILL_ITEM_AMOUNT_SMARTBILL#C1

FORM PRINT_ITEM_SD_AND_FI_SMARTBILL — ZFIR0141 L5657-L5781 (125줄)

SD 빌링과 FI 전표가 함께 반제된 세금계산서의 품목 라인(MATZEIL1~4)을 채우고 품목별 평균 단가를 계산한다(스마트빌용).

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

[calculation] SD+FI 혼합 건에 대해 MATZEIL4_ITAB 의 공급가액·세액·일자를 4번째 라인 MATZEIL4 에 옮기고 특별 G/L 여부와 라인 수(LINE_COUNT2)에 따라 자재명/품목텍스트를 실제 자재 또는 TEXT-023 으로 세팅한 뒤 SDFI 플래그를 켠다.

  5663|       LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5664|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  5665|                              AND STCD = AUSGLOP_ITAB-STCD
  5666|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5667| 
  5668|         LOOP AT MATZEIL4_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5669|                               AND KUNNR = AUSGLOP_ITAB-KUNNR
  5670|                               AND STCD = AUSGLOP_ITAB-STCD
  5671|                               AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5672| 
  5673|           MOVE MATZEIL4_ITAB-NETWR TO MATZEIL4-NETWR.
  5674| *          MOVE matzeil4-netwr TO matzeil4-netwr.
  5675|           MOVE MATZEIL4_ITAB-MWSBP TO MATZEIL4-MWSBP.
  5676| *          MOVE matzeil4-mwsbp TO matzeil4-mwsbp.
  5677|           MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL4-BUDAT.
  5678| 
  5679|           IF CHECK_ITAB-SAVE_UMSKZ <> ' '.
  5680|             IF CHECK_ITAB-LINE_COUNT2 = 0.
  5681|               MOVE MATZEIL4_ITAB-MATNR TO MATZEIL4-MATNR.
  5682|               WRITE MATZEIL4_ITAB-ARKTX TO MATZEIL4-ARKTX.
  5683|             ELSE.
  5684|               MOVE TEXT-023 TO MATZEIL4-MATNR.
  5685|               MOVE TEXT-023 TO MATZEIL4-ARKTX.
  5686|             ENDIF.
  5687|           ELSEIF AUSGLOP_ITAB-FLAG = ' ' .
  5688|             MOVE TEXT-023 TO MATZEIL4-MATNR.
  5689|             MOVE TEXT-023 TO MATZEIL4-ARKTX.
  5690|           ENDIF.
  5691|         ENDLOOP.
  5692|       ENDLOOP.
  5693| 
  5694|       SDFI = 'X'.
  • EN: For mixed SD+FI clearing, fill item line 4 with net value, tax and date from MATZEIL4_ITAB and set the material text depending on the special G/L indicator, then flag SDFI.
  • 업무 키워드: SD+FI 혼합, 품목 라인 4, 특별 G/L, 품목 텍스트
  • English: Billing Document, FI Document, Item Line, Special G/L Indicator
  • 정의부(복사 시 함께 필요): ALL_ITEMS_ITAB, AUSGLOP_ITAB, AUGBL, MATZEIL4_ITAB, MATTYPE, MATZEIL4, AUSGLOP_MAT_ITAB, CHECK_ITAB, SDFI
  • 위치: abap://ZFIR0141/ZFIR0141#L5663-L5694 · confidence 0.75 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI_SMARTBILL#C1

[calculation] 세금계산서 인쇄 시 품목 수가 4 미만이면 AUSGLOP_MAT_ITAB 각 품목의 평균 단가(NETWR/FKIMG)를 계산해 MATZEIL1~3 에 순서대로 채우고, 4 이상이면 ALL_ITEMS_SD_ITAB 합계를 MATZEIL4 에 TEXT-030 품명으로 요약한다.

  5696|       IF CHK_PRTI = 'X'.
  5697|         LINE_COUNT_PR = 0.
  5698| * if number of lines < 4
  5699|         IF LINE_COUNT < 4.
  5700|           LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS =  AUSGLOP_ITAB-BUKRS
  5701|                                      AND KUNNR =  AUSGLOP_ITAB-KUNNR
  5702|                                      AND STCD = AUSGLOP_ITAB-STCD
  5703|                                      AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5704|             LINE_COUNT_PR = LINE_COUNT_PR + 1.
  5705| 
  5706| * calculating the unit price as the average price of the reported
  5707| * material
  5708|             IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL.
  5709|               AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) /
  5710|                                         ( AUSGLOP_MAT_ITAB-FKIMG ).
  5711|             ELSE.
  5712|               AUSGLOP_MAT_ITAB-UPRICE = ' '.
  5713|             ENDIF.
  5714| 
  5715|             IF LINE_COUNT_PR = 1.
  5716|               MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL1.
  5717|               MOVE AUSGLOP_MAT_ITAB-UPRICE TO MATZEIL1-UPRICE.
  5718|               MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL1-FKIMG.
  5719|               MOVE AUSGLOP_MAT_ITAB-NETWR TO MATZEIL1-NETWR.
  5720|               MOVE AUSGLOP_MAT_ITAB-MWSBP TO MATZEIL1-MWSBP.
  5721|               MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL1-BUDAT.
  5722| 
  5723|             ENDIF.
  5724| 
  5725|             IF LINE_COUNT_PR = 2.
  5726|               MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL2.
  5727|               MOVE AUSGLOP_MAT_ITAB-UPRICE TO MATZEIL2-UPRICE.
  5728|               MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL2-FKIMG.
  5729|               MOVE AUSGLOP_MAT_ITAB-NETWR TO MATZEIL2-NETWR.
  5730|               MOVE AUSGLOP_MAT_ITAB-MWSBP TO MATZEIL2-MWSBP.
  5731|               MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL2-BUDAT.
  5732|             ENDIF.
  5733| 
  5734|             IF LINE_COUNT_PR = 3.
  5735|               MOVE-CORRESPONDING AUSGLOP_MAT_ITAB TO MATZEIL3.
  5736|               MOVE AUSGLOP_MAT_ITAB-UPRICE TO MATZEIL3-UPRICE.
  5737| 
  5738|               MOVE AUSGLOP_MAT_ITAB-UPRICE TO MATZEIL3-UPRICE.
  5739|               MOVE AUSGLOP_MAT_ITAB-FKIMG TO MATZEIL3-FKIMG.
  5740|               MOVE AUSGLOP_MAT_ITAB-NETWR TO MATZEIL3-NETWR.
  5741|               MOVE AUSGLOP_MAT_ITAB-MWSBP TO MATZEIL3-MWSBP.
  5742|               MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL3-BUDAT.
  5743|             ENDIF.
  5744| 
  5745|           ENDLOOP.
  5746| 
  5747| * if number of lines >=4
  5748|         ELSE.
  5749|           LOOP AT ALL_ITEMS_SD_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5750|                                       AND KUNNR = AUSGLOP_ITAB-KUNNR
  5751|                                       AND STCD  = AUSGLOP_ITAB-STCD
  5752|                                       AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5753|             MOVE ALL_ITEMS_ITAB-NETWR TO MATZEIL4-NETWR.
  5754|             MOVE ALL_ITEMS_ITAB-MWSBP TO MATZEIL4-MWSBP.
  5755|             MOVE AUSGLOP_MAT_ITAB-YYYYMMDD     TO MATZEIL4-BUDAT.
  5756|             MOVE TEXT-030 TO MATZEIL4-MATNR.
  5757|           ENDLOOP.
  5758|         ENDIF.
  • EN: When printing the tax invoice, compute the average unit price per material and fill item lines 1-3 if fewer than 4 lines, otherwise summarize SD totals into line 4 with text TEXT-030.
  • 업무 키워드: 평균 단가, 품목 라인, 세금계산서 인쇄, 요약 라인
  • English: Unit Price, Item Line, Tax Invoice, Summary Line
  • 정의부(복사 시 함께 필요): CHK_PRTI, LINE_COUNT_PR, LINE_COUNT, AUSGLOP_MAT_ITAB, AUSGLOP_ITAB, AUGBL, MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3, ALL_ITEMS_SD_ITAB, ALL_ITEMS_ITAB 외 1건
  • 위치: abap://ZFIR0141/ZFIR0141#L5696-L5758 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI_SMARTBILL#C2

[calculation] 추가 시트 인쇄 시 AUSGLOP_MAT_ITAB 각 품목의 평균 단가(NETWR/FKIMG)를 계산해 UPRICE 에 MODIFY 로 반영한다.

  5761|       ELSE.
  5762|         LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5763|                                       AND KUNNR = AUSGLOP_ITAB-KUNNR
  5764|                                       AND STCD =  AUSGLOP_ITAB-STCD
  5765|                                       AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5766| * calculating the unit price as the average price of the reported
  5767| * material
  5768|           IF NOT AUSGLOP_MAT_ITAB-FKIMG IS INITIAL.
  5769| 
  5770|             AUSGLOP_MAT_ITAB-UPRICE = ( AUSGLOP_MAT_ITAB-NETWR ) /
  5771|                                       ( AUSGLOP_MAT_ITAB-FKIMG ).
  5772|           ELSE.
  5773|             AUSGLOP_MAT_ITAB-UPRICE = ' '.
  5774|           ENDIF.
  5775|           MODIFY AUSGLOP_MAT_ITAB.
  5776|         ENDLOOP.
  5777|       ENDIF.
  • EN: For the additional sheet, compute the average unit price per material line and update AUSGLOP_MAT_ITAB.
  • 테이블(파서): read - / write AUSGLOP_MAT_ITAB
  • 업무 키워드: 추가 시트, 평균 단가, 품목 갱신
  • English: Additional Sheet, Unit Price
  • 정의부(복사 시 함께 필요): AUSGLOP_MAT_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L5761-L5777 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_SD_AND_FI_SMARTBILL#C3

FORM PRINT_ITEM_PURE_FI_SMARTBILL — ZFIR0141 L5790-L5841 (52줄)

순수 FI 전표(BKPF 전용)로 반제된 세금계산서의 첫 품목 라인 MATZEIL1 을 전표 텍스트(SGTXT)와 공급가액·세액으로 채운다(스마트빌용).

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

[calculation] 원천이 FI 전표(BKPF)이고 SD 빌링이 없는 경우 ALL_ITEMS_ITAB 을 돌며 전기일을 넣고 전표 항목 텍스트(SGTXT)를 '/' 로 SPLIT 해 품명·수량·단위로 분리하며 공급가액(HWBAS)·세액(HWSTE)을 MATZEIL1 에 세팅하고, 특별 G/L 지시자(SAVE_UMSKZ)가 있으면 MATZEIL1_ITAB 의 자재명으로 대체한다.

  5797|   IF CHECK_ITAB-AWTYP_FI = 'BKPF'.
  5798|     IF CHECK_ITAB-AWTYP_SD = ' '.
  5799| * if the cleared invoices are pure FI-documents fill first line
  5800|       CLEAR MATZEIL1.
  5801|       LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5802|                                AND KUNNR = AUSGLOP_ITAB-KUNNR
  5803|                                AND STCD  = AUSGLOP_ITAB-STCD
  5804|                                AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5805| 
  5806| *        READ TABLE ausglop_itab INDEX l_lines.
  5807| * 주석처리 2006.08.16.
  5808| *        READ TABLE AUSGLOP_ITAB WITH KEY  AUGBL = ALL_ITEMS_ITAB-AUGBL.
  5809| 
  5810|         IF SY-SUBRC EQ 0.
  5811|           MOVE AUSGLOP_ITAB-BUDAT TO MATZEIL1-BUDAT.
  5812|         ENDIF.
  5813| 
  5814|         SPLIT AUSGLOP_ITAB-SGTXT AT '/' INTO MATZEIL1-MATNR
  5815|                                              MATZEIL1-FKIMG
  5816|                                              MATZEIL1-VRKME.
  5817| 
  5818|         MOVE ALL_ITEMS_ITAB-HWBAS TO MATZEIL1-NETWR.
  5819|         MOVE ALL_ITEMS_ITAB-HWSTE TO MATZEIL1-MWSBP.
  5820| 
  5821|         LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5822|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  5823|                              AND STCD  = AUSGLOP_ITAB-STCD
  5824|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5825|           IF CHECK_ITAB-SAVE_UMSKZ = ' '.
  5826| *            MOVE text-030 TO matzeil1-matnr.
  5827|           ELSE.
  5828|             LOOP AT MATZEIL1_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5829|                                     AND KUNNR = AUSGLOP_ITAB-KUNNR
  5830|                                     AND STCD  = AUSGLOP_ITAB-STCD
  5831|                                     AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5832|               MOVE MATZEIL1_ITAB-MATNR TO MATZEIL1-MATNR.
  5833|             ENDLOOP.
  5834|           ENDIF.
  5835|         ENDLOOP.
  5836|       ENDLOOP.
  5837|     ENDIF.
  5838| 
  5839|   ENDIF.
  • EN: For pure FI documents, fill the first tax invoice item line MATZEIL1 by splitting the line item text SGTXT into material/quantity/unit and moving tax base and tax amount; override the material with MATZEIL1_ITAB when a special G/L indicator exists.
  • SAP 객체: BKPF
  • 업무 키워드: 순수 FI 전표, 품목 라인, 전표 텍스트 분리, 공급가액, 세액, 특별 G/L
  • English: FI Document, Item Line, Line Item Text, Tax Base, Special G/L Indicator
  • 정의부(복사 시 함께 필요): CHECK_ITAB, MATTYPE, MATZEIL1, ALL_ITEMS_ITAB, AUSGLOP_ITAB, AUGBL, MATZEIL4_ITAB, MATZEIL1_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L5797-L5839 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#PRINT_ITEM_PURE_FI_SMARTBILL#C1

FORM WRITE_ITEM_SD_SMARTBILL — ZFIR0141 L5394-L5414 (21줄)

SD 빌링 기준 세금계산서 품목 라인(MATZEIL)을 스마트빌 품목 테이블 GT_ZSBISSUE 에 일련번호·품명·규격·수량·단가·공급가액·세액으로 적재한다.

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

[interface] 고객이 있는 품목 라인만 대상으로 카운터를 증가시키고 세금계산서 번호(AUGBL)·전기일·자재·판매단위·수량·단가·공급가액(NETWR)·세액(MWSBP)을 KRW 기준으로 GT_ZSBISSUE 에 APPEND 한다.

  5396|   CHECK NOT P_MATZEIL-KUNNR IS INITIAL.
  5397|   GT_CNT = GT_CNT + 1.
  5398| 
  5399|   GT_ZSBISSUE-KUNNR = P_MATZEIL-KUNNR.
  5400|   GT_ZSBISSUE-ZSQNO = AUSGLOP_ITAB-AUGBL.
  5401|   GT_ZSBISSUE-BUZEI = GT_CNT.
  5402|   GT_ZSBISSUE-ZRQDT = P_MATZEIL-BUDAT.
  5403|   GT_ZSBISSUE-ZITEM = P_MATZEIL-MATNR.
  5404|   GT_ZSBISSUE-ZSIZE = P_MATZEIL-VRKME.
  5405|   GT_ZSBISSUE-ZREQT = P_MATZEIL-FKIMG(8).
  5406|   GT_ZSBISSUE-HWAER = 'KRW'.
  5407|   GT_ZSBISSUE-ZNTAT = P_MATZEIL-UPRICE.
  5408|   GT_ZSBISSUE-HWBAS = P_MATZEIL-NETWR.
  5409|   GT_ZSBISSUE-HWSTE = P_MATZEIL-MWSBP.
  5410| 
  5411|   APPEND GT_ZSBISSUE.
  5412|   CLEAR GT_ZSBISSUE.
  • EN: Append an SD-based item line to GT_ZSBISSUE with the tax invoice number, request date, material, unit, quantity, unit price, net value and tax amount in KRW.
  • SAP 객체: GT_ZSBISSUE
  • 업무 키워드: 세금계산서 품목, SD 빌링, 단가, 공급가액, 세액, 스마트빌
  • English: Tax Invoice Item, Billing, Unit Price, Net Value, Tax Amount
  • 정의부(복사 시 함께 필요): GT_CNT, GT_ZSBISSUE, AUSGLOP_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L5396-L5412 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_SD_SMARTBILL#C1

FORM WRITE_ITEM_FI_SMARTBILL — ZFIR0141 L5422-L5464 (43줄)

FI 전표 기준 세금계산서 품목 라인(MATZEIL)의 단가를 공급가액/수량으로 계산한 뒤 스마트빌 품목 테이블 GT_ZSBISSUE 에 적재한다.

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

[calculation] 수량(FKIMG)을 숫자로 변환하고 FM Z_FI_COMMA_DEL 로 공급가액(NETWR)의 콤마를 제거한 뒤 수량이 0 이 아니면 공급가액/수량/100 으로 단가(L_DANGA)를 계산한다.

  5433|   WRITE P_MATZEIL-FKIMG TO LN_FKIMG.
  5434| 
  5435|   CALL FUNCTION 'Z_FI_COMMA_DEL'
  5436|     EXPORTING
  5437|       INPUT  = P_MATZEIL-NETWR
  5438|     IMPORTING
  5439|       OUTPUT = LN_NETWR.
  5440| 
  5441| * O으로 나눌수 없다.
  5442|   IF LN_FKIMG NE ' ' OR  LN_FKIMG NE 0.
  5443|     L_DANGA = LN_NETWR / LN_FKIMG.
  5444|     L_DANGA = L_DANGA / 100.
  5445|   ENDIF.
  • EN: Convert quantity to numeric, strip commas from the net value via FM Z_FI_COMMA_DEL, and compute the unit price as net value divided by quantity (scaled by 100) when quantity is non-zero.
  • 호출(파서): Z_FI_COMMA_DEL
  • SAP 객체: Z_FI_COMMA_DEL
  • 업무 키워드: 단가 계산, 수량, 공급가액, 콤마 제거, 0 나누기 방지
  • English: Unit Price, Quantity, Net Value, Conversion
  • 정의부(복사 시 함께 필요): LN_FKIMG, LN_NETWR, L_DANGA
  • 위치: abap://ZFIR0141/ZFIR0141#L5433-L5445 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI_SMARTBILL#C1

[interface] 세금계산서 번호(AUGBL)·일련번호·전기일·자재·단위·수량·계산된 단가·공급가액·세액을 KRW 기준으로 스마트빌 품목 테이블 GT_ZSBISSUE 에 APPEND 한다.

  5448|   GT_ZSBISSUE-KUNNR = P_MATZEIL-KUNNR.
  5449|   GT_ZSBISSUE-ZSQNO = AUSGLOP_ITAB-AUGBL.
  5450| 
  5451|   GT_ZSBISSUE-BUZEI = GT_CNT.
  5452|   GT_ZSBISSUE-ZRQDT = P_MATZEIL-BUDAT.
  5453|   GT_ZSBISSUE-ZITEM = P_MATZEIL-MATNR.
  5454|   GT_ZSBISSUE-ZSIZE = P_MATZEIL-VRKME.
  5455|   GT_ZSBISSUE-ZREQT = P_MATZEIL-FKIMG+5(8).
  5456|   GT_ZSBISSUE-HWAER = 'KRW'.
  5457|   GT_ZSBISSUE-ZNTAT = L_DANGA.
  5458|   GT_ZSBISSUE-HWBAS = P_MATZEIL-NETWR.
  5459|   GT_ZSBISSUE-HWSTE = P_MATZEIL-MWSBP.
  5460| 
  5461|   APPEND GT_ZSBISSUE.
  5462|   CLEAR GT_ZSBISSUE.
  • EN: Append the FI-based item line with tax invoice number, sequence, date, material, unit, quantity, computed unit price, net value and tax amount to GT_ZSBISSUE.
  • SAP 객체: GT_ZSBISSUE
  • 업무 키워드: 세금계산서 품목, FI 전표, 스마트빌 전송 품목
  • English: Tax Invoice Item, FI Document, Smartbill
  • 정의부(복사 시 함께 필요): GT_ZSBISSUE, AUSGLOP_ITAB, GT_CNT, L_DANGA
  • 위치: abap://ZFIR0141/ZFIR0141#L5448-L5462 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_ITEM_FI_SMARTBILL#C2

FORM TRANSMIT_TO_SMARTBILL — ZFIR0141F01 L49-L55 (7줄)

매출 세금계산서를 스마트빌로 전송하는 상위 흐름으로 전송 데이터 생성 → Z_SB_DTI_ISSUE 전송 → 결과 메시지 표시를 순서대로 수행한다.

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

[control_flow] MAKE_DATA_TO_TRANSMIT 로 전자세금계산서 전송 데이터를 만들고 TRANSMIT_DTI_TO_SB 로 스마트빌에 전송한 뒤 DISPLAY_ERROR_MSG 로 리턴 코드별 메시지를 표시한다.

    51|   PERFORM MAKE_DATA_TO_TRANSMIT.
    52|   PERFORM TRANSMIT_DTI_TO_SB           CHANGING  P_RETURN_CODE.
    53|   PERFORM DISPLAY_ERROR_MSG            USING     P_RETURN_CODE.
  • EN: Orchestrate Smartbill transmission: build data, transmit via TRANSMIT_DTI_TO_SB and display the return-code message.
  • 호출(파서): MAKE_DATA_TO_TRANSMIT, TRANSMIT_DTI_TO_SB, DISPLAY_ERROR_MSG
  • 업무 키워드: 스마트빌 전송, 매출 세금계산서, 전자세금계산서
  • English: Smartbill, Electronic Tax Invoice, Transmission
  • 위치: abap://ZFIR0141/ZFIR0141F01#L51-L53 · confidence 0.8 · ZFIR0141#ZFIR0141F01#FORM#TRANSMIT_TO_SMARTBILL#C1

FORM MAKE_DATA_TO_TRANSMIT — ZFIR0141F01 L62-L69 (8줄)

스마트빌 전송용 헤더·품목·결제·전표번호 데이터를 순서대로 생성하는 PERFORM 디스패치 FORM 이다.

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

[control_flow] 전자세금계산서 전송 데이터를 ZSB_HEADER → ZSB_ITEM → ZSB_PAYMENT → ZSB_BELNR 순으로 생성하는 하위 FORM 들을 호출한다.

    64|   PERFORM MAKE_ZSB_HEADER.
    65|   PERFORM MAKE_ZSB_ITEM.
    66|   PERFORM MAKE_ZSB_PAYMENT.
    67|   PERFORM MAKE_ZSB_BELNR.
  • EN: Sequentially call MAKE_ZSB_HEADER, MAKE_ZSB_ITEM, MAKE_ZSB_PAYMENT and MAKE_ZSB_BELNR to build the Smartbill transmission data.
  • 호출(파서): MAKE_ZSB_HEADER, MAKE_ZSB_ITEM, MAKE_ZSB_PAYMENT, MAKE_ZSB_BELNR
  • SAP 객체: ZSB_HEADER, ZSB_ITEM, ZSB_PAYMENT, ZSB_BELNR
  • 업무 키워드: 전송 데이터 생성, 전자세금계산서, 헤더, 품목, 결제
  • English: Electronic Tax Invoice, Smartbill, Transmission Data
  • 위치: abap://ZFIR0141/ZFIR0141F01#L64-L67 · confidence 0.8 · ZFIR0141#ZFIR0141F01#FORM#MAKE_DATA_TO_TRANSMIT#C1

FORM MAKE_ZSB_HEADER — ZFIR0141F01 L76-L94 (19줄)

스마트빌 전송 헤더 테이블 ZSB_HEADER 를 GT_ZSBBSEG 로부터 생성하며 정발행(ZSIGN='S')·매출(AR) 구분을 세팅한다.

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

[interface] GT_ZSBBSEG 각 행을 ZSB_HEADER 로 옮기고 ZSIGN='S'(정발행), ZARAP='AR'(매출) 구분을 지정해 전자세금계산서 헤더 전송 데이터를 구성한다.

    80|   LOOP AT GT_ZSBBSEG.
    81|     MOVE-CORRESPONDING GT_ZSBBSEG TO ZSB_HEADER.
    82| 
    83|     ZSB_HEADER-ZSIGN = 'S'.
    84|     ZSB_HEADER-ZARAP = 'AR'.
    85| 
    86| *    IF ZSB_HEADER-BUYNO = ''.
    87| *      ZSB_HEADER-BUYNO = '2148673542'.  "개발을 위해 임시로 하드코딩
    88| *    ENDIF.
    89| 
    90|     APPEND ZSB_HEADER.
    91|     CLEAR  ZSB_HEADER.
    92|   ENDLOOP.
  • EN: Build the electronic tax invoice header table ZSB_HEADER from GT_ZSBBSEG, marking ZSIGN='S' (issued by supplier) and ZARAP='AR'.
  • SAP 객체: ZSB_HEADER
  • 업무 키워드: 전자세금계산서 헤더, 정발행, 매출, 전송 데이터
  • English: Electronic Tax Invoice, Header, Smartbill, Accounts Receivable
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, ZSB_HEADER
  • 위치: abap://ZFIR0141/ZFIR0141F01#L80-L92 · confidence 0.85 · ZFIR0141#ZFIR0141F01#FORM#MAKE_ZSB_HEADER#C1

FORM MAKE_ZSB_ITEM — ZFIR0141F01 L127-L142 (16줄)

스마트빌 전송 품목 테이블 ZSB_ITEM 을 전표 정보(GT_ZSBBSEG 첫 행)와 품목 정보(GT_ZSBISSUE)를 합쳐 AR 구분으로 생성한다.

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

[interface] GT_ZSBBSEG 첫 행의 전표 공통 정보와 GT_ZSBISSUE 의 각 품목(품명·규격·수량·단가·공급가액·세액)을 MOVE-CORRESPONDING 으로 합쳐 ZARAP='AR' 인 스마트빌 품목 테이블 ZSB_ITEM 을 만든다.

   131|   READ TABLE GT_ZSBBSEG INDEX 1.
   132| 
   133|   LOOP AT GT_ZSBISSUE.
   134|     MOVE-CORRESPONDING GT_ZSBBSEG  TO ZSB_ITEM.
   135|     MOVE-CORRESPONDING GT_ZSBISSUE TO ZSB_ITEM.
   136|     ZSB_ITEM-ZARAP = 'AR'.
   137| 
   138|     APPEND ZSB_ITEM.
   139|     CLEAR  ZSB_ITEM.
   140|   ENDLOOP.
  • EN: Merge the common document data from GT_ZSBBSEG with each item in GT_ZSBISSUE into the Smartbill item table ZSB_ITEM with ZARAP='AR'.
  • SAP 객체: ZSB_ITEM
  • 업무 키워드: 전자세금계산서 품목, 전송 데이터, 매출채권
  • English: Electronic Tax Invoice, Item, Smartbill, Accounts Receivable
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, GT_ZSBISSUE, ZSB_ITEM
  • 위치: abap://ZFIR0141/ZFIR0141F01#L131-L140 · confidence 0.85 · ZFIR0141#ZFIR0141F01#FORM#MAKE_ZSB_ITEM#C1

FORM MAKE_ZSB_PAYMENT — ZFIR0141F01 L149-L171 (23줄)

스마트빌 전송 결제정보 테이블 ZSB_PAYMENT 를 세금계산서별로 현금(10)·수표(20)·어음(2AA)·외상(30) 4개 결제수단 코드 행으로 생성한다.

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

[interface] GT_ZSBBSEG 각 세금계산서에 대해 ZARAP='AR' 로 결제정보를 만들고 결제수단 코드 ZPMMC 를 '10'(현금), '20'(수표), '2AA'(어음), '30' 으로 4행 APPEND 하여 전자세금계산서 결제 구분 데이터를 구성한다.

   153|   LOOP AT GT_ZSBBSEG.
   154|     CLEAR ZSB_PAYMENT.
   155|     MOVE-CORRESPONDING GT_ZSBBSEG TO ZSB_PAYMENT.
   156|     ZSB_PAYMENT-ZARAP = 'AR'.
   157| 
   158|     ZSB_PAYMENT-ZPMMC = '10'.    "* 결제정보 현금
   159|     APPEND ZSB_PAYMENT.
   160| 
   161|     ZSB_PAYMENT-ZPMMC = '20'.    "* 결제정보 수표
   162|     APPEND ZSB_PAYMENT.
   163| 
   164|     ZSB_PAYMENT-ZPMMC = '2AA'.   "* 결제정보 어음
   165|     APPEND ZSB_PAYMENT.
   166| 
   167|     ZSB_PAYMENT-ZPMMC = '30'.    "* 결제정보 수표
   168|     APPEND ZSB_PAYMENT.
   169|   ENDLOOP.
  • EN: For each tax invoice in GT_ZSBBSEG, append four payment rows to ZSB_PAYMENT with payment method codes 10 (cash), 20 (check), 2AA (note) and 30.
  • SAP 객체: ZSB_PAYMENT
  • 업무 키워드: 결제정보, 현금, 수표, 어음, 전자세금계산서, 전송 데이터
  • English: Payment Method, Electronic Tax Invoice, Smartbill
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, ZSB_PAYMENT
  • 위치: abap://ZFIR0141/ZFIR0141F01#L153-L169 · confidence 0.8 · ZFIR0141#ZFIR0141F01#FORM#MAKE_ZSB_PAYMENT#C1

FORM MAKE_ZSB_BELNR — ZFIR0141F01 L178-L191 (14줄)

스마트빌 전송용 전표번호 테이블 ZSB_BELNR 을 GT_ZSBBSEG 로부터 만들고 AR(매출) 구분을 세팅한다.

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

[interface] GT_ZSBBSEG 의 각 전표 항목을 MOVE-CORRESPONDING 으로 ZSB_BELNR 에 옮기고 ZARAP='AR' 로 매출채권 구분을 지정해 스마트빌 전송 전표번호 테이블을 구성한다.

   182|   LOOP AT GT_ZSBBSEG.
   183|     MOVE-CORRESPONDING GT_ZSBBSEG TO ZSB_BELNR.
   184|     ZSB_BELNR-ZARAP = 'AR'.
   185| 
   186|     APPEND ZSB_BELNR.
   187|     CLEAR  ZSB_BELNR.
   188|   ENDLOOP.
  • EN: Build the Smartbill document number table ZSB_BELNR from GT_ZSBBSEG with ZARAP='AR' marking accounts receivable.
  • SAP 객체: ZSB_BELNR
  • 업무 키워드: 전표번호, 매출채권, 스마트빌 전송 데이터
  • English: Accounts Receivable, Document Number, Smartbill
  • 정의부(복사 시 함께 필요): GT_ZSBBSEG, ZSB_BELNR
  • 위치: abap://ZFIR0141/ZFIR0141F01#L182-L188 · confidence 0.85 · ZFIR0141#ZFIR0141F01#FORM#MAKE_ZSB_BELNR#C1

FORM TRANSMIT_DTI_TO_SB — ZFIR0141F01 L197-L216 (20줄)

전자세금계산서 헤더·품목·결제·전표번호 테이블을 스마트빌 발행 FM Z_SB_DTI_ISSUE 로 전송하고 리턴 코드를 받는다.

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

[interface] ZSB_HEADER/ZSB_ITEM/ZSB_PAYMENT/ZSB_BELNR 테이블을 넘겨 스마트빌 전자세금계산서 발행 FM Z_SB_DTI_ISSUE 를 호출하고 RETURN_CODE 를 P_RETURN_CODE 로 돌려받는다.

   201|   CALL FUNCTION 'Z_SB_DTI_ISSUE'
   202|        IMPORTING
   203|             RETURN_CODE = P_RETURN_CODE
   204|        TABLES
   205|             ZSB_HEADER  = ZSB_HEADER
   206|             ZSB_ITEM    = ZSB_ITEM
   207|             ZSB_PAYMENT = ZSB_PAYMENT
   208|             ZSB_BELNR   = ZSB_BELNR
   209|        EXCEPTIONS
   210|             FAIL_ISSUE  = 1
   211|             OTHERS      = 2.
   212| 
   213|   IF SY-SUBRC <> 0.
   214|   ENDIF.
  • EN: Call FM Z_SB_DTI_ISSUE with the electronic tax invoice header, item, payment and document tables to transmit to Smartbill and receive the return code.
  • 호출(파서): Z_SB_DTI_ISSUE
  • SAP 객체: Z_SB_DTI_ISSUE, ZSB_HEADER, ZSB_ITEM, ZSB_PAYMENT, ZSB_BELNR
  • 업무 키워드: 전자세금계산서, 스마트빌 전송, 발행, 리턴 코드
  • English: Electronic Tax Invoice, Smartbill, Interface, Return Code
  • 정의부(복사 시 함께 필요): ZSB_HEADER, ZSB_ITEM, ZSB_PAYMENT, ZSB_BELNR
  • 위치: abap://ZFIR0141/ZFIR0141F01#L201-L214 · confidence 0.9 · ZFIR0141#ZFIR0141F01#FORM#TRANSMIT_DTI_TO_SB#C1

FORM DISPLAY_ERROR_MSG — ZFIR0141F01 L223-L245 (23줄)

스마트빌 전송 리턴 코드에 따라 정상 발행·네트워크 장애·통신 에러·데이터 검증 오류 메시지를 표시하고 그 외 코드는 Z_SB_RETURN_MESSAGE 로 메시지를 출력한다.

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

[output] 리턴 코드 'Y' 면 정상 발행 메시지 S025(ZDTI), 공백이면 네트워크 장애, '2' 면 통신 에러, '3' 이면 데이터 검증 오류 메시지를 표시하고 나머지 코드는 FM Z_SB_RETURN_MESSAGE 로 코드별 메시지를 출력한다.

   225|   IF P_RETURN_CODE = 'Y'.
   226|     MESSAGE S025(ZDTI).  " '정상적으로 발행했습니다!'
   227| 
   228|   ELSE.
   229|     IF P_RETURN_CODE IS INITIAL.
   230|       MESSAGE S000(ZDTI)
   231|           WITH '네트워크 장애. 잠시후 다시 시도해 주시기 바랍니다.'.
   232|     ELSEIF P_RETURN_CODE = '2'.
   233|       MESSAGE S000(ZDTI)
   234|           WITH '통신 에러. 스마트빌에 문의해 주시기 바랍니다.'.
   235|     ELSEIF P_RETURN_CODE = '3'.
   236|       MESSAGE S000(ZDTI)
   237|           WITH '데이터 검증 오류. 전송 데이터 확인 부탁드립니다.'.
   238|     ELSE.
   239|       CALL FUNCTION 'Z_SB_RETURN_MESSAGE'    "리턴코드별 메세지 출력
   240|            EXPORTING
   241|                 RETURN_CODE = P_RETURN_CODE.
   242|     ENDIF.
   243|   ENDIF.
  • EN: Map the Smartbill return code to a status message (success, network failure, communication error, data validation error) or delegate to FM Z_SB_RETURN_MESSAGE for other codes.
  • 호출(파서): Z_SB_RETURN_MESSAGE
  • SAP 객체: Z_SB_RETURN_MESSAGE, ZDTI
  • 업무 키워드: 리턴 코드, 오류 메시지, 전자세금계산서 발행, 네트워크 장애
  • English: Return Code, Error Message, Electronic Tax Invoice, Smartbill
  • 위치: abap://ZFIR0141/ZFIR0141F01#L225-L243 · confidence 0.9 · ZFIR0141#ZFIR0141F01#FORM#DISPLAY_ERROR_MSG#C1

FORM SAVE_RETURN_CODE_TO_AUSGLOP — ZFIR0141F01 L251-L269 (19줄)

스마트빌 전송 리턴 코드가 성공('Y')이면 SEL_AUSGLOP_ITAB 과 AUSGLOP_ITAB 의 RESULT 필드를 'Y' 로 표시한다.

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

[calculation] 전송 결과가 'Y'(정상 발행)일 때 선택 대상 SEL_AUSGLOP_ITAB 과 전체 AUSGLOP_ITAB 의 RESULT 를 'Y' 로 MODIFY 하여 이후 UPDATE_TABLE 에서 성공 건만 전표에 반영되도록 한다.

   253|     IF P_RETURN_CODE = 'Y'.
   254| 
   255|       LOOP AT SEL_AUSGLOP_ITAB.
   256|         SEL_AUSGLOP_ITAB-RESULT = 'Y'.
   257|         MODIFY SEL_AUSGLOP_ITAB.
   258|         CLEAR  SEL_AUSGLOP_ITAB.
   259|       ENDLOOP.
   260| 
   261|       LOOP AT AUSGLOP_ITAB.
   262|         AUSGLOP_ITAB-RESULT = 'Y'.
   263|         MODIFY AUSGLOP_ITAB.
   264|         CLEAR  AUSGLOP_ITAB.
   265|       ENDLOOP.
   266| 
   267|     ENDIF.
  • EN: When the Smartbill return code is 'Y', set RESULT='Y' on SEL_AUSGLOP_ITAB and AUSGLOP_ITAB so subsequent processing treats them as successfully issued.
  • 테이블(파서): read - / write SEL_AUSGLOP_ITAB, AUSGLOP_ITAB
  • 업무 키워드: 전송 결과, 발행 성공, 결과 플래그
  • English: Return Code, Transmission Result, Smartbill
  • 정의부(복사 시 함께 필요): SEL_AUSGLOP_ITAB, AUSGLOP_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141F01#L253-L267 · confidence 0.85 · ZFIR0141#ZFIR0141F01#FORM#SAVE_RETURN_CODE_TO_AUSGLOP#C1

FORM SAP_SCRIPT — ZFIR0141 L4146-L4518 (373줄)

세금계산서 SAPscript 출력 절차의 시작 부분으로 인쇄 옵션을 설정하고 OPEN_FORM 으로 인쇄 작업을 연 뒤 고객·사업장 순으로 출력 대상을 정렬한다.

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

[fm_call] 출력 옵션(TDDEST/TDIMMED/TDDELETE/TDNEWID)을 세팅하고 SAPscript FM OPEN_FORM 을 PRINTER 장치·대화 모드로 호출하여 세금계산서 인쇄 작업을 열며 실패 시 오류를 WRITE 하고 종료한다.

  4151|   OPTIONS-TDDEST   = '*'.
  4152|   OPTIONS-TDIMMED  = '*'.
  4153|   OPTIONS-TDDELETE = '*'.
  4154|   OPTIONS-TDNEWID  = 'X'.
  4155|   CALL FUNCTION 'OPEN_FORM'
  4156|     EXPORTING
  4157|       DEVICE   = 'PRINTER'
  4158|       DIALOG   = 'X'
  4159|       OPTIONS  = OPTIONS
  4160|     EXCEPTIONS
  4161|       CANCELED = 1
  4162|       DEVICE   = 2
  4163|       FORM     = 3
  4164|       OPTIONS  = 4
  4165|       UNCLOSED = 5
  4166|       OTHERS   = 6.
  4167|   IF SY-SUBRC <> 0.
  4168|     WRITE 'Error in OPEN_FORM'(051).
  4169|     EXIT.
  4170|   ENDIF.
  • EN: Set print options and call SAPscript FM OPEN_FORM with DEVICE='PRINTER' and dialog to open the tax invoice print job; exit with an error message on failure.
  • 호출(파서): OPEN_FORM
  • SAP 객체: OPEN_FORM
  • 업무 키워드: SAPscript, 인쇄 작업 열기, 세금계산서 출력, 출력 옵션
  • English: SAPscript, OPEN_FORM, Print Job, Tax Invoice
  • 정의부(복사 시 함께 필요): OPTIONS, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L4151-L4170 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C1

[aggregation] 직접 실행 시 체크된 항목만 대상으로 하고, 발행일(AUGDT)의 연·월·일을 분리하며 세금계산서 번호(AUGBL)가 바뀔 때 해당 세금계산서의 판매 품목 수(AUSGLOP_MAT_ITAB 건수)를 LINE_COUNT 로 센다.

  4176|     IF PROG_NAME = ' '.
  4177|       CHECK AUSGLOP_ITAB-CHECK = 'X'.
  4178|     ENDIF.
  4179| 
  4180|     LINE_COUNT_PR = 0.
  4181|     SEL_INDEX = SY-TABIX.
  4182| 
  4183| 
  4184|     WRITE AUSGLOP_ITAB-AUGDT+2(2) TO BYEAR.
  4185|     WRITE AUSGLOP_ITAB-AUGDT+4(2) TO BMONTH.
  4186|     WRITE AUSGLOP_ITAB-AUGDT+6(2) TO BDAY.
  4187| 
  4188|     AT NEW AUGBL.
  4189|       IF AUSGLOP_ITAB-AUGBL NE  AUGBL.
  4190|         READ TABLE AUSGLOP_ITAB INDEX SEL_INDEX.
  4191|         CLEAR AUSGLOP_MAT_ITAB.
  4192|         CLEAR ALL_ITEMS_ITAB.
  4193| 
  4194| * number of item lines in ausglop_mat_itab --> number of sold
  4195| * materials
  4196| 
  4197|         LINE_COUNT = 0.
  4198|         LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4199|                                    AND KUNNR = AUSGLOP_ITAB-KUNNR
  4200|                                    AND STCD  = AUSGLOP_ITAB-STCD
  4201|                                    AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4202|           LINE_COUNT = LINE_COUNT + 1.
  4203|         ENDLOOP.
  • EN: Filter checked rows, split the issue date into year/month/day and, at each new tax invoice number, count sold material lines in AUSGLOP_MAT_ITAB.
  • 업무 키워드: 세금계산서 번호, 발행일, 품목 수, 선택 항목
  • English: Tax Invoice, Issue Date, Line Count, AT NEW
  • 정의부(복사 시 함께 필요): PROG_NAME, AUSGLOP_ITAB, LINE_COUNT_PR, SEL_INDEX, BYEAR, BMONTH, BDAY, AUGBL, AUSGLOP_MAT_ITAB, ALL_ITEMS_ITAB, LINE_COUNT
  • 위치: abap://ZFIR0141/ZFIR0141#L4176-L4203 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C2

[fm_call] 고객별 세금계산서 양식을 SAPscript FM START_FORM 으로 시작하고 실패 시 오류를 출력하며 발행일의 연·월·일 텍스트를 다시 세팅한다.

  4208|         CALL FUNCTION 'START_FORM'
  4209|           EXPORTING
  4210|             FORM   = FORM
  4211|           EXCEPTIONS
  4212|             OTHERS = 1.
  4213|         IF SY-SUBRC <> 0.
  4214|           WRITE 'Error in START_FORM'(050).
  4215|           EXIT.
  4216|         ENDIF.
  4217|         WRITE AUSGLOP_ITAB-AUGDT+2(2) TO BYEAR.
  4218|         WRITE AUSGLOP_ITAB-AUGDT+4(2) TO BMONTH.
  4219|         WRITE AUSGLOP_ITAB-AUGDT+6(2) TO BDAY.
  • EN: Start the SAPscript form for the customer via START_FORM and set the year/month/day text symbols of the issue date.
  • 호출(파서): START_FORM
  • SAP 객체: START_FORM
  • 업무 키워드: SAPscript, 양식 시작, 세금계산서 양식
  • English: SAPscript, START_FORM, Tax Invoice Form
  • 정의부(복사 시 함께 필요): FORM, EXIT, AUSGLOP_ITAB, BYEAR, BMONTH, BDAY
  • 위치: abap://ZFIR0141/ZFIR0141#L4208-L4219 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C3

[output] 일회성 고객(XCPDK='X'), 마스터 고객, 지점(FILKD) 고객으로 나누어 ADDRESS_ITAB 과 사업장 주소 BUPLA_ADRESSE 를 읽고 세금계산서 인쇄(CHK_PRTI='X')면 BUPLA_ADRESSE/BUPLA_ADRESSE2 요소를 ADDRESS 창에, 추가 시트면 CUST_ADDR 요소를 CUSTADDR 창에 WRITE_FORM 으로 출력한다.

  4224|         IF AUSGLOP_ITAB-XCPDK = 'X'.
  4225| 
  4226|           LOOP AT ADDRESS_ITAB WHERE KUNNR = AUSGLOP_ITAB-KUNNR
  4227|                                  AND STCD  = AUSGLOP_ITAB-STCD.
  4228| 
  4229|             IF CHK_PRTI = 'X'.
  4230|               LOOP AT BUPLA_ADRESSE WHERE BRANCH =
  4231|               AUSGLOP_ITAB-BUPLA AND AUGBL = AUSGLOP_ITAB-AUGBL .
  4232| 
  4233|                 CALL FUNCTION 'WRITE_FORM'
  4234|                   EXPORTING
  4235|                     ELEMENT = 'BUPLA_ADRESSE'
  4236|                     WINDOW  = 'ADDRESS'
  4237|                   EXCEPTIONS
  4238|                     OTHERS  = 1.
  4239|                 IF SY-SUBRC <> 0.
  4240|                   WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE'(055).
  4241|                   EXIT.
  4242|                 ENDIF.
  4243| 
  4244|                 CALL FUNCTION 'WRITE_FORM'
  4245|                   EXPORTING
  4246|                     ELEMENT = 'BUPLA_ADRESSE2'
  4247|                     WINDOW  = 'ADDRESS2'
  4248|                   EXCEPTIONS
  4249|                     OTHERS  = 1.
  4250|                 IF SY-SUBRC <> 0.
  4251|                   WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE2'(056).
  4252|                   EXIT.
  4253|                 ENDIF.
  4254|               ENDLOOP.
  4255|             ELSE.
  4256| *             In case of printing add. sheet
  4257|               CALL FUNCTION 'WRITE_FORM'
  4258|                 EXPORTING
  4259|                   ELEMENT = 'CUST_ADDR'
  4260|                   WINDOW  = 'CUSTADDR'
  4261|                 EXCEPTIONS
  4262|                   OTHERS  = 1.
  4263| *              IF sy-subrc <> 0.
  4264| *                WRITE 'Error in WRITE_FORM, element CUST_ADDR'(055).
  4265| *                EXIT.
  4266| *              ENDIF.
  4267|             ENDIF.
  4268|           ENDLOOP.
  4269| 
  4270| * in case of customers with master data
  4271|         ELSE.
  4272| 
  4273|           IF AUSGLOP_ITAB-FILKD = ' '.
  4274| 
  4275|             LOOP AT ADDRESS_ITAB WHERE  KUNNR = AUSGLOP_ITAB-KUNNR.
  4276| 
  4277|               IF CHK_PRTI = 'X'.
  4278|                 LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA
  4279|                                        AND  AUGBL = AUSGLOP_ITAB-AUGBL.
  4280| 
  4281|                   CALL FUNCTION 'WRITE_FORM'
  4282|                     EXPORTING
  4283|                       ELEMENT = 'BUPLA_ADRESSE'
  4284|                       WINDOW  = 'ADDRESS'
  4285|                     EXCEPTIONS
  4286|                       OTHERS  = 1.
  4287|                   IF SY-SUBRC <> 0.
  4288|                     WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE'(055).
  4289|                     EXIT.
  4290|                   ENDIF.
  4291| 
  4292|                   CALL FUNCTION 'WRITE_FORM'
  4293|                     EXPORTING
  4294|                       ELEMENT = 'BUPLA_ADRESSE2'
  4295|                       WINDOW  = 'ADDRESS2'
  4296|                     EXCEPTIONS
  4297|                       OTHERS  = 1.
  4298|                   IF SY-SUBRC <> 0.
  4299|                     WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE2'(056).
  4300|                     EXIT.
  4301|                   ENDIF.
  4302|                 ENDLOOP.
  4303| *             In case of printing add. sheet
  4304|               ELSE.
  4305|                 CALL FUNCTION 'WRITE_FORM'
  4306|                   EXPORTING
  4307|                     ELEMENT = 'CUST_ADDR'
  4308|                     WINDOW  = 'CUSTADDR'
  4309|                   EXCEPTIONS
  4310|                     OTHERS  = 1.
  4311| *                IF sy-subrc <> 0.
  4312| *                  WRITE 'Error in WRITE_FORM, elementCUST_ADDR'(055).
  4313| *                  EXIT.
  4314| *                ENDIF.
  4315|               ENDIF.
  4316|             ENDLOOP.
  4317|           ELSE.
  4318|             LOOP AT ADDRESS_ITAB WHERE  KUNNR = AUSGLOP_ITAB-FILKD.
  4319|               IF CHK_PRTI = 'X'.
  4320|                 LOOP AT BUPLA_ADRESSE WHERE BRANCH = AUSGLOP_ITAB-BUPLA
  4321|                                        AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4322| 
  4323|                   CALL FUNCTION 'WRITE_FORM'
  4324|                     EXPORTING
  4325|                       ELEMENT = 'BUPLA_ADRESSE'
  4326|                       WINDOW  = 'ADDRESS'
  4327|                     EXCEPTIONS
  4328|                       OTHERS  = 1.
  4329|                   IF SY-SUBRC <> 0.
  4330|                     WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE'(055).
  4331|                     EXIT.
  4332|                   ENDIF.
  4333| 
  4334|                   CALL FUNCTION 'WRITE_FORM'
  4335|                     EXPORTING
  4336|                       ELEMENT = 'BUPLA_ADRESSE2'
  4337|                       WINDOW  = 'ADDRESS2'
  4338|                     EXCEPTIONS
  4339|                       OTHERS  = 1.
  4340|                   IF SY-SUBRC <> 0.
  4341|                     WRITE 'Error in WRITE_FORM, element BUPLA_ADRESSE2'(056).
  4342|                     EXIT.
  4343|                   ENDIF.
        (17 생략  전체는 GET /chunks/ZFIR0141%23ZFIR0141%23FORM%23SAP_SCRIPT%23C4)
  • EN: Depending on one-time customer, master customer or branch customer, output the customer and business place address elements (BUPLA_ADRESSE/BUPLA_ADRESSE2 or CUST_ADDR) via WRITE_FORM.
  • 호출(파서): WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM, WRITE_FORM
  • SAP 객체: WRITE_FORM
  • 업무 키워드: 고객 주소, 사업장 주소, 일회성 고객, 지점 고객, 세금계산서 인쇄, 추가 시트
  • English: One-Time Customer, Business Place, Branch, WRITE_FORM, Address Window
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, ADDRESS_ITAB, CHK_PRTI, BUPLA_ADRESSE, AUGBL, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L4224-L4360 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C4

[calculation] PRINT_SUM_LINE 으로 합계를 인쇄하고 CHECK_ITAB 을 돌며 SD 전용·SD+FI 품목을 PRINT_ITEM_* 로 채운 뒤, 순수 FI 전표(BKPF 전용)는 ALL_ITEMS_ITAB 의 공급가액(HWBAS)·세액(HWSTE)을 통화 편집해 MATZEIL4 라인에 넣고 특별G/L 여부(SAVE_UMSKZ)에 따라 품목명을 TEXT-030 또는 MATZEIL4_ITAB-MATNR 로 채운다.

  4367|         PERFORM PRINT_SUM_LINE.
  4368| 
  4369| *----------------------------------------------------------------------*
  4370| *                        Print items
  4371| *----------------------------------------------------------------------*
  4372| 
  4373| * recalculate total base amount and tax amount of all sd-positions
  4374| * without considering fi-documents ( down payments ... )
  4375|         CLEAR MATZEIL1.
  4376|         CLEAR MATZEIL2.
  4377|         CLEAR MATZEIL3.
  4378|         CLEAR MATZEIL4.
  4379| 
  4380|         LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4381|                              AND KUNNR = AUSGLOP_ITAB-KUNNR
  4382|                              AND STCD  = AUSGLOP_ITAB-STCD
  4383|                              AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4384| 
  4385| *---------------------   SD-data--------------------------------------
  4386|           PERFORM PRINT_ITEM_PURE_SD.
  4387| 
  4388| *---------------------SD+FI-data------------------------------------
  4389| 
  4390|           PERFORM PRINT_ITEM_SD_AND_FI.
  4391| 
  4392| *---------------------   FI-data--------------------------------------
  4393| 
  4394|           IF CHECK_ITAB-AWTYP_FI = 'BKPF'.
  4395|             IF CHECK_ITAB-AWTYP_SD = ' '.
  4396| 
  4397| * if the cleared invoices are pure FI-documents
  4398| * fill first line
  4399|               CLEAR MATZEIL4.
  4400|               LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4401|                                     AND KUNNR = AUSGLOP_ITAB-KUNNR
  4402|                                     AND STCD = AUSGLOP_ITAB-STCD
  4403|                                     AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4404| 
  4405|                 WRITE ALL_ITEMS_ITAB-HWBAS TO MATZEIL4-NETWR
  4406|               CURRENCY T001-WAERS USING EDIT MASK 'RRV______________'.
  4407|                 MOVE MATZEIL4-NETWR TO MATZEIL4-NETWR.
  4408|                 WRITE ALL_ITEMS_ITAB-HWSTE TO MATZEIL4-MWSBP
  4409|                 CURRENCY T001-WAERS USING EDIT MASK 'RRV____________'.
  4410|                 MOVE MATZEIL4-MWSBP TO MATZEIL4-MWSBP.
  4411| 
  4412|                 LOOP AT CHECK_ITAB WHERE BUKRS =  AUSGLOP_ITAB-BUKRS
  4413|                                      AND KUNNR = AUSGLOP_ITAB-KUNNR
  4414|                                      AND STCD  = AUSGLOP_ITAB-STCD
  4415|                                      AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4416|                   IF CHECK_ITAB-SAVE_UMSKZ = ' '.
  4417|                     MOVE TEXT-030 TO MATZEIL4-MATNR.
  4418|                   ELSE.
  4419|                     LOOP AT MATZEIL4_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  4420|                                             AND KUNNR = AUSGLOP_ITAB-KUNNR
  4421|                                              AND STCD  = AUSGLOP_ITAB-STCD
  4422|                                             AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4423|                       MOVE MATZEIL4_ITAB-MATNR TO MATZEIL4-MATNR.
  4424|                     ENDLOOP.
  4425|                   ENDIF.
  4426|                 ENDLOOP.
  4427|               ENDLOOP.
  4428|             ENDIF.
  4429|           ENDIF.
  4430|         ENDLOOP.
  • EN: Print the sum line, fill SD and SD+FI items, and for pure FI documents format tax base and tax amount from ALL_ITEMS_ITAB into item line MATZEIL4 with the material text depending on the special G/L indicator.
  • 호출(파서): PRINT_SUM_LINE, PRINT_ITEM_PURE_SD, PRINT_ITEM_SD_AND_FI
  • SAP 객체: T001
  • 업무 키워드: 합계 라인, 품목 라인, 순수 FI 전표, 공급가액, 세액, 특별 G/L
  • English: Sum Line, Item Line, FI Document, Tax Base, Special G/L Indicator
  • 정의부(복사 시 함께 필요): MATTYPE, MATZEIL1, MATZEIL2, MATZEIL3, MATZEIL4, CHECK_ITAB, AUSGLOP_ITAB, AUGBL, ALL_ITEMS_ITAB, T001, MATZEIL4_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L4367-L4430 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C5

[output] 세금계산서 인쇄 모드면 ITEM_LINE_MAT/ITEM_LINE_MAT1 요소를 ITEMS2 창에 WRITE_FORM 하고, 추가 시트 모드면 AUSGLOP_MAT_ITAB 각 품목을 ADD_MAT 요소로 MAIN 창에 APPEND 출력한다.

  4433|         IF CHK_PRTI = 'X'.
  4434|           CALL FUNCTION 'WRITE_FORM'
  4435|             EXPORTING
  4436|               ELEMENT = 'ITEM_LINE_MAT'
  4437|             EXCEPTIONS
  4438|               OTHERS  = 1.
  4439|           IF SY-SUBRC <> 0.
  4440|             WRITE 'Error in WRITE_FORM, element ITEM_LINE_MAT'(006).
  4441|             EXIT.
  4442|           ENDIF.
  4443| 
  4444|           CALL FUNCTION 'WRITE_FORM'
  4445|             EXPORTING
  4446|               ELEMENT  = 'ITEM_LINE_MAT1'
  4447|               FUNCTION = 'APPEND'
  4448|               WINDOW   = 'ITEMS2'
  4449|             EXCEPTIONS
  4450|               OTHERS   = 1.
  4451|           IF SY-SUBRC <> 0.
  4452|             WRITE 'Error in WRITE_FORM, element ITEM_LINE_MAT1'(007).
  4453|             EXIT.
  4454|           ENDIF.
  4455| 
  4456| *     In case of additional sheet
  4457|         ELSE.
  4458|           LOOP AT AUSGLOP_MAT_ITAB WHERE BUKRS =  AUSGLOP_ITAB-BUKRS
  4459|                                     AND    KUNNR = AUSGLOP_ITAB-KUNNR
  4460|                                          AND STCD = AUSGLOP_ITAB-STCD
  4461|                                        AND AUGBL = AUSGLOP_ITAB-AUGBL.
  4462| 
  4463|             CALL FUNCTION 'WRITE_FORM'
  4464|               EXPORTING
  4465|                 ELEMENT  = 'ADD_MAT'
  4466|                 FUNCTION = 'APPEND'
  4467|                 WINDOW   = 'MAIN'
  4468|               EXCEPTIONS
  4469|                 OTHERS   = 1.
  4470|             IF SY-SUBRC <> 0.
  4471|               WRITE 'Error in WRITE_FORM, element ITEM_LINE_MAT1'(007).
  4472|               EXIT.
  4473|             ENDIF.
  4474|           ENDLOOP.
  4475|         ENDIF.
  • EN: Output the item lines via WRITE_FORM: ITEM_LINE_MAT elements for the tax invoice, or one ADD_MAT element per material line for the additional sheet.
  • 호출(파서): WRITE_FORM, WRITE_FORM, WRITE_FORM
  • SAP 객체: WRITE_FORM
  • 무 키워드: 품목 라인 출력, 추가 시트, 세금계산서 인쇄
  • English: WRITE_FORM, Item Line, Additional Sheet
  • 정의부(복사 시 함께 필요): CHK_PRTI, EXIT, AUSGLOP_MAT_ITAB, AUSGLOP_ITAB, AUGBL
  • 위치: abap://ZFIR0141/ZFIR0141#L4433-L4475 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C6

[fm_call] 고객별 양식을 END_FORM 으로 닫고 현재 세금계산서 번호를 AUGBL 에 보관해 다음 AT NEW 비교에 사용한다.

  4481|         CALL FUNCTION 'END_FORM'
  4482|           EXCEPTIONS
  4483|             OTHERS = 1.
  4484|         IF SY-SUBRC <> 0.
  4485|           WRITE 'Error in END_FORM'(010).
  4486|           EXIT.
  4487|         ENDIF.
  4488|       ENDIF.
  4489|     ENDAT.
  4490|     CLEAR AUGBL.
  4491|     AUGBL = AUSGLOP_ITAB-AUGBL.
  • EN: Close the customer form with END_FORM and keep the current tax invoice number for the next group change.
  • 호출(파서): END_FORM
  • SAP 객체: END_FORM
  • 업무 키워드: 양식 종료, 세금계산서 번호
  • English: END_FORM, SAPscript
  • 정의부(복사 시 함께 필요): EXIT, AUGBL, AUSGLOP_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L4481-L4491 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C7

[fm_call] CLOSE_FORM 으로 인쇄 작업을 종료하고 성공 시 호출 프로그램이 YFIR0601 이고 시뮬레이션이 아니면 UPDATE_TABLE 과 USER_EXIT2 로 BKPF/BSET/BSEG 에 세금계산서 정보를 저장하며, 그 외에는 화면을 떠나고 완료 메시지 S324 를 표시한다.

  4497|   CALL FUNCTION 'CLOSE_FORM'
  4498|     IMPORTING
  4499|       RESULT = RESULT
  4500|     EXCEPTIONS
  4501|       OTHERS = 1.
  4502|   IF SY-SUBRC <> 0.
  4503|     WRITE 'Error in CLOSE_FORM'(011).
  4504|     EXIT.
  4505|   ELSE.
  4506|     IF PROG_NAME = 'YFIR0601' AND SIM <> 'X'.
  4507|       PERFORM UPDATE_TABLE.
  4508|       PERFORM USER_EXIT2.
  4509|     ELSE.
  4510|       LEAVE SCREEN.
  4511|       CLEAR SIM.
  4512|     ENDIF.
  4513|     IF SIM <> 'X'.
  4514|       MESSAGE S324.
  4515|     ENDIF.
  4516|   ENDIF.
  • EN: Close the SAPscript print job with CLOSE_FORM; on success, when run from YFIR0601 in non-simulation mode, persist tax invoice data via UPDATE_TABLE and USER_EXIT2, otherwise leave the screen and show message S324.
  • 호출(파서): CLOSE_FORM, UPDATE_TABLE, USER_EXIT2
  • SAP 객체: CLOSE_FORM
  • 업무 키워드: 인쇄 종료, 세금계산서 번호 저장, 시뮬레이션, 완료 메시지
  • English: CLOSE_FORM, SAPscript, Update Table, Simulation
  • 정의부(복사 시 함께 필요): RESULT, EXIT, PROG_NAME, SIM
  • 위치: abap://ZFIR0141/ZFIR0141#L4497-L4516 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#SAP_SCRIPT#C8

FORM UPDATE_TABLE — ZFIR0141 L2145-L2260 (116줄)

발행(또는 취소)된 세금계산서 번호를 회계전표 헤더 BKPF-BKTXT, 세금항목 BSET-MLDDT, 고객항목 BSEG-XREF3(사업자등록번호)에 반영하여 DB 를 갱신한다.

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

[validation] 취소 모드(CANCEL='X')이고 호출 프로그램이 YFIR0601 이 아니면 체크되지 않은 항목을 AUSGLOP_ITAB 에서 삭제해 갱신 대상을 선택 항목으로 한정한다.

  2154|   IF CANCEL = 'X' AND PROG_NAME <> 'YFIR0601'.
  2155| 
  2156|     LOOP AT AUSGLOP_ITAB WHERE CHECK = ' '.
  2157|       DELETE AUSGLOP_ITAB.
  2158|     ENDLOOP.
  2159| 
  2160|   ENDIF.
  • EN: In cancel mode (not called from YFIR0601), drop unchecked rows from AUSGLOP_ITAB so only selected tax invoices are updated.
  • 테이블(파서): read - / write AUSGLOP_ITAB
  • 업무 키워드: 세금계산서 취소, 선택 항목, 갱신 대상 한정
  • English: Tax Invoice, Cancellation, Selection
  • 정의부(복사 시 함께 필요): CANCEL, PROG_NAME, AUSGLOP_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L2154-L2160 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C1

[sql_select] 출력 대상 세금계산서의 회사코드·전표번호·회계연도로 회계전표 헤더 BKPF 와 세금 항목 BSET 을 FOR ALL ENTRIES 로 조회해 BKPF_TAB/BSET_TAB 에 적재한다.

  2162|   SELECT * FROM BKPF  APPENDING CORRESPONDING FIELDS
  2163|             OF TABLE BKPF_TAB
  2164|             FOR ALL ENTRIES IN AUSGLOP_ITAB
  2165|             WHERE
  2166|             BUKRS EQ AUSGLOP_ITAB-BUKRS  AND
  2167|             BELNR EQ AUSGLOP_ITAB-BELNR  AND
  2168|             GJAHR EQ AUSGLOP_ITAB-GJAHR.
  2169|   IF SY-SUBRC = 0.
  2170| 
  2171|     SELECT * FROM BSET APPENDING CORRESPONDING FIELDS
  2172|     OF TABLE BSET_TAB
  2173|     FOR ALL ENTRIES IN AUSGLOP_ITAB
  2174|     WHERE
  2175|     BUKRS = AUSGLOP_ITAB-BUKRS AND
  2176|     BELNR = AUSGLOP_ITAB-BELNR AND
  2177|     GJAHR = AUSGLOP_ITAB-GJAHR.
  • EN: Read accounting document headers BKPF and tax line items BSET for all selected tax invoice documents into internal tables.
  • 테이블(파서): read BKPF, BSET / write -
  • SAP 객체: BKPF, BSET
  • 업무 키워드: 회계전표 헤더, 세금 항목, 전표 조회
  • English: Accounting Document Header, Tax Line Item, FOR ALL ENTRIES
  • 정의부(복사 시 함께 필요): BKPF, BKPF_TAB, AUSGLOP_ITAB, BSET, BSET_TAB
  • 위치: abap://ZFIR0141/ZFIR0141#L2162-L2177 · confidence 0.9 · ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C2

[calculation] 스마트빌 전송 결과가 성공(RESULT='Y')이고 세금계산서 번호(AUGBL)가 있는 항목에 대해 BKPF-BKTXT 에 세금계산서 번호를, BSET-MLDDT 에 발행일(AUGDT)을 세팅하고 취소 모드면 공백으로 되돌린다.

  2179|     LOOP AT AUSGLOP_ITAB WHERE AUGBL NE ' '
  2180|                            AND RESULT EQ 'Y'.  " smartbill 2006.07.24
  2181| 
  2182|       LOOP AT BKPF_TAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS AND
  2183|                              BELNR = AUSGLOP_ITAB-BELNR AND
  2184|                              GJAHR = AUSGLOP_ITAB-GJAHR.
  2185|         IF CANCEL = 'X'.
  2186|           BKPF_TAB-BKTXT = ' '.
  2187|         ELSE.
  2188|           BKPF_TAB-BKTXT = AUSGLOP_ITAB-AUGBL.
  2189|         ENDIF.
  2190|         MODIFY BKPF_TAB TRANSPORTING BKTXT.
  2191|         LOOP AT BSET_TAB WHERE  BUKRS = AUSGLOP_ITAB-BUKRS AND
  2192|                               BELNR = AUSGLOP_ITAB-BELNR AND
  2193|                               GJAHR = AUSGLOP_ITAB-GJAHR.
  2194|           IF CANCEL = 'X'.
  2195|             BSET_TAB-MLDDT = ' '.
  2196|           ELSE.
  2197|             BSET_TAB-MLDDT = AUSGLOP_ITAB-AUGDT.
  2198|           ENDIF.
  2199| 
  2200|           MODIFY BSET_TAB TRANSPORTING MLDDT.
  2201|         ENDLOOP.
  2202|       ENDLOOP.
  2203|     ENDLOOP.
  • EN: For successfully transmitted invoices, set the tax invoice number into BKPF-BKTXT and the issue date into BSET-MLDDT (or clear them in cancel mode).
  • SAP 객체: BKPF, BSET
  • 업무 키워드: 세금계산서 번호, 전표 헤더 텍스트, 발행일, 취소, 스마트빌 결과
  • English: Tax Invoice Number, Document Header Text, Reporting Date, Smartbill
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, AUGBL, RESULT, BKPF, BKPF_TAB, CANCEL, BSET, BSET_TAB
  • 위치: abap://ZFIR0141/ZFIR0141#L2179-L2203 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C3

[sql_select] 세금계산서 번호가 '8'로 시작하는 전표의 고객(KOART='D') 라인을 BSEG 에서 읽고, 고객별로 KNA1(일반 고객) 또는 BSEC(일회성 고객 CPD) 의 사업자등록번호 STCD2/STCD1 을 BSEG-XREF3(참조키3)에 채운다.

  2214|     LOOP AT BKPF_TAB.
  2215|       IF BKPF_TAB-BKTXT+0(1) EQ '8'.        " 일련번호 체크
  2216|         SELECT * FROM BSEG APPENDING CORRESPONDING FIELDS
  2217|                  OF TABLE BSEG_TAB WHERE
  2218|                  BUKRS EQ BKPF_TAB-BUKRS AND
  2219|                  BELNR EQ BKPF_TAB-BELNR AND
  2220|                  GJAHR EQ BKPF_TAB-GJAHR AND
  2221|                  KOART = 'D'.
  2222|       ENDIF.
  2223|     ENDLOOP.
  2224|     SORT BSEG_TAB BY BUKRS KUNNR.
  2225|     LOOP AT BSEG_TAB.
  2226|       "사업자등록번호를 참조키3(배부)에 넣기.
  2227|       AT NEW KUNNR.
  2228|         SELECT SINGLE * FROM KNA1 WHERE
  2229|                  KUNNR = BSEG_TAB-KUNNR.
  2230|         IF KNA1-XCPDK = ' ' .
  2231|           IF NOT KNA1-STCD2 IS INITIAL.
  2232|             BSEG_TAB-XREF3 = KNA1-STCD2.
  2233|           ELSE.
  2234|             BSEG_TAB-XREF3 = KNA1-STCD1.
  2235|           ENDIF.
  2236|         ELSE.
  2237|           SELECT SINGLE * FROM BSEC WHERE
  2238|                   BUKRS = BSEG_TAB-BUKRS AND
  2239|                   BELNR = BSEG_TAB-BELNR AND
  2240|                   GJAHR = BSEG_TAB-GJAHR .
  2241|           IF NOT BSEC-STCD2 IS INITIAL.
  2242|             BSEG_TAB-XREF3 = BSEC-STCD2.
  2243|           ELSE.
  2244|             BSEG_TAB-XREF3 = BSEC-STCD1.
  2245|           ENDIF.
  2246| 
  2247|           MODIFY BSEG_TAB  TRANSPORTING XREF3.
  2248|         ENDIF.
  2249|       ENDAT.
  2250|     ENDLOOP.
  • EN: Read customer line items (KOART='D') from BSEG for documents whose invoice number starts with '8' and fill BSEG-XREF3 with the tax registration number from KNA1 or, for one-time customers, from BSEC.
  • 테이블(파서): read BSEG, KNA1, BSEC / write -
  • SAP 객체: BSEG, KNA1, BSEC
  • 업무 키워드: 사업자등록번호, 참조키3, 고객 항목, 일회성 고객, 전표 라인
  • English: Tax Number, Reference Key 3, Customer Line Item, One-Time Customer, BSEG
  • 정의부(복사 시 함께 필요): BKPF, BKPF_TAB, BSEG, BSEG_TAB, KNA1, BSEC
  • 위치: abap://ZFIR0141/ZFIR0141#L2214-L2250 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C4

[db_write] 변경된 BKPF/BSET/BSEG 내부테이블을 DB 표준 테이블에 직접 MODIFY 하고 COMMIT WORK 하여 세금계산서 번호·발행일·사업자번호를 확정 저장한다.

  2253|     MODIFY BKPF FROM TABLE BKPF_TAB.
  2254|     MODIFY BSET FROM TABLE BSET_TAB.
  2255|     MODIFY BSEG FROM TABLE BSEG_TAB.
  2256|     COMMIT WORK.
  • EN: Directly MODIFY the standard tables BKPF, BSET and BSEG from the changed internal tables and COMMIT WORK.
  • 테이블(파서): read - / write BKPF, BSET, BSEG
  • SAP 객체: BKPF, BSET, BSEG
  • 업무 키워드: DB 갱신, 표준 테이블 직접 수정, 커밋
  • English: Database Update, MODIFY, COMMIT WORK
  • 정의부(복사 시 함께 필요): BKPF, BKPF_TAB, BSET, BSET_TAB, BSEG, BSEG_TAB
  • 위치: abap://ZFIR0141/ZFIR0141#L2253-L2256 · confidence 0.95 · ZFIR0141#ZFIR0141#FORM#UPDATE_TABLE#C5

FORM USER_EXIT2 — ZFIR0141 L2385-L2397 (13줄)

출력 대상 AUSGLOP_ITAB 을 BSID 구조로 옮겨 세금계산서 번호를 BSEG 추가 필드에 저장하는 User Exit FM KR_USER_EXIT_COPY_TAXINVOICE 를 호출한다.

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

[fm_call] AUSGLOP_ITAB 을 BSID 형 테이블 ZBSID 로 MOVE-CORRESPONDING 하여 채운 뒤 한국 세금계산서 복사 User Exit FM KR_USER_EXIT_COPY_TAXINVOICE 를 호출해 세금계산서 번호를 미결항목 처리용 BSEG 필드에 저장하도록 한다.

  2388|   LOOP AT AUSGLOP_ITAB.
  2389|     MOVE-CORRESPONDING AUSGLOP_ITAB TO ZBSID.
  2390|     APPEND ZBSID.
  2391|   ENDLOOP.
  2392| 
  2393|   CALL FUNCTION 'KR_USER_EXIT_COPY_TAXINVOICE'
  2394|     TABLES
  2395|       ZBSID = ZBSID.
  • EN: Copy AUSGLOP_ITAB into a BSID-typed table and call user exit FM KR_USER_EXIT_COPY_TAXINVOICE so the tax invoice number is stored in an additional BSEG field for open item processing.
  • 호출(파서): KR_USER_EXIT_COPY_TAXINVOICE
  • SAP 객체: KR_USER_EXIT_COPY_TAXINVOICE, BSID, BSEG
  • 업무 키워드: 세금계산서 번호, User Exit, 미결항목, 고객 미결
  • English: Tax Invoice, User Exit, Open Item, BSID
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, ZBSID
  • 위치: abap://ZFIR0141/ZFIR0141#L2388-L2395 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#USER_EXIT2#C1

EVENT AT LINE-SELECTION — ZFIR0141 L872-L890 (19줄)

리스트에서 전표번호(AUSGLOP_ITAB-BELNR)를 더블클릭하면 회사코드·전표번호·회계연도 파라미터를 세팅하고 FB03 전표 조회 화면으로 이동한다.

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

[control_flow] 커서가 위치한 필드가 AUSGLOP_ITAB-BELNR 이면 SET PARAMETER ID BLN/BUK/GJR 로 전표번호·회사코드·회계연도를 넘기고 CALL TRANSACTION 'FB03' 로 회계전표를 조회한다.

   873|   GET CURSOR FIELD CURSORFIELD.
   874|   IF SY-SUBRC EQ 0.
   875|     CASE CURSORFIELD.
   876|       WHEN 'AUSGLOP_ITAB-BELNR'.
   877|         IF AUSGLOP_ITAB-BUKRS <> SPACE.
   878|           SET PARAMETER ID 'BLN' FIELD AUSGLOP_ITAB-BELNR.
   879|           SET PARAMETER ID 'BUK' FIELD AUSGLOP_ITAB-BUKRS.
   880|           SET PARAMETER ID 'GJR' FIELD AUSGLOP_ITAB-GJAHR.
   881|           CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
   882|         ENDIF.
   883|     ENDCASE.
   884|   ENDIF.
  • EN: On line selection of the document number field, set parameter IDs BLN/BUK/GJR and call transaction FB03 to display the accounting document.
  • 호출(파서): FB03
  • SAP 객체: FB03
  • 업무 키워드: 전표 조회, 더블클릭, 전표번호, 회사코드, 회계연도
  • English: Accounting Document, Display Document, FB03, Line Selection
  • 정의부(복사 시 함께 필요): CURSORFIELD, AUSGLOP_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L873-L884 · confidence 0.9 · ZFIR0141#ZFIR0141#EVENT#AT_LINE-SELECTION#C1

EVENT AT USER-COMMAND — ZFIR0141 L802-L871 (70줄)

세금계산서 리스트 화면의 사용자 명령을 처리하여 전체 선택/해제, 뒤로가기 시 테이블 갱신, 저장 시 취소 처리 또는 재발행(REPRINT)을 분기한다.

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

[control_flow] BACK1/BACK2 시 YFIR0601 에서 호출되고 시뮬레이션이 아니면 UPDATE_TABLE 과 USER_EXIT2 로 전표에 세금계산서 번호를 반영한 뒤 화면을 떠나며 완료 메시지 S324 를 표시한다.

   814|     WHEN 'BACK1'.
   815|       IF PROG_NAME = 'YFIR0601' AND SIM <> 'X'.
   816|         PERFORM UPDATE_TABLE.
   817|         PERFORM USER_EXIT2.
   818|       ENDIF.
   819|       LEAVE SCREEN.
   820|       IF SIM <> 'X'.
   821|         MESSAGE S324.
   822|       ENDIF.
   823|       CLEAR SIM.
   824| 
   825|     WHEN 'BACK2'.
   826| 
   827|       IF PROG_NAME = 'YFIR0601' AND SIM <> 'X'.
   828|         PERFORM UPDATE_TABLE.
   829|         PERFORM USER_EXIT2.
   830|       ENDIF.
   831|       LEAVE SCREEN.
   832|       IF SIM <> 'X'.
   833|         MESSAGE S324.
   834|       ENDIF.
   835|       CLEAR SIM.
  • EN: On BACK1/BACK2, when called from YFIR0601 in non-simulation mode, run UPDATE_TABLE and USER_EXIT2 to store the tax invoice number, then leave the screen with message S324.
  • 호출(파서): UPDATE_TABLE, USER_EXIT2, UPDATE_TABLE, USER_EXIT2
  • 업무 키워드: 뒤로가기, 세금계산서 번호 반영, 시뮬레이션, 전표 갱신
  • English: User Command, Update Table, User Exit, Simulation
  • 정의부(복사 시 함께 필요): PROG_NAME, SIM
  • 위치: abap://ZFIR0141/ZFIR0141#L814-L835 · confidence 0.8 · ZFIR0141#ZFIR0141#EVENT#AT_USER-COMMAND#C1

[control_flow] SAVE 시 SEL_DOCUMENT 로 선택 항목을 확정하고, 취소 모드(CANCEL='X')면 UPDATE_TABLE·USER_EXIT1 로 세금계산서 취소를 반영하고 S323 메시지 후 종료하며, 아니면 REPRINT 로 재발행을 수행한다.

   837|     WHEN 'SAVE'.
   838|       PERFORM SEL_DOCUMENT.
   839|       IF CANCEL = 'X'.
   840| 
   841|         PERFORM UPDATE_TABLE.
   842| 
   843| *User Exit to track cancelled tax invoices....
   844|         PERFORM USER_EXIT1.
   845| *----------------------------------------------------------------------*
   846| *User Exit for updating tables in customer name space
   847| *----------------------------------------------------------------------*
   848|         MESSAGE S323.
   849|         LEAVE SCREEN.
   850|         EXIT.
   851| 
   852|       ELSE.
   853| 
   854| 
   855|         PERFORM REPRINT.
   856| *&&&&&&*  2004.5.10. 저장할때 테이블 업데이트  세금계산서번호
   857| *       IF prog_name = 'YFIR0601' AND sim <> 'X'.
   858| *        PERFORM update_table.
   859| *        PERFORM user_exit2.
   860| *       ENDIF.
   861| *       CLEAR sim.
   862| *&&&&&&&* 
   863| 
   864| 
   865|       ENDIF.
  • EN: On SAVE, determine selected documents (SEL_DOCUMENT); in cancel mode update tables and call USER_EXIT1 to track cancelled tax invoices, otherwise perform REPRINT.
  • 호출(파서): SEL_DOCUMENT, UPDATE_TABLE, USER_EXIT1, REPRINT
  • 업무 키워드: 저장, 세금계산서 취소, 재발행, 선택 확정
  • English: Save, Tax Invoice Cancellation, Reprint, User Exit
  • 정의부(복사 시 함께 필요): CANCEL, EXIT, REPRINT
  • 위치: abap://ZFIR0141/ZFIR0141#L837-L865 · confidence 0.85 · ZFIR0141#ZFIR0141#EVENT#AT_USER-COMMAND#C2

FORM SET_SELECTION — ZFIR0141 L2774-L2783 (10줄)

리스트의 전체 선택/해제 플래그를 AUSGLOP_ITAB2-CHECK 에 반영하고 화면 라인의 체크박스 값을 MODIFY LINE 으로 갱신한다.

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

[output] 전체 선택/해제 FLAG 를 AUSGLOP_ITAB2 의 CHECK 필드에 MODIFY 로 일괄 반영하고 각 리스트 라인(LIST_LINE)을 READ LINE/MODIFY LINE 으로 갱신해 화면 체크박스를 동기화한다.

  2776|   CHECK FLAG = 'X' OR FLAG = ' '.
  2777|   AUSGLOP_ITAB2-CHECK = FLAG.
  2778|   MODIFY AUSGLOP_ITAB2 TRANSPORTING CHECK WHERE CHECK <> FLAG.
  2779|   LOOP AT AUSGLOP_ITAB2.
  2780|     READ LINE AUSGLOP_ITAB2-LIST_LINE.
  2781|     MODIFY LINE AUSGLOP_ITAB2-LIST_LINE FIELD VALUE AUSGLOP_ITAB2-CHECK.
  2782|   ENDLOOP.
  • EN: Set the select-all/deselect flag on AUSGLOP_ITAB2-CHECK and refresh each list line checkbox via MODIFY LINE.
  • 테이블(파서): read - / write AUSGLOP_ITAB2, LINE
  • 업무 키워드: 전체 선택, 체크박스, 리스트 갱신, 발행 대상 선택
  • English: Select All, Checkbox, MODIFY LINE, List
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB2
  • 위치: abap://ZFIR0141/ZFIR0141#L2776-L2782 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SET_SELECTION#C1

FORM SEL_DOCUMENT — ZFIR0141 L2792-L2836 (45줄)

리스트 화면에서 체크된 라인을 읽어 해당 세금계산서 번호(AUGBL)에 속한 AUSGLOP_ITAB/AUSGLOP_ITAB2 항목의 CHECK 플래그를 설정하고 선택 건수를 센다.

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

[control_flow] 리스트 각 줄을 READ LINE 으로 읽어 체크박스 값과 세금계산서 번호(DOC_NO)를 추출하고 FILL_ZEROS 로 선행 0 을 채운 뒤, 체크된 세금계산서 번호에 해당하는 AUSGLOP_ITAB2 및 AUSGLOP_ITAB 항목의 CHECK 를 'X' 로 표시한다.

  2800|   DO.
  2801|     READ LINE SY-INDEX FIELD VALUE AUSGLOP_ITAB2-CHECK.
  2802| 
  2803|     IF SY-SUBRC NE 0.
  2804|       EXIT.
  2805| 
  2806|     ENDIF.
  2807| 
  2808|     FLAG = SY-LISEL(1).
  2809| 
  2810|     DOC_NO = SY-LISEL+2(10).
  2811|     IF NOT ( DOC_NO IS INITIAL ).
  2812| 
  2813|       PERFORM FILL_ZEROS CHANGING DOC_NO.
  2814| 
  2815|     ENDIF.
  2816| 
  2817|     IF FLAG = 'X'.
  2818|       LOOP AT AUSGLOP_ITAB2 WHERE AUGBL = DOC_NO.
  2819|         AUSGLOP_ITAB2-CHECK = FLAG.
  2820|         MODIFY AUSGLOP_ITAB2.
  2821|         LOOP AT AUSGLOP_ITAB WHERE AUGBL = AUSGLOP_ITAB2-AUGBL.
  2822|           AUSGLOP_ITAB-CHECK = 'X'.
  2823|           MODIFY AUSGLOP_ITAB.
  2824|         ENDLOOP.
  2825| 
  2826|       ENDLOOP.
  2827|     ENDIF.
  2828|   ENDDO.
  • EN: Read each list line, extract checkbox and tax invoice number (zero-padded via FILL_ZEROS), and mark matching AUSGLOP_ITAB2/AUSGLOP_ITAB rows as selected.
  • 테이블(파서): read - / write AUSGLOP_ITAB2, AUSGLOP_ITAB
  • 호출(파서): FILL_ZEROS
  • 업무 키워드: 선택 항목, 체크박스, 세금계산서 번호, 리스트 읽기
  • English: READ LINE, Selection, Tax Invoice Number, Clearing Document
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB2, EXIT, FLAG, DOC_NO, AUGBL, AUSGLOP_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L2800-L2828 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#SEL_DOCUMENT#C1

[aggregation] 직접 실행(PROG_NAME 공백)인 경우 체크된 AUSGLOP_ITAB 건수를 G_LINES 에 집계한다.

  2830|   IF PROG_NAME EQ SPACE.
  2831|     LOOP AT AUSGLOP_ITAB WHERE CHECK = 'X'.
  2832|       ADD 1 TO G_LINES.
  2833|     ENDLOOP.
  2834|   ENDIF.
  • EN: Count selected AUSGLOP_ITAB rows into G_LINES when the program runs standalone.
  • 업무 키워드: 선택 건수, 집계
  • English: Count, Selected Rows
  • 정의부(복사 시 함께 필요): PROG_NAME, AUSGLOP_ITAB, G_LINES
  • 위치: abap://ZFIR0141/ZFIR0141#L2830-L2834 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#SEL_DOCUMENT#C2

FORM FILL_ZEROS — ZFIR0141 L2844-L2856 (13줄)

문서번호 등 문자 필드를 우측 정렬한 뒤 앞쪽 공백을 '0'으로 채워 선행 0 형식으로 만든다.

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

[calculation] 필드를 우측 정렬한 후 공백이 없을 때까지 ' ' 을 '0' 으로 치환하여 전표번호 등을 선행 0 이 채워진 형식으로 변환한다.

  2847|   WRITE P_FIELD TO P_FIELD RIGHT-JUSTIFIED.
  2848|   DO.
  2849|     REPLACE ' ' WITH '0' INTO P_FIELD.
  2850|     IF SY-SUBRC <>  0.
  2851|       EXIT.
  2852|     ENDIF.
  2853|   ENDDO.
  • EN: Right-justify the field and replace all blanks with zeros to produce a leading-zero padded document number.
  • 업무 키워드: 선행 0, 전표번호 형식, 문자 치환
  • English: Leading Zeros, Conversion
  • 정의부(복사 시 함께 필요): EXIT
  • 위치: abap://ZFIR0141/ZFIR0141#L2847-L2853 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#FILL_ZEROS#C1

FORM USER_EXIT1 — ZFIR0141 L2366-L2372 (7줄)

세금계산서 취소용 사용자 EXIT FM KR_USER_EXIT_CANCEL_TAXINVOICE 를 호출해 출력 대상 AUSGLOP_ITAB 을 고객사 로직으로 후처리한다.

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

[fm_call] 출력 대상 세금계산서 테이블 AUSGLOP_ITAB 을 넘겨 한국 세금계산서 취소 User Exit FM KR_USER_EXIT_CANCEL_TAXINVOICE 를 호출한다.

  2368|   CALL FUNCTION 'KR_USER_EXIT_CANCEL_TAXINVOICE'
  2369|     TABLES
  2370|       YAUSGLOP_ITAB = AUSGLOP_ITAB.
  • EN: Call the Korean tax invoice cancellation user exit FM KR_USER_EXIT_CANCEL_TAXINVOICE with the output table AUSGLOP_ITAB.
  • 호출(파서): KR_USER_EXIT_CANCEL_TAXINVOICE
  • SAP 객체: KR_USER_EXIT_CANCEL_TAXINVOICE
  • 업무 키워드: 세금계산서 취소, User Exit, 출력 대상
  • English: Tax Invoice, User Exit, Cancellation
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB
  • 위치: abap://ZFIR0141/ZFIR0141#L2368-L2370 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#USER_EXIT1#C1

FORM GET_TAXES — ZFIR0141 L962-L1008 (47줄)

세금계산서 출력 항목의 공급가액·세액을 매출부가세 계정(0040605000)의 BSET 라인에서 가져온다.

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

[calculation] 세금코드가 A6(0% 이면서 세금계산서를 발행하는 코드)인지에 따라 조회 조건을 나눠, 매출부가가치세 계정 0040605000 의 세금 라인(BSET)에서 공급가액과 세액을 가져온다. 일반 코드는 세액이 있는 라인만, A6 은 세액 0 을 포함해 읽는다. 대변(S, 반품·감액 전표)인 경우 부호를 반전한다. 특소세 때문에 공급가액이 두 번 더해지는 것을 막기 위해 계정번호를 조건으로 고정한 것이 이 로직의 핵심이다.

   968|   IF AUSGLOP_ITAB-MWSKZ <> 'A6'.
   969|     SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS
   970|                        AND   BELNR = AUSGLOP_ITAB-BELNR
   971|                        AND   GJAHR = AUSGLOP_ITAB-GJAHR
   972|                        AND   HKONT = '0040605000'
   973|                        AND   HWSTE <> ''.
   974| *                     and   mwskz = ausglop_itab-mwskz.
   975| 
   976| * in case of a credit memo
   977|       IF BSET-SHKZG = 'S'.
   978|         BSET-HWBAS = -1 * BSET-HWBAS.
   979|         BSET-HWSTE = -1 * BSET-HWSTE.
   980|       ENDIF.
   981|       MOVE BSET-MWSKZ TO AUSGLOP_ITAB-MWSKZ.
   982|       MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG.
   983|       MOVE BSET-HWBAS TO AUSGLOP_ITAB-HWBAS.
   984|       MOVE BSET-HWSTE TO AUSGLOP_ITAB-HWSTE.
   985|       MODIFY AUSGLOP_ITAB.
   986|     ENDSELECT.
   987| 
   988|   ELSEIF AUSGLOP_ITAB-MWSKZ = 'A6'.
   989|     SELECT * FROM BSET WHERE BUKRS = AUSGLOP_ITAB-BUKRS
   990|                        AND   BELNR = AUSGLOP_ITAB-BELNR
   991|                        AND   GJAHR = AUSGLOP_ITAB-GJAHR
   992|                        AND   HKONT = '0040605000'.
   993| 
   994| *                     and   mwskz = ausglop_itab-mwskz.
   995| 
   996| * in case of a credit memo
   997|       IF BSET-SHKZG = 'S'.
   998|         BSET-HWBAS = -1 * BSET-HWBAS.
   999|         BSET-HWSTE = -1 * BSET-HWSTE.
  1000|       ENDIF.
  1001|       MOVE BSET-MWSKZ TO AUSGLOP_ITAB-MWSKZ.
  1002|       MOVE BSET-SHKZG TO AUSGLOP_ITAB-SHKZG.
  1003|       MOVE BSET-HWBAS TO AUSGLOP_ITAB-HWBAS.
  1004|       MOVE BSET-HWSTE TO AUSGLOP_ITAB-HWSTE.
  1005|       MODIFY AUSGLOP_ITAB.
  1006|     ENDSELECT.
  1007|   ENDIF.
  • EN: Pulls tax base and tax amount from BSET restricted to the output-VAT account 0040605000, branching on tax code A6 (zero-rate but invoice-issuing) and flipping signs for credit memos; the account restriction prevents double-counting caused by special excise tax.
  • 테이블(파서): read BSET / write AUSGLOP_ITAB
  • SAP 객체: BSET, HKONT, MWSKZ, HWBAS, HWSTE, SHKZG
  • 업무 키워드: 세금계산서, 공급가액, 세액, 매출부가세, 영세율, 특소세, 반품, 부호반전, 세금코드
  • English: tax invoice, tax base, tax amount, output VAT, zero rate, special excise tax, credit memo, tax code
  • 정의부(복사 시 함께 필요): AUSGLOP_ITAB, BSET
  • 위치: abap://ZFIR0141/ZFIR0141#L968-L1007 · confidence 0.83 · ZFIR0141#ZFIR0141#FORM#GET_TAXES#C1

FORM WRITE_LINES_FI — ZFIR0141 L3143-L3223 (81줄)

세금계산서 양식의 FI 품목 4줄(MATZEIL1~4)을 월/일·품목·단위·수량·단가·공급가액·세액 컬럼 위치에 맞춰 WRITE 로 인쇄한다.

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

[output] 첫 번째 품목 라인의 전기일(BUDAT)에서 월·일을 추출하고 수량(FKIMG)을 CIRCULAR SHIFT 로 정렬한 뒤 품목·단위·수량·단가·공급가액(NETWR)·세액(MWSBP)을 KRW 통화 형식으로 세금계산서 양식 위치에 WRITE 한다.

  3148|   MM1 = MATZEIL1-BUDAT+4(2).
  3149|   DD1 = MATZEIL1-BUDAT+6(2).
  3150| 
  3151|   L_LEN =  STRLEN( MATZEIL1-FKIMG ).
  3152|   DO L_LEN TIMES.
  3153|     SHIFT MATZEIL1-FKIMG CIRCULAR.
  3154|   ENDDO.
  3155| 
  3156|   WRITE:/ TEXT-CA2, 2 MM1, 5 TEXT-CA2, 6 DD1, 10 TEXT-CA2,
  3157|        11 MATZEIL1-MATNR, 28 TEXT-CA2,
  3158|        29 MATZEIL1-VRKME, 34 TEXT-CA2, 35 MATZEIL1-FKIMG+5(8),
  3159|        45 TEXT-CA2,
  3160|        46 MATZEIL1-UPRICE CURRENCY 'KRW', 63 TEXT-CA2,
  3161|        64 MATZEIL1-NETWR  CURRENCY 'KRW', 82 TEXT-CA2,
  3162|        83 MATZEIL1-MWSBP  CURRENCY 'KRW', 98 TEXT-CA2,
  3163|       117 TEXT-CA2.
  3164|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Extract month/day from posting date of the first item line, align quantity and WRITE material, unit, quantity, unit price, net value and tax amount in KRW at fixed tax invoice form columns.
  • 업무 키워드: 세금계산서 인쇄, 품목 라인, 공급가액, 세액, 전기일, 수량
  • English: Tax Invoice, Line Item, Net Value, Tax Amount, WRITE
  • 정의부(복사 시 함께 필요): MM1, MATTYPE, MATZEIL1, DD1, L_LEN
  • 위치: abap://ZFIR0141/ZFIR0141#L3148-L3164 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#WRITE_LINES_FI#C1

[output] 두 번째네 번째 품목 라인(MATZEIL24)도 동일하게 수량을 정렬한 뒤 품목·단위·수량·단가·공급가액·세액을 KRW 통화 형식으로 세금계산서 양식에 WRITE 한다.

  3177|   L_LEN =  STRLEN( MATZEIL2-FKIMG ).
  3178|   DO L_LEN TIMES.
  3179|     SHIFT MATZEIL2-FKIMG CIRCULAR.
  3180|   ENDDO.
  3181| 
  3182|   WRITE:/ TEXT-CA2, 5 TEXT-CA2, 10 TEXT-CA2, 11 MATZEIL2-MATNR,
  3183|        28 TEXT-CA2,
  3184|        29 MATZEIL2-VRKME, 34 TEXT-CA2, 35 MATZEIL2-FKIMG+5(8),
  3185|        45 TEXT-CA2,
  3186|        46 MATZEIL2-UPRICE CURRENCY 'KRW', 63 TEXT-CA2,
  3187|        64 MATZEIL2-NETWR  CURRENCY 'KRW', 82 TEXT-CA2,
  3188|        83 MATZEIL2-MWSBP  CURRENCY 'KRW', 98 TEXT-CA2,
  3189|       117 TEXT-CA2.
  3190|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  3191| 
  3192| * third item -----------------------------------------------------------
  3193|   L_LEN =  STRLEN( MATZEIL3-FKIMG ).
  3194|   DO L_LEN TIMES.
  3195|     SHIFT MATZEIL3-FKIMG CIRCULAR.
  3196|   ENDDO.
  3197|   WRITE:/ TEXT-CA2, 5 TEXT-CA2, 10 TEXT-CA2, 11 MATZEIL3-MATNR,
  3198|        28 TEXT-CA2,
  3199|        29 MATZEIL3-VRKME, 34 TEXT-CA2, 35 MATZEIL3-FKIMG+5(8),
  3200|        45 TEXT-CA2,
  3201|        46 MATZEIL3-UPRICE CURRENCY 'KRW', 63 TEXT-CA2,
  3202|        64 MATZEIL3-NETWR  CURRENCY 'KRW', 82 TEXT-CA2,
  3203|        83 MATZEIL3-MWSBP  CURRENCY 'KRW', 98 TEXT-CA2,
  3204|       117 TEXT-CA2.
  3205|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  3206| 
  3207| * fourth item ----------------------------------------------------------
  3208|   L_LEN =  STRLEN( MATZEIL4-FKIMG ).
  3209|   DO L_LEN TIMES.
  3210|     SHIFT MATZEIL4-FKIMG CIRCULAR.
  3211|   ENDDO.
  3212| 
  3213|   WRITE:/ TEXT-CA2, 5 TEXT-CA2, 10 TEXT-CA2, 11 MATZEIL4-MATNR,
  3214|        28 TEXT-CA2,
  3215|        29 MATZEIL4-VRKME, 34 TEXT-CA2, 35 MATZEIL4-FKIMG+5(8),
  3216|        45 TEXT-CA2,
  3217|        46 MATZEIL4-UPRICE CURRENCY 'KRW', 63 TEXT-CA2,
  3218|        64 MATZEIL4-NETWR  CURRENCY 'KRW', 82 TEXT-CA2,
  3219|        83 MATZEIL4-MWSBP  CURRENCY 'KRW', 98 TEXT-CA2,
  3220|       117 TEXT-CA2.
  3221|   WRITE:/ TEXT-CA1, 117 TEXT-CA2.
  • EN: Print the second to fourth FI item lines (MATZEIL2-4) with material, unit, quantity, unit price, net value and tax amount in KRW at the tax invoice form columns.
  • 업무 키워드: 세금계산서 인쇄, 품목 라인, 공급가액, 세액
  • English: Tax Invoice, Line Item, WRITE
  • 정의부(복사 시 함께 필요): L_LEN, MATTYPE, MATZEIL2, MATZEIL3, MATZEIL4
  • 위치: abap://ZFIR0141/ZFIR0141#L3177-L3221 · confidence 0.8 · ZFIR0141#ZFIR0141#FORM#WRITE_LINES_FI#C2

FORM PRINT_SUM_LINE_SMARTBILL — ZFIR0141 L5293-L5355 (63줄)

스마트빌 전송용 합계 라인을 만들기 위해 CHECK_ITAB/ALL_ITEMS_ITAB 를 돌며 SD·FI 원천 구분(AWTYP)에 따라 총금액·총공급가액·총세액을 GT_ZSBBSEG 에 채운다.

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

[aggregation] 현재 세금계산서(BUKRS/KUNNR/STCD/AUGBL) 에 속한 항목을 LOOP 하며 SD 전용(VBRK), FI 전용(BKPF), SD+FI 혼합 여부에 따라 NETWR/MWSBP 또는 HWBAS/HWSTE 로 총금액(ZTTAT)·공급가액(HWBAS)·세액(HWSTE)을 계산해 스마트빌 항목 구조 GT_ZSBBSEG 에 KRW 로 세팅한다.

  5295|   LOOP AT CHECK_ITAB WHERE BUKRS = AUSGLOP_ITAB-BUKRS
  5296|                        AND KUNNR = AUSGLOP_ITAB-KUNNR
  5297|                        AND STCD  = AUSGLOP_ITAB-STCD
  5298|                        AND AUGBL = AUSGLOP_ITAB-AUGBL.
  5299| 
  5300|     LOOP AT ALL_ITEMS_ITAB WHERE BUKRS = CHECK_ITAB-BUKRS
  5301|                              AND KUNNR = CHECK_ITAB-KUNNR
  5302|                              AND STCD  = CHECK_ITAB-STCD
  5303|                              AND AUGBL = CHECK_ITAB-AUGBL.
  5304| 
  5305| * only sd-data
  5306|       IF CHECK_ITAB-AWTYP_SD = 'VBRK'.
  5307|         IF CHECK_ITAB-AWTYP_FI = ' '.
  5308| 
  5309| * 총금액
  5310|           GT_ZSBBSEG-ZTTAT
  5311|                   = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP.
  5312| * 총공급가액
  5313|           GT_ZSBBSEG-HWBAS = ALL_ITEMS_ITAB-NETWR.
  5314| * 총세액
  5315|           GT_ZSBBSEG-HWSTE = ALL_ITEMS_ITAB-MWSBP.
  5316| * 통화
  5317|           GT_ZSBBSEG-HWAER = 'KRW'.
  5318|         ENDIF.
  5319|       ENDIF.
  5320| 
  5321| * only fi-data
  5322|       IF CHECK_ITAB-AWTYP_SD = ' '.
  5323|         IF CHECK_ITAB-AWTYP_FI = 'BKPF'.
  5324| * 총금액
  5325|           GT_ZSBBSEG-ZTTAT
  5326|                   = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP.
  5327| * 총공급가액
  5328|           GT_ZSBBSEG-HWBAS = ALL_ITEMS_ITAB-HWBAS.
  5329| * 총세액
  5330|           GT_ZSBBSEG-HWSTE = ALL_ITEMS_ITAB-HWSTE.
  5331| * 통화
  5332|           GT_ZSBBSEG-HWAER = 'KRW'.
  5333|         ENDIF.
  5334|       ENDIF.
  5335| 
  5336| * FI + SD-data
  5337|       IF CHECK_ITAB-AWTYP_SD = 'VBRK'.
  5338|         IF CHECK_ITAB-AWTYP_FI = 'BKPF'.
  5339| * 총금액
  5340|           GT_ZSBBSEG-ZTTAT
  5341|                   = ALL_ITEMS_ITAB-NETWR + ALL_ITEMS_ITAB-MWSBP.
  5342| * 총공급가액
  5343|           GT_ZSBBSEG-HWBAS = ALL_ITEMS_ITAB-NETWR.
  5344| * 총세액
  5345|           GT_ZSBBSEG-HWSTE = ALL_ITEMS_ITAB-MWSBP.
  5346| * 통화
  5347|           GT_ZSBBSEG-HWAER = 'KRW'.
  5348|         ENDIF.
  5349|       ENDIF.
  5350| 
  5351|     ENDLOOP.
  5352| 
  5353|   ENDLOOP.
  • EN: Loop over CHECK_ITAB and ALL_ITEMS_ITAB for the current tax invoice and derive total amount, tax base and tax amount into GT_ZSBBSEG depending on whether the source is SD billing (VBRK), FI document (BKPF) or both.
  • SAP 객체: VBRK, BKPF, GT_ZSBBSEG
  • 업무 키워드: 합계 라인, 총공급가액, 총세액, 스마트빌, SD 빌링, FI 전표, 반제전표
  • English: Tax Invoice, Billing Document, Tax Base, Tax Amount, Smartbill
  • 정의부(복사 시 함께 필요): CHECK_ITAB, AUSGLOP_ITAB, AUGBL, ALL_ITEMS_ITAB, GT_ZSBBSEG
  • 위치: abap://ZFIR0141/ZFIR0141#L5295-L5353 · confidence 0.85 · ZFIR0141#ZFIR0141#FORM#PRINT_SUM_LINE_SMARTBILL#C1

FORM CALCULATE_ZNCNT — ZFIR0141F01 L101-L120 (20줄)

세금계산서 공급가액(P_HWBAS)을 12자리 통화 형식으로 편집한 뒤 앞쪽 공백 수를 세어 세금계산서 공란수(ZSB_HEADER-ZNCNT)를 계산한다.

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

[calculation] 공급가액을 CURRENCY 편집·우측정렬한 12자리 문자열로 만들고 선행 공백 개수를 세어 스마트빌 헤더의 공란수(ZNCNT)를 구하되, 음수 금액이면 '-' 자리를 감안해 1을 뺀다.

   106|   WRITE P_HWBAS TO LV_HWBAS   CURRENCY P_HWAER
   107|                               RIGHT-JUSTIFIED
   108|                               NO-GROUPING.
   109|   DO 12 TIMES.
   110|     IF LV_HWBAS+0(1) EQ SPACE.
   111|       ZSB_HEADER-ZNCNT = ZSB_HEADER-ZNCNT + 1.
   112|       SHIFT LV_HWBAS.
   113|     ELSE.
   114|       IF P_HWBAS CS '-'.     " 금액이 -인 경우 공란수 1개 뺌.
   115|         ZSB_HEADER-ZNCNT = ZSB_HEADER-ZNCNT - 1.
   116|       ENDIF.
   117|       EXIT.
   118|     ENDIF.
   119|   ENDDO.
  • EN: Format the tax base amount right-justified with currency editing and count leading blanks to derive the tax invoice blank-digit count (ZSB_HEADER-ZNCNT), subtracting one for a negative sign.
  • SAP 객체: ZSB_HEADER
  • 업무 키워드: 공란수, 공급가액, 세금계산서, 음수 금액, 자릿수 계산
  • English: Tax Invoice, Blank Count, Tax Base Amount, Currency Formatting
  • 정의부(복사 시 함께 필요): LV_HWBAS, ZSB_HEADER, EXIT
  • 위치: abap://ZFIR0141/ZFIR0141F01#L106-L119 · confidence 0.9 · ZFIR0141#ZFIR0141F01#FORM#CALCULATE_ZNCNT#C1

MODULE USER_COMMAND_0100 INPUT — ZFIR0141I01 L9-L29 (21줄)

화면 0100의 사용자 명령(PAI)을 처리하여 &NT1 시 ALV 그리드(GRID3)의 변경 데이터를 검증한 뒤 화면을 종료하고 EXIT 시 화면을 닫는 플럼빙 모듈이다.

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

[control_flow] OK_CODE 분기: &NT1 이면 GRID3->CHECK_CHANGED_DATA 로 ALV 편집 내용을 반영·검증하고 SET SCREEN 0 으로 팝업을 닫으며, EXIT 이면 바로 화면을 종료한다.

    14|   CASE SAVE_CODE.
    15|     WHEN '&NT1'.
    16|       DATA: L_VALID2 TYPE C.
    17|       DATA: L_LINE   TYPE I.
    18|       SY-UCOMM = SAVE_CODE.
    19|       CALL METHOD GRID3->CHECK_CHANGED_DATA
    20|         IMPORTING
    21|           E_VALID = L_VALID2.
    22| 
    23|       SET SCREEN 0.
    24| 
    25|     WHEN 'EXIT'.
    26|       SET SCREEN 0.
    27|   ENDCASE.
  • EN: Dispatch user command: on &NT1 call GRID3->CHECK_CHANGED_DATA to validate ALV grid changes then leave screen 0100; on EXIT leave the screen.
  • 호출(파서): GRID3->CHECK_CHANGED_DATA
  • SAP 객체: CL_GUI_ALV_GRID, CHECK_CHANGED_DATA
  • 업무 키워드: 사용자 명령, ALV 변경 검증, 화면 종료, PAI
  • English: User Command, ALV Grid, CHECK_CHANGED_DATA, PAI
  • 정의부(복사 시 함께 필요): OK_CODE, SAVE_CODE, GRID3
  • 위치: abap://ZFIR0141/ZFIR0141I01#L14-L27 · confidence 0.85 · ZFIR0141#ZFIR0141I01#MODULE#USER_COMMAND_0100_INPUT#C1

정의부 (199건)

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

ZFIR0141 (198건)

BSET — tables · L34-L34

TABLES: BSET.  " tax data document segment

BSEG — tables · L35-L35

TABLES:
        BSEG.  " accounting document segment

BSEC — tables · L36-L36

TABLES:
        BSEC.  " One-time account data document

VBRK — tables · L38-L38

TABLES:
        VBRK.  " billing : header data

VBRP — tables · L39-L39

TABLES:
        VBRP.  " billing : item data

T001 — tables · L40-L40

TABLES:
        T001.  " company codes

KNA1 — tables · L41-L41

TABLES:
        KNA1.  " customers

FIMSG — tables · L42-L42

TABLES:
        FIMSG.  " structure

BKPF — tables · L43-L43

TABLES:
        BKPF.  " acc. document header

BSAD — tables · L44-L44

TABLES:
        BSAD.  " sec. index for customers :

VBPA — tables · L46-L46

TABLES:
        VBPA.  " sales document:partner

J_1BBRANCH — tables · L47-L47

TABLES:
        J_1BBRANCH.  " business place table

T001F — tables · L48-L48

TABLES:
        T001F.  " Company code-dependent form

T074T — tables · L50-L50

TABLES:
        T074T.  " special g_l indicator text table

MATTYPE — types · L58-L80

TYPES: BEGIN OF MATTYPE ,
       BUKRS LIKE BSAD-BUKRS,          "company code
       KUNNR LIKE BSAD-KUNNR,          "customer
       NAME1 LIKE BSEC-NAME1,          "CPD-customer name
       BUDAT LIKE BSAD-BUDAT,
*   2004.6.15일 필드길이 수정
       MATNR(25) TYPE C, "LIKE vbrp-matnr,          "material number
*   수정끝
       ARKTX(15) TYPE C,               "material description
       VRKME(5) TYPE C,                "판매단위
*수량에 소수점이 나오지 않도록 수정
*      fkimg(10) TYPE C,               "actual invoiced quantity
       FKIMG(13) TYPE C,               "실제청구수량
       NETWR(15) TYPE C,               "문서통화의 청구품목정가
       MWSBP(13) TYPE C,               "문서통화의 세액
       UPRICE(15) TYPE C,              "unit price(단가)
                                       "청구품목정가 / 실제청구수량
       HWBAS LIKE BSET-HWBAS,          "현지통화로 표시된 공급가액
       HWSTE LIKE BSET-HWSTE,          "현지통화로 표시된 세액
* Commercial display of UOM
       MSEH3 LIKE T006A-MSEH3,         "commercial dsiplay (UOM)
       YYYYMMDD  LIKE BSID-BUDAT,
      END OF MATTYPE.

MATZEIL1 — data · L86-L86

DATA: MATZEIL1 TYPE MATTYPE.

MATZEIL2 — data · L87-L87

DATA:
      MATZEIL2 TYPE MATTYPE.

MATZEIL3 — data · L88-L88

DATA:
      MATZEIL3 TYPE MATTYPE.

MATZEIL4 — data · L89-L89

DATA:
      MATZEIL4 TYPE MATTYPE.

VALUE_SELECTED — data · L91-L91

DATA: VALUE_SELECTED.

POINT — data · L92-L92

DATA: POINT TYPE C.

LINE_COUNT — data · L93-L93

DATA: LINE_COUNT TYPE I.               "number of lines

LINE_COUNT2 — data · L94-L94

DATA: LINE_COUNT2 TYPE I.              "number of lines

LINE_COUNT_PR — data · L95-L95

DATA: LINE_COUNT_PR TYPE I.            "number of lines

SEL_INDEX — data · L96-L96

DATA: SEL_INDEX TYPE I.

SAVE_SAVE_UMSKZ — data · L97-L97

DATA: SAVE_SAVE_UMSKZ LIKE BSEG-UMSKZ.

FORM — data · L98-L98

DATA: FORM LIKE THEAD-TDFORM.          " Sap-Script form

ADRESSE — data · L99-L99

DATA: ADRESSE LIKE ADDR1_VAL.          "business place address data

FELD1A — data · L101-L101

DATA: FELD1A(12) TYPE N.  " field for printing the total

FELD1B — data · L104-L104

DATA:
      FELD1B(11) TYPE N.  " field for printing thetotal

FELD3 — data · L107-L107

DATA:
      FELD3(15) TYPE N.

COUNT1 — data · L109-L109

DATA:
      COUNT1(2) TYPE N.  " number of empty casesin the

TESTP — data · L112-L112

DATA: TESTP(9) TYPE C.

L_LINES — data · L114-L114

DATA : L_LINES(5).

DD1 — data · L115-L115

DATA : YY1(2), MM1(2), DD1(2).

MM1 — data · L115-L115

DATA : YY1(2), MM1(2), DD1(2).

YY1 — data · L115-L115

DATA : YY1(2), MM1(2), DD1(2).

BYEAR — data · L117-L117

DATA: BYEAR(2) TYPE C.

BMONTH — data · L118-L118

DATA: BMONTH(2) TYPE C.

BDAY — data · L119-L119

DATA: BDAY(2) TYPE C.

TOT_AMOUNT — data · L120-L120

DATA: TOT_AMOUNT LIKE VBRP-NETWR.

VALUE1 — data · L121-L121

DATA: VALUE1 LIKE VBRP-NETWR.

VALUE2 — data · L122-L122

DATA: VALUE2 LIKE VBRP-NETWR.

COUNT — data · L124-L124

DATA : COUNT LIKE LINE_COUNT.

UMSKZ — data · L125-L125

DATA : UMSKZ LIKE BSEG-UMSKZ.

BUPLA — data · L126-L126

DATA : BUPLA LIKE BSEG-BUPLA.

SGTXT — data · L127-L127

DATA : SGTXT LIKE BSEG-SGTXT.

BAL_TEXT — data · L128-L128

DATA : BAL_TEXT LIKE BSEG-SGTXT.

CURSORFIELD — data · L129-L129

DATA : CURSORFIELD(20).                " cursor position for pickup

SIM — data · L130-L130

DATA : SIM TYPE C.

AUG — data · L131-L131

DATA : AUG TYPE C.

SAP_FORM — data · L132-L132

DATA : SAP_FORM LIKE T001F-FORNR.     "Note 975866

L_STATE_INSC — data · L134-L134

DATA: L_STATE_INSC(4).

BUPLA_HQ — data · L137-L137

DATA: BUPLA_HQ LIKE BSEG-BUPLA.

SN1OP — data · L143-L143

DATA : SN1OP TYPE C.

GT_CNT — data · L144-L144

DATA : GT_CNT(3) TYPE N.

RETURN_CODE — data · L145-L145

DATA : RETURN_CODE TYPE BAPIRETURN-CODE.

IT_FCODE — data · L147-L147

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

ZDTI_CONFIG — tables · L150-L150

TABLES : ZDTI_CONFIG.

ADRC — tables · L151-L151

TABLES:
         ADRC.

FLAG_ONEBUPLA — data · L152-L152

DATA : FLAG_ONEBUPLA.

IT_BUDAT — data · L159-L162

DATA : BEGIN OF IT_BUDAT OCCURS 0,
          AUGBL LIKE BSAD-AUGBL,
          BUDAT LIKE BSAD-BUDAT,
        END OF IT_BUDAT.

AUSGLOP_ITAB — data · L163-L210

DATA :   BEGIN OF AUSGLOP_ITAB OCCURS 0,
         BUKRS LIKE BSAD-BUKRS,        "company code
         KUNNR LIKE BSAD-KUNNR,        "customer number
         STCD  LIKE BSEC-STCD1,        "tax code1 or tax code2
         FILKD LIKE BSAD-KUNNR,
         NAME1 LIKE BSEC-NAME1,        "CPD-customer name
         ORT01 LIKE BSEC-ORT01,        "CPD-customer city
         GJAHR LIKE BSAD-GJAHR,        "business year
         GSBER LIKE BSAD-GSBER,        "business area
         BUPLA LIKE BSID-BUPLA,        "business place
         AUGBL LIKE BSAD-AUGBL,        "tax invoice number
         AUGDT LIKE BSAD-AUGDT,        "tax invoice date
         BELNR LIKE BSAD-BELNR,        "acc. document number
         BLART LIKE BKPF-BLART,        "acc. document type
         BUDAT LIKE BSAD-BUDAT,        "posting documnet date
         BLDAT LIKE BSAD-BLDAT,        "acc. document date
         SHKZG LIKE BSAD-SHKZG,        "debit/credit indicator
         BSCHL LIKE BSAD-BSCHL,        "posting key
         AWTYP LIKE BKPF-AWTYP,        "object type for
                                       "calling application
         AWKEY LIKE BKPF-AWKEY,        "object key
                                       "in acc. document
         DMBTR LIKE BSAD-DMBTR,        "amount in document
                                       "currency
         HWBAS LIKE BSET-HWBAS,        "tax base amount
         HWSTE LIKE BSET-HWSTE,        "tax amount
         WAERS LIKE T001-WAERS,        "company code currency
         MWSKZ LIKE BSET-MWSKZ,        "tax code
         UMSKZ LIKE BSAD-UMSKZ,        "special g_l indicator
         VBELN LIKE VBRK-VBELN,        "billing document
         FKDAT LIKE VBRK-FKDAT,        "billing date
         FKART LIKE VBRK-FKART,        "billing type
                                       "대금청구유형(예:F2(송장))
         FKTYP LIKE VBRK-FKTYP,        "billing category
                                       "(예:L(납품관련대금청구문서))
         HWAER LIKE BKPF-HWAER,        "현지   통화
         WAERK LIKE VBRK-WAERK,        "SD문서 통화
         KURRF LIKE VBRK-KURRF,        "exchange rate
         KURST LIKE VBRK-KURST,        "exchange type
         KURRF_DAT LIKE VBRK-KURRF_DAT,"exchange date
         XCPDK LIKE KNA1-XCPDK,        "지시자: 일회성계정
         SGTXT LIKE BSEG-SGTXT,        "quantity info from AR invoices..
         FLAG TYPE C,                  "AR invoices with qty..
         CHECK,
         LIST_LINE LIKE SY-LINNO,
         BUDAT1 LIKE BSID-BUDAT, "세금계산서일자
         RESULT TYPE BAPIRETURN-CODE,    "smartbill 추가 2006.07.24
      END OF AUSGLOP_ITAB.

AUSGLOP_ITAB2 — data · L215-L231

DATA: BEGIN OF AUSGLOP_ITAB2 OCCURS 0,
      BUKRS LIKE BSAD-BUKRS,
      KUNNR LIKE BSAD-KUNNR,
      NAME1 LIKE BSEC-NAME1,
      GJAHR LIKE BSAD-GJAHR,
      BUPLA LIKE BSID-BUPLA,
      AUGBL LIKE BSAD-AUGBL,            "반제전표번호
      AUGDT LIKE BSAD-AUGDT,            "반제
      DMBTR LIKE BSAD-DMBTR,            "현지(회사)통화금액
      HWBAS LIKE BSET-HWBAS,            "현지통화로 표시된 과세표준액
      HWSTE LIKE BSET-HWSTE,            "현지통화로 표시된 세액
      WAERS LIKE T001-WAERS,            "회사통화키
*      2004.2.19 세금계산서 일자를 전표일자로 변경
      BUDAT1 LIKE BSAD-BUDAT,  "세금계산서 일자를 전표일자로 변경
      CHECK,
      LIST_LINE LIKE SY-LINNO,
      END OF AUSGLOP_ITAB2.

DOC_CNT_ITAB — data · L232-L232

DATA : DOC_CNT_ITAB LIKE AUSGLOP_ITAB OCCURS 0 WITH HEADER LINE.

WA_ITAB2 — data · L234-L234

DATA : WA_ITAB2 LIKE LINE OF AUSGLOP_ITAB2.

AUSGLOP_MAT_ITAB — data · L236-L255

DATA : BEGIN OF AUSGLOP_MAT_ITAB OCCURS 0,
       BUKRS LIKE BSAD-BUKRS,          "company code
       KUNNR LIKE BSAD-KUNNR,          "customer
       STCD  LIKE BSEC-STCD1,          "tax code1 or tax code2
       NAME1 LIKE BSEC-NAME1,          "CPD-customer name
       AUGBL LIKE BSAD-AUGBL,          "clearing document number
       MATNR(25) TYPE C, " LIKE vbrp-matnr,          "material number
       ARKTX LIKE VBRP-ARKTX,          "material description
       VRKME LIKE VBRP-VRKME,          "sales unit(판매단위)
       FKIMG LIKE VBRP-FKIMG,          "actual invoiced quantity(수량)
       NETWR LIKE VBRP-NETWR,          "문서통화의 청구품목정가
       MWSBP LIKE VBRP-MWSBP,          "문서통화의 세액
       UPRICE LIKE VBRP-NETWR,         "단가
       HWBAS LIKE BSET-HWBAS,          "현지통화로 표시된 공급가액
       HWSTE LIKE BSET-HWSTE,          "현지통화로 표시된 세액
* Commercial display of UOM
       MSEH3 LIKE T006A-MSEH3,         "commercial display (UOM)
*       budat like bsid-budat,
       YYYYMMDD  LIKE BSID-BUDAT,
      END OF AUSGLOP_MAT_ITAB.

ALL_ITEMS_ITAB — data · L260-L276

DATA: BEGIN OF ALL_ITEMS_ITAB OCCURS 0,
        BUKRS LIKE BSAD-BUKRS,         "company code
        KUNNR LIKE BSAD-KUNNR,         "customer
        STCD  LIKE BSEC-STCD1,         "tax code1 or tax code2
        AUGBL LIKE BSAD-AUGBL,         "clearing document number
        NETWR LIKE VBRP-NETWR,         "Net value of the billing item
        MWSBP LIKE VBRP-MWSBP,         "Tax amount in document currency
        HWBAS LIKE BSET-HWBAS,         "Tax base amount
        HWSTE LIKE BSET-HWSTE,         "tax amount
        DELTAN LIKE VBRP-NETWR,        "delta currency conversion
        DELTAM LIKE VBRP-MWSBP,        "delta currency conversion
        FLAG TYPE C,                   "for more than 5 matl records...
*       BUDAT LIKE BSID-BUDAT,  세금계산서상에 두배가 나오는 문제로
*                               marking함 20060601-0010-5

*        budat  LIKE bsad-budat,
      END OF ALL_ITEMS_ITAB.

ALL_MAT_ITAB — data · L278-L278

DATA : ALL_MAT_ITAB LIKE ALL_ITEMS_ITAB OCCURS 0 WITH HEADER LINE.

MATNUM — data · L281-L281

DATA: MATNUM LIKE VBRP-MATNR.          "material number

NUMBER — data · L282-L282

DATA:  NUMBER(2).

ALL_ITEMS_SD_ITAB — data · L286-L295

DATA: BEGIN OF ALL_ITEMS_SD_ITAB OCCURS 0,
        BUKRS LIKE BSAD-BUKRS,         "company code
        KUNNR LIKE BSAD-KUNNR,         "customer
        STCD LIKE BSEC-STCD1,          "tax code1 or tax code2
        AUGBL LIKE BSAD-AUGBL,         "clearing document number
        NETWR LIKE VBRP-NETWR,         "Net value of the billing item
        MWSBP LIKE VBRP-MWSBP,         "Tax amount in document currency
        HWBAS LIKE BSET-HWBAS,
        HWSTE LIKE BSET-HWSTE,
      END OF ALL_ITEMS_SD_ITAB.

ALL_ITEMS_FI_ITAB — data · L299-L308

DATA: BEGIN OF ALL_ITEMS_FI_ITAB OCCURS 0,
        BUKRS LIKE BSAD-BUKRS,         "company code
        KUNNR LIKE BSAD-KUNNR,         "customer
        STCD LIKE BSEC-STCD1,          "tax code1 or tax code2
        AUGBL LIKE BSAD-AUGBL,         "clearing document number
        NETWR LIKE VBRP-NETWR,         "Net value of the billing item
        MWSBP LIKE VBRP-MWSBP,         "Tax amount in document currency
        HWBAS LIKE BSET-HWBAS,
        HWSTE LIKE BSET-HWSTE,
      END OF ALL_ITEMS_FI_ITAB.

SUM_TAXES — data · L310-L319

DATA: BEGIN OF SUM_TAXES OCCURS 0,
        BUKRS LIKE BSAD-BUKRS,         "company code
        KUNNR LIKE BSAD-KUNNR,         "customer
        STCD LIKE BSEC-STCD1,          "tax code1 or tax code2
        AUGBL LIKE BSAD-AUGBL,         "clearing document number
        NETWR LIKE VBRP-NETWR,         "Net value of the billing item
        MWSBP LIKE VBRP-MWSBP,         "Tax amount in document currency
        HWBAS LIKE BSET-HWBAS,
        HWSTE LIKE BSET-HWSTE,
       END OF SUM_TAXES.

ADDRESS_ITAB — data · L325-L343

DATA : BEGIN OF ADDRESS_ITAB OCCURS 0,
         BUKRS LIKE BSAD-BUKRS,        "company code
         KUNNR LIKE KNA1-KUNNR,        "Custmer account
         NAME  LIKE KNA1-NAME1,        "Customer name
         STCD  LIKE BSEC-STCD1,        "tax code1 or tax code2
         NAME1 LIKE KNA1-NAME1,        "Customer name
         ADRNR LIKE KNA1-ADRNR,        "Customer address
         ORT01 LIKE KNA1-ORT01,        "Customer city
         ORT02 LIKE KNA1-ORT02,        "Customer city
         PSTLZ LIKE KNA1-PSTLZ,        "Customer city postal code
         STRAS LIKE KNA1-STRAS,        "Customer street
         BUSTYP(16), "LIKE kna1-j_1kftbus,   "type of business
         INDTYP(16), " LIKE kna1-j_1kftind,   "type of industry
         REPRE LIKE KNA1-J_1KFREPRE,   "representative
         STCD1 LIKE KNA1-STCD1,                             "tax code1
         STCD2 LIKE KNA1-STCD2,                             "tax code2
* smartbill 추가 2006.07.19.
         TELF1 LIKE KNA1-TELF1,        "전화번호
      END OF ADDRESS_ITAB.

BUPLA_ADRESSE — data · L347-L362

DATA : BEGIN OF BUPLA_ADRESSE OCCURS 0,
         BRANCH LIKE J_1BBRANCH-BRANCH,"business place
         NAME1 LIKE KNA1-NAME1,        "bus place name
         STREET LIKE KNA1-STRAS,       "bus place street name
         HOUSE_NUM1 LIKE KNA1-TELF1,   "bus place house-number
         POST_CODE1 LIKE KNA1-PSTLZ,   "bus place city  postal code
         CITY1 LIKE KNA1-ORT01,        "bus place city
         CITY2 LIKE KNA1-ORT02,        "bus place city
         KR_BUSTYPE(16), "LIKE kna1-j_1kftbus,   "type of business
         KR_INDTYPE(16), "LIKE kna1-j_1kftind,   "type of industry
         KR_REPRES(14), " LIKE kna1-j_1kfrepre,   "representative
         STCD1 LIKE KNA1-STCD1,                             "tax code1
         STCD2 LIKE KNA1-STCD2,                             "tax code2
         BUDAT1 LIKE BSID-BUDAT,
         AUGBL LIKE BSID-AUGBL, "세금계산서번호
      END OF BUPLA_ADRESSE.

MATZEIL4_ITAB — data · L367-L383

DATA: BEGIN OF MATZEIL4_ITAB OCCURS 0,
       BUKRS LIKE BSAD-BUKRS,          "company code
       KUNNR LIKE BSAD-KUNNR,          "customer
       STCD  LIKE BSEC-STCD1,
       AUGBL LIKE BSAD-AUGBL,          "반제전표번호
       MATNR(25) TYPE C," LIKE vbrp-matnr,          "material number
       ARKTX(15) TYPE C,               "material description
       VRKME(2) TYPE C,                "판매단위
*수량에 소수점이 나오지 않도록 수정
*      fkimg(10) TYPE c,               "actual invoiced quantity
       FKIMG(13) TYPE C,               "actual invoiced quantity
       NETWR(15) TYPE C,               "Net value of the billing item
       MWSBP(13) TYPE C,               "Tax amount in document currency
       UPRICE(15) TYPE C,              "unit price
       HWBAS LIKE BSET-HWBAS,          "tax base amount
       HWSTE LIKE BSET-HWSTE,          "tax amount
      END OF MATZEIL4_ITAB.

MATZEIL1_ITAB — data · L385-L385

DATA : MATZEIL1_ITAB LIKE MATZEIL4_ITAB OCCURS 0 WITH HEADER LINE.

OPTIONS — data · L387-L389

DATA BEGIN OF OPTIONS.
        INCLUDE STRUCTURE ITCPO.
DATA END   OF OPTIONS.

RESULT — data · L391-L393

DATA BEGIN OF RESULT.
        INCLUDE STRUCTURE ITCPP.
DATA END   OF RESULT.

CHECK_ITAB — data · L397-L406

DATA : BEGIN OF CHECK_ITAB OCCURS 0,
       BUKRS LIKE BSAD-BUKRS,
       KUNNR LIKE BSEG-KUNNR,
       STCD  LIKE BSEC-STCD1,
       AUGBL LIKE BSAD-AUGBL,       "반제전표번호
       SAVE_UMSKZ LIKE BSEG-UMSKZ,  "특별 G/L
       AWTYP_FI(4),
       AWTYP_SD(4),
       LINE_COUNT2 TYPE I,
       END OF CHECK_ITAB.

SEL_AUSGLOP_ITAB — data · L408-L456

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

         AWKEY LIKE BKPF-AWKEY,        "object key
         DMBTR LIKE BSID-DMBTR,        "회사통화금액
         WRBTR LIKE BSID-WRBTR,        "전표통화금액
         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,        "basis 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,        "qty info from AR invoices..
         RESULT TYPE BAPIRETURN-CODE,    "smartbill 추가 2006.07.24

END OF SEL_AUSGLOP_ITAB.

BKPF_TAB — data · L458-L458

DATA : BKPF_TAB LIKE BKPF OCCURS 0 WITH HEADER LINE.

BSET_TAB — data · L459-L459

DATA : BSET_TAB LIKE BSET OCCURS 0 WITH HEADER LINE.

BSEG_TAB — data · L460-L460

DATA : BSEG_TAB LIKE BSEG OCCURS 0 WITH HEADER LINE.

AUGBL — data · L461-L461

DATA : AUGBL LIKE BSEG-AUGBL.

PROG_NAME — data · L462-L462

DATA : PROG_NAME LIKE SYST-CPROG.

EXIT — data · L463-L463

DATA : EXIT TYPE C.

COPY — data · L464-L464

DATA : COPY(1) TYPE N.

BVAT — data · L465-L465

DATA : BVAT(12).

VAT_BUS — data · L466-L466

DATA : VAT_BUS(24)          VALUE '|      -     -         |'.

CVAT — data · L467-L467

DATA : CVAT(12).

VAT_COM — data · L468-L468

DATA : VAT_COM(24)          VALUE '|      -     -         |'.

BASE — data · L469-L469

DATA : BASE(12).

AMT_BASE — data · L470-L470

DATA : AMT_BASE(22)         VALUE ' | | | | | | | | | | |'.

TAX — data · L471-L471

DATA : TAX(11).

AMT_TAX — data · L472-L472

DATA : AMT_TAX(20)          VALUE ' | | | | | | | | | |'.

TAX_NO — data · L473-L473

DATA : TAX_NO(10) TYPE N.              " TRUNCATED TAX INVOICE NUMBER

TAX_INV_NO — data · L474-L474

DATA : TAX_INV_NO(10).

TAX_NUM — data · L475-L475

DATA : TAX_NUM(20)          VALUE '| | | | | | | | | | '.

ADDRESS_COMP — data · L477-L477

DATA: ADDRESS_COMP(43).

ADDRESS_BUPLA — data · L478-L478

DATA: ADDRESS_BUPLA(43).

PRIPAR — data · L479-L479

DATA: PRIPAR LIKE PRI_PARAMS.

VAL — data · L480-L480

DATA: VAL(1) TYPE C.

SDFI — data · L481-L481

DATA: SDFI(1) TYPE C.                  " used in list output only

W_HTYPE — data · L484-L484

DATA : W_HTYPE(4).

REPRINT — data · L485-L485

DATA:
       REPRINT.

CANCEL — data · L486-L486

DATA:
       CANCEL.

G_LINES — data · L487-L487

DATA:
       G_LINES TYPE I.

FL_TAX_RAT — data · L488-L488

DATA:
       FL_TAX_RAT VALUE '1'.  " 영세율인가?

IT_VBRP — data · L490-L496

DATA : BEGIN OF IT_VBRP OCCURS 0,
       MATNR(25) TYPE C, " LIKE vbrp-matnr,
       VBELN LIKE VBRP-VBELN,
       BUDAT(8),  " LIKE bsid-budat,
       AUGBL LIKE BSAD-AUGBL,        "tax invoice number

       END OF IT_VBRP.

GT_ZSBBSEG — data · L499-L499

DATA : GT_ZSBBSEG  LIKE ZSBBSEG       OCCURS 0 WITH HEADER LINE.

GT_ZSBISSUE — data · L500-L500

DATA : GT_ZSBISSUE LIKE ZSBISSUE_ITEM OCCURS 0 WITH HEADER LINE.

GT_MAIL — data · L503-L512

DATA : BEGIN OF GT_MAIL OCCURS 0,
         BUKRS  LIKE BKPF-BUKRS,
         KUNNR  LIKE KNA1-KUNNR,
         ZBYCN  LIKE ZDTI_HEADER-ZBYCN,
         ZSQNO  LIKE ZDTI_HEADER-ZSQNO,
         ZBYRE  LIKE ZDTI_HEADER-ZBYRE,
         HWAER  LIKE ZDTI_HEADER-HWAER,
         HWBAS  LIKE ZDTI_HEADER-HWBAS,
         HWSTE  LIKE ZDTI_HEADER-HWSTE,
       END OF GT_MAIL.

GT_SCR — data · L515-L517

DATA: BEGIN OF GT_SCR OCCURS 0.
        INCLUDE STRUCTURE ZDTI_LAYOUT.
DATA: END OF GT_SCR.

ZSB_HEADER — data · L521-L523

DATA: BEGIN OF ZSB_HEADER OCCURS 0.
        INCLUDE STRUCTURE ZSB_HEADER.
DATA: END OF ZSB_HEADER.

ZSB_ITEM — data · L525-L527

DATA: BEGIN OF ZSB_ITEM OCCURS 0.
        INCLUDE STRUCTURE ZSB_ITEM.
DATA: END OF ZSB_ITEM.

ZSB_PAYMENT — data · L529-L531

DATA: BEGIN OF ZSB_PAYMENT OCCURS 0.
        INCLUDE STRUCTURE ZSB_PAYMENT.
DATA: END OF ZSB_PAYMENT.

ZSB_BELNR — data · L533-L535

DATA: BEGIN OF ZSB_BELNR OCCURS 0.
        INCLUDE STRUCTURE ZSB_BELNR.
DATA: END OF ZSB_BELNR.

LCL_EVENT_RECEIVER — class · L541-L547

CLASS LCL_EVENT_RECEIVER DEFINITION.
  PUBLIC SECTION.
    METHODS :
      HANDLE_TOOLBAR3
          FOR EVENT TOOLBAR OF CL_GUI_ALV_GRID
              IMPORTING E_OBJECT E_INTERACTIVE.
ENDCLASS.                    "LCL_EVENT_RECEIVER DEFINITION

EVENT_RECEIVER — data · L574-L574

DATA : EVENT_RECEIVER TYPE REF TO LCL_EVENT_RECEIVER. "ALVGRID EVENT용

SLIS — type-pool · L578-L578

TYPE-POOLS: SLIS.

GT_FCAT — data · L580-L580

DATA : GT_FCAT            TYPE LVC_S_FCAT OCCURS 0 WITH HEADER LINE.

I_FIELD — data · L581-L581

DATA:
       I_FIELD            LIKE GT_FCAT OCCURS 0 WITH HEADER LINE.

G_CUSTOM_CONTAINER — data · L583-L583

DATA : G_CUSTOM_CONTAINER  TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

DIALOGBOX_CONTAINER — data · L584-L584

DATA:
       DIALOGBOX_CONTAINER TYPE REF TO CL_GUI_DIALOGBOX_CONTAINER.

GRID1 — data · L585-L585

DATA:
       GRID1              TYPE REF TO CL_GUI_ALV_GRID.

GS_LAYOUT — data · L586-L586

DATA:
      GS_LAYOUT          TYPE LVC_S_LAYO.  " ALV 제어: 레이아웃구조

GS_VARIANT — data · L587-L587

DATA:
       GS_VARIANT         TYPE DISVARIANT.

IT_EVENTS — data · L588-L588

DATA:
     IT_EVENTS          TYPE SLIS_ALV_EVENT OCCURS 1 WITH HEADER LINE.

LS_FIELDCAT — data · L589-L589

DATA:
       LS_FIELDCAT        TYPE SLIS_FIELDCAT_ALV.

LS_FIELD — data · L590-L590

DATA:
       LS_FIELD           TYPE LVC_S_FCAT.

ALV_LAYOUT — data · L591-L591

DATA:
       ALV_LAYOUT         TYPE SLIS_LAYOUT_ALV.

ALV_SORT — data · L592-L592

DATA:
       ALV_SORT           TYPE SLIS_T_SORTINFO_ALV WITH HEADER LINE.

L_REPID — data · L593-L593

DATA:
       L_REPID            LIKE SY-REPID.

LINECOLOR — data · L594-L594

DATA:
      LINECOLOR    TYPE SLIS_SPECIALCOL_ALV OCCURS 0 WITH HEADER LINE.

POS — data · L595-L595

DATA:
       POS                 TYPE I VALUE 1.

G_CUSTOM_CONTAINER1 — data · L596-L596

DATA:
       G_CUSTOM_CONTAINER1 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

GRID2 — data · L597-L597

DATA:
       GRID2               TYPE REF TO CL_GUI_ALV_GRID.

G_CUSTOM_CONTAINER2 — data · L598-L598

DATA:
       G_CUSTOM_CONTAINER2 TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

GRID3 — data · L599-L599

DATA:
       GRID3               TYPE REF TO CL_GUI_ALV_GRID.

I_LAYOUT — data · L600-L600

DATA:
       I_LAYOUT          TYPE LVC_S_LAYO.

THWBAS — data · L601-L601

DATA: THWBAS LIKE ZDTI_SAPP-HWBAS.

CHECK_FLAG — data · L602-L602

DATA:
      CHECK_FLAG.

HTML_CONTROL — data · L604-L604

DATA: HTML_CONTROL TYPE REF TO CL_GUI_HTML_VIEWER.

MY_CONTAINER — data · L605-L605

DATA:
      MY_CONTAINER TYPE REF TO CL_GUI_CUSTOM_CONTAINER.

FCODE — data · L606-L606

DATA:
      FCODE LIKE SY-UCOMM.

MYEVENT_TAB — data · L607-L607

DATA:
      MYEVENT_TAB TYPE CNTL_SIMPLE_EVENTS.

MYEVENT — data · L608-L608

DATA:
      MYEVENT TYPE CNTL_SIMPLE_EVENT.

EDURL — data · L609-L609

DATA:
      EDURL(2048).

ALIGNMENT — data · L610-L610

DATA:
      ALIGNMENT TYPE I.

OK_CODE — data · L613-L613

DATA : OK_CODE TYPE SY-UCOMM.

SAVE_CODE — data · L614-L614

DATA:
       SAVE_CODE LIKE OK_CODE.

SBUKRS — parameter · L629-L629

PARAMETERS: SBUKRS LIKE BSAD-BUKRS DEFAULT 'KR01'  OBLIGATORY.

SKUNNR — select-option · L630-L630

SELECT-OPTIONS: SKUNNR FOR BSAD-KUNNR. "Customer

SGJAHR — parameter · L632-L632

PARAMETERS: SGJAHR LIKE BKPF-GJAHR OBLIGATORY.

SBLDAT — parameter · L638-L638

PARAMETERS SBLDAT LIKE BKPF-BLDAT.         " OBLIGATORY.

SAUGBL — select-option · L645-L645

SELECT-OPTIONS:             SAUGBL FOR BKPF-BKTXT . " tax inv number

SAUGDT — select-option · L646-L646

SELECT-OPTIONS:             SAUGDT FOR BSET-MLDDT. "tax invoice  date.

STA1 — parameter · L655-L655

PARAMETER  STA1 RADIOBUTTON GROUP TATI." normal tax inv.

STA2 — parameter · L657-L657

PARAMETER  STA2 RADIOBUTTON GROUP TATI."tax exempted tax inv

SAP — parameter · L665-L665

PARAMETER SAP RADIOBUTTON GROUP OUT.               " SAP script output

FULLLIST — parameter · L667-L667

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

LIST — parameter · L669-L669

PARAMETER LIST RADIOBUTTON GROUP OUT.   " List Output values

CHK_PRTI — parameter · L680-L680

PARAMETER  CHK_PRTI RADIOBUTTON GROUP PRIN DEFAULT 'X'." normal tax inv.

CHK_PRAD — parameter · L682-L682

PARAMETER  CHK_PRAD RADIOBUTTON GROUP PRIN. "additional list

RECEIPT — parameter · L700-L700

PARAMETER RECEIPT RADIOBUTTON GROUP IND DEFAULT 'X'. " Receipt indicator

BILLING — parameter · L702-L702

PARAMETER BILLING RADIOBUTTON GROUP IND.             " Billing indicator

CLEAR — data · unit 로컬 · L1927-L1927

  DATA : SIGN TYPE C, CLEAR TYPE C.

SIGN — data · unit 로컬 · L1927-L1927

  DATA : SIGN TYPE C, CLEAR TYPE C.

MATERIAL — data · unit 로컬 · L2270-L2270

  DATA : MATERIAL LIKE VBRP-MATNR.

UNIT — data · unit 로컬 · L2271-L2271

DATA:
         UNIT LIKE VBRP-VRKME.

QTY — data · unit 로컬 · L2272-L2272

DATA:
         QTY  LIKE VBRP-FKIMG.

ZBSID — data · unit 로컬 · L2387-L2387

  DATA:  ZBSID LIKE BSID OCCURS 0 WITH HEADER LINE.

L_AUGBL — data · unit 로컬 · L2407-L2407

  DATA : L_AUGBL(10) TYPE N.

STCD2 — data · unit 로컬 · L2496-L2496

  DATA STCD2(10).

DOC_NO — data · unit 로컬 · L2794-L2794

  DATA: DOC_NO(10) TYPE C.

FLAG — data · unit 로컬 · L2795-L2795

  DATA: FLAG TYPE C.

L_AAA — data · unit 로컬 · L3035-L3035

  DATA: L_AAA(46).

MM1 — data · unit 로컬 · L3144-L3144

  DATA : MM1(2), DD1(2), L_LEN TYPE I.

DD1 — data · unit 로컬 · L3144-L3144

  DATA : MM1(2), DD1(2), L_LEN TYPE I.

L_LEN — data · unit 로컬 · L3144-L3144

  DATA : MM1(2), DD1(2), L_LEN TYPE I.

L_TOTAL — data · unit 로컬 · L3233-L3233

  DATA : L_TOTAL(15), L_LEN TYPE I.

L_LEN — data · unit 로컬 · L3233-L3233

  DATA : L_TOTAL(15), L_LEN TYPE I.

L_TOTAL — data · unit 로컬 · L3276-L3276

  DATA : L_TOTAL(15), L_LEN TYPE I.

L_LEN — data · unit 로컬 · L3276-L3276

  DATA : L_TOTAL(15), L_LEN TYPE I.

MM — data · unit 로컬 · L4613-L4613

  DATA : MM(2), DD(2), L_LEN TYPE I.

DD — data · unit 로컬 · L4613-L4613

  DATA : MM(2), DD(2), L_LEN TYPE I.

L_LEN — data · unit 로컬 · L4613-L4613

  DATA : MM(2), DD(2), L_LEN TYPE I.

L_DANGA — data · unit 로컬 · L4680-L4680

  DATA : MM(2), DD(2), L_LEN TYPE I, L_DANGA   LIKE BSET-HWSTE.

L_LEN — data · unit 로컬 · L4680-L4680

  DATA : MM(2), DD(2), L_LEN TYPE I, L_DANGA   LIKE BSET-HWSTE.

MM — data · unit 로컬 · L4680-L4680

  DATA : MM(2), DD(2), L_LEN TYPE I, L_DANGA   LIKE BSET-HWSTE.

DD — data · unit 로컬 · L4680-L4680

  DATA : MM(2), DD(2), L_LEN TYPE I, L_DANGA   LIKE BSET-HWSTE.

LN_FKIMG — data · unit 로컬 · L4681-L4681

  DATA : LN_FKIMG(8) TYPE N, LN_NETWR(15) TYPE N.

LN_NETWR — data · unit 로컬 · L4681-L4681

  DATA : LN_FKIMG(8) TYPE N, LN_NETWR(15) TYPE N.

LN_FKIMG — data · unit 로컬 · L5424-L5424

  DATA : LN_FKIMG(8) TYPE N.

LN_NETWR — data · unit 로컬 · L5425-L5425

DATA:
         LN_NETWR(15) TYPE N.

L_DANGA — data · unit 로컬 · L5426-L5426

DATA:
         L_DANGA   LIKE BSET-HWSTE.

ZFIR0141F01 (1건)

LV_HWBAS — data · unit 로컬 · L103-L103

  DATA  : LV_HWBAS(12).

Unit 목록 (컨테이너)

unit 유형 위치 조각 한 줄 요약
LCL_EVENT_RECEIVER~HANDLE_TOOLBAR3 METHOD ZFIR0141 L554-571 0 ALV 그리드 툴바 이벤트 핸들러로 표준 편집·복사·출력 등 불필요한 툴바 버튼을 제거한다.
AT SELECTION-SCREEN EVENT ZFIR0141 L712-742 1 선택화면 검증으로 SAPscript 재발행이면 양식(GET_LAYOUT)을 결정하고 전체 리스트와 추가 시트 옵션을 함께 선택하면 E353 오류를 낸다.
INITIALIZATION EVENT ZFIR0141 L743-772 0 선택화면 초기값으로 재발행 옵션을 기본 선택하고 취소를 해제하며 회계연도를 현재 연도로 세팅한다.
START-OF-SELECTION EVENT ZFIR0141 L773-801 2 호출 프로그램(ZFIR0140/YFIR0601)이 ABAP 메모리로 넘긴 선택 세금계산서·프로그램명·시뮬레이션·통합발행·발행일을 IMPORT 한 뒤 단독 실행이면 목록 표시, 호출 실행이면 재발행·테이블 갱신·User Exit 를 수행한다.
AT USER-COMMAND EVENT ZFIR0141 L802-871 2 세금계산서 리스트 화면의 사용자 명령을 처리하여 전체 선택/해제, 뒤로가기 시 테이블 갱신, 저장 시 취소 처리 또는 재발행(REPRINT)을 분기한다.
AT LINE-SELECTION EVENT ZFIR0141 L872-890 1 리스트에서 전표번호(AUSGLOP_ITAB-BELNR)를 더블클릭하면 회사코드·전표번호·회계연도 파라미터를 세팅하고 FB03 전표 조회 화면으로 이동한다.
GET_TAX_CODE FORM ZFIR0141 L891-919 1 일회성 고객 전표의 BSEC 에서 사업자번호(STCD2 우선, 없으면 주민번호 STCD1)를 읽어 AUSGLOP_ITAB 과 CHECK_ITAB 의 STCD 에 세팅한다.
CHECK_G_L_INDICATOR FORM ZFIR0141 L925-956 1 출력 대상 전표의 BSEG 에서 특별 G/L 지시자(UMSKZ)를 읽어 AUSGLOP_ITAB 과 CHECK_ITAB(SAVE_UMSKZ)에 저장한다.
GET_TAXES FORM ZFIR0141 L962-1008 1 세금계산서 출력 항목의 공급가액·세액을 매출부가세 계정(0040605000)의 BSET 라인에서 가져온다.
PRINT_SUM_LINE FORM ZFIR0141 L1014-1136 3 세금계산서 합계 라인용으로 원천 유형(SD 전용/FI 전용/SD+FI)에 따라 총금액(FELD3)·공급가액(FELD1A)·세액(FELD1B) 문자열과 공란수(COUNT1)를 만든다.
PRINT_ITEM_PURE_SD FORM ZFIR0141 L1143-1190 2 순수 SD 빌링(VBRK 전용) 세금계산서의 품목 라인을 최대 4줄로 채우거나, 추가 시트 인쇄 시 품목별 평균 단가를 계산한다(인쇄용).
PRINT_ITEM_SD_AND_FI FORM ZFIR0141 L1196-1330 3 SD 빌링과 FI 전표가 함께 반제된 세금계산서의 품목 라인(MATZEIL1~4)을 KRW 편집 금액으로 채우고 품목별 평균 단가를 계산한다(인쇄용).
PRINT_LINES FORM ZFIR0141 L1341-1438 2 세금계산서별 판매 품목(AUSGLOP_MAT_ITAB)을 일자·자재 순으로 정렬해 최대 4개 품목 라인(MATZEIL1~4)에 배치하고, 5개 이상이면 4번째 라인을 '외' 요약 라인으로 만든다(인쇄용).
GET_LAYOUT FORM ZFIR0141 L1447-1493 1 회사코드 T001 을 읽고 양식 종류(STA1 일반/세금계산서)·인쇄 옵션(CHK_PRTI)에 따라 T001F 에서 SAPscript 양식명(FORNR)을 결정하며 없으면 E202 오류를 낸다.
FILL_CHECK_TABLE FORM ZFIR0141 L1502-1553 2 출력 대상 전표마다 BKPF 로 원천 유형(AWTYP/AWKEY)을 확인하고 SD 빌링 원천이면 CHECK_ITAB 에 등록한 뒤 VBRK 의 빌링 유형·통화·환율 정보를 AUSGLOP_ITAB 에 채운다.
GET_BUPLA FORM ZFIR0141 L1562-1633 1 세금계산서 발행 사업장(BUPLA)의 주소와 J_1BBRANCH 사업장 마스터(대표자·업태·업종)를 읽어 BUPLA_ADRESSE 에 세금계산서번호와 함께 추가한다.
GET_ADDRESS FORM ZFIR0141 L1642-1661 1 출력 대상 각 고객의 KNA1 을 조회해 일회성 고객 여부(XCPDK)에 따라 마스터 주소 또는 BSEC 일회성 주소를 ADDRESS_ITAB 에 채운다.
FILL_TABLES FORM ZFIR0141 L1670-1871 5 출력 대상 세금계산서의 품목 테이블(AUSGLOP_MAT_ITAB)·항목 합계(ALL_ITEMS_ITAB/ALL_ITEMS_FI_ITAB)·특별G/L 라인 정보(CHECK_ITAB, MATZEIL4_ITAB)를 SD 빌링(VBRP)과 FI 전표로부터 채운다.
GET_TOTALS FORM ZFIR0141 L1880-1916 1 세금계산서별 FI 세금 합계(HWBAS/HWSTE)와 SD 품목 합계(NETWR/MWSBP)를 비교하여 차이(DELTAN/DELTAM)를 기록하고 SD 합계를 FI 세금 합계로 맞춘다.
CHECK_OPTION FORM ZFIR0141 L1925-2136 4 단독 실행 시 선택 조건(세금계산서번호 SAUGBL 또는 발행일 SAUGDT)에 따라 BKPF/BSEG/BSET 에서 발행된 세금계산서 전표를 찾아 AUSGLOP_ITAB 을 구성하고 매출부가세 기준 공급가액·세액을 집계한다.
UPDATE_TABLE FORM ZFIR0141 L2145-2260 5 발행(또는 취소)된 세금계산서 번호를 회계전표 헤더 BKPF-BKTXT, 세금항목 BSET-MLDDT, 고객항목 BSEG-XREF3(사업자등록번호)에 반영하여 DB 를 갱신한다.
CHECK_TEXT FORM ZFIR0141 L2269-2357 2 FI 전표의 항목 텍스트(BSEG-SGTXT)를 '자재,단위,수량' 형식으로 파싱하여 SD 빌링처럼 취급할 품목 정보를 AUSGLOP_MAT_ITAB 에 만들고 원천 유형을 VBRK 로 표시한다.
USER_EXIT1 FORM ZFIR0141 L2366-2372 1 세금계산서 취소용 사용자 EXIT FM KR_USER_EXIT_CANCEL_TAXINVOICE 를 호출해 출력 대상 AUSGLOP_ITAB 을 고객사 로직으로 후처리한다.
USER_EXIT2 FORM ZFIR0141 L2385-2397 1 출력 대상 AUSGLOP_ITAB 을 BSID 구조로 옮겨 세금계산서 번호를 BSEG 추가 필드에 저장하는 User Exit FM KR_USER_EXIT_COPY_TAXINVOICE 를 호출한다.
DISPLAY_LIST FORM ZFIR0141 L2406-2522 3 발행된 세금계산서를 번호(AUGBL) 단위로 금액을 합산해 AUSGLOP_ITAB2 로 요약하고 고객명·사업자번호와 함께 체크박스 리스트로 표시한다.
REPRINT FORM ZFIR0141 L2531-2766 7 세금계산서 재발행 메인 흐름으로 호출 프로그램에서 넘어온 선택 항목을 AUSGLOP_ITAB 에 옮기고 원천·세금코드·특별G/L·사업장·주소·품목·합계를 순서대로 준비한 뒤 출력 옵션(LIST/FULLLIST/SAP)에 따라 인쇄한다.
SET_SELECTION FORM ZFIR0141 L2774-2783 1 리스트의 전체 선택/해제 플래그를 AUSGLOP_ITAB2-CHECK 에 반영하고 화면 라인의 체크박스 값을 MODIFY LINE 으로 갱신한다.
SEL_DOCUMENT FORM ZFIR0141 L2792-2836 2 리스트 화면에서 체크된 라인을 읽어 해당 세금계산서 번호(AUGBL)에 속한 AUSGLOP_ITAB/AUSGLOP_ITAB2 항목의 CHECK 플래그를 설정하고 선택 건수를 센다.
FILL_ZEROS FORM ZFIR0141 L2844-2856 1 문서번호 등 문자 필드를 우측 정렬한 뒤 앞쪽 공백을 '0'으로 채워 선행 0 형식으로 만든다.
USER_EXIT3 FORM ZFIR0141 L2865-2893 1 세금계산서 출력 직전 모든 출력 내부테이블과 옵션을 한국 세금계산서 리스트 User Exit FM KR_USER_EXIT_LIST_TAXINVOICE 에 넘겨 고객사 로직으로 가공한다.
LIST_OUTPUT FORM ZFIR0141 L2902-2937 1 시뮬레이션이거나 직접 실행이면 세금계산서를 WRITE 리스트로 인쇄(PRINT_INVOICES)하고 인쇄 파라미터를 설정하며, 그 외에는 스마트빌 전송(SMARTBILL_TRANS)으로 분기한다.
TRUNCATE_TAXNUM FORM ZFIR0141 L2946-2964 1 세금계산서 번호(AUGBL)를 10자리로 편집해 세금계산서 양식의 번호란 자릿수 칸(TAX_NUM)에 한 자리씩 배치한다.
FILL_VAT_NUMBER FORM ZFIR0141 L2973-3020 2 공급자(B)와 공급받는자(C)의 사업자등록번호 10자리를 세금계산서 양식의 사업자등록번호 칸(VAT_BUS/VAT_COM)에 한 자리씩 배치해 WRITE 한다.
FILL_AMOUNT FORM ZFIR0141 L3029-3134 2 세금계산서 상단의 공급가액·세액을 자릿수별 칸(AMT_BASE/AMT_TAX)에 한 자리씩 배치하고 발행일·전표수·사업장 주소와 함께 WRITE 한다.
WRITE_LINES_FI FORM ZFIR0141 L3143-3223 2 세금계산서 양식의 FI 품목 4줄(MATZEIL1~4)을 월/일·품목·단위·수량·단가·공급가액·세액 컬럼 위치에 맞춰 WRITE 로 인쇄한다.
CHECK_RECEIPT FORM ZFIR0141 L3232-3266 2 세금계산서 하단 '영수' 구분 영역에 합계금액(FELD3)을 부호 정리·우측정렬해 WRITE 하고 영수 체크 아이콘과 '이 금액을 영수함' 문구를 표시한다.
CHECK_BILLING FORM ZFIR0141 L3275-3307 2 세금계산서 하단 '청구' 구분 영역에 합계금액(FELD3)을 부호 정리·우측정렬해 WRITE 하고 청구 체크 아이콘을 표시한다.
PRINT_INVOICES FORM ZFIR0141 L3316-3532 5 선택된 세금계산서(AUGBL)별로 공급자용·공급받는자용 2부를 WRITE 리스트 형식으로 인쇄하며 제목·번호·거래처·합계·품목·영수/청구 구분을 순서대로 출력한다.
STRING_CHECK FORM ZFIR0141 L3541-3551 1 세금계산서번호(AUSGLOP_ITAB-AUGBL)가 숫자형인지 FM NUMERIC_CHECK 로 판정해 W_HTYPE 에 담는다.
FILL_ITEM_AMOUNT FORM ZFIR0141 L3560-3579 1 품목 테이블 행의 평균 단가(공급가액/수량)를 계산하고 단가·수량·공급가액·부가세액을 KRW 통화 편집으로 세금계산서 품목 라인(MATZEIL)에 옮긴다.
PRINT_ITEM_PURE_FI FORM ZFIR0141 L3588-3636 1 순수 FI 전표(BKPF 전용)로 반제된 세금계산서의 첫 품목 라인 MATZEIL1 을 전표 텍스트(SGTXT)와 KRW 편집된 공급가액·세액으로 채운다.
WRITE_PART1-1 FORM ZFIR0141 L3645-3764 2 세금계산서 파트1(공급자 보관용 1번째 양식)의 사업자등록번호·상호·대표자·주소·업종·업태를 WRITE 로 인쇄한다.
WRITE_PART1-2 FORM ZFIR0141 L3773-3896 2 세금계산서 파트1(공급자/공급받는자 보관용 2번째 양식)의 사업자등록번호·상호·대표자·주소·업종·업태를 WRITE 로 인쇄한다.
TAX_INVOICE_TITLE_CHANGE FORM ZFIR0141 L3905-3961 1 세금계산서 제목 라인을 부수(COPY 1=공급자용, 2=공급받는자용)와 양식 종류(STA1 일반세금계산서/STA2 세금계산서)에 따라 다른 텍스트로 인쇄하고 시뮬레이션이면 표시를 덧붙인다.
KIND_OF_CUSTOMERS FORM ZFIR0141 L3970-4020 2 고객 유형(일회성 CPD·마스터 고객·지점 고객)에 따라 고객 주소와 사업장 주소를 찾아 세금계산서 파트1(공급자/공급받는자 정보)을 WRITE_PART1-1/1-2 로 인쇄한다.
DISPLAY_TAX_INVOICE FORM ZFIR0141 L4029-4051 1 출력 옵션을 검증한 뒤 재발행이면 반올림 User Exit KR_USER_EXIT_ROUNDOFF 를 적용하고 대상이 없으면 메시지 I500 을 표시하며 세금계산서 리스트를 표시한다.
GET_ADDRESS_OF_CUSTOMER FORM ZFIR0141 L4060-4085 1 고객 마스터 KNA1 의 주소·사업자번호·업태·업종·대표자·주소번호를 ADDRESS_ITAB 에 고객당 1건 추가한다.
GET_ADDRESS_OF_CPD_CUSTOMER FORM ZFIR0141 L4095-4136 1 일회성 고객(CPD)의 주소·사업자번호·업태·업종·대표자를 전표의 일회성 고객 데이터 BSEC 에서 읽어 ADDRESS_ITAB 에 추가하고 AUSGLOP_ITAB/CHECK_ITAB 의 STCD·XCPDK 를 갱신한다.
SAP_SCRIPT FORM ZFIR0141 L4146-4518 8 세금계산서 SAPscript 출력 절차의 시작 부분으로 인쇄 옵션을 설정하고 OPEN_FORM 으로 인쇄 작업을 연 뒤 고객·사업장 순으로 출력 대상을 정렬한다.
FILL_ITEM_TABLES FORM ZFIR0141 L4527-4548 1 현재 세금계산서의 CHECK_ITAB 항목을 돌며 원천 유형별(순수 SD, SD+FI, 순수 FI)로 인쇄용 품목 라인을 채우는 하위 FORM 을 호출한다.
CONVERT_TO_LOCAL_CURRENCY FORM ZFIR0141 L4557-4603 1 SD 품목의 외화 공급가액·세액을 전표의 환율 정보로 현지통화(KRW)로 환산한다.
WRITE_ITEM_SD FORM ZFIR0141 L4611-4671 2 SD 빌링 기준 세금계산서 품목 라인 한 줄의 공급가액·세액 부호와 정렬을 정리한 뒤 월/일·품목·단위·수량·단가·공급가액·세액을 WRITE 로 인쇄한다.
WRITE_ITEM_FI FORM ZFIR0141 L4679-4773 3 FI 전표 기준 세금계산서 품목 라인 한 줄의 단가를 공급가액/수량으로 계산하고 금액 부호·정렬을 정리한 뒤 월/일·품목·단위·수량·단가·공급가액·세액을 WRITE 로 인쇄한다.
EXCL_FCODE01 FORM ZFIR0141 L4781-4792 0 PF-STATUS 에서 제외할 기능코드(SALL/DSALL/SAVE)를 IT_FCODE 테이블에 담는 유틸리티 FORM 이다.
GET_SALES_TAX_SGTXT FORM ZFIR0141 L4801-4820 1 각 출력 대상 전표의 매출세(MWART='A') BSEG 라인 항목 텍스트(SGTXT)를 읽어 AUSGLOP_ITAB-SGTXT 에 저장한다.
SMARTBILL_TRANS FORM ZFIR0141 L4829-5144 10 선택된 세금계산서를 스마트빌 전송용 헤더(GT_ZSBBSEG)·품목(GT_ZSBISSUE) 데이터로 변환하고 사업자단위과세 적용 시 공급자 정보를 대표 사업장으로 바꾼 뒤 이메일 확인 팝업(화면 100)을 띄운다.
KIND_OF_CUSTOMERS_SMARTBILL FORM ZFIR0141 L5153-5208 2 고객 유형(일회성 CPD·마스터 고객·지점 고객)에 따라 고객 주소와 사업장 주소를 찾아 스마트빌 헤더 파트1(공급자/공급받는자 정보)을 WRITE_PART1-1_SMARTBILL 로 채운다.
WRITE_PART1-1_SMARTBILL FORM ZFIR0141 L5217-5284 3 전자세금계산서 헤더(GT_ZSBBSEG)의 공급자(사업장)·공급받는자(고객) 정보(주소·사업자번호·상호·대표자·업종·업태·담당자 이메일/전화)를 채운다.
PRINT_SUM_LINE_SMARTBILL FORM ZFIR0141 L5293-5355 1 스마트빌 전송용 합계 라인을 만들기 위해 CHECK_ITAB/ALL_ITEMS_ITAB 를 돌며 SD·FI 원천 구분(AWTYP)에 따라 총금액·총공급가액·총세액을 GT_ZSBBSEG 에 채운다.
FILL_ITEM_TABLES_SMARTBILL FORM ZFIR0141 L5364-5386 1 현재 세금계산서의 CHECK_ITAB 항목을 돌며 원천 유형별(순수 SD, SD+FI, 순수 FI)로 스마트빌 품목 라인을 채우는 하위 FORM 을 호출한다.
WRITE_ITEM_SD_SMARTBILL FORM ZFIR0141 L5394-5414 1 SD 빌링 기준 세금계산서 품목 라인(MATZEIL)을 스마트빌 품목 테이블 GT_ZSBISSUE 에 일련번호·품명·규격·수량·단가·공급가액·세액으로 적재한다.
WRITE_ITEM_FI_SMARTBILL FORM ZFIR0141 L5422-5464 2 FI 전표 기준 세금계산서 품목 라인(MATZEIL)의 단가를 공급가액/수량으로 계산한 뒤 스마트빌 품목 테이블 GT_ZSBISSUE 에 적재한다.
PRINT_LINES_SMARTBILL FORM ZFIR0141 L5473-5563 2 세금계산서별 판매 품목(AUSGLOP_MAT_ITAB)을 일자·자재 순으로 정렬해 최대 4개 품목 라인(MATZEIL1~4)에 배치하고, 5개 이상이면 4번째 라인을 '외 N건' 요약 라인으로 만든다(스마트빌용).
FILL_ITEM_AMOUNT_SMARTBILL FORM ZFIR0141 L5572-5592 1 품목 테이블 행의 평균 단가(공급가액/수량)를 계산하고 단가·수량·공급가액·부가세액을 세금계산서 품목 라인(MATZEIL)에 옮긴다.
PRINT_ITEM_PURE_SD_SMARTBILL FORM ZFIR0141 L5601-5648 2 순수 SD 빌링(VBRK 전용) 세금계산서의 품목 라인을 최대 4줄로 채우거나, 추가 시트 인쇄 시 품목별 평균 단가를 계산한다(스마트빌용).
PRINT_ITEM_SD_AND_FI_SMARTBILL FORM ZFIR0141 L5657-5781 3 SD 빌링과 FI 전표가 함께 반제된 세금계산서의 품목 라인(MATZEIL1~4)을 채우고 품목별 평균 단가를 계산한다(스마트빌용).
PRINT_ITEM_PURE_FI_SMARTBILL FORM ZFIR0141 L5790-5841 1 순수 FI 전표(BKPF 전용)로 반제된 세금계산서의 첫 품목 라인 MATZEIL1 을 전표 텍스트(SGTXT)와 공급가액·세액으로 채운다(스마트빌용).
FIELDCAT_MAKE FORM ZFIR0141F01 L12-42 0 ALV 필드카탈로그(I_FIELD) 한 컬럼을 파라미터로 받아 추가하는 유틸리티 FORM 으로, ZBYRE 필드는 소문자 허용으로 설정한다.
TRANSMIT_TO_SMARTBILL FORM ZFIR0141F01 L49-55 1 매출 세금계산서를 스마트빌로 전송하는 상위 흐름으로 전송 데이터 생성 → Z_SB_DTI_ISSUE 전송 → 결과 메시지 표시를 순서대로 수행한다.
MAKE_DATA_TO_TRANSMIT FORM ZFIR0141F01 L62-69 1 스마트빌 전송용 헤더·품목·결제·전표번호 데이터를 순서대로 생성하는 PERFORM 디스패치 FORM 이다.
MAKE_ZSB_HEADER FORM ZFIR0141F01 L76-94 1 스마트빌 전송 헤더 테이블 ZSB_HEADER 를 GT_ZSBBSEG 로부터 생성하며 정발행(ZSIGN='S')·매출(AR) 구분을 세팅한다.
CALCULATE_ZNCNT FORM ZFIR0141F01 L101-120 1 세금계산서 공급가액(P_HWBAS)을 12자리 통화 형식으로 편집한 뒤 앞쪽 공백 수를 세어 세금계산서 공란수(ZSB_HEADER-ZNCNT)를 계산한다.
MAKE_ZSB_ITEM FORM ZFIR0141F01 L127-142 1 스마트빌 전송 품목 테이블 ZSB_ITEM 을 전표 정보(GT_ZSBBSEG 첫 행)와 품목 정보(GT_ZSBISSUE)를 합쳐 AR 구분으로 생성한다.
MAKE_ZSB_PAYMENT FORM ZFIR0141F01 L149-171 1 스마트빌 전송 결제정보 테이블 ZSB_PAYMENT 를 세금계산서별로 현금(10)·수표(20)·어음(2AA)·외상(30) 4개 결제수단 코드 행으로 생성한다.
MAKE_ZSB_BELNR FORM ZFIR0141F01 L178-191 1 스마트빌 전송용 전표번호 테이블 ZSB_BELNR 을 GT_ZSBBSEG 로부터 만들고 AR(매출) 구분을 세팅한다.
TRANSMIT_DTI_TO_SB FORM ZFIR0141F01 L197-216 1 전자세금계산서 헤더·품목·결제·전표번호 테이블을 스마트빌 발행 FM Z_SB_DTI_ISSUE 로 전송하고 리턴 코드를 받는다.
DISPLAY_ERROR_MSG FORM ZFIR0141F01 L223-245 1 스마트빌 전송 리턴 코드에 따라 정상 발행·네트워크 장애·통신 에러·데이터 검증 오류 메시지를 표시하고 그 외 코드는 Z_SB_RETURN_MESSAGE 로 메시지를 출력한다.
SAVE_RETURN_CODE_TO_AUSGLOP FORM ZFIR0141F01 L251-269 1 스마트빌 전송 리턴 코드가 성공('Y')이면 SEL_AUSGLOP_ITAB 과 AUSGLOP_ITAB 의 RESULT 필드를 'Y' 로 표시한다.
USER_COMMAND_0100 INPUT MODULE ZFIR0141I01 L9-29 1 화면 0100의 사용자 명령(PAI)을 처리하여 &NT1 시 ALV 그리드(GRID3)의 변경 데이터를 검증한 뒤 화면을 종료하고 EXIT 시 화면을 닫는 플럼빙 모듈이다.
STATUS_0100 OUTPUT MODULE ZFIR0141O01 L9-13 0
ALV_WRITE_0100 OUTPUT MODULE ZFIR0141O01 L19-75 0