Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
Showing results for 
Search instead for 
Did you mean: 
In our company we have a big project migrating many coustomer clients from old systems to new systems (easy summarizied). For this they had to do several module-specific things, so that the migration with is automated in many points works succesfully.

For that our consultants must give our customers some training. This costs time for both sides and could be boring too 🙂

You don't know if they understand the topics the first time and if they could do that in practice.

So we decided to find a soloution for that. And we did. So i decided to share a bit of my experiences developing that tool, because its a big help for our consultants and of course for our customers.

The answer for why we integrate a video-based training tool in our SAP-System is the proximity to the system. So our customers could track which user watched which video or the customers could use some help tools within the training tool, where they could jump to specific points in the sstem where they have something to do.

I decided to use the Floorplan Manager as UI-Technology, because you could use HTML and JavaScript within it for embedding our videos, which are the heart of our tool. Now there are first wishes to use the tool on mobile phone so it would have made sense to use Fiori/UI5. But there were other circumstances that made this difficult in this case.


For the Video I used a HTML_Container

METHOD process_event .

DATA ls_row TYPE zcl_lst_schulung=>ty_list.

CHECK wd_this->lo_html IS BOUND.

IF io_event->mv_event_id EQ 'EV_SELECTED_ROW'.
iv_key = 'SELECTED_ROW'
ev_value = ls_row

IF ls_row-videolink IS INITIAL.

wd_this->lo_html->set_html( '<p align="center"><b>Es wurde kein Video ausgewählt</b></p>' ).


DATA(l_string) = '<video width="100%" height="100%" controls autoplay preload="none">'
&& '<source src=" ' && ls_row-videolink && '" type="video/mp4">'
&& 'Browser unterstützt keine Videos'
&& '</video>'.
wd_this->lo_html->set_html( l_string ).

elseif io_event->mv_event_id NE if_fpm_guibb_list=>gc_guibb_list_on_cell_action "Speichern und Auswahl in Liste ignorieren
AND io_event->mv_event_id NE if_fpm_constants=>gc_event-save
AND io_event->mv_event_id NE if_fpm_constants=>gc_event-edit.
wd_this->lo_html->set_html( '<p align="center"><b>Es wurde kein Video ausgewählt</b></p>' ).



In Application I used the normal list UIBB whcich fires an event for a single click. Then in the Component Controller of the WD-Component I catch the event.


We have several pages in our tool with different videos. So that we could distinguish the videos and we could chance the links flexible(videos are in our intranet), I used BRF+.

There I store the links, where the videos belong to and if they are showed in the tool or not.

E.G. distinguish which videos are shown on which page

E.G. Video Information (e.g. videolinks)

So because of less personal contact I added two options for asking for a call or for a webinar, where our customers get a mail.

METHOD if_fpm_guibb_form~process_event.
TYPES: BEGIN OF ty_mailadress,
mailadress TYPE char100,
END OF ty_mailadress.
DATA mt_mailadress TYPE TABLE OF ty_mailadress. "Mailadressen

iv_key = 'DIALOG_BOX_ID'
ev_value = m_dialog_box_id
ev_value = m_button

"Pflichtefelder prüfen
IF ( ms_rueckmeldung-kunde IS INITIAL OR ms_rueckmeldung-name IS INITIAL OR ms_rueckmeldung-telefon IS INITIAL )
AND NOT ( m_button EQ if_fpm_constants=>gc_dialog_action_id-close OR m_button EQ if_fpm_constants=>gc_dialog_action_id-cancel ).
et_messages = VALUE #( ( msgid = 'ZN_SCHULUNG' msgno = '002' severity = 'E' ) ).
ev_result = if_fpm_constants=>gc_event_result-failed.

IF m_button EQ if_fpm_constants=>gc_dialog_action_id-ok. "Anfrage senden

"Mailadressen holen
CONSTANTS:lv_function_id TYPE if_fdt_types=>id VALUE '005056AD48AD1ED7B28C9B8E681414E6'.
DATA:lv_timestamp TYPE timestamp,
lt_name_value TYPE abap_parmbind_tab,
ls_name_value TYPE abap_parmbind,
lr_data TYPE REF TO data,
lx_fdt TYPE REF TO cx_fdt.
FIELD-SYMBOLS <la_any> TYPE any.
GET TIME STAMP FIELD lv_timestamp.
cl_fdt_function_process=>get_data_object_reference( EXPORTING iv_function_id = lv_function_id
iv_data_object = '_V_RESULT'
iv_timestamp = lv_timestamp
iv_trace_generation = abap_false
IMPORTING er_data = lr_data ).
ASSIGN lr_data->* TO <la_any>.
cl_fdt_function_process=>process( EXPORTING iv_function_id = lv_function_id
iv_timestamp = lv_timestamp
IMPORTING ea_result = <la_any>
CHANGING ct_name_value = lt_name_value ).
CATCH cx_fdt INTO lx_fdt.

mt_mailadress = CORRESPONDING #( <la_any> ).
IF mt_mailadress IS NOT INITIAL.

DATA(lo_bcs_message) = NEW cl_bcs_message( ).
lo_bcs_message->set_sender( '' ).
lo_bcs_message->set_subject( |{ SWITCH #( m_dialog_box_id WHEN 'CALL' THEN 'Rückruf' WHEN 'WEBINAR' THEN 'Webinar' ) } angefordert für { ms_rueckmeldung-kunde }({ sy-sysid }/{ sy-mandt })| ).
LOOP AT mt_mailadress ASSIGNING FIELD-SYMBOL(<ls_mailadress>).
lo_bcs_message->add_recipient( CONV #( <ls_mailadress> ) ).
lo_bcs_message->set_send_immediately( abap_true ).
iv_contents_bin = get_mail_body( ) " Hauptdokument, 1. Bodypart (binär)
iv_doctype = 'htm' " Dokumententyp
lo_bcs_message->send( ).
et_messages = VALUE #( ( msgid = 'ZN_SCHULUNG' msgno = '003' severity = 'S' ) ).
CATCH cx_bcs_send INTO DATA(lo_cx).
et_messages = VALUE #( ( severity = 'E' plaintext = lo_cx->get_longtext( ) ) ).


et_messages = VALUE #( ( msgid = 'ZN_SCHULUNG' msgno = '004' severity = 'E' ) ).




So there is the functionallity for customers to check if they watched a video. This dates are stored in a normal table so that our customers can check which customer watched which video and if they are in correct timeplan.

Furthermore there are some more nice features like helpful reports combined with bounces and so on which help our customers to do their tasks much faster.

I just wanted to share some of my experience and maybe stimulate the imagination of what's possible in SAP. A video-based training tool integrated into the SAP-system was something completely new for our customers and consultants.

I would be very interested if someone has already implemented something in the direction and if so how and with what background. 🙂

Labels in this area