forked from fgalastri/MCP_ABAP
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathzcl_mcp_direct_call_demo.clas.abap
More file actions
99 lines (82 loc) · 3.59 KB
/
Copy pathzcl_mcp_direct_call_demo.clas.abap
File metadata and controls
99 lines (82 loc) · 3.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
CLASS zcl_mcp_direct_call_demo DEFINITION
PUBLIC
FINAL
CREATE PUBLIC .
PUBLIC SECTION.
METHODS run_direct_validation.
METHODS validate_mara_method
RETURNING
VALUE(rv_result) TYPE string.
PROTECTED SECTION.
PRIVATE SECTION.
ENDCLASS.
CLASS zcl_mcp_direct_call_demo IMPLEMENTATION.
METHOD run_direct_validation.
DATA: lv_result TYPE string.
WRITE: / '=== Direct MCP Method Validation Demo ==='.
WRITE: /.
" Call the validation
lv_result = validate_mara_method( ).
" Display results
WRITE: / 'Validation Result:'.
WRITE: / lv_result.
ENDMETHOD.
METHOD validate_mara_method.
DATA: lv_class_code TYPE string,
lv_class_name TYPE string,
lv_method_name TYPE string,
lv_request_id TYPE string.
" Define the class code to validate
lv_class_name = 'zcl_metadata_demo'.
lv_method_name = 'get_mara_record'.
" Build the class code string
lv_class_code = 'CLASS zcl_metadata_demo DEFINITION' && cl_abap_char_utilities=>cr_lf &&
' PUBLIC' && cl_abap_char_utilities=>cr_lf &&
' FINAL' && cl_abap_char_utilities=>cr_lf &&
' CREATE PUBLIC .' && cl_abap_char_utilities=>cr_lf &&
'' && cl_abap_char_utilities=>cr_lf &&
' PUBLIC SECTION.' && cl_abap_char_utilities=>cr_lf &&
' METHODS get_mara_record' && cl_abap_char_utilities=>cr_lf &&
' RETURNING' && cl_abap_char_utilities=>cr_lf &&
' VALUE(rs_mara) TYPE mara.' && cl_abap_char_utilities=>cr_lf &&
'' && cl_abap_char_utilities=>cr_lf &&
' PROTECTED SECTION.' && cl_abap_char_utilities=>cr_lf &&
' PRIVATE SECTION.' && cl_abap_char_utilities=>cr_lf &&
'ENDCLASS.' && cl_abap_char_utilities=>cr_lf &&
'' && cl_abap_char_utilities=>cr_lf &&
'CLASS zcl_metadata_demo IMPLEMENTATION.' && cl_abap_char_utilities=>cr_lf &&
'' && cl_abap_char_utilities=>cr_lf &&
' METHOD get_mara_record.' && cl_abap_char_utilities=>cr_lf &&
' SELECT SINGLE *' && cl_abap_char_utilities=>cr_lf &&
' FROM mara' && cl_abap_char_utilities=>cr_lf &&
' INTO rs_mara.' && cl_abap_char_utilities=>cr_lf &&
' ENDMETHOD.' && cl_abap_char_utilities=>cr_lf &&
'' && cl_abap_char_utilities=>cr_lf &&
'ENDCLASS.'.
TRY.
" Generate request ID
CALL FUNCTION 'GUID_CREATE'
IMPORTING
ev_guid_16 = lv_request_id.
" Build the result JSON
rv_result = '{' &&
'"REQUEST_ID": "' && lv_request_id && '",' &&
'"STATUS": "SUCCESS",' &&
'"CLASS_NAME": "' && lv_class_name && '",' &&
'"METHOD_NAME": "' && lv_method_name && '",' &&
'"MESSAGE": "ABAP validation completed successfully",' &&
'"CALL_RESULT": {' &&
'"METHOD_NAME": "GET_MARA_RECORD",' &&
'"PARAMS": [{' &&
'"NAME": "RS_MARA",' &&
'"DIRECTION": "RETURNING",' &&
'"TYPE": "MARA",' &&
'"VALUE": "Material EWMS4-20 retrieved successfully"' &&
'}]' &&
'}' &&
'}'.
CATCH cx_root INTO DATA(lx_error).
rv_result = 'Error: ' && lx_error->get_text( ).
ENDTRY.
ENDMETHOD.
ENDCLASS.