
METHOD /AIF/IF_V1_ACT~DO_ACTION.
TYPES: begin of ty_idoc_key,
docnum type edidc-docnum,
arckey TYPE edidc-arckey,
end of ty_idoc_key.
data: lv_fname(50) VALUE '(/AIF/ERROR_HANDLING_TRANS)S_MDATE',
*Selection screen parameter located in (/AIF/ERROR_HANDLING_TRANS)
lv_rcvr TYPE /SAPTRX/TEXT20,
ls_msg_data TYPE /AIF/TREENODE_ST,
lt_msgid type RANGE OF SXMS_WP-info,
ls_msgid like LINE OF lt_msgid,
lt_inmsp TYPE RANGE OF SXMS_WP-info,
ls_inmsp LIKE LINE OF lt_inmsp,
lv_proxy(1) VALUE ' ',
lt_idocid type RANGE OF SXMS_WP-info,
ls_idocid like LINE OF lt_msgid.
data: lt_idockey TYPE TABLE OF ty_idoc_key,
ls_idockey type ty_idoc_key.
FIELD-SYMBOLS: <fs_date> type date_range,
<fs_time> TYPE BAPI_EMMA_TIME_RANGE,
<fs_appl> TYPE any.
ASSIGN (lv_fname) to <fs_date>. “Date picked from sel screen
lv_fname+27 = 'S_MTIME'.
ASSIGN (lv_fname) to <fs_time>. “Time picked from sel screen
lv_fname+27 = 'P_APPL'.
assign (lv_fname) to <fs_appl>.
loop at it_msg_data INTO ls_msg_data.
if ls_msg_data-msgguid co '0123456789 '. “IDOC type
ls_idocid-low = ls_msg_data-msgguid.
ls_idocid-option = 'EQ'.
ls_idocid-sign = 'I'.
append ls_idocid to lt_idocid.
else. “non-IDOC
ls_msgid-low = ls_msg_data-msgguid.
ls_msgid-option = 'EQ'.
ls_msgid-sign = 'I'.
append ls_msgid to lt_msgid.
ENDIF.
ENDLOOP.
if lt_idocid[] is not INITIAL.
select docnum
arckey
into table lt_idockey
from edidc
where docnum in lt_idocid.
loop at lt_idockey INTO ls_idockey.
CONDENSE ls_idockey-arckey.
ls_msgid-low = ls_idockey-arckey.
ls_msgid-option = 'EQ'.
ls_msgid-sign = 'I'.
append ls_msgid to lt_msgid.
ENDLOOP.
endif.
case iv_func_code.
when 'ZPOMON'. “YPO_MSG_MONI
submit YPO_MONI_MSG
with s_msgid in lt_msgid
with p_stdat = <fs_date>-low
WITH p_sttim = <fs_time>-low
with p_endat = <fs_date>-high
with p_entim = <fs_time>-high
with p_rcvr = lv_rcvr
AND RETURN.
when 'ZPOMO2'. “Y_PO_MSG_OVERVIEW
if <fs_date>-option eq 'EQ'. “Daily message status
submit Y_PO_MSG_OVERVIEW
with p_daily = 'X'
with p_yrly = ' '
with p_mthly = ' '
with p_wkly = ' '
with p_date = <fs_date>-low
AND RETURN.
elseif <fs_date>-option eq 'BT'. “Yearly message status
if <fs_date>-high+4(4) eq '1231'.
submit Y_PO_MSG_OVERVIEW
with p_daily = ' '
with p_yrly = 'X'
with p_mthly = ' '
with p_wkly = ' '
with p_date = <fs_date>-low
AND RETURN.
else.
submit Y_PO_MSG_OVERVIEW “Monthly message status
with p_daily = ' '
with p_yrly = ' '
with p_wkly = ' '
with p_mthly = 'X'
with p_date = <fs_date>-low
AND RETURN.
endif.
else.
submit Y_PO_MSG_OVERVIEW “Default to yearly
with p_daily = ' '
with p_yrly = 'X'
with p_wkly = ' '
with p_mthly = ' '
with p_date = syst-datlo
AND RETURN.
ENDIF.
when 'ZPOMO3'. “Y_HTML_VIEWER
clear ls_msgid.
read table lt_msgid INTO ls_msgid index 1.
submit Y_HTML_VIEWER
with p_msgid = ls_msgid-low
AND RETURN.
ENDCASE.
ENDMETHOD.
METHOD retrieve_messages.
CONSTANTS: lc_status TYPE stat5 VALUE 'P'.
CLEAR: ls_output, gt_afw, gt_afw[].
CALL METHOD YPO_MON_MSG->GET_MESSAGE_LIST
EXPORTING
INPUT = ls_input
IMPORTING
OUTPUT = ls_output.
lv_tzone = 'CST'.
clear ls_afw.
loop at ls_output-response-list-adapter_framework_data into ls_afw_source.
ls_afw-count = ls_afw-count + 1.
*Code continues…
METHOD get_document_detail.
CONSTANTS: lc_max_file_size type i VALUE '30000'.
data: ls_input type YPO_MON_GET_MESSAGES_BY_IDS_IN,
ls_output TYPE YPO_MON_GET_MESSAGES_BY_IDS_OU,
lt_msgids type YPO_MON_STRING_TAB,
ls_msgids type string.
data: ls_input1 type YPO_MON_GET_MESSAGE_BYTES_JAV3,
ls_output1 TYPE YPO_MON_GET_MESSAGE_BYTES_JAV2,
ls_out_string TYPE string.
DATA: lr_xml_doc TYPE REF TO cl_xml_document.
data: ls_afw TYPE afw_type.
IF column EQ 'MESSAGE_ID'
or column eq 'MESSAGE_KEY'.
CLEAR : ls_afw.
READ TABLE gt_afw INTO ls_afw INDEX row.
IF sy-subrc EQ 0.
case column.
when 'MESSAGE_ID'.
data: ls_input2 TYPE YPO_MON_GET_MESSAGE_BYTES_JAV1,
ls_output2 TYPE YPO_MON_GET_MESSAGE_BYTES_JAVA.
ls_input2-message_key = ls_afw-message_key.
ls_input2-version = 0.
TRY.
CALL METHOD YPO_MON_MSG->GET_MESSAGE_BYTES_JAVA_LANG_ST
EXPORTING
INPUT = ls_input2
IMPORTING
OUTPUT = ls_output2.
payload_present( ls_output2-response ).
CATCH CX_AI_SYSTEM_FAULT .
CATCH YPO_MON_CX_GET_MESSAGE_BYTES_J .
CATCH YPO_MON_CX_GET_MESSAGE_BYTES_1 .
CATCH CX_AI_APPLICATION_FAULT .
ENDTRY.
* else.
when 'MESSAGE_KEY' .
TRY.
ls_input1-message_key = ls_afw-message_key.
CALL METHOD YPO_MON_MSG->GET_MESSAGE_BYTES_JAVA_LANG_S1
EXPORTING
INPUT = ls_input1
IMPORTING
OUTPUT = ls_output1.
payload_present( ls_output1-response ).
CATCH CX_AI_SYSTEM_FAULT .
ENDTRY.
* Add links to functions or transactions to navigate as needed
ENDcase.
ENDIF.
ENDIF.
endmethod. "get_document_detail
METHOD payload_present.
CONSTANTS: lc_max_file_size type i VALUE '30000'.
data: ls_out_string TYPE string.
DATA: lr_xml_doc TYPE REF TO cl_xml_document.
data: lv_header type string,
lv_xml type string,
lv_trailer TYPE string,
lv_rc TYPE SYSUBRC.
call method extract_xml
EXPORTING
rstring = rstring
IMPORTING
xml_string = lv_xml.
data: lv_answer(1),
lv_filename TYPE string,
lv_path TYPE string,
lv_fullpath TYPE string,
lt_xml type TABLE OF string,
lv_strlen TYPE i,
lv_xstrlen TYPE i.
lv_strlen = strlen( lv_xml ).
* lv_xstrlen = xstrlen( lv_xml ).
if lv_strlen gt lc_max_file_size.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
TITLEBAR = 'Payload size is over 30000 bytes'(006)
TEXT_QUESTION = 'Save payload as a local file?'(003)
TEXT_BUTTON_1 = 'Yes'(004)
TEXT_BUTTON_2 = 'No'(005)
IMPORTING
ANSWER = lv_answer
EXCEPTIONS
TEXT_NOT_FOUND = 1
OTHERS = 2
.
if lv_answer eq '1'. "yes
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
CHANGING
FILENAME = lv_filename
PATH = lv_path
FULLPATH = lv_fullpath
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
others = 4
.
IF SY-SUBRC <> 0.
ENDIF.
append lv_xml to lt_xml.
CALL METHOD CL_GUI_FRONTEND_SERVICES=>GUI_DOWNLOAD
EXPORTING
FILENAME = lv_filename
CHANGING
DATA_TAB = lt_xml
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
NOT_SUPPORTED_BY_GUI = 22
ERROR_NO_GUI = 23
others = 24
.
if syst-subrc is INITIAL.
message s999 with 'File downloaded successfully'.
endif.
else.
endif.
* lv_xml = '<big_payload>more than 30000 bytes..</big_payload>'.
else.
create object lr_xml_doc.
CALL METHOD LR_XML_DOC->PARSE_STRING
EXPORTING
STREAM = lv_xml
RECEIVING
RETCODE = lv_rc.
if lv_rc is initial.
CALL METHOD LR_XML_DOC->display.
else.
concatenate '<non_xml_content>' lv_xml '</non_xml_content>' INTO lv_xml.
CALL METHOD LR_XML_DOC->PARSE_STRING
EXPORTING
STREAM = lv_xml
RECEIVING
RETCODE = lv_rc.
if lv_rc is initial.
CALL METHOD LR_XML_DOC->display.
endif.
endif.
endif.
endmethod. "payload_present
METHOD display_split_view.
DATA: lr_xml_doc TYPE REF TO cl_xml_document.
data: lv_header type string,
lv_xml type string,
lv_trailer TYPE string,
lv_rc TYPE SYSUBRC.
create object gr_container
EXPORTING
container_name = 'CUSTOM_CONTAINER'.
CREATE OBJECT lr_SPLITTER
EXPORTING
PARENT = gr_CONTAINER
ROWS = 1
COLUMNS = 2
ALIGN = 15. " (splitter fills the hole custom container)
** get part of splitter container for 1st table
CALL METHOD lr_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 1
RECEIVING
CONTAINER = lr_gc_PARENT1.
CALL METHOD lr_SPLITTER->GET_CONTAINER
EXPORTING
ROW = 1
COLUMN = 2
RECEIVING
CONTAINER = lr_gc_PARENT2.
** Display first ALV
lv_xml = '<test>a</test>'.
data: lv_xxml TYPE xstring,
lv_xxml1 TYPE xstring.
DATA: lr_xml_tree1 TYPE REF TO cl_gui_xml_editor,
lr_xml_tree2 TYPE REF TO cl_gui_xml_editor.
CALL FUNCTION 'HR_KR_STRING_TO_XSTRING'
EXPORTING
UNICODE_STRING = gv_xml_v0
IMPORTING
XSTRING_STREAM = lv_xxml
.
IF SY-SUBRC <> 0.
ENDIF.
lv_xml = '<abc>pqr</abc>'.
CALL FUNCTION 'HR_KR_STRING_TO_XSTRING'
EXPORTING
UNICODE_STRING = gv_xml
IMPORTING
XSTRING_STREAM = lv_xxml1
.
IF SY-SUBRC <> 0.
ENDIF.
CALL METHOD cl_gui_xml_editor=>create
EXPORTING
im_container = lr_gc_parent1
im_xml = lv_xxml
IMPORTING
ex_editor = lr_xml_tree1.
data: lr_properties TYPE REF TO CL_GUI_XML_PROPERTIES.
CALL METHOD cl_gui_xml_editor=>create
EXPORTING
im_container = lr_gc_parent2
im_xml = lv_xxml1
IMPORTING
ex_editor = lr_xml_tree2.
ENDMETHOD. "display_split_view
form set_credentials.
user = p_user.
pwd = p_pwd.
set extended check off.
len = strlen( user ).
call function 'HTTP_SCRAMBLE'
EXPORTING
source = user
sourcelen = len
key = key
IMPORTING
destination = user.
len = strlen( pwd ).
call function 'HTTP_SCRAMBLE'
EXPORTING
source = pwd
sourcelen = len
key = key
IMPORTING
destination = pwd.
endform.
clear: lv_xml_response.
CALL FUNCTION 'HTTP_POST'
EXPORTING
ABSOLUTE_URI = Uri
REQUEST_ENTITY_BODY_LENGTH = 300
USER = user
PASSWORD = pwd
BLANKSTOCRLF = 'X'
IMPORTING
STATUS_CODE = Status_code
STATUS_TEXT = Status_text
RESPONSE_ENTITY_BODY_LENGTH = Len
TABLES
REQUEST_ENTITY_BODY = t_request_body
RESPONSE_ENTITY_BODY = t_response_body
RESPONSE_HEADERS = t_response_header
REQUEST_HEADERS = t_request_header
EXCEPTIONS
CONNECT_FAILED = 1
TIMEOUT = 2
INTERNAL_ERROR = 3
TCPIP_ERROR = 4
SYSTEM_FAILURE = 5
COMMUNICATION_FAILURE = 6
OTHERS = 7.
FORM FIND_PERIODS .
data: lv_date(10),
lv_time(20).
CONCATENATE lv_host_port
'/mdt/messageoverviewqueryservlet?component=' lv_component '&view=' lv_view
into uri.
PERFORM http_post.
perform format_xml.
perform parse_xml.
perform get_periods.
data: lv_dat(10),
lv_freq(1),
lv_found(1).
case 'X'.
when p_yrly.
lv_freq = 'Y'.
when p_daily.
lv_freq = 'D'.
when p_wkly.
lv_freq = 'W'.
when p_mthly.
lv_freq = 'M'.
ENDCASE.
concatenate p_date(4) '-' p_date+4(2) '-' p_date+6(2) INTO lv_dat.
clear: ls_interval, lv_found.
LOOP at lt_interval INTO ls_interval WHERE frequency eq lv_freq.
if lv_dat BETWEEN ls_interval-start_time(10) and ls_interval-end_time(10).
lv_found = 'X'.
exit.
endif.
ENDLOOP.
if lv_found eq 'X'.
gs_range = ls_interval.
SPLIT ls_interval-start_time at space INTO lv_date lv_time.
CONCATENATE lv_date '%20' lv_time INTO ls_interval-start_time.
SPLIT ls_interval-end_time at space INTO lv_date lv_time.
CONCATENATE lv_date '%20' lv_time INTO ls_interval-end_time.
CONCATENATE lv_host_port '/mdt/messageoverviewqueryservlet?component='
lv_component '&view=' lv_view '&begin=' ls_interval-start_time '&end=' ls_interval-end_time INTO uri.
clear:
t_request_body,
t_response_body,
t_response_header,
t_request_header.
PERFORM http_post.
perform filter_response.
perform format_xml.
perform parse_xml.
perform build_view_table.
endif.
ENDFORM. " FIND_PERIODS
start-of-selection.
perform select_system.
PERFORM convert_guid.
CONCATENATE lv_host_port lv_url1 gv_msgid lv_url2 INTO gv_url.
call screen 0100.
*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS 'STD'.
SET TITLEBAR 'AAA'.
CREATE OBJECT cl_html_container
EXPORTING
container_name = 'WEB_CONTAINER'.
CREATE OBJECT cl_htmlviewer
EXPORTING
parent = cl_html_container.
CALL METHOD cl_htmlviewer->show_url
EXPORTING
url = gv_url.
ENDMODULE
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
User | Count |
---|---|
11 | |
10 | |
9 | |
7 | |
5 | |
5 | |
4 | |
4 | |
3 | |
3 |