<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>ABAP의 정석</title>
    <link>https://abap-developer.tistory.com/</link>
    <description>건양대학교 기업소프트웨어학부 학술부 ASAP팀입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 14 Apr 2026 14:44:02 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>ASAP ABAP</managingEditor>
    <image>
      <title>ABAP의 정석</title>
      <url>https://tistory1.daumcdn.net/tistory/7347061/attach/8de00d0d5d2348a3b76b7d4f7ef471f5</url>
      <link>https://abap-developer.tistory.com</link>
    </image>
    <item>
      <title>[ABAP] Conversion Exit 생성하고 ALV에 적용하기 ( 통화/회계 필드 - 마이너스 부호 앞으로 출력하기 )</title>
      <link>https://abap-developer.tistory.com/22</link>
      <description>&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;안녕하세요 오랜만에 글 쓰게 되었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;오늘은 Conversion Exit를 직접 개발자가 만들어서 사용할 수 있는 방법을 알아보도록 하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저, &lt;b&gt;Convertion Exit&lt;/b&gt;이 무엇이냐 SE11(ABAP Dictionary)에서 &lt;b&gt;Domain&lt;/b&gt;에 &lt;b&gt;&quot;Routine&quot;&lt;/b&gt; 이라는 필드 보신적 있으시죠&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biRKgh/btsQOknrjDv/3uzdPdGsFb4EgFhtYv7FVk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biRKgh/btsQOknrjDv/3uzdPdGsFb4EgFhtYv7FVk/img.png&quot; data-alt=&quot;VBAK의 테이블(판매주문 헤더)의 판매 문서 번호 Domain&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biRKgh/btsQOknrjDv/3uzdPdGsFb4EgFhtYv7FVk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiRKgh%2FbtsQOknrjDv%2F3uzdPdGsFb4EgFhtYv7FVk%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;360&quot; height=&quot;222&quot; data-origin-width=&quot;893&quot; data-origin-height=&quot;551&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;VBAK의 테이블(판매주문 헤더)의 판매 문서 번호 Domain&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이것이 변환 루틴입니다. &quot;&lt;b&gt;5글자&lt;/b&gt;&quot;로 이루어진 Routine은 ALV나 ABAP List를 통해 출력되어질 때&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 &quot;&lt;b&gt;Function&lt;/b&gt;&quot;를 거쳐서 데이터를 바꿔주는 것 입니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;VBELN ( 판매 문서 번호 )를 기준으로 설명드린다면 ALPHA Conversion 다들 들어보셨죠?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;모르신다면 이전 블로글이 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://abap-developer.tistory.com/7&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://abap-developer.tistory.com/7&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1758804360035&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] CONVERSION_EXIT_ALPHA_OUTPUT / Leading Zero 제거&quot; data-og-description=&quot;오늘도 간단한 Function를 다뤄보겠습니다. &amp;quot; CONVERSION_EXIT_ALPHA_OUTPUT&amp;quot; Function은 앞에 Leading Zero로 인해 생긴 0을 지워주는 Function입니다. 사실 해당 기능이 필요한 상황 대부분은 Domain이나 Screen Field Att&quot; data-og-host=&quot;abap-developer.tistory.com&quot; data-og-source-url=&quot;https://abap-developer.tistory.com/7&quot; data-og-url=&quot;https://abap-developer.tistory.com/7&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cmuko6/hyZJS8mFJe/2EwkQ4VzQPjqwE3pFylSbk/img.png?width=641&amp;amp;height=94&amp;amp;face=0_0_641_94,https://scrap.kakaocdn.net/dn/bgjEAd/hyZJStLP2P/SFGLjaT4iio9K5N3Sbel7K/img.png?width=641&amp;amp;height=94&amp;amp;face=0_0_641_94,https://scrap.kakaocdn.net/dn/crMfjg/hyZJWpqivS/xAjAvJpMmiOx7wJLmKnXjK/img.jpg?width=400&amp;amp;height=394&amp;amp;face=0_0_400_394&quot;&gt;&lt;a href=&quot;https://abap-developer.tistory.com/7&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://abap-developer.tistory.com/7&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cmuko6/hyZJS8mFJe/2EwkQ4VzQPjqwE3pFylSbk/img.png?width=641&amp;amp;height=94&amp;amp;face=0_0_641_94,https://scrap.kakaocdn.net/dn/bgjEAd/hyZJStLP2P/SFGLjaT4iio9K5N3Sbel7K/img.png?width=641&amp;amp;height=94&amp;amp;face=0_0_641_94,https://scrap.kakaocdn.net/dn/crMfjg/hyZJWpqivS/xAjAvJpMmiOx7wJLmKnXjK/img.jpg?width=400&amp;amp;height=394&amp;amp;face=0_0_400_394');&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] CONVERSION_EXIT_ALPHA_OUTPUT / Leading Zero 제거&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;오늘도 간단한 Function를 다뤄보겠습니다. &quot; CONVERSION_EXIT_ALPHA_OUTPUT&quot; Function은 앞에 Leading Zero로 인해 생긴 0을 지워주는 Function입니다. 사실 해당 기능이 필요한 상황 대부분은 Domain이나 Screen Field Att&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;abap-developer.tistory.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;간단하게 설명드리면 앞에 0를 제거하는 Leading Zero 역할을 수행하는 Function이였습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style2&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;눈치 빠르신 분들은 눈치채셨겠지만!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;위의 Function이 바로 Conversion Exit입니다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 사용자가 이쁘게 조회하기 위해서 데이터를 잠깐 바꿔주는 역할을 하는 Function이 Conversion Exit의 역할인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 것들이 SAP에서 만들어 놓은 Conversion Exit만 사용할 수 없으니 직접 만들어 볼 것 입니다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;도메인에서 변환 루틴(Routine)으로 사용되거나 ALV FieldCatalog에서 쓰이기 위해서는&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래와 같은 &lt;b&gt;규칙&lt;/b&gt;를 지켜서 Function를 만들어야 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;규칙&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;1. Function의 이름은 다음과 같은 이름으로 2개를 생성해야합니다.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;CONVERSION_EXIT_XXXXX_INPUT&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;CONVERSION_EXIT_XXXXX_OUTPUT&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;b&gt;(XXXXX 는 문자 5자리입니다. =&amp;nbsp; ROUTINE에 들어갈 5자리)&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;2. Function의 Parameter ( Signature )&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Import에 INPUT&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;&lt;b&gt;+ Import에 REFVAL ( 회계 필드일 경우에만 )&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Export에 OUTPUT&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위의 모든 규칙을 만족해야합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;먼저, 저는 회계 필드의 - 부호를 앞으로 보내주는 Coversion Exit를 만들기 위해서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;REFVAL 파라미터를 같이 사용하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;(REFVAL 파라미터는 필드에 연결되어 있는 통화키 값이 들어옵니다.)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size18&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;1134&quot; data-origin-height=&quot;325&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEpERn/btsQVGo5EH0/kJLthUZwLkgIG0Y0kr0KOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEpERn/btsQVGo5EH0/kJLthUZwLkgIG0Y0kr0KOk/img.png&quot; data-alt=&quot;Import Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEpERn/btsQVGo5EH0/kJLthUZwLkgIG0Y0kr0KOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEpERn%2FbtsQVGo5EH0%2FkJLthUZwLkgIG0Y0kr0KOk%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;535&quot; height=&quot;153&quot; data-origin-width=&quot;1134&quot; data-origin-height=&quot;325&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Import Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1052&quot; data-origin-height=&quot;317&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b1linO/btsQSRyU7Cu/RImFxoNXlNqKCAvceVJYgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b1linO/btsQSRyU7Cu/RImFxoNXlNqKCAvceVJYgk/img.png&quot; data-alt=&quot;Export Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b1linO/btsQSRyU7Cu/RImFxoNXlNqKCAvceVJYgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb1linO%2FbtsQSRyU7Cu%2FRImFxoNXlNqKCAvceVJYgk%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;527&quot; height=&quot;159&quot; data-origin-width=&quot;1052&quot; data-origin-height=&quot;317&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Export Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;소스 코드 같은 경우에는 -부호를 앞으로 보내주면서 콤마( , )또한 통화키에 맞게 출력되도록 소스코드를 작성하였습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;1131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ItLU3/btsQUlTJ4Hw/yV86NwY4b8gSHHnW0zPmH1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ItLU3/btsQUlTJ4Hw/yV86NwY4b8gSHHnW0zPmH1/img.png&quot; data-alt=&quot;Source Code&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ItLU3/btsQUlTJ4Hw/yV86NwY4b8gSHHnW0zPmH1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FItLU3%2FbtsQUlTJ4Hw%2FyV86NwY4b8gSHHnW0zPmH1%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;545&quot; height=&quot;536&quot; data-origin-width=&quot;1149&quot; data-origin-height=&quot;1131&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Source Code&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1759141327685&quot; class=&quot;bash&quot; data-ke-language=&quot;bash&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;  DATA: lv_value TYPE char30,
        lv_conv  TYPE s_f_cur_pr. &quot; 회계 필드 Type으로 선언


  IF input &amp;lt; 0. &quot; 음수 일때
    lv_conv = input * -1.
    WRITE lv_conv TO lv_value CURRENCY refval.

    SHIFT lv_value LEFT DELETING LEADING space.

    output = |-{ lv_value }|.

  ELSE. &quot; 양수 일때

    WRITE input TO output CURRENCY refval.

  ENDIF.&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;해당 소스코드 말고도 다른 형식의 Conversion이 필요하다면 Input으로 값을 전달받아서&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Output로 전달하면 그 값 그대로 ALV에 출력하게 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;**INPUT으로 끝나는 Function은 원래 값으로 되돌리는 로직을 작성하시면 됩니다 **&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #666666;&quot;&gt;(저는 귀찮아서 따로 INPUT로직을 작성하지는 않았습니다. 안해도 보이는건 잘보임)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;⚠️주의⚠️ &lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;파라미터로 받은 값 그대로 내보내주기 때문에 원하는 Format으로 다 변환 이후에 OUTPUT에 넣어줘야합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(통화필드에 넣었다고 콤마 알아서 찍히겠지 라는 오만한 생각을 하지 않도록합시다...[내 얘기임...])&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자 이제 Coversion Exit를 전부 만들어 보았는데요.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이걸 ALV에 적용 시키기 위해서는 어떻게 해야하는지 알아보겠습니다.&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;#1. 도메인에 Coversion Routine 넣기&lt;/b&gt;&lt;/h4&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저, 당연히 아는 Routine에 넣어서 적용해보도록 하겠습니다.&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;833&quot; data-origin-height=&quot;633&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMPoj1/btsQTRk2hlK/rr5QVCMhHTyiaXIAXaoeTk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMPoj1/btsQTRk2hlK/rr5QVCMhHTyiaXIAXaoeTk/img.png&quot; data-alt=&quot;Routine에 직접 만든 ZSIGN Exit 추가&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMPoj1/btsQTRk2hlK/rr5QVCMhHTyiaXIAXaoeTk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMPoj1%2FbtsQTRk2hlK%2Frr5QVCMhHTyiaXIAXaoeTk%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;331&quot; height=&quot;252&quot; data-origin-width=&quot;833&quot; data-origin-height=&quot;633&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Routine에 직접 만든 ZSIGN Exit 추가&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위 사진처럼 Routine에 ZSIGN ( Exit 5글자 )를 넣으면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Function : &lt;b&gt;CONVERSION_EXIT_XXXXX_OUTPUT&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;( X : 5글자가 Exit 이름입니다! )&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;345&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beFWFe/btsQTmyGtGw/zpoomV49MfirYnsO5s77wk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beFWFe/btsQTmyGtGw/zpoomV49MfirYnsO5s77wk/img.png&quot; data-alt=&quot;Coversion Routine 적용 (전)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beFWFe/btsQTmyGtGw/zpoomV49MfirYnsO5s77wk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeFWFe%2FbtsQTmyGtGw%2FzpoomV49MfirYnsO5s77wk%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;202&quot; height=&quot;232&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;300&quot; data-origin-height=&quot;345&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Coversion Routine 적용 (전)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;384&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVpYUc/btsQWtJt20I/fRH0DONjGdKGB3YaCtHKF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVpYUc/btsQWtJt20I/fRH0DONjGdKGB3YaCtHKF1/img.png&quot; data-alt=&quot;Coversion Routine 적용 (전)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVpYUc/btsQWtJt20I/fRH0DONjGdKGB3YaCtHKF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVpYUc%2FbtsQWtJt20I%2FfRH0DONjGdKGB3YaCtHKF1%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;199&quot; height=&quot;232&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;384&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Coversion Routine 적용 (전)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;position: absolute;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;s&gt;(컬럼 이름 쓰기 귀찮아서 안쓴건 안비밀...)&lt;/s&gt;&lt;/p&gt;
&lt;h4 style=&quot;text-align: center;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;#2. ALV FieldCatalog 이용하기&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 사실 Custom으로 Exit이 필요한 경우는 Domain를 못 건드는 경우가 많습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이럴 때 FieldCatalog로 덮어 씌워주면 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼저, 알아야 할 지식이 있는데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;FieldCatalog Structure Component에는&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;CONVEXIT과 EDIT_MASK&lt;/b&gt;가 있습니다&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;두 Component로 해당 Exit를 적용 할 수 있는데 규칙이 하나 있습니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EDIT_MASK가 나중에 로직이 돌아서 CONVEXIT에 다른 EXIT이 있어도 &lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;EDIT_MASK에 있는&amp;nbsp;&lt;/b&gt;Exit이 적용됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(그래서 Exit를 덮어 씌울 수 있음)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고, CONVEXIT에는 EXIT이름을 'ZSIGN' 처럼 그대로 넣어도 되지만&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;EDIT_MASK에는 '==ZSIGN'으로 앞에&lt;b&gt; &quot;==&quot;를 붙여야만 EXIT으로 인식&lt;/b&gt;됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;518&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lNGoT/btsQUkUQ0d3/l8cKirIQxgWaRnNl7vMOC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lNGoT/btsQUkUQ0d3/l8cKirIQxgWaRnNl7vMOC0/img.png&quot; data-alt=&quot;FieldCatalog 적용 로직&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lNGoT/btsQUkUQ0d3/l8cKirIQxgWaRnNl7vMOC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlNGoT%2FbtsQUkUQ0d3%2Fl8cKirIQxgWaRnNl7vMOC0%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;381&quot; height=&quot;225&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;518&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;FieldCatalog 적용 로직&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이런 형식으로 적용하게 되면 ALV에서 &lt;b&gt;출력하기 직전에 값이 변환&lt;/b&gt;되어 보여집니다!!&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;440&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YD9bB/btsQTxGNaDk/ExFxEArt5v8FXuaK7yGcC1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YD9bB/btsQTxGNaDk/ExFxEArt5v8FXuaK7yGcC1/img.png&quot; data-alt=&quot;ALV 출력 화면 (KRW도 잘 됩니다!)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YD9bB/btsQTxGNaDk/ExFxEArt5v8FXuaK7yGcC1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYD9bB%2FbtsQTxGNaDk%2FExFxEArt5v8FXuaK7yGcC1%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;334&quot; height=&quot;332&quot; data-origin-width=&quot;442&quot; data-origin-height=&quot;440&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ALV 출력 화면 (KRW도 잘 됩니다!)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;쓰다보니 진짜 길어졌는데요&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다음에도 이런 Issue 통해서 배운 것이 있다면 공유하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;참고로 제가 직접 겪은 상황을 토대로 글을 쓴 것이기 때문에 틀린 것이 있을 수 있습니다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마무리...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;마지막으로 그냥 디버깅하면서 찾은 사실인데&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;CL_SALV_GUI_UTILS 클래스의 CONV_EXIT_SUPPORTS_REFVAL 메소드로&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;1425&quot; data-origin-height=&quot;1134&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c6byIo/btsQWuIs0NM/LUo7eR8ztlMiQ2qIjPCTRk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c6byIo/btsQWuIs0NM/LUo7eR8ztlMiQ2qIjPCTRk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c6byIo/btsQWuIs0NM/LUo7eR8ztlMiQ2qIjPCTRk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc6byIo%2FbtsQWuIs0NM%2FLUo7eR8ztlMiQ2qIjPCTRk%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;492&quot; height=&quot;392&quot; data-origin-width=&quot;1425&quot; data-origin-height=&quot;1134&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이렇게 Function 이름을 조합해서 펑션을 실행하더라고요? 신기해서 공유해봅니다... ㅋㅋ&amp;nbsp;&lt;/p&gt;</description>
      <category>SAP GUI-ABAP</category>
      <category>ABAP</category>
      <category>CONVEXIT</category>
      <category>Coversion Exit</category>
      <category>EDIT_MASK</category>
      <category>exit</category>
      <category>fieldcatalog</category>
      <category>REFVAL</category>
      <category>routine</category>
      <category>SAP</category>
      <category>ZSIGN</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/22</guid>
      <comments>https://abap-developer.tistory.com/22#entry22comment</comments>
      <pubDate>Mon, 29 Sep 2025 20:05:50 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] WEEK_GET_FIRST_DAY / 해당 주차의 월요일 날짜 가져오기</title>
      <link>https://abap-developer.tistory.com/21</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;앞에서 설명한 &quot;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;GET_WEEK_INFO_BASED_ON_DATE&quot; Function Source code에서도 쓰인 &quot;WEEK_GET_FIRST_DAY&quot;를 소개하겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #222222; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #222222; text-align: start;&quot;&gt;기능설명&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; &lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;&quot;&lt;/span&gt;&lt;span style=&quot;color: #222222; text-align: start;&quot;&gt;WEEK_GET_FIRST_DAY&quot;&lt;/span&gt; Function은 사용자로부터 년도와 해당 년도의 몇 번째 주인지 입력을 받으면 해당 주의 월요일이 몇 일인지 알려주는 기능을 수행한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Signature&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;97&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbgZtA/btsLNbf6IES/QmoUATyoiegspZCnOLjTTK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbgZtA/btsLNbf6IES/QmoUATyoiegspZCnOLjTTK/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbgZtA/btsLNbf6IES/QmoUATyoiegspZCnOLjTTK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbgZtA%2FbtsLNbf6IES%2FQmoUATyoiegspZCnOLjTTK%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;637&quot; height=&quot;97&quot; data-origin-width=&quot;637&quot; data-origin-height=&quot;97&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pacJF/btsLLNgqAKo/YKd2tov2sTWpbsTdZ4GsjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pacJF/btsLLNgqAKo/YKd2tov2sTWpbsTdZ4GsjK/img.png&quot; data-alt=&quot;Exporting Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pacJF/btsLLNgqAKo/YKd2tov2sTWpbsTdZ4GsjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpacJF%2FbtsLLNgqAKo%2FYKd2tov2sTWpbsTdZ4GsjK%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;641&quot; height=&quot;100&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exporting Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bm8Xbf/btsLK2SF1zX/kKoi9ZqjEfzK76tvEVpwf0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bm8Xbf/btsLK2SF1zX/kKoi9ZqjEfzK76tvEVpwf0/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bm8Xbf/btsLK2SF1zX/kKoi9ZqjEfzK76tvEVpwf0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbm8Xbf%2FbtsLK2SF1zX%2FkKoi9ZqjEfzK76tvEVpwf0%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;639&quot; height=&quot;100&quot; data-origin-width=&quot;639&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예시 코드&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736758708530&quot; class=&quot;lang-abap&quot; data-ke-language=&quot;abap&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;REPORT zweek_01.
DATA: lv_monday TYPE sy-datum.
PARAMETERS: p_monday TYPE n LENGTH 6.
START-OF-SELECTION.
CALL FUNCTION 'WEEK_GET_FIRST_DAY'
	EXPORTING
		week = p_monday
	IMPORTING
		date = lv_monday.
IF sy-subrc = 0.
	WRITE:/ p_monday, '번째 주의 월요일은', lv_monday.
ELSE.
	WRITE:/ '날짜 추출 실패'.
ENDIF.&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 화면&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;177&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nnwqN/btsLMmJp5cj/3prw4kX7axa2oxZ1CoK13k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nnwqN/btsLMmJp5cj/3prw4kX7axa2oxZ1CoK13k/img.png&quot; data-alt=&quot;2024(주차 수) 입력&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nnwqN/btsLMmJp5cj/3prw4kX7axa2oxZ1CoK13k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnnwqN%2FbtsLMmJp5cj%2F3prw4kX7axa2oxZ1CoK13k%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;537&quot; height=&quot;177&quot; data-origin-width=&quot;537&quot; data-origin-height=&quot;177&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2024(주차 수) 입력&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;181&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Kkq61/btsLMXvG7gH/CbeQpX6gEyYNtBht1nSiy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Kkq61/btsLMXvG7gH/CbeQpX6gEyYNtBht1nSiy1/img.png&quot; data-alt=&quot;2024년도(47주차) 11.18일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Kkq61/btsLMXvG7gH/CbeQpX6gEyYNtBht1nSiy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKkq61%2FbtsLMXvG7gH%2FCbeQpX6gEyYNtBht1nSiy1%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;543&quot; height=&quot;158&quot; data-origin-width=&quot;622&quot; data-origin-height=&quot;181&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;2024년도(47주차) 11.18일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 주의 사항&lt;/span&gt;&lt;/h4&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: 'Noto Serif KR';&quot;&gt;값을 입력할 때 2024.01.23와 같이 날짜(YYYY.MM.DD)를 입력해서 그 날짜에 해당하는 주의 월요일을 구해주는 것이 아니라 1년은 52주 이므로 각 202447(YYYYMM) 이런 방식으로 년도와 주차를 입력하면 해당 주차의 월요일이 몇 일인지 알려줍니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;1년은 52주이기 때문에 52주를 넘은 53부터는 입력해도 값을 불러오지 못하고 덤프가 발생합니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>get_week_info_based_on_date</category>
      <category>Monday</category>
      <category>SAP</category>
      <category>scal-week</category>
      <category>Week</category>
      <category>week_get_first_day</category>
      <category>월요일</category>
      <category>주차</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/21</guid>
      <comments>https://abap-developer.tistory.com/21#entry21comment</comments>
      <pubDate>Mon, 13 Jan 2025 18:02:56 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] SAPGUI_SET_FUNCTIONCODE / 강제로 User Command 실행하기</title>
      <link>https://abap-developer.tistory.com/20</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;개발을 하다보면 처음 화면으로 돌아왔는데 alv 리스트가 refresh가 되지 않거나 하는 이유로 user_command를 강제로 넣고 싶을 때가 있습니다. 이때 사용할 수 있는 SAPGUI_SET_FUNCTIONCODE를 소개해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기능설명&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; SAP GUI 스크립트 기능 중 하나로, SAP GUI 화면에서 Function Code를 실행할 수 있도록 해줍니다. 사용자가 화면상의 메뉴를 클릭하거나 특정 버튼을 누를 때 발생하는 기능 코드를 수동으로 호출하여 작업을 자동화하는데 유용합니다. 주로SAP GUI에서 사용자가 특정 작업을 수행하는 버튼을 눌러야 하는 상황에서, 스크립트를 통해 그 과정을 자동으로 실행하고자 할 때 활용됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Signature&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;181&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CBiQM/btsLH9EtIWX/q2ZvaozTeNjjNoKdQObV81/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CBiQM/btsLH9EtIWX/q2ZvaozTeNjjNoKdQObV81/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CBiQM/btsLH9EtIWX/q2ZvaozTeNjjNoKdQObV81/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCBiQM%2FbtsLH9EtIWX%2Fq2ZvaozTeNjjNoKdQObV81%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;1181&quot; height=&quot;181&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;181&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;238&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjmJy1/btsLI6fY1e3/qdUEOFQeMjsEOo8BNMtQP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjmJy1/btsLI6fY1e3/qdUEOFQeMjsEOo8BNMtQP0/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjmJy1/btsLI6fY1e3/qdUEOFQeMjsEOo8BNMtQP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjmJy1%2FbtsLI6fY1e3%2FqdUEOFQeMjsEOo8BNMtQP0%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;1181&quot; height=&quot;238&quot; data-origin-width=&quot;1181&quot; data-origin-height=&quot;238&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예시코드&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736479025749&quot; class=&quot;lang-abap&quot; data-ke-language=&quot;abap&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;WHEN &amp;rsquo;SAVE&amp;rsquo;.&quot;저장 버튼
	CLEAR gs_change.
	MOVE-CORRESPONDING zssmm_01 TO gs_change.
	PERFORM change_matnr.
	CLEAR gs_alv.
	CLEAR zssmm_01.
	PERFORM matnr_init.
    
	* Search Funciton code 다시 불러옴
	CALL FUNCTION 'SAPGUI_SET_FUNCTIONCODE'
		EXPORTING
			functioncode = 'SEARCH'
		EXCEPTIONS
			function_not_supported = 1
			OTHERS = 2.
	IF sy-subrc &amp;lt;&amp;gt; 0.
	* Implement suitable error handling here
		MESSAGE i015(zmsg01).
	ENDIF.
	
    CALL SCREEN 100.&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 화면&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;현재 상황은 200번 Screen에서 SAVE버튼을 눌러 100 Screen으로 넘어갔을 때 ALV List에 저장된 정보가 반영이 되지 않는 문제가 있었습니다. 따라서 해당 코드를 200번 Screen의 PAI 'SAVE' User-Command에 코드를 추가하였습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;439&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqCCJX/btsLI4bmjUb/1JsUBq6C8zRGdnxCZCBom1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqCCJX/btsLI4bmjUb/1JsUBq6C8zRGdnxCZCBom1/img.png&quot; data-alt=&quot;SAPGUI_SET_FUNCTIONCODE 코드 추가&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqCCJX/btsLI4bmjUb/1JsUBq6C8zRGdnxCZCBom1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdqCCJX%2FbtsLI4bmjUb%2F1JsUBq6C8zRGdnxCZCBom1%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;681&quot; height=&quot;273&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;439&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SAPGUI_SET_FUNCTIONCODE 코드 추가&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;341&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n3WsX/btsLJJ5mPt2/sjKxSi35okp129DZNvPYgk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n3WsX/btsLJJ5mPt2/sjKxSi35okp129DZNvPYgk/img.png&quot; data-alt=&quot;저장 버튼을 눌러 200번 Screen의 &amp;amp;lsquo;SAVE&amp;amp;rsquo; 기능을 실행.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n3WsX/btsLJJ5mPt2/sjKxSi35okp129DZNvPYgk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn3WsX%2FbtsLJJ5mPt2%2FsjKxSi35okp129DZNvPYgk%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;675&quot; height=&quot;223&quot; data-origin-width=&quot;1034&quot; data-origin-height=&quot;341&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;저장 버튼을 눌러 200번 Screen의 &amp;lsquo;SAVE&amp;rsquo; 기능을 실행.&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;479&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bPumkf/btsLIMos7Di/ozKjGA36tCa0xmZgYqNKj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bPumkf/btsLIMos7Di/ozKjGA36tCa0xmZgYqNKj1/img.png&quot; data-alt=&quot;SAPGUI_SET_FUNCTIONCODE 활용해서 100 Screen 에서 Function Code &amp;amp;rsquo; SEARCH &amp;amp;rsquo; 버튼을 자동으로 실행&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bPumkf/btsLIMos7Di/ozKjGA36tCa0xmZgYqNKj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbPumkf%2FbtsLIMos7Di%2FozKjGA36tCa0xmZgYqNKj1%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;676&quot; height=&quot;283&quot; data-origin-width=&quot;1143&quot; data-origin-height=&quot;479&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;SAPGUI_SET_FUNCTIONCODE 활용해서 100 Screen 에서 Function Code &amp;rsquo; SEARCH &amp;rsquo; 버튼을 자동으로 실행&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;해당 200번에서 100번으로 넘어오면서 SEARCH Function Code를 강제로 실행하여 수정한 내용이 ALV에 반영된 것을 확인할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;주의 사항&lt;/span&gt;&lt;/h4&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: 'Noto Serif KR';&quot;&gt;SET_FUNCTIONCODE에 전달되는 기능 코드가 정확해야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;SET_FUNCTIONCODE는 수동 입력 대신 자동화로 명령을 실행하기 때문에 오류 발생 시 오류 처리를 위한 로직을 추가하는 것이 좋습니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>code</category>
      <category>function</category>
      <category>ok_code</category>
      <category>pai</category>
      <category>SAP</category>
      <category>SAPGUI_SET_FUNCTIONCODE</category>
      <category>set_functioncode</category>
      <category>sy-ucomm</category>
      <category>강제</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/20</guid>
      <comments>https://abap-developer.tistory.com/20#entry20comment</comments>
      <pubDate>Sat, 11 Jan 2025 01:30:37 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] SAPGUI_PROGRESS_INDICATOR / 진행 상황 및 로딩 중 표시하기</title>
      <link>https://abap-developer.tistory.com/19</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오늘은 &quot;SAPGUI_PROGRESS_INDICATOR&quot;를 통해 프로그램 로딩 메세지를 출력해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기능설명&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 사용자에게 작업 진행 상황을 보여주는 메시지를 화면에 출력해 줍니다. 시스템의 작업 처리가 오래 걸리는 경우, 진행 상황을 시각적으로 표시하여 시스템이 멈춘 것이 아니라 작동 중인 것을 확인할 수 있도록 해줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Signature&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rcvq7/btsLKa2BXW7/ChkHqWQgt5KbfEOTkHNkt1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rcvq7/btsLKa2BXW7/ChkHqWQgt5KbfEOTkHNkt1/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rcvq7/btsLKa2BXW7/ChkHqWQgt5KbfEOTkHNkt1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Frcvq7%2FbtsLKa2BXW7%2FChkHqWQgt5KbfEOTkHNkt1%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;648&quot; height=&quot;131&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1736471495920&quot; class=&quot;lang-abap&quot; data-ke-language=&quot;abap&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DATA: gs_per TYPE i, &quot;현재 진행도를 알기 위한 변수
	  gs_loop TYPE i, &quot;몇 번 프로그램을 실행할지
	  gs_msg TYPE string. &quot;펑션에서 보여질 메시지
      
INITIALIZATION.
gs_loop = 10. &quot;10번만 돌겠다
START-OF-SELECTION.

DO gs_loop TIMES. &quot;gs_loop(10)번만 돌겠다
	gs_per = sy-index. &quot;현재 loop문을 돈 횟수
	gs_msg = |진행중 { gs_loop } of { gs_per }|. &quot;메세지에서 진행도를 보여줄 문장
	&quot;CONCATENATE '진행중' gs_loop 'of' gs_index INTO gs_msg SEPARATED BY space.
	CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
		EXPORTING
			percentage = gs_per * 10 / gs_loop &quot;퍼센티지 표현
			text = gs_msg. &quot;진행도 보여줄 메세지
			WAIT UP TO 1 SECONDS. &quot;확인을 위한 1초 딜레이
ENDDO.

WRITE: '작업이 끝났습니다＇. &quot;모두 끝났을 때&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 화면&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;129&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/v8lgX/btsLHvgOVnb/aDh0O2t5e218k8I1V0JXs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/v8lgX/btsLHvgOVnb/aDh0O2t5e218k8I1V0JXs1/img.png&quot; data-alt=&quot;진행 중인 표시 (SAP 메세지 창)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/v8lgX/btsLHvgOVnb/aDh0O2t5e218k8I1V0JXs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fv8lgX%2FbtsLHvgOVnb%2FaDh0O2t5e218k8I1V0JXs1%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;556&quot; height=&quot;129&quot; data-origin-width=&quot;556&quot; data-origin-height=&quot;129&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;진행 중인 표시 (SAP 메세지 창)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UZlNV/btsLIF3QjKJ/9MRRkvgllQtWC0MDiAN1u0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UZlNV/btsLIF3QjKJ/9MRRkvgllQtWC0MDiAN1u0/img.png&quot; data-alt=&quot;완료 후 WRITE문&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UZlNV/btsLIF3QjKJ/9MRRkvgllQtWC0MDiAN1u0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUZlNV%2FbtsLIF3QjKJ%2F9MRRkvgllQtWC0MDiAN1u0%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;266&quot; height=&quot;101&quot; data-origin-width=&quot;266&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;완료 후 WRITE문&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 주의 사항&lt;/span&gt;&lt;/h4&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: 'Noto Serif KR';&quot;&gt; WAIT UP TO 1 SECOND를 넣은 이유는, Function이 순식간에 지나가서 일어났는지 모를 수도 있기 때문입니다. 물론 매우 방대한 양의 데이터를 가지고 있으면 아니겠지만 그렇지 않을 경우 못 볼 수도 있어서 만약 처리 절차를 보여주고 싶은데 처리속도가 너무 빠른 경우 알아 볼 수 있도록 딜레이를 걸어주는 것이 좋을 것 같습니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;백분율로 나누어 진행도를 보여주기 때문에 1~100 사이의 정수가 아니라면 오류가 발생합니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>MRP</category>
      <category>SAP</category>
      <category>SAPGUI_PROGRESS_INDICATOR</category>
      <category>to</category>
      <category>Up</category>
      <category>Wait</category>
      <category>딜레이</category>
      <category>로딩</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/19</guid>
      <comments>https://abap-developer.tistory.com/19#entry19comment</comments>
      <pubDate>Fri, 10 Jan 2025 10:15:51 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] REUSE_ALV_GRID_DISPLAY / 빠르고 쉽게 ALV 출력하기</title>
      <link>https://abap-developer.tistory.com/18</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;개발을 하다보면, ALV를 정말 많이 만들곤 합니다. 하지만, ALV만들때 Custom control 객체를 만들고 또 그 위에 gird 객체를 올리는 등의 복잡한 과정이 필요합니다. 하지만 이를 간단하게 ALV를 출력하는 &quot;REUSE_ALV_GRID_DISPLAY&quot; function를 소개해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기능설명&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; Internal Table에 있는 데이터들을 ALV로 간 단하게 보 여주기 위한 Function입니다. 앞에 서 설명한 REUSE_ALV_FIELDCATALOG_MERGE Function과 연계하여 사용하면 더욱 빠르고 쉽게 ALV를 출력할 수 있습니다. Screen Layout에서 Container를 따로 설정해주지 않아도 사용할 수 있습니다. &lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Signature&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1fJQz/btsLGmjK3yd/OMgVSfniIw819vkljRZkrk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1fJQz/btsLGmjK3yd/OMgVSfniIw819vkljRZkrk/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1fJQz/btsLGmjK3yd/OMgVSfniIw819vkljRZkrk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1fJQz%2FbtsLGmjK3yd%2FOMgVSfniIw819vkljRZkrk%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;646&quot; height=&quot;613&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTVZYx/btsLInBsDPU/e7tKQ76chvLZbsMGZAm5V0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTVZYx/btsLInBsDPU/e7tKQ76chvLZbsMGZAm5V0/img.png&quot; data-alt=&quot;Exporting Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTVZYx/btsLInBsDPU/e7tKQ76chvLZbsMGZAm5V0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTVZYx%2FbtsLInBsDPU%2Fe7tKQ76chvLZbsMGZAm5V0%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;644&quot; height=&quot;159&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;159&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exporting Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BBCpg/btsLIdsxRaC/Q24XieCqgMjINJQPsbAR11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BBCpg/btsLIdsxRaC/Q24XieCqgMjINJQPsbAR11/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BBCpg/btsLIdsxRaC/Q24XieCqgMjINJQPsbAR11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBBCpg%2FbtsLIdsxRaC%2FQ24XieCqgMjINJQPsbAR11%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;643&quot; height=&quot;96&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예시 코드&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736392424522&quot; class=&quot;lang-abap&quot; data-ke-language=&quot;abap&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;TABLES: sflight.
TYPES: BEGIN OF ty_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 ty_sflight.

TYPE-POOLS: slis.

DATA: gt_sflight TYPE TABLE OF ty_sflight,
	  gs_sflight TYPE ty_sflight.
      
DATA: gt_fieldcat TYPE slis_t_fieldcat_alv,
	  gs_layout TYPE slis_layout_alv,
	  gd_repid LIKE sy-repid,
	  g_save TYPE c VALUE 'X',
	  g_variant TYPE disvariant,
	  gx_variant TYPE disvariant.
      
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-b01.
	PARAMETERS p_sfl TYPE sflight-carrid.
SELECTION-SCREEN END OF BLOCK b1.

START-OF-SELECTION.
gs_sflight-carrid = p_sfl.
* SFLIGHT 테이블에서 데이터 선택 사용자가 입력한 값에 따른
SELECT carrid connid fldate price currency planetype
	FROM sflight
	INTO TABLE gt_sflight
	UP TO 100 ROWS
	WHERE carrid = gs_sflight-carrid.
* 필드 카탈로그 생성
PERFORM build_fieldcat.
* 레이아웃 설정
gs_layout-zebra = 'X'.
gs_layout-colwidth_optimize = 'X'.
* ALV 그리드 표시 (별도의 화면을 구성하지 않아도 사용 가능)
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
	EXPORTING
		i_callback_program = gd_repid
		&quot;i_callback_top_of_page = 'TOP-OF-PAGE'
		&quot;i_callback_user_command = 'USER_COMMAND'
		is_layout = gs_layout
		it_fieldcat = gt_fieldcat
		i_save = 'X'
		is_variant = g_variant
	TABLES
		t_outtab = gt_sflight
	EXCEPTIONS
		program_error = 1
		OTHERS = 2.&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 화면&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/C0Xf2/btsLIg3DWCk/uuj376nhs8utLuw2PSQAKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/C0Xf2/btsLIg3DWCk/uuj376nhs8utLuw2PSQAKk/img.png&quot; data-origin-width=&quot;445&quot; data-origin-height=&quot;568&quot; data-is-animation=&quot;false&quot; style=&quot;width: 51.8228%; margin-right: 10px;&quot; data-widthpercent=&quot;52.43&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/C0Xf2/btsLIg3DWCk/uuj376nhs8utLuw2PSQAKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FC0Xf2%2FbtsLIg3DWCk%2Fuuj376nhs8utLuw2PSQAKk%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;445&quot; height=&quot;568&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/be6Nnd/btsLG3RY6jr/9AkJuVY7Q76SS81nGJB7W0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/be6Nnd/btsLG3RY6jr/9AkJuVY7Q76SS81nGJB7W0/img.png&quot; data-origin-width=&quot;403&quot; data-origin-height=&quot;567&quot; data-is-animation=&quot;false&quot; style=&quot;width: 47.0144%;&quot; data-widthpercent=&quot;47.57&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/be6Nnd/btsLG3RY6jr/9AkJuVY7Q76SS81nGJB7W0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbe6Nnd%2FbtsLG3RY6jr%2F9AkJuVY7Q76SS81nGJB7W0%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;403&quot; height=&quot;567&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;Internal Table의 값을 ALV로 출력한 화면과 SUM 함수를 통해 Total행을 출력한 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;주의사항&lt;/span&gt;&lt;/h4&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: 'Noto Serif KR';&quot;&gt;I_CALLBACK_PROGRAM의 프로그램은 항상 INCLUDE의 이름이 아닌 Report, Function group, Module pool or Form routine pool이어야 합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;FieldCatalog Table의 TYPE이 cl_gui_alv_grid Class에서 흔히 쓰는 LVC_T_FCAT type이 아닌 slis_t_fieldcat_alv 이기 때문에 TYPE을 잘 확인하고 사용하셔야 합니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>ALV</category>
      <category>grid</category>
      <category>Report</category>
      <category>reuse_alv_grid_display</category>
      <category>SAP</category>
      <category>Screen</category>
      <category>slis_t_fieldcat_alv</category>
      <category>total</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/18</guid>
      <comments>https://abap-developer.tistory.com/18#entry18comment</comments>
      <pubDate>Thu, 9 Jan 2025 12:23:54 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] POPUP_TO_GET_ONE_VALUE / 입력 값 받는 POPUP 출력하기</title>
      <link>https://abap-developer.tistory.com/17</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;안녕하세요 오늘은 하나의 입력 값을 받을 수 있는 POPUP창을 띄우는 &quot;POPUP_TO_GET_ONE_VALUE&quot; Function를 정리해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기능 설명&lt;/span&gt;&lt;/h4&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: 'Noto Serif KR';&quot;&gt; 하나의 값을 선택 또는 입력 받을 수 있는 팝업창을 생성합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;팝업창에 사용자가 입력하고 싶은 값을 입력할 수 있습니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;입력한 값에 대하여 사용 여부를 버튼을 이용해 선택한다 &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Signature&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;227&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwvkVj/btsLHRIQRze/nzkvM5ZuDC6rDOhkYPs2mk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwvkVj/btsLHRIQRze/nzkvM5ZuDC6rDOhkYPs2mk/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwvkVj/btsLHRIQRze/nzkvM5ZuDC6rDOhkYPs2mk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwvkVj%2FbtsLHRIQRze%2FnzkvM5ZuDC6rDOhkYPs2mk%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;644&quot; height=&quot;227&quot; data-origin-width=&quot;644&quot; data-origin-height=&quot;227&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;133&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/buA5sg/btsLHn9gLW0/UgmRPTCv8wPFhSV9sNyn61/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/buA5sg/btsLHn9gLW0/UgmRPTCv8wPFhSV9sNyn61/img.png&quot; data-alt=&quot;Exporting Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/buA5sg/btsLHn9gLW0/UgmRPTCv8wPFhSV9sNyn61/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbuA5sg%2FbtsLHn9gLW0%2FUgmRPTCv8wPFhSV9sNyn61%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;647&quot; height=&quot;133&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;133&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exporting Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/daFZPm/btsLG0T2bYy/F6XZhSLKY7fgXDnYMyvkC0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/daFZPm/btsLG0T2bYy/F6XZhSLKY7fgXDnYMyvkC0/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/daFZPm/btsLG0T2bYy/F6XZhSLKY7fgXDnYMyvkC0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdaFZPm%2FbtsLG0T2bYy%2FF6XZhSLKY7fgXDnYMyvkC0%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;643&quot; height=&quot;93&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예제코드&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736302536291&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CALL FUNCTION 'POPUP_TO_GET_ONE_VALUE'
	EXPORTING
		textline1 = '이름을 입력하세요'
		textline2 = '이름 입력 후 Continue 클릭하면 입력됩니다'
		textline3 = 'Cancel 클릭하면 이름 입력 취소됩니다'
		titel = '팝업창'
		valuelength = 10
	IMPORTING
		answer = answer
		value1 = value1
	EXCEPTIONS
		titel_too_long = 1
		OTHERS = 2.&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 화면&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMht7V/btsLGlc6BRB/dQrNiuSjhA0SNwC62FKCr0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMht7V/btsLGlc6BRB/dQrNiuSjhA0SNwC62FKCr0/img.png&quot; data-origin-width=&quot;563&quot; data-origin-height=&quot;308&quot; data-is-animation=&quot;false&quot; width=&quot;481&quot; height=&quot;263&quot; style=&quot;width: 56.2213%; margin-right: 10px;&quot; data-widthpercent=&quot;56.88&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMht7V/btsLGlc6BRB/dQrNiuSjhA0SNwC62FKCr0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMht7V%2FbtsLGlc6BRB%2FdQrNiuSjhA0SNwC62FKCr0%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;563&quot; height=&quot;308&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cf4ddg/btsLGP6ifrD/jZixomQLFM6TXK5LKshOEK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf4ddg/btsLGP6ifrD/jZixomQLFM6TXK5LKshOEK/img.png&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;402&quot; data-is-animation=&quot;false&quot; width=&quot;480&quot; height=&quot;346&quot; style=&quot;width: 42.6159%;&quot; data-widthpercent=&quot;43.12&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf4ddg/btsLGP6ifrD/jZixomQLFM6TXK5LKshOEK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf4ddg%2FbtsLGP6ifrD%2FjZixomQLFM6TXK5LKshOEK%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;557&quot; height=&quot;402&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
  &lt;figcaption&gt;초기 화면과 POPUP_TO_GET_ONE_VALUE를 통해 출력된 POPUP창&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;407&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nR8QM/btsLHSgGcij/YDSNABNqdZYT0piL4otKD1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nR8QM/btsLHSgGcij/YDSNABNqdZYT0piL4otKD1/img.png&quot; data-alt=&quot;입력 후 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nR8QM/btsLHSgGcij/YDSNABNqdZYT0piL4otKD1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnR8QM%2FbtsLHSgGcij%2FYDSNABNqdZYT0piL4otKD1%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;409&quot; height=&quot;295&quot; data-origin-width=&quot;564&quot; data-origin-height=&quot;407&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;입력 후 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이름 버튼을 통해서 POPUP 창을 띄우고, 해 당 POPUP 창에 대 한 설명을 Text Line으로 보여줍니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;이후 사용자가 값을 입력하고 Continue 버튼을 누르면 해당 값을 Exporting Parameter value1를 통해 입력되었던 값을 반환받습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Cancel 버튼을 누를 경우 팝업 창을 나가게 되며&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: start;&quot;&gt;Exporting Parameter&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;answer를 통해 A값을 반환받고, 사용자가 입력한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: start;&quot;&gt;value1&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;값을 반환받지 않습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;주의사항&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;입력할 값의 최대 길이를 지정하는 Value Length는 3자릿수까지 가능하고 그 이상을 넘어가면 오류가 발생합니다. EX) valuelength = 1000 이렇게 999를 넘어 3자리 수가 넘어가면 오류가 발생합니다.&lt;/li&gt;
&lt;li&gt;TEXTLINE을 자신이 사용하고자 하는 개수에 맞게 사용 가능하지만 3개 이상으로 사용할 수 없습니다.&lt;/li&gt;
&lt;li&gt;TEXTLINE을 하나만 사용하고 싶다면 TEXTLINE1만 사용하고 2와 3을 사용하지 않아도 됩니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>input</category>
      <category>popup</category>
      <category>popup_to_get_one_value</category>
      <category>SAP</category>
      <category>titel_too_long</category>
      <category>입력</category>
      <category>팝업</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/17</guid>
      <comments>https://abap-developer.tistory.com/17#entry17comment</comments>
      <pubDate>Wed, 8 Jan 2025 11:26:47 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] POPUP_TO_DISPLAY_TEXT / Text POPUP 출력하기</title>
      <link>https://abap-developer.tistory.com/16</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;안녕하세요 오늘은 텍스트를 POPUP으로 출력해주는 &quot;POPUP_TO_DISPLAY_TEXT&quot;를 정리하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기능 설명&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;사용자에게 2줄로 된 정보 메시지를 보여주는 FUNCTION 입니다. 사용자에게 정보를 제공할 수 있습니다. POPUP 창에 지정된 정보를 보여줄 수 있고, 사용자가 어떤 행동을 취해도 POPUP 창의 정보가 다르게 보이지 않습니다. 기본적으로 CONTINUE 버튼이 제공되고, 버튼을 누를 시 전에 있던 화면으로 돌아갑니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Signature&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/siSuO/btsLFJELGU9/J8By8AtBUM73evXD8Kdz3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/siSuO/btsLFJELGU9/J8By8AtBUM73evXD8Kdz3K/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/siSuO/btsLFJELGU9/J8By8AtBUM73evXD8Kdz3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FsiSuO%2FbtsLFJELGU9%2FJ8By8AtBUM73evXD8Kdz3K%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;647&quot; height=&quot;216&quot; data-origin-width=&quot;647&quot; data-origin-height=&quot;216&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예시 코드&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736216256528&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;SELECTION-SCREEN

	PUSHBUTTON: /2(10) gv_text USER-COMMAND on.
    
INITIALIZATION.

	gv_text = '종오'.
    
AT SELECTION-SCREEN.

	CASE sy-ucomm.
    
	WHEN 'ON&amp;rsquo;.
		CALL FUNCTION 'POPUP_TO_DISPLAY_TEXT'
			EXPORTING
				TITEL = '학술제 펑션 예제 '
				textline1 = '이름: 김종오'
				TEXTLINE2 = '키:180 몸무게:180'
				START_COLUMN = 25
				START_ROW = 6 .
                
	ENDCASE.&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; Push button 을 누르면 sy-ucomm에 user command가 입력되어 &amp;lsquo;ON&amp;rsquo;을 타고 Case 문의 Function 이 실행되어 메시지가 출력됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 화면&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VNVBl/btsLDXqT3xJ/85zdyc3oQYBI70fzrSp200/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VNVBl/btsLDXqT3xJ/85zdyc3oQYBI70fzrSp200/img.png&quot; data-alt=&quot;&amp;amp;gt; 사용자에게 2줄로 된 정보 메시지를 보여주는 FUNCTION.&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VNVBl/btsLDXqT3xJ/85zdyc3oQYBI70fzrSp200/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVNVBl%2FbtsLDXqT3xJ%2F85zdyc3oQYBI70fzrSp200%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;829&quot; height=&quot;160&quot; data-origin-width=&quot;1173&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;&amp;gt; 사용자에게 2줄로 된 정보 메시지를 보여주는 FUNCTION.&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;주의 사항&lt;/span&gt;&lt;/h4&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: 'Noto Serif KR';&quot;&gt; 제목이나 텍스트의 글자 수가 70을 넘어가면 표시되지 않고 잘립니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;TEXTLINE1은 필수 필드입니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>case</category>
      <category>popup</category>
      <category>popup_to_display_text</category>
      <category>SAP</category>
      <category>sy-ucomm</category>
      <category>text</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/16</guid>
      <comments>https://abap-developer.tistory.com/16#entry16comment</comments>
      <pubDate>Tue, 7 Jan 2025 11:21:26 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] POPUP_TO_CONFIRM / POPUP창 출력하여 반환 값 받기</title>
      <link>https://abap-developer.tistory.com/15</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오늘은 정말 정석적인 Function &quot;POPUP_TO_CONFIRM&quot;를 정리해보도록 하겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기능설명&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; POPUP이 출력되고 POPUP창에는 2개의 사용자 지정 버튼과 1개의 Cancel 버튼 그리고 Text들이 출력되고 버튼을 클릭하면 ANSWER Parameter로 왼쪽부터 순서대로 1, 2, A 값을 반환합니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Signature&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;523&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bjD19F/btsLCIN2CJZ/MicG2JHruC8Xb3qvzsRhuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bjD19F/btsLCIN2CJZ/MicG2JHruC8Xb3qvzsRhuK/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bjD19F/btsLCIN2CJZ/MicG2JHruC8Xb3qvzsRhuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbjD19F%2FbtsLCIN2CJZ%2FMicG2JHruC8Xb3qvzsRhuK%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;643&quot; height=&quot;523&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;523&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;100&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWD7ZM/btsLDnQcx7Y/e9tTcoH8kQ4tIYPOVK5VvK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWD7ZM/btsLDnQcx7Y/e9tTcoH8kQ4tIYPOVK5VvK/img.png&quot; data-alt=&quot;Exporting Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWD7ZM/btsLDnQcx7Y/e9tTcoH8kQ4tIYPOVK5VvK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWD7ZM%2FbtsLDnQcx7Y%2Fe9tTcoH8kQ4tIYPOVK5VvK%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;645&quot; height=&quot;100&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;100&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exporting Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/1RUWB/btsLDN2gvP4/jfj2oOOJLLnik7Ta2PLD8k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/1RUWB/btsLDN2gvP4/jfj2oOOJLLnik7Ta2PLD8k/img.png&quot; data-alt=&quot;Tables Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/1RUWB/btsLDN2gvP4/jfj2oOOJLLnik7Ta2PLD8k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F1RUWB%2FbtsLDN2gvP4%2Fjfj2oOOJLLnik7Ta2PLD8k%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;641&quot; height=&quot;93&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Tables Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;91&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6DCDq/btsLDMhYa3q/nhE7yltmOA4klszeWsBOj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6DCDq/btsLDMhYa3q/nhE7yltmOA4klszeWsBOj1/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6DCDq/btsLDMhYa3q/nhE7yltmOA4klszeWsBOj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6DCDq%2FbtsLDMhYa3q%2FnhE7yltmOA4klszeWsBOj1%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;642&quot; height=&quot;91&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;91&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예시 코드&amp;nbsp;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1736130721176&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CALL FUNCTION 'POPUP_TO_CONFIRM'
	EXPORTING
		TITLEBAR = 'ASAP팀 학술제'
		* DIAGNOSE_OBJECT = ' '
		text_question = 'ASAP팀의 팀원인가요?'
		TEXT_BUTTON_1 = 'Yes'(001)
		ICON_BUTTON_1 = 'ICON_CHECKED'
		TEXT_BUTTON_2 = 'No'(002)
		ICON_BUTTON_2 = 'ICON_INCOMPLETE'
		DEFAULT_BUTTON = '1'
		DISPLAY_CANCEL_BUTTON = 'X'
		* USERDEFINED_F1_HELP = ' '
		START_COLUMN = 25
		START_ROW = 6
		POPUP_TYPE = 'ICON'
		IV_QUICKINFO_BUTTON_1 = '누르면 다음으로 이동합니다.'
		IV_QUICKINFO_BUTTON_2 = '누르면 프로그램이 종료됩니다.'
	IMPORTING
		ANSWER = gv_answer
	#* TABLES
	#	* PARAMETER = gt_spar
	EXCEPTIONS
		TEXT_NOT_FOUND = 1
		OTHERS = 2&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 화면&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;400&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vN4I4/btsLEsi0O62/vVZYyFHzMrz6rHMNiiJztk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vN4I4/btsLEsi0O62/vVZYyFHzMrz6rHMNiiJztk/img.png&quot; data-alt=&quot;POPUP창과 Quick Info Text&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vN4I4/btsLEsi0O62/vVZYyFHzMrz6rHMNiiJztk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvN4I4%2FbtsLEsi0O62%2FvVZYyFHzMrz6rHMNiiJztk%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;670&quot; height=&quot;243&quot; data-origin-width=&quot;1103&quot; data-origin-height=&quot;400&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;POPUP창과 Quick Info Text&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; POPUP창을 띄우고 POPUP창안에 표시되는 내용들을 각 Parameter를 통해 속성을 정의하여 사용자에게 저장 여부, 진행 여부등을 체크할 수 있는 기능으로 사용할 수 있습니다. 해당 사진에서 Yes 버튼을 누르면 Exporting Parameter ANSWER에서는 1이 반환되고 No 버튼을 누르면 2가 반환됩니다. 이는 첫 번째 버튼은 1, 두 번째 버튼은 2라고 생각하면 간단합니다. 그리고 Cancel의 버튼의 경우 'A'가 출력됩니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;주의 사항&lt;/span&gt;&lt;/h4&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: 'Noto Serif KR';&quot;&gt;ANSWER의 변수 타입을 N(Numeric)으로 선언하여 사용하면 CANCEL버튼을 눌렀을 때 &amp;lsquo;A&amp;rsquo;값이 반환되기 때문에 오류를 방지하기 위해서 Data Type를 &amp;lsquo;C&amp;rsquo;로 선언하는 것이 바람직합니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>answer</category>
      <category>cx_sy_conversion_no_number</category>
      <category>Info</category>
      <category>popup</category>
      <category>popup_to_confirm</category>
      <category>Quick</category>
      <category>SAP</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/15</guid>
      <comments>https://abap-developer.tistory.com/15#entry15comment</comments>
      <pubDate>Mon, 6 Jan 2025 11:49:04 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] GUI_UPLOAD / 로컬 파일을 서버에 업로드 하기</title>
      <link>https://abap-developer.tistory.com/14</link>
      <description>&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;안녕하세요 어제 말씀드린 것 처럼 오늘은 다운로드의 반대로 업로드하는 Function를 정리해보겠습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기능 설명&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&quot;GUI_UPLOAD&quot; Function는 파일을 로컬 시스템에서 서버로 업로드할 때 사용하는 함수 모듈입니다. 이 함수는 텍스트 파일, CSV 파일, 또는 Excel 파일과 같은 다양한 파일 형식을 업로드할 수 있습니다. 특히 GUI_UPLOAD는 데이터 양이 많을 때 빠른 처리 속도를 자랑하며, 사용자의 PC 환경에 크게 의존하지 않아 안정적인 업로드가 가능합니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;&quot;&gt;Signature&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;553&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVCzMu/btsLDd0qBVX/7Y2c5CpxuUjQp8Zj3fjbak/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVCzMu/btsLDd0qBVX/7Y2c5CpxuUjQp8Zj3fjbak/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVCzMu/btsLDd0qBVX/7Y2c5CpxuUjQp8Zj3fjbak/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVCzMu%2FbtsLDd0qBVX%2F7Y2c5CpxuUjQp8Zj3fjbak%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;643&quot; height=&quot;553&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;553&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;182&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbbFx9/btsLEdFbJBB/vqqIX4E5aHmkMlymlWipwK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbbFx9/btsLEdFbJBB/vqqIX4E5aHmkMlymlWipwK/img.png&quot; data-alt=&quot;Exporting Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbbFx9/btsLEdFbJBB/vqqIX4E5aHmkMlymlWipwK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbbFx9%2FbtsLEdFbJBB%2FvqqIX4E5aHmkMlymlWipwK%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;646&quot; height=&quot;182&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;182&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exporting Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;101&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bo6v1K/btsLDYVKuKg/syF6jZtGSnFgiSJ6MfZxwk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bo6v1K/btsLDYVKuKg/syF6jZtGSnFgiSJ6MfZxwk/img.png&quot; data-alt=&quot;Changing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bo6v1K/btsLDYVKuKg/syF6jZtGSnFgiSJ6MfZxwk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbo6v1K%2FbtsLDYVKuKg%2FsyF6jZtGSnFgiSJ6MfZxwk%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;645&quot; height=&quot;101&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;101&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Changing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mcBEA/btsLEgomCW9/ie75QkDY04SVvMB3bXO0k1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mcBEA/btsLEgomCW9/ie75QkDY04SVvMB3bXO0k1/img.png&quot; data-alt=&quot;Tables Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mcBEA/btsLEgomCW9/ie75QkDY04SVvMB3bXO0k1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmcBEA%2FbtsLEgomCW9%2Fie75QkDY04SVvMB3bXO0k1%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;642&quot; height=&quot;95&quot; data-origin-width=&quot;642&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Tables Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;427&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lN8TS/btsLC5Vw9UA/7xXcJOkyPcUwUEvk9XrWGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lN8TS/btsLC5Vw9UA/7xXcJOkyPcUwUEvk9XrWGk/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lN8TS/btsLC5Vw9UA/7xXcJOkyPcUwUEvk9XrWGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlN8TS%2FbtsLC5Vw9UA%2F7xXcJOkyPcUwUEvk9XrWGk%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;643&quot; height=&quot;427&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;427&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;184&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kBN1C/btsLBzcegWu/3UmtKJhkHwMZi9oZlkcmuK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kBN1C/btsLBzcegWu/3UmtKJhkHwMZi9oZlkcmuK/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kBN1C/btsLBzcegWu/3UmtKJhkHwMZi9oZlkcmuK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkBN1C%2FbtsLBzcegWu%2F3UmtKJhkHwMZi9oZlkcmuK%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;646&quot; height=&quot;184&quot; data-origin-width=&quot;646&quot; data-origin-height=&quot;184&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;예시코드&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;pre id=&quot;code_1735874263301&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;REPORT zup_01.
DATA: lt_sflight TYPE TABLE OF sflight,
lv_filename TYPE string.
lv_filename = 'C:\Users\조상현\Desktop\3학년 2학기\학술제 연습\flight_11.txt'.
START-OF-SELECTION.
#1,ASC Type File Upload
CALL FUNCTION 'GUI_UPLOAD'
	EXPORTING
		filename = lv_filename
		filetype = 'ASC'
		has_field_separator = 'X'
	TABLES
		data_tab = lt_sflight.
IF sy-subrc = 0.
	cl_demo_output=&amp;gt;display( lt_sflight[] ).
ELSE.
	WRITE: / 'Error uploading file:', sy-subrc.
ENDIF.

#2, BIN Type File Upload
CALL FUNCTION 'GUI_UPLOAD'
	EXPORTING
		filename = lv_filename
		filetype = 'BIN'
		has_field_separator = ' '
	TABLES
		data_tab = lt_sflight.
        
IF sy-subrc = 0.
	cl_demo_output=&amp;gt;display( lt_sflight[] ).
ELSE.
	WRITE: / 'Error uploading file:', sy-subrc.
ENDIF.&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 결과&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;247&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c0bEJP/btsLEqxIs2n/fOIfTlzuZvaWXgo1uk5zF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c0bEJP/btsLEqxIs2n/fOIfTlzuZvaWXgo1uk5zF0/img.png&quot; data-alt=&quot;외부에서 SAP로 파일을 불러올 때 SAP Security
정책상 불러와도 되는지 사용자에게 확인하는 팝업 창&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c0bEJP/btsLEqxIs2n/fOIfTlzuZvaWXgo1uk5zF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc0bEJP%2FbtsLEqxIs2n%2FfOIfTlzuZvaWXgo1uk5zF0%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;602&quot; height=&quot;223&quot; data-origin-width=&quot;667&quot; data-origin-height=&quot;247&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;외부에서 SAP로 파일을 불러올 때 SAP Security
정책상 불러와도 되는지 사용자에게 확인하는 팝업 창&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1135&quot; data-origin-height=&quot;712&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj00Eq/btsLDL3uiU4/ItEkAFls3vb0yFQPhWj4QK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj00Eq/btsLDL3uiU4/ItEkAFls3vb0yFQPhWj4QK/img.png&quot; data-alt=&quot;Demo_output를 통한 Upload한 데이터 출력 화면&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj00Eq/btsLDL3uiU4/ItEkAFls3vb0yFQPhWj4QK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj00Eq%2FbtsLDL3uiU4%2FItEkAFls3vb0yFQPhWj4QK%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;1135&quot; height=&quot;712&quot; data-origin-width=&quot;1135&quot; data-origin-height=&quot;712&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Demo_output를 통한 Upload한 데이터 출력 화면&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;주의 사항&lt;/span&gt;&lt;/h4&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: 'Noto Serif KR';&quot;&gt;Field name : 경로가 유효하지 않은 경우 관련 예외가 트리거됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;INTRM : ALV에 옮기는 과정입니다. ABAP Type으로 변경을 해줘야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;Field Type 에 따라 업로드 파일이 처리되는 방식이 달라집니다. &lt;/span&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;'BIN' (이진 데이터) 이진 표현을 파일에서 그대로 읽어옵니다. 즉, 데이터가 변환되거나 해석되지 않습니다. 이때 이진 데이터는 'X&amp;rsquo; Type의 단일 열로 구성된 경우에만 예상한 결과를 얻을 수 있습니다. X type 은 ABAP에서 RAW 또는 RAWSTRING 타입으로, 이진 데이터를 그대로 저장하는 타입입니다. 이진 데이터는 텍스트와 달리 읽기 어려운 특수한 형식이기 때문에 데이터를 그대로 가져오기 위해선 하나의 열로 가져와야 합니다. 여러 열이 있으면 각 열에 데이터를 분리하여 넣어야 하는데, 이진 데이터는 그 자체로 데이터의 경계를 나누는 기준이 없기 때문에 분리하는 작업이 어렵고 오류가 발생하기 쉽습니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;lsquo;DAT&amp;rsquo; (날짜 데이터) 여러 개의 열이 포함된 테이블에서는 파일의 각 항목이 탭으로 구분되어야 합니다. 데이터는 변환되지 않고, 날짜는 사용자의 설정에 따라 정의된 형식으로 맞춰야 합니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;숫자 데이터 (I, N, P, F) 숫자를 나타내며, 숫자는 사용자의 설정에 정의된 십진수 형식으로 작성되어야 합니다. 시스템의 설정에 맞춰야 하며, 잘못된 형식으로 입력될 경우 오류가 발생할 수 있습니다. &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&amp;lsquo;D&amp;rsquo; (날짜) 사용자의 설정에 따라 정의된 날짜 형식으로 입력해야 합니다. YYYY-MM-DD 또는 DD.MM.YYYY 등등 &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;'T' (시간) 시간 데이터는 반드시 시:분:초 형식으로 입력되어야 합니다. (14:30:00) &lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;'ASC' (ASCII 데이터). 데이터는 파일에서 전체 길이로 포함되어야 하며, 고정된 길이만 허용됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;BIN Type 의 경우 Field_Separator 를 빈 값으로 설정해야 합니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;ASC Type 의 경우 Field_Separator 를 X 로 설정해야 합니다. &lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>ASC</category>
      <category>bin</category>
      <category>file</category>
      <category>gui_upload</category>
      <category>SAP</category>
      <category>SAP GUI</category>
      <category>upload</category>
      <category>업로드</category>
      <category>파일</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/14</guid>
      <comments>https://abap-developer.tistory.com/14#entry14comment</comments>
      <pubDate>Fri, 3 Jan 2025 12:27:57 +0900</pubDate>
    </item>
    <item>
      <title>[ABAP] GUI_DOWNLOAD / Internal Table 데이터를 로컬 파일로 저장하기</title>
      <link>https://abap-developer.tistory.com/13</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;다들 새해 복 많이 받으세요~ &lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;오늘은 &quot;&lt;span style=&quot;font-family: 'Noto Serif KR'; color: #333333; text-align: start;&quot;&gt;GUI_DOWNLOAD&quot; Function에 대해서 포스팅해보겠습니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;기능 설명&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; Internal Table의 데이터를 로컬 파일로 저장하는 기능을 제공하는 모듈입니다. 주로 기본 텍스트 데이터를 다운로드 할 때 사용되며, 이후 GUI_DOWNLOAD 모듈이 확장된 기능을 제공함에 따라 기존 DOWNLOAD 모듈은 구형 모듈로 간주됩니다. 해당 function를 통해 SAP GUI에 있는 데이터를 텍스트 파일이나 엑셀 파일로 변환하여 로컬 파일로 저장할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;&quot;&gt;Signature&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;675&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XKkHz/btsLBklLbNl/GqclnC8yA0w4s5VGdGx651/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XKkHz/btsLBklLbNl/GqclnC8yA0w4s5VGdGx651/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XKkHz/btsLBklLbNl/GqclnC8yA0w4s5VGdGx651/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXKkHz%2FbtsLBklLbNl%2FGqclnC8yA0w4s5VGdGx651%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;649&quot; height=&quot;675&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;675&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boFc9G/btsLCGuYwuU/WvrTNUANCkBBLYKFA0EN31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boFc9G/btsLCGuYwuU/WvrTNUANCkBBLYKFA0EN31/img.png&quot; data-alt=&quot;Importing Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boFc9G/btsLCGuYwuU/WvrTNUANCkBBLYKFA0EN31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboFc9G%2FbtsLCGuYwuU%2FWvrTNUANCkBBLYKFA0EN31%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;650&quot; height=&quot;309&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Importing Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6hN4y/btsLBklLcK0/rPnDW7joJRKTBrUh7UoLtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6hN4y/btsLBklLcK0/rPnDW7joJRKTBrUh7UoLtk/img.png&quot; data-alt=&quot;Exporting Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6hN4y/btsLBklLcK0/rPnDW7joJRKTBrUh7UoLtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6hN4y%2FbtsLBklLcK0%2FrPnDW7joJRKTBrUh7UoLtk%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;649&quot; height=&quot;95&quot; data-origin-width=&quot;649&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exporting Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;313&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bJVP9P/btsLCFQmk5n/bDmit72N4RKjooKy1k6B7k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bJVP9P/btsLCFQmk5n/bDmit72N4RKjooKy1k6B7k/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bJVP9P/btsLCFQmk5n/bDmit72N4RKjooKy1k6B7k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbJVP9P%2FbtsLCFQmk5n%2FbDmit72N4RKjooKy1k6B7k%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;643&quot; height=&quot;313&quot; data-origin-width=&quot;643&quot; data-origin-height=&quot;313&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;461&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Bz9I7/btsLDX3lA6B/f3RtrNa8yCofiqBV5aYSUk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Bz9I7/btsLDX3lA6B/f3RtrNa8yCofiqBV5aYSUk/img.png&quot; data-alt=&quot;Exception Parameter&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Bz9I7/btsLDX3lA6B/f3RtrNa8yCofiqBV5aYSUk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBz9I7%2FbtsLDX3lA6B%2Ff3RtrNa8yCofiqBV5aYSUk%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;645&quot; height=&quot;461&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;461&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Exception Parameter&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1735802634844&quot; class=&quot;ruby&quot; data-ke-language=&quot;ruby&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;DATA: gt_sflight TYPE TABLE OF sflight,
	gv_filename TYPE string,
	lt_fieldnames TYPE TABLE OF string.
START-OF-SELECTION.
#//Internal Table를 만들기 위한 SQL Statement&quot;
SELECT * FROM sflight INTO TABLE gt_sflight UP TO 30 ROWS.
#//다운로드할 파일 이름 설정&quot;
gv_filename = 'C:\Users\조상현\Desktop\3학년 2학기\flight_data1.txt'.


#1, ASC Type의 방식 Download
CALL FUNCTION 'GUI_DOWNLOAD'
	EXPORTING
		filename = gv_filename #다운로드 할 파일의 경로
		filetype = 'ASC' #다운로드 할 File의 Type를 결정 ASC / BIN
		append = &amp;rsquo;X&amp;rsquo; #다운로드 경로에 동일한 파일이 있을 경우 데이터를 추가할 때 뒤이어서 넣을지 overwrite할 지 결정
		write_field_separator = &amp;rsquo;X&amp;rsquo; #구분선 여부를 결정
	TABLES
	data_tab = gt_sflight. #다운로드할 Internal Table

#2, BIN(Binary) Type의 방식 Download
CALL FUNCTION 'GUI_DOWNLOAD'
	EXPORTING
		#BIN Type의 경우 그 파일의 크기를 지정해줄 수 있다.
		bin_filesize = 300
		filename = gv_filename
		filetype = 'BIN'
		append = ' '
		WRITE_FIELD_SEPARATOR = ''
		header = '00'
	TABLES
		data_tab = gt_sflight.
 IF sy-subrc &amp;lt;&amp;gt; 0.
 	WRITE: / 'Error by:', sy-subrc.
 ELSE.
 	WRITE: / 'download success.'.
 ENDIF.&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실행 결과&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;636&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/XHLfL/btsLCpG1x9T/d3EqIBnqb3ztrfaZuMD5K0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/XHLfL/btsLCpG1x9T/d3EqIBnqb3ztrfaZuMD5K0/img.png&quot; data-alt=&quot;sflight 테이블에서 30개의
행을 조회한 Internal Table&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/XHLfL/btsLCpG1x9T/d3EqIBnqb3ztrfaZuMD5K0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FXHLfL%2FbtsLCpG1x9T%2Fd3EqIBnqb3ztrfaZuMD5K0%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;799&quot; height=&quot;417&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;636&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;sflight 테이블에서 30개의
행을 조회한 Internal Table&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;506&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bBeQud/btsLCH8dZEO/gdPEBsMqbUqjPVOOURfrpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bBeQud/btsLCH8dZEO/gdPEBsMqbUqjPVOOURfrpk/img.png&quot; data-alt=&quot;#1, ASC Type의 파일로 다운로드 받았을 때의 .XLS 파일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bBeQud/btsLCH8dZEO/gdPEBsMqbUqjPVOOURfrpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbBeQud%2FbtsLCH8dZEO%2FgdPEBsMqbUqjPVOOURfrpk%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;1306&quot; height=&quot;506&quot; data-origin-width=&quot;1306&quot; data-origin-height=&quot;506&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;#1, ASC Type의 파일로 다운로드 받았을 때의 .XLS 파일&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bP2q6o/btsLCZOAHHZ/nZMHhgRcDZtqFcpKlUmTHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bP2q6o/btsLCZOAHHZ/nZMHhgRcDZtqFcpKlUmTHK/img.png&quot; data-alt=&quot;#2, BIN Type의 파일로 다운로드 받았을 때의 .XLS 파일&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bP2q6o/btsLCZOAHHZ/nZMHhgRcDZtqFcpKlUmTHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbP2q6o%2FbtsLCZOAHHZ%2FnZMHhgRcDZtqFcpKlUmTHK%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;1475&quot; height=&quot;186&quot; data-origin-width=&quot;1475&quot; data-origin-height=&quot;186&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;#2, BIN Type의 파일로 다운로드 받았을 때의 .XLS 파일&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 문자가 깨져 보이는 이유는 인코딩 방식이 다르기 때문에 보이는 형식이 다른 것 입니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;실제 데이터는 위 ASC Type의 데이터와 동일합니다. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;다음 포스팅에서 소개되는 GUI_UPLOAD에서 확인 할 수 있습니다.&lt;/span&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;font-family: 'Noto Serif KR';&quot;&gt; 주의 사항&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Filetype에 ASC와 BIN 타입을 제외한 다른 타입을 입력해서는 안됩니다. 해당 Function에서 지원하는 Type은 ASCII와 BINARY 두 가지 Type만 있기 때문입니다.&lt;/li&gt;
&lt;li&gt;다운로드 받는 파일의 확장자는 .xls, .txt 등 여러 형태로 다운 받을 수 있습니다.&lt;/li&gt;
&lt;li&gt;BIN과 ASC에서 사용할 수 있는 importing 파라미터가 달라서 각 형태에 해당하는 추가적인 파라미터를 이용할 때, 각 타입에 맞는 파라미터를 사용해야 한다.&lt;/li&gt;
&lt;li&gt;BIN type의 경우 00으로 하는 것보다 01로 하면 파일이 정갈하게 보입니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>ABAP Standard Function</category>
      <category>ABAP</category>
      <category>ASC</category>
      <category>bin</category>
      <category>Download</category>
      <category>gui_download</category>
      <category>gui_upload</category>
      <category>SAP</category>
      <category>txt</category>
      <category>엑셀</category>
      <author>ASAP ABAP</author>
      <guid isPermaLink="true">https://abap-developer.tistory.com/13</guid>
      <comments>https://abap-developer.tistory.com/13#entry13comment</comments>
      <pubDate>Thu, 2 Jan 2025 16:47:50 +0900</pubDate>
    </item>
  </channel>
</rss>