You are on page 1of 15

*&---------------------------------------------------------------------*

*& Report ZC2C_SALES_ORDER_CREATE_ALTA


*&
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Author
: Anoop Hasija
*
*& Module
: C2C
*
*& Programmer
: Rajat Kapoor (KAPRX003)
*
*& Rev Trac #
:
*
*& T_Code
: ZC2C_QUOTATION
*
*& System
: Cornerstone - SP7
*
*& Description :
"-------------------------------------------------------------------------"
*&---------------------------------------------------------------------*
REPORT zc2c_sales_order_create_alta NO STANDARD PAGE HEADING
MESSAGE-ID zc2c01.
INCLUDE zc2c_sales_order_create_top.
INCLUDE zc2c_sales_order_create_f01.
INITIALIZATION.
CREATE OBJECT cl_alta.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file_x.
CALL METHOD cl_alta->f4_help_pc( CHANGING path = p_file_x ).
AT SELECTION-SCREEN OUTPUT.
CALL METHOD cl_alta->modify_screen.
AT SELECTION-SCREEN.
IF rb1 = 'X'.
*&--Validate Source file
CALL METHOD cl_alta->chk_app_file
CHANGING
path = p_file.
ENDIF.
IF sy-ucomm = 'ONLI'.
IF rb1 = 'X'.
IF p_file IS INITIAL.
MESSAGE 'Enter the Source file Path' TYPE 'E'.
ENDIF.
*&--Authority check - source
CALL METHOD cl_alta->auth_chk_app( p_file ).
ENDIF.
IF s_email IS INITIAL.
MESSAGE 'Enter E-Mail address' TYPE 'E'.
ENDIF.
ENDIF.
START-OF-SELECTION.
IF rb1 = abap_true.

CALL METHOD cl_alta->upd_file_app( p_file ).


CALL METHOD cl_alta->archieve_file_app( p_file ).
ENDIF.
IF rb2 = abap_true.
CALL METHOD cl_alta->upd_file_pc( p_file_x ).
ENDIF.
IF NOT gt_data[] IS INITIAL.
CALL METHOD cl_alta->create_so(
CHANGING
t_data = gt_data[]
t_output = gt_output[] ).
ENDIF.
END-OF-SELECTION.
CHECK NOT gt_output[] IS INITIAL.
CALL METHOD cl_alta->send_email(
CHANGING
t_output = gt_output ).
CALL METHOD cl_alta->alv_output( CHANGING t_output = gt_output ).
********************************************************************************
********
*&---------------------------------------------------------------------*
*& Include
ZC2C_SALES_ORDER_CREATE_TOP
*&---------------------------------------------------------------------*
DATA: lv_email TYPE ad_smtpadr.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-032.
PARAMETERS:
rb1
RADIOBUTTON GROUP rbg DEFAULT 'X' USER-COMMAND uc.
PARAMETERS:
p_file TYPE char250 DEFAULT '/interfaces/Alta/In/DPS*' LOWER
CASE.
"source file path
SKIP 1.
PARAMETERS:
rb2
RADIOBUTTON GROUP rbg.
PARAMETERS:
p_file_x TYPE ibipparms-path LOWER CASE.
SKIP 1.
SELECT-OPTIONS: s_email FOR lv_email NO INTERVALS." OBLIGATORY.
SELECTION-SCREEN END OF BLOCK b1.
TYPES: BEGIN OF ty_tab,
line(1000) TYPE c,
END OF ty_tab.
TYPES: BEGIN OF ty_data,
bb_order
TYPE
location_id TYPE
cust_number TYPE
item_num
TYPE
qty
TYPE
uom
TYPE
rdd
TYPE
END OF ty_data.

char4,
char8,
char10,
char18,
char15,
char5,
char8,

TYPES: BEGIN OF ty_output,


bb_order
TYPE
location_id TYPE
cust_number TYPE
rdd
TYPE
material
TYPE
sales_doc TYPE
msg(220)
TYPE
END OF ty_output.
DATA: gt_tab
gt_data
gt_output
gw_output
gw_tab
gw_data

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

char4,
char8,
char10,
char8,
mara-matnr,
bapivbeln-vbeln,
c,

CONSTANTS: c_comma(1)

STANDARD TABLE OF ty_tab,


STANDARD TABLE OF ty_data,
STANDARD TABLE OF ty_output,
ty_output,
ty_tab,
ty_data.

TYPE c VALUE ','.

CLASS: lcl_sales_order_alta DEFINITION DEFERRED.


DATA: cl_alta

TYPE REF TO lcl_sales_order_alta.

*----------------------------------------------------------------------*
*
CLASS lcl_sales_order_alta DEFINITION
*----------------------------------------------------------------------*
*
*----------------------------------------------------------------------*
CLASS lcl_sales_order_alta DEFINITION.
PUBLIC SECTION.
METHODS: f4_help_pc CHANGING path
TYPE ibipparms-path,
modify_screen,
*
chk_app_file IMPORTING path
TYPE char250, " Commented -- KUMJ
X005 -- 10 May 2016
chk_app_file CHANGING path
TYPE char250, " Added -- KUMJX005
-- 10 May 2016
auth_chk_app IMPORTING path
TYPE char250,
upd_file_pc IMPORTING path
TYPE ibipparms-path,
create_so
CHANGING t_data LIKE gt_data
t_output LIKE gt_output,
send_email CHANGING t_output LIKE gt_output,
alv_output CHANGING t_output LIKE gt_output,
upd_file_app IMPORTING path
TYPE char250,
archieve_file_app IMPORTING path
TYPE char250.
ENDCLASS.
"lcl_sales_order_alta DEFINITION
************************************************************************
*&---------------------------------------------------------------------*
*& Include
ZC2C_SALES_ORDER_CREATE_F01
*&---------------------------------------------------------------------*
CLASS lcl_sales_order_alta IMPLEMENTATION.
METHOD f4_help_pc.

CALL FUNCTION 'F4_FILENAME'


EXPORTING
program_name = sy-repid
IMPORTING
file_name
= path.
ENDMETHOD .

"f4_help_pc

METHOD modify_screen.
LOOP AT SCREEN.
IF rb1 = 'X'.
CLEAR p_file_x.
IF screen-name CS 'P_FILE'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
IF screen-name CS 'P_FILE_X'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDIF.
IF rb2 = 'X'.
IF screen-name CS 'P_FILE'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
IF screen-name CS 'P_FILE_X'.
screen-input = 1.
MODIFY SCREEN.
ENDIF.
ENDIF.
ENDLOOP.
IF rb1 <> 'X'.
CLEAR: p_file_x.
ENDIF.
ENDMETHOD.

"modify_screen

METHOD chk_app_file.
** Begin of additions -- KUMJX005 -- 10 May2016
DATA: lv_path TYPE string,
lv_result TYPE abap_bool.
DATA : dir_list TYPE TABLE OF epsfili,
wa_list LIKE LINE OF dir_list.
CALL FUNCTION 'EPS_GET_DIRECTORY_LISTING'
EXPORTING
dir_name
= '/interfaces/Alta/In/'
file_mask
= 'DPS*'
TABLES
dir_list
= dir_list
EXCEPTIONS
invalid_eps_subdir
= 1
sapgparam_failed
= 2
build_directory_failed = 3
no_authorization
= 4

read_directory_failed
too_many_read_errors
empty_directory_list
OTHERS

=
=
=
=

5
6
7
8.

.
IF sy-subrc EQ 0.
SORT dir_list BY name DESCENDING.
READ TABLE dir_list INTO wa_list INDEX 1.
CONCATENATE '/interfaces/Alta/In/' wa_list-name INTO path.
MOVE path TO lv_path.
CONDENSE : lv_path , path.
ENDIF.
CALL METHOD cl_gui_frontend_services=>file_exist
EXPORTING
file
= lv_path
RECEIVING
result
= lv_result
EXCEPTIONS
cntl_error
= 1
error_no_gui
= 2
wrong_parameter
= 3
not_supported_by_gui = 4
OTHERS
= 5.
IF lv_result NE space.
MESSAGE 'File not found' TYPE 'E'.
ENDIF.
** End of additions -- KUMJX005 -- 10 May2016
** Begin of comment -- KUMJX005 -- 10 May2016
**
DATA: lv_path TYPE string,
**
lv_result TYPE abap_bool.
**
**
lv_path = path.
**
**
CALL METHOD cl_gui_frontend_services=>file_exist
**
EXPORTING
**
file
= lv_path
**
RECEIVING
**
result
= lv_result
**
EXCEPTIONS
**
cntl_error
= 1
**
error_no_gui
= 2
**
wrong_parameter
= 3
**
not_supported_by_gui = 4
**
OTHERS
= 5.
**
**
IF lv_result NE space.
**
MESSAGE 'File not found' TYPE 'E'.
**
ENDIF.
** End of comment -- KUMJX005 -- 10 May2016
ENDMETHOD.
"chk_app_file
METHOD auth_chk_app.
DATA: lv_msg TYPE string.
OPEN DATASET path FOR INPUT IN TEXT MODE ENCODING DEFAULT
MESSAGE lv_msg.

IF sy-subrc <> 0.
MESSAGE e002 WITH path lv_msg.
ENDIF.
CLOSE DATASET path.
ENDMETHOD.

"auth_chk_app

METHOD upd_file_pc.
DATA lv_filename TYPE string.
lv_filename = path.
CALL METHOD cl_gui_frontend_services=>gui_upload
EXPORTING
filename
= lv_filename
filetype
= 'ASC'
CHANGING
data_tab
= gt_tab
EXCEPTIONS
file_open_error
= 1
file_read_error
= 2
no_batch
= 3
gui_refuse_filetransfer = 4
invalid_type
= 5
no_authority
= 6
unknown_error
= 7
bad_data_format
= 8
header_not_allowed
= 9
separator_not_allowed = 10
header_too_long
= 11
unknown_dp_error
= 12
access_denied
= 13
dp_out_of_memory
= 14
disk_full
= 15
dp_timeout
= 16
not_supported_by_gui
= 17
error_no_gui
= 18
OTHERS
= 19.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
IF NOT gt_tab[] IS INITIAL.
DELETE gt_tab[] INDEX 1.
LOOP AT gt_tab INTO gw_tab.
CLEAR gw_data.
SPLIT gw_tab AT c_comma INTO gw_data-bb_order
gw_data-location_id
gw_data-cust_number
gw_data-item_num
gw_data-qty
gw_data-uom
gw_data-rdd.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING

input = gw_data-cust_number
IMPORTING
output = gw_data-cust_number.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input
= gw_data-item_num
IMPORTING
output
= gw_data-item_num
EXCEPTIONS
length_error = 1
OTHERS
= 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
APPEND gw_data TO gt_data.
ENDLOOP.
ENDIF.
ENDMETHOD.

"upd_file_pc

METHOD create_so.
DATA: lw_hdr
lw_hdrx
lt_return
lw_return
lt_item
lw_item
lt_itemx
lw_itemx
lt_partner
lw_partner
lt_schdl
lw_schdl
lt_schdlx
lw_schdlx

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

DATA: sales_doc
lv_index
lw_data
lv_itemno
lv_schline

TYPE
TYPE
TYPE
TYPE
TYPE

STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF
STANDARD TABLE OF

bapisdhd1,
bapisdhd1x,
bapiret2,
bapiret2,
bapisditm,
bapisditm,
bapisditmx,
bapisditmx,
bapiparnr,
bapiparnr,
bapischdl,
bapischdl,
bapischdlx,
bapischdlx.
bapivbeln-vbeln,
sy-tabix,
ty_data,
posnr_va,
etenr.

TYPES: BEGIN OF ty_knvp,


kunnr TYPE knvp-kunnr,
vkorg TYPE knvp-vkorg,
vtweg TYPE knvp-vtweg,
spart TYPE knvp-spart,
parvw TYPE knvp-parvw,
kunn2 TYPE knvp-kunn2,
END OF ty_knvp.
DATA: lt_knvp
lw_knvp

TYPE STANDARD TABLE OF


TYPE

ty_knvp,
ty_knvp.

CLEAR: lw_hdr, lw_hdrx, lw_return, lw_item,


lw_itemx, lw_partner, lw_schdl, lw_schdlx,
lv_schline, lv_itemno, lw_knvp.

REFRESH: lt_return[], lt_item[], lt_itemx[],


lt_partner[], lt_schdl[], lt_schdlx[], lt_knvp[].
SELECT kunnr vkorg vtweg spart parvw kunn2
FROM knvp INTO TABLE lt_knvp
FOR ALL ENTRIES IN t_data
WHERE kunnr = t_data-cust_number
AND vkorg = '1000'
AND vtweg = '01'
AND spart = '01'
AND parvw = 'WE'.
IF sy-subrc = 0.
SORT lt_knvp BY kunnr.
ENDIF.
SORT t_data BY cust_number rdd location_id bb_order.
LOOP AT t_data INTO gw_data.
lv_index = sy-tabix + 1.
*&--ITEM
lv_itemno = lv_itemno + 10.
lw_item-itm_number = lv_itemno.
lw_item-material
= gw_data-item_num.
lw_item-target_qty = gw_data-qty.
lw_item-target_qu = gw_data-uom.
APPEND lw_item TO lt_item.
CLEAR lw_item.
*&--ITEMX
lw_itemx-itm_number = lv_itemno.
lw_itemx-updateflag = 'I'.
lw_itemx-material
= abap_true.
lw_itemx-target_qty = abap_true.
lw_itemx-target_qu = abap_true.
APPEND lw_itemx TO lt_itemx.
CLEAR lw_itemx.
*&--SCHEDULE LINE
lv_schline = lv_schline + 1.
lw_schdl-itm_number = lv_itemno.
lw_schdl-sched_line = lv_schline.
lw_schdl-req_qty
= gw_data-qty.
APPEND lw_schdl TO lt_schdl.
CLEAR lw_schdl.
*&--SCHEDULE LINEX
lw_schdlx-itm_number = lv_itemno.
lw_schdlx-sched_line = lv_schline.
lw_schdlx-updateflag = 'I'.
lw_schdlx-req_qty
= abap_true.
APPEND lw_schdlx TO lt_schdlx.
CLEAR lw_schdlx.
CLEAR lw_data.
READ TABLE t_data INTO lw_data INDEX lv_index.
IF sy-subrc = 0 AND gw_data-cust_number = lw_data-cust_number
AND gw_data-rdd
= lw_data-rdd
AND gw_data-location_id = lw_data-location_id

AND gw_data-bb_order

= lw_data-bb_order.

CONTINUE.
ENDIF.
*&--HEADER
** Begin of change -- KUMJX005 -- May 5, 2016.
*
lw_hdr-doc_type = 'Z3QT'.
lw_hdr-doc_type = 'ZTQT'.
** End of change -- KUMJX005 -- May 5, 2016.
lw_hdr-req_date_h = gw_data-rdd.
lw_hdr-ref_1
= gw_data-bb_order.
*&--HEADERX
lw_hdrx-updateflag
lw_hdrx-doc_type
lw_hdrx-req_date_h
lw_hdrx-ref_1

= 'I'.
= abap_true.
= abap_true.
= abap_true.

*&--PARTNER
CLEAR lw_knvp.
READ TABLE lt_knvp INTO lw_knvp WITH KEY kunnr = gw_data-cust_number.
IF sy-subrc = 0.
lw_partner-partn_role = 'WE'.
lw_partner-partn_numb = lw_knvp-kunn2.
APPEND lw_partner TO lt_partner.
CLEAR lw_partner.
ENDIF.
lw_partner-partn_role = 'AG'.
lw_partner-partn_numb = gw_data-cust_number.
APPEND lw_partner TO lt_partner.
CLEAR lw_partner.
CLEAR gw_output.
MOVE-CORRESPONDING gw_data TO gw_output.
*&--Call BAPI to create Quotation
CALL FUNCTION 'BAPI_QUOTATION_CREATEFROMDATA2'
EXPORTING
quotation_header_in
= lw_hdr
quotation_header_inx
= lw_hdrx
IMPORTING
salesdocument
= sales_doc
TABLES
return
= lt_return
quotation_items_in
= lt_item
quotation_items_inx
= lt_itemx
quotation_partners
= lt_partner
quotation_schedules_in = lt_schdl
quotation_schedules_inx = lt_schdlx.
READ TABLE lt_return WITH KEY type = 'E' TRANSPORTING NO FIELDS.
IF sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = abap_true.
gw_output-sales_doc = sales_doc.
APPEND gw_output TO t_output.
CLEAR: gw_output, sales_doc.

ELSE.
ROLLBACK WORK.
LOOP AT lt_return INTO lw_return WHERE type = 'E'.
CLEAR lw_item.
READ TABLE lt_item INTO lw_item WITH KEY itm_number = lw_return-messag
e_v2+0(6).
IF sy-subrc = 0.
gw_output-material = lw_item-material.
ELSE.
READ TABLE lt_item INTO lw_item WITH KEY itm_number = lw_return-mess
age_v1+0(6).
IF sy-subrc = 0.
gw_output-material = lw_item-material.
ENDIF.
ENDIF.
gw_output-msg = lw_return-message.
APPEND gw_output TO gt_output.
CLEAR gw_output-material.
ENDLOOP.
CLEAR gw_output.
ENDIF.
REFRESH: lt_return[], lt_item[], lt_itemx[],
lt_partner[], lt_schdl[], lt_schdlx[].
CLEAR: lw_hdr, lw_hdrx, lv_itemno, lv_schline.
ENDLOOP.
ENDMETHOD.

"create_so

METHOD send_email.
CONSTANTS:
gc_tab TYPE c VALUE cl_bcs_convert=>gc_tab,
gc_crlf TYPE c VALUE cl_bcs_convert=>gc_crlf.
DATA
DATA
DATA
DATA

send_request
document
recipient
bcs_exception

TYPE
TYPE
TYPE
TYPE

REF
REF
REF
REF

TO
TO
TO
TO

cl_bcs.
cl_document_bcs.
if_recipient_bcs.
cx_bcs.

DATA
DATA
DATA
DATA

main_text
binary_content
size
sent_to_all

TYPE
TYPE
TYPE
TYPE

bcsy_text.
solix_tab.
so_obj_len.
os_boolean.

DATA lv_string
TYPE string.
DATA: lw_email
LIKE LINE OF s_email,
lv_subject TYPE so_obj_des.
CONCATENATE text-001 gc_tab text-002 gc_tab text-003 gc_tab text-004
gc_tab text-005 gc_tab text-006 gc_tab text-007 gc_crlf
INTO lv_string.
CLEAR gw_output.
LOOP AT t_output INTO gw_output.
CONCATENATE lv_string gw_output-bb_order
gc_tab
gw_output-location_id gc_tab

gw_output-cust_number
gw_output-rdd
gw_output-material
gw_output-sales_doc
gw_output-msg
INTO lv_string.

gc_tab
gc_tab
gc_tab
gc_tab
gc_crlf

ENDLOOP.
TRY.
cl_bcs_convert=>string_to_solix(
EXPORTING
iv_string = lv_string
iv_codepage = '4103' "suitable for MS Excel, leave empty
iv_add_bom = 'X'
"for other doc types
IMPORTING
et_solix = binary_content
ev_size = size ).
CATCH cx_bcs.
MESSAGE e445(so).
ENDTRY.
TRY.
*

-------- create persistent send request -----------------------send_request = cl_bcs=>create_persistent( ).

*
*

-------- create and set document with attachment --------------create document object from internal table with text
APPEND text-031 TO main_text.
lv_subject = text-025.
document = cl_document_bcs=>create_document(
i_type
= 'RAW'
i_text
= main_text
i_subject = lv_subject ).

DATA: lv_filename TYPE sood-objdes.


CONCATENATE text-024 sy-datum INTO lv_filename.
add the spread sheet as attachment to document object
document->add_attachment(
i_attachment_type
= 'xls'
"#EC NOTEXT
i_attachment_subject = lv_filename
"text-024
i_attachment_size
= size
i_att_content_hex
= binary_content ).

add document object to send request


send_request->set_document( document ).

--------- add recipient (e-mail address) ----------------------LOOP AT s_email INTO lw_email.


create recipient object
recipient = cl_cam_address_bcs=>create_internet_address( lw_email-low

*
).
*
*

add recipient object to send request


send_request->add_recipient( recipient ).
ENDLOOP.
---------- send document --------------------------------------sent_to_all = send_request->send( i_with_error_screen = 'X' ).
COMMIT WORK.

IF sent_to_all IS INITIAL.
MESSAGE i500(sbcoms) WITH lw_email-low.
ELSE.
MESSAGE s022(so).
ENDIF.
* ------------ exception handling ---------------------------------* replace this rudimentary exception handling with your own one !!!
CATCH cx_bcs INTO bcs_exception.
MESSAGE i865(so) WITH bcs_exception->error_type.
ENDTRY.
ENDMETHOD.
"send_email
METHOD alv_output.
DATA: gr_table
gr_functions
gr_disp_settings
gr_columns_tab
gr_column_tab
gr_sorts
gr_sort
gr_aggregations
gr_layout
DATA: lw_key
DATA: l_message
l_exclass
l_excoll
l_exexit
l_exdata

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE
TYPE

REF
REF
REF
REF
REF
REF
REF
REF
REF

TO
TO
TO
TO
TO
TO
TO
TO
TO

cl_salv_table,
cl_salv_functions,
cl_salv_display_settings,
cl_salv_columns_table,
cl_salv_column_table,
cl_salv_sorts,
cl_salv_sort,
cl_salv_aggregations,
cl_salv_layout.

salv_s_layout_key.
string,
REF TO cx_salv_msg,
REF TO cx_salv_not_found,
REF TO cx_salv_existing,
REF TO cx_salv_data_error.

TRY.
CALL METHOD cl_salv_table=>factory
EXPORTING
list_display = if_salv_c_bool_sap=>false
IMPORTING
r_salv_table = gr_table
CHANGING
t_table
= t_output.
IF sy-subrc <> 0.
TRY.
RAISE EXCEPTION TYPE cx_salv_msg
EXPORTING
textid = cx_salv_msg=>cx_root.
CATCH cx_salv_msg INTO l_exclass.
l_message = l_exclass->get_text( ).
MESSAGE l_message TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDTRY.
ENDIF.
CATCH cx_salv_msg INTO l_exclass.
l_message = l_exclass->get_text( ).
MESSAGE l_message TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDTRY.
* Functions
gr_functions = gr_table->get_functions( ).

gr_functions->set_all( abap_true ).
* Display settings
gr_disp_settings = gr_table->get_display_settings( ).
gr_disp_settings->set_striped_pattern( abap_true ).
TRY.
* Columns
gr_columns_tab = gr_table->get_columns( ).
gr_columns_tab->set_optimize( abap_true ).
gr_column_tab ?= gr_columns_tab->get_column( 'BB_ORDER' ).
gr_column_tab->set_medium_text( 'BB_ORDER' ).
gr_column_tab->set_long_text( 'BB_ORDER' ).
gr_column_tab ?= gr_columns_tab->get_column( 'LOCATION_ID' ).
gr_column_tab->set_short_text( 'LOCATION' ).
gr_column_tab->set_medium_text( 'LOCATION_ID' ).
gr_column_tab->set_long_text( 'LOCATION_ID' ).
gr_column_tab ?= gr_columns_tab->get_column( 'CUST_NUMBER' ).
gr_column_tab->set_medium_text( 'CUSTOMER_NUM' ).
gr_column_tab->set_long_text( 'CUSTOMER_NUMBER' ).
gr_column_tab ?= gr_columns_tab->get_column( 'RDD' ).
gr_column_tab->set_short_text( 'ReqDelDate' ).
gr_column_tab->set_medium_text( 'REQ_DEL_DATE' ).
gr_column_tab->set_long_text( 'REQUIRED_DELIVERY_DATE' ).
gr_column_tab ?= gr_columns_tab->get_column( 'MATERIAL' ).
gr_column_tab->set_short_text( 'ITEM_NUM' ).
gr_column_tab->set_medium_text( 'ITEM_NUMBER' ).
gr_column_tab->set_long_text( 'ITEM_NUMBER' ).
gr_column_tab ?= gr_columns_tab->get_column( 'SALES_DOC' ).
gr_column_tab->set_short_text( 'QUOTATION' ).
gr_column_tab->set_medium_text( 'QUOTATION_NUM' ).
gr_column_tab->set_long_text( 'QUOTATION_NUM' ).
gr_column_tab ?= gr_columns_tab->get_column( 'MSG' ).
gr_column_tab->set_medium_text( 'ERROR_MESSAGE' ).
gr_column_tab->set_long_text( 'ERROR_MESSAGE' ).
gr_column_tab->set_output_length( '50' ).
* Sorting and sub-total
gr_sorts = gr_table->get_sorts( ).
gr_sorts->add_sort( columnname = 'BB_ORDER' ).
* Layout
gr_layout = gr_table->get_layout( ).
lw_key-report = sy-repid.
gr_layout->set_key( lw_key ).
gr_layout->set_save_restriction( cl_salv_layout=>restrict_none ).
gr_table->display( ).
CATCH cx_salv_not_found INTO l_excoll.
CALL METHOD l_excoll->if_message~get_longtext
RECEIVING
result = l_message.

MESSAGE l_message TYPE 'S' DISPLAY LIKE 'E'.


EXIT.
CATCH cx_salv_data_error.
CALL METHOD l_excoll->if_message~get_longtext
RECEIVING
result = l_message.
MESSAGE l_message TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
CATCH cx_salv_existing.
CALL METHOD l_excoll->if_message~get_longtext
RECEIVING
result = l_message.
MESSAGE l_message TYPE 'S' DISPLAY LIKE 'E'.
EXIT.
ENDTRY.
ENDMETHOD.

"alv_output

METHOD upd_file_app.
DATA: lv_msg TYPE string,
lv_file TYPE string,
lv_count TYPE i.
CLEAR lv_msg.
OPEN DATASET path FOR INPUT IN TEXT MODE ENCODING DEFAULT
MESSAGE lv_msg.
IF sy-subrc = 0.
DO.
READ DATASET path INTO lv_file.
IF sy-subrc = 0.
IF lv_count GE 1.
SPLIT lv_file AT c_comma INTO gw_data-bb_order
gw_data-location_id
gw_data-cust_number
gw_data-item_num
gw_data-qty
gw_data-uom
gw_data-rdd.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gw_data-cust_number
IMPORTING
output = gw_data-cust_number.
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input
= gw_data-item_num
IMPORTING
output
= gw_data-item_num
EXCEPTIONS
length_error = 1
OTHERS
= 2.
IF sy-subrc <> 0.

* Implement suitable error handling here


ENDIF.
APPEND gw_data TO gt_data.
CLEAR gw_data.
ENDIF.
lv_count = lv_count + 1.
CLEAR lv_file.
ELSE.
EXIT.
ENDIF.
ENDDO.
ELSE.
MESSAGE lv_msg TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
CLOSE DATASET path.
ENDMETHOD.

"upd_file_app

METHOD archieve_file_app.
DATA : lv_sourcepath TYPE sapb-sappfad,
lv_targetpath TYPE sapb-sappfad.
CLEAR: lv_sourcepath,
lv_targetpath.
MOVE path TO lv_sourcepath.
lv_targetpath = '/interfaces/Alta/archive/'.
CONCATENATE lv_targetpath lv_sourcepath+20(22) INTO lv_targetpath. " Becaus
e filename will always be of fiexd length
CONDENSE lv_targetpath.
CALL FUNCTION 'ARCHIVFILE_SERVER_TO_SERVER'
EXPORTING
sourcepath = lv_sourcepath
targetpath = lv_targetpath
EXCEPTIONS
error_file = 1
OTHERS
= 2.
IF sy-subrc EQ 0.
DELETE DATASET lv_sourcepath.
ENDIF.
ENDMETHOD.
"archieve_file_app
ENDCLASS.
"lcl_sales_order_alta IMPLEMENTATION

You might also like