<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Devlog</title>
    <link>https://devlog2829.tistory.com/</link>
    <description>찍먹 대마왕</description>
    <language>ko</language>
    <pubDate>Sun, 5 Jul 2026 12:01:53 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>덩이</managingEditor>
    <image>
      <title>Devlog</title>
      <url>https://tistory1.daumcdn.net/tistory/4711156/attach/eea3d5e5ed844549901a1d5b71dcc8a1</url>
      <link>https://devlog2829.tistory.com</link>
    </image>
    <item>
      <title>6주차 보충 자료</title>
      <link>https://devlog2829.tistory.com/164</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Range 변수&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;90&quot; data-start=&quot;56&quot;&gt;여러 값이나 범위를 조건으로 처리하는 내부 테이블 구조&lt;/li&gt;
&lt;li data-end=&quot;150&quot; data-start=&quot;91&quot;&gt;RANGES 키워드로 선언 (예: RANGES: r_matnr FOR mara-matnr.)&lt;/li&gt;
&lt;li data-end=&quot;208&quot; data-start=&quot;151&quot;&gt;주요 필드: SIGN(포함/제외), OPTION(조건 타입), LOW(시작값), HIGH(끝값)&lt;/li&gt;
&lt;li data-end=&quot;233&quot; data-start=&quot;209&quot;&gt;단일값, 범위, 제외 조건 표현 가능&lt;/li&gt;
&lt;li data-end=&quot;256&quot; data-start=&quot;234&quot;&gt;SELECT 문 등 조건절에 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stepwith.tistory.com/entry/SAP-ABAP-%EA%B0%95%EC%A2%8C-24-Range-%EB%B3%80%EC%88%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://stepwith.tistory.com/entry/SAP-ABAP-%EA%B0%95%EC%A2%8C-24-Range-%EB%B3%80%EC%88%98&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1754465317878&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[SAP ABAP 강좌 24] Range 변수&quot; data-og-description=&quot;이번 포스팅에서는 ABAP의 독특한 구문중 하나인 Range 변수에 대하여 다루어 보겠습니다. 잘 알아두면 여러모로 편리한 구문입니다. 보통 웹페이지나 프로그램 입력화면의 Edit box는 단일 입력을 &quot; data-og-host=&quot;stepwith.tistory.com&quot; data-og-source-url=&quot;https://stepwith.tistory.com/entry/SAP-ABAP-%EA%B0%95%EC%A2%8C-24-Range-%EB%B3%80%EC%88%98&quot; data-og-url=&quot;https://stepwith.tistory.com/entry/SAP-ABAP-%EA%B0%95%EC%A2%8C-24-Range-%EB%B3%80%EC%88%98&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/jNrbc/hyZuFuHx2A/a4aH3gCe4JEB8Fb7KoGbi1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/sBWvv/hyZuBMBrmJ/pROsKcP9Bgv02DFAisPgn1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bGDMHu/hyZuJqjY2y/7ZVguOH83DzLQ5eyXhpnBk/img.png?width=1080&amp;amp;height=1080&amp;amp;face=0_0_1080_1080&quot;&gt;&lt;a href=&quot;https://stepwith.tistory.com/entry/SAP-ABAP-%EA%B0%95%EC%A2%8C-24-Range-%EB%B3%80%EC%88%98&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://stepwith.tistory.com/entry/SAP-ABAP-%EA%B0%95%EC%A2%8C-24-Range-%EB%B3%80%EC%88%98&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/jNrbc/hyZuFuHx2A/a4aH3gCe4JEB8Fb7KoGbi1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/sBWvv/hyZuBMBrmJ/pROsKcP9Bgv02DFAisPgn1/img.png?width=800&amp;amp;height=800&amp;amp;face=0_0_800_800,https://scrap.kakaocdn.net/dn/bGDMHu/hyZuJqjY2y/7ZVguOH83DzLQ5eyXhpnBk/img.png?width=1080&amp;amp;height=1080&amp;amp;face=0_0_1080_1080');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[SAP ABAP 강좌 24] Range 변수&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅에서는 ABAP의 독특한 구문중 하나인 Range 변수에 대하여 다루어 보겠습니다. 잘 알아두면 여러모로 편리한 구문입니다. 보통 웹페이지나 프로그램 입력화면의 Edit box는 단일 입력을&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;stepwith.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/164</guid>
      <comments>https://devlog2829.tistory.com/164#entry164comment</comments>
      <pubDate>Wed, 6 Aug 2025 16:28:35 +0900</pubDate>
    </item>
    <item>
      <title>4주차 보충 자료</title>
      <link>https://devlog2829.tistory.com/163</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;1. se37에서 사용자 함수 만들기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;324&quot; data-start=&quot;100&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;152&quot; data-start=&quot;100&quot;&gt;Function은 &lt;b&gt;Subroutine의 확장 개념&lt;/b&gt;으로, 모듈화와 재사용에 유리함&lt;/li&gt;
&lt;li data-end=&quot;202&quot; data-start=&quot;153&quot;&gt;&lt;b&gt;SE37&lt;/b&gt;에서 Function Group과 Function Module 생성&lt;/li&gt;
&lt;li data-end=&quot;265&quot; data-start=&quot;203&quot;&gt;&lt;b&gt;Import/Export/Tables/Exceptions&lt;/b&gt; 등 파라미터 정의로 데이터 주고받기 가능&lt;/li&gt;
&lt;li data-end=&quot;296&quot; data-start=&quot;266&quot;&gt;&lt;b&gt;예외 처리&lt;/b&gt;와 &lt;b&gt;독립적인 테스트&lt;/b&gt; 지원&lt;/li&gt;
&lt;li data-end=&quot;324&quot; data-start=&quot;297&quot;&gt;CALL FUNCTION으로 호출하여 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;407&quot; data-start=&quot;326&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/softwon1/221866868663&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://m.blog.naver.com/softwon1/221866868663&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1754463820351&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;[ABAP 기초] Function 만들기&quot; data-og-description=&quot;Function은 Subroutine의 확장 개념으로 기능별로 모듈화하고 재사용이 가능합니다. Subroutine의 형식...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://m.blog.naver.com/softwon1/221866868663&quot; data-og-url=&quot;https://blog.naver.com/softwon1/221866868663&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/tJBn7/hyZrnPL1aB/27XaPhB1DYNOSWkFEw3tt1/img.png?width=625&amp;amp;height=279&amp;amp;face=0_0_625_279&quot;&gt;&lt;a href=&quot;https://m.blog.naver.com/softwon1/221866868663&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://m.blog.naver.com/softwon1/221866868663&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/tJBn7/hyZrnPL1aB/27XaPhB1DYNOSWkFEw3tt1/img.png?width=625&amp;amp;height=279&amp;amp;face=0_0_625_279');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;[ABAP 기초] Function 만들기&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Function은 Subroutine의 확장 개념으로 기능별로 모듈화하고 재사용이 가능합니다. Subroutine의 형식...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.. ALV 서브토탈&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;199&quot; data-start=&quot;181&quot;&gt;ALV 서브토탈 관련 변수 선언
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;295&quot; data-start=&quot;200&quot;&gt;ALV 표출을 위한 필드카테고리(gt_fieldcat), 레이아웃(gs_layout), 정렬(gt_sort), 이벤트(gt_events) 등 다양한 변수 선언 필요&lt;/li&gt;
&lt;li data-end=&quot;353&quot; data-start=&quot;296&quot;&gt;gt_fieldcat_ln-do_sum = 'X' 설정으로 특정 필드에 합계 기능 부여 가능&lt;/li&gt;
&lt;li data-end=&quot;405&quot; data-start=&quot;354&quot;&gt;gs_layout-subtotals_text = '소계' 등으로 소계 텍스트 지정&lt;/li&gt;
&lt;li data-end=&quot;454&quot; data-start=&quot;406&quot;&gt;gs_layout-no_subtotals 플래그로 소계 표시 여부 조절 가능&lt;/li&gt;
&lt;li data-end=&quot;503&quot; data-start=&quot;455&quot;&gt;정렬 필드(gt_sort)에 그룹핑할 필드 지정하여 그룹별 합계(서브토탈) 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;524&quot; data-start=&quot;505&quot;&gt;서브토탈 구현 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;558&quot; data-start=&quot;525&quot;&gt;합계가 필요한 필드에 do_sum = 'X' 지정&lt;/li&gt;
&lt;li data-end=&quot;595&quot; data-start=&quot;559&quot;&gt;gt_sort에 그룹핑할 필드 설정 (예: MATNR)&lt;/li&gt;
&lt;li data-end=&quot;659&quot; data-start=&quot;596&quot;&gt;레이아웃에서 subtotals_text 지정 및 no_subtotals = ' '로 서브토탈 활성화&lt;/li&gt;
&lt;li data-end=&quot;716&quot; data-start=&quot;660&quot;&gt;REUSE_ALV_GRID_DISPLAY 호출 시 관련 변수와 함께 넘기면 서브토탈 표시됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://blog.naver.com/whiteme7/110139185317&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://blog.naver.com/whiteme7/110139185317&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1754464707593&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;REPORT 필드카탈로그와 레이아웃 속성값&quot; data-og-description=&quot;*----------------------------------------------------------------------* * [ALV] ALV 용 변수 ...&quot; data-og-host=&quot;blog.naver.com&quot; data-og-source-url=&quot;https://blog.naver.com/whiteme7/110139185317&quot; data-og-url=&quot;https://blog.naver.com/whiteme7/110139185317&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dQi2A4/hyZuFVLbWY/jjzwipro6uqek5D5kjvDF1/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270&quot;&gt;&lt;a href=&quot;https://blog.naver.com/whiteme7/110139185317&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://blog.naver.com/whiteme7/110139185317&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dQi2A4/hyZuFVLbWY/jjzwipro6uqek5D5kjvDF1/img.png?width=270&amp;amp;height=270&amp;amp;face=0_0_270_270');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;REPORT 필드카탈로그와 레이아웃 속성값&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;*----------------------------------------------------------------------* * [ALV] ALV 용 변수 ...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;blog.naver.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://community.sap.com/t5/application-development-and-automation-discussions/subtotal-in-alv-grid-display/m-p/3177154&quot;&gt;https://community.sap.com/t5/application-development-and-automation-discussions/subtotal-in-alv-grid-display/m-p/3177154&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1754464729638&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;Subtotal in Alv Grid Display&quot; data-og-description=&quot;hi all, i am creating a report using alv grid display. In the output i sort a column and want to do subtotal for values corresponding to it in another column.if i separately click on sum and then again subtotal i get it. but i want the format with subtotal&quot; data-og-host=&quot;community.sap.com&quot; data-og-source-url=&quot;https://community.sap.com/t5/application-development-and-automation-discussions/subtotal-in-alv-grid-display/m-p/3177154&quot; data-og-url=&quot;https://community.sap.com/t5/application-development-and-automation-discussions/subtotal-in-alv-grid-display/m-p/3177154#M756127&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/JCjfN/hyZrw0d7e4/T1zyF06W08GLAk5RSZpDrk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200&quot;&gt;&lt;a href=&quot;https://community.sap.com/t5/application-development-and-automation-discussions/subtotal-in-alv-grid-display/m-p/3177154&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://community.sap.com/t5/application-development-and-automation-discussions/subtotal-in-alv-grid-display/m-p/3177154&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/JCjfN/hyZrw0d7e4/T1zyF06W08GLAk5RSZpDrk/img.png?width=200&amp;amp;height=200&amp;amp;face=0_0_200_200');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Subtotal in Alv Grid Display&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;hi all, i am creating a report using alv grid display. In the output i sort a column and want to do subtotal for values corresponding to it in another column.if i separately click on sum and then again subtotal i get it. but i want the format with subtotal&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;community.sap.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/163</guid>
      <comments>https://devlog2829.tistory.com/163#entry163comment</comments>
      <pubDate>Wed, 6 Aug 2025 16:21:50 +0900</pubDate>
    </item>
    <item>
      <title>[8주차 과제] 항공사 예약 프로그램(2)</title>
      <link>https://devlog2829.tistory.com/162</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;목표: 항공사 예약 프로그램 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SBOOK 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SCARR 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SCUCTOM 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 조건 및 필드
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 필드
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SBOOK 테이블: CARRID, CONNIDE, FLDATE, BOOKID, CUSTOMID, LOCCURAM, LOCCURKEY, ORDER_DATE, CANCELLED&lt;/li&gt;
&lt;li&gt;SCARR 테이블: SCARRNAME&lt;/li&gt;
&lt;li&gt;SCUCTOM 테이블: NAME, TELEPHONE, CUSTTYPE&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;검색 조건
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파라미터: CARRID(필수 입력/초기값: 'AA'), CONNID(필수 입력/초기값: '0017'), FLDATE(필수 입력/초기값: '20171219')&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;셀렉트 옵션: CUSTOMID&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;라디오버튼 그룹(rad1): r1(All Booking), r2(Valid Booking), r3(Cancelled Booking)
&lt;ul style=&quot;list-style-type: disc; color: #353638;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;라디오버튼 조건절:&amp;nbsp;&lt;br /&gt;IF&amp;nbsp;r1&amp;nbsp;=&amp;nbsp;'X'.&lt;br /&gt;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;CANCELLED&amp;nbsp;=&amp;nbsp;''&lt;br /&gt;ELSEIF&amp;nbsp;r2&amp;nbsp;=&amp;nbsp;'X'.&lt;br /&gt;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;CANCELLED&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;'X'.&lt;br /&gt;ELSEIF&amp;nbsp;r3&amp;nbsp;=&amp;nbsp;'X'.&lt;br /&gt;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;CANCELLED&amp;nbsp;=&amp;nbsp;'X'.&lt;br /&gt;ENDIF.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ALV 필드 옵션
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;고정 열 처리(key = 'X'): CARRID, CONNID, FLDATE, BOOKID&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;하이퍼링크 처리(hotspot = 'X'): CUSTOMID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;조인 조건
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CARRNAME: SBOOK-CARRID = SCARR-CARRID 조건으로 INNER JOIN&lt;/li&gt;
&lt;li&gt;NAME, TELEPHONE, CUSTTYPE: SBOOK-CUSTOMID = SCUSTOM-ID 조건으로 INNER JOIN&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 코드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1753862829196&quot; class=&quot;vbnet&quot; data-ke-language=&quot;vbnet&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*&amp;amp;---------------------------------------------------------------------*

*&amp;amp; Report Z8WEEK_ASSN

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;

*&amp;amp;---------------------------------------------------------------------*

REPORT Z8WEEK_ASSN.

​

TABLES: sbook.

​

TYPE-POOLS: slis.

​

*Data Declaration

*----------------

TYPES: BEGIN OF t_sbook,

  carrid     TYPE sbook-carrid,

  carrname   TYPE scarr-carrname,

  connid     TYPE sbook-connid,

  fldate     TYPE sbook-fldate,

  bookid     TYPE sbook-bookid,

  customid   TYPE sbook-customid,

  name       TYPE scustom-name,

  telephone  TYPE scustom-telephone,

  custtype   TYPE scustom-custtype,

  loccuram   TYPE sbook-loccuram,

  loccurkey  TYPE sbook-loccurkey,

  order_date TYPE sbook-order_date,

  cancelled TYPE sbook-cancelled,

END of t_sbook.

​

DATA: it_sbook TYPE STANDARD TABLE OF t_sbook,

      wa_sbook TYPE t_sbook.

​

*ALV data declarations

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,

      gd_tab_group TYPE slis_t_sp_group_alv,

      gd_layout    TYPE slis_layout_alv,

      gd_repid     LIKE sy-repid.

​

DATA : t TYPE slis_t_sp_group_alv.

​

*SELECT OPTION

SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001.

  PARAMETERS p_carrid TYPE sbook-carrid OBLIGATORY DEFAULT 'AA'.

  PARAMETERS p_connid TYPE sbook-connid OBLIGATORY DEFAULT '0017'.

  PARAMETERS p_fldate TYPE sbook-fldate OBLIGATORY DEFAULT '20171219'.

SELECTION-SCREEN END OF BLOCK part1.

​

SELECTION-SCREEN BEGIN OF BLOCK part2 WITH FRAME TITLE text-002.

  SELECT-OPTIONS s_cid  FOR sbook-customid.

    PARAMETERS: r1 RADIOBUTTON GROUP rad1 DEFAULT 'X',

                r2 RADIOBUTTON GROUP rad1,

                r3 RADIOBUTTON GROUP rad1.

SELECTION-SCREEN END OF BLOCK part2.

​

START-OF-SELECTION.

  PERFORM data_retrieval.

  PERFORM build_fieldcatalog.

  PERFORM build_layout.

  PERFORM display_alv_report.

​

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;      Form  BUILD_FIELDCATALOG

*&amp;amp;---------------------------------------------------------------------*

*       Build Fieldcatalog for ALV Report

*----------------------------------------------------------------------*

FORM build_fieldcatalog.

​

  fieldcatalog-fieldname   = 'CARRID'.

  fieldcatalog-seltext_m   = 'Airline Code'.

  fieldcatalog-col_pos     = 0.

  fieldcatalog-key       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'CARRNAME'.

  fieldcatalog-seltext_m   = 'Airline name'.

  fieldcatalog-col_pos     = 1.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'CONNIDE'.

  fieldcatalog-seltext_m   = 'Flight Connection Number'.

  fieldcatalog-col_pos     = 2.

  fieldcatalog-key       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'FLDATE'.

  fieldcatalog-seltext_m   = 'Flight date'.

  fieldcatalog-col_pos     = 3.

  fieldcatalog-key       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'BOOKID'.

  fieldcatalog-seltext_m   = 'Booking number'.

  fieldcatalog-col_pos     = 4.

  fieldcatalog-key       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'CUSTOMID'.

  fieldcatalog-seltext_m   = 'Customer Number'.

  fieldcatalog-col_pos     = 5.

  fieldcatalog-hotspot       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'NAME'.

  fieldcatalog-seltext_m   = 'Customer name'.

  fieldcatalog-col_pos     = 6.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'TELEPHONE'.

  fieldcatalog-seltext_m   = 'Telephone number of flight customer'.

  fieldcatalog-col_pos     = 7.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'CUSTTYPE'.

  fieldcatalog-seltext_m   = 'Customer type'.

  fieldcatalog-col_pos     = 8.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'LOCCURAM'.

  fieldcatalog-seltext_m   = 'Price of booking in local currency of airline'.

  fieldcatalog-col_pos     = 9.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'LOCCURKEY'.

  fieldcatalog-seltext_m   = 'Local currency of airline'.

  fieldcatalog-col_pos     = 10.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'ORDER_DATE'.

  fieldcatalog-seltext_m   = 'Booking Date'.

  fieldcatalog-col_pos     = 11.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'CANCELLED'.

  fieldcatalog-seltext_m   = 'Cancelation flag'.

  fieldcatalog-col_pos     = 12.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

ENDFORM.                    &quot; BUILD_FIELDCATALOG

​

​

​

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;      Form  BUILD_LAYOUT

*&amp;amp;---------------------------------------------------------------------*

*       Build layout for ALV grid report

*----------------------------------------------------------------------*

FORM build_layout.

​

  gd_layout-no_input          = 'X'.

  gd_layout-colwidth_optimize = 'X'.

  gd_layout-zebra = 'X'.

*  gd_layout-info_fieldname =      'LINE_COLOR'.

*  gd_layout-def_status = 'A'.

​

ENDFORM.                    &quot; BUILD_LAYOUT

​

​

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;      Form  DISPLAY_ALV_REPORT

*&amp;amp;---------------------------------------------------------------------*

*       Display report using ALV grid

*----------------------------------------------------------------------*

FORM display_alv_report.

  gd_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program = gd_repid

      is_layout          = gd_layout

      it_fieldcat        = fieldcatalog[]

      i_save             = 'X'

    TABLES

      t_outtab           = it_sbook

    EXCEPTIONS

      program_error      = 1

      OTHERS             = 2.

  IF sy-subrc &amp;lt;&amp;gt; 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.                    &quot; DISPLAY_ALV_REPORT

​

​

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;      Form  DATA_RETRIEVAL

*&amp;amp;---------------------------------------------------------------------*

*       Retrieve data form EKPO table and populate itab it_ekko

*----------------------------------------------------------------------*

FORM data_retrieval.

  DATA: ld_color(1) TYPE c,

        gs_where(20).

​

  IF r1 = 'X'.

    gs_where = ''.

  ELSEIF r2 = 'X'.

    gs_where = `CANCELLED &amp;lt;&amp;gt; 'X'`.

  ELSEIF r3 = 'X'.

    gs_where = `CANCELLED = 'X'`.

  ENDIF.

​

  SELECT

    sb~carrid

    sc~carrname

    sb~connid

    sb~fldate

    sb~bookid

    sb~customid

    cu~name

    cu~telephone

    cu~custtype

    sb~loccuram

    sb~loccurkey

    sb~order_date

    sb~cancelled

  INTO TABLE it_sbook

  FROM sbook AS sb

    INNER JOIN scarr AS sc ON sb~carrid = sc~carrid

    INNER JOIN scustom AS cu ON sb~customid = cu~id

  WHERE sb~carrid = p_carrid AND sb~connid = p_connid AND sb~fldate = p_fldate

  AND (gs_where).

​

ENDFORM.                    &quot; DATA_RETRIEVAL&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 결과&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cJkVCo/btsPDoqdlvW/4oCCrH8S6qgwzoJgBsFBq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cJkVCo/btsPDoqdlvW/4oCCrH8S6qgwzoJgBsFBq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cJkVCo/btsPDoqdlvW/4oCCrH8S6qgwzoJgBsFBq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcJkVCo%2FbtsPDoqdlvW%2F4oCCrH8S6qgwzoJgBsFBq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caRVa0/btsPDpP86Gw/HNIq8rUsMKDCR198EbCm41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caRVa0/btsPDpP86Gw/HNIq8rUsMKDCR198EbCm41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caRVa0/btsPDpP86Gw/HNIq8rUsMKDCR198EbCm41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaRVa0%2FbtsPDpP86Gw%2FHNIq8rUsMKDCR198EbCm41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/162</guid>
      <comments>https://devlog2829.tistory.com/162#entry162comment</comments>
      <pubDate>Wed, 30 Jul 2025 21:16:36 +0900</pubDate>
    </item>
    <item>
      <title>[7주차 과제] 항공사 예약 프로그램(1)</title>
      <link>https://devlog2829.tistory.com/161</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;목표: 항공사 예약 프로그램 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SBOOK 테이블&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 조건 및 필드
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 필드
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CARRID, CONNID, FLDATE, BOOKID, CUSTOMID, LOCCURAM, LOCCURKEY, ORDER_DATE, CANCELLED&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;검색 조건
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파라미터: CARRID(필수 입력/초기값: 'AA'), CONNID(필수 입력/초기값: '0017'), FLDATE(필수 입력/초기값: '20171219')&lt;/li&gt;
&lt;li&gt;셀렉트 옵션: CUSTOMID&lt;/li&gt;
&lt;li&gt;라디오버튼 그룹(rad1): r1(All Booking), r2(Valid Booking), r3(Cancelled Booking)
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;라디오버튼 조건절:&amp;nbsp;&lt;br /&gt;IF&amp;nbsp;r1&amp;nbsp;=&amp;nbsp;'X'.&lt;br /&gt;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;CANCELLED&amp;nbsp;=&amp;nbsp;''&lt;br /&gt;ELSEIF&amp;nbsp;r2&amp;nbsp;=&amp;nbsp;'X'.&lt;br /&gt;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;CANCELLED&amp;nbsp;&amp;lt;&amp;gt;&amp;nbsp;'X'.&lt;br /&gt;ELSEIF&amp;nbsp;r3&amp;nbsp;=&amp;nbsp;'X'.&lt;br /&gt;&amp;nbsp;&amp;nbsp;AND&amp;nbsp;CANCELLED&amp;nbsp;=&amp;nbsp;'X'.&lt;br /&gt;ENDIF.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;ALV 필드 옵션
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;고정 열 처리(key = 'X'): CARRID, CONNID, FLDATE, BOOKID&lt;/li&gt;
&lt;li&gt;하이퍼링크 처리(hotspot = 'X'): CUSTOMID&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 코드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1753862829196&quot; class=&quot;vbnet&quot; data-ke-language=&quot;vbnet&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*&amp;amp;---------------------------------------------------------------------*

*&amp;amp; Report Z7WEEK_ASSN

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;

*&amp;amp;---------------------------------------------------------------------*

REPORT Z7WEEK_ASSN.

​

TABLES: sbook.

​

TYPE-POOLS: slis.

​

*Data Declaration

*----------------

TYPES: BEGIN OF t_sbook,

  carrid     TYPE sbook-carrid,

  connid     TYPE sbook-connid,

  fldate     TYPE sbook-fldate,

  bookid     TYPE sbook-bookid,

  customid   TYPE sbook-customid,

  loccuram   TYPE sbook-loccuram,

  loccurkey  TYPE sbook-loccurkey,

  order_date TYPE sbook-order_date,

  cancelled TYPE sbook-cancelled,

END of t_sbook.

​

DATA: it_sbook TYPE STANDARD TABLE OF t_sbook,

      wa_sbook TYPE t_sbook.

​

*ALV data declarations

DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,

      gd_tab_group TYPE slis_t_sp_group_alv,

      gd_layout    TYPE slis_layout_alv,

      gd_repid     LIKE sy-repid.

​

DATA : t TYPE slis_t_sp_group_alv.

​

*SELECT OPTION

SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001.

  PARAMETERS p_carrid TYPE sbook-carrid OBLIGATORY DEFAULT 'AA'.

  PARAMETERS p_connid TYPE sbook-connid OBLIGATORY DEFAULT '0017'.

  PARAMETERS p_fldate TYPE sbook-fldate OBLIGATORY DEFAULT '20171219'.

SELECTION-SCREEN END OF BLOCK part1.

​

SELECTION-SCREEN BEGIN OF BLOCK part2 WITH FRAME TITLE text-002.

  SELECT-OPTIONS s_cid  FOR sbook-customid.

    PARAMETERS: r1 RADIOBUTTON GROUP rad1 DEFAULT 'X',

                r2 RADIOBUTTON GROUP rad1,

                r3 RADIOBUTTON GROUP rad1.

SELECTION-SCREEN END OF BLOCK part2.

​

START-OF-SELECTION.

​

  PERFORM data_retrieval.

  PERFORM build_fieldcatalog.

  PERFORM build_layout.

  PERFORM display_alv_report.

​

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;      Form  BUILD_FIELDCATALOG

*&amp;amp;---------------------------------------------------------------------*

*       Build Fieldcatalog for ALV Report

*----------------------------------------------------------------------*

FORM build_fieldcatalog.

​

  fieldcatalog-fieldname   = 'CARRID'.

  fieldcatalog-seltext_m   = 'Airline Code'.

  fieldcatalog-col_pos     = 0.

  fieldcatalog-key       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'CONNIDE'.

  fieldcatalog-seltext_m   = 'Flight Connection Number'.

  fieldcatalog-col_pos     = 1.

  fieldcatalog-key       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'FLDATE'.

  fieldcatalog-seltext_m   = 'Flight date'.

  fieldcatalog-col_pos     = 2.

  fieldcatalog-key       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'BOOKID'.

  fieldcatalog-seltext_m   = 'Booking number'.

  fieldcatalog-col_pos     = 3.

  fieldcatalog-key       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'CUSTOMID'.

  fieldcatalog-seltext_m   = 'Customer Number'.

  fieldcatalog-col_pos     = 4.

  fieldcatalog-hotspot       = 'X'.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'LOCCURAM'.

  fieldcatalog-seltext_m   = 'Price of booking in local currency of airline'.

  fieldcatalog-col_pos     = 5.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'LOCCURKEY'.

  fieldcatalog-seltext_m   = 'Local currency of airline'.

  fieldcatalog-col_pos     = 6.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'ORDER_DATE'.

  fieldcatalog-seltext_m   = 'Booking Date'.

  fieldcatalog-col_pos     = 7.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

  fieldcatalog-fieldname   = 'CANCELLED'.

  fieldcatalog-seltext_m   = 'Cancelation flag'.

  fieldcatalog-col_pos     = 8.

  APPEND fieldcatalog TO fieldcatalog.

  CLEAR  fieldcatalog.

​

ENDFORM.                    &quot; BUILD_FIELDCATALOG

​

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;      Form  BUILD_LAYOUT

*&amp;amp;---------------------------------------------------------------------*

*       Build layout for ALV grid report

*----------------------------------------------------------------------*

FORM build_layout.

​

  gd_layout-no_input          = 'X'.

  gd_layout-colwidth_optimize = 'X'.

  gd_layout-zebra = 'X'.

*  gd_layout-info_fieldname =      'LINE_COLOR'.

*  gd_layout-def_status = 'A'.

​

ENDFORM.                    &quot; BUILD_LAYOUT

​

​

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;      Form  DISPLAY_ALV_REPORT

*&amp;amp;---------------------------------------------------------------------*

*       Display report using ALV grid

*----------------------------------------------------------------------*

FORM display_alv_report.

  gd_repid = sy-repid.

  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'

    EXPORTING

      i_callback_program = gd_repid

      is_layout          = gd_layout

      it_fieldcat        = fieldcatalog[]

      i_save             = 'X'

    TABLES

      t_outtab           = it_sbook

    EXCEPTIONS

      program_error      = 1

      OTHERS             = 2.

  IF sy-subrc &amp;lt;&amp;gt; 0.

* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

  ENDIF.

ENDFORM.                    &quot; DISPLAY_ALV_REPORT

​

​

*&amp;amp;---------------------------------------------------------------------*

*&amp;amp;      Form  DATA_RETRIEVAL

*&amp;amp;---------------------------------------------------------------------*

*       Retrieve data form EKPO table and populate itab it_ekko

*----------------------------------------------------------------------*

FORM data_retrieval.

  DATA: ld_color(1) TYPE c,

        gs_where(20).

​

  IF r1 = 'X'.

    gs_where = ''.

  ELSEIF r2 = 'X'.

    gs_where = `CANCELLED &amp;lt;&amp;gt; 'X'`.

  ELSEIF r3 = 'X'.

    gs_where = `CANCELLED = 'X'`.

  ENDIF.

​

  SELECT carrid connid fldate bookid customid loccuram loccurkey order_date cancelled

  INTO TABLE it_sbook

  FROM sbook

  WHERE carrid = p_carrid AND connid = p_connid AND fldate = p_fldate

  AND customid IN s_cid

  AND (gs_where).

​

ENDFORM.                    &quot; DATA_RETRIEVAL&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 결과&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bI50k0/btsPEpWe5Ns/CLbiXrWcljFBmiat3ByzKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bI50k0/btsPEpWe5Ns/CLbiXrWcljFBmiat3ByzKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bI50k0/btsPEpWe5Ns/CLbiXrWcljFBmiat3ByzKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbI50k0%2FbtsPEpWe5Ns%2FCLbiXrWcljFBmiat3ByzKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SWelZ/btsPDoqdkLL/6GHjuGFZY6kWx4bAfYwxc0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SWelZ/btsPDoqdkLL/6GHjuGFZY6kWx4bAfYwxc0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SWelZ/btsPDoqdkLL/6GHjuGFZY6kWx4bAfYwxc0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSWelZ%2FbtsPDoqdkLL%2F6GHjuGFZY6kWx4bAfYwxc0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/161</guid>
      <comments>https://devlog2829.tistory.com/161#entry161comment</comments>
      <pubDate>Wed, 30 Jul 2025 21:09:21 +0900</pubDate>
    </item>
    <item>
      <title>[6주차 과제] 검색 화면 만들기</title>
      <link>https://devlog2829.tistory.com/160</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;목표: SPFLI 테이블을 활용하여 검색화면 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SPFLI... 테이블 나중에 첨부하기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 조건 및 필드
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;SELECT 옵션: CARRID, CONNID, CITYFROM, CITYTO&lt;/li&gt;
&lt;li&gt;PARAMETERS: NUM으로 갯수 제한&lt;/li&gt;
&lt;li&gt;DEPTIME, ARRTIME 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 코드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1753862829196&quot; class=&quot;vbnet&quot; data-ke-language=&quot;vbnet&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report Z6WEEK_ASSN
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
REPORT Z6WEEK_ASSN.
TABLES:     spfli.
TYPE-POOLS: slis.                                 &quot;ALV Declarations
*Data Declaration
*----------------
TYPES: BEGIN OF t_spfli,
  carrid   TYPE spfli-carrid,
  connid   TYPE spfli-connid,
  cityfrom TYPE spfli-cityfrom,
  cityto   TYPE spfli-cityto,
  deptime  TYPE spfli-deptime,
  arrtime  TYPE spfli-arrtime,
 END OF t_spfli.

DATA: it_spfli TYPE STANDARD TABLE OF t_spfli INITIAL SIZE 0,
      wa_spfli TYPE t_spfli.

*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group TYPE slis_t_sp_group_alv,
      gd_layout    TYPE slis_layout_alv,
      gd_repid     LIKE sy-repid.
DATA : t TYPE slis_t_sp_group_alv .
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE text-001.
SELECT-OPTIONS s_carrid FOR spfli-carrid.
SELECT-OPTIONS s_connid FOR spfli-connid.
SELECT-OPTIONS s_cfrom FOR spfli-cityfrom.
SELECT-OPTIONS s_cto FOR spfli-cityto.
SELECTION-SCREEN SKIP.
PARAMETERS NUM TYPE I.
SELECTION-SCREEN END OF BLOCK part1.
INITIALIZATION.
START-OF-SELECTION.
  PERFORM data_retrieval.
  PERFORM build_fieldcatalog.
  PERFORM build_layout.
  PERFORM build_sort.
  PERFORM display_alv_report.
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FIELDCATALOG
*&amp;amp;---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.
  fieldcatalog-fieldname   = 'CARRID'.
  fieldcatalog-seltext_m   = 'Airline Code'.
  fieldcatalog-col_pos     = 0.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_m   = 'Flight Connection Number'.
  fieldcatalog-col_pos     = 1.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CITYFROM'.
  fieldcatalog-seltext_m   = 'Departure city'.
  fieldcatalog-col_pos     = 2.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CITYTO'.
  fieldcatalog-seltext_m   = 'Arrival city'.
  fieldcatalog-col_pos     = 3.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'DEPTIME'.
  fieldcatalog-seltext_m   = 'Departure time'.
  fieldcatalog-col_pos     = 4.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'ARRTIME'.
  fieldcatalog-seltext_m   = 'Arrival time'.
  fieldcatalog-col_pos     = 5.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.
ENDFORM.                    &quot; BUILD_FIELDCATALOG
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.
  gd_layout-no_input          = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-zebra = 'X'.
ENDFORM.                    &quot; BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_ALV_REPORT
*&amp;amp;---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = gd_repid
      is_layout          = gd_layout
      it_fieldcat        = fieldcatalog[]
      i_save             = 'X'
    TABLES
      t_outtab           = it_spfli
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc &amp;lt;&amp;gt; 0.
  ENDIF.
ENDFORM.                    &quot; DISPLAY_ALV_REPORT
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DATA_RETRIEVAL
*&amp;amp;---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
  DATA: ld_color(1) TYPE c.

  SELECT carrid connid cityfrom cityto deptime arrtime
  UP TO NUM ROWS
    FROM spfli
    INTO TABLE it_spfli
    WHERE carrid IN s_carrid
        AND connid IN s_connid
        AND cityfrom IN s_cfrom
        AND cityto IN s_cto.
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Form BUILD_SORT
*&amp;amp;---------------------------------------------------------------------*
FORM build_sort.
ENDFORM.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 결과&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8m1Yk/btsPDF6kCGC/bv6NoeaJO6VwbRHMRSPfdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8m1Yk/btsPDF6kCGC/bv6NoeaJO6VwbRHMRSPfdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8m1Yk/btsPDF6kCGC/bv6NoeaJO6VwbRHMRSPfdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8m1Yk%2FbtsPDF6kCGC%2Fbv6NoeaJO6VwbRHMRSPfdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1306&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AXIPQ/btsPCI3LYzY/Er2fJsNegShTmc31ZWsRv1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AXIPQ/btsPCI3LYzY/Er2fJsNegShTmc31ZWsRv1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AXIPQ/btsPCI3LYzY/Er2fJsNegShTmc31ZWsRv1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAXIPQ%2FbtsPCI3LYzY%2FEr2fJsNegShTmc31ZWsRv1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;1306&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/160</guid>
      <comments>https://devlog2829.tistory.com/160#entry160comment</comments>
      <pubDate>Wed, 30 Jul 2025 20:52:25 +0900</pubDate>
    </item>
    <item>
      <title>[5주차 과제] 도움말 및 검색창 출력</title>
      <link>https://devlog2829.tistory.com/159</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;목표: SBOOK 테이블로 검색창 만들기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SBOOK 테이블&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 조건 및 필드
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PARAMETERS: 출력시 어떤 필드에 도움말이 나오는지 확인&lt;/li&gt;
&lt;li&gt;LISTBOX: 출력시 어떤 필드에 리스트가 나오는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 코드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1753862829196&quot; class=&quot;vbnet&quot; data-ke-language=&quot;vbnet&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report Z5WEEK_ASSN
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
REPORT Z5WEEK_ASSN.

SELECTION-SCREEN BEGIN OF BLOCK part1 WITH FRAME TITLE para.
PARAMETERS p01 TYPE sbook-mandt.
PARAMETERS p02 TYPE sbook-carrid.
PARAMETERS p03 TYPE sbook-connid.
PARAMETERS p04 TYPE sbook-fldate.
PARAMETERS p05 TYPE sbook-bookid.
PARAMETERS p06 TYPE sbook-customid.
PARAMETERS p07 TYPE sbook-custtype.
PARAMETERS p08 TYPE sbook-smoker.
PARAMETERS p09 TYPE sbook-luggweight.
PARAMETERS p10 TYPE sbook-wunit.
PARAMETERS p11 TYPE sbook-invoice.
PARAMETERS p12 TYPE sbook-class.
PARAMETERS p13 TYPE sbook-forcuram.
PARAMETERS p14 TYPE sbook-forcurkey.
PARAMETERS p15 TYPE sbook-loccuram.
PARAMETERS p16 TYPE sbook-loccurkey.
PARAMETERS p17 TYPE sbook-order_date.
PARAMETERS p18 TYPE sbook-counter.
PARAMETERS p19 TYPE sbook-agencynum.
PARAMETERS p20 TYPE sbook-cancelled.
PARAMETERS p21 TYPE sbook-reserved.
PARAMETERS p22 TYPE sbook-passname.
PARAMETERS p23 TYPE sbook-passform.
PARAMETERS p24 TYPE sbook-passbirth.
SELECTION-SCREEN END OF BLOCK part1.

SELECTION-SCREEN BEGIN OF BLOCK part2 WITH FRAME TITLE list.
PARAMETERS l01 TYPE sbook-mandt AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l02 TYPE sbook-carrid AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l03 TYPE sbook-connid AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l04 TYPE sbook-fldate AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l05 TYPE sbook-bookid AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l06 TYPE sbook-customid AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l07 TYPE sbook-custtype AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l08 TYPE sbook-smoker AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l09 TYPE sbook-luggweight AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l10 TYPE sbook-wunit AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l11 TYPE sbook-invoice AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l12 TYPE sbook-class AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l13 TYPE sbook-forcuram AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l14 TYPE sbook-forcurkey AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l15 TYPE sbook-loccuram AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l16 TYPE sbook-loccurkey AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l17 TYPE sbook-order_date AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l18 TYPE sbook-counter AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l19 TYPE sbook-agencynum AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l20 TYPE sbook-cancelled AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l21 TYPE sbook-reserved AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l22 TYPE sbook-passname AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l23 TYPE sbook-passform AS LISTBOX VISIBLE LENGTH 20.
PARAMETERS l24 TYPE sbook-passbirth AS LISTBOX VISIBLE LENGTH 20.
SELECTION-SCREEN END OF BLOCK part2.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 결과&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mx4ow/btsPCK8owFF/0xtCKUFnLkAG6P1H45iBgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mx4ow/btsPCK8owFF/0xtCKUFnLkAG6P1H45iBgk/img.png&quot; data-alt=&quot;PARAMETERS 출력 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mx4ow/btsPCK8owFF/0xtCKUFnLkAG6P1H45iBgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmx4ow%2FbtsPCK8owFF%2F0xtCKUFnLkAG6P1H45iBgk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;1211&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1211&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;PARAMETERS 출력 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1187&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkFNUG/btsPELrdvri/vzhSFeeNwICjFP0nTYBz10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkFNUG/btsPELrdvri/vzhSFeeNwICjFP0nTYBz10/img.png&quot; data-alt=&quot;LISTBOX 출력 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkFNUG/btsPELrdvri/vzhSFeeNwICjFP0nTYBz10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkFNUG%2FbtsPELrdvri%2FvzhSFeeNwICjFP0nTYBz10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;1187&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1187&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;LISTBOX 출력 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내용 정리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;PARAMETERS
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;p08, p09, p11, p13, p15, p20, p21, p22, p23: 도움말 안나옴&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;LISTBOX
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;l02, l07, l08, l11, l12, l14, l20, l21: 리스트 출력됨&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/159</guid>
      <comments>https://devlog2829.tistory.com/159#entry159comment</comments>
      <pubDate>Wed, 30 Jul 2025 20:47:13 +0900</pubDate>
    </item>
    <item>
      <title>[4주차 서브과제] 레이아웃 옵션 및 ALV 출력</title>
      <link>https://devlog2829.tistory.com/157</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;목표: &lt;span style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot;&gt;특정 출력 필드를 포함한 ALV 출력 (SQL 조건 및 옵션/정렬 조건 포함)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;SBOOK 테이블... 사진 어디갔지 나중에 수정하기&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 필드:&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CARRID&lt;/li&gt;
&lt;li&gt;CONNID&lt;/li&gt;
&lt;li&gt;LOCCURAM: do_sum 옵션&lt;/li&gt;
&lt;li&gt;LOCCURKEY&lt;/li&gt;
&lt;li&gt;SQL 조건: UP TO 2000 ROWS&amp;nbsp;&lt;/li&gt;
&lt;li&gt;레이아웃 옵션 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;totals_only&lt;/li&gt;
&lt;li&gt;totals_before_items&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;구현 코드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1753862184872&quot; class=&quot;vbnet&quot; data-ke-language=&quot;vbnet&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report Z4WEEK_ASSN002
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
REPORT Z4WEEK_ASSN002.
TABLES:     sbook.

TYPE-POOLS: slis.                                 &quot;ALV Declarations


*Data Declaration
*----------------
TYPES: BEGIN OF t_sbook,
  carrid        TYPE sbook-carrid,
  connid        TYPE sbook-connid,
  loccuram      TYPE sbook-loccuram,
  loccurkey     TYPE sbook-loccurkey,
 END OF t_sbook.

DATA: it_sbook TYPE STANDARD TABLE OF t_sbook INITIAL SIZE 0,
      wa_sbook TYPE t_sbook.
*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group TYPE slis_t_sp_group_alv,
      gd_layout    TYPE slis_layout_alv,
      gd_repid     LIKE sy-repid.

DATA : t TYPE slis_t_sp_group_alv .
************************************************************************
*Start-of-selection.
START-OF-SELECTION.

  PERFORM data_retrieval.
  PERFORM build_fieldcatalog.
  PERFORM build_layout.
  PERFORM build_sort.
  PERFORM display_alv_report.


*Sort options
DATA: gt_sort TYPE slis_t_sortinfo_alv.
FORM  build_sort.
  DATA: wa_sort TYPE slis_sortinfo_alv.

  CLEAR wa_sort.
  wa_sort-fieldname = 'CARRID'.
  wa_sort-tabname = 'SBOOK'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  APPEND wa_sort TO gt_sort.

  CLEAR wa_sort.
  wa_sort-fieldname = 'CONNID'.
  wa_sort-tabname = 'SBOOK'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  APPEND wa_sort TO gt_sort.

*  CLEAR wa_sort.
*  wa_sort-fieldname = 'LOCCURKEY'.
*  wa_sort-tabname = 'SBOOK'.
*  wa_sort-up = 'X'.
*  wa_sort-subtot = 'X'.
*  APPEND wa_sort TO gt_sort.
ENDFORM.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FIELDCATALOG
*&amp;amp;---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.

  fieldcatalog-fieldname   = 'CARRID'.
  fieldcatalog-seltext_m   = 'Airline Code'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_m   = 'Flight Connection Number'.
  fieldcatalog-col_pos     = 1.
  fieldcatalog-lzero       = 'X'.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'LOCCURAM'.
  fieldcatalog-seltext_m   = 'Price of booking in local currency of airline'.
  fieldcatalog-col_pos     = 2.
  fieldcatalog-do_sum = 'X'.
  fieldcatalog-cfieldname = 'LOCCURKEY'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'LOCCURKEY'.
  fieldcatalog-seltext_m   = 'Local currency of airline'.
  fieldcatalog-col_pos     = 3.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

ENDFORM.                    &quot; BUILD_FIELDCATALOG


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.

  gd_layout-no_input          = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-zebra = 'X'.
  gd_layout-totals_only = 'X'.
  gd_layout-totals_before_items = 'X'.
*  gd_layout-info_fieldname =      'LINE_COLOR'.
*  gd_layout-def_status = 'A'.

ENDFORM.                    &quot; BUILD_LAYOUT


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_ALV_REPORT
*&amp;amp;---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = gd_repid
      is_layout          = gd_layout
      it_fieldcat        = fieldcatalog[]
      it_sort            = gt_sort
      i_save             = 'X'
    TABLES
      t_outtab           = it_sbook
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


ENDFORM.                    &quot; DISPLAY_ALV_REPORT


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DATA_RETRIEVAL
*&amp;amp;---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
  DATA: ld_color(1) TYPE c.

  SELECT carrid connid loccuram loccurkey
    UP TO 2000 ROWS
  FROM sbook
  INTO TABLE it_sbook.

ENDFORM.                    &quot; DATA_RETRIEVAL&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 결과&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg6kq9/btsPClVbPti/gYHYW15rhNlf4UuKGn2w41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg6kq9/btsPClVbPti/gYHYW15rhNlf4UuKGn2w41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg6kq9/btsPClVbPti/gYHYW15rhNlf4UuKGn2w41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg6kq9%2FbtsPClVbPti%2FgYHYW15rhNlf4UuKGn2w41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용 옵션 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 70px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;사용 옵션&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;설명&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 19px;&quot;&gt;코드 일부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;UP TO N ROWS&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;SQL 페이징 기능&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;UP TO 2000 ROWS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;totals only&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;합계만 보여줌&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;gd_layout-totals_only = 'X'.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;totals before items&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;합계를 리스트 전에 출력함&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%; height: 17px;&quot;&gt;gd_layout-totals_before_items = 'X'.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/157</guid>
      <comments>https://devlog2829.tistory.com/157#entry157comment</comments>
      <pubDate>Wed, 30 Jul 2025 17:03:40 +0900</pubDate>
    </item>
    <item>
      <title>[4주차 메인과제] 서브 토탈 구현 및 ALV 출력</title>
      <link>https://devlog2829.tistory.com/156</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;목표: 특정 출력 필드를 포함한 ALV 출력 (서브 토탈 및 옵션/정렬 조건 포함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTNtxL/btsPB31tXRQ/2hF1BGfENmUZRaGU13qR71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTNtxL/btsPB31tXRQ/2hF1BGfENmUZRaGU13qR71/img.png&quot; data-alt=&quot;SPFLI 테이블&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTNtxL/btsPB31tXRQ/2hF1BGfENmUZRaGU13qR71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTNtxL%2FbtsPB31tXRQ%2F2hF1BGfENmUZRaGU13qR71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SPFLI 테이블&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 필드:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;CARRID: key필드 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;CONNID: key필드 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;PRICE: do_sum = 'X'. 조건&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt; CURRENCY: emphasize 옵션 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;PLANETYPE: emphasize 옵션 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;정렬 조건 추가&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;서브토탈 구현하기&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;CARRID: sub_tot up&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Apple SD Gothic Neo', Arial, sans-serif; letter-spacing: 0px;&quot;&gt;CONNID: sub_tot up&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 코드&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1753855722305&quot; class=&quot;vbnet&quot; data-ke-language=&quot;vbnet&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;*&amp;amp;---------------------------------------------------------------------*
*&amp;amp; Report Z4WEEK_ASSN001
*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;
*&amp;amp;---------------------------------------------------------------------*
REPORT Z4WEEK_ASSN001.
TABLES:     sflight.

TYPE-POOLS: slis.                                 &quot;ALV Declarations


*Data Declaration
*----------------
TYPES: BEGIN OF t_sflight,
  carrid        TYPE sflight-carrid,
  connid        TYPE sflight-connid,
  fldate        TYPE sflight-fldate,
  price         TYPE sflight-price,
  currency      TYPE sflight-currency,
  planetype     TYPE sflight-planetype,
 END OF t_sflight.

DATA: it_sflight TYPE STANDARD TABLE OF t_sflight INITIAL SIZE 0,
      wa_sflight TYPE t_sflight.

*ALV data declarations
DATA: fieldcatalog TYPE slis_t_fieldcat_alv WITH HEADER LINE,
      gd_tab_group TYPE slis_t_sp_group_alv,
      gd_layout    TYPE slis_layout_alv,
      gd_repid     LIKE sy-repid.

DATA : t TYPE slis_t_sp_group_alv .
************************************************************************
*Start-of-selection.
START-OF-SELECTION.

  PERFORM data_retrieval.
  PERFORM build_fieldcatalog.
  PERFORM build_layout.
  PERFORM build_sort.
  PERFORM display_alv_report.


*Sort options
DATA: gt_sort TYPE slis_t_sortinfo_alv.
FORM  build_sort.

  DATA: wa_sort TYPE slis_sortinfo_alv.
  CLEAR wa_sort.
  wa_sort-fieldname = 'CARRID'.
  wa_sort-tabname = 'SFLIGHT'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  APPEND wa_sort TO gt_sort.

  CLEAR wa_sort.
  wa_sort-fieldname = 'CONNID'.
  wa_sort-tabname = 'SFLIGHT'.
  wa_sort-up = 'X'.
  wa_sort-subtot = 'X'.
  APPEND wa_sort TO gt_sort.
ENDFORM.


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_FIELDCATALOG
*&amp;amp;---------------------------------------------------------------------*
*       Build Fieldcatalog for ALV Report
*----------------------------------------------------------------------*
FORM build_fieldcatalog.

  fieldcatalog-fieldname   = 'CARRID'.
  fieldcatalog-seltext_m   = 'Airline Code'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_m   = 'Flight Connection Number'.
  fieldcatalog-col_pos     = 1.
  fieldcatalog-lzero       = 'X'.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'FLDATE'.
  fieldcatalog-seltext_m   = 'Flight date'.
  fieldcatalog-col_pos     = 2.
  fieldcatalog-edit_mask = '________'.
  fieldcatalog-key       = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'PRICE'.
  fieldcatalog-seltext_m   = 'Airfare'.
  fieldcatalog-col_pos     = 3.
  fieldcatalog-cfieldname = 'CURRENCY'.
  fieldcatalog-do_sum = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CURRENCY'.
  fieldcatalog-seltext_m   = 'Local currency of airline'.
  fieldcatalog-col_pos     = 4.
  fieldcatalog-emphasize   = 'C600'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'PLANETYPE'.
  fieldcatalog-seltext_m   = 'Aircraft Type'.
  fieldcatalog-col_pos     = 5.
  fieldcatalog-decimals_out  = 0.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

ENDFORM.                    &quot; BUILD_FIELDCATALOG


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  BUILD_LAYOUT
*&amp;amp;---------------------------------------------------------------------*
*       Build layout for ALV grid report
*----------------------------------------------------------------------*
FORM build_layout.

  gd_layout-no_input          = 'X'.
  gd_layout-colwidth_optimize = 'X'.
  gd_layout-zebra = 'X'.
*  gd_layout-info_fieldname =      'LINE_COLOR'.
*  gd_layout-def_status = 'A'.

ENDFORM.                    &quot; BUILD_LAYOUT


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DISPLAY_ALV_REPORT
*&amp;amp;---------------------------------------------------------------------*
*       Display report using ALV grid
*----------------------------------------------------------------------*
FORM display_alv_report.
  gd_repid = sy-repid.
  CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
    EXPORTING
      i_callback_program = gd_repid
      is_layout          = gd_layout
      it_fieldcat        = fieldcatalog[]
      it_sort            = gt_sort
      i_save             = 'X'
    TABLES
      t_outtab           = it_sflight
    EXCEPTIONS
      program_error      = 1
      OTHERS             = 2.
  IF sy-subrc &amp;lt;&amp;gt; 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
*         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
  ENDIF.


ENDFORM.                    &quot; DISPLAY_ALV_REPORT


*&amp;amp;---------------------------------------------------------------------*
*&amp;amp;      Form  DATA_RETRIEVAL
*&amp;amp;---------------------------------------------------------------------*
*       Retrieve data form EKPO table and populate itab it_ekko
*----------------------------------------------------------------------*
FORM data_retrieval.
  DATA: ld_color(1) TYPE c.

  SELECT carrid connid fldate price currency planetype
*  UP TO 10 ROWS
    FROM sflight
    INTO TABLE it_sflight.

ENDFORM.                    &quot; DATA_RETRIEVAL&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구현 결과&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzhCQe/btsPDs63Bsz/5WPirKzka4KPdpK7cK6M10/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzhCQe/btsPDs63Bsz/5WPirKzka4KPdpK7cK6M10/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzhCQe/btsPDs63Bsz/5WPirKzka4KPdpK7cK6M10/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzhCQe%2FbtsPDs63Bsz%2F5WPirKzka4KPdpK7cK6M10%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HQUx9/btsPClOnjCG/JWiwKVQ5Gm0je1zqZ8ooR1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HQUx9/btsPClOnjCG/JWiwKVQ5Gm0je1zqZ8ooR1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HQUx9/btsPClOnjCG/JWiwKVQ5Gm0je1zqZ8ooR1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHQUx9%2FbtsPClOnjCG%2FJWiwKVQ5Gm0je1zqZ8ooR1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjtGm6/btsPD03hFR6/auEOy4TutVpRyEU9HIXkQ0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjtGm6/btsPD03hFR6/auEOy4TutVpRyEU9HIXkQ0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjtGm6/btsPD03hFR6/auEOy4TutVpRyEU9HIXkQ0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjtGm6%2FbtsPD03hFR6%2FauEOy4TutVpRyEU9HIXkQ0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO55xT/btsPEr0GpER/s92POHqlHhvcm91aJXkXO1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO55xT/btsPEr0GpER/s92POHqlHhvcm91aJXkXO1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO55xT/btsPEr0GpER/s92POHqlHhvcm91aJXkXO1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO55xT%2FbtsPEr0GpER%2Fs92POHqlHhvcm91aJXkXO1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;741&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lG0Qb/btsPDnxXERx/MejTdpHEkqWO1ktm3E38H0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lG0Qb/btsPDnxXERx/MejTdpHEkqWO1ktm3E38H0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lG0Qb/btsPDnxXERx/MejTdpHEkqWO1ktm3E38H0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlG0Qb%2FbtsPDnxXERx%2FMejTdpHEkqWO1ktm3E38H0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;741&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;741&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사용 옵션 정리&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%; height: 68px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;사용 옵션&lt;/td&gt;
&lt;td style=&quot;width: 26.6279%; height: 17px;&quot;&gt;설명&lt;/td&gt;
&lt;td style=&quot;width: 48.3721%; height: 17px;&quot;&gt;코드 일부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;서브토탈 옵션 선언&lt;/td&gt;
&lt;td style=&quot;width: 26.6279%; height: 17px;&quot;&gt;서브토탈 옵션 사용 선언&lt;/td&gt;
&lt;td style=&quot;width: 48.3721%; height: 17px;&quot;&gt;sort-subtot = 'X'.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;오름차순 정렬&lt;/td&gt;
&lt;td style=&quot;width: 26.6279%; height: 17px;&quot;&gt;up: 오름차순&lt;/td&gt;
&lt;td style=&quot;width: 48.3721%; height: 17px;&quot;&gt;sort-up = 'X'.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 25%; height: 17px;&quot;&gt;숫자 필드 사용&lt;/td&gt;
&lt;td style=&quot;width: 26.6279%; height: 17px;&quot;&gt;필드 카탈로그에 숫자 필드를 넣어줌&lt;/td&gt;
&lt;td style=&quot;width: 48.3721%; height: 17px;&quot;&gt;fieldcatalog-do_sum = 'X'.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/156</guid>
      <comments>https://devlog2829.tistory.com/156#entry156comment</comments>
      <pubDate>Wed, 30 Jul 2025 16:54:35 +0900</pubDate>
    </item>
    <item>
      <title>[3주차 과제] ALV 출력(2)</title>
      <link>https://devlog2829.tistory.com/155</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot;&gt;목표: 특정 출력 필드(조건 포함)를 포함한 ALV 출력&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkfspv/btsPCI3C584/K9mCC08gJFeq5Ra2qxTb71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkfspv/btsPCI3C584/K9mCC08gJFeq5Ra2qxTb71/img.png&quot; data-alt=&quot;SPFLI 테이블&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkfspv/btsPCI3C584/K9mCC08gJFeq5Ra2qxTb71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbkfspv%2FbtsPCI3C584%2FK9mCC08gJFeq5Ra2qxTb71%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1280&quot; height=&quot;756&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;756&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SPFLI 테이블&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 필드:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CARRID: fieldcatalog-key 옵션&lt;/li&gt;
&lt;li&gt;CONNID: key 옵션, 0이앞에 붙게 출력&lt;/li&gt;
&lt;li&gt;FLDATE: key 옵션,&amp;nbsp;&lt;/li&gt;
&lt;li&gt;PRICE:&amp;nbsp; 통화단위 옵션 넣고 소수점 안나오게 출력&lt;/li&gt;
&lt;li&gt;CURRENCY: fieldcatalog-emphasize 옵션&lt;/li&gt;
&lt;li&gt;PLANETYPE&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드 일부 (필드 카탈로그)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1753855307196&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  fieldcatalog-fieldname   = 'MANDT'.
  fieldcatalog-seltext_m   = 'Client'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-outputlen   = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CARRID'.
  fieldcatalog-seltext_m   = 'Airline Code'.
  fieldcatalog-col_pos     = 1.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_m   = 'Flight Connection Number'.
  fieldcatalog-col_pos     = 2.
  fieldcatalog-lzero       = 'X'.
  fieldcatalog-key         = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'FLDATE'.
  fieldcatalog-seltext_m   = 'Flight date'.
  fieldcatalog-col_pos     = 3.
  fieldcatalog-edit_mask = '________'.
  fieldcatalog-key       = 'X'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'PRICE'.
  fieldcatalog-seltext_m   = 'Airfare'.
  fieldcatalog-col_pos     = 4.
  fieldcatalog-cfieldname = 'CURRENCY'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CURRENCY'.
  fieldcatalog-seltext_m   = 'Local currency of airline'.
  fieldcatalog-col_pos     = 5.
  fieldcatalog-emphasize   = 'C600'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'PLANETYPE'.
  fieldcatalog-seltext_m   = 'Aircraft Type'.
  fieldcatalog-col_pos     = 6.
  fieldcatalog-decimals_out  = 0.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/FBGTj/btsPDpWNBw6/d1Xb8N9a9a1ULbnQqIhzy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/FBGTj/btsPDpWNBw6/d1Xb8N9a9a1ULbnQqIhzy0/img.png&quot; data-alt=&quot;출력 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/FBGTj/btsPDpWNBw6/d1Xb8N9a9a1ULbnQqIhzy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFBGTj%2FbtsPDpWNBw6%2Fd1Xb8N9a9a1ULbnQqIhzy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;1211&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1211&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출력 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/155</guid>
      <comments>https://devlog2829.tistory.com/155#entry155comment</comments>
      <pubDate>Wed, 30 Jul 2025 15:02:25 +0900</pubDate>
    </item>
    <item>
      <title>[2주차 과제] ALV 출력(1)</title>
      <link>https://devlog2829.tistory.com/154</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;목표: 특정 출력 필드를 포함한 ALV 출력&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bTZXex/btsPEq8vWhX/1dZhPBXoa6g8S7HkuXfKr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bTZXex/btsPEq8vWhX/1dZhPBXoa6g8S7HkuXfKr0/img.png&quot; data-alt=&quot;SPFLI 테이블 구조&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bTZXex/btsPEq8vWhX/1dZhPBXoa6g8S7HkuXfKr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbTZXex%2FbtsPEq8vWhX%2F1dZhPBXoa6g8S7HkuXfKr0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;1211&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1211&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SPFLI 테이블 구조&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 필드:
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;CARRID: 항공사 코드&lt;/li&gt;
&lt;li&gt;CONNID: 항공편 연결번호&lt;/li&gt;
&lt;li&gt;FLTIME: 비행시간&lt;/li&gt;
&lt;li&gt;DEFTIME: 출발시간&lt;/li&gt;
&lt;li&gt;ARRTIME: 도착시간&lt;/li&gt;
&lt;li&gt;DISTANCE: 거리&lt;/li&gt;
&lt;li&gt;DISTID: 거리 단위&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;주요 문제점 및 내가 사용한 해결 방안&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 101.047%; height: 148px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;height: 17px; width: 19.9379%;&quot;&gt;문제점&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 26.2154%;&quot;&gt;원인&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 22.2334%;&quot;&gt;해결방법&lt;/td&gt;
&lt;td style=&quot;height: 17px; width: 32.5436%;&quot;&gt;코드(필드 카탈로그)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; width: 19.9379%;&quot;&gt;CONNID 앞자리 0이 사라짐&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 26.2154%;&quot;&gt;CONNID는 NUMC 타입&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 22.2334%;&quot;&gt;datatype = 'C' 로 설정해 &lt;br /&gt;문자로 출력&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 32.5436%;&quot;&gt;fieldcatalog-fieldname = 'CONNID'. &lt;br /&gt;fieldcatalog-datatype = 'C'.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; width: 19.9379%;&quot;&gt;FLTIME 숫자로 나오지 않고 문자로 보임&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 26.2154%;&quot;&gt;FLTIME 기본 문자 타입&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 22.2334%;&quot;&gt;datatype = 'I' 로 숫자형으로 변환해 정렬 및 출력&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 32.5436%;&quot;&gt;fieldcatalog-fieldname = 'FLTIME'. &lt;br /&gt;fieldcatalog-datatype = 'I'.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;height: 38px; width: 19.9379%;&quot;&gt;DISTANCE 소수점 4자리까지만 보임&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 26.2154%;&quot;&gt;QUAN 타입으로 &lt;br /&gt;소수점 4자리 기본 출력&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 22.2334%;&quot;&gt;decimals_out = 0 으로 &lt;br /&gt;소수점 없이 정수만 표시&lt;/td&gt;
&lt;td style=&quot;height: 38px; width: 32.5436%;&quot;&gt;fieldcatalog-fieldname = 'DISTANCE'. fieldcatalog-decimals_out = 0.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드 일부 (필드 카탈로그 영역)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1753853272756&quot; class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  fieldcatalog-fieldname   = 'MANDT'.
  fieldcatalog-seltext_m   = 'Client'.
  fieldcatalog-col_pos     = 0.
  fieldcatalog-outputlen   = 10.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CARRID'.
  fieldcatalog-seltext_m   = 'Airline Code'.
  fieldcatalog-col_pos     = 1.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'CONNID'.
  fieldcatalog-seltext_m   = 'Flight Connection Number'.
  fieldcatalog-col_pos     = 2.
  fieldcatalog-datatype    = 'C'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'FLTIME'.
  fieldcatalog-seltext_m   = 'Flight time'.
  fieldcatalog-col_pos     = 3.
  fieldcatalog-datatype    = 'I'.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'DEPTIME'.
  fieldcatalog-seltext_m   = 'Departure time'.
  fieldcatalog-col_pos     = 4.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'ARRTIME'.
  fieldcatalog-seltext_m   = 'Arrival time'.
  fieldcatalog-col_pos     = 5.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'DISTANCE'.
  fieldcatalog-seltext_m   = 'Distance'.
  fieldcatalog-col_pos     = 6.
  fieldcatalog-decimals_out  = 0.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.

  fieldcatalog-fieldname   = 'DISTID'.
  fieldcatalog-seltext_m   = 'Mass unit of distance (kms, miles)'.
  fieldcatalog-col_pos     = 7.
  APPEND fieldcatalog TO fieldcatalog.
  CLEAR  fieldcatalog.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1211&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1rk3d/btsPEp2QRqb/DwBi6fGU23hBXbrb3HmTHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1rk3d/btsPEp2QRqb/DwBi6fGU23hBXbrb3HmTHK/img.png&quot; data-alt=&quot;출력 결과&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1rk3d/btsPEp2QRqb/DwBi6fGU23hBXbrb3HmTHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1rk3d%2FbtsPEp2QRqb%2FDwBi6fGU23hBXbrb3HmTHK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;2048&quot; height=&quot;1211&quot; data-origin-width=&quot;2048&quot; data-origin-height=&quot;1211&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;출력 결과&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;과제 문제 풀이&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 101.047%; height: 166px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 19px;&quot;&gt;
&lt;td style=&quot;width: 15.2326%; height: 19px;&quot;&gt;문제점&lt;/td&gt;
&lt;td style=&quot;width: 19.3023%; height: 19px;&quot;&gt;원인&lt;/td&gt;
&lt;td style=&quot;width: 33.6178%; height: 19px;&quot;&gt;해결방안&lt;/td&gt;
&lt;td style=&quot;width: 32.7775%; height: 19px;&quot;&gt;코드 (필드 카탈로그)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 57px;&quot;&gt;
&lt;td style=&quot;width: 15.2326%; height: 57px;&quot;&gt;CONNID 앞자리 0 사라짐&lt;/td&gt;
&lt;td style=&quot;width: 19.3023%; height: 57px;&quot;&gt;CONNID는 NUMC 타입&lt;/td&gt;
&lt;td style=&quot;width: 33.6178%; height: 57px;&quot;&gt;lzero 옵션 사용&lt;br /&gt;'X' : 숫자 앞의 0 표기&lt;br /&gt;공백 또는 설정 없음: 숫자 앞의 0 제거 (default)&lt;/td&gt;
&lt;td style=&quot;width: 32.7775%; height: 57px;&quot;&gt;fieldcatalog-lzero = &amp;lsquo;X&amp;rsquo;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 38px;&quot;&gt;
&lt;td style=&quot;width: 15.2326%; height: 38px;&quot;&gt;&lt;b&gt;FLTIME 전체가 나오지 않음&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 19.3023%; height: 38px;&quot;&gt;&lt;b&gt;FLTIME INT4 타입&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 33.6178%; height: 38px;&quot;&gt;&lt;b&gt;edit_mask 옵션 사용&lt;/b&gt;&lt;br /&gt;&lt;b&gt;출력 필드 고정 시킴&lt;/b&gt;&lt;/td&gt;
&lt;td style=&quot;width: 32.7775%; height: 38px;&quot;&gt;&lt;b&gt;fieldcatalog-edit_mask = &amp;lsquo;__________&amp;rsquo;.&lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 52px;&quot;&gt;
&lt;td style=&quot;width: 15.2326%; height: 52px;&quot;&gt;DISTANCE 소수점 4자리까지만 보임&lt;/td&gt;
&lt;td style=&quot;width: 19.3023%; height: 52px;&quot;&gt;QUAN 타입으로 소수점 4자리 기본 출력&lt;/td&gt;
&lt;td style=&quot;width: 33.6178%; height: 52px;&quot;&gt;decimals_out = 0 으로 소수점 없이 정수만 표시&lt;/td&gt;
&lt;td style=&quot;width: 32.7775%; height: 52px;&quot;&gt;fieldcatalog-fieldname = 'DISTANCE'. fieldcatalog-decimals_out = 0.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;FLTIME 필드 출력 조건을 잘못 판단함...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre class=&quot;javascript&quot; data-ke-language=&quot;javascript&quot;&gt;&lt;code&gt;fieldcatalog-fieldname   = 'CONNID'.
fieldcatalog-seltext_m   = 'Flight Connection Number'.
fieldcatalog-col_pos     = 2.
fieldcatalog-lzero = &amp;lsquo;X&amp;rsquo;.
APPEND fieldcatalog TO fieldcatalog.
CLEAR  fieldcatalog.

...

fieldcatalog-fieldname   = 'FLTIME'.
fieldcatalog-seltext_m   = 'Flight time'.
fieldcatalog-col_pos     = 3.
fieldcatalog-edit_mask = &amp;lsquo;__________&amp;rsquo;.
APPEND fieldcatalog TO fieldcatalog.
CLEAR  fieldcatalog.

...

fieldcatalog-fieldname   = 'DISTANCE'.
fieldcatalog-seltext_m   = 'Distance'.
fieldcatalog-col_pos     = 6.
fieldcatalog-decimals_out  = 0.
APPEND fieldcatalog TO fieldcatalog.
CLEAR  fieldcatalog.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>강의/SAP ERP</category>
      <author>덩이</author>
      <guid isPermaLink="true">https://devlog2829.tistory.com/154</guid>
      <comments>https://devlog2829.tistory.com/154#entry154comment</comments>
      <pubDate>Wed, 30 Jul 2025 14:30:37 +0900</pubDate>
    </item>
  </channel>
</rss>