*&---------------------------------------------------------------------*
*& REPORT ZCWZT_SAP
*&---------------------------------------------------------------------*
*&
*&---------------------------------------------------------------------*
REPORT ZCWZT_SAP.
*调用接口相关参数定义
DATA:LO_PROXY TYPE REF TO ZZTCO_LOGIN1,
INPUT TYPE ZZTSELECT_USER1,
LS_IN TYPE ZSELECT_USER,
LT_IN TYPE TABLE OF ZSELECT_USER,
LS_INPUT TYPE ZZTSELECT_USER1,
OUTPUT TYPE ZZTSELECT_USER_RESPONSE1.
DATA: JSONSTR TYPE STRING.
DATA GT_OUT TYPE TABLE OF ZZT_OUT_L.
DATA:GT_ZZTT_ID_XF LIKE TABLE OF ZZTT_ID_XF WITH HEADER LINE.
DATA E_DATA TYPE TABLE OF ZZT_OUT .
DATA ES_DATA TYPE ZZT_OUT.
DATA: ERROR_FLAG TYPE CHAR1,
ERROR_MESSAGE TYPE STRING,
ERROR_FLAG_JSON TYPE STRING.
*
*&---------------------------------------------------------------------*
REFRESH:LT_IN[],E_DATA,GT_ZZTT_ID_XF[] .
*&---------------------------------------------------------------------*
LS_IN-USERFLAG = SY-UNAME.
LS_IN-SYSTEMFLAG = 'SAP'.
APPEND LS_IN TO LT_IN.
LS_INPUT-PARAMETERS-USERFLAG = SY-UNAME.
LS_INPUT-PARAMETERS-SYSTEMFLAG = 'SAP'.
INPUT-PARAMETERS = LS_INPUT-PARAMETERS.
*调用代理类 下发数据
TRY.
CREATE OBJECT LO_PROXY TYPE ZZTCO_LOGIN1 .
CALL METHOD LO_PROXY->SELECT_USER
EXPORTING
INPUT = INPUT
IMPORTING
OUTPUT = OUTPUT.
CATCH CX_AI_SYSTEM_FAULT INTO DATA(LO_SYS_EXCEPTION).
CATCH CX_AI_APPLICATION_FAULT INTO DATA(LO_APP_EXCEPTION).
DATA(LV_MSG1) = LO_SYS_EXCEPTION->IF_MESSAGE~GET_TEXT( ).
DATA(LV_MSG2) = LO_APP_EXCEPTION->IF_MESSAGE~GET_TEXT( ).
ENDTRY.
IF OUTPUT-PARAMETERS-RETURN IS NOT INITIAL .
JSONSTR = OUTPUT-PARAMETERS-RETURN .
ENDIF.
*&---------------------------------------------------------------------*
* ***JSON->内表
CALL FUNCTION 'ZZT_JSON_TO_ABAP'
EXPORTING
I_JSON = JSONSTR
IMPORTING
E_DATA = E_DATA
E_FLAG = ERROR_FLAG.
IF ERROR_FLAG EQ 'E'.
MESSAGE 'JSON 解析失败,请联系IT管理员!!!' TYPE 'E' DISPLAY LIKE 'E'.
EXIT.
ENDIF.
select SINGLE ZIP INTO @data(l_ip) FROM zsapzt .
DATA(LV_1) = 'http://' && l_ip && ':9007/#/user/logins?'.
READ TABLE E_DATA INTO DATA(LS_EDATA) INDEX 1.
IF SY-SUBRC = 0..
GT_OUT[] = LS_EDATA-DATA[].
GT_ZZTT_ID_XF-USERFLAG = SY-UNAME.
GT_ZZTT_ID_XF-ZTIME = SY-UZEIT.
GT_ZZTT_ID_XF-ZDATE = SY-DATUM.
GT_ZZTT_ID_XF-MSG = LS_EDATA-MSG.
GT_ZZTT_ID_XF-SUCESS = LS_EDATA-SUCESS.
APPEND GT_ZZTT_ID_XF.CLEAR GT_ZZTT_ID_XF.
ENDIF.
DATA :lv_end TYPE string.
LOOP AT GT_OUT INTO DATA(LS_OUT_DATA).
CONDENSE LS_OUT_DATA-PASSWORD NO-GAPS.
CONDENSE LS_OUT_DATA-TENLANDID NO-GAPS.
CONDENSE LS_OUT_DATA-USERNAME NO-GAPS.
LV_END = |{ LV_1 }{ 'password=' }{ LS_OUT_DATA-PASSWORD }{ '&'}{ 'tenantId=' }{ LS_OUT_DATA-TENLANDID }{ '&'}{ 'username=' }{ LS_OUT_DATA-USERNAME }{ '&type=account&grant_type=password&scope=all' }|. "区分大小写
ENDLOOP.
IF sy-subrc NE 0.
LV_END = |{ LV_1 }{ 'password=''&'}{ 'tenantId=''&'}{ 'username=' }{ '&type=account&grant_type=password&scope=all' }|. "区分大小写
ENDIF.
MODIFY ZZTT_ID_XF FROM TABLE GT_ZZTT_ID_XF.
*&---------------------------------------------------------------------*
*登陆
*CALL METHOD CL_GUI_FRONTEND_SERVICES=>EXECUTE
* EXPORTING
* DOCUMENT = LV_END
* EXCEPTIONS
* OTHERS = 1.
cl_gui_frontend_services=>execute(
EXPORTING
application = 'chrome.exe'
parameter = LV_END
EXCEPTIONS
OTHERS = 1 ).