300x250
728x90
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 정리
#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
'.ABAP > ..모든 것' 카테고리의 다른 글
SAP 테이블 데이터 강제 수정하기 [SE16N] (1) | 2024.02.06 |
---|---|
SAP Call Transaction 새 창 띄우기 (0) | 2024.01.19 |
SAP SELECT CASE문 정리 (0) | 2023.12.21 |
SAP Maintenance View( 유지보수 뷰 ) 정리 (2) | 2023.12.15 |
SAP Function Group 정리 (1) | 2023.12.15 |