분류 전체보기 32

ABAP 프로그램 샘플 소스 Code Block 테스트

지난번 포스팅에서 코드블럭으로 ABAP 소스 환경을 구성하는데 성공했다. 2024.11.12 - [SAP/ABAP] - Tistory 에서 코드블럭에 ABAP 테마 추가하기 그래서 연습삼아코드블럭을 사용해 간단한 소스코드를 작성해보고포스팅 하면 어떻게 보이는지확인해보려고 한다.   ↓ ↓ ↓ ↓ ↓  ABAP 환경으로 구성한 코드블럭 결과*--------------------------------------------* 1. 데이터 선언*--------------------------------------------"Old SyntaxDATA lv_text TYPE string.lv_text = 'Hello World!'."New SyntaxDATA(lv_text) = 'Hello World'. HTML..

SAP/ABAP 2024.11.13

Tistory 에서 코드블럭에 ABAP 테마 추가하기

SAP ABAP 관련 타 블로그들을 검색하다가 아래와 같이소스 에디터 같은 객체가 문서에 포함되어 있는 걸 본 적이 있었다.그때는 원하는 내용만 보고 대수롭지 않게 넘겼었는데,내가 본격적으로 블로그 포스팅을 하려다 보니그 글이 ABAP 코드블럭으로 되었었다는 게 기억이 났다. 그렇다. 티스토리의 코드블럭 기능을 사용해서 소스코드를 삽입할 수는 있지만,대중적인 프로그래밍언어만 기본제공되더라. (예를 들면, JAVA, C#, C++, Python, 등등)정작 중요한(내 밥벌이인) ABAP 코드블럭이 없다는 것이다.    기업용 프로그램의 언어니까. 폐쇄적이니까.불가능? No 가능하다. Step 1. 아래 URL 에서 ABAP JS/CSS 파일 다운로드한다.https://prismjs.com/ PrismSup..

SAP/ABAP 2024.11.12

MIGO 에서 구현한 Badi Enhancement 가 입고 BAPI 처리 시 실행되지 않는 경우 강제로 타게 하는 방법

Case)MIGO 에서 구매오더 번호를 여러 개 입력해서 아이템이 여러 라인이 있다.아이템 기준 체크로직을 추가했다.그리고 체크에 걸리면 메시지 처리 후 자재문서를 만들지 말아야 한다.  MIGO 는 S/4 로 오게 되면서 생긴 MM 에서 자주 사용하는 Tcode 이다.GR/GI, 이전전기 등등의 트랜잭션을 다 처리할 수 있다. MIGO 에서 입고를 하는 것과 동일한 동작을대체하여 CBO 프로그램 상에서 BAPI_GOODSMVT_CREATE 함수를 써서 할 수 있다. 문제는, 스탠다드 MIGO 에 체크로직을 추가해야 하는데, Badi 를 구현하여'MB_MIGO_BADI' 체크하는데까지는 가능하지만,저 CBO 의 BAPI 함수를 수행할 때는 이 Badi 가 Trigger 되지 않는다는 것이다.그 이유는 B..

SAP/ABAP 2024.11.11

Working Day 여부 체크 (계산)하는 함수 → DATE_CONVERT_TO_FACTORYDATE

입력받은 날짜가 Working Day 인지 Holiday 인지 체크하거나,입력받은 날짜 + 00 days 계산시 Working Day 기준으로 계산하고자 할때사용하는 함수다. 함수명 : DATE_CONVERT_TO_FACTORYDATE  *필수입력 파라미터    - DATE  TYPE  SYDATS    - FACTORY_CALENDAR_ID  TYPE  CHAR(2)      : '01' 입력하면 되는 듯.    입력받은 날짜인 2024.11.08 은 '금요일'이었으므로, 소스상에서 Working Day 기준 +1 day 를 한 결과를 출력해보니'월요일'인 2024.11.11 이 나오게 된다.(Src.)REPORT YTSR00300.DATA: LV_DATE_FROM  TYPE SYDATS,       ..

SAP/ABAP 2024.11.08

Popup with One(Several) Input Field(s) & Confirmation Button

(Case)GR 혹은 IV 입고전기나 송장전기 시전기일을 사용자로부터 입력받아서 처리하고자 할 경우가 종종 있다. 이 때, 화면을 별도로 생성해서 날짜 타입 Iuput Field 를 추가하고,스크린 속성을 설정하고 하는 번거로운 과정 대신에표준으로 제공되는 함수로 한방에 원하는 바를 얻을 수 있다. (Solution)Function : POPUP_GET_VALUESFUGR : SP04 (조회와 요청 대화상자) POPUP_GET_VALUES* 시리즈 함수 중에 가장 위에 걸 쓰면 되겠다.사용법은 간단하다. Import 파라미터에  TABLES 파라미터에 원하는 필드의 속성을 적어주면 끝..팝업 화면에서 입력한 각 필드 값들이 VALUE 필드에 리턴된다. 좀더 자세하게 속성을 세팅도 가능하다.아래의 FIEL..

SAP/ABAP 2024.07.11

스마트폼을 PDF 파일로 이메일에 첨부하기

너무 예전에 해봤고,그만큼 자주 안하고,그래서 할때마다 기억이 안나고,눈금자와 노가다가 필수인스마트하지 않은 스마트폼.. Excel, Adobe Form, OZ Report 등 출력의 방법은 여러가지가 있지만..개발하다보면, 원하지 않을지라도 출력물 양식 개발을 스마트폼으로 해야 하는 경우가 있다. 그리고,화면에서 출력한 스마트폼 결과 양식을 이메일로 첨부하여 전송해야 하는 경우.아래와 같이 하면 되겠다. 참고로 메일 전송하는 기능을 제공하는 표준 함수가 있는데,SO_DOCUMENT_SEND_API1SO_NEW_DOCUMENT_ATT_SEND_API1  바로 전송하기 위해서CL_DOCUMENT_BCS 클래스를 사용했다.0. 변수 선언부 (Src)  DATA: LV_FM_NAME TYPE RS38L_FNA..

SAP/ABAP 2024.05.09

SUBMIT (program) 시 ABAP Memory 사용하지 않고, 결과만 가져오기

오랜만에 남기는 글이다. 언제나 그렇듯이 이제는 좀 자주 남기려고 생각은 하고 있다. 생각은 자유니께 ㅎ 별거 아니라도 말이다.. ㅎㅎ (Case) SUBMIT 기능 자주 사용은 하는데, 실제로 Process 제어를 넘기고 싶지는 않고, Result Set 만 가져오고자 할 때 ABAP Memory 를 사용한다. EXPORT (IMPORT) MEMORY 구문을 써서 하면 간단하면서도 이게.. 은근 귀찮다. 변수 타입도 정확하게 맞춰줘야 하고 Memory 변수명도 그렇고. 이럴 때, 귀찮은 과정 생략하고 결과만 딱 가져올 수 있는 방법이다. (Solution) 클래스 CL_SALV_BS_RUNTIME_INFO 이 녀석을 사용하면 제공되는 메소드 중에 이런 유용한 기능을 하는 애들이 포함되어 있다. 간단하게..

SAP/ABAP 2024.04.11

SAP Customer Exit CLFM0002

Call classification data before saving [Case] Tcode : CL20N (Object Assignments) 에서 특성값 변경 후 저장할 때 체크로직을 걸거나, 저장 후에 추가로직을 걸고 싶을 경우 저장 시 타는 Exit 을 찾아서 로직을 걸어야 하는 상황. (MM02 에서도 동일한 부분을 탄다) [Solution] 우선 해당 Tcode 에 로직을 걸만한 Exit 이나 Badi 가 있는지 검색해 봤다. 돌아다니는 소스를 찾아보면 쉽게 찾을 수 있는데.. ZSEARCH_BADI_USER_EXIT 라는 이름으로 CBO 프로그램을 만들어서 활성화 후 실행해본다. Source Code ↓↓↓ *Hi, you can use this code to search badi/user ..

SAP/ABAP 2023.08.01

Program 중복 실행 금지를 위한 Lock Object 처리

[Case] 단순 조회성 레포트는 해당없음. 뭔가 Transaction 을 일으키거나, 데이터를 I/F 하는 프로그램에서 동일 Key 값으로 중복 처리하는 경우가 발생. [Solution] 1) START-OF-SELECTION 부분에 Lock 여부를 체크하는 로직을 넣어 2) Locked 일때는, 실행이 되지 않도록 제어하면 된다. 3) 100 번 Screen 에서 빠져나올 때, Lock 을 해제 [Result] 동일한 Tcode 를 순차적으로 실행하여 Test 1) 첫번째 실행 2) 두번째 실행 (여기까진 문제 없이 실행됨) 3) F8 (Execution) 실행시 (동일한 ID 로 하든 or 다른 ID 로 하든 동일하게 Lock Object 설정되어 막을 수 있다.) ※ INITIALIZATION 부..

SAP/ABAP 2023.07.17