Anda di halaman 1dari 10

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

*& Report Z_CREADICC


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT Z_CREADICC.
TYPE-POOLS truxs.
INCLUDE BDCRECXY.
*SELECTION-SCREEN SKIP.
selection-screen begin of block selection1 with frame title a1tipo.
parameters:
p_dom radiobutton group rad1,
p_elem radiobutton group rad1.
selection-screen end of block selection1.
selection-screen begin of block selection2 with frame title a1paqord.
parameters:
p_paq type c length 30 obligatory,
p_ord type c length 30 obligatory,
p_usu type c length 30 default sy-uname .
selection-screen end of block selection2.
SELECTION-SCREEN SKIP.
selection-screen begin of block selection3 with frame title a1arch.
selection-screen skip.
parameters p_file like rlgrap-filename obligatory.
selection-screen end of block selection3.
initialization.
perform selection_screen_text.
form selection_screen_text.
a1tipo
= 'Selecciona el tipo de objeto a crear.'.
a1paqord = 'Ingrese el paquete y la orden de transporte'.
a1arch
= 'Archivo excel debe tener cabecera y todas las columnas incluyendo
la MANDT'.
endform.
data: p_file_name type string,
p_fullpath type string,
error(255).
at SELECTION-SCREEN OUTPUT.
LOOP AT SCREEN.
IF screen-name = 'P_USU'.
screen-input = 0.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
at selection-screen on value-request for p_file.
*ESTA FUNCIN NOS AYUDA A UBICAR EL ARCHIVO COMO LO HARAMOS EN WINDOWS
CALL FUNCTION 'GUI_FILE_LOAD_DIALOG'
EXPORTING
WINDOW_TITLE = 'Selecciona el archivo a cargar#'
FILE_FILTER = ',*.XLS,*.xls.'

IMPORTING
FILENAME
= P_FILE_NAME
FULLPATH
= P_FULLPATH.
IF SY-SUBRC = 0.
p_file = P_FULLPATH.
ENDIF.
start-of-selection.
********************** REGION DECLARACION RESPECTO A DOMINIO *******************
*****************************
TYPES: BEGIN OF y_dominios,
campo
TYPE BDCDATA-FVAL,
descripcion TYPE BDCDATA-FVAL,
tipo_dato TYPE BDCDATA-FVAL,
longitud
TYPE BDCDATA-FVAL,
decimales TYPE BDCDATA-FVAL,
END OF y_dominios.
data t_dominios TYPE TABLE OF y_dominios WITH HEADER LINE.
DATA w_dominios TYPE y_dominios.
********************** REGION DECLARACION RESPECTO A ELEMENTOS *****************
*******************************
TYPES: BEGIN OF y_elementos,
elemento
TYPE BDCDATA-FVAL,
descripcion TYPE BDCDATA-FVAL,
dominio
TYPE BDCDATA-FVAL,
breve
TYPE BDCDATA-FVAL,
l_breve
TYPE BDCDATA-FVAL,
mediano
TYPE BDCDATA-FVAL,
l_mediano TYPE BDCDATA-FVAL,
largo
TYPE BDCDATA-FVAL,
l_largo
TYPE BDCDATA-FVAL,
cabecera
TYPE BDCDATA-FVAL,
l_cabecera TYPE BDCDATA-FVAL,
END OF y_elementos.
data t_elementos TYPE TABLE OF y_elementos WITH HEADER LINE.
DATA w_elementos TYPE y_elementos.
data: salida TYPE BDCDATA-FVAL, val_sal TYPE num, i_subrc TYPE i.
**********************************************************************.
********************** REGION DECLARACION RESPECTO A DOMINIO *******************
*****************************
DATA:
CTU type APQI-PUTACTIVE value 'X',
MODE type APQI-PUTACTIVE value 'N',
UPDATE type APQI-PUTACTIVE value 'L',
GROUP type APQI-GROUPID,
USER type APQI-USERID,
KEEP type APQI-QERASE,
HOLDDATE type APQI-STARTDATE,
NODATA type APQI-PUTACTIVE value '/',
DOMA_001 type BDCDATA-FVAL value 'X',
DOMA_VAL_002 type BDCDATA-FVAL,

DDTEXT_003 type BDCDATA-FVAL,


DATATYPE_004 type BDCDATA-FVAL,
LENG_005 type BDCDATA-FVAL,
DECIMALS_006 type BDCDATA-FVAL,
OUTPUTLEN_007 type BDCDATA-FVAL,
L_DEVCLASS_008 type BDCDATA-FVAL,
L_AUTHOR_009 type BDCDATA-FVAL,
TRKORR_010 type BDCDATA-FVAL,
DDTEXT_011 type BDCDATA-FVAL,
DATATYPE_012 type BDCDATA-FVAL,
LENG_013 type BDCDATA-FVAL,
DECIMALS_014 type BDCDATA-FVAL,
OUTPUTLEN_015 type BDCDATA-FVAL,
SUBRC LIKE SYST-SUBRC,
MESSTAB TYPE TABLE OF BDCMSGCOLL.
L_DEVCLASS_008 = p_paq.
L_AUTHOR_009 = p_usu.
TRKORR_010 = p_ord.
********************** REGION DECLARACION RESPECTO A ELEMENTOS *****************
*******************************
DATA:
*
*
*
*
*
*
*
*

CTU TYPE APQI-PUTACTIVE VALUE 'X',


MODE TYPE APQI-PUTACTIVE VALUE 'N',
UPDATE TYPE APQI-PUTACTIVE VALUE 'L',
GROUP TYPE APQI-GROUPID,
USER TYPE APQI-USERID,
KEEP TYPE APQI-QERASE,
HOLDDATE TYPE APQI-STARTDATE,
NODATA TYPE APQI-PUTACTIVE VALUE '/',
TBMA_VAL_001 TYPE BDCDATA-FVAL VALUE 'ZTBSD_CABECERA',
DDTYPE_002 TYPE BDCDATA-FVAL,
DDTYPE_VAL_003 TYPE BDCDATA-FVAL,
DOMA_VAL_004 TYPE BDCDATA-FVAL,
DTEL_005 TYPE BDCDATA-FVAL,
DDTEXT_006 TYPE BDCDATA-FVAL,
ELEM_007 TYPE BDCDATA-FVAL,
DOMAIN_008 TYPE BDCDATA-FVAL,
DOMNAME_009 TYPE BDCDATA-FVAL,
DDTEXT_010 TYPE BDCDATA-FVAL,
ELEM_011 TYPE BDCDATA-FVAL,
DOMAIN_012 TYPE BDCDATA-FVAL,
DOMNAME_013 TYPE BDCDATA-FVAL,
DDTEXT_014 TYPE BDCDATA-FVAL,
SCRTEXT_S_015 TYPE BDCDATA-FVAL,
SCRLEN1_016 TYPE BDCDATA-FVAL,
SCRTEXT_M_017 TYPE BDCDATA-FVAL,
SCRLEN2_018 TYPE BDCDATA-FVAL,
SCRTEXT_L_019 TYPE BDCDATA-FVAL,
SCRLEN3_020 TYPE BDCDATA-FVAL,
REPTEXT_021 TYPE BDCDATA-FVAL,
HEADLEN_022 TYPE BDCDATA-FVAL,
L_DEVCLASS_023 TYPE BDCDATA-FVAL,
L_AUTHOR_024 TYPE BDCDATA-FVAL,
TRKORR_025 TYPE BDCDATA-FVAL,
DDTEXT_026 TYPE BDCDATA-FVAL,

SCRTEXT_S_027 TYPE BDCDATA-FVAL,


SCRLEN1_028 TYPE BDCDATA-FVAL,
SCRTEXT_M_029 TYPE BDCDATA-FVAL,
SCRLEN2_030 TYPE BDCDATA-FVAL,
SCRTEXT_L_031 TYPE BDCDATA-FVAL,
SCRLEN3_032 TYPE BDCDATA-FVAL,
REPTEXT_033 TYPE BDCDATA-FVAL,
HEADLEN_034 TYPE BDCDATA-FVAL,
DDTEXT_035 TYPE BDCDATA-FVAL,
SCRTEXT_S_036 TYPE BDCDATA-FVAL,
SCRLEN1_037 TYPE BDCDATA-FVAL,
SCRTEXT_M_038 TYPE BDCDATA-FVAL,
SCRLEN2_039 TYPE BDCDATA-FVAL,
SCRTEXT_L_040 TYPE BDCDATA-FVAL,
SCRLEN3_041 TYPE BDCDATA-FVAL,
REPTEXT_042 TYPE BDCDATA-FVAL,
HEADLEN_043 TYPE BDCDATA-FVAL.
**********************************************************************
IF p_dom EQ 'X'.
PERFORM carga_xls_to_it.
LOOP AT t_dominios INTO w_dominios.
IF w_dominios-tipo_dato EQ 'CHAR'.
val_sal = w_dominios-longitud.
salida = val_sal.
ELSE.
val_sal = w_dominios-longitud + w_dominios-decimales + 2.
salida = val_sal.
ENDIF.
**********************************************************************
DOMA_VAL_002
DDTEXT_003
DATATYPE_004
LENG_005
DECIMALS_006
OUTPUTLEN_007
DDTEXT_011
DATATYPE_012
LENG_013
DECIMALS_014
OUTPUTLEN_015

=
=
=
=
=
=
=
=
=
=
=

w_dominios-campo."'ZRUTRECEP'
w_dominios-descripcion."'gggggg'
w_dominios-tipo_dato."'CHAR'
w_dominios-longitud."'
1'
w_dominios-decimales."'
1'
salida."'
1'
w_dominios-descripcion."'gggggg'
w_dominios-tipo_dato."'CHAR'
w_dominios-longitud."'
1'
w_dominios-decimales."'
1'
salida."'
1'

**********************************************************************
subrc = 0.
perform bdc_nodata

using NODATA.

perform open_group

using GROUP USER KEEP HOLDDATE CTU.

perform bdc_dynpro
perform bdc_field

using 'SAPMSRD0' '0102'.


using 'BDC_CURSOR'
'RSRD1-DOMA_VAL'.
using 'BDC_OKCODE'
'=ADD'.

perform bdc_field

perform bdc_field
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
perform
using

using 'RSRD1-DOMA'
DOMA_001.
bdc_field
using 'RSRD1-DOMA_VAL'
DOMA_VAL_002.
bdc_dynpro
using 'SAPLSD11' '1200'.
bdc_field
using 'BDC_OKCODE'
'=WB_SAVE'.
bdc_field
using 'DD01D-DDTEXT'
DDTEXT_003.
bdc_field
using 'BDC_CURSOR'
'DD01D-DECIMALS'.
bdc_field
using 'DD01D-DATATYPE'
DATATYPE_004.
bdc_field
using 'DD01D-LENG'
LENG_005.
bdc_field
using 'DD01D-DECIMALS'
DECIMALS_006.
bdc_field
using 'DD01D-OUTPUTLEN'
OUTPUTLEN_007.
bdc_dynpro
using 'SAPLSTRD' '0100'.
bdc_field
using 'BDC_CURSOR'
'KO007-L_DEVCLASS'.
bdc_field
using 'BDC_OKCODE'
'=ADD'.
bdc_field
using 'KO007-L_DEVCLASS'
L_DEVCLASS_008.
bdc_field
using 'KO007-L_AUTHOR'
L_AUTHOR_009.
bdc_dynpro
using 'SAPLSTRD' '0300'.
bdc_field
using 'BDC_CURSOR'
'KO008-TRKORR'.
bdc_field
using 'BDC_OKCODE'
'=LOCK'.
bdc_field
using 'KO008-TRKORR'
TRKORR_010.
bdc_dynpro
using 'SAPLSD11' '1200'.
bdc_field
using 'BDC_OKCODE'
'=WB_ACTIVATE'.
bdc_field
using 'DD01D-DDTEXT'
DDTEXT_011.
bdc_field
using 'BDC_CURSOR'
'DD01D-DECIMALS'.
bdc_field
using 'DD01D-DATATYPE'
DATATYPE_012.
bdc_field
using 'DD01D-LENG'
LENG_013.
bdc_field
using 'DD01D-DECIMALS'
DECIMALS_014.
bdc_field
using 'DD01D-OUTPUTLEN'
OUTPUTLEN_015.
bdc_dynpro
using 'SAPLSD11' '1200'.
bdc_field
using 'BDC_CURSOR'
'DD01D-DDTEXT'.
bdc_field
using 'BDC_OKCODE'
'=WB_BACK'.
bdc_transaction tables messtab
'SE11'
CTU
MODE
UPDATE.

if sy-subrc <> 0.
subrc = sy-subrc.
exit.
endif.
perform close_group using

CTU.

ENDLOOP.
ENDIF.
IF p_elem EQ 'X'.
PERFORM carga_xls_to_it.
LOOP AT t_elementos INTO w_elementos.
**********************************************************************
DDTYPE_VAL_003
= w_elementos-elemento.
DOMA_VAL_004
= w_elementos-dominio.
DDTEXT_006
= w_elementos-descripcion.".
DOMNAME_009
= w_elementos-dominio.".
DDTEXT_010
= w_elementos-descripcion.".
DOMNAME_013
= w_elementos-dominio."'ZRUTRECEP'.
DDTEXT_014
= w_elementos-descripcion."'hhhhhhh'.
SCRTEXT_S_015
= w_elementos-breve."'H'.
SCRLEN1_016
= w_elementos-l_breve."'10'.
SCRTEXT_M_017
= w_elementos-mediano."'HH'.
SCRLEN2_018
= w_elementos-l_mediano."'15'.
SCRTEXT_L_019
= w_elementos-largo."'HHH'.
SCRLEN3_020
= w_elementos-l_largo."'20'.
REPTEXT_021
= w_elementos-cabecera."'HHHH'.
HEADLEN_022
= w_elementos-l_cabecera."'15'.
DDTEXT_026
= w_elementos-descripcion."'hhhhhhh'.
SCRTEXT_S_027
= w_elementos-breve."'H'
SCRLEN1_028
= w_elementos-l_breve."'10'
SCRTEXT_M_029
= w_elementos-mediano."'HH'
SCRLEN2_030
= w_elementos-l_mediano."'15'
SCRTEXT_L_031
= w_elementos-largo."'HHH'
SCRLEN3_032
= w_elementos-l_largo."'20'
REPTEXT_033
= w_elementos-cabecera."'HHHH'
HEADLEN_034
= w_elementos-l_cabecera."'15'
*********************************************************************
DDTEXT_035
= w_elementos-descripcion."'hhhhhhh'
SCRTEXT_S_036
= w_elementos-breve."'H'
SCRLEN1_037
= w_elementos-l_breve."'10'
SCRTEXT_M_038
= w_elementos-mediano."'HH'
SCRLEN2_039
= w_elementos-l_mediano."'15'
SCRTEXT_L_040
= w_elementos-largo."'HHH'
SCRLEN3_041
= w_elementos-l_largo."'20'
REPTEXT_042
= w_elementos-cabecera."'HHHH'
HEADLEN_043
= w_elementos-l_cabecera."'15'
*********************************************************************
subrc = 0.
perform bdc_nodata

using NODATA.

perform open_group

using GROUP USER KEEP HOLDDATE CTU.

perform bdc_dynpro
perform bdc_field

using 'SAPMSRD0' '0102'.


using 'BDC_CURSOR'
'RSRD1-DDTYPE_VAL'.
using 'BDC_OKCODE'

perform bdc_field

perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field

'=ADD'.
using 'RSRD1-TBMA_VAL'
TBMA_VAL_001.
using 'RSRD1-DDTYPE'
DDTYPE_002.
using 'RSRD1-DDTYPE_VAL'
DDTYPE_VAL_003.
using 'RSRD1-DOMA_VAL'
DOMA_VAL_004.
using 'SAPLSED1' '0100'.
using 'BDC_CURSOR'
'D_100-DTEL'.
using 'BDC_OKCODE'
'=GOON'.
using 'D_100-DTEL'
DTEL_005.
using 'SAPLSD51' '1000'.
using 'BDC_OKCODE'
'=RET'.
using 'DD04D-DDTEXT'
DDTEXT_006.
using 'BDC_CURSOR'
'DD04D-DOMNAME'.
using 'RADIO-ELEM'
ELEM_007.
using 'RADIO-DOMAIN'
DOMAIN_008.
using 'DD04D-DOMNAME'
DOMNAME_009.
using 'SAPLSD51' '1000'.
using 'BDC_OKCODE'
'=TEXT'.
using 'DD04D-DDTEXT'
DDTEXT_010.
using 'BDC_CURSOR'
'DD04D-DOMNAME'.
using 'RADIO-ELEM'
ELEM_011.
using 'RADIO-DOMAIN'
DOMAIN_012.
using 'DD04D-DOMNAME'
DOMNAME_013.
using 'SAPLSD51' '1000'.
using 'BDC_OKCODE'
'=WB_SAVE'.
using 'DD04D-DDTEXT'
DDTEXT_014.
using 'BDC_CURSOR'
'DD04D-HEADLEN'.
using 'DD04D-SCRTEXT_S'
SCRTEXT_S_015.
using 'DD04D-SCRLEN1'
SCRLEN1_016.
using 'DD04D-SCRTEXT_M'
SCRTEXT_M_017.
using 'DD04D-SCRLEN2'
SCRLEN2_018.
using 'DD04D-SCRTEXT_L'
SCRTEXT_L_019.
using 'DD04D-SCRLEN3'

perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field
perform bdc_field

SCRLEN3_020.
using 'DD04D-REPTEXT'
REPTEXT_021.
using 'DD04D-HEADLEN'
HEADLEN_022.
using 'SAPLSTRD' '0100'.
using 'BDC_CURSOR'
'KO007-L_DEVCLASS'.
using 'BDC_OKCODE'
'=ADD'.
using 'KO007-L_DEVCLASS'
L_DEVCLASS_023.
using 'KO007-L_AUTHOR'
L_AUTHOR_024.
using 'SAPLSTRD' '0300'.
using 'BDC_CURSOR'
'KO008-TRKORR'.
using 'BDC_OKCODE'
'=LOCK'.
using 'KO008-TRKORR'
TRKORR_025.
using 'SAPLSD51' '1000'.
using 'BDC_CURSOR'
'DD04D-DDTEXT'.
using 'BDC_OKCODE'
'=WB_ACTIVATE'.
using 'DD04D-DDTEXT'
DDTEXT_026.
using 'DD04D-SCRTEXT_S'
SCRTEXT_S_027.
using 'DD04D-SCRLEN1'
SCRLEN1_028.
using 'DD04D-SCRTEXT_M'
SCRTEXT_M_029.
using 'DD04D-SCRLEN2'
SCRLEN2_030.
using 'DD04D-SCRTEXT_L'
SCRTEXT_L_031.
using 'DD04D-SCRLEN3'
SCRLEN3_032.
using 'DD04D-REPTEXT'
REPTEXT_033.
using 'DD04D-HEADLEN'
HEADLEN_034.
using 'SAPLSD51' '1000'.
using 'BDC_CURSOR'
'DD04D-DDTEXT'.
using 'BDC_OKCODE'
'=WB_BACK'.
using 'DD04D-DDTEXT'
DDTEXT_035.
using 'DD04D-SCRTEXT_S'
SCRTEXT_S_036.
using 'DD04D-SCRLEN1'
SCRLEN1_037.
using 'DD04D-SCRTEXT_M'
SCRTEXT_M_038.
using 'DD04D-SCRLEN2'
SCRLEN2_039.
using 'DD04D-SCRTEXT_L'

SCRTEXT_L_040.
using 'DD04D-SCRLEN3'
SCRLEN3_041.
perform bdc_field
using 'DD04D-REPTEXT'
REPTEXT_042.
perform bdc_field
using 'DD04D-HEADLEN'
HEADLEN_043.
perform bdc_dynpro
using 'SAPMSRD0' '0102'.
perform bdc_field
using 'BDC_CURSOR'
'RSRD1-DDTYPE_VAL'.
perform bdc_field
using 'BDC_OKCODE'
'=BACK'.
perform bdc_transaction tables messtab
using
'SE11'
CTU
MODE
UPDATE.
if sy-subrc <> 0.
subrc = sy-subrc.
exit.
endif.
perform bdc_field

perform close_group using


ENDLOOP.
ENDIF.

CTU.

**********************************************************************
form carga_xls_to_it.
DATA : it_raw TYPE truxs_t_text_data.
IF p_dom EQ 'X'.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
*
I_FIELD_SEPERATOR
=
I_LINE_HEADER
= 'X'
i_tab_raw_data
= it_raw
i_filename
= p_file
tables
i_tab_converted_data
= t_dominios
EXCEPTIONS
CONVERSION_FAILED
= 1
OTHERS
= 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
IF p_elem EQ 'X'.
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
*
I_FIELD_SEPERATOR
=
I_LINE_HEADER
= 'X'
i_tab_raw_data
= it_raw
i_filename
= p_file
tables
i_tab_converted_data
= t_elementos
EXCEPTIONS

CONVERSION_FAILED
= 1
OTHERS
= 2
.
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF.
ENDFORM.

Anda mungkin juga menyukai