POPUP_TO_CONFIRM_LOSS_OF_DATA 
- > user가 delete명령같은 것을 실행할 때 dialog box생성한다.

POPUP_TO_CONFIRM_STEP 
- > user가 다음 단계로 실행을 원할 때 dialog box 를 생성한다.

POPUP_TO_CONFIRM_WITH_MESSAGE 
- > user가 수행중 어떤 특정한 결정을 내리는 부분에 있을때 정보제공 dialog box를 생성한다.

POPUP_TO_CONFIRM_WITH_VALUE 
- > user가 특정한 object로 작업을 수행하기를 원할 때 question box를 생성한다.

POPUP_TO_DECIDE 
- > user에게 radio button을 제공하여 결정하게 한다.

POPUP_TO_DECIDE_WITH_MESSAGE 
- > user에게 분류된 text를 제공함으로써 결정하게 하는 dialog box를 생성한다.

POPUP_TO_DISPLAY_TEXT 
- > 두 줄로 된 dialog box를 생성한다.

POPUP_TO_SELECT_MONTH 
- > 달을 선택하게 한다.

POPUP_WITH_TABLE_DISPLAY 
- > 유저에게 선택한 table을 table line값과 함께 보여준다.

POPUP_TO_FILL_COMMAND_LINE 
-> 입력값을 받을 수 있는 입력 필드가 생긴다

'ABAP' 카테고리의 다른 글

ABAP 정규식 Regular Expression  (0) 2022.07.20
ABAP Memory Inspector  (0) 2022.07.20
CTS 락 풀기  (0) 2022.07.20
PI IF XML 을 통한 FILE 업로드 시 CONVERT  (0) 2022.07.19
자주 쓰는 Layout (FUNCTION)  (0) 2022.07.19

Request/Task Lock 발생시 

Release 또는 Delete 할 때 Request/Task No.가 Lock이 걸리면 처리할 수가 없다.

 

'ABAP' 카테고리의 다른 글

ABAP Memory Inspector  (0) 2022.07.20
POPUP Function 정리  (0) 2022.07.20
PI IF XML 을 통한 FILE 업로드 시 CONVERT  (0) 2022.07.19
자주 쓰는 Layout (FUNCTION)  (0) 2022.07.19
현재 실행 중인 Function  (0) 2022.07.19

외부시스템 (Legacy)과 인터페이스 시 XML 을 통해 파일을 주고 받을 경우 XML에서 보내주는 파일 인코딩 방식을

반드시 확인해야 한다. 

 

필요에 따라 추가적인 Conversion이 필요 하기 때문이다. 

 

이경우는 PI(XI, PO)에서 XML로 BASE64 로 전달 되는 경우 였으며 아래 Function 으로 SAP Directory에 정상 저장 되는

것을 확인 하였다. 

 

아래의 순서를 이해 하기 위해 DRAO의 구조를 보면 이해가 간다. 

XML을 통해 Binary 로 변환한 STRING 을 SCMS_BASE64_DECODE_STR 를 통해 XSTRING 으로 변환하고

그 값을 SCMS_XSTIRNG_TO_BINARY 를 통해 2550길이의 Binary TAB 으로 변환한다. (DRAO-ORBLK)

 

FUNCTION 'SCMS_BASE64_DECODE_STR'  

input   : 입력받은 XML 의 STRING ( BINARY ) 

output : XSTRING 

 

FUNCTION 'SCMS_XSTIRNG_TO_BINARY' 

input :  'SCMS_BASE64_DECODE_STR'  의 output 

output table : 2550 의 tab

ouput : 입력받은 값의 size ( SAP에 저장되는 실제 파일 사이즈) DRAO-ORBKL

 

외부시스템 -> PI (XML) 인 경우 위의 순서로 진행 

PI(XML) -> 외부시스템 인 경우 

Proxy 파라메터에 담기전 XSTRING 변환후 > BASE64로 변환한다. 

 

해당 작업 전 반드시 첨부되는 파일의 인코딩 타입을 확인 하여야 한다. 

 

'ABAP' 카테고리의 다른 글

POPUP Function 정리  (0) 2022.07.20
CTS 락 풀기  (0) 2022.07.20
자주 쓰는 Layout (FUNCTION)  (0) 2022.07.19
현재 실행 중인 Function  (0) 2022.07.19
Tcode 에 따른 EXIT 찾기  (0) 2022.07.19

Function 작성 시 자주 쓰는 Layout .

지금까지 그렇게 작성 해왔고 앞으로도 이런 방식을 작성 하기 위해 기록

 

IF 용 Function 인 경우 시작과 종료에 LOG 를 남긴다.  

PERFORM START_LOG.
PERFORM END_LOG .

실행 로그 저장시 입력받은 매개변수 값은 원래의 값 그대로 로그에 저장 , 종료 로그 저장시 OUTPUT 매개변수 값도

그대로 저장이 핵심 

 

입력 값의 체크 및 유효성 점검은 아래 FORM 에서 진행 하며 오류 종료 시 FORM END_LOG 호출 

PERFORM CHECK_~ 
PERFORM SET_~ 

 

Main Process 

PERFORM PROCESS_~ 

 

 

전체적 순서 

 

*--------------------------------------------*
* START LOG
*--------------------------------------------*
PERFORM START_LOG . 

*--------------------------------------------*
* CHECK  INPUT VALIDATION
*--------------------------------------------*
PERFORM CHECK_~ .
IF SY-SUBRC <> 0 .  " 오류를 표현하기 위해 SY-SUBRC 로 표현 
   PERFORM END_LOG .
   EXIT.
ENDIF. 

*--------------------------------------------*
* SET VALUE
*--------------------------------------------*
PERFORM SET_~.
IF SY-SUBRC <> 0 .  " 오류를 표현하기 위해 SY-SUBRC 로 표현
   PERFORM END_LOG .
  EXIT.
ENDIF. 

*--------------------------------------------*
* PROCESS
*--------------------------------------------*
PERFORM PROCESS_~ 

*--------------------------------------------*
* END LOG
*--------------------------------------------*
PERFORM END_LOG .

 

여기서 주의 할점은 CHECK시 이용하는 데이터를 다시 SET에서 읽어오는것에 부담을 느끼지 말것

예를 들어 MARA 에서 MATNR의 정보를 이용해야 하는 경우

CHECK에서는 MARA에서 단순히 MATNR의 존재 여부만을 CHECK하고

SET에서 MARA의 정보를 담을 것 .

 

그리 해야 CHECK와 정보 가공이 분리 된다. .. 

 

개인적으로 그러하다. 

 

'ABAP' 카테고리의 다른 글

POPUP Function 정리  (0) 2022.07.20
CTS 락 풀기  (0) 2022.07.20
PI IF XML 을 통한 FILE 업로드 시 CONVERT  (0) 2022.07.19
현재 실행 중인 Function  (0) 2022.07.19
Tcode 에 따른 EXIT 찾기  (0) 2022.07.19

호출된 프로그램은 SY-CPROG

호출된 TCODE는 SY-TCODE 

 

그럼 호출된 Function 은 ? 

Function 'SYSTEM_CALLSTACK' 을 통해 가능하다. 

EVENTTYPE 이 FUNC 인 ET_CALLSTACK 테이블을 확인한다. 

 

해당 FUNCTION 은 ST22 나 ABAP Debuging시에 확인 할 수 있는 이벤트가 저장된다. 

 

  CALL FUNCTION 'SYSTEM_CALLSTACK'
*  EXPORTING
*    MAX_LEVEL          = 0
   IMPORTING
     callstack          = t_abap_stack
     et_callstack       = t_sys_stack.
*
  READ TABLE t_abap_stack TRANSPORTING NO FIELDS
    WITH KEY mainprogram = LV_FUNC.   "Your Program name
  IF sy-subrc NE 0.
    "Not found, go away
    EXIT.
  ELSE.
    "Continue the journey
  ENDIF.

 

'ABAP' 카테고리의 다른 글

POPUP Function 정리  (0) 2022.07.20
CTS 락 풀기  (0) 2022.07.20
PI IF XML 을 통한 FILE 업로드 시 CONVERT  (0) 2022.07.19
자주 쓰는 Layout (FUNCTION)  (0) 2022.07.19
Tcode 에 따른 EXIT 찾기  (0) 2022.07.19

Finding the user-exits of a SAP transaction code

 

REPORT  ztest_cmod NO STANDARD PAGE HEADING. 

* Finding the user-exits of a SAP transaction code 
* 
* Enter the transaction code in which you are looking for the user-exit 
* and it will list you the list of user-exits in the transaction code. 
* Also a drill down is possible which will help you to branch to SMOD. 
* 
* Written by : SAP Basis, ABAP Programming and Other IMG Stuff 
*              http://www.sap-img.com 
* 

TABLES : tstc, tadir, modsapt, modact, trdir, tfdir, enlfdir. 
TABLES : tstct. 
DATA : jtab LIKE tadir OCCURS 0 WITH HEADER LINE. 
DATA : field1(30). 
DATA : v_devclass LIKE tadir-devclass. 
PARAMETERS : p_tcode LIKE tstc-tcode OBLIGATORY. 
SELECT SINGLE * FROM tstc WHERE tcode EQ p_tcode. 
IF sy-subrc EQ 0. 
  SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' 
                  AND object = 'PROG' 
                  AND obj_name = tstc-pgmna. 
  MOVE : tadir-devclass TO v_devclass. 
  IF sy-subrc NE 0. 
    SELECT SINGLE * FROM trdir WHERE name = tstc-pgmna. 
    IF trdir-subc EQ 'F'. 
      SELECT SINGLE * FROM tfdir WHERE pname = tstc-pgmna. 
      SELECT SINGLE * FROM enlfdir WHERE funcname = 
      tfdir-funcname. 
      SELECT SINGLE * FROM tadir WHERE pgmid = 'R3TR' 
                        AND object = 'FUGR' 
                        AND obj_name EQ enlfdir-area. 
      MOVE : tadir-devclass TO v_devclass. 
    ENDIF. 
  ENDIF. 
  SELECT * FROM tadir INTO TABLE jtab 
                WHERE pgmid = 'R3TR' 
                  AND object = 'SMOD' 
                  AND devclass = v_devclass. 
  SELECT SINGLE * FROM tstct WHERE sprsl EQ sy-langu AND 
                                  tcode EQ p_tcode. 
  FORMAT COLOR COL_POSITIVE INTENSIFIED OFF. 
  WRITE:/(19) 'Transaction Code - ', 
      20(20) p_tcode, 
      45(50) tstct-ttext. 
  SKIP. 
  IF NOT jtab[] IS INITIAL. 
    WRITE:/(95) sy-uline. 
    FORMAT COLOR COL_HEADING INTENSIFIED ON. 
    WRITE:/1 sy-vline, 
          2 'Exit Name', 
          21 sy-vline , 
          22 'Description', 
          95 sy-vline. 
    WRITE:/(95) sy-uline. 
    LOOP AT jtab. 
      SELECT SINGLE * FROM modsapt 
            WHERE sprsl = sy-langu AND 
                    name = jtab-obj_name. 
      FORMAT COLOR COL_NORMAL INTENSIFIED OFF. 
      WRITE:/1 sy-vline, 
            2 jtab-obj_name HOTSPOT ON, 
            21 sy-vline , 
            22 modsapt-modtext, 
            95 sy-vline. 
    ENDLOOP. 
    WRITE:/(95) sy-uline. 
    DESCRIBE TABLE jtab. 
    SKIP. 
    FORMAT COLOR COL_TOTAL INTENSIFIED ON. 
    WRITE:/ 'No of Exits:' , sy-tfill. 
  ELSE. 
    FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. 
    WRITE:/(95) 'No User Exit exists'. 
  ENDIF. 
ELSE. 
  FORMAT COLOR COL_NEGATIVE INTENSIFIED ON. 
  WRITE:/(95) 'Transaction Code Does Not Exist'. 
ENDIF. 

AT LINE-SELECTION. 
  GET CURSOR FIELD field1. 
  CHECK field1(4) EQ 'JTAB'. 
  SET PARAMETER ID 'MON' FIELD sy-lisel+1(10). 
  CALL TRANSACTION 'SMOD' AND SKIP FIRST  SCREEN.

'ABAP' 카테고리의 다른 글

POPUP Function 정리  (0) 2022.07.20
CTS 락 풀기  (0) 2022.07.20
PI IF XML 을 통한 FILE 업로드 시 CONVERT  (0) 2022.07.19
자주 쓰는 Layout (FUNCTION)  (0) 2022.07.19
현재 실행 중인 Function  (0) 2022.07.19

+ Recent posts