반응형

SAP/ABAP 65

ABAP Class ALV On F4 이벤트 이후 Data Changed Event 사용하기

오랜만에 ABAP 개발 관련 포스팅을 작성한다. 요즘 개발 할 일이 없었다기 보다는 개발을 해도 이전에 사용하던 내용을 복붙 신공으로 개발을 해서 인지 새로운 내용을 조사할 일이 별로 없었는데 이번에 ALV 에서 On_F4 이벤트 이후 Data Changed 이벤트를 태워야 하는 경우가 생겨서 구글에서 찾아본 내용을 작성하고자 한다. ( 실제로 구글에서 찾았다기 보다 SAP 데모 ALV 프로그램에 힌트가 있었다. ) 오늘의 목표는 Class ALV 에서 특정 셀에서 ON F4 Event 수행 이후에 Data Changed Event 수행을 시키고, Data Changed Event 에서 변경된 셀의 정보를 가지고 체크 로직을 태우는 부분이다. ON_F4 이벤트가 수행하기 전에 Data Changed Ev..

SAP/ABAP 2015.11.05

SAP R/3 에서 차트, 그래프 그리기 : GRAPHICS GUI CE DEMO

SAP R/3 에서는 Chart Engine Class 를 이용한 다양한 그래프를 지원한다. 단순한 2차원 꺾은선 그래프 부터 3차원, 다양한 특수 그래프까지 지원을 하는데 만드는 것은 간단하지가 않다. 일단 XML 로 데이터를 만들어서 데이터를 넣어주어야 그래프가 생성이 되는데 XML 만드는 부분이 좀 까다롭다. SAP 에서 Sample 프로그램을 제공하는데 GRAPHICS_GUI_CE_DEMO 프로그램을 활용하여 그래프를 생성하면 된다. 특히 XML 만들어서 랜더링 하는 부분을 참고하여 Customizing XML 을 생성하면 된다. 별도의 data 와 Customizing 으로 구분이 되며 XML 이 대소문자를 가리기 때문에 XML Sample을 만드는 프로그램 그대로 만들어서 넣어주어야 특별한 삽..

SAP/ABAP 2015.10.01

Functional ALV 에서 선택한 컬럼 가져오는 함수 : REUSE_ALV_GRID_LAYOUT_INFO_GET

요즘은 대부분 Class ALV 를 사용하지만 이전에 개발된 레포트는 아직 Functional ALV 를 사용하고 있는 프로그램들이 많이 있다. Class ALV 보다 기능이 적다고 생각하지만 정작 찾아보면 Class ALV 에 있는 기능을 대부분은 함수 형태로 제공을 하고 있다. 오늘 포스팅 할 내용도 그 부분의 연장 선상의 내용이다. Functional ALV 에서 특정 컬럼을 선택해서 그 선택한 컬럼만 그래프로 표현을 하고 싶어서 함수를 찾아 보았다. DATA : gt_marked_columns TYPE slis_t_fieldcat_alv. DATA : lv_field(30), ls_column TYPE slis_fieldcat_alv, lv_marked_colums TYPE i. CALL FUNC..

SAP/ABAP 2015.10.01

ABAP 스마트폼 언어별 텍스트가 다르게 나오는 경우 해결방법

ABAP Smartform 에서 로그인 언어별로 텍스트가 다르게 나오는 경우가 있다. 대부분 KO 와 EN 둘중 하나로 고정해서 사용하지만 두 언어를 모두 사용할 경우 문제가 생길 수 있다. 그냥 레포트라면 Translation 메뉴를 통해서 텍스트 들을 변경해 주면 되는데 Smartform 의 경우 Translation 메뉴가 실행되지 않는다. 그래서 방법을 찾던 중에 SE63 을 이용하여 Smartform 의 텍스트를 Translation 하는 방법을 찾아내게 되었다. SE63 에서 상단 Trlaslation > ABAP Objects > Other Long Texts 를 선택한다. SAPscripti : Forms and Styles > SSF Smartform 을 선택한다. 변경할 Smartfor..

SAP/ABAP 2015.05.22

ABAP 개발을 위한 Eclipse 및 플러그인 설치하기

SAP ABAP 개발은 SAP GUI 라는 SAP 서버 접속 전용 툴을 사용하여 개발을 한다. 처음시작하는 사람들은 대부분 이외의 툴은 잘 사용하지 않을 뿐더러 SAP GUI에서 지원하는 기능만큼 지원하는 툴도 없다. 하지만 이번에 SAP HANA 를 강좌를 보다 보니 강사들이 다 Eclipse 를 사용하고 있기에 호기심에 찾아보았다. 예전에 Java 를 할 때 eclipse 는 툴이 무거워서 별로 사용하고 싶지 않았는데 확장성은 진짜 최강인 것 같다. 조금 사용해보니 SAP GUI 화면을 그냥 끌어다가 붙여놓았다. ( 그래서 Eclipse 를 왜 써야 하는지 의문이기도 하다. ) https://tools.hana.ondemand.com/ 위 사이트를 들어가보면 ABAP, BW, HANA 등등 다양한 플..

SAP/ABAP 2015.04.06

ABAP 개발자의 시작

SAP ERP 개발업무를 하기 위해서는 ABAP 이라는 언어를 알아야 한다. SAP 패키지는 기본적으로 ABAP으로 개발되어 있고, 우리와 같은 개발자들은 고객의 요구사항에 맞춰 ABAP 으로 CBO 프로그램을 개발해야 한다. ABAP은 4세대 프로그래밍 언어이기 때문에 C, JAVA 보다는 Visual Basic 에 가까운 언어이다. 개발자들 중에는 ABAP 이라는 언어가 있는지 모를만큼 많이 알려지지 않았지만 요즘은 대기업을 중심으로 SAP가 많이 설치되어 있어서 예전보다는 많이 알려졌다. http://ko.wikipedia.org/wiki/ABAP 출처 : www.sap.com ABAP 이라는 언어는 VB와 비슷하기 때문에 배우기가 쉽다. 그러나 다른 언어를 하는 개발자가 선뜻 도전하기가 어려운 이..

SAP/ABAP 2015.04.06

ABAP 메모리상의 프로그램 로컬 변수 Local Variable 접근하기

ABAP 개발을 하면서 가장 편하다고 생각했던게 프로그램간 파라메터를 전달해서 다른 프로그램을 현재 개발하는 프로그램에 서브 프로그램으로 사용 할 수 있다는 점이었다. 그래서 다른 프로그램이지만 상세화면을 보여주는 등 다양한 형태에서 추가적인 개발을 하지 않고 상세화면을 구성할 수 있다. 예를 들자면 CBO 프로그램에서 IW52 라는 Notification 상세화면으로 바로 들어가는 기능을 만들 수 있다. ABAP 코드에서 Call transaction 과 submit 을 이용 하여 다른 프로그램으로 이동할 수 있으며, 각각 파라메터를 전달하는 방식은 추후에 포스팅을 하도록 하겠다. 오늘은 이러한 프로그램 간 이동을 하면서 이전 프로그램의 Local Variable 을 조회하는 내용을 찾아보았다. 나와 ..

SAP/ABAP 2015.02.25

ABAP 간단한 결과 내용을 ALV 팝업으로 출력하기

ALV 를 이용해서 결과를 표시하고 싶은데 간단한 내용에 비해 ALV를 만들기 위한 소스의 내용이 너무 많다면 ALV Popup Function 을 이용해서 결과를 표시 할 수 있다. 간단하면서 사용이 간편하지만 별도의 기능을 구현하기에는 한계가 있으므로 단순히 결과 메시지들을 출력한다던지 하는데 사용이 가능하다. 구글에서 검색으로 찾았는데 아래 사이트에서 확인 할 수 있다. 그리고 사이트 사용자의 여러 개발 코드 예제가 있으니 개발하는데 많은 도움을 받을 수 있다. Original Source : http://www.kerum.pl/infodepot/00004 REPORT ytest017. START-OF-SELECTION. TYPE-POOLS: slis. PERFORM display_popup. FO..

SAP/ABAP 2015.02.06

ABAP BDC 동일한 Work Order 수행시 오류 발생(IW32)

BDC 프로그램 개발을 하는 중에 Work Order 를 수정하는 프로그램에서 동일한 Work Order 를 두번 연속 수정을 하면 두번째 Work Order가 수정이 안되는 현상이 발견되었다. 문제는 Background 모드를 사용하면 두번째 실행한 것이 저장이 안 되는 문제이다. 그러나 Foreground 로 실행을 하면 문제 없이 두 건 모두 저장이 되었다. 이 문제는 특별한 오류가 있어서 생기는 것은 아니지만 첫 번째 BDC를 처리하고 나서 완료가 되기 전에(짧은 시간이지만) 두 번째 Work Order를 처리하려고 하기 때문에 발생하는 문제 인 듯하다. 그래서 이 경우를 해결하기 위해서는 첫번째 BDC 를 실행 후 몇초간의 시간 텀을 두거나 아니면 BDC 실행시 Update Mode 를 Asyn..

SAP/ABAP 2015.02.05

ABAP Call Screen 100 실행 후 Write 구문 출력하기

개발을 하다보면 그냥 WRITE 구문을 사용해서 메시지를 출력하고 싶을 때가 있다. CALL SCREEN 100 을 써서 별도의 스크린을 만들면 WRITE 구문을 사용 할 수가 없다. 그렇기 때문에 REPORT 초기화면에서 쓰는 것과 같이 화면에 출력이 되지 않는다. 이미 ALV나 별도의 화면이 있는 상황에서 단순히 WRITE 구문을 사용하고 싶다면 아래와 같은 코드를 추가해 주면 된다. ( 예를 들면 BDC를 돌리고 그리고 그 결과를 출력하기 위해서 WRITE 구문을 쓰려고 한던지 할 때 사용하면 된다. ) 이 코드의 핵심부분은 SUPPRESS DIALOG 이다. 이 코드를 추가하면 100번 스크린에서 WRITE 구문을 출력 할 수 있다. ( 실제로 100번 스크린에서 출력이 되는 것은 아니다. 왜냐하..

SAP/ABAP 2015.01.26

ABAP 텍스트 박스 ( Input Box ) Dropdown List 만들기

ABAP 개발을 핟 보면 사용자들이 데이터 입력하는 텍스트 박스를 많이 만들게 된다. 그러한 데이터를 입력하는 박스 중에서 사용자가 임의로 넣는 것이 아닌 정해진 값만 넣게 해야 하는 방법중 하나가 Dropdown List 를 만드는 것이다. 다른 말로 Combo box 라고도 하는데 사용자가 넣어야 하는 것을 선택할 수 있게 하는 것이다. 이렇게 되면 사용자의 입력 오류를 예방 할 수 있고 또 개발자가 오류 값들에 대한 예외처리 하는 로직도 줄일 수 있어서 효과적이다. ABAP에서는 이러한 Dropdown List 를 만드는 방법을 2가지 소개 하고자 한다. 1. Element -> Domain 에 정의를 해서 리스트를 출력한다. 이것은 텍스트 필드에 사용하는 element 의 domain에 정의를 하..

SAP/ABAP 2015.01.20

ABAP Stored Procedure 호출방법

오늘은 오랜만에 ABAP 에 관련된 내용을 포스팅한다. 오늘은 DBCO를 이용한 MS-SQL Stored procedure 를 호출하는 방법이다. 이미 F1을 누르면 설명과 샘플이 나오나 F1 보다 검색을 사용하는 분들을 위해서 포스팅 하고자 한다. 그냥 SQL 을 써도 되지만 Stored Procedure 는 이미 SQL server에서 컴파일이 되어 있고 내용이 변경이 되면 ABAP에서 SQL 을 수정하지 않아도 SQL Server 에서만 변경하면되니 참으로 간단하다. EXEC SQL 의 예제에 나온 예문이다. ( 오라클 ) PARAMETERS incprice TYPE sflight-price. EXEC SQL. CREATE OR REPLACE PROCEDURE increase_price (x IN ..

SAP/ABAP 2015.01.15

ABAP Class ALV Checkbox 변경시 Data Changed Event 실행

Class ALV 에서 데이터를 수정하면 ALV 에 설정되어 있는 Data Changed Event 가 실행되게 된다. 그런데 개발을 하다 보니 Checkbox 의 경우 기본적으로 Data Changed Event 를 타지 않아서 변경된 내용을 체크 할 수 없었다. ( 다른 필드를 수정하면 변경된 내용을 알 수 있으니 그냥 처리해도 된다. ) 그래서 왜 그런가 찾아봤더니 ALV Data Changed Event 의 경우에 1) 데이터가 변경되는 즉시 2) 데이터를 변경하고 엔터 키를 입력시 두 가지로 이벤트 발생을 조정할 수 있다. 그렇기 때문에 Checkbox 의 값이 변경된 경우 바로 Data Changed Evnet 를 실행하게 한다면 변경된 내용을 바로 사용 할 수 있다. 그리고 데이터가 변경 되..

SAP/ABAP 2014.12.15

ABAP Class ALV Cell 별 색상 넣기

ABAP 개발을 하다 보면 제일 많이 하는게 ALV 리스트 개발을 하는 것일 것이다. ALV 가 워낙 강력한 기능들이 많은데 잘 사용하지 못할 때가 너무 많다. 필요한 그리드의 기능을 다 가지고 있어서 잘 세팅하는 법만 알아도 사용자가 요구하는 조건을 충족 시킬 수가 있다. ( 사용자는 기능을 잘 모르기 때문에 개발자가 잘 가이드를 해야 한다. ) 오늘은 Class ALV 의 Cell 별로 색상을 넣는 방법을 포스팅 하려고 한다. ALV 의 필드 카탈로그에서 한 컬럼씩 색상을 줄 수도 있지만 각 셀 별로 색상을 주는 것도 가틍하다. 한 컬럼씩 색상을 넣게 되면 가로의 Row 의 색상을 줄 수가 없는데 Cell 별로 색상을 넣어주면 Row 의 색상을 넣는 것도 가능하다. 위의 레포트에서 보면 가장 아래줄에..

SAP/ABAP 2014.12.10

ABAP 파일 업로드, 다운로드시 파일 선택 팝업 생성

엑셀 업로드를 하거나 다운로드를 할 때 파일명 및 경로를 설정해야 할 때가 있다. 하드코딩으로 넣어도 되지만 ABAP에서 기본 제공하는 함수와 Class 메소드가 있는데 Class 메소드를 포스팅 하고자 한다. ( Class 메소드가 파일명도 넣을 수도 있고 멀티 셀렉트도 가능하다. ) " 파일경로 설정 PERFORM F4_HELP_FOR_FILE CHANGING GV_FILE. *&---------------------------------------------------------------------* *& Form F4_HELP_FOR_FILE *&---------------------------------------------------------------------* * text *-----..

SAP/ABAP 2014.11.18

ABAP Report 프로그램 실행시 Tcode 체크

Report 프로그램을 개발하다 보면 SE38 이나 SE80 등으로 Report를 실행 할 수 있다. 물론 사용자들에게는 SE38, SE80 권한을 잘 안주기 때문에 실행할 일이 별로 없긴하지만 그래도 레포트 프로그램 하나에 두개의 Tcode 를 줘서 구분하여 만든 프로그램에서는 Tcode로 만 실행하게 하는 방법이 필요하다. 의외로 간단하게 적용이 가능하다. Report 프로그램 실행하면 제일 먼저 실행되는 Initialization 부분에 SY-TCODE 를 체크하여 원하는 Tcode 가 아닐 경우 프로그램을 종료하면 된다. ( 메시지 추가도 가능하다.) 아래 코드 중에 Leave Program 을 사용하면 프로그램이 실행은 되지만 1000번 화면으로 가지 못하고 메시지가 출력되면서 종료된다. *&-..

SAP/ABAP 2014.11.17

ABAP Parameters 에 소숫점 및 마이너스 금액 입력

레포트 화면 에서 Parameter 에서 소숫점을 입력하는 방법은 간단하다. 변수를 선언 하듯이 p type 에 decimals 를 선언해 주면 된다. 그러면 숫자를 입력하면 자동으로 해당하는 자리수로 변환이 된다. ( 물론 마이너스도 입력이 가능하다. ) 별 것 아닌데 갑자기 하려니 생각이 안나서 기록으로 남기는바이다. PARAMETERS : L_AMT TYPE P DECIMALS 2. " Decimals 에 숫자만큼 자리수 지정 소수점 금액 입력 마이너스 금액 입력

SAP/ABAP 2014.10.21

ABAP RANGE 변수를 PERFORM 문의 파라메터로 사용하기

RANGE 변수는 참으로 신기한 변수 형태이다. 다른 언어에서는 없는 특이한 변수형이긴 하다. ABAP 에서도 특이한 부분인데 Internal Table 도 아닌 것이 그렇다고 변수도 아닌 것이 그 중간쯤의 형태를 가지고 있다. 오늘 포스팅 하고자 하는 내용은 이 특이한 RANGE 변수를 PERFORM 문에서 파라메터로 사용하는 방법이다. 결론부터 말하자면 RANGE 변수도 TABLE 처럼 PERFORM 문에 사용하면 된다는 것이다. 프로그래밍 할 때 RANGE 변수를 선언 하는 부분을 제외하면 Internal Table 로 생각하고 개발을 한다면 더 쉽게 개발을 할 수 있다. RANGE 변수는 성능 개선을 위해 사용하기도 하는데, RANGE 변수에는 데이터가 무한대로 들어가는게 아니라는게 중요하다. 얼..

SAP/ABAP 2014.09.04

ABAP Field Symbol 의 사용

학교 다닐 때 C 언어를 배운적이 있다. IT 를 배웠다 하는 사람들에게 기본이라고 가르치는 C 언어는 고비가 2번 오는데 포인터가 나오면 포기하는 사람이 1/3 이고 C++ 에서 클래스 개념이 나오면 1/3 이 포기한다고 우스갯소리를 한다. 그래서 자바가 좋니 어쩌니 한다. 하지만 어떤 프로그래밍 언어든 고비는 있는 듯 하다. ABAP 에도 포인터와 비슷한 개념을 가지 Field Symbol 이 있다. Field Symbol 을 잘 이용하면 반복되는 필드들을 짧은 코드로 처리 할 수 도 있고, 루프의 속도도 개선 할 수 있으며, Internal Table 을 Dynamic 하게 만들 수도 있다. ( 이전에 Dynamic Internal Table 을 만드는 방법을 포스팅 한 적이 있다. 동적 인터널 테..

SAP/ABAP 2014.09.03
반응형