300x250

SAP URL 파라미터 숨기기


# ABAP 프로그램에서 웹딘을 호출하면서 파라미터의 값이 다음과 같이 보이게 되었다.

예를 들어)

 

다음과 같이 사용자회사코드사원번호를 변경하게 되면 큰일 나는 상황이 오는 것이다..

# 다른 회사 사람들이 전표를 칠 수 있는 상황이 올 수도 있고 결재를 할 수 있는 상황.. #

 

회사코드사원번호암호화? 시켜서 사용자가 못 바꾸게 만들어보자

 

 

SAP URL GET방식 -> POST 방식으로 변경...


# 우선 웹딘에서 POST 방식으로 변경하는 방법은 있었지만,  ABAP 프로그램에서 웹딘호출하는 방식에서는 찾지 못하였다. 

 

그래서 동기인 진씨에 도움을 통해서 URL을 던질 때 파라미터를 변형시키는 방법을 선택하였다.

 

 

SAP URL 파라미터 암호화..


# 우선 다음과 같은 로직이 있다고 해보자.

# 우리가 봐야 할 것은 LV_BUKRS(회사코드)LV_EMPCD(사원번호)이다 

 

# 이대로 실행을 시키면 위에서 봤듯이 다음과 같이 회사코드사원번호가 나오게 된다.

 

 

#01. Base64을 통해서 파라미터 암호화 하기( Define 구문 )

DATA:
  P_VALUE       TYPE STRING,
  GT_PARAMETERS TYPE TIHTTPNVP,
  GS_PARAMETERS TYPE LINE OF TIHTTPNVP.

DEFINE _BASE_PARAMETER.

  GS_PARAMETERS-NAME = &1.

  P_VALUE = &2.

  CALL METHOD CL_HTTP_UTILITY=>ENCODE_BASE64
    EXPORTING
      unencoded = P_VALUE
    RECEIVING
      encoded   = P_VALUE.

  GS_PARAMETERS-VALUE = P_VALUE.

  APPEND GS_PARAMETERS  TO GT_PARAMETERS.

    CLEAR:
      P_VALUE,
      GS_PARAMETERS.

END-OF-DEFINITION.

# 로직을 통해서 암호화를 할 수 있다.

 

# 1.1 디버깅을 돌려보면 

 

# 1.2 이런 식으로 GT_PARAMETERS 변환 되어서 값이 들어가는 걸 볼 수 있다.

 

# Define 구문 알고싶으면 밑에 링크를 클릭!

2022.02.16 - [.SAP/..ABAP] - SAP MACRO,DEFINE 정리

 

SAP MACRO,DEFINE 정리

Macro을 사용하려면 DEFINE 함수를 써야 한다. 곧 Macro와 Define은 함께 움직여야 한다. Macro은 Local Macro vs Global Macro로 나뉜다. Local과 Global의 차이는 알 거라고 생각하고 넘어가겠다. 시작하기 전 DEFINE

potato98.tistory.com

 

 

#02. 이런 식으로 회사코드사원번호암호화 시키면 GT_PARAMETERS에 모이게 된다.

 

#03. 기본 로직에 암호화 로직 추가를 해보자.

" 암호화 할 Parameter 값 만들기 "
_BASE_PARAMETER 'compid'  LV_BUKRS.
_BASE_PARAMETER 'empno'   LV_EMPCD.



CL_WD_UTILITIES=>CONSTRUCT_WD_URL(
  EXPORTING
    APPLICATION_NAME              = LV_APPNM 
    IN_PARAMETERS                 = GT_PARAMETERS " 암호화 파라미터 값 넣기 "
  IMPORTING
    OUT_ABSOLUTE_URL              = LV_URL_STRING
).


" LV_URL_STRING에 값이 들어가기 때문에 기존에 있던 파라미터를 없애주자 "
LV_URL = |{ LV_URL_STRING }|
      && |&decoded=X&sap-client={ SY-MANDT }&sap-language=ko#|.

 

#04. 실행을 시켜보면 다음과 같이 암호화된 파라미터를 볼 수 있다.

 

 

 

도움이 되셨으면 하단에 있는 광고 한번씩 눌러주세유!!

 

 

 

전체적인 로직

DATA:
  P_VALUE       TYPE STRING,
  GT_PARAMETERS TYPE TIHTTPNVP,
  GS_PARAMETERS TYPE LINE OF TIHTTPNVP.

DEFINE _BASE_PARAMETER.

  GS_PARAMETERS-NAME = &1.

  P_VALUE = &2.

  CALL METHOD CL_HTTP_UTILITY=>ENCODE_BASE64
    EXPORTING
      unencoded = P_VALUE
    RECEIVING
      encoded   = P_VALUE.

  GS_PARAMETERS-VALUE = P_VALUE.

  APPEND GS_PARAMETERS  TO GT_PARAMETERS.

    CLEAR:
      P_VALUE,
      GS_PARAMETERS.

END-OF-DEFINITION.


DATA:
  LV_URL        TYPE SO_URL,
  LV_URL_STRING TYPE STRING,
  LV_TITLE      TYPE CHAR255,
  LV_APPNM      TYPE STRING,
  LT_PARAM      TYPE TIHTTPNVP.

DATA:
  LV_BUKRS    TYPE BUKRS,
  LV_EMPCD(5).


LV_APPNM = 'zwfi003'.

LV_BUKRS = 'GJ10'.
LV_EMPCD = 'GAMJA'.


_BASE_PARAMETER 'compid'  LV_BUKRS.
_BASE_PARAMETER 'empno'   LV_EMPCD.

" 웹딘 프로 어플리케이션 URL 가져오기 "
CL_WD_UTILITIES=>CONSTRUCT_WD_URL(
  EXPORTING
    APPLICATION_NAME              = LV_APPNM  " 웹딘 어플리케이션 "
    IN_PARAMETERS                 = GT_PARAMETERS " 암호화 파라미터 "
  IMPORTING
    OUT_ABSOLUTE_URL              = LV_URL_STRING
).



LV_URL = |{ LV_URL_STRING }|
      && |&decoded=X&sap-client={ SY-MANDT }&sap-language=ko#|.


***LV_URL = |{ LV_URL_STRING }|
***      && |?compid={ LV_BUKRS }&empno={ LV_EMPCD }|
***      && |&decoded=X&sap-client={ SY-MANDT }&sap-language=ko#|.



CALL FUNCTION 'CALL_BROWSER'
  EXPORTING
    URL                    = LV_URL
    WINDOW_NAME            = LV_TITLE
    NEW_WINDOW             = ABAP_TRUE
  EXCEPTIONS
    FRONTEND_NOT_SUPPORTED = 1
    FRONTEND_ERROR         = 2
    PROG_NOT_FOUND         = 3
    NO_BATCH               = 4
    UNSPECIFIED_ERROR      = 5
    OTHERS                 = 6.

 

 

끝!

 

 

 

728x90

'.SAP > ..ABAP' 카테고리의 다른 글

SAP 테이블 데이터 강제 수정하기 [SE16N]  (1) 2024.02.06
SAP Call Transaction 새 창 띄우기  (0) 2024.01.19
SAP ALV Blank(공백) 정리  (1) 2024.01.04
SAP CTS Task 재지정( 옮기기 )  (0) 2024.01.02
SAP CTS 삭제 방법  (1) 2024.01.02