Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

ECP enqueue poor performance on DI server

Former Member
0 Likes
326

We perform the data loading from our workstation and when we process it in dialog mode in CI/DB server, the precess time is quite fast. But the same data on Dialog server, most of the process is in Enqueue time almost 10 times to CI server. Our network is gigabit and the connection between server is in the same LAN. Does anyone suffer the performance issue? Thanks a lot!

1 REPLY 1
Read only

Former Member
0 Likes
283

&----


*& Report ZD_GSG_MAT

*&

&----


*&

*&

&----


REPORT ZD_GSG_MAT NO STANDARD PAGE HEADING LINE-SIZE 255.

tables: makt.

TYPE-POOLS abap.

data po_subrc type i.

data: begin of w_ret,

recid(10),

MATERIAL(18).

Include STRUCTURE BAPIRET2.

data:

end of w_ret.

data t_BAPIRET2 like w_ret occurs 1000 with header line .

data : i_total type i,

i_true type i,

i_false type i.

****************************************

DATA L_MATNR(18).

****************************************'

data: begin of w_map,

recid(10),

stable(30),

sfname(50),

dtable(30),

dfname(50),

end of w_map.

data tab_map like w_map occurs 1000 .

data: begin of w_mltx,

matnr(18),

LANGU(2),

FORMAT_COL(2),

TEXT_LINE(132),

end of w_mltx.

data: begin of w_MARM,

matnr(18),

ALT_UNIT(3),

GROSS_WT(13),

UNIT_OF_WT(3),

VOLUME(13),

VOLUMEUNIT(3),

SUB_UOM(3),

NUMERATOR(5),

DENOMINATR(5),

EAN_UPC(18),

EAN_CAT(2),

LENGTH(13),

WIDTH(13),

HEIGHT(13),

UNIT_DIM(3),

GTIN_VARIANT(2),

end of w_MARM.

data: begin of w_mlan,

matnr(18),

DEPCOUNTRY(3),

TAX_TYPE_1(4),

TAXCLASS_1(1),

TAX_TYPE_2(4),

TAXCLASS_2(1),

TAX_TYPE_3(4),

TAXCLASS_3(1),

TAX_TYPE_4(4),

TAXCLASS_4(1),

TAX_TYPE_5(4),

TAXCLASS_5(1),

TAX_TYPE_6(4),

TAXCLASS_6(1),

TAX_TYPE_7(4),

TAXCLASS_7(1),

TAX_TYPE_8(4),

TAXCLASS_8(1),

TAX_TYPE_9(4),

TAXCLASS_9(1),

TAX_IND(1),

end of w_mlan.

data: begin of w_MAKT,

matnr(18),

LANGU(1),

MATL_DESC(40),

end of w_MAKT.

data t_mltx like w_mltx occurs 0 .

data t_MARM like w_MARM occurs 0 .

data t_mlan like w_mlan occurs 0 .

data t_MAKT like w_MAKT occurs 0 .

parameters : p_file like rlgrap-filename obligatory.

parameters : p_file1 like rlgrap-filename obligatory.

parameters : p_mlan as checkbox.

parameters : p_fmlan like rlgrap-filename.

parameters : p_MLTX as checkbox.

parameters : p_fMLTX like rlgrap-filename.

parameters : p_MARM as checkbox.

parameters : p_fMARM like rlgrap-filename.

parameters : p_MAKT as checkbox.

parameters : p_fMAKT like rlgrap-filename.

parameters: p_foreh radiobutton group YAN,

p_backg radiobutton group YAN.

**********************************************************

Include ZDCPUB001.

include zdcpub002.

&*********************************************************************

initialization.

p_file = 'C:\dwload\T_RET.txt'.

p_file1 = 'C:\dwload\Mappingtab.txt'.

p_fmlan = 'C:\dwload\T_mlan_UEB.txt'.

p_fMLTX = 'C:\dwload\T_MLTX_UEB.txt'.

p_fMARM = 'C:\dwload\T_MARM_UEB.txt'.

p_fMAKT = 'C:\dwload\T_MAKT_UEB.txt'.

&*********************************************************************

*&START-OF-SELECTION

&*********************************************************************

start-of-selection.

DATA IFOK TYPE C.

if p_mlan = 'X'.

IF p_foreh = 'X'.

perform read_data_gsc using p_fmlan

changing po_subrc.

if po_subrc <> 0.

write: 'Data transfer failure!'.

exit.

endif.

ELSE.

perform readdatabk using p_fmlan changING IFOK .

if IFOK = ''.

write: 'No Data transfer !'.

exit.

endif.

ENDIF.

PERFORM GETDATA USING W_mlan CHANGING T_mlan.

ENDIF.

if p_MLTX = 'X'.

IF p_foreh = 'X'.

perform read_data_gsc using p_fMLTX

changing po_subrc.

if po_subrc <> 0.

write: 'Data transfer failure!'.

exit.

endif.

ELSE.

perform readdatabk using p_fMLTX changING IFOK .

if IFOK = ''.

write: 'No Data transfer !'.

exit.

endif.

ENDIF.

PERFORM GETDATA USING W_MLTX CHANGING T_MLTX.

ENDIF.

if p_MARM = 'X'.

IF p_foreh = 'X'.

perform read_data_gsc using p_fMARM

changing po_subrc.

if po_subrc <> 0.

write: 'Data transfer failure!'.

exit.

endif.

ELSE.

perform readdatabk using p_fMARM changING IFOK .

if IFOK = ''.

write: 'No Data transfer !'.

exit.

endif.

ENDIF.

PERFORM GETDATA USING W_MARM CHANGING T_MARM.

ENDIF.

if p_MAKT = 'X'.

IF p_foreh = 'X'.

perform read_data_gsc using p_fMAKT

changing po_subrc.

if po_subrc <> 0.

write: 'Data transfer failure!'.

exit.

endif.

ELSE.

perform readdatabk using p_fMAKT changING IFOK .

if IFOK = ''.

write: 'No Data transfer !'.

exit.

endif.

ENDIF.

PERFORM GETDATA USING W_MAKT CHANGING T_MAKT.

ENDIF.

IF p_foreh = 'X'.

perform read_data_gsc using p_file1

changing po_subrc.

if po_subrc <> 0.

write: 'Data transfer failure!'.

exit.

endif.

ELSE.

PERform readdata_bk1 USING IFOK .

if IFOK = ''.

write: 'No Data transfer !'.

exit.

endif.

ENDIF.

perform get_data1.

IF p_foreh = 'X'.

perform read_data_gsc using p_file

changing po_subrc.

if po_subrc <> 0.

write: 'Data transfer failure!'.

exit.

endif.

ELSE.

PERform readdata_bk USING IFOK .

if IFOK = ''.

write: 'No Data transfer !'.

exit.

endif.

ENDIF.

perform get_data.

*perform proc_data.

perform write_output.

form get_data1.

  • loop at pt_line from 2.

loop at pt_line .

perform split_by_fieldname using pt_line-line w_map.

append w_map to tab_map . clear w_map.

endloop.

endform.

***************************************************************************

form get_data.

REFRESH t_MATERIALDESCRIPTION.

refresh t_UNITSOFMEASUREX.

REFRESH T_MATERIALLONGTEXT.

refresh t_UNITSOFMEASURE.

refresh t_TAXCLASSIFICATIONS.

  • perform get_tabdata.

  • loop at pt_line from 2.

loop at pt_line.

CLEAR T_MATERIALLONGTEXT.

clear t_TAXCLASSIFICATIONS.

clear t_UNITSOFMEASURE.

clear t_UNITSOFMEASUREX.

CLEAR t_MATERIALDESCRIPTION.

CLEAR : W_PLANTDATA,W_FORECASTPARAMETERS,W_PLANNINGDATA,W_STORAGELOCATIONDATA,

W_VALUATIONDATA,W_WAREHOUSENUMBERDATA,W_SALESDATA,W_STORAGETYPEDATA,W_CLIENTDATA.

CLEAR : W_PLANTDATAX,W_FORECASTPARAMETERSX,W_PLANNINGDATAX,W_STORAGELOCATIONDATAX,

W_VALUATIONDATAX,W_WAREHOUSENUMBERDATAX,W_SALESDATAX,W_STORAGETYPEDATAX,W_CLIENTDATAX.

clear w_ret.

perform split_by_fieldname1 using pt_line-line .

if T_MATERIALDESCRIPTION is not initial.

t_MATERIALDESCRIPTION-LANGU = SY-LANGU.

append T_MATERIALDESCRIPTION .

endif.

if T_MATERIALLONGTEXT is not initial.

append T_MATERIALLONGTEXT .

endif.

if T_TAXCLASSIFICATIONS is not initial.

IF t_TAXCLASSIFICATIONS-DEPCOUNTRY = '' .

t_TAXCLASSIFICATIONS-DEPCOUNTRY = 'CN' .

ENDIF.

IF t_TAXCLASSIFICATIONS-TAX_TYPE_1 = '' .

t_TAXCLASSIFICATIONS-TAX_TYPE_1 = 'MWSI' .

ENDIF.

append T_TAXCLASSIFICATIONS .

endif.

if not t_UNITSOFMEASURE is initial.

t_UNITSOFMEASURE-ALT_UNIT = W_CLIENTDATA-BASE_UOM.

t_UNITSOFMEASURE-NUMERATOR = 1.

t_UNITSOFMEASURE-DENOMINATR = 1.

t_UNITSOFMEASUREX-ALT_UNIT = W_CLIENTDATA-BASE_UOM.

t_UNITSOFMEASUREX-NUMERATOR = 'X'.

t_UNITSOFMEASUREX-DENOMINATR = 'X'.

append t_UNITSOFMEASURE.

append t_UNITSOFMEASUREX.

endif.

if W_HEADDATA-material <> ''.

perFORM get_tabdata using W_HEADDATA-material.

endif.

PERform call_func.

endloop.

endform.

form split_by_fieldname1 using l_line .

data: s_line(8000) type c,l_str(100) type c,l_filedvalue type string.

data: lwaname type string,lfname type string.

FIELD-SYMBOLS: <wa> TYPE ANY,<wax> TYPE ANY.

DATA IFLAG TYPE STRING.

s_line = l_line.

class cl_abap_char_utilities definition load.

skey = cl_abap_char_utilities=>horizontal_tab.

do .

read table t_fieldname into w_fieldname index sy-index.

TRANSLATE w_fieldname-fieldname TO UPPER CASE.

split w_fieldname-fieldname at '-' into lwaname lfname.

clear w_map.

READ TABLE tab_map into w_map WITH KEY stable = lwaname sfname = lfname.

case w_map-dtable.

when 'BAPIMATHEAD'.

ASSIGN W_HEADDATA TO <wa>.

when 'BAPI_MARA'.

ASSIGN W_CLIENTDATA TO <wa>.

ASSIGN W_CLIENTDATAX TO <wax>.

WHEN 'BAPI_MARC'.

ASSIGN W_PLANTDATA TO <wa>.

ASSIGN W_PLANTDATAX TO <wax>.

WHEN 'BAPI_MPOP'.

ASSIGN W_FORECASTPARAMETERS TO <wa>.

ASSIGN W_FORECASTPARAMETERSX TO <wax>.

WHEN 'BAPI_MPGD'.

ASSIGN W_PLANNINGDATA TO <wa>.

ASSIGN W_PLANNINGDATAX TO <wax>.

WHEN 'BAPI_MARD'.

ASSIGN W_STORAGELOCATIONDATA TO <wa>.

ASSIGN W_STORAGELOCATIONDATAX TO <wax>.

WHEN 'BAPI_MBEW'.

ASSIGN W_VALUATIONDATA TO <wa>.

ASSIGN W_VALUATIONDATAX TO <wax>.

WHEN 'BAPI_MLGN'.

ASSIGN W_WAREHOUSENUMBERDATA TO <wa>.

ASSIGN W_WAREHOUSENUMBERDATAX TO <wax>.

WHEN 'BAPI_MVKE'.

ASSIGN W_SALESDATA TO <wa>.

ASSIGN W_SALESDATAX TO <wax>.

WHEN 'BAPI_MLGT'.

ASSIGN W_STORAGETYPEDATA TO <wa>.

ASSIGN W_STORAGETYPEDATAX TO <wax>.

WHEN 'BAPI_MAKT'.

ASSIGN T_MATERIALDESCRIPTION TO <wa>.

WHEN 'BAPI_MLTX'.

ASSIGN T_MATERIALLONGTEXT TO <wa>.

WHEN 'BAPI_MLAN'.

ASSIGN T_TAXCLASSIFICATIONS TO <wa>.

WHEN 'BAPI_MARM'.

ASSIGN T_UNITSOFMEASURE TO <wa>.

ASSIGN T_UNITSOFMEASUREX TO <wax>.

WHEN 'W_RET'.

ASSIGN W_RET TO <wa>.

endcase.

assign component w_map-dfname of structure <wa> to <fs>.

if sy-subrc = 0.

if strlen( s_line ) > 0.

split s_line at skey into l_filedvalue s_line.

IF l_filedvalue <> ''.

<fs> = l_filedvalue.

clear l_filedvalue.

if w_map-dfname = 'PLANT' or w_map-dfname = 'SALES_ORG' or

w_map-dfname = 'DISTR_CHAN' or w_map-dfname = 'STGE_LOC' or

w_map-dfname = 'VAL_AREA' or w_map-dfname = 'WHSE_NO' or

w_map-dfname = 'STGE_TYPE' or w_map-dfname = 'VAL_TYPE'.

IFLAG = <fs>.

else.

IFLAG = 'X'.

endif.

if not ( w_map-dtable = 'BAPIMATHEAD' or w_map-dtable = 'BAPI_MAKT' or

w_map-dtable = 'BAPI_MLTX' or w_map-dtable = 'BAPI_MLAN' ).

assign component w_map-dfname of structure <wax> to <fs>.

if sy-subrc = 0.

<fs> = IFLAG.

endif.

endif.

ENDIF.

else.

exit.

endif.

else.

if strlen( s_line ) > 0.

split s_line at skey into l_str s_line.

else.

exit.

endif.

endif.

enddo.

  • append wa to t_report. clear wa.

  • endloop.

endform.

******************************************************************************************************************

**************************************************************************************

form get_mat_no using MATERIAL_TYPE changing l_matnr.

data t_matnr like BAPIMATINR OCCURS 1 WITH HEADER LINE .

DATA: T_RETURN1 LIKE BAPIRETURN1.

CALL FUNCTION 'BAPI_STDMATERIAL_GETINTNUMBER'

EXPORTING

MATERIAL_TYPE = MATERIAL_TYPE

INDUSTRY_SECTOR = 'M'

IMPORTING

RETURN = T_RETURN1

TABLES

MATERIAL_NUMBER = T_MATNR.

LOOP AT T_MATNR .

l_matnr = T_MATNR-MATERIAL.

ENDLOOP.

endform.

******************************************************

form call_func.

DATA: RETURN_CODE2 LIKE BAPIRET2.

*DATA: func TYPE string,

  • ptab TYPE abap_func_parmbind_tab,

  • ptab_line TYPE abap_func_parmbind,

  • etab TYPE abap_func_excpbind_tab,

  • etab_line TYPE abap_func_excpbind.

  • func = 'BAPI_MATERIAL_SAVEDATA'.

*

  • ptab_line-name = 'HEADDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_HEADDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • IF W_CLIENTDATAX IS not INITIAL.

  • ptab_line-name = 'CLIENTDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_CLIENTDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'CLIENTDATAX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_CLIENTDATAX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

  • IF W_PLANTDATAX IS not INITIAL.

  • ptab_line-name = 'PLANTDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_PLANTDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'PLANTDATAX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_PLANTDATAX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

  • IF W_FORECASTPARAMETERSX IS not INITIAL.

  • ptab_line-name = 'FORECASTPARAMETERS'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_FORECASTPARAMETERS INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'FORECASTPARAMETERSX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_FORECASTPARAMETERSX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

  • IF W_PLANNINGDATAX IS not INITIAL.

  • ptab_line-name = 'PLANNINGDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_PLANNINGDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'PLANNINGDATAX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_PLANNINGDATAX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

  • IF W_STORAGELOCATIONDATAX IS not INITIAL.

  • ptab_line-name = 'STORAGELOCATIONDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_STORAGELOCATIONDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'STORAGELOCATIONDATAX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_STORAGELOCATIONDATAX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

  • IF W_VALUATIONDATAX IS not INITIAL.

  • ptab_line-name = 'VALUATIONDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_VALUATIONDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'VALUATIONDATAX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_VALUATIONDATAX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

  • IF W_WAREHOUSENUMBERDATAX IS not INITIAL.

  • ptab_line-name = 'WAREHOUSENUMBERDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_WAREHOUSENUMBERDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'WAREHOUSENUMBERDATAX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_WAREHOUSENUMBERDATAX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

  • IF W_SALESDATAX IS not INITIAL.

  • ptab_line-name = 'SALESDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_SALESDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'SALESDATAX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_SALESDATAX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

  • IF W_STORAGETYPEDATAX IS not INITIAL.

  • ptab_line-name = 'STORAGETYPEDATA'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_STORAGETYPEDATA INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'STORAGETYPEDATAX'.

  • ptab_line-kind = abap_func_exporting.

  • GET REFERENCE OF W_STORAGETYPEDATAX INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • ENDIF.

*

    • ptab_line-name = 'MATERIALDESCRIPTION'.

    • ptab_line-kind = ABAP_FUNC_TABLES.

    • GET REFERENCE OF T_MATERIALDESCRIPTION INTO ptab_line-value.

    • INSERT ptab_line INTO TABLE ptab.

**

    • ptab_line-name = 'TAXCLASSIFICATIONS'.

    • ptab_line-kind = ABAP_FUNC_TABLES.

    • GET REFERENCE OF T_TAXCLASSIFICATIONS INTO ptab_line-value.

    • INSERT ptab_line INTO TABLE ptab.

**

    • ptab_line-name = 'MATERIALLONGTEXT'.

    • ptab_line-kind = ABAP_FUNC_TABLES.

    • GET REFERENCE OF T_MATERIALLONGTEXT INTO ptab_line-value.

    • INSERT ptab_line INTO TABLE ptab.

**

    • ptab_line-name = 'UNITSOFMEASURE'.

    • ptab_line-kind = ABAP_FUNC_TABLES.

    • GET REFERENCE OF T_UNITSOFMEASURE INTO ptab_line-value.

    • INSERT ptab_line INTO TABLE ptab.

**

    • ptab_line-name = 'UNITSOFMEASUREX'.

    • ptab_line-kind = ABAP_FUNC_TABLES.

    • GET REFERENCE OF T_UNITSOFMEASUREX INTO ptab_line-value.

    • INSERT ptab_line INTO TABLE ptab.

*

  • ptab_line-name = 'RETURN'.

  • ptab_line-kind = ABAP_FUNC_IMPORTING.

  • GET REFERENCE OF RETURN_CODE2 INTO ptab_line-value.

  • INSERT ptab_line INTO TABLE ptab.

  • CALL FUNCTION func

  • PARAMETER-TABLE

  • ptab

  • TABLES

  • MATERIALDESCRIPTION = t_MATERIALDESCRIPTION

  • TAXCLASSIFICATIONS = t_TAXCLASSIFICATIONS

  • MATERIALLONGTEXT = T_MATERIALLONGTEXT

  • UNITSOFMEASURE = t_UNITSOFMEASURE

  • UNITSOFMEASUREx = t_UNITSOFMEASUREx.

*

CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'

EXPORTING

HEADDATA = w_HEADDATA

CLIENTDATA = w_CLIENTDATA

CLIENTDATAX = w_CLIENTDATAX

PLANTDATA = w_PLANTDATA

PLANTDATAX = w_PLANTDATAX

FORECASTPARAMETERS = w_FORECASTPARAMETERS

FORECASTPARAMETERSX = w_FORECASTPARAMETERSX

PLANNINGDATA = w_PLANNINGDATA

PLANNINGDATAX = w_PLANNINGDATAX

STORAGELOCATIONDATA = w_STORAGELOCATIONDATA

STORAGELOCATIONDATAX = w_STORAGELOCATIONDATAX

VALUATIONDATA = w_VALUATIONDATA

VALUATIONDATAX = w_VALUATIONDATAX

WAREHOUSENUMBERDATA = w_WAREHOUSENUMBERDATA

WAREHOUSENUMBERDATAX = w_WAREHOUSENUMBERDATAX

SALESDATA = w_SALESDATA

SALESDATAX = w_SALESDATAX

STORAGETYPEDATA = w_STORAGETYPEDATA

STORAGETYPEDATAX = w_STORAGETYPEDATAX

IMPORTING

RETURN = RETURN_CODE2

TABLES

MATERIALDESCRIPTION = t_MATERIALDESCRIPTION

TAXCLASSIFICATIONS = t_TAXCLASSIFICATIONS

MATERIALLONGTEXT = T_MATERIALLONGTEXT

UNITSOFMEASURE = t_UNITSOFMEASURE

UNITSOFMEASUREx = t_UNITSOFMEASUREx.

IF RETURN_CODE2-TYPE = 'S'.

CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'

EXPORTING

wait = 'X'.

  • commit work AND WAIT.

i_true = i_true + 1.

else.

  • ROLLBACK WORK.

i_false = i_false + 1.

endif.

i_total = i_total + 1.

w_ret-material = W_HEADDATA-material.

MOVE-CORRESPONDING RETURN_CODE2 to w_ret.

append w_ret to t_BAPIRET2.

perform write_table using RETURN_CODE2 .

endform.

*****************************************

form write_table using w_return LIKE BAPIRET2 .

DATA W_zdcmes LIKE ZDCMES.

data l_str(4000) type c.

W_zdcmes-MANDT = sy-mandt.

W_zdcmes-FILEID = p_file.

  • W_zdcmes-RECID = w_return-recid.

W_zdcmes-TCODE = 'ZD_GSC_MAT'.

W_zdcmes-MSGTY = w_return-type .

W_zdcmes-MSGV1 = w_return-MESSAGE_V1.

W_zdcmes-MESSG = w_return-MESSAGE.

  • write wa to l_str .

  • W_zdcmes-RECORD = l_str+0(255) .

perform modify_zdcmes using w_zdcmes 'X'.

endform.

**********************************************

form write_output.

write: /5(20) ' Total quantity :' , 30(20) i_total,

/5(20) ' True quantity :' , 30(20) i_true,

/5(20) 'False quantity :' , 30(20) i_false.

skip 2.

write: /1(10) 'Recode no',

12(18) 'Material',

31(10) 'Error type',

42(220) 'Message'.

loop at t_BAPIRET2 into w_ret.

write: /1(10) w_ret-recid,

12(18) w_ret-material,

31(10) w_ret-TYPE,

42(220) w_ret-MESSAGE.

endloop.

endform.

form readdatabk using pfile changING IFOK .

data: i_mess(100) type c.

DATA LIN TYPE I.

IFOK = ''.

refresh pt_line.

open dataset pfile for input in text mode encoding non-unicode message i_mess

with windows linefeed .

if sy-subrc ne 0.

message e208(00) with i_mess.

endif.

do.

read dataset pfile into pt_line .

if sy-subrc ne 0.

exit.

endif.

append pt_line. clear pt_line.

enddo.

close dataset pfile.

DESCRIBE TABLE pt_line LINES lin .

if lin > 1.

perform save_fieldname.

IFOK = 'X'.

ENDIF.

endform.

form readdata_bk USING IFOK .

data: i_mess(100) type c.

DATA LIN TYPE I.

IFOK = ''.

refresh pt_line.

open dataset p_file for input in text mode encoding non-unicode message i_mess

with windows linefeed .

if sy-subrc ne 0.

message e208(00) with i_mess.

endif.

do.

read dataset p_file into pt_line .

if sy-subrc ne 0.

exit.

endif.

append pt_line. clear pt_line.

enddo.

close dataset p_file.

DESCRIBE TABLE pt_line LINES lin .

if lin > 1.

perform save_fieldname.

IFOK = 'X'.

ENDIF.

endform.

form readdata_bk1 USING IFOK .

data: i_mess(100) type c.

DATA LIN TYPE I.

IFOK = ''.

refresh pt_line.

open dataset p_file1 for input in text mode encoding non-unicode message i_mess

with windows linefeed .

if sy-subrc ne 0.

message e208(00) with i_mess.

endif.

do.

read dataset p_file1 into pt_line .

if sy-subrc ne 0.

exit.

endif.

append pt_line. clear pt_line.

enddo.

close dataset p_file1.

DESCRIBE TABLE pt_line LINES lin .

if lin > 1.

perform save_fieldname.

IFOK = 'X'.

ENDIF.

endform.

&----


*& Form get_tabdata

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM get_tabdata using l_matnr.

data n type i.

n = 0.

DESCRIBE TABLE t_MAKT lines n.

if n > 0.

perFORM SET_MATERIAL_DESC using l_matnr.

endif.

n = 0.

DESCRIBE TABLE t_MARM lines n.

if n > 0.

perform set_UNITSOFMEASURE using l_matnr.

endif.

n = 0.

DESCRIBE TABLE t_mlan lines n.

if n > 0.

perform set_TAX using l_matnr.

endif.

n = 0.

DESCRIBE TABLE t_mltx lines n.

if n > 0.

perFORM SET_LONGTEXT using l_matnr.

endif.

ENDFORM. " get_tabdata

FORM SET_MATERIAL_DESC using l_matnr.

  • data: l_matnr like makt-matnr,ilen type i,istart type i.

  • ilen = strlen( WA-MATERIAL ).

  • istart = 18 - ilen .

  • l_matnr = '000000000000000000'.

  • l_matnr+istart(ilen) = WA-MATERIAL.

REFRESH t_MATERIALDESCRIPTION.

CLEAR t_MATERIALDESCRIPTION.

loop at t_MAKT into w_MAKT where matnr = l_matnr .

t_MATERIALDESCRIPTION-LANGU = w_MAKT-LANGU.

t_MATERIALDESCRIPTION-MATL_DESC = w_MAKT-MATL_DESC.

APPEND t_MATERIALDESCRIPTION.

endloop.

ENDFORM.

form set_UNITSOFMEASURE using l_matnr.

refresh t_UNITSOFMEASURE.

clear t_UNITSOFMEASURE.

refresh t_UNITSOFMEASUREX.

clear t_UNITSOFMEASUREX.

loop at t_MARM into w_MARM where matnr = l_matnr .

if not w_MARM-ALT_UNIT is initial.

t_UNITSOFMEASURE-ALT_UNIT = w_MARM-ALT_UNIT.

t_UNITSOFMEASUREx-ALT_UNIT = w_MARM-ALT_UNIT.

endif.

if not w_MARM-GROSS_WT is initial.

t_UNITSOFMEASURE-GROSS_WT = w_MARM-GROSS_WT.

t_UNITSOFMEASUREx-GROSS_WT = 'X'.

endif.

if not w_MARM-GROSS_WT is initial.

t_UNITSOFMEASURE-GROSS_WT = w_MARM-GROSS_WT.

t_UNITSOFMEASUREx-GROSS_WT = 'X'.

endif.

if not w_MARM-UNIT_OF_WT is initial.

t_UNITSOFMEASURE-UNIT_OF_WT = w_MARM-UNIT_OF_WT.

t_UNITSOFMEASUREx-UNIT_OF_WT = 'X'.

endif.

if not w_MARM-VOLUME is initial.

t_UNITSOFMEASURE-VOLUME = w_MARM-VOLUME.

t_UNITSOFMEASUREx-VOLUME = 'X'.

endif.

if not w_MARM-VOLUMEUNIT is initial.

t_UNITSOFMEASURE-VOLUMEUNIT = w_MARM-VOLUMEUNIT.

t_UNITSOFMEASUREx-VOLUMEUNIT = 'X'.

endif.

if not w_MARM-SUB_UOM is initial.

t_UNITSOFMEASURE-SUB_UOM = w_MARM-SUB_UOM.

t_UNITSOFMEASUREx-SUB_UOM = 'X'.

endif.

if not w_MARM-NUMERATOR is initial.

t_UNITSOFMEASURE-NUMERATOR = w_MARM-NUMERATOR.

t_UNITSOFMEASUREx-NUMERATOR = 'X'.

endif.

if not w_MARM-DENOMINATR is initial.

t_UNITSOFMEASURE-DENOMINATR = w_MARM-DENOMINATR.

t_UNITSOFMEASUREx-DENOMINATR = 'X'.

endif.

if not w_MARM-EAN_UPC is initial.

t_UNITSOFMEASURE-EAN_UPC = w_MARM-EAN_UPC.

t_UNITSOFMEASUREx-EAN_UPC = 'X'.

endif.

if not w_MARM-EAN_CAT is initial.

t_UNITSOFMEASURE-EAN_CAT = w_MARM-EAN_CAT.

t_UNITSOFMEASUREx-EAN_CAT = 'X'.

endif.

if not w_MARM-LENGTH is initial.

t_UNITSOFMEASURE-LENGTH = w_MARM-LENGTH.

t_UNITSOFMEASUREx-LENGTH = 'X'.

endif.

if not w_MARM-WIDTH is initial.

t_UNITSOFMEASURE-WIDTH = w_MARM-WIDTH.

t_UNITSOFMEASUREx-WIDTH = 'X'.

endif.

if not w_MARM-HEIGHT is initial.

t_UNITSOFMEASURE-HEIGHT = w_MARM-HEIGHT.

t_UNITSOFMEASUREx-HEIGHT = 'X'.

endif.

if not w_MARM-UNIT_DIM is initial.

t_UNITSOFMEASURE-UNIT_DIM = w_MARM-UNIT_DIM.

t_UNITSOFMEASUREx-UNIT_DIM = 'X'.

endif.

if not w_MARM-GTIN_VARIANT is initial.

t_UNITSOFMEASURE-GTIN_VARIANT = w_MARM-GTIN_VARIANT.

t_UNITSOFMEASUREx-GTIN_VARIANT = 'X'.

endif.

append t_UNITSOFMEASURE.

append t_UNITSOFMEASUREx.

clear t_UNITSOFMEASURE.

clear t_UNITSOFMEASUREx.

endloop.

endform.

form set_TAX using l_matnr.

refresh t_TAXCLASSIFICATIONS.

clear t_TAXCLASSIFICATIONS.

loop at t_mlan into w_mlan where matnr = l_matnr .

t_TAXCLASSIFICATIONS-DEPCOUNTRY = w_mlan-DEPCOUNTRY .

t_TAXCLASSIFICATIONS-TAX_TYPE_1 = w_mlan-TAX_TYPE_1 .

t_TAXCLASSIFICATIONS-TAXCLASS_1 = w_mlan-TAXCLASS_1 .

t_TAXCLASSIFICATIONS-TAX_TYPE_2 = w_mlan-TAX_TYPE_2 .

t_TAXCLASSIFICATIONS-TAXCLASS_2 = w_mlan-TAXCLASS_2 .

t_TAXCLASSIFICATIONS-TAX_TYPE_3 = w_mlan-TAX_TYPE_3 .

t_TAXCLASSIFICATIONS-TAXCLASS_3 = w_mlan-TAXCLASS_3 .

t_TAXCLASSIFICATIONS-TAX_TYPE_4 = w_mlan-TAX_TYPE_4 .

t_TAXCLASSIFICATIONS-TAXCLASS_4 = w_mlan-TAXCLASS_4.

t_TAXCLASSIFICATIONS-TAX_TYPE_5 = w_mlan-TAX_TYPE_5 .

t_TAXCLASSIFICATIONS-TAXCLASS_5 = w_mlan-TAXCLASS_5 .

t_TAXCLASSIFICATIONS-TAX_TYPE_6 = w_mlan-TAX_TYPE_6 .

t_TAXCLASSIFICATIONS-TAXCLASS_6 = w_mlan-TAXCLASS_6 .

t_TAXCLASSIFICATIONS-TAX_TYPE_7 = w_mlan-TAX_TYPE_7 .

t_TAXCLASSIFICATIONS-TAXCLASS_7 = w_mlan-TAXCLASS_7 .

t_TAXCLASSIFICATIONS-TAX_TYPE_8 = w_mlan-TAX_TYPE_8 .

t_TAXCLASSIFICATIONS-TAXCLASS_8 = w_mlan-TAXCLASS_8 .

t_TAXCLASSIFICATIONS-TAX_TYPE_9 = w_mlan-TAX_TYPE_9 .

t_TAXCLASSIFICATIONS-TAXCLASS_9 = w_mlan-TAXCLASS_9 .

t_TAXCLASSIFICATIONS-TAX_IND = w_mlan-TAX_IND .

append t_TAXCLASSIFICATIONS.

endloop.

endform.

FORM SET_LONGTEXT using l_matnr.

REFRESH T_MATERIALLONGTEXT.

CLEAR T_MATERIALLONGTEXT.

loop at t_mltx into w_mltx where matnr = l_matnr .

T_MATERIALLONGTEXT-APPLOBJECT = 'MATERIAL'.

T_MATERIALLONGTEXT-TEXT_NAME = w_mltx-matnr.

T_MATERIALLONGTEXT-TEXT_ID = 'BEST'.

if w_mltx-LANGU = '' .

T_MATERIALLONGTEXT-LANGU = SY-LANGU.

else.

T_MATERIALLONGTEXT-LANGU = w_mltx-LANGU.

endif.

if w_mltx-FORMAT_COL = '' .

T_MATERIALLONGTEXT-FORMAT_COL = '*'.

else.

T_MATERIALLONGTEXT-FORMAT_COL = w_mltx-FORMAT_COL.

endif.

T_MATERIALLONGTEXT-TEXT_LINE = w_mltx-TEXT_LINE.

APPEND T_MATERIALLONGTEXT.

endloop.

ENDFORM.

&----


*& Form GETDATA

&----


  • text

----


  • -->P_W_MLAN text

  • <--P_T_MLAN text

----


FORM GETDATA USING VALUE(W_TAB)

CHANGING ptab TYPE standard TABLE.

  • loop at pt_line from 2.

loop at pt_line.

perform split_by_fieldname using pt_line-line W_TAB.

append W_TAB to ptab . clear W_TAB.

endloop.

ENDFORM. " GETDATA

form read_data_gsc using pi_name like rlgrap-filename

changing po_subrc.

data: str1 type string,str2 type string,

l_fname like rlgrap-filename.

TRANSLATE pi_name TO UPPER CASE.

SPLIT pi_name AT '.' INTO str1 str2.

CONCATENATE str1 '_HEAD.' str2 INTO l_fname.

refresh pt_line.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = l_fname

FILETYPE = 'ASC'

TABLES

DATA_TAB = pt_line

EXCEPTIONS

CONVERSION_ERROR = 1

INVALID_TABLE_WIDTH = 2

INVALID_TYPE = 3

NO_BATCH = 4

UNKNOWN_ERROR = 5

OTHERS = 6.

perform save_fieldname.

refresh pt_line.

CALL FUNCTION 'WS_UPLOAD'

EXPORTING

FILENAME = pi_name

FILETYPE = 'ASC'

TABLES

DATA_TAB = pt_line

EXCEPTIONS

CONVERSION_ERROR = 1

INVALID_TABLE_WIDTH = 2

INVALID_TYPE = 3

NO_BATCH = 4

UNKNOWN_ERROR = 5

OTHERS = 6.

endform.