‎2007 Apr 03 10:55 AM
Hi All,
Running this program I am getting unit of measure in LITRE but I want unit of measure should be in KILOMETER format. So anybody can tell me which part of the code do i need to amke changes. and which part of code we need to make changes.
&----
*& Report ZMM_GI_FUEL
*&
&----
*&
*&
&----
REPORT zmm_gi_fuel.
PARAMETERS : p_file LIKE rlgrap-filename.
TYPES: BEGIN OF ty_data_format_gi,
flt_no TYPE char8,
tail TYPE char3,
text1 TYPE char3,
text2 TYPE char3,
date TYPE char10,
qty TYPE char13,
org TYPE char3,
des TYPE char3,
tech TYPE char6,
indicator TYPE char1,
END OF ty_data_format_gi.
DATA: it_data_gi TYPE TABLE OF ty_data_format_gi,
wa_data_gi LIKE LINE OF it_data_gi.
DATA: file TYPE string.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
messages of call transaction
DATA: messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
INITIALIZATION.
START-OF-SELECTION.
file = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = file
has_field_separator = '#'
TABLES
data_tab = it_data_gi
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
OTHERS = 17.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
PERFORM make_gi.
&----
*& Form make_gi
&----
text
----
--> p1 text
<-- p2 text
----
FORM make_gi .
data: text(20).
LOOP AT it_data_gi INTO wa_data_gi.
clear text.
PERFORM bdc_dynpro USING 'SAPMM07M' '0400'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RM07M-LGORT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MKPF-BLDAT'
wa_data_gi-date.
"'02.12.2006'.
PERFORM bdc_field USING 'MKPF-BUDAT'
wa_data_gi-date.
"'02.12.2006'.
concatenate wa_data_gi-flt_no '-' wa_data_gi-tail '-' wa_data_gi-text1 '-' wa_data_gi-text2 into text.
PERFORM bdc_field USING 'MKPF-BKTXT'
text.
"wa_data_gi-tech.
"'201377'.
PERFORM bdc_field USING 'RM07M-BWARTWA'
'201'.
PERFORM bdc_field USING 'RM07M-WERKS'
'1000'.
PERFORM bdc_field USING 'RM07M-LGORT'
'1001'.
PERFORM bdc_field USING 'XFULL'
'X'.
PERFORM bdc_field USING 'RM07M-WVERS2'
'X'.
PERFORM bdc_dynpro USING 'SAPMM07M' '0421'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSEG-ERFME(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
IF wa_data_gi-indicator = 'Y'.
PERFORM bdc_field USING 'MSEG-MATNR(01)'
'200568'.
ELSE.
PERFORM bdc_field USING 'MSEG-MATNR(01)'
'200566'.
ENDIF.
PERFORM bdc_field USING 'MSEG-ERFMG(01)'
" '1.025'.
wa_data_gi-qty.
PERFORM bdc_field USING 'MSEG-ERFME(01)'
'L'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=COBL_XERGO'.
PERFORM bdc_field USING 'COBL-KOSTL'
'10122'.
PERFORM bdc_dynpro USING 'SAPLKEAK' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RKEAK-FIELD(12)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
PERFORM bdc_field USING 'RKEAK-FIELD(08)'
'1000'.
PERFORM bdc_field USING 'RKEAK-FIELD(09)'
'1000'.
PERFORM bdc_field USING 'RKEAK-FIELD(12)'
'KF'.
PERFORM bdc_dynpro USING 'SAPLKEAK' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RKEAK-FIELD(05)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WEIT'.
PERFORM bdc_field USING 'RKEAK-FIELD(05)'
" 'CCU'.
wa_data_gi-org.
PERFORM bdc_field USING 'RKEAK-FIELD(02)'
"'DEL-CCU'.
wa_data_gi-tail.
PERFORM bdc_field USING 'RKEAK-FIELD(07)'
"'DEL'.
wa_data_gi-des.
PERFORM bdc_field USING 'RKEAK-FIELD(08)'
"'IT-601'.
wa_data_gi-flt_no.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL'
'10122'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
PERFORM bdc_field USING 'COBL-KOSTL'
'10122'.
PERFORM bdc_dynpro USING 'SAPMM07M' '0421'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSEG-ERFMG(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'DKACB-FMORE'
'X'.
PERFORM bdc_dynpro USING 'SAPLKACB' '0002'.
PERFORM bdc_field USING 'BDC_CURSOR'
'COBL-KOSTL'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTE'.
CALL TRANSACTION 'MB1A' USING bdcdata MODE 'N' UPDATE 'S'.
REFRESH bdcdata.
"PERFORM bdc_transaction USING 'MB1A' using bdcdata.
ENDLOOP.
ENDFORM. " make_gi
----
Start new screen *
----
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "bdc_dynpro
----
Insert field *
----
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDFORM. "bdc_field
‎2007 Apr 03 12:37 PM
hi abhay
in one of the performs where you are writing the tcode with ERFME you are hardcoing the value with <b>'L'</b>,rather keep a varaible there with the corresponding unit of measure and if you want it to be <b>Km</b> for all the entries then you can hardcode it as 'Km' in that particular perform.
here it is .
PERFORM bdc_field USING 'MSEG-ERFME(01)'
'L'. ' <b>you can keep Km or any variable with corresponding value in it</b>.
hope it solves your problem
kindly reward points if helpful.
Regards
Zarina