본문 바로가기

SAP ABAP 개발 및 설명

(29)
SAP 시스템 변수 시스템 필드는 ABAP 프로그램에서 항상 사용 가능하며, 실행 시스템에 의해 문맥(로직의 결과, 반응 등)에 따라 채워집니다. 프로그램에서 시스템 필드를 통해 상태를 식별할 수 있습니다. 예를 들어, subrc 시스템 필드를 쿼리하여 INSERT 작업이 성공했는지 또는 SELECT 문이 데이터베이스에서 일치하는 레코드를 찾을 수 있는지 여부를 확인할 수 있습니다. 시스템 필드는 프로그램에서 변수로 사용할 수 있지만, 상수처럼 다루어져야 하며 절대 조작되어서는 안됩니다. 모든 시스템 필드는 ABA Data Dictionary에 Structure로 SYST에 있는 필드들을 사용 가능하며, 미리 정의된 Structure SY를 사용하여 프로그램에서 액세스할 수 있습니다. 예를 들어, ABAP 프로그램에서 su..
Function Module 호출 및 예시 Function Module 호출 및 예시 이번엔 실제 앞에서 정리한 내용을 바탕으로 간단한 Function Module을 호출하는 방법을 보도록 하겠습니다. 추후 더 어렵거나 실제 개발했었던 내용을 올려드리도록 하게 지금은 아주 간단하게 Function Module을 만들고 전달하는 방법을 해보도록 하겠습니다. 요구사항을 가정해봅시다. 일정 기간동안 발생한 판매오더(Sales Order : SO)를 외부 시스템에 판매오더 번호(SO Numbeer), 고객 , 금액, 금액에 대항되는 통화 정도를 전송하는 Function Module이 요구되었다고 합니다. 실제 업무에 대해서는 이런 요구사항보다는 좀 더 복잡할 것 입니다. 특정 영업사원이 만든 SO라던가, 아니면 하나의 SO에 대해서 실제 납품, 선적, ..
BATCH JOB 실행 여부 판단 함수(BP_FIND_JOBS_WITH_PROGRAM) 안녕하세요. 간혹 문의받는 내용 중 하나를 공유하고자 합니다. 대다수의 ERP 프로그램들은 Batch Job이라는 기능을 통해서, 사용자가 직접 실행하지 않더라도 특정 조건에 만족하면 자동으로 background에서 작업을 하도록 하는 기능이 있습니다. 그러나 간혹, 이전 batch job이 돌아가고 있는 경우 다음 batch job이 돌지 않았음 좋겠다는 문의 혹은 batch job이 돌고 있으면 사용자가 프로그램을 실행하는 것을 막고 싶어하는 요구사항이 있습니다. 이 떄 BP_FIND_JOBS_WITH_PROGRAM이라는 함수를 사용하면 됩니다. 실제 사용하는 파라미터는 1) ABAP_PROGRAM_NAME -> 사용 프로그램 명 2) ABAP_VARIANT_NAME -> 프로그램 실행 시 사용하는 ..
SAP POP-UP 화면 포함 커맨드 창 없을 때 디버깅(Debug) 입력 ABAP 개발 및 운영을 하다보면 기존 SAP 스탠다드 및 CBO 프로그램을 실행, 분석하다보면 디버깅(Debugging)을 하는 일은 일상이라고 볼 수 있습니다. 디버깅을 거는 방법은 아래 그림처럼 커맨트창에 /H 명령어를 입력하던가 소스코드에 WatchPoint(Break-Point)를 거는 두 가지 방법이 있습니다. 그러나 때때로, 아니 꽤 많은 경우에 Pop-UP 창 혹은 Screen에서 작업을 하고 그것에 대한 결과를 디버깅해야 되는 경우가 있지만, 커맨드 창이 없기 때문에 디버깅을 바로 실행하지 못하는 경우가 있습니다. 가장 간단한 예시로, SE11에서 테이블 검색 후 Filter 버튼을 누른 결과와 같이 이러한 화면에서는 커맨드창을 이용할 수 없기 때문에 디버깅이 힘듭니다. 그럴때, 하기 코..
권한 없는 T-CODE 실행 가능한 함수 실제 개발, 품질, 운영서버에서 작업을 할 때, 권한 체크(Authority Check)에 막혀 실제 프로그램이 실행 안되는 경우가 있습니다. 그런 경우에 권한이 없이도 프로그램을 실행시킬 수 있는 함수가 몇 종류 있어서 공유하고자 합니다. 1) RS_HDSYS_CALL_TC_VARIANT 2) PLM_PS_EXECUTE_TRANSACTION 3)C160_TRANSACTION_CALL 제가 아는 상기 세 개의 함수를 사용하면 권한없는 T-CODE라고 할지어도 함수를 통해 실행시킬 수 있습니다. 2번 3번의 경우에는 바로 T-CODE를 입력하면 되지만, 1)번의 경우에는 조금 복잡합니다. 사실 1)번의 경우에는 T-CODE를 어떤 VARIANT를 써서 외부에서 CALL 하도록 만든 RFC(Short Tex..
Function Module(함수) 생성 및 Tab 설명 Function Module(함수) 생성 Function Group을 생성했다면 SE80과 SE37 두 곳에서 Function Module을 생성할 수 있다. Function Module 명 + Funciton Group 명 + 단문(Description)을 입력하면 Function Module 생성이 완료된다. 완료되면 Function Module Editor 화면이 나타난다. Funciotn Module Editor Funciton Module Editor에는 7개의 tab이 존재한다. 1. Attribute 2. Import 3. Export 4. Changing 5. Tables 6. Exceptions 7. Source Code 각 Tab에 대해서 설명을 하자면 다음과 같다. 1. Attribu..
Function Group 생성 및 기본 구조 Function Group 생성 및 기본 구조 1. Function Group 생성 Function Group 및 Function Module을 만드는 방법은 두 가지가 있다. 1) SE80을 이용하는 방법 2) SE37을 이용하는 방법 1) SE80을 이용하는 방법 SE80에서 해당 Function Group을 만들 개발 클래스를 선택 후 우클릭 후 Function Group을 선택한다. 1) SE37을 이용하는 방법 SE37에서 Goto -> Function Group 선택 후 Create Group을 선택 후 개발클래스 및 CTS를 입력한다. 2. Function Group 구조 SE80에서 Function Group을 더블클릭 한 후 화살표(선택 : F2)를 클릭하면 하기 화면을 확인할 수 있다...
Function Module 개요 Function Module(함수) 개요 Function Module은 ABAP 프로그래밍 개념 중 Processing Block(특정 기능을 묶어 모듈화 하는 것을 총칭) 중 Procedure의 종류이다. Procedure은 SQL에서 나오는 개념의 Procedure과는 차이가 있으며, 이름 그대로 절차, 순서와 같이 프로그램 내부에서 호출되어 기능을 하는 Processing Block을 의미한다. Procedure의 종류로는 크게 세 가지가 있는데, Subroutine, Function Module, Method가 그것들이다. 그 중 Function Module에 대해서 설명하고자 한다. Function Module 이란? Function Module은 Function Group안에 정의되며, ABA..