NotesWhat is notes.io?

Notes brand slogan

Notes - notes.io

*&---------------------------------------------------------------------*
*&DATE: 09/21/2020 *
*&OBJECT_DOCUMENT_ID:z <module><sequence number> *
*&TRANSPORT_ID: DR1K947911 *
*&CRQ/INC#: CRQ63916 *
*&REQUESTED_BY: Ashish Dharia *
*&PROGRAMMER: V-HORYAKIR *
*&DESCRIPTION: Tool for uploading Sales Orders - Implementations *
*&---------------------------------------------------------------------*
*&CHANGE LOG: *
*&---------------------------------------------------------------------*
*&MOD#|DATE|PROGRAMMER|TRANSPORT_ID|CRQ/INC#|DESCRIPTION *
*&Enter your update details here. *
*&---------------------------------------------------------------------*

CLASS lcl_application IMPLEMENTATION.

METHOD get_instance.
IF mo_application IS INITIAL.
CREATE OBJECT mo_application.
ENDIF.
ro_application = mo_application.
ENDMETHOD.


METHOD sel_screen_init.
DATA:
lt_exclude TYPE STANDARD TABLE OF rsexfcode.
CONSTANTS:
mc_exclude_job TYPE rsexfcode_ VALUE 'SJOB'.

" Exclude "Background Job" standard menu item.
APPEND mc_exclude_job TO lt_exclude.
CALL FUNCTION 'RS_SET_SELSCREEN_STATUS'
EXPORTING
p_status = sy-pfkey
TABLES
p_exclude = lt_exclude.

sscrfields-functxt_01 = VALUE smp_dyntxt(
icon_id = icon_report_template
icon_text = 'Template'(004)
quickinfo = 'Download template to your desktop'(017) ).

sscrfields-functxt_02 = VALUE smp_dyntxt(
icon_id = icon_table_settings
icon_text = 'Parameters'(002)
quickinfo = 'Maintain parameters'(003) ).
ENDMETHOD.


METHOD sel_screen_pai.
CONSTANTS:
lc_action_show TYPE c VALUE 'S',
lc_param_view TYPE tabname VALUE 'ZTSD_SO_PARAM',
lc_template TYPE sy-ucomm VALUE 'FC01',
lc_parameters TYPE sy-ucomm VALUE 'FC02'.
CASE sscrfields-ucomm.
WHEN lc_template.
" Handle Template push button.
MESSAGE i041(zsd).
" Save the file as Spreadsheet (*.xls or *.xlsx)
zcl_ca_classification=>show_template( iv_struct = mc_struct
iv_filename = mc_file_name
iv_template_type = cl_alv_bds=>mc_xlsx_extension
iv_adjust_field_catalog = abap_true ).
WHEN lc_parameters.
CALL FUNCTION 'VIEW_MAINTENANCE_CALL'
EXPORTING
action = lc_action_show
view_name = lc_param_view
EXCEPTIONS
OTHERS = 15.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDCASE.
ENDMETHOD.


METHOD sel_screen_val_filenm.
CONSTANTS:
lc_max_filename_length TYPE i VALUE 128.
DATA:
lt_files TYPE filetable,
lv_rc TYPE i.

" Get spreadsheet file name with FI document data.
cl_gui_frontend_services=>file_open_dialog(
EXPORTING
default_extension = cl_alv_bds=>mc_xlsx_extension
multiselection = abap_false
CHANGING
file_table = lt_files
rc = lv_rc
EXCEPTIONS
file_open_dialog_failed = 1
cntl_error = 2
error_no_gui = 3
not_supported_by_gui = 4
OTHERS = 5 ).
IF sy-subrc = 0 AND
lv_rc > -1 AND
lt_files[] IS NOT INITIAL.

DATA(lv_filename) = lt_files[ 1 ].
IF strlen( lv_filename ) <= lc_max_filename_length.
p_filenm = lv_filename.
ELSE.
MESSAGE s078(nc) WITH lv_filename lc_max_filename_length DISPLAY LIKE zcl_err_constants=>mc_error_type-error.
" File name &1 exceeds maximum permitted length of &2 characters
ENDIF.

ENDIF.
ENDMETHOD.


METHOD get_file_data.
DATA:
lt_raw_data TYPE truxs_t_text_data.

CHECK p_filenm IS NOT INITIAL.

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_line_header = abap_true
i_tab_raw_data = lt_raw_data
i_filename = p_filenm
TABLES
i_tab_converted_data = mt_data
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc = 0.
DELETE mt_data WHERE table_line IS INITIAL.
IF mt_data[] IS NOT INITIAL.
adjust_data( ).
ELSE.
MESSAGE s042(zsd) DISPLAY LIKE zcl_err_constants=>mc_error_type-error.
" Spreadsheet is either empty or has incorrect format
RETURN.
ENDIF.
ELSE.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
RETURN.
ENDIF.
ENDMETHOD.


METHOD adjust_data.
CHECK mt_data[] IS NOT INITIAL.

zssd_sales_order = mt_data[ 1 ].
CALL FUNCTION 'CONVERSION_EXIT_AUART_INPUT'
EXPORTING
input = zssd_sales_order-doc_type
IMPORTING
output = zssd_sales_order-doc_type.

LOOP AT mt_data ASSIGNING FIELD-SYMBOL(<ls_data>).
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = <ls_data>-material
IMPORTING
output = <ls_data>-material
EXCEPTIONS
length_error = 1
OTHERS = 2.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.

IF <ls_data>-target_qu IS NOT INITIAL.
CALL FUNCTION 'CONVERSION_EXIT_CUNIT_INPUT'
EXPORTING
input = <ls_data>-target_qu
IMPORTING
output = <ls_data>-target_qu
EXCEPTIONS
unit_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
CONTINUE.
ENDIF.
ENDIF.
ENDLOOP.

renum_items( ).
ENDMETHOD.


METHOD renum_items.
CONSTANTS:
lc_item_step TYPE posnr VALUE 10.

CHECK line_exists( mt_data[ itm_number = 0 ] ).

LOOP AT mt_data ASSIGNING FIELD-SYMBOL(<ls_data>).
<ls_data>-itm_number = sy-tabix * lc_item_step.
ENDLOOP.
ENDMETHOD.


METHOD upload_sales_order.
CLEAR mt_data[].

get_file_data( ).
CHECK mt_data[] IS NOT INITIAL.

check_data( ).

CALL SCREEN '0100'.
ENDMETHOD.


METHOD check_data.
" RETURNING VALUE(rv_status) TYPE msgty

DATA:
lv_has_errors TYPE boolean,
lv_has_warnings TYPE boolean.

CLEAR: mv_order_project, mv_order_project_internal, mt_output[], rv_status.

CHECK mt_data[] IS NOT INITIAL.

check_header( ).

LOOP AT mt_data ASSIGNING FIELD-SYMBOL(<ls_data>).
check_item( <ls_data> ).
ENDLOOP.

LOOP AT mt_output ASSIGNING FIELD-SYMBOL(<ls_output>)
WHERE message IS NOT INITIAL.

IF <ls_output>-status = mc_status-header-error OR <ls_output>-status = mc_status-item-error.
lv_has_errors = abap_true.
ELSEIF <ls_output>-status = mc_status-header-warning OR <ls_output>-status = mc_status-item-warning.
lv_has_warnings = abap_true.
ENDIF.
ENDLOOP.

IF lv_has_errors = abap_true.
rv_status = zcl_err_constants=>mc_error_type-error.
MESSAGE s133(wxpb) DISPLAY LIKE zcl_err_constants=>mc_error_type-error.
" Error messages occured; recheck the data
ELSEIF lv_has_warnings = abap_true.
rv_status = zcl_err_constants=>mc_error_type-warning.
MESSAGE s171(cnv20551) DISPLAY LIKE zcl_err_constants=>mc_error_type-warning.
" There are warnings (see log)
ELSE.
rv_status = zcl_err_constants=>mc_error_type-success.
MESSAGE s107(/nam/nae_messages).
" The check is successful
ENDIF.
ENDMETHOD.


METHOD check_header.
DATA lv_count_of_headers TYPE i.
LOOP AT mt_data TRANSPORTING NO FIELDS
WHERE header IS NOT INITIAL.

ADD 1 TO lv_count_of_headers.
ENDLOOP.
IF lv_count_of_headers > 1.
APPEND VALUE #( status = mc_status-header-error message = 'Creation of more than one order in file in not permitted'(019) ) TO mt_output.
ENDIF.

IF zssd_sales_order-doc_type IS INITIAL OR
zssd_sales_order-sales_org IS INITIAL OR
zssd_sales_order-distr_chan IS INITIAL OR
zssd_sales_order-division IS INITIAL OR
zssd_sales_order-standard_order IS INITIAL OR
zssd_sales_order-sold_to_party IS INITIAL OR
zssd_sales_order-ship_to_party IS INITIAL OR
zssd_sales_order-wbs_elem IS INITIAL OR
zssd_sales_order-es_sub_perf_date IS INITIAL.

APPEND VALUE #( status = mc_status-header-error message = 'Please, fill in all required fields in the header'(009) ) TO mt_output.
ENDIF.

IF zssd_sales_order-doc_type IS NOT INITIAL.
SELECT doc_type, distr_chan
INTO TABLE @DATA(lt_params)
FROM ztsd_so_param
WHERE doc_type = @zssd_sales_order-doc_type.

IF sy-subrc <> 0.
APPEND VALUE #( status = mc_status-header-error message = 'Order type entered is not permited'(010) ) TO mt_output.
ELSEIF zssd_sales_order-distr_chan IS NOT INITIAL AND
NOT line_exists( lt_params[ distr_chan = zssd_sales_order-distr_chan ] ).

APPEND VALUE #( status = mc_status-header-error message = 'Distribution channel entered is not permitted'(011) ) TO mt_output.
ENDIF.
ENDIF.

IF zssd_sales_order-standard_order IS NOT INITIAL.
mv_order_project = zssd_sales_order-standard_order(6).

SELECT SINGLE @abap_true
INTO @DATA(lv_order_exists)
FROM vbak
WHERE vbeln = @zssd_sales_order-standard_order.
IF sy-subrc = 0.
APPEND VALUE #( status = mc_status-header-error message = 'A document with number entered already exists'(015) ) TO mt_output.
ENDIF.

SELECT pspnr
INTO mv_order_project_internal
FROM proj
UP TO 1 ROWS
WHERE pspid = mv_order_project.
EXIT.
ENDSELECT.
IF sy-subrc <> 0.
APPEND VALUE #( status = mc_status-header-error message = 'Project does not exist for Sales order number entered'(012) ) TO mt_output.
ENDIF.

IF zssd_sales_order-wbs_elem IS NOT INITIAL.
SELECT p~pspid
INTO @DATA(lv_wbs_element_project)
FROM prps AS w
INNER JOIN proj AS p
ON p~pspnr = w~psphi
UP TO 1 ROWS
WHERE w~posid = @zssd_sales_order-wbs_elem.
EXIT.
ENDSELECT.

IF sy-subrc <> 0.
APPEND VALUE #( status = mc_status-header-error message = 'WBS number does not exist'(013) ) TO mt_output.
ELSEIF mv_order_project <> lv_wbs_element_project.
APPEND VALUE #( status = mc_status-header-error message = 'Project of WBS element is not equal to the project of the Sales order'(014) ) TO mt_output.
ENDIF.
ENDIF.
ENDIF.

IF zssd_sales_order-ship_to_party <> zssd_sales_order-sold_to_party.
MESSAGE w040(zsd) INTO DATA(lv_message).
" Ship to and Sold to party values are different
APPEND VALUE #( status = mc_status-header-warning message = lv_message ) TO mt_output.
ENDIF.
ENDMETHOD.


METHOD check_item.
" IMPORTING is_data TYPE zssd_sales_order

APPEND INITIAL LINE TO mt_output ASSIGNING FIELD-SYMBOL(<ls_output>).
MOVE-CORRESPONDING is_data TO <ls_output>.

IF is_data-cust_mat35 IS NOT INITIAL AND mv_order_project_internal IS NOT INITIAL.
SELECT @abap_true
INTO @DATA(lv_pay_item_exists)
FROM afvu AS u
INNER JOIN afko AS o
ON o~aufpl = u~aufpl
UP TO 1 ROWS
WHERE o~pronr = @mv_order_project_internal
AND u~usr02 = @is_data-cust_mat35.
EXIT.
ENDSELECT.
IF sy-subrc <> 0.
<ls_output>-status = mc_status-item-warning.
<ls_output>-message = 'Pay item number does not exist in Project'(016).
ENDIF.
ENDIF.

IF is_data-target_qty IS INITIAL.
<ls_output>-status = mc_status-item-error.
<ls_output>-message = 'Please specify the quantity'(006).
RETURN.
ENDIF.

IF is_data-material IS INITIAL OR
is_data-plant IS INITIAL.

<ls_output>-status = mc_status-item-error.
<ls_output>-message = 'Please, fill in all required fields in the item'(008).

IF is_data-material IS INITIAL.
<ls_output>-material = icon_wd_check_box.
ENDIF.

IF is_data-plant IS INITIAL.
<ls_output>-plant = icon_wd_check_box.
ENDIF.

RETURN.
ENDIF.
ENDMETHOD.


METHOD create_sales_order.
CONSTANTS:
lc_answer_yes TYPE c VALUE '1',
BEGIN OF lc_text_id,
customer_invoice_number TYPE tdid VALUE 'Z003',
client_represent_name TYPE tdid VALUE 'Z004',
location TYPE tdid VALUE 'Z005',
customer_wbs_elem TYPE tdid VALUE 'Z001',
END OF lc_text_id,
BEGIN OF lc_condition_type,
aecon_price TYPE kscha VALUE 'ZPR0',
END OF lc_condition_type.

DATA:
lv_answer TYPE c,
ls_header TYPE bapisdhd1,
ls_headerx TYPE bapisdhd1x,
lt_items TYPE STANDARD TABLE OF bapisditm,
lt_itemsx TYPE STANDARD TABLE OF bapisditmx,
lt_schedules_in TYPE STANDARD TABLE OF bapischdl,
lt_schedules_inx TYPE STANDARD TABLE OF bapischdlx,
lt_partners TYPE STANDARD TABLE OF bapiparnr,
lt_return TYPE STANDARD TABLE OF bapiret2,
lt_order_conditions_in TYPE STANDARD TABLE OF bapicond,
lt_order_conditions_inx TYPE STANDARD TABLE OF bapicondx,
lt_order_text TYPE STANDARD TABLE OF bapisdtext,
lt_extensionin TYPE STANDARD TABLE OF bapiparex,
lv_created_order_number TYPE vbeln.

DATA(lv_status) = check_data( ).
mo_alv->mo_alv_grid->refresh( ).
CHECK lv_status = zcl_err_constants=>mc_error_type-success OR lv_status = zcl_err_constants=>mc_error_type-warning.

IF lv_status = zcl_err_constants=>mc_error_type-warning.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
text_question = 'There are warnings. Do you want to continue?'(020)
display_cancel_button = abap_false
IMPORTING
answer = lv_answer
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
CHECK sy-subrc = 0 AND lv_answer = lc_answer_yes.
ENDIF.

" Header
ls_header-doc_type = zssd_sales_order-doc_type.
ls_header-sales_org = zssd_sales_order-sales_org.
ls_header-distr_chan = zssd_sales_order-distr_chan.
ls_header-division = zssd_sales_order-division.
ls_header-purch_no_c = zssd_sales_order-purch_no_c.
ls_header-purch_date = zssd_sales_order-purch_date.
ls_header-wbs_elem = zssd_sales_order-wbs_elem.
set_struct_filling( EXPORTING iv_struct = ls_header
CHANGING cv_filling = ls_headerx ).

" Partners
APPEND LINES OF VALUE bapiparnr_tab(
( partn_role = zcl_ca_constants=>mc_partners-sold_to partn_numb = zssd_sales_order-sold_to_party )
( partn_role = zcl_ca_constants=>mc_partners-ship_to partn_numb = zssd_sales_order-ship_to_party ) )
TO lt_partners.

" Header Texts
APPEND LINES OF VALUE bapisdtext_t(
( doc_number = zssd_sales_order-standard_order
text_id = lc_text_id-customer_invoice_number
langu = sy-langu
text_line = zssd_sales_order-customer_invoice_number )
( doc_number = zssd_sales_order-standard_order
text_id = lc_text_id-client_represent_name
langu = sy-langu
text_line = zssd_sales_order-client_represent_name )
( doc_number = zssd_sales_order-standard_order
text_id = lc_text_id-location
langu = sy-langu
text_line = zssd_sales_order-location ) )
TO lt_order_text.

" Items
LOOP AT mt_data ASSIGNING FIELD-SYMBOL(<ls_data>).
APPEND INITIAL LINE TO lt_items ASSIGNING FIELD-SYMBOL(<ls_item>).
<ls_item>-itm_number = <ls_data>-itm_number.
<ls_item>-material = <ls_data>-material.
<ls_item>-target_qty = <ls_data>-target_qty.
<ls_item>-sales_unit = <ls_data>-target_qu.
<ls_item>-short_text = <ls_data>-short_text.
<ls_item>-cust_mat35 = <ls_data>-cust_mat35.
<ls_item>-plant = <ls_data>-plant.
<ls_item>-wbs_elem = zssd_sales_order-wbs_elem.
APPEND INITIAL LINE TO lt_itemsx ASSIGNING FIELD-SYMBOL(<ls_itemx>).
set_struct_filling( EXPORTING iv_struct = <ls_item>
CHANGING cv_filling = <ls_itemx> ).

APPEND VALUE bapischdl(
itm_number = <ls_data>-itm_number
sched_line = 1
req_qty = <ls_data>-target_qty )
TO lt_schedules_in ASSIGNING FIELD-SYMBOL(<ls_schedule>).
APPEND INITIAL LINE TO lt_schedules_inx ASSIGNING FIELD-SYMBOL(<ls_schedulex>).
set_struct_filling( EXPORTING iv_struct = <ls_schedule>
CHANGING cv_filling = <ls_schedulex> ).

APPEND VALUE bapicond(
itm_number = <ls_data>-itm_number
cond_type = lc_condition_type-aecon_price
cond_value = <ls_data>-aecon_price
currency = zcl_ca_constants=>mc_waers-cad )
TO lt_order_conditions_in ASSIGNING FIELD-SYMBOL(<ls_condition>).
APPEND INITIAL LINE TO lt_order_conditions_inx ASSIGNING FIELD-SYMBOL(<ls_conditionx>).
set_struct_filling( EXPORTING iv_struct = <ls_condition>
CHANGING cv_filling = <ls_conditionx> ).

APPEND VALUE bapisdtext(
doc_number = zssd_sales_order-standard_order
itm_number = <ls_data>-itm_number
text_id = lc_text_id-customer_wbs_elem
langu = sy-langu
text_line = <ls_data>-customer_wbs_elem )
TO lt_order_text.
ENDLOOP.

" Extension
struct_to_extension(
EXPORTING
is_ci_data = VALUE bape_vbak( vbeln = zssd_sales_order-standard_order
/aecongl/zzsubcomdte = zssd_sales_order-es_sub_perf_date )
iv_structure = 'BAPE_VBAK'
CHANGING
ct_extension = lt_extensionin ).

struct_to_extension(
EXPORTING
is_ci_data = VALUE bape_vbakx( vbeln = zssd_sales_order-standard_order
/aecongl/zzsubcomdte = abap_true )
iv_structure = 'BAPE_VBAKX'
CHANGING
ct_extension = lt_extensionin ).


" Call BAPI
CALL FUNCTION 'SD_SALESDOCUMENT_CREATE'
EXPORTING
salesdocument = zssd_sales_order-standard_order
sales_header_in = ls_header
sales_header_inx = ls_headerx
testrun = p_simul
IMPORTING
salesdocument_ex = lv_created_order_number
TABLES
return = lt_return
sales_items_in = lt_items
sales_items_inx = lt_itemsx
sales_partners = lt_partners
sales_schedules_in = lt_schedules_in
sales_schedules_inx = lt_schedules_inx
sales_conditions_in = lt_order_conditions_in
sales_conditions_inx = lt_order_conditions_inx
sales_text = lt_order_text
extensionin = lt_extensionin.

IF NOT line_exists( lt_return[ type = zcl_err_constants=>mc_error_type-error ] ).
IF p_simul = abap_false.
COMMIT WORK AND WAIT.

SET PARAMETER ID 'AUN' FIELD zssd_sales_order-standard_order.
CALL TRANSACTION 'VA03' AND SKIP FIRST SCREEN.
ENDIF.
MESSAGE s741(mw) WITH zssd_sales_order-standard_order.
" The sales order &1 was created
ELSE.
ROLLBACK WORK.
show_logs( lt_return ).
ENDIF.
ENDMETHOD.


METHOD set_struct_filling.
" IMPORTING iv_struct TYPE data
" CHANGING cv_filling TYPE data

DATA lo_struct_description TYPE REF TO cl_abap_structdescr.

lo_struct_description ?= cl_abap_typedescr=>describe_by_data( cv_filling ).
LOOP AT lo_struct_description->components INTO DATA(ls_component).
ASSIGN COMPONENT ls_component-name OF STRUCTURE iv_struct TO FIELD-SYMBOL(<lv_field>).
CHECK sy-subrc = 0.
ASSIGN COMPONENT ls_component-name OF STRUCTURE cv_filling TO FIELD-SYMBOL(<lv_filling>).
CHECK sy-subrc = 0.

IF ls_component-type_kind = cl_abap_structdescr=>typekind_char
AND ls_component-length = cl_abap_char_utilities=>charsize.
<lv_filling> = boolc( <lv_field> IS NOT INITIAL ).
ELSE.
<lv_filling> = <lv_field>.
ENDIF.
ENDLOOP.
ENDMETHOD.


METHOD struct_to_extension.
" IMPORTING is_ci_data TYPE any
" iv_structure TYPE te_struc
" CHANGING ct_extension TYPE esales_bapiparex_tab

DATA:
ls_extension LIKE LINE OF ct_extension,
lv_container TYPE c LENGTH 960,
lv_container_string TYPE string.

CALL METHOD cl_abap_container_utilities=>fill_container_c
EXPORTING
im_value = is_ci_data
IMPORTING
ex_container = lv_container_string
EXCEPTIONS
OTHERS = 0.

WHILE lv_container_string IS NOT INITIAL.
CALL METHOD cl_reca_string_services=>get_chars_from_left
EXPORTING
id_number_chars = 960
IMPORTING
ed_text = lv_container
CHANGING
cd_text = lv_container_string.

ls_extension-structure = iv_structure.
ls_extension+30 = lv_container.

APPEND ls_extension TO ct_extension.
ENDWHILE.
ENDMETHOD.


METHOD show_logs.
" IMPORTING it_messages TYPE bapiret2_tab

DATA lo_logger TYPE REF TO zcl_application_log.

CHECK it_messages[] IS NOT INITIAL.

TRY.
CLEAR zcl_application_log=>mo_self.

lo_logger = zcl_application_log=>create_instance(
iv_balobj = zcl_log_constants=>mc_log-dev_debug-object
iv_balsubobj = zcl_log_constants=>mc_log-dev_debug-subobject
iv_extnumber = CONV #( sy-repid ) ).
lo_logger->init( ).

lo_logger->add_messages( it_bapirettab = it_messages ).

lo_logger->display( ).

CLEAR zcl_application_log=>mo_self.
CATCH zcx_ca_log.
RETURN.
ENDTRY.
ENDMETHOD.


METHOD prepare_for_output.
DATA:
lv_header TYPE lvc_title.

IF p_simul = abap_true.
lv_header = 'Simulation mode'(000).
ELSE.
lv_header = 'Productive mode'(001).
ENDIF.

SET PF-STATUS '0100'.
SET TITLEBAR '0100' WITH lv_header.

IF mo_alv IS INITIAL.
CREATE OBJECT mo_alv.
mo_alv->prepare_display_data( EXPORTING io_container = NEW cl_gui_custom_container( 'CONTAINER' )
CHANGING ct_data_table = mt_output ).
ELSE.
mo_alv->mo_alv_grid->refresh( ).
ENDIF.
ENDMETHOD.


METHOD process_command.
CASE sy-ucomm.
WHEN 'BACK' OR 'EXIT'.
LEAVE TO SCREEN 0.
WHEN 'CANC'.
LEAVE PROGRAM.
WHEN 'CHECK'.
check_data( ).
mo_alv->mo_alv_grid->refresh( ).
WHEN 'PROCESS'.
create_sales_order( ).
WHEN OTHERS.
ENDCASE.
ENDMETHOD.

ENDCLASS.


*&---------------------------------------------------------------------*
*& Module STATUS_0100 OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_0100 OUTPUT.
lcl_application=>get_instance( )->prepare_for_output( ).
ENDMODULE.


*&---------------------------------------------------------------------*
*& Module USER_COMMAND_0100 INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE user_command_0100 INPUT.
lcl_application=>get_instance( )->process_command( ).
ENDMODULE.
     
 
what is notes.io
 

Notes.io is a web-based application for taking notes. You can take your notes and share with others people. If you like taking long notes, notes.io is designed for you. To date, over 8,000,000,000 notes created and continuing...

With notes.io;

  • * You can take a note from anywhere and any device with internet connection.
  • * You can share the notes in social platforms (YouTube, Facebook, Twitter, instagram etc.).
  • * You can quickly share your contents without website, blog and e-mail.
  • * You don't need to create any Account to share a note. As you wish you can use quick, easy and best shortened notes with sms, websites, e-mail, or messaging services (WhatsApp, iMessage, Telegram, Signal).
  • * Notes.io has fabulous infrastructure design for a short link and allows you to share the note as an easy and understandable link.

Fast: Notes.io is built for speed and performance. You can take a notes quickly and browse your archive.

Easy: Notes.io doesn’t require installation. Just write and share note!

Short: Notes.io’s url just 8 character. You’ll get shorten link of your note when you want to share. (Ex: notes.io/q )

Free: Notes.io works for 12 years and has been free since the day it was started.


You immediately create your first note and start sharing with the ones you wish. If you want to contact us, you can use the following communication channels;


Email: [email protected]

Twitter: http://twitter.com/notesio

Instagram: http://instagram.com/notes.io

Facebook: http://facebook.com/notesio



Regards;
Notes.io Team

     
 
Shortened Note Link
 
 
Looding Image
 
     
 
Long File
 
 

For written notes was greater than 18KB Unable to shorten.

To be smaller than 18KB, please organize your notes, or sign in.