SAP ABAP 보고서 프로그래밍

⚡ 스마트 요약

ABAP 리포트 프로그래밍은 대량의 데이터를 선택, 처리 및 표시하는 실행 가능한 프로그램을 구축합니다. SAP 데이터. 이 페이지에서는 보고서 헤더 추가, 선택 화면, 이벤트 시퀀스, 서식 명령, 대화형 목록 및 논리 데이터베이스에 대해 설명합니다.

  • 📊 핵심 목적: 보고서 프로그램은 여러 테이블에서 데이터를 읽어 처리한 후, 서식을 지정하거나 다운로드 또는 이메일로 전송할 수 있는 목록 형태로 표시합니다.
  • 🧾 프로그램 유형 : 모든 보고서는 응용 분야와 연결되어 있고 전적으로 이벤트에 의해 구동되는 1형 실행 프로그램입니다.
  • 🏁 헤더 추가 사항: 표준 페이지 제목이 없습니다. LINE-크기, LINE-COUNT와 MESSAGE-ID는 첫 번째 REPORT 문에 있어야 합니다.
  • ⌨️ 선택 화면: PARAMETERS는 단일 값을 허용하고, SELECT-OPTIONS는 값의 범위 또는 집합을 허용합니다.
  • ⏱️ 이벤트 순서: 프로그램 로드, 초기화, 선택 화면, 선택 시작 및 선택 종료는 고정된 순서로 실행됩니다.
  • 🖱️ 대화형 목록: HIDE는 선택된 행의 필드 값을 저장하고, HOTSPOT은 목록 필드를 보조 목록에서 클릭 가능한 요소로 변환합니다.
  • 🗄️ 논리적 데이터베이스: SE36에서 생성되는 이 기능은 SELECT 문을 GET 이벤트로 대체하고 중앙 권한 검사를 추가합니다.

SAP ABAP 보고서 프로그래밍

ABAP 리포트 프로그래밍이란 무엇인가요?

SAPABAP은 보고서 프로그램과 대화형 프로그램, 두 가지 유형의 프로그램을 지원합니다. 보고서 프로그램은 대량의 데이터를 표시해야 할 때 사용됩니다.

신고 프로그램의 목적/사용

  • 여러 테이블의 데이터를 선택하고 처리한 후 표시해야 할 때 사용됩니다.
  • 보고서에 특별한 형식이 요구될 때 사용됩니다.
  • 보고서를 다운로드해야 할 때 사용됩니다. SAP Excel 시트로 배포됩니다.
  • 특정한 사람에게 보고서를 우편으로 보내야 할 때 사용합니다.

신고 프로그램 관련 중요 참고 사항

  • 보고서 프로그램은 항상 실행 가능한 프로그램입니다. 프로그램 유형은 항상 1입니다.
  • 모든 보고서 프로그램은 판매 및 유통, FI – CO 등과 같은 특정 애플리케이션 유형에 해당합니다. 교차 애플리케이션(예: '*' 유형)일 수도 있습니다.
  • 보고서 프로그래밍은 이벤트 기반 프로그래밍입니다.
  • 보고 프로그램의 첫 번째 줄은 항상 Report입니다. .
  • 목록 제목이나 프로그램 이름을 표시하지 않으려면 추가 표준 페이지 제목 없음 사용.
  • 특정 보고서의 줄 크기는 추가 기능을 사용하여 설정할 수 있습니다. 라인 크기 .
  • 특정 페이지의 줄 수는 추가 기능을 사용하여 설정할 수 있습니다. 라인 수 n(n1). N은 페이지의 줄 수이고 N1은 페이지 바닥글에 예약된 줄 수입니다.
  • 정보나 오류 메시지를 표시하려면 다음 추가 기능을 사용하여 프로그램에 메시지 클래스를 추가합니다. 메시지 ID . 메시지 클래스는 SE91에서 유지됩니다.

따라서 이상적인 보고 프로그램은 다음과 같이 시작해야 합니다.

Report <report name> no standard page heading

line-size <size>

line-count <n(n1)>

message-id <message class>.

보고서 프로그램 vs. 대화 상자 프로그램

두 프로그램 유형 모두 동일한 시스템에서 실행되지만, 해결하는 문제는 정반대입니다. 보고서 프로그램은 데이터를 읽고 표시하는 반면, 대화형 프로그램은 사용자가 화면을 통해 데이터를 관리할 수 있도록 합니다.

기준 보고서 프로그램 대화 프로그램
프로그램 유형 유형 1, 실행 가능 M형, 모듈 풀
에 의해 시작 프로그램 이름 또는 거래 코드 거래 코드만
흐름 제어 초기화 및 선택 시작과 같은 이벤트 PBO 및 PAI 모듈을 사용한 화면 흐름 로직
사용자 입력 생성된 선택 화면 스크린에서 디자인된 화면 Painter
일반적인 사용 대용량 데이터 표시 및 다운로드 비즈니스 데이터 생성 및 변경

선택 화면은 보고서가 입력값을 수집하는 곳이므로, 다음에서 설명합니다.

선택 화면

"선택 화면"이란 프로그램이 실행될 입력값을 지정하는 화면을 말합니다.

선택 화면은 일반적으로 다음에서 생성됩니다.

  1. 파라미터
  2. 선택 옵션

통사론

Selection-screen begin of screen <screen #>
selection-screen begin of block <#>  with frame title <text>
.........
.........
selection-screen end of block <#>
selection-screen end of screen <screen #>

파라미터

매개변수는 동적 선택을 수행하는 데 도움이 됩니다. 프로그램 실행의 한 주기 동안 하나의 값만 수용할 수 있습니다.

통사론

매개변수를 데이터 유형으로 정의

Parameters p_id(30) type c.

테이블 필드와 같은 매개변수 정의

Parameter p_id like <table name>-<field name>.

매개변수는 체크박스와 라디오 버튼이 될 수 있습니다.

Parameters p_id as checkbox.Parameters p_id1 radiobutton group <group name>.
Parameters p_id2  radiobutton group <group name>.

매개변수는 목록 상자가 될 수 있습니다.

Parameter p_id like <table name>-<field name> as listbox

옵션 선택

Select-Option은 프로그램에 값 범위 또는 값 세트를 입력하는 데 사용됩니다.

통사론

select-options s_vbeln for vbak-vbeln.

선택 화면

스크린샷은 선택 옵션을 선택했을 때 생성되는 낮은 값과 높은 값 입력 필드와 다중 선택 버튼을 보여줍니다.

변수처럼 선택 옵션을 정의할 수도 있습니다.

select-options s_vbeln for vbak-vbeln no intervals no-extension

입력이 수집되면 프로그램은 정해진 일련의 이벤트에 따라 반응합니다.

ABAP 보고서 프로그램의 이벤트

ABAP 보고서 프로그램은 이벤트 중심 프로그램. 보고서 프로그램의 다양한 이벤트는 다음과 같습니다.

프로그램 로드

  • 유형 1, M, F 또는 S의 프로그램을 로드한 후 내부 세션에서 관련 이벤트를 트리거합니다.
  • 또한 각 프로그램 및 내부 세션에 대해 관련 처리 블록을 한 번만 실행합니다.
  • 처리 블록 LOAD-OF-PROGRAM은 대략적으로 동일한 기능을 갖습니다. ABAP 프로그램 ABAP 객체의 클래스에 대한 생성자로서 유형 1, M, F 또는 S

초기화.

  • 이 이벤트는 선택 화면이 표시되기 전에 실행됩니다.
  • 모든 값을 초기화합니다.
  • 선택 화면에서 기본값으로 설정된 값 외에 다른 값을 할당할 수 있습니다.
  • 런타임에 일부 값으로 선택 화면을 채울 수 있습니다.

선택 화면에서.

  • 선택 화면이 처리되면( PAI 끝) 이벤트가 처리됩니다.
  • 입력된 값의 유효성 검사 및 확인이 여기에서 발생합니다.

선택 시작.

  • 여기서 프로그램은 테이블에서 값을 선택하기 시작합니다.

선택 끝.

  • 모든 데이터가 선택된 후 이 이벤트는 데이터를 화면에 씁니다.

인터랙티브 이벤트

  • 대화형 보고에 사용됩니다. 기본 목록에서 세부 목록을 생성하는데 사용됩니다.

💡 팁: 이벤트 키워드 없이 작성된 문장은 기본적으로 START-OF-SELECTION에 속하므로 이벤트가 누락된 경우에도 보고서가 실행됩니다.

예시: 간단한 ABAP 보고서 프로그램

아래 프로그램은 추가 정보, 선택 화면 및 이벤트를 하나의 보고서로 통합합니다. 선택 화면에 입력된 번호에 해당하는 판매 주문 헤더를 VBAK에서 ​​읽어와 목록으로 출력합니다.

REPORT z_sales_order_list NO STANDARD PAGE HEADING
                          LINE-SIZE 80
                          LINE-COUNT 65(3)
                          MESSAGE-ID zsd.

TABLES: vbak.

DATA: lt_vbak TYPE STANDARD TABLE OF vbak,
      ls_vbak TYPE vbak.

* Selection screen
SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.
PARAMETERS: p_erdat LIKE vbak-erdat.

INITIALIZATION.
  p_erdat = sy-datum.

AT SELECTION-SCREEN.
  IF p_erdat > sy-datum.
    MESSAGE e001(zsd).          " Date must not lie in the future
  ENDIF.

START-OF-SELECTION.
  SELECT * FROM vbak
    INTO TABLE lt_vbak
    WHERE vbeln IN s_vbeln
      AND erdat LE p_erdat.

END-OF-SELECTION.
  LOOP AT lt_vbak INTO ls_vbak.
    WRITE: / ls_vbak-vbeln, ls_vbak-erdat, ls_vbak-netwr.
    HIDE ls_vbak-vbeln.
  ENDLOOP.

세 가지 사항을 주목할 필요가 있습니다. INITIALIZATION 함수는 선택 화면이 나타나기 전에 날짜 매개변수를 채웁니다. AT SELECTION-SCREEN 함수는 입력 내용을 검증하고 ZSD 클래스에서 메시지를 발생시킵니다. HIDE 함수는 작성된 각 행의 순서 번호를 저장하므로, 더블 클릭을 통해 이를 기반으로 보조 목록을 생성할 수 있으며, 이는 다음 섹션에서 다룹니다.

보고서 형식 지정

ABAP을 사용하면 사용자가 원하는 대로 보고서 형식을 지정할 수 있습니다. 예를 들어, "대체 라인"은 다른 색상으로 표시되어야 하고 "합계" 라인은 노란색으로 표시되어야 합니다.

통사론

Format Color n

Format Color n Intensified On

n 다양한 숫자에 해당할 수 있습니다

형식과 함께 다른 추가 사항도 있습니다.

FORMAT COLOR OFF INTENSIFIED OFF INVERSE OFF HOTSPOT OFF INPUT OFF

대화형 보고서 프로그래밍

  • 대화형 프로그래밍을 사용하면 사용자는 데이터 검색 및 표시를 능동적으로 제어할 수 있습니다.
  • 아주 기본적인 목록에서 상세한 목록을 만드는 데 사용됩니다.
  • 자세한 데이터는 보조 목록에 기록됩니다.
  • 보조 목록은 첫 번째 화면에 완전히 오버레이되거나 새 화면에 표시될 수 있습니다.
  • 보조 목록은 그 자체로 대화형일 수 있습니다.
  • 첫 번째 목록은 트랜잭션을 호출할 수도 있습니다.
  • 대화형 프로그래밍과 관련된 다양한 이벤트가 있습니다.

대화형 프로그래밍에 사용되는 일부 명령

핫스팟

보고서에 표시된 데이터 위로 마우스를 끌면 커서가 뻗은 검지손가락을 가진 손으로 바뀝니다. FORMAT 문을 사용하여 핫스팟을 얻을 수 있습니다.

Syntax:      Format Hotspot On (Off).

숨는 장소

이 명령은 자세한 목록을 얻기 위해 추가 처리를 수행할 필드 이름을 저장하는 데 도움이 됩니다. 이는 필드에 대한 WRITE 문 바로 뒤에 작성됩니다. 행을 선택하면 나중에 사용할 수 있도록 값이 변수에 자동으로 채워집니다.

Syntax:     Hide <field-name>.

여러 테이블을 읽는 보고서는 아래에 설명된 논리적 데이터베이스를 사용하여 SELECT 문을 대체할 수 있습니다.

논리적 데이터베이스

  • "선택" 쿼리를 사용하는 대신 논리 데이터베이스를 사용하여 프로그램에 대한 데이터를 검색할 수 있습니다.
  • 논리적 데이터베이스는 트랜잭션에 의해 생성됩니다. SE36
  • 논리적 데이터베이스의 이름은 최대 20자까지 가능합니다. 네임스페이스 접두사로 시작할 수 있습니다.
  • 데이터는 다른 프로그램에 의해 선택되며 GET을 사용하여 데이터에 액세스할 수 있습니다. 작업 영역에 데이터를 배치하는 명령 .

일반 Select 쿼리에 비해 논리 데이터베이스의 장점

  1. 입력이 정확하고 완전하며 타당한지 확인하기 위한 검사 조건을 제공합니다.
  2. 데이터베이스 액세스에 대한 중앙 인증 확인이 포함되어 있습니다.
  3. 성능 향상 등의 개선 사항은 논리적 데이터베이스를 사용하는 모든 보고서에 즉시 적용됩니다.

참고: 복잡성으로 인해 대부분의 경우 논리적 데이터베이스는 사용되지 않습니다.

자주 묻는 질문

PARAMETERS는 단일 값을 저장하는 하나의 입력 필드를 생성합니다. SELECT-OPTIONS는 SIGN, OPTION, LOW, HIGH 필드를 가진 내부 테이블을 생성하므로 범위 지정, 제외 조건 설정 및 다중 선택을 지원합니다.

AT LINE-SELECTION은 더블 클릭이나 F2 키 입력에 반응하고, AT USER-COMMAND는 메뉴의 기능 코드에 반응합니다. 둘 다 HIDE에 저장된 값을 기반으로 보조 목록을 생성합니다.

목록 메뉴는 기존 보고서 형식을 위한 목록 보기, 저장 및 로컬 파일 옵션을 제공합니다. 또한 프로그램은 GUI_DOWNLOAD 함수 모듈을 호출하여 추가 코딩 없이 ALV 목록을 스프레드시트로 내보낼 수 있습니다.

예. ABAP 개발 도구의 AI 어시스턴트는 필요한 목록에 대한 간단한 설명만으로 보고서 헤더, 선택 옵션 및 이벤트 블록을 생성합니다. 생성된 선택 옵션은 성능 검토가 필요합니다.

AI 도구는 긴 목록을 요약하고, 이상치를 강조 표시하며, 데이터에 대한 질문에 대해 이해하기 쉬운 언어로 답변합니다. 이러한 분석 기능을 통합하려면 일반적으로 기존 목록을 ALV 또는 Fiori 기반 출력으로 변환해야 합니다.

이 게시물을 요약하면 다음과 같습니다.