Skip to content

Instantly share code, notes, and snippets.

@kgorin8
Created September 5, 2019 07:13
Show Gist options
  • Save kgorin8/6ce20978597819968230f025193e3b34 to your computer and use it in GitHub Desktop.
Save kgorin8/6ce20978597819968230f025193e3b34 to your computer and use it in GitHub Desktop.
*&---------------------------------------------------------------------*
*& Report ZSDN_WDY_OTR_EDITOR
*&
*&---------------------------------------------------------------------*
REPORT zsdn_wdy_otr_translator.
TABLES: wdy_component.
**********************************************************************
* Global Types Declaration *
**********************************************************************
TYPES: BEGIN OF gsty_wd_out_tab,
btn_01 TYPE c LENGTH 10,
component_name TYPE wdy_component_name,
view_name TYPE wdy_view_name,
END OF gsty_wd_out_tab.
TYPES: gtty_wd_out_tab TYPE TABLE OF gsty_wd_out_tab.
TYPES: BEGIN OF gsty_wdy_cname_f4,
component_name TYPE wdy_component_name,
description TYPE wdy_md_description,
END OF gsty_wdy_cname_f4.
**********************************************************************
* CLASS lcl_handle_events DEFINITION
**********************************************************************
*
**********************************************************************
CLASS lcl_handle_events DEFINITION.
PUBLIC SECTION.
METHODS:
on_link_click
FOR EVENT link_click OF cl_salv_events_table
IMPORTING row column.
ENDCLASS. "lcl_handle_events DEFINITION
**********************************************************************
* Global Data Declaration *
**********************************************************************
DATA: gt_wd_otr TYPE gtty_wd_out_tab.
DATA: go_event_handler TYPE REF TO lcl_handle_events.
**********************************************************************
* SELECTION SCREEN *
**********************************************************************
SELECTION-SCREEN: BEGIN OF BLOCK b1.
SELECT-OPTIONS: pcname FOR wdy_component-component_name OBLIGATORY.
PARAMETERS: pslangu TYPE sylangu MATCHCODE OBJECT h_t002 OBLIGATORY.
PARAMETERS: pdlangu TYPE sylangu MATCHCODE OBJECT h_t002 OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK b1.
**********************************************************************
* SEARCH HELP *
**********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pcname-low.
* Create Search Help
DATA: lt_wdy_component TYPE TABLE OF gsty_wdy_cname_f4.
FIELD-SYMBOLS:<lw_wdy_component> TYPE gsty_wdy_cname_f4.
SELECT * INTO CORRESPONDING FIELDS OF TABLE lt_wdy_component
FROM wdy_component
WHERE component_name IN pcname.
LOOP AT lt_wdy_component ASSIGNING <lw_wdy_component>.
SELECT SINGLE * INTO CORRESPONDING FIELDS OF <lw_wdy_component>
FROM wdy_componentt
WHERE component_name = <lw_wdy_component>-component_name
AND langu = sy-langu.
ENDLOOP.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'COMPONENT_NAME'
dynprofield = 'PCNAME'
dynpprog = sy-cprog
dynpnr = sy-dynnr
value_org = 'S'
TABLES
value_tab = lt_wdy_component.
**********************************************************************
* Text Initialization *
**********************************************************************
INITIALIZATION.
%_pcname_%_app_%-text = 'WD Component Name'.
%_pslangu_%_app_% = 'Source Language'.
%_pdlangu_%_app_% = 'Destination Language'.
**********************************************************************
* START of SELECTION *
**********************************************************************
START-OF-SELECTION.
DATA: gr_table TYPE REF TO cl_salv_table,
gr_display TYPE REF TO cl_salv_display_settings,
gr_functions TYPE REF TO cl_salv_functions,
gr_events TYPE REF TO cl_salv_events_table,
gr_columns TYPE REF TO cl_salv_columns_table,
gr_column TYPE REF TO cl_salv_column_table,
l_color TYPE lvc_s_colo.
FIELD-SYMBOLS:<lw_wd_otr> TYPE gsty_wd_out_tab.
SELECT * INTO CORRESPONDING FIELDS OF TABLE gt_wd_otr
FROM wdy_view
WHERE component_name IN pcname
AND version = 'A'
AND type = 'CL_WDY_MD_VIEW'.
LOOP AT gt_wd_otr ASSIGNING <lw_wd_otr>.
<lw_wd_otr>-btn_01 = 'Translate'.
ENDLOOP.
* Create ALV table
cl_salv_table=>factory( IMPORTING r_salv_table = gr_table CHANGING t_table = gt_wd_otr ).
* Set zebra layout
gr_display = gr_table->get_display_settings( ).
gr_display->set_striped_pattern( cl_salv_display_settings=>true ).
* Display all standard function
gr_functions = gr_table->get_functions( ).
gr_functions->set_all( abap_true ).
* Set the column BTN_01 as a link to tranlate
gr_columns = gr_table->get_columns( ).
gr_column ?= gr_columns->get_column( 'BTN_01' ).
l_color-col = '4'.
l_color-int = '1'.
l_color-inv = '0'.
gr_column->set_color( l_color ).
gr_column->set_cell_type( 5 ).
* Set event hadler
gr_events = gr_table->get_event( ).
CREATE OBJECT go_event_handler.
SET HANDLER go_event_handler->on_link_click FOR gr_events.
* Set event hadler
gr_table->display( ).
**********************************************************************
* CLASS lcl_handle_events IMPLEMENTATION
**********************************************************************
*
**********************************************************************
CLASS lcl_handle_events IMPLEMENTATION.
METHOD on_link_click.
DATA: l_object_name TYPE trobj_name.
DATA: lw_wd_compview TYPE gsty_wd_out_tab.
IF column = 'BTN_01'.
READ TABLE gt_wd_otr INDEX row INTO lw_wd_compview.
CONCATENATE lw_wd_compview-component_name '%'
lw_wd_compview-view_name INTO l_object_name.
CONDENSE l_object_name NO-GAPS.
CALL FUNCTION 'SOTR_API_WB_TRANSLATE'
EXPORTING
source_langu = pslangu
target_langu = pdlangu
pgmid = 'LIMU'
object = 'WDYV'
obj_name = l_object_name
EXCEPTIONS
no_entry_found = 1
internal_error = 2
no_authorization = 3
error_in_context = 4
user_cancelled = 5
error_in_transport_request = 6
OTHERS = 7
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDIF.
ENDMETHOD. "on_single_click
ENDCLASS. "lcl_handle_events IMPLEMENTATION
"on_double_click
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment