Generate bapi report based on test data which one your saved in SE37.
Enjoy..
*&---------------------------------------------------------------------*
*& Report ZBAPI_AUTO_CREATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zbapi_auto_create.
**
*& Declaration part
**
TABLES : eufunc,rs38l,tfdir.
TYPES: BEGIN OF lty_eufunc,
gruppe TYPE eufunc-gruppe,
name TYPE eufunc-name,
nummer TYPE eufunc-nummer,
seqid TYPE eufunc-seqid,
srtf2 TYPE eufunc-srtf2,
datum TYPE eufunc-datum,
zeit TYPE eufunc-zeit,
END OF lty_eufunc,
BEGIN OF lty_param_all, " Catch Parameter into single table.
param(30) TYPE c, "Parameter Name
struct(30) TYPE c, "Parameter Structure or vaiable
t_field(30) TYPE c, "Table field Name
t_t_fie(20) TYPE c, "TAble Text Field
t_f_le(6) TYPE c, "Table Field length
t_f_de(6) TYPE c, "Table Field Decimal point
t_f_dt(10) TYPE c, "Table Field Data Type
t_f_inty(30) TYPE c, "table field initial TYPE
t_f_inle(30) TYPE c, "table field initial length
t_f_dl(5) TYPE c, "table field decimal length
t_f_indx(5) TYPE c, "table INDEX
t_f_po(5) TYPE c, "Table field positon
v_field(100) TYPE c, "value field Flag
v_f_po(5) TYPE c, "value field positon
v_f_le(6) TYPE c, "Value Field length
field_f(2) TYPE c, "Parameters From (Import,export,etc..)
END OF lty_param_all.
TYPES : BEGIN OF lty_alv,
param(30) TYPE c,
field(30) TYPE c,
c_field(30) TYPE c,
value(100) TYPE c,
slect(100) TYPE c,
table TYPE c,
h_code TYPE c,
file TYPE c,
icon TYPE icon_d,
message TYPE char200,
f_style TYPE lvc_t_styl,
t_table TYPE tabname,
t_field TYPE fieldname,
t_cond TYPE char100,
index TYPE i,
lenght TYPE char10,
END OF lty_alv,
BEGIN OF ty_tabname,
tabname TYPE dd03l-tabname,
END OF ty_tabname.
DATA : lt_alv TYPE TABLE OF lty_alv,
ls_alv TYPE lty_alv,
lt_fcat TYPE lvc_t_fcat ,"slis_t_fieldcat_alv,
ls_fcat TYPE lvc_s_fcat,"slis_fieldcat_alv,
ls_lay TYPE lvc_s_layo, " slis_layout_alv ,
lt_o_file TYPE TABLE OF lty_alv,
lt_o_file1 TYPE TABLE OF lty_alv,
lt_o_file2 TYPE TABLE OF lty_alv,
ls_o_file TYPE lty_alv,
ls_o_file1 TYPE lty_alv,
lt_evts TYPE slis_t_event,
la_evts LIKE LINE OF lt_evts.
DATA : lt_parame TYPE TABLE OF lty_param_all,
lt_parame_temp TYPE TABLE OF lty_param_all,
ls_parame_temp TYPE lty_param_all,
ls_parame TYPE lty_param_all,
lv_parameter(30) TYPE c,
ls_parame_inx TYPE i.
DATA : lt_b_lines TYPE TABLE OF tdline,
ls_b_lines TYPE tdline.
DATA : lv_field TYPE c, " parameter type From (Import,export,etc..)
lv_s_fil(30) TYPE c . " Structure
DATA : lt_eufunc TYPE TABLE OF lty_eufunc,
ls_eufunc TYPE lty_eufunc.
DATA : lt_source TYPE rswsourcet.
DATA : lv_source LIKE LINE OF lt_source.
DATA : lt_source_var TYPE rswsourcet.
DATA : lv_source_var LIKE LINE OF lt_source_var.
DATA : lv_source_var1 TYPE char8 .
DATA : lt_subro TYPE rswsourcet.
DATA : lv_subro LIKE LINE OF lt_subro.
DATA : lt_source_code TYPE rswsourcet.
DATA : lv_source_code LIKE LINE OF lt_source_var.
DATA : lt_final_code TYPE rswsourcet.
DATA : lv_final_code LIKE LINE OF lt_final_code.
DATA : lt_final_code_reduced TYPE rswsourcet.
DATA : lv_final_code_reduced LIKE LINE OF lt_final_code.
DATA ls_stylerow TYPE lvc_s_styl .
DATA lt_styletab TYPE lvc_t_styl .
* Importing Parameters
DATA: BEGIN OF if_import OCCURS 15.
INCLUDE STRUCTURE rsimp.
DATA: END OF if_import.
* Changing Parameters
DATA: BEGIN OF if_change OCCURS 15.
INCLUDE STRUCTURE rscha.
DATA: END OF if_change.
* Exporting parameters
DATA: BEGIN OF if_export OCCURS 15.
INCLUDE STRUCTURE rsexp.
DATA: END OF if_export.
* tables parameters
DATA: BEGIN OF if_tables OCCURS 15.
INCLUDE STRUCTURE rstbl.
DATA: END OF if_tables.
* Exception
DATA: BEGIN OF if_except OCCURS 15.
INCLUDE STRUCTURE rsexc.
DATA: END OF if_except.
DATA: BEGIN OF param_docu OCCURS 10.
INCLUDE STRUCTURE rsfdo.
DATA: END OF param_docu.
DATA: BEGIN OF lt_param OCCURS 10.
INCLUDE STRUCTURE rsimp.
DATA: END OF lt_param.
DATA: it_dd03l TYPE TABLE OF dd03l,
ls_dd03l TYPE dd03l.
DATA: it_dd03l_temp TYPE TABLE OF dd03l,
ls_dd03l_temp TYPE dd03l.
DATA : lt_tabname TYPE TABLE OF ty_tabname,
ls_tabname TYPE ty_tabname.
DATA : lt_tabname_temp TYPE TABLE OF ty_tabname,
ls_tabname_temp TYPE ty_tabname.
DATA: it_dd03m TYPE TABLE OF dd03m,
ls_dd03m TYPE dd03m.
DATA: param_value(220),
o_param_value LIKE param_value,
result_text(250),
para TYPE rs38l-importing ,
d_type .
DATA : g_testprog LIKE trdir-name.
DATA : d102n_exportkey LIKE functdir.
DATA : lv_var_name TYPE string.
DATA : split1(30) TYPE c,
split2(30) TYPE c.
DATA:p_table TYPE w_tabname,
wf_ref TYPE REF TO data,
wf_ref1 TYPE REF TO data.
DATA : lv_r_time TYPE c VALUE 1,
lv_alv_c TYPE i VALUE 1.
DATA : index TYPE i,
index1 TYPE i,
lv_count TYPE i.
DATA : lt_lcont TYPE TABLE OF swcont ,
ls_lcont TYPE swcont,
lv_para TYPE tabname,
ls_lcont_index TYPE i VALUE 1.
* lv_count TYPE i.
DATA : lt_table_s TYPE lvc_t_fcat ,
lt_table_s_temp TYPE lvc_t_fcat ,
ls_table_s TYPE lvc_s_fcat ,
ls_table_s_temp TYPE lvc_s_fcat ,
lv_s_name TYPE REF TO data,
lv_length TYPE i,
lv_str TYPE string.
DATA : lv_ans VALUE 1,
lv_qus TYPE string.
**********************se38 bdc
DATA : bdc_count TYPE string VALUE 1,
bdc_edi_count TYPE string VALUE 1,
flag TYPE c.
DATA : count TYPE string,
it_line TYPE TABLE OF tdline,
* temp_it_line TYPE TABLE OF tdline,
wa_line TYPE tdline,
data(30) TYPE c.
DATA : it_bdc TYPE TABLE OF bdcdata,
wa_bdc TYPE bdcdata.
**********************se38 bdc
**************************************************
*Get Structure
FIELD-SYMBOLS :<value> TYPE STANDARD TABLE,
<wa_value> TYPE any,
<field> TYPE any,
<field_val> TYPE any.
DATA : lv_file_path TYPE string ,"rlgrap-filename ,
lv_par_index TYPE i.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_func LIKE rs38l-name ,
p_alv AS CHECKBOX DEFAULT abap_true ,
p_file AS CHECKBOX DEFAULT abap_true ,
p_test AS CHECKBOX USER-COMMAND b1,
p_tfil TYPE eufunc-nummer,
p_loop RADIOBUTTON GROUP rb1,
p_loop1 RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF BLOCK b1 .
SELECTION-SCREEN BEGIN OF SCREEN 2007 .
PARAMETER : p_prgm TYPE trdir-name.
SELECTION-SCREEN END OF SCREEN 2007.
*F4 Help for FM Names
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_func .
PERFORM f4_help.
*F4 Help for FM Test run data
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_tfil .
PERFORM f4_help1.
AT SELECTION-SCREEN OUTPUT.
PERFORM screen_control.
START-OF-SELECTION.
* Bapi Get Structure
PERFORM get_bapi_structure.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form F4_HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f4_help .
CALL FUNCTION 'RS_HELP_HANDLING'
EXPORTING
dynpfield = 'P_FUNC'
dynpname = sy-dynnr
object = 'FB'
progname = 'Z_RMTIWARI_CODE_FOR_FUNCTION'
* 'SAPMS38L'
suppress_selection_screen = sy-input.
ENDFORM. " F4_HELP
*&---------------------------------------------------------------------*
*& Form SCREEN_CONTROL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM screen_control .
LOOP AT SCREEN.
IF p_test = abap_false.
IF screen-name = 'P_TFIL' OR screen-name = '%_P_TFIL_%_APP_%-TEXT'.
screen-active = '0'.
screen-invisible = '0'.
ENDIF.
IF screen-name = 'P_LOOP' OR screen-name = '%_P_LOOP_%_APP_%-TEXT'.
screen-active = '0'.
screen-invisible = '0'.
ENDIF.
IF screen-name = 'P_LOOP1' OR screen-name = '%_P_LOOP1_%_APP_%-TEXT'.
screen-active = '0'.
screen-invisible = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. " SCREEN_CONTROL
*&---------------------------------------------------------------------*
*& Form Get_Bapi_Structure
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_bapi_structure .
*Getting Function module Parametes .....
PERFORM fu_import_interface_ext(sapms38l)
TABLES if_import
if_change
if_export
if_tables
if_except
param_docu
USING p_func.
* BREAK-POINT.
*Collectining the Fields Based on structure From (Import,Export,etc..)
PERFORM get_all_fields.
* Bapi get value
PERFORM get_bapi_values.
IF p_file = abap_true.
* Get input file
PERFORM get_file.
PERFORM get_declaration_part.
lv_source_code = 'LOOP AT lt_file INTO ls_file .' .
APPEND lv_source_code TO lt_source_code.
CLEAR lv_source_code.
APPEND lv_source_code TO lt_source_code.
ENDIF.
CALL FUNCTION 'FUNCTION_STUB_GENERATE'
EXPORTING
funcname = p_func
ic_mode = 'X'
TABLES
source = lt_source
EXCEPTIONS
function_not_exist = 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.
FIELD-SYMBOLS: <fs> TYPE any.
DATA: lv_string TYPE string.
DATA: lv_search_string TYPE string.
LOOP AT lt_source INTO lv_source.
SEARCH lv_source FOR ' EXCEPTIONS'.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
SEARCH lv_source FOR ' = '.
CHECK sy-subrc EQ 0.
LOOP AT if_import.
CLEAR ls_parame.
READ TABLE lt_parame INTO ls_parame WITH KEY param = if_import-parameter.
CHECK sy-subrc = 0 .
CONCATENATE '.' if_import-parameter '.' INTO lv_search_string
SEPARATED BY space.
SEARCH lv_source FOR lv_search_string .
IF sy-subrc EQ 0.
CONCATENATE '= lv_' if_import-parameter INTO lv_var_name.
PERFORM split_fm_variable.
* REPLACE '=' WITH lv_var_name INTO lv_source.
MODIFY lt_source FROM lv_source.
REPLACE '= lv_' WITH 'DATA: lv_' INTO lv_var_name.
IF NOT if_import-dbfield IS INITIAL.
CONCATENATE lv_var_name 'TYPE' if_import-dbfield '.'
INTO lv_source_var SEPARATED BY space.
ELSEIF if_import-typ IS INITIAL.
CONCATENATE lv_var_name 'TYPE'
'C' '.'
INTO lv_source_var SEPARATED BY space.
ELSE.
CONCATENATE lv_var_name 'TYPE'
if_import-typ '.'
INTO lv_source_var SEPARATED BY space.
ENDIF.
APPEND lv_source_var TO lt_source_var.
IF if_import-default IS INITIAL.
* CONCATENATE '* lv_' if_import-parameter ' = '
* INTO lv_source_code.
CLEAR ls_parame.
lv_parameter = if_import-parameter .
PERFORM get_prameters.
* CONCATENATE '* lv_' if_import-parameter ' = '
* INTO lv_source_code.
ELSE.
CONCATENATE '* lv_' if_import-parameter ' = '
if_import-default '.'
INTO lv_source_code.
ENDIF.
* APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
APPEND lv_source_code TO lt_source_code.
lt_param-parameter = if_import-parameter.
lt_param-dbfield = if_import-dbfield.
lt_param-typ = if_import-typ.
APPEND lt_param.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT if_export.
CLEAR ls_parame.
READ TABLE lt_parame INTO ls_parame WITH KEY param = if_export-parameter.
CHECK sy-subrc = 0 .
CONCATENATE '.' if_export-parameter '.' INTO lv_search_string
SEPARATED BY space.
SEARCH lv_source FOR lv_search_string .
IF sy-subrc EQ 0.
CONCATENATE '= lv_' if_export-parameter INTO lv_var_name.
* REPLACE '=' WITH lv_var_name INTO lv_source.
PERFORM split_fm_variable.
MODIFY lt_source FROM lv_source.
REPLACE '= lv_' WITH 'DATA: lv_' INTO lv_var_name.
IF NOT if_export-dbfield IS INITIAL.
CONCATENATE lv_var_name 'TYPE' if_export-dbfield '.'
INTO lv_source_var SEPARATED BY space.
ELSEIF if_export-typ IS INITIAL.
CONCATENATE lv_var_name 'TYPE'
'C' '.'
INTO lv_source_var SEPARATED BY space.
ELSE.
CONCATENATE lv_var_name 'TYPE'
if_export-typ '.'
INTO lv_source_var SEPARATED BY space.
ENDIF.
APPEND lv_source_var TO lt_source_var.
IF if_export-parameter IS INITIAL.
* CONCATENATE '* lv_' if_import-parameter ' = '
* INTO lv_source_code.
CLEAR ls_parame.
lv_parameter = if_export-parameter .
PERFORM get_prameters.
* CONCATENATE '* lv_' if_export-parameter ' = '
* INTO lv_source_code.
* ELSE.
* CONCATENATE '* lv_' if_export-parameter ' = '
* if_export-default '.'
* INTO lv_source_code.
ENDIF.
* APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
APPEND lv_source_code TO lt_source_code.
lt_param-parameter = if_export-parameter.
lt_param-dbfield = if_export-dbfield.
lt_param-typ = if_export-typ.
APPEND lt_param.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT if_change.
CLEAR ls_parame.
READ TABLE lt_parame INTO ls_parame WITH KEY param = if_change-parameter.
CHECK sy-subrc = 0 .
CONCATENATE '.' if_change-parameter '.' INTO lv_search_string
SEPARATED BY space.
SEARCH lv_source FOR lv_search_string .
IF sy-subrc EQ 0.
CONCATENATE '= lv_' if_change-parameter INTO lv_var_name.
* REPLACE '=' WITH lv_var_name INTO lv_source.
PERFORM split_fm_variable.
MODIFY lt_source FROM lv_source.
REPLACE '= lv_' WITH 'DATA: lv_' INTO lv_var_name.
IF NOT if_change-dbfield IS INITIAL.
CONCATENATE lv_var_name 'TYPE' if_change-dbfield '.'
INTO lv_source_var SEPARATED BY space.
ELSEIF if_change-typ IS INITIAL.
CONCATENATE lv_var_name 'TYPE'
'C' '.'
INTO lv_source_var SEPARATED BY space.
ELSE.
CONCATENATE lv_var_name 'TYPE'
if_change-typ '.'
INTO lv_source_var SEPARATED BY space.
ENDIF.
APPEND lv_source_var TO lt_source_var.
* CONCATENATE '* lv_' if_change-parameter ' = '
* if_change-default
* INTO lv_source_code.
lv_parameter = if_change-parameter .
PERFORM get_prameters.
* APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
APPEND lv_source_code TO lt_source_code.
lt_param-parameter = if_change-parameter.
lt_param-dbfield = if_change-dbfield.
lt_param-typ = if_change-typ.
APPEND lt_param.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT if_tables.
CLEAR ls_parame.
READ TABLE lt_parame INTO ls_parame WITH KEY param = if_tables-parameter.
CHECK sy-subrc = 0 .
CONCATENATE '.' if_tables-parameter '.' INTO lv_search_string
SEPARATED BY space.
SEARCH lv_source FOR lv_search_string .
IF sy-subrc EQ 0.
CONCATENATE '= lt_' if_tables-parameter INTO lv_var_name.
* REPLACE '=' WITH lv_var_name INTO lv_source.
PERFORM split_fm_variable.
MODIFY lt_source FROM lv_source.
REPLACE '= lt_' WITH 'DATA: lt_' INTO lv_var_name.
IF NOT if_tables-dbstruct IS INITIAL.
CONCATENATE lv_var_name 'TYPE standard table of '
if_tables-dbstruct '.'
INTO lv_source_var SEPARATED BY space.
ELSEIF if_tables-typ IS INITIAL.
CONCATENATE lv_var_name 'TYPE standard table of '
'char255' '.'
INTO lv_source_var SEPARATED BY space.
ELSE.
CONCATENATE lv_var_name 'TYPE'
if_tables-typ '.'
INTO lv_source_var SEPARATED BY space.
ENDIF.
APPEND lv_source_var TO lt_source_var.
CONCATENATE 'DATA: wa_' if_tables-parameter space
' LIKE LINE OF lt_' if_tables-parameter '.'
INTO lv_source_var.
APPEND lv_source_var TO lt_source_var.
* Get struture fields.
** IF p_file = abap_false.
**
**
** DATA : lt_dfies_tab TYPE STANDARD TABLE OF dfies WITH HEADER LINE.
** DATA : lv_tabname TYPE ddobjname.
**
** lv_tabname = if_tables-dbstruct.
**
** CALL FUNCTION 'DDIF_FIELDINFO_GET'
** EXPORTING
** tabname = lv_tabname
*** FIELDNAME = ' '
*** LANGU = SY-LANGU
*** LFIELDNAME = ' '
*** ALL_TYPES = ' '
*** GROUP_NAMES = ' '
*** IMPORTING
*** X030L_WA =
*** DDOBJTYPE =
*** DFIES_WA =
*** LINES_DESCR =
** TABLES
** dfies_tab = lt_dfies_tab
*** FIXED_VALUES =
** EXCEPTIONS
** not_found = 1
** internal_error = 2
** OTHERS = 3
** .
** 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 lt_dfies_tab[] IS INITIAL.
**
** CONCATENATE '* wa_' if_tables-parameter ' = '
** INTO lv_source_code.
**
** APPEND lv_source_code TO lt_source_code.
**
** ELSE.
** LOOP AT lt_dfies_tab.
**
** CONCATENATE '* wa_' if_tables-parameter '-'
** lt_dfies_tab-fieldname ' = '
** INTO lv_source_code.
**
** APPEND lv_source_code TO lt_source_code.
** ENDLOOP.
** ENDIF.
** endif.
*BREAK-POINT.
lv_parameter = if_tables-parameter .
lt_parame_temp = lt_parame.
DELETE lt_parame_temp WHERE param <> ls_parame-param.
SORT lt_parame_temp BY t_f_indx DESCENDING.
READ TABLE lt_parame_temp INTO ls_parame_temp INDEX 1.
CLEAR lv_par_index.
lv_par_index = 1.
DO ls_parame_temp-t_f_indx TIMES.
PERFORM get_prameters.
lv_par_index = lv_par_index + lv_par_index.
CONCATENATE ' APPEND wa_' if_tables-parameter ' to '
' lt_' if_tables-parameter '.'
INTO lv_source_code.
APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
CONCATENATE ' CLEAR wa_' if_tables-parameter '. '
INTO lv_source_code.
APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
ENDDO.
CLEAR lv_par_index.
* ENDLOOP.
* ENDIF.
APPEND lv_source_code TO lt_source_code.
EXIT.
ENDIF.
ENDLOOP.
ENDLOOP.
LOOP AT lt_source_var INTO lv_source_var.
PERFORM write_to_final.
ENDLOOP.
APPEND INITIAL LINE TO lt_final_code.
APPEND INITIAL LINE TO lt_final_code_reduced.
*** WRITE : /.
IF p_loop1 = abap_true AND p_file = abap_true..
CLEAR lv_source_code.
APPEND lv_source_code TO lt_source_code.
lv_source_code = 'ENDLOOP.'.
APPEND lv_source_code TO lt_source_code.
CLEAR lv_source_code.
ENDIF.
LOOP AT lt_source_code INTO lv_source_code.
*** WRITE : / lv_source_code.
* IF P_TESTD is initial.
* APPEND lv_source_code to lt_final_code.
*
* ELSE.
APPEND lv_source_code TO lt_final_code_reduced.
* ENDIF.
ENDLOOP.
*** WRITE : /.
* LOOP AT lt_test_code into lv_test_code.
* WRITE : / lv_test_code.
* IF NOT P_TESTD is initial.
* APPEND lv_test_code to lt_final_code.
*
* ENDIF.
* ENDLOOP.
LOOP AT lt_source INTO lv_source.
* REPLACE '"' WITH '*' INTO lv_source.
REPLACE '"' WITH ' ' INTO lv_source.
MODIFY lt_source FROM lv_source.
SPLIT lv_source AT '=' INTO split1 split2.
CLEAR ls_parame.
SHIFT split1 LEFT DELETING LEADING space.
READ TABLE lt_parame INTO ls_parame WITH KEY param = split1.
IF sy-subrc = 0 .
****** WRITE : / lv_source.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
ELSEIF split1 = 'EXPORTING' OR
split1 = 'IMPORTING' OR
split1 = 'CHANGING' OR
split1 = 'TABLES'.
READ TABLE lt_parame INTO ls_parame WITH KEY field_f = split1+0(1).
CHECK sy-subrc = 0 .
****** WRITE : / lv_source.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
ENDIF.
IF split1+0(13) = 'CALL FUNCTION'.
*** WRITE : / lv_source.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
ENDIF.
ENDLOOP.
lv_source = '.'.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
CLEAR lv_source.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
lv_source = 'CALL FUNCTION' .
CONCATENATE lv_source '''BAPI_TRANSACTION_COMMIT''' INTO lv_source SEPARATED BY space.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
lv_source = 'EXPORTING'.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
lv_source = ' wait = ABAP_TRUE .' .
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
* Each record need separate record
IF p_loop = abap_true AND p_file = abap_true..
CLEAR lv_source_var.
PERFORM write_to_final.
lv_source_var = 'ENDLOOP.'.
PERFORM write_to_final.
ENDIF.
LOOP AT lt_subro INTO lv_source_var.
PERFORM write_to_final.
ENDLOOP.
* DATA : lv_trdir_l TYPE trdir,
* lv_trdir_r TYPE trdir.
IF p_file = abap_true .
CALL SELECTION-SCREEN 2007 STARTING AT 5 10
ENDING AT 75 15.
IF p_prgm IS INITIAL.
ELSE.
PERFORM get_program.
ENDIF.
ENDIF.
*Program Writing
PERFORM insert_prg.
** CALL FUNCTION 'RS_EDTR_SPLIT_SCREEN_EDIT'
** EXPORTING
*** START_WITH_COMPARE = ' '
** display_l = 'X'
** display_r = 'X'
*** MOD_ENABLED_L = 'X'
*** MOD_ENABLED_R = 'X'
*** TEXT_L =
*** TEXT_R =
*** STATE_L =
*** STATE_R =
*** OBJECT_TYPE_L = ' '
*** OBJECT_TYPE_R = ' '
*** TRANSPORT_KEY_L =
*** TRANSPORT_KEY_R =
*** KORRNUM_L =
*** KORRNUM_R =
*** FLG_EXTENSION_CALL = ' '
*** FLG_INACT_ENABLED = ' '
** trdir_wa_l = lv_trdir_l
** trdir_wa_r = lv_trdir_r
*** SMALL_SCREEN = ' '
*** FLG_WITHOUT_DISPLAY = ' '
*** FLG_WITHOUT_INIT_CUS = ' '
*** FLG_TMP_STOR_COMP = ' '
*** FLG_REMOTE_R = ' '
*** IMPORTING
*** COMPARE_RESULT =
** TABLES
** source_l = lt_final_code
** source_r = lt_final_code_reduced
*** LINEINDEX_L =
*** LINEINDEX_R =
*** EXCEPTIONS
*** PARAMETER_INVALID = 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.
ENDFORM. " BAPI
*&---------------------------------------------------------------------*
*& Form F4_HELP1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f4_help1 .
TYPES:
BEGIN OF lty_final ,
p_tfil TYPE eufunc-nummer,
datum TYPE eufunc-datum,
zeit TYPE eufunc-zeit,
seqid TYPE eufunc-seqid,
END OF lty_final.
DATA : lt_dynf TYPE TABLE OF dynpread,
ls_dynf TYPE dynpread.
DATA : lt_final TYPE TABLE OF lty_final,
ls_final TYPE lty_final.
DATA : lt_map TYPE TABLE OF dselc ,
lt_return_tab TYPE TABLE OF ddshretval,
ls_map TYPE dselc .
ls_dynf-fieldname = 'P_FUNC '.
APPEND ls_dynf TO lt_dynf.
*Getting Screen Filed Value For Function name
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynf.
*Fetching Relavent test data for the Funtion Module
IF lt_dynf IS INITIAL.
ELSE.
READ TABLE lt_dynf INTO ls_dynf INDEX 1.
IF sy-subrc = 0.
SELECT gruppe
name
nummer
seqid
srtf2
datum
zeit FROM eufunc INTO TABLE lt_eufunc WHERE name = ls_dynf-fieldvalue .
IF sy-subrc = 0.
*deleting inactive data ....
DELETE lt_eufunc WHERE nummer = ''.
DELETE lt_eufunc WHERE nummer = 999.
ENDIF.
ENDIF.
ENDIF.
***********
* READ TABLE lt_eufunc INTO ls_eufunc INDEX 1.
* d102n_exportkey-area = ls_eufunc-gruppe ."'STXD'.
* d102n_exportkey-progid = p_func .
* d102n_exportkey-dataid = 999 ."p_tfil .
* d102n_exportkey-seqid = ls_eufunc-seqid .
* CATCH SYSTEM-EXCEPTIONS conne_import_wrong_comp_type = 1.
* IMPORT lt_final
* FROM DATABASE eufunc(FL) ID d102n_exportkey.
* endcatch.
*Move data to final table
LOOP AT lt_eufunc INTO ls_eufunc.
ls_final-p_tfil = ls_eufunc-nummer.
ls_final-datum = ls_eufunc-datum .
ls_final-zeit = ls_eufunc-zeit .
ls_final-seqid = ls_eufunc-seqid .
APPEND ls_final TO lt_final.
CLEAR ls_final.
ENDLOOP.
*Mapping Sceen filed
ls_map-dyfldname = 'P_TFIL'.
ls_map-fldname = 'F0001'.
APPEND ls_map TO lt_map.
CLEAR ls_map.
*Calling F4 function module
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'P_TFIL'"lv_retfield
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_TFIL'
value_org = 'S'
TABLES
value_tab = lt_final
return_tab = lt_return_tab
dynpfld_mapping = lt_map
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " F4_HELP1
*&---------------------------------------------------------------------*
*& Form GET_BAPI_VALUES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_bapi_values .
*Start of Creating Program Name
CLEAR tfdir.
SELECT SINGLE * FROM tfdir WHERE funcname = p_func.
CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT'
EXPORTING
program = tfdir-pname
IMPORTING
namespace = rs38l-namespace
group = rs38l-str_area
EXCEPTIONS
OTHERS = 6.
IF sy-subrc NE 0.
* message s110 with fname.
LEAVE. "Funktion existiert nicht
ENDIF.
CONCATENATE rs38l-namespace rs38l-str_area INTO rs38l-area.
g_testprog = p_func.
TRANSLATE g_testprog USING ' ='.
g_testprog+30 = 'FT'.
*end of Creating Program Name
REFRESH lt_eufunc.
SELECT gruppe
name
nummer
seqid
srtf2
datum
zeit FROM eufunc INTO TABLE lt_eufunc WHERE name = p_func.
IF sy-subrc = 0.
*deleting inactive data ....
DELETE lt_eufunc WHERE nummer = ''.
DELETE lt_eufunc WHERE nummer = 999.
ENDIF.
*Creating Key fields
READ TABLE lt_eufunc INTO ls_eufunc INDEX 1.
IF sy-subrc = 0.
d102n_exportkey-area = ls_eufunc-gruppe ."'STXD'.
d102n_exportkey-progid = p_func .
d102n_exportkey-dataid = p_tfil .
d102n_exportkey-seqid = ls_eufunc-seqid . "'S'.
ENDIF.
*Import
LOOP AT if_import.
para = if_import-parameter.
lv_s_fil = if_import-dbfield .
lv_field = 'E'. "Import parameter
PERFORM get_values_based_on_structure.
ENDLOOP.
*Export
LOOP AT if_export.
para = if_export-parameter.
lv_s_fil = if_export-dbfield .
lv_field = 'I'. "Exportparameter
PERFORM get_values_based_on_structure.
ENDLOOP.
*Changing
LOOP AT if_change.
para = if_change-parameter.
lv_s_fil = if_change-dbfield .
lv_field = 'C'. "Changing parameter
PERFORM get_values_based_on_structure.
ENDLOOP.
*Tables
LOOP AT if_tables.
CHECK :if_tables-parameter <> 'RETURN',
if_tables-parameter <> 'EXTENSIONIN',
if_tables-parameter <> 'EXTENSIONOUT'.
para = if_tables-parameter.
lv_s_fil = if_tables-dbstruct .
lv_field = 'T'. "Tables parameter
PERFORM get_values_based_on_structure.
ENDLOOP.
*Deleting Return Table parameters
DELETE lt_parame WHERE param = 'RETURN'.
IF p_test = abap_true.
DELETE lt_parame WHERE v_field = ' '.
ENDIF.
ENDFORM. " GET_BAPI_VALUES
*&---------------------------------------------------------------------*
*& Form GET_ALL_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_all_fields .
*Import Parameters
LOOP AT if_import.
ls_tabname-tabname = if_import-dbfield.
APPEND ls_tabname TO lt_tabname.
CLEAR ls_tabname.
ENDLOOP.
*if_change Parameters
LOOP AT if_change.
ls_tabname-tabname = if_change-dbfield.
APPEND ls_tabname TO lt_tabname.
CLEAR ls_tabname.
ENDLOOP.
*if_export Parameters
LOOP AT if_export.
ls_tabname-tabname = if_export-dbfield.
APPEND ls_tabname TO lt_tabname.
CLEAR ls_tabname.
ENDLOOP.
*if_tables Parameters
LOOP AT if_tables.
ls_tabname-tabname = if_tables-dbstruct.
APPEND ls_tabname TO lt_tabname.
CLEAR ls_tabname.
ENDLOOP.
IF lt_tabname IS NOT INITIAL.
SELECT * FROM dd03l INTO TABLE it_dd03l
FOR ALL ENTRIES IN lt_tabname
WHERE tabname = lt_tabname-tabname.
SELECT * FROM dd03m INTO TABLE it_dd03m
FOR ALL ENTRIES IN lt_tabname
WHERE tabname = lt_tabname-tabname AND
ddlanguage = 'E'.
DELETE it_dd03m WHERE scrtext_m = 'Updated Info'.
SORT it_dd03m BY intlen.
ENDIF.
ENDFORM. " GET_ALL_FIELDS
*&---------------------------------------------------------------------*
*& Form GET_VALUES_BASED_ON_STRUCTURE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_values_based_on_structure .
IF p_test = abap_true.
CHECK lv_s_fil IS NOT INITIAL.
p_table = lv_s_fil .
CREATE DATA wf_ref TYPE TABLE OF (p_table) .
ASSIGN wf_ref->* TO <value> .
CREATE DATA wf_ref1 LIKE LINE OF <value>.
ASSIGN wf_ref1->* TO <wa_value>.
IF lv_field = 'T'.
* PERFORM parameter_read_input IN PROGRAM (g_testprog) USING para
* d102n_exportkey
* CHANGING <value> .
IF lv_r_time = 1.
PERFORM export_import IN PROGRAM (g_testprog) USING 'II' d102n_exportkey.
* PERFORM export_import IN PROGRAM (g_testprog) USING 'IV' d102n_exportkey.
* PERFORM function_call IN PROGRAM (g_testprog).
lv_r_time = 0.
ENDIF.
CONCATENATE 'I' para INTO lv_para.
PERFORM tables_container IN PROGRAM (g_testprog) TABLES lt_lcont
USING lv_para
'O' ."DIRECTION.
LOOP AT lt_lcont INTO ls_lcont WHERE type = 'u'.
lv_count = lv_count + 1.
ENDLOOP.
DO lv_count TIMES.
PERFORM read_single_value.
ls_lcont_index = ls_lcont_index + 1.
lv_par_index = lv_par_index + 1 .
ENDDO.
ls_lcont_index = 1.
lv_par_index = 1 .
REFRESH lt_lcont.
CLEAR lv_count.
* perFORM PARAMETER_TABLE_gET IN PROGRAM (g_testprog) USING para <value>.
* perFORM PARAMETER_TABLE_sET IN PROGRAM (g_testprog) USING para <value>.
* PERFORM parameter_table_get IN PROGRAM (g_testprog) USING para CHANGING <value>.
* CHECK <value> IS NOT INITIAL.
* READ TABLE <value> INTO <wa_value> INDEX 1.
* CLEAR lv_par_index.
* LOOP AT <value> INTO <wa_value> .
* lv_par_index = sy-tabix.
* PERFORM read_single_value.
* ENDLOOP.
ELSE.
PERFORM parameter_read_input IN PROGRAM (g_testprog) USING para
d102n_exportkey
CHANGING <wa_value> .
lv_par_index = 1.
PERFORM read_single_value.
ENDIF.
ELSE.
lv_par_index = 1.
PERFORM read_single_value.
ENDIF.
ENDFORM. " GET_VALUES_BASED_ON_STRUCTURE
*&---------------------------------------------------------------------*
*& Form GET_BAPI_CODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_file.
*Download File
DATA :lv_d_file TYPE string.
cl_gui_frontend_services=>get_desktop_directory(
CHANGING
desktop_directory = lv_d_file " Desktop Directory
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4
).
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL METHOD cl_gui_cfw=>flush.
* CONCATENATE lv_d_file '\' p_func '.XLS' INTO lv_file_path.
CONCATENATE 'C:\Ram kumar\bapi_code\' p_func '.XLS' INTO lv_file_path.
ENDIF.
PERFORM get_alv_input.
*Create Dynamic Structure
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
<dyn_wa> TYPE any,
<dyn_field> TYPE any.
DATA: dy_table TYPE REF TO data,
dy_line TYPE REF TO data.
DATA :lv_sum TYPE i.
LOOP AT lt_parame INTO ls_parame WHERE t_f_indx = 1.
IF lt_o_file IS INITIAL.
ELSE.
CLEAR ls_o_file.
READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_parame-param field = ls_parame-t_field .
CHECK ls_o_file-file = abap_true .
ENDIF.
READ TABLE lt_table_s INTO ls_table_s WITH KEY fieldname = ls_parame-t_field .
IF sy-subrc = 0.
ls_table_s-scrtext_m = ls_parame-t_t_fie .
CONCATENATE ls_parame-param '_' ls_parame-t_t_fie INTO ls_table_s-scrtext_m .
CONCATENATE ls_parame-param '_' ls_parame-t_field INTO ls_table_s-fieldname .
PERFORM check_fieldname.
ELSE.
ls_table_s-scrtext_m = ls_parame-t_t_fie .
ls_table_s-fieldname = ls_parame-t_field .
ENDIF.
ls_table_s-tabname = ls_parame-param .
ls_table_s-datatype = 'CHAR' ."ls_parame-t_f_dt .
ls_table_s-inttype = 'C'."ls_parame-t_f_inty .
lv_length = strlen( ls_parame-param ).
lv_length = lv_length - 1.
lv_str = ls_parame-param+lv_length(1).
IF lv_str = abap_true.
ls_table_s-intlen = 25 .
ELSE.
ls_table_s-intlen = strlen( ls_parame-t_t_fie ) * 2."ls_parame-t_f_inle .
ENDIF.
lv_sum = ls_parame-v_f_le * 2 .
IF ls_table_s-intlen < lv_sum .
ls_table_s-intlen = ls_parame-v_f_le * 2 .
ENDIF.
* ls_table_s-decimals = ls_parame-t_f_de .
APPEND ls_table_s TO lt_table_s .
ls_table_s_temp = ls_table_s .
ls_table_s_temp-scrtext_m = ls_parame-t_t_fie .
ls_table_s_temp-fieldname = ls_parame-t_field .
APPEND ls_table_s_temp TO lt_table_s_temp .
CLEAR ls_table_s.
CLEAR ls_table_s_temp.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM lt_table_s COMPARING fieldname .
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_table_s
i_length_in_byte = 'X'
IMPORTING
ep_table = lv_s_name.
ASSIGN lv_s_name->* TO <dyn_table>.
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.
*lt_parame_temp = lt_parame.
* DATA : lv_p_len TYPE i.
* LOOP AT lt_parame INTO ls_parame.
* lv_p_len = strlen( ls_parame-param ).
* lv_p_len = lv_p_len - 1.
* IF ls_parame-param+lv_p_len(1) = 'X'.
* ELSE.
* APPEND ls_parame TO lt_parame_temp.
* CLEAR ls_parame.
* ENDIF.
* ENDLOOP.
CLEAR lv_count .
*Adding Header Text Data
APPEND <dyn_wa> TO <dyn_table>.
DATA ls_table_index TYPE i VALUE 1.
LOOP AT lt_table_s_temp INTO ls_table_s.
* ls_table_index = sy-tabix.
IF lt_o_file IS INITIAL.
ELSE.
CLEAR ls_o_file.
READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_table_s-tabname field = ls_table_s-fieldname.
CHECK ls_o_file-file = abap_true .
ENDIF.
READ TABLE <dyn_table> INTO <dyn_wa> INDEX 1.
ASSIGN COMPONENT ls_table_index OF STRUCTURE <dyn_wa> TO <dyn_field> .
ls_table_index = ls_table_index + 1.
<dyn_field> = ls_table_s-scrtext_m.
lv_count = lv_count + 1.
MODIFY <dyn_table> FROM <dyn_wa> INDEX 1.
ENDLOOP.
*Adding data to file ....
DATA : lv_data_c TYPE i,
lv_data_i TYPE i VALUE 1.
lt_o_file1 = lt_o_file .
CLEAR ls_table_index .
SORT lt_o_file1 BY index DESCENDING .
READ TABLE lt_o_file1 INTO ls_o_file INDEX 1.
lv_data_c = ls_o_file-index.
CLEAR index.
index1 = 1.
ls_table_index = 1.
index = 2.
DO lv_data_c TIMES.
CLEAR <dyn_wa> .
APPEND <dyn_wa> TO <dyn_table>.
ls_table_index = 1.
DO lv_count TIMES.
CLEAR ls_table_s.
READ TABLE lt_table_s_temp INTO ls_table_s INDEX index1.
index1 = index1 + 1.
IF lt_o_file IS INITIAL.
ELSE.
CLEAR ls_o_file.
READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_table_s-tabname field = ls_table_s-fieldname index = lv_data_i.
* CHECK ls_o_file-file = abap_true .
* IF ls_o_file-value IS INITIAL.
* READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_table_s-tabname field = ls_table_s-fieldname index = 1.
* ENDIF.
ENDIF.
* CLEAR <dyn_wa> .
READ TABLE <dyn_table> INTO <dyn_wa> INDEX index.
ASSIGN COMPONENT ls_table_index OF STRUCTURE <dyn_wa> TO <dyn_field> .
ls_table_index = ls_table_index + 1.
* ASSIGN COMPONENT ls_table_s-fieldname OF STRUCTURE <dyn_wa> TO <dyn_field> .
SHIFT ls_o_file-value LEFT DELETING LEADING space.
IF ls_o_file-value IS NOT INITIAL .
<dyn_field> = ls_o_file-value.
ENDIF.
MODIFY <dyn_table> FROM <dyn_wa> INDEX index.
ENDDO..
CLEAR ls_table_index.
lv_data_i = lv_data_i + 1 .
index = index + 1 .
index1 = 1.
ENDDO.
CALL FUNCTION 'GUI_DOWNLOAD' " TO DOWNLOAD A TEXT DOCUMENT
EXPORTING
filename = lv_file_path
filetype = 'DAT'
TABLES
data_tab = <dyn_table>.
DELETE lt_parame WHERE t_f_indx <> 1 .
ENDFORM. " GET_BAPI_CODE
*&---------------------------------------------------------------------*
*& Form APPEND_LINE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_line .
APPEND ls_b_lines TO lt_b_lines.
CLEAR ls_b_lines.
ENDFORM. " APPEND_LINE
*&---------------------------------------------------------------------*
*& Form GET_PRAMETERS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_prameters .
LOOP AT lt_parame INTO ls_parame WHERE param = lv_parameter AND t_f_indx = lv_par_index.
IF ls_parame-field_f = 'T'.
CONCATENATE ' wa_'ls_parame-param'-'ls_parame-t_field ' = '
INTO lv_source_code.
ELSE.
CONCATENATE ' lv_' lv_parameter'-'ls_parame-t_field ' = '
INTO lv_source_code.
ENDIF.
IF p_file = abap_true.
CLEAR ls_o_file.
READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_parame-param field = ls_parame-t_field .
IF sy-subrc = 0.
IF ls_o_file-c_field IS INITIAL.
ELSE.
ls_parame-t_field = ls_o_file-c_field .
ENDIF.
ENDIF.
IF ls_o_file-file = abap_true.
CONCATENATE lv_source_code ' ls_file-'ls_parame-t_field'.' INTO lv_source_code.
ELSEIF ls_o_file-h_code = abap_true.
CONCATENATE lv_source_code '''' ls_o_file-value '''' '.' INTO lv_source_code.
ENDIF.
APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
ELSE.
SHIFT ls_parame-v_field LEFT DELETING LEADING space.
CONCATENATE lv_source_code '''' ls_parame-v_field '''' '.' INTO lv_source_code.
APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
ENDIF.
ENDLOOP.
ENDFORM. " GET_PRAMETERS
*&---------------------------------------------------------------------*
*& Form SPLIT_FM_VARIABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM split_fm_variable .
SPLIT lv_source AT '=' INTO split1 split2 .
split2 = lv_var_name .
CONCATENATE split1 split2 INTO lv_source SEPARATED BY space.
ENDFORM. " SPLIT_FM_VARIABLE
*&---------------------------------------------------------------------*
*& Form WRITE_TO_FINAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM write_to_final .
*** WRITE : / lv_source_var.
APPEND lv_source_var TO lt_final_code.
APPEND lv_source_var TO lt_final_code_reduced.
ENDFORM. " WRITE_TO_FINAL
*&---------------------------------------------------------------------*
*& Form SUBROUTINES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM subroutines .
IF p_file = abap_true .
lv_subro = '*&---------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '*& Form FILE_F4_HELP'.
APPEND lv_subro TO lt_subro.
lv_subro = '*&---------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '* text'.
APPEND lv_subro TO lt_subro.
lv_subro = '*----------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '* --> p1 text'.
APPEND lv_subro TO lt_subro.
lv_subro = '* <-- p2 text'.
APPEND lv_subro TO lt_subro.
lv_subro = '*----------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = 'FORM file_f4_help .'.
APPEND lv_subro TO lt_subro.
lv_subro = 'CALL FUNCTION'.
CONCATENATE lv_subro ''' F4_FILENAME''' INTO lv_subro SEPARATED BY space.
APPEND lv_subro TO lt_subro.
lv_subro = 'EXPORTING'.
APPEND lv_subro TO lt_subro.
lv_subro = 'program_name = syst-cprog'.
APPEND lv_subro TO lt_subro.
lv_subro = 'dynpro_number = syst-dynnr'.
APPEND lv_subro TO lt_subro.
lv_subro = 'IMPORTING'.
APPEND lv_subro TO lt_subro.
lv_subro = 'file_name = File.'.
APPEND lv_subro TO lt_subro.
lv_subro = 'ENDFORM. " FILE_F4_HELP.'.
APPEND lv_subro TO lt_subro.
lv_subro = '*&---------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '*& Form UPLOAD_FILE'.
APPEND lv_subro TO lt_subro.
lv_subro = '*&---------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '* text'.
APPEND lv_subro TO lt_subro.
lv_subro = '*----------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '* --> p1 text'.
APPEND lv_subro TO lt_subro.
lv_subro = '* <-- p2 text'.
APPEND lv_subro TO lt_subro.
lv_subro = '*----------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = 'FORM upload_file .'.
APPEND lv_subro TO lt_subro.
lv_subro = ' DATA: lt_raw TYPE truxs_t_text_data.'.
APPEND lv_subro TO lt_subro.
lv_subro = ' Refresh LT_FILE.'.
APPEND lv_subro TO lt_subro.
lv_subro = ' CALL FUNCTION '.
CONCATENATE lv_subro '''TEXT_CONVERT_XLS_TO_SAP''' INTO lv_subro SEPARATED BY space.
APPEND lv_subro TO lt_subro.
lv_subro = ' EXPORTING'.
APPEND lv_subro TO lt_subro.
lv_subro = '* I_FIELD_SEPERATOR ='.
APPEND lv_subro TO lt_subro.
lv_subro = '* i_line_header = abap_true'.
APPEND lv_subro TO lt_subro.
lv_subro = ' i_tab_raw_data = lt_raw'.
APPEND lv_subro TO lt_subro.
lv_subro = ' i_filename = file'.
APPEND lv_subro TO lt_subro.
lv_subro = ' TABLES'.
APPEND lv_subro TO lt_subro.
lv_subro = ' i_tab_converted_data = Lt_FILE'.
APPEND lv_subro TO lt_subro.
lv_subro = ' EXCEPTIONS'.
APPEND lv_subro TO lt_subro.
lv_subro = ' conversion_failed = 1'.
APPEND lv_subro TO lt_subro.
lv_subro = ' OTHERS = 2.'.
APPEND lv_subro TO lt_subro.
lv_subro = ' IF sy-subrc <> 0.'.
APPEND lv_subro TO lt_subro.
lv_subro = '* Implement suitable error handling here'.
APPEND lv_subro TO lt_subro.
lv_subro = ' ENDIF.'.
APPEND lv_subro TO lt_subro.
lv_subro = 'ENDFORM. " UPLOAD_FILE'.
APPEND lv_subro TO lt_subro.
ENDIF.
ENDFORM. " SUBROUTINES
*&---------------------------------------------------------------------*
*& Form READ_SINGLE_VALUE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_single_value .
READ TABLE it_dd03l INTO ls_dd03l WITH KEY tabname = lv_s_fil.
IF sy-subrc = 0."IF table or structure
SORT it_dd03l BY position.
LOOP AT it_dd03l INTO ls_dd03l WHERE tabname = lv_s_fil.
IF ls_dd03l-datatype IS NOT INITIAL.
ls_parame-param = para.
ls_parame-struct = lv_s_fil ."if_import-dbfield .
ls_parame-field_f = lv_field.
ls_parame-t_field = ls_dd03l-fieldname .
ls_parame-t_f_dt = ls_dd03l-datatype.
ls_parame-t_f_de = ls_dd03l-decimals.
ls_parame-t_f_inle = ls_dd03l-intlen.
ls_parame-t_f_inty = ls_dd03l-inttype.
ls_parame-t_f_le = ls_dd03l-leng.
ls_parame-t_f_po = ls_dd03l-position.
ls_parame-v_f_le = ls_dd03l-leng .
ls_parame-t_f_dl = ls_dd03l-decimals.
ls_parame-v_f_po = ls_dd03l-position.
ls_parame-t_f_indx = lv_par_index .
READ TABLE it_dd03m INTO ls_dd03m WITH KEY tabname = lv_s_fil fieldname = ls_dd03l-fieldname .
IF sy-subrc = 0.
ls_parame-t_t_fie = ls_dd03m-scrtext_m .
ENDIF.
IF p_test = abap_true AND lv_field <> 'T'.
ASSIGN ls_dd03l-fieldname TO <field>.
ASSIGN COMPONENT <field> OF STRUCTURE <wa_value> TO <field_val> .
ls_parame-v_field = <field_val> .
ELSEIF lv_field = 'T'.
ls_lcont_index = ls_lcont_index + 1.
READ TABLE lt_lcont INTO ls_lcont INDEX ls_lcont_index.
IF sy-subrc = 0.
ls_parame-v_field = ls_lcont-value.
ENDIF.
ENDIF.
IF ls_parame-v_field IS INITIAL .
IF p_file = abap_false.
APPEND ls_parame TO lt_parame.
CLEAR ls_parame.
ENDIF.
ELSE.
IF ls_parame-v_field CS '0' AND ls_parame-t_f_le < 100..
IF ls_parame-v_field CA '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_' .
ELSE.
CHECK ls_parame-v_field > 0 .
ENDIF.
ENDIF.
APPEND ls_parame TO lt_parame.
ENDIF.
CLEAR ls_parame.
ENDIF.
ENDLOOP.
ELSE . "IF variables
ls_parame-param = para.
ls_parame-field_f = lv_field.
ls_parame-t_field = para .
IF p_test = abap_true.
ls_parame-v_field = <wa_value> .
ENDIF.
IF ls_parame-v_field IS INITIAL .
ELSE.
IF ls_parame-v_field CS '0'.
IF ls_parame-v_field CA '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_' .
ELSE.
CHECK ls_parame-v_field > 0 .
ENDIF.
ENDIF.
APPEND ls_parame TO lt_parame.
ENDIF.
CLEAR ls_parame.
ENDIF.
ENDFORM. " READ_SINGLE_VALUE
*&---------------------------------------------------------------------*
*& Form GET_ALV_INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_alv_input .
IF lt_o_file IS INITIAL.
LOOP AT lt_parame INTO ls_parame ." WHERE t_f_indx = 1.
ls_o_file-param = ls_parame-param.
ls_o_file-field = ls_parame-t_field.
ls_o_file-value = ls_parame-v_field.
ls_o_file-index = ls_parame-t_f_indx.
ls_o_file-lenght = ls_parame-t_f_le.
"set field to disabled
ls_stylerow-fieldname = 'T_TABLE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
CLEAR ls_o_file-f_style.
APPEND ls_stylerow TO ls_o_file-f_style.
ls_stylerow-fieldname = 'T_FIELD' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'T_COND' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'SLECT' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
APPEND ls_o_file TO lt_o_file.
CLEAR ls_o_file.
ENDLOOP.
ELSE.
CLEAR index.
*GREEN value '@08@'. "#EC NOTEXT
*INFO value '@0S@'. "#EC NOTEXT
*RED value '@0A@'. "#EC NOTEXT
SELECT * FROM dd03l INTO TABLE it_dd03l_temp
FOR ALL ENTRIES IN lt_o_file
WHERE tabname = lt_o_file-t_table.
LOOP AT lt_o_file INTO ls_o_file WHERE index = 1.
index = sy-tabix .
IF ls_o_file-table IS INITIAL AND
ls_o_file-h_code IS INITIAL AND
ls_o_file-file IS INITIAL.
ls_o_file-icon = '@0A@' .
ls_o_file-message = 'Please select any one (TABLE ,HARD_CODE,FILE)'.
ELSEIF ls_o_file-table IS NOT INITIAL AND
ls_o_file-h_code IS INITIAL AND
ls_o_file-file IS INITIAL.
READ TABLE it_dd03l_temp INTO ls_dd03l_temp WITH KEY tabname = ls_o_file-t_table.
IF sy-subrc = 0.
CLEAR ls_dd03l_temp.
READ TABLE it_dd03l_temp INTO ls_dd03l_temp WITH KEY fieldname = ls_o_file-t_field.
IF sy-subrc = 0.
ls_o_file-icon = '@08@' .
ls_o_file-message = 'No error...'.
ELSE.
ls_o_file-icon = '@0A@' .
ls_o_file-message = 'Field not exit'.
ENDIF.
ELSE.
ls_o_file-icon = '@0A@' .
ls_o_file-message = 'Table not exit'.
ENDIF.
ELSE.
ls_o_file-icon = '@08@' .
ls_o_file-message = 'No error...'.
ENDIF.
MODIFY lt_o_file FROM ls_o_file INDEX index .
ENDLOOP.
ENDIF.
REFRESH lt_fcat .
IF lv_alv_c <> 1 .
PERFORM fcat USING 'ICON' 'STATUS' .
PERFORM fcat USING 'MESSAGE' 'MESSAGE'.
ENDIF.
PERFORM fcat USING 'PARAM' 'Patameters'.
PERFORM fcat USING 'FIELD' 'Field Name'.
PERFORM fcat USING 'VALUE' 'Field Value' .
PERFORM fcat USING 'TABLE' 'Table Name & Parameters'.
PERFORM fcat USING 'H_CODE' 'Hard Code'.
PERFORM fcat USING 'FILE' 'Input from file '.
PERFORM fcat USING 'SLECT' 'Definition'.
PERFORM fcat USING 'T_TABLE' 'Table Name'.
PERFORM fcat USING 'T_FIELD' 'Field Name'.
PERFORM fcat USING 'T_COND' 'Condition'.
* ls_lay-colwidth_optimize = abap_true.
ls_lay-stylefname = 'F_STYLE'.
* ls_lay-zebra = abap_true.
* Event for Data Changed
la_evts-name = 'DATA_CHANGED'.
la_evts-form = 'GET_DATA_CHANGED'.
APPEND la_evts TO lt_evts.
*Show only index 1
lt_o_file1 = lt_o_file.
DELETE lt_o_file1 WHERE index <> 1 .
PERFORM call_alv.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
lv_alv_c = 2.
ENDIF.
* BREAK-POINT.
IF sy-ucomm = '&IC1'.
ENDIF.
IF sy-ucomm = '&AC1'.
lv_qus = 'Do you want exit'.
PERFORM popup_to_confirm.
IF lv_ans = '1'.
EXIT.
ENDIF.
ENDIF.
CLEAR ls_o_file .
READ TABLE lt_o_file1 INTO ls_o_file INDEX 1.
IF ls_o_file-icon IS INITIAL.
PERFORM get_alv_input.
ELSE.
CLEAR ls_o_file .
READ TABLE lt_o_file1 INTO ls_o_file WITH KEY icon = '@0A@'.
IF sy-subrc = 0.
PERFORM get_alv_input.
ENDIF.
ENDIF.
ENDFORM. " GET_ALV_INPUT
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
* BREAK-POINT.
CLEAR ls_o_file.
READ TABLE lt_o_file1 INTO ls_o_file INDEX rs_selfield-tabindex .
IF ls_o_file IS INITIAL.
ELSE.
IF rs_selfield-fieldname = 'TABLE'.
ls_o_file-table = abap_true.
ls_o_file-h_code = ''.
ls_o_file-file = ''.
ls_o_file-slect = ''.
ELSEIF rs_selfield-fieldname = 'H_CODE'.
ls_o_file-table = '' .
ls_o_file-h_code = abap_true.
ls_o_file-file = ''.
ls_o_file-slect = ls_o_file-value .
ELSEIF rs_selfield-fieldname = 'FILE'.
ls_o_file-table = '' .
ls_o_file-h_code = ''.
ls_o_file-file = abap_true.
ls_o_file-slect = ''.
ENDIF.
DATA : lv_var TYPE char100.
LOOP AT lt_o_file INTO ls_o_file1 WHERE param = ls_o_file-param AND field = ls_o_file-field.
index1 = sy-tabix .
index = ls_o_file1-index .
lv_var = ls_o_file1-value.
ls_o_file1 = ls_o_file .
ls_o_file1-value = lv_var.
ls_o_file1-index = index.
*update same data in different index
* MODIFY lt_o_file1 FROM ls_o_file INDEX sy-tabix.
MODIFY lt_o_file FROM ls_o_file1 INDEX sy-tabix .
ENDLOOP.
* update based on screen fields
MODIFY lt_o_file1 FROM ls_o_file INDEX rs_selfield-tabindex .
* MODIFY lt_o_file FROM ls_o_file INDEX rs_selfield-tabindex .
* PERFORM call_alv.
PERFORM set_specific_field_attributes.
*sET cURSOR POSITION
* PERFORM SET_CURSOR USING rs_selfield-tabindex.
PERFORM get_data_changed .
ENDIF.
WHEN '&AC1'.
DATA : ans VALUE 1.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Exit '
text_question = 'Do you want exit'"text_question
IMPORTING
answer = ans
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF ans = 1.
EXIT.
ENDIF.
* ENDIF.
WHEN 'SAVE'.
* gv_testrun = abap_true.
* PERFORM process_UOM USING gv_testrun.
* PERFORM display_log.
WHEN 'BACK1' OR 'EXIT' OR 'LEAVE'.
* LEAVE TO SCREEN 0.
WHEN '&ONT'.
*** *Getting Screen Value to intenal table
** DATA: gd_repid LIKE sy-repid, "Exists
** ref_grid TYPE REF TO cl_gui_alv_grid.
** IF ref_grid IS INITIAL.
** CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
** IMPORTING
** e_grid = ref_grid.
** ENDIF.
** IF NOT ref_grid IS INITIAL.
** CALL METHOD ref_grid->check_changed_data .
** ENDIF.
*DATA : ROW_NO TYPE lvc_s_row.
**set the focus of cursor in ALV
*ROW_NO = rs_selfield-tabindex .
*CALL METHOD ref_grid->set_current_cell_via_id
*EXPORTING
*is_row_no = rs_selfield-tabindex. "row number where you want to focus the cursor
ENDCASE..
* rs_selfield-refresh = 'X'.
* rs_selfield-tabindex = rs_selfield-tabindex.
CLEAR sy-ucomm .
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_3261 text
* -->P_3262 text
*---------------------------------------------------------------------*
FORM fcat USING field desc.
ls_fcat-fieldname = field .
ls_fcat-scrtext_m = desc .
IF field = 'TABLE' OR field = 'H_CODE' OR field ='FILE' .
ls_fcat-checkbox = abap_true.
ls_fcat-edit = abap_true.
ls_fcat-hotspot = abap_true.
ENDIF.
IF field = 'SLECT' OR
field = 'T_TABLE' OR
field = 'T_FIELD' OR
field = 'T_COND' .
ls_fcat-edit = abap_true.
ls_fcat-intlen = 25.
* ls_fcat-hotspot = abap_true.
ENDIF.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ENDFORM. " FCAT
*&---------------------------------------------------------------------*
*& Form CALL_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM call_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
is_layout_lvc = ls_lay
it_fieldcat_lvc = lt_fcat
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
* IT_EVENTS = LT_EVTS
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_screen_start_column = 10
i_screen_start_line = 10
i_screen_end_column = 130
i_screen_end_line = 30
* i_save = 'X'
TABLES
t_outtab = lt_o_file1
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " CALL_ALV
*&---------------------------------------------------------------------*
*& Form SET_SPECIFIC_FIELD_ATTRIBUTES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_specific_field_attributes .
* Populate style variable (FIELD_STYLE) with style properties
*
* The NETPR field/column has been set to editable in the fieldcatalog...
* The following code sets it to be disabled(display only) if 'NETPR'
* is gt than 10.
LOOP AT lt_o_file1 INTO ls_o_file.
IF ls_o_file-h_code = abap_true ."OR ls_o_file-file = abap_true.
ls_stylerow-fieldname = 'T_TABLE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
CLEAR ls_o_file-f_style. "set field to disabled
APPEND ls_stylerow TO ls_o_file-f_style.
CLEAR ls_stylerow.
ls_stylerow-fieldname = 'T_FIELD' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'T_COND' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'SLECT' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
MODIFY lt_o_file1 FROM ls_o_file.
* MODIFY lt_o_file FROM ls_o_file.
CLEAR ls_o_file.
ELSEIF ls_o_file-table = abap_true.
ls_stylerow-fieldname = 'T_TABLE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
CLEAR ls_o_file-f_style. "set field to disabled
APPEND ls_stylerow TO ls_o_file-f_style.
CLEAR ls_stylerow.
ls_stylerow-fieldname = 'T_FIELD' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'T_COND' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'SLECT' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
MODIFY lt_o_file1 FROM ls_o_file.
* MODIFY lt_o_file FROM ls_o_file.
CLEAR ls_o_file.
ELSEIF ls_o_file-file = abap_true.
ls_stylerow-fieldname = 'T_TABLE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
CLEAR ls_o_file-f_style. "set field to disabled
APPEND ls_stylerow TO ls_o_file-f_style.
CLEAR ls_stylerow.
ls_stylerow-fieldname = 'T_FIELD' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'T_COND' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'SLECT' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
MODIFY lt_o_file1 FROM ls_o_file.
* MODIFY lt_o_file FROM ls_o_file.
CLEAR ls_o_file.
ENDIF .
ENDLOOP.
ENDFORM. " SET_SPECIFIC_FIELD_ATTRIBUTES
*&---------------------------------------------------------------------*
*& Form CHECK_FIELDNAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_fieldname .
READ TABLE lt_table_s INTO ls_table_s WITH KEY fieldname = ls_table_s-fieldname .
IF sy-subrc = 0.
* ls_table_s-scrtext_m = ls_parame-t_t_fie .
CONCATENATE ls_parame-param '_' ls_parame-t_t_fie 'X' INTO ls_table_s-scrtext_m .
CONCATENATE ls_parame-param '_' ls_parame-t_field 'X' INTO ls_table_s-fieldname .
ENDIF.
ENDFORM. " CHECK_FIELDNAME
*&---------------------------------------------------------------------*
*& Form get_data_changed
*&---------------------------------------------------------------------*
* Here we will get the current cell and than add 1 to it to move
* to next row. Than we will call the method to set the new row
*----------------------------------------------------------------------*
FORM get_data_changed ."USING RR_DATA_CHANGED
* TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.*
DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
*
DATA: le_row TYPE i,
le_value TYPE c,
le_col TYPE i,
les_row_id TYPE lvc_s_row,
les_col_id TYPE lvc_s_col,
les_row_no TYPE lvc_s_roid.
* Get the ALV Object reference
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lo_grid.
* Get the Current Cell
CALL METHOD lo_grid->get_current_cell
IMPORTING
e_row = le_row
e_value = le_value
e_col = le_col
es_row_id = les_row_id
es_col_id = les_col_id
es_row_no = les_row_no.
*Get Screen Update
CALL METHOD lo_grid->refresh_table_display.
* Set Cursor
CALL METHOD lo_grid->set_current_cell_via_id
EXPORTING
is_row_id = les_row_id
is_column_id = les_col_id
is_row_no = les_row_no.
ENDFORM. "get_data_changed
*&---------------------------------------------------------------------*
*& Form POPUP_TO_CONFIRM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM popup_to_confirm .
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Confirmation Message'
text_question = lv_qus "text_question
IMPORTING
answer = lv_ans
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " POPUP_TO_CONFIRM
*&---------------------------------------------------------------------*
*& Form GET_PROGRAM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_program .
DATA :rs38m_programm TYPE trdir-name,
mode TYPE c,
l_edit TYPE c,
trdir TYPE trdir .
CALL FUNCTION 'RS_EDTR_ATTR_ADD'
EXPORTING
program_name = p_prgm
activate_immediately = 'X'
IMPORTING
leaved_with_mode = mode
leave_to_editor = l_edit
CHANGING
program_trdir = trdir
EXCEPTIONS
program_name_missing = 1
program_exists = 2
wrong_parameter_value = 3
OTHERS = 4.
IF sy-subrc NE 0.
* IF sy-msgty NE space.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
lv_qus = 'Program name adlready available do you want continue'.
PERFORM popup_to_confirm.
IF lv_ans = '1'.
*****************Delete Progarm----------------------------------------*
DATA: l_devclass LIKE tadir-devclass.
CALL FUNCTION 'RS_PROGRAM_GET_DEVCLASS'
EXPORTING
progname = p_prgm
IMPORTING
devclass = l_devclass
EXCEPTIONS
OTHERS.
CALL FUNCTION 'RS_DELETE_PROGRAM'
EXPORTING
program = p_prgm
suppress_popup = ' '
tadir_devclass = l_devclass
EXCEPTIONS
enqueue_lock = 1
object_not_found = 2
permission_failure = 3
reject_deletion = 5 "abbr. in popup
OTHERS = 4.
* p_subrc = sy-subrc.
* IF sy-msgno = '055'. p_subrc = 1. ENDIF. "progr. gesperrt
* IF p_subrc < 5.
* MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
*****************Delete Progarm----------------------------------------*
* PERFORM create_code_with_se38.
* DO 5 TIMES.
* CLEAR wa_line .
* APPEND wa_line TO it_line.
* ENDDO.
* it_line = lt_final_code_reduced .
* INSERT REPORT p_prgm FROM it_line.
* SET PARAMETER ID 'RID' FIELD p_prgm .
* CALL TRANSACTION 'SE38'.
** skip TO LINE 50000 .
* ELSE.
CALL SELECTION-SCREEN 2007 STARTING AT 5 10
ENDING AT 75 15.
PERFORM get_program.
ENDIF.
* ELSE.
** insert report *******************************************************
* DO 5 TIMES.
* CLEAR wa_line .
* APPEND wa_line TO it_line.
* ENDDO.
* it_line = lt_final_code_reduced .
* INSERT REPORT p_prgm FROM it_line.
** PERFORM create_code_with_se38.
* SET PARAMETER ID 'RID' FIELD p_prgm .
* CALL TRANSACTION 'SE38'.
ENDIF.
ENDFORM. " GET_PROGRAM
*&---------------------------------------------------------------------*
*& Form CREATE_CODE_WITH_SE38
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_code_with_se38 .
REFRESH it_line.
DO 5 TIMES.
CLEAR wa_line .
APPEND wa_line TO it_line.
ENDDO.
it_line = lt_final_code_reduced .
PERFORM bdc_dynpro USING 'SAPLWBABAP' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RS38M-PROGRAMM'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=CHAP'."'=NEW'.
PERFORM bdc_field USING 'RS38M-PROGRAMM'
p_prgm . "'zram_new007'.
PERFORM bdc_field USING 'RS38M-FUNC_EDIT'
'X'.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ED_ENTER'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSTXP-TDLINE(02)'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
' 1'.
CLEAR lv_str.
CONCATENATE 'REPORT ' p_prgm '.' INTO lv_str SEPARATED BY space.
PERFORM bdc_field USING 'RSTXP-TDLINE(01)'
lv_str.
* 'REPORT ZRAM_NEW007.'.
PERFORM bdc_field USING 'RSTXP-TDLINE(02)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(03)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(04)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(05)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(06)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(07)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(09)'
''.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ED_ENTER'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSTXP-TDLINE(10)'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
' 1'.
CLEAR bdc_count.
count = 2 .
bdc_count = 2.
*bdc_edi_count = 1.
bdc_edi_count = 2.
LOOP AT it_line INTO wa_line.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ED_ENTER'.
CONCATENATE 'RSTXP-TDLINE('count')' INTO data.
PERFORM bdc_field USING 'BDC_CURSOR'
data."'RSTXP-TDLINE('count')'.
IF bdc_count => 19.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
bdc_edi_count.
bdc_edi_count = bdc_edi_count + 1 .
ELSE.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
'1'.
ENDIF.
CONCATENATE 'RSTXP-TDLINE('count')' INTO data.
PERFORM bdc_field USING data "'RSTXP-TDLINE('count')'
wa_line.
IF count < 19.
count = count + 1.
ELSE.
count = 19.
ENDIF.
bdc_count = bdc_count + 1 .
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WB_CHECK'.
CONCATENATE 'RSTXP-TDLINE('count')' INTO data.
PERFORM bdc_field USING 'BDC_CURSOR'
data."'RSTXP-TDLINE(13)'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
'1'.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WB_ACTIVATE'.
PERFORM bdc_field USING 'BDC_CURSOR'
data ." 'RSTXP-TDLINE(13)'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
'1'."bdc_count.
CALL TRANSACTION 'SE38' USING it_bdc MODE 'E' .
IF sy-subrc = 0.
CLEAR lv_str.
CONCATENATE 'Report :' p_prgm ' Created Succcessfully' INTO lv_str.
MESSAGE lv_str TYPE 'I'.
ENDIF.
ENDFORM. " CREATE_CODE_WITH_SE38
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0090 text
* -->P_0091 text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING value(p_0090)
value(p_0091).
wa_bdc-program = p_0090.
wa_bdc-dynpro = p_0091.
wa_bdc-dynbegin = 'X'.
APPEND wa_bdc TO it_bdc.
CLEAR wa_bdc.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0105 text
* -->P_0106 text
*----------------------------------------------------------------------*
FORM bdc_field USING value(p_0105)
value(p_0106).
wa_bdc-fnam = p_0105.
wa_bdc-fval = p_0106.
CONDENSE wa_bdc-fval.
APPEND wa_bdc TO it_bdc.
CLEAR wa_bdc .
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form GET_NON_DUBLICATE_FILED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_non_dublicate_filed .
* DATA lv_co TYPE c.
* CLEAR ls_o_file1.
* READ TABLE lt_o_file2 INTO ls_o_file1 WITH KEY field = ls_o_file-field.
* IF sy-subrc = 0.
* lv_co = lv_count .
* CONCATENATE ls_o_file-field '_' lv_co INTO ls_o_file-c_field .
* MODIFY lt_o_file FROM ls_o_file.
* ls_o_file-field = ls_o_file-c_field.
* PERFORM get_non_dublicate_filed.
* ELSE.
index = index + 1 .
DATA count(3) TYPE c.
count = index.
SHIFT count LEFT DELETING LEADING space.
CONCATENATE ls_o_file-field'_'count INTO ls_o_file-c_field.
* APPEND ls_o_file TO lt_o_file2.
MODIFY lt_o_file FROM ls_o_file INDEX index1.
* ENDIF.
ENDFORM. " GET_NON_DUBLICATE_FILED
*&---------------------------------------------------------------------*
*& Form INSERT_PRG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM insert_prg .
CHECK p_prgm IS NOT INITIAL .
DO 5 TIMES.
CLEAR wa_line .
APPEND wa_line TO it_line.
ENDDO.
it_line = lt_final_code_reduced .
INSERT REPORT p_prgm FROM it_line.
SET PARAMETER ID 'RID' FIELD p_prgm .
CALL TRANSACTION 'SE38'.
* skip TO LINE 50000 .
* ELSE.
* CALL SELECTION-SCREEN 2007 STARTING AT 5 10
* ENDING AT 75 15.
* PERFORM get_program.
* ENDIF.
* ELSE.
** insert report *******************************************************
* DO 5 TIMES.
* CLEAR wa_line .
* APPEND wa_line TO it_line.
* ENDDO.
* it_line = lt_final_code_reduced .
* INSERT REPORT p_prgm FROM it_line.
** PERFORM create_code_with_se38.
* SET PARAMETER ID 'RID' FIELD p_prgm .
* CALL TRANSACTION 'SE38'.
ENDFORM. " INSERT_PRG
*&---------------------------------------------------------------------*
*& Form GET_DECLARATION_PART
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_declaration_part .
CLEAR lv_source_var.
PERFORM write_to_final.
CONCATENATE 'report'
p_prgm
INTO lv_source_var SEPARATED BY space.
PERFORM write_to_final.
lv_source_var = ' no standard page heading line-size 255.'..
PERFORM write_to_final.CLEAR lv_source_var.
PERFORM write_to_final.
PERFORM write_to_final.
lv_source_var = 'TYPES : BEGIN OF LTS_FILE,'.
PERFORM write_to_final.
IF p_file = abap_true.
CLEAR : index1,index.
LOOP AT lt_o_file INTO ls_o_file WHERE file = abap_true.
index1 = sy-tabix.
CLEAR lv_count.
IF ls_o_file-file = abap_true AND ls_o_file-index = 1.
PERFORM get_non_dublicate_filed.
CLEAR lv_source_var .
IF ls_o_file-lenght IS INITIAL.
ls_o_file-lenght = 1.
ENDIF.
SHIFT ls_o_file-lenght LEFT DELETING LEADING '0'.
SHIFT ls_o_file-lenght LEFT DELETING LEADING space.
* CONCATENATE ls_parame-field_f'_'ls_o_file-field'('ls_o_file-lenght')' ' TYPE C,' INTO lv_source_var.
IF ls_o_file-c_field IS INITIAL.
ELSE.
ls_o_file-field = ls_o_file-c_field.
ENDIF.
*space adjusment
lv_source_var1 = '11111111'.
DO 7 TIMES.
* CONCATENATE '' lv_source_var1 INTO lv_source_var1 SEPARATED BY space.
REPLACE '1' WITH space INTO lv_source_var1.
ENDDO.
CONCATENATE lv_source_var1 ls_o_file-field'('ls_o_file-lenght'),' INTO lv_source_var." ' TYPE C,'
REPLACE '1' WITH space INTO lv_source_var.
PERFORM write_to_final.
ENDIF.
CLEAR ls_o_file.
ENDLOOP.
ELSE.
LOOP AT lt_parame INTO ls_parame.
CLEAR lv_source_var .
IF ls_parame-v_f_le IS INITIAL.
ls_parame-v_f_le = 1.
ENDIF.
SHIFT ls_parame-v_f_le LEFT DELETING LEADING '0'.
SHIFT ls_parame-v_f_le LEFT DELETING LEADING space.
CONCATENATE ls_parame-field_f'_'ls_parame-t_field'('ls_parame-v_f_le')' ' TYPE C,' INTO lv_source_var.
PERFORM write_to_final.
ENDLOOP.
ENDIF.
lv_source_var = ' END OF LTS_FILE.'.
PERFORM write_to_final.
CLEAR lv_source_var.
PERFORM write_to_final.
lv_source_var = 'Data: lt_file type table of lts_file.'.
PERFORM write_to_final.
lv_source_var = 'Data: ls_file type ltS_file. '.
PERFORM write_to_final.
CLEAR lv_source_var.
PERFORM write_to_final.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.'.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'PARAMETERS : file TYPE rlgrap-filename OBLIGATORY.'.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'SELECTION-SCREEN END OF BLOCK b1.'.
APPEND lv_source_var TO lt_source_var.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.'.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'PERFORM file_f4_help.'.
APPEND lv_source_var TO lt_source_var.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
lv_source_var = '*---------------------------*&' .
APPEND lv_source_var TO lt_source_var.
lv_source_var = '*START-OF-SELECTION'.
APPEND lv_source_var TO lt_source_var.
lv_source_var = '*---------------------------*&' .
APPEND lv_source_var TO lt_source_var.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'PERFORM UPLOAD_FILE.'.
APPEND lv_source_var TO lt_source_var.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
* Adding F4_help subroutine.
* ENDIF.
PERFORM subroutines.
ENDFORM. " GET_DECLARATION_PART
Enjoy..
*&---------------------------------------------------------------------*
*& Report ZBAPI_AUTO_CREATE
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zbapi_auto_create.
**
*& Declaration part
**
TABLES : eufunc,rs38l,tfdir.
TYPES: BEGIN OF lty_eufunc,
gruppe TYPE eufunc-gruppe,
name TYPE eufunc-name,
nummer TYPE eufunc-nummer,
seqid TYPE eufunc-seqid,
srtf2 TYPE eufunc-srtf2,
datum TYPE eufunc-datum,
zeit TYPE eufunc-zeit,
END OF lty_eufunc,
BEGIN OF lty_param_all, " Catch Parameter into single table.
param(30) TYPE c, "Parameter Name
struct(30) TYPE c, "Parameter Structure or vaiable
t_field(30) TYPE c, "Table field Name
t_t_fie(20) TYPE c, "TAble Text Field
t_f_le(6) TYPE c, "Table Field length
t_f_de(6) TYPE c, "Table Field Decimal point
t_f_dt(10) TYPE c, "Table Field Data Type
t_f_inty(30) TYPE c, "table field initial TYPE
t_f_inle(30) TYPE c, "table field initial length
t_f_dl(5) TYPE c, "table field decimal length
t_f_indx(5) TYPE c, "table INDEX
t_f_po(5) TYPE c, "Table field positon
v_field(100) TYPE c, "value field Flag
v_f_po(5) TYPE c, "value field positon
v_f_le(6) TYPE c, "Value Field length
field_f(2) TYPE c, "Parameters From (Import,export,etc..)
END OF lty_param_all.
TYPES : BEGIN OF lty_alv,
param(30) TYPE c,
field(30) TYPE c,
c_field(30) TYPE c,
value(100) TYPE c,
slect(100) TYPE c,
table TYPE c,
h_code TYPE c,
file TYPE c,
icon TYPE icon_d,
message TYPE char200,
f_style TYPE lvc_t_styl,
t_table TYPE tabname,
t_field TYPE fieldname,
t_cond TYPE char100,
index TYPE i,
lenght TYPE char10,
END OF lty_alv,
BEGIN OF ty_tabname,
tabname TYPE dd03l-tabname,
END OF ty_tabname.
DATA : lt_alv TYPE TABLE OF lty_alv,
ls_alv TYPE lty_alv,
lt_fcat TYPE lvc_t_fcat ,"slis_t_fieldcat_alv,
ls_fcat TYPE lvc_s_fcat,"slis_fieldcat_alv,
ls_lay TYPE lvc_s_layo, " slis_layout_alv ,
lt_o_file TYPE TABLE OF lty_alv,
lt_o_file1 TYPE TABLE OF lty_alv,
lt_o_file2 TYPE TABLE OF lty_alv,
ls_o_file TYPE lty_alv,
ls_o_file1 TYPE lty_alv,
lt_evts TYPE slis_t_event,
la_evts LIKE LINE OF lt_evts.
DATA : lt_parame TYPE TABLE OF lty_param_all,
lt_parame_temp TYPE TABLE OF lty_param_all,
ls_parame_temp TYPE lty_param_all,
ls_parame TYPE lty_param_all,
lv_parameter(30) TYPE c,
ls_parame_inx TYPE i.
DATA : lt_b_lines TYPE TABLE OF tdline,
ls_b_lines TYPE tdline.
DATA : lv_field TYPE c, " parameter type From (Import,export,etc..)
lv_s_fil(30) TYPE c . " Structure
DATA : lt_eufunc TYPE TABLE OF lty_eufunc,
ls_eufunc TYPE lty_eufunc.
DATA : lt_source TYPE rswsourcet.
DATA : lv_source LIKE LINE OF lt_source.
DATA : lt_source_var TYPE rswsourcet.
DATA : lv_source_var LIKE LINE OF lt_source_var.
DATA : lv_source_var1 TYPE char8 .
DATA : lt_subro TYPE rswsourcet.
DATA : lv_subro LIKE LINE OF lt_subro.
DATA : lt_source_code TYPE rswsourcet.
DATA : lv_source_code LIKE LINE OF lt_source_var.
DATA : lt_final_code TYPE rswsourcet.
DATA : lv_final_code LIKE LINE OF lt_final_code.
DATA : lt_final_code_reduced TYPE rswsourcet.
DATA : lv_final_code_reduced LIKE LINE OF lt_final_code.
DATA ls_stylerow TYPE lvc_s_styl .
DATA lt_styletab TYPE lvc_t_styl .
* Importing Parameters
DATA: BEGIN OF if_import OCCURS 15.
INCLUDE STRUCTURE rsimp.
DATA: END OF if_import.
* Changing Parameters
DATA: BEGIN OF if_change OCCURS 15.
INCLUDE STRUCTURE rscha.
DATA: END OF if_change.
* Exporting parameters
DATA: BEGIN OF if_export OCCURS 15.
INCLUDE STRUCTURE rsexp.
DATA: END OF if_export.
* tables parameters
DATA: BEGIN OF if_tables OCCURS 15.
INCLUDE STRUCTURE rstbl.
DATA: END OF if_tables.
* Exception
DATA: BEGIN OF if_except OCCURS 15.
INCLUDE STRUCTURE rsexc.
DATA: END OF if_except.
DATA: BEGIN OF param_docu OCCURS 10.
INCLUDE STRUCTURE rsfdo.
DATA: END OF param_docu.
DATA: BEGIN OF lt_param OCCURS 10.
INCLUDE STRUCTURE rsimp.
DATA: END OF lt_param.
DATA: it_dd03l TYPE TABLE OF dd03l,
ls_dd03l TYPE dd03l.
DATA: it_dd03l_temp TYPE TABLE OF dd03l,
ls_dd03l_temp TYPE dd03l.
DATA : lt_tabname TYPE TABLE OF ty_tabname,
ls_tabname TYPE ty_tabname.
DATA : lt_tabname_temp TYPE TABLE OF ty_tabname,
ls_tabname_temp TYPE ty_tabname.
DATA: it_dd03m TYPE TABLE OF dd03m,
ls_dd03m TYPE dd03m.
DATA: param_value(220),
o_param_value LIKE param_value,
result_text(250),
para TYPE rs38l-importing ,
d_type .
DATA : g_testprog LIKE trdir-name.
DATA : d102n_exportkey LIKE functdir.
DATA : lv_var_name TYPE string.
DATA : split1(30) TYPE c,
split2(30) TYPE c.
DATA:p_table TYPE w_tabname,
wf_ref TYPE REF TO data,
wf_ref1 TYPE REF TO data.
DATA : lv_r_time TYPE c VALUE 1,
lv_alv_c TYPE i VALUE 1.
DATA : index TYPE i,
index1 TYPE i,
lv_count TYPE i.
DATA : lt_lcont TYPE TABLE OF swcont ,
ls_lcont TYPE swcont,
lv_para TYPE tabname,
ls_lcont_index TYPE i VALUE 1.
* lv_count TYPE i.
DATA : lt_table_s TYPE lvc_t_fcat ,
lt_table_s_temp TYPE lvc_t_fcat ,
ls_table_s TYPE lvc_s_fcat ,
ls_table_s_temp TYPE lvc_s_fcat ,
lv_s_name TYPE REF TO data,
lv_length TYPE i,
lv_str TYPE string.
DATA : lv_ans VALUE 1,
lv_qus TYPE string.
**********************se38 bdc
DATA : bdc_count TYPE string VALUE 1,
bdc_edi_count TYPE string VALUE 1,
flag TYPE c.
DATA : count TYPE string,
it_line TYPE TABLE OF tdline,
* temp_it_line TYPE TABLE OF tdline,
wa_line TYPE tdline,
data(30) TYPE c.
DATA : it_bdc TYPE TABLE OF bdcdata,
wa_bdc TYPE bdcdata.
**********************se38 bdc
**************************************************
*Get Structure
FIELD-SYMBOLS :<value> TYPE STANDARD TABLE,
<wa_value> TYPE any,
<field> TYPE any,
<field_val> TYPE any.
DATA : lv_file_path TYPE string ,"rlgrap-filename ,
lv_par_index TYPE i.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETERS : p_func LIKE rs38l-name ,
p_alv AS CHECKBOX DEFAULT abap_true ,
p_file AS CHECKBOX DEFAULT abap_true ,
p_test AS CHECKBOX USER-COMMAND b1,
p_tfil TYPE eufunc-nummer,
p_loop RADIOBUTTON GROUP rb1,
p_loop1 RADIOBUTTON GROUP rb1.
SELECTION-SCREEN END OF BLOCK b1 .
SELECTION-SCREEN BEGIN OF SCREEN 2007 .
PARAMETER : p_prgm TYPE trdir-name.
SELECTION-SCREEN END OF SCREEN 2007.
*F4 Help for FM Names
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_func .
PERFORM f4_help.
*F4 Help for FM Test run data
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_tfil .
PERFORM f4_help1.
AT SELECTION-SCREEN OUTPUT.
PERFORM screen_control.
START-OF-SELECTION.
* Bapi Get Structure
PERFORM get_bapi_structure.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form F4_HELP
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f4_help .
CALL FUNCTION 'RS_HELP_HANDLING'
EXPORTING
dynpfield = 'P_FUNC'
dynpname = sy-dynnr
object = 'FB'
progname = 'Z_RMTIWARI_CODE_FOR_FUNCTION'
* 'SAPMS38L'
suppress_selection_screen = sy-input.
ENDFORM. " F4_HELP
*&---------------------------------------------------------------------*
*& Form SCREEN_CONTROL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM screen_control .
LOOP AT SCREEN.
IF p_test = abap_false.
IF screen-name = 'P_TFIL' OR screen-name = '%_P_TFIL_%_APP_%-TEXT'.
screen-active = '0'.
screen-invisible = '0'.
ENDIF.
IF screen-name = 'P_LOOP' OR screen-name = '%_P_LOOP_%_APP_%-TEXT'.
screen-active = '0'.
screen-invisible = '0'.
ENDIF.
IF screen-name = 'P_LOOP1' OR screen-name = '%_P_LOOP1_%_APP_%-TEXT'.
screen-active = '0'.
screen-invisible = '0'.
ENDIF.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDFORM. " SCREEN_CONTROL
*&---------------------------------------------------------------------*
*& Form Get_Bapi_Structure
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_bapi_structure .
*Getting Function module Parametes .....
PERFORM fu_import_interface_ext(sapms38l)
TABLES if_import
if_change
if_export
if_tables
if_except
param_docu
USING p_func.
* BREAK-POINT.
*Collectining the Fields Based on structure From (Import,Export,etc..)
PERFORM get_all_fields.
* Bapi get value
PERFORM get_bapi_values.
IF p_file = abap_true.
* Get input file
PERFORM get_file.
PERFORM get_declaration_part.
lv_source_code = 'LOOP AT lt_file INTO ls_file .' .
APPEND lv_source_code TO lt_source_code.
CLEAR lv_source_code.
APPEND lv_source_code TO lt_source_code.
ENDIF.
CALL FUNCTION 'FUNCTION_STUB_GENERATE'
EXPORTING
funcname = p_func
ic_mode = 'X'
TABLES
source = lt_source
EXCEPTIONS
function_not_exist = 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.
FIELD-SYMBOLS: <fs> TYPE any.
DATA: lv_string TYPE string.
DATA: lv_search_string TYPE string.
LOOP AT lt_source INTO lv_source.
SEARCH lv_source FOR ' EXCEPTIONS'.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
SEARCH lv_source FOR ' = '.
CHECK sy-subrc EQ 0.
LOOP AT if_import.
CLEAR ls_parame.
READ TABLE lt_parame INTO ls_parame WITH KEY param = if_import-parameter.
CHECK sy-subrc = 0 .
CONCATENATE '.' if_import-parameter '.' INTO lv_search_string
SEPARATED BY space.
SEARCH lv_source FOR lv_search_string .
IF sy-subrc EQ 0.
CONCATENATE '= lv_' if_import-parameter INTO lv_var_name.
PERFORM split_fm_variable.
* REPLACE '=' WITH lv_var_name INTO lv_source.
MODIFY lt_source FROM lv_source.
REPLACE '= lv_' WITH 'DATA: lv_' INTO lv_var_name.
IF NOT if_import-dbfield IS INITIAL.
CONCATENATE lv_var_name 'TYPE' if_import-dbfield '.'
INTO lv_source_var SEPARATED BY space.
ELSEIF if_import-typ IS INITIAL.
CONCATENATE lv_var_name 'TYPE'
'C' '.'
INTO lv_source_var SEPARATED BY space.
ELSE.
CONCATENATE lv_var_name 'TYPE'
if_import-typ '.'
INTO lv_source_var SEPARATED BY space.
ENDIF.
APPEND lv_source_var TO lt_source_var.
IF if_import-default IS INITIAL.
* CONCATENATE '* lv_' if_import-parameter ' = '
* INTO lv_source_code.
CLEAR ls_parame.
lv_parameter = if_import-parameter .
PERFORM get_prameters.
* CONCATENATE '* lv_' if_import-parameter ' = '
* INTO lv_source_code.
ELSE.
CONCATENATE '* lv_' if_import-parameter ' = '
if_import-default '.'
INTO lv_source_code.
ENDIF.
* APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
APPEND lv_source_code TO lt_source_code.
lt_param-parameter = if_import-parameter.
lt_param-dbfield = if_import-dbfield.
lt_param-typ = if_import-typ.
APPEND lt_param.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT if_export.
CLEAR ls_parame.
READ TABLE lt_parame INTO ls_parame WITH KEY param = if_export-parameter.
CHECK sy-subrc = 0 .
CONCATENATE '.' if_export-parameter '.' INTO lv_search_string
SEPARATED BY space.
SEARCH lv_source FOR lv_search_string .
IF sy-subrc EQ 0.
CONCATENATE '= lv_' if_export-parameter INTO lv_var_name.
* REPLACE '=' WITH lv_var_name INTO lv_source.
PERFORM split_fm_variable.
MODIFY lt_source FROM lv_source.
REPLACE '= lv_' WITH 'DATA: lv_' INTO lv_var_name.
IF NOT if_export-dbfield IS INITIAL.
CONCATENATE lv_var_name 'TYPE' if_export-dbfield '.'
INTO lv_source_var SEPARATED BY space.
ELSEIF if_export-typ IS INITIAL.
CONCATENATE lv_var_name 'TYPE'
'C' '.'
INTO lv_source_var SEPARATED BY space.
ELSE.
CONCATENATE lv_var_name 'TYPE'
if_export-typ '.'
INTO lv_source_var SEPARATED BY space.
ENDIF.
APPEND lv_source_var TO lt_source_var.
IF if_export-parameter IS INITIAL.
* CONCATENATE '* lv_' if_import-parameter ' = '
* INTO lv_source_code.
CLEAR ls_parame.
lv_parameter = if_export-parameter .
PERFORM get_prameters.
* CONCATENATE '* lv_' if_export-parameter ' = '
* INTO lv_source_code.
* ELSE.
* CONCATENATE '* lv_' if_export-parameter ' = '
* if_export-default '.'
* INTO lv_source_code.
ENDIF.
* APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
APPEND lv_source_code TO lt_source_code.
lt_param-parameter = if_export-parameter.
lt_param-dbfield = if_export-dbfield.
lt_param-typ = if_export-typ.
APPEND lt_param.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT if_change.
CLEAR ls_parame.
READ TABLE lt_parame INTO ls_parame WITH KEY param = if_change-parameter.
CHECK sy-subrc = 0 .
CONCATENATE '.' if_change-parameter '.' INTO lv_search_string
SEPARATED BY space.
SEARCH lv_source FOR lv_search_string .
IF sy-subrc EQ 0.
CONCATENATE '= lv_' if_change-parameter INTO lv_var_name.
* REPLACE '=' WITH lv_var_name INTO lv_source.
PERFORM split_fm_variable.
MODIFY lt_source FROM lv_source.
REPLACE '= lv_' WITH 'DATA: lv_' INTO lv_var_name.
IF NOT if_change-dbfield IS INITIAL.
CONCATENATE lv_var_name 'TYPE' if_change-dbfield '.'
INTO lv_source_var SEPARATED BY space.
ELSEIF if_change-typ IS INITIAL.
CONCATENATE lv_var_name 'TYPE'
'C' '.'
INTO lv_source_var SEPARATED BY space.
ELSE.
CONCATENATE lv_var_name 'TYPE'
if_change-typ '.'
INTO lv_source_var SEPARATED BY space.
ENDIF.
APPEND lv_source_var TO lt_source_var.
* CONCATENATE '* lv_' if_change-parameter ' = '
* if_change-default
* INTO lv_source_code.
lv_parameter = if_change-parameter .
PERFORM get_prameters.
* APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
APPEND lv_source_code TO lt_source_code.
lt_param-parameter = if_change-parameter.
lt_param-dbfield = if_change-dbfield.
lt_param-typ = if_change-typ.
APPEND lt_param.
EXIT.
ENDIF.
ENDLOOP.
LOOP AT if_tables.
CLEAR ls_parame.
READ TABLE lt_parame INTO ls_parame WITH KEY param = if_tables-parameter.
CHECK sy-subrc = 0 .
CONCATENATE '.' if_tables-parameter '.' INTO lv_search_string
SEPARATED BY space.
SEARCH lv_source FOR lv_search_string .
IF sy-subrc EQ 0.
CONCATENATE '= lt_' if_tables-parameter INTO lv_var_name.
* REPLACE '=' WITH lv_var_name INTO lv_source.
PERFORM split_fm_variable.
MODIFY lt_source FROM lv_source.
REPLACE '= lt_' WITH 'DATA: lt_' INTO lv_var_name.
IF NOT if_tables-dbstruct IS INITIAL.
CONCATENATE lv_var_name 'TYPE standard table of '
if_tables-dbstruct '.'
INTO lv_source_var SEPARATED BY space.
ELSEIF if_tables-typ IS INITIAL.
CONCATENATE lv_var_name 'TYPE standard table of '
'char255' '.'
INTO lv_source_var SEPARATED BY space.
ELSE.
CONCATENATE lv_var_name 'TYPE'
if_tables-typ '.'
INTO lv_source_var SEPARATED BY space.
ENDIF.
APPEND lv_source_var TO lt_source_var.
CONCATENATE 'DATA: wa_' if_tables-parameter space
' LIKE LINE OF lt_' if_tables-parameter '.'
INTO lv_source_var.
APPEND lv_source_var TO lt_source_var.
* Get struture fields.
** IF p_file = abap_false.
**
**
** DATA : lt_dfies_tab TYPE STANDARD TABLE OF dfies WITH HEADER LINE.
** DATA : lv_tabname TYPE ddobjname.
**
** lv_tabname = if_tables-dbstruct.
**
** CALL FUNCTION 'DDIF_FIELDINFO_GET'
** EXPORTING
** tabname = lv_tabname
*** FIELDNAME = ' '
*** LANGU = SY-LANGU
*** LFIELDNAME = ' '
*** ALL_TYPES = ' '
*** GROUP_NAMES = ' '
*** IMPORTING
*** X030L_WA =
*** DDOBJTYPE =
*** DFIES_WA =
*** LINES_DESCR =
** TABLES
** dfies_tab = lt_dfies_tab
*** FIXED_VALUES =
** EXCEPTIONS
** not_found = 1
** internal_error = 2
** OTHERS = 3
** .
** 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 lt_dfies_tab[] IS INITIAL.
**
** CONCATENATE '* wa_' if_tables-parameter ' = '
** INTO lv_source_code.
**
** APPEND lv_source_code TO lt_source_code.
**
** ELSE.
** LOOP AT lt_dfies_tab.
**
** CONCATENATE '* wa_' if_tables-parameter '-'
** lt_dfies_tab-fieldname ' = '
** INTO lv_source_code.
**
** APPEND lv_source_code TO lt_source_code.
** ENDLOOP.
** ENDIF.
** endif.
*BREAK-POINT.
lv_parameter = if_tables-parameter .
lt_parame_temp = lt_parame.
DELETE lt_parame_temp WHERE param <> ls_parame-param.
SORT lt_parame_temp BY t_f_indx DESCENDING.
READ TABLE lt_parame_temp INTO ls_parame_temp INDEX 1.
CLEAR lv_par_index.
lv_par_index = 1.
DO ls_parame_temp-t_f_indx TIMES.
PERFORM get_prameters.
lv_par_index = lv_par_index + lv_par_index.
CONCATENATE ' APPEND wa_' if_tables-parameter ' to '
' lt_' if_tables-parameter '.'
INTO lv_source_code.
APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
CONCATENATE ' CLEAR wa_' if_tables-parameter '. '
INTO lv_source_code.
APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
ENDDO.
CLEAR lv_par_index.
* ENDLOOP.
* ENDIF.
APPEND lv_source_code TO lt_source_code.
EXIT.
ENDIF.
ENDLOOP.
ENDLOOP.
LOOP AT lt_source_var INTO lv_source_var.
PERFORM write_to_final.
ENDLOOP.
APPEND INITIAL LINE TO lt_final_code.
APPEND INITIAL LINE TO lt_final_code_reduced.
*** WRITE : /.
IF p_loop1 = abap_true AND p_file = abap_true..
CLEAR lv_source_code.
APPEND lv_source_code TO lt_source_code.
lv_source_code = 'ENDLOOP.'.
APPEND lv_source_code TO lt_source_code.
CLEAR lv_source_code.
ENDIF.
LOOP AT lt_source_code INTO lv_source_code.
*** WRITE : / lv_source_code.
* IF P_TESTD is initial.
* APPEND lv_source_code to lt_final_code.
*
* ELSE.
APPEND lv_source_code TO lt_final_code_reduced.
* ENDIF.
ENDLOOP.
*** WRITE : /.
* LOOP AT lt_test_code into lv_test_code.
* WRITE : / lv_test_code.
* IF NOT P_TESTD is initial.
* APPEND lv_test_code to lt_final_code.
*
* ENDIF.
* ENDLOOP.
LOOP AT lt_source INTO lv_source.
* REPLACE '"' WITH '*' INTO lv_source.
REPLACE '"' WITH ' ' INTO lv_source.
MODIFY lt_source FROM lv_source.
SPLIT lv_source AT '=' INTO split1 split2.
CLEAR ls_parame.
SHIFT split1 LEFT DELETING LEADING space.
READ TABLE lt_parame INTO ls_parame WITH KEY param = split1.
IF sy-subrc = 0 .
****** WRITE : / lv_source.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
ELSEIF split1 = 'EXPORTING' OR
split1 = 'IMPORTING' OR
split1 = 'CHANGING' OR
split1 = 'TABLES'.
READ TABLE lt_parame INTO ls_parame WITH KEY field_f = split1+0(1).
CHECK sy-subrc = 0 .
****** WRITE : / lv_source.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
ENDIF.
IF split1+0(13) = 'CALL FUNCTION'.
*** WRITE : / lv_source.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
ENDIF.
ENDLOOP.
lv_source = '.'.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
CLEAR lv_source.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
lv_source = 'CALL FUNCTION' .
CONCATENATE lv_source '''BAPI_TRANSACTION_COMMIT''' INTO lv_source SEPARATED BY space.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
lv_source = 'EXPORTING'.
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
lv_source = ' wait = ABAP_TRUE .' .
APPEND lv_source TO lt_final_code.
APPEND lv_source TO lt_final_code_reduced.
* Each record need separate record
IF p_loop = abap_true AND p_file = abap_true..
CLEAR lv_source_var.
PERFORM write_to_final.
lv_source_var = 'ENDLOOP.'.
PERFORM write_to_final.
ENDIF.
LOOP AT lt_subro INTO lv_source_var.
PERFORM write_to_final.
ENDLOOP.
* DATA : lv_trdir_l TYPE trdir,
* lv_trdir_r TYPE trdir.
IF p_file = abap_true .
CALL SELECTION-SCREEN 2007 STARTING AT 5 10
ENDING AT 75 15.
IF p_prgm IS INITIAL.
ELSE.
PERFORM get_program.
ENDIF.
ENDIF.
*Program Writing
PERFORM insert_prg.
** CALL FUNCTION 'RS_EDTR_SPLIT_SCREEN_EDIT'
** EXPORTING
*** START_WITH_COMPARE = ' '
** display_l = 'X'
** display_r = 'X'
*** MOD_ENABLED_L = 'X'
*** MOD_ENABLED_R = 'X'
*** TEXT_L =
*** TEXT_R =
*** STATE_L =
*** STATE_R =
*** OBJECT_TYPE_L = ' '
*** OBJECT_TYPE_R = ' '
*** TRANSPORT_KEY_L =
*** TRANSPORT_KEY_R =
*** KORRNUM_L =
*** KORRNUM_R =
*** FLG_EXTENSION_CALL = ' '
*** FLG_INACT_ENABLED = ' '
** trdir_wa_l = lv_trdir_l
** trdir_wa_r = lv_trdir_r
*** SMALL_SCREEN = ' '
*** FLG_WITHOUT_DISPLAY = ' '
*** FLG_WITHOUT_INIT_CUS = ' '
*** FLG_TMP_STOR_COMP = ' '
*** FLG_REMOTE_R = ' '
*** IMPORTING
*** COMPARE_RESULT =
** TABLES
** source_l = lt_final_code
** source_r = lt_final_code_reduced
*** LINEINDEX_L =
*** LINEINDEX_R =
*** EXCEPTIONS
*** PARAMETER_INVALID = 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.
ENDFORM. " BAPI
*&---------------------------------------------------------------------*
*& Form F4_HELP1
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f4_help1 .
TYPES:
BEGIN OF lty_final ,
p_tfil TYPE eufunc-nummer,
datum TYPE eufunc-datum,
zeit TYPE eufunc-zeit,
seqid TYPE eufunc-seqid,
END OF lty_final.
DATA : lt_dynf TYPE TABLE OF dynpread,
ls_dynf TYPE dynpread.
DATA : lt_final TYPE TABLE OF lty_final,
ls_final TYPE lty_final.
DATA : lt_map TYPE TABLE OF dselc ,
lt_return_tab TYPE TABLE OF ddshretval,
ls_map TYPE dselc .
ls_dynf-fieldname = 'P_FUNC '.
APPEND ls_dynf TO lt_dynf.
*Getting Screen Filed Value For Function name
CALL FUNCTION 'DYNP_VALUES_READ'
EXPORTING
dyname = sy-repid
dynumb = sy-dynnr
TABLES
dynpfields = lt_dynf.
*Fetching Relavent test data for the Funtion Module
IF lt_dynf IS INITIAL.
ELSE.
READ TABLE lt_dynf INTO ls_dynf INDEX 1.
IF sy-subrc = 0.
SELECT gruppe
name
nummer
seqid
srtf2
datum
zeit FROM eufunc INTO TABLE lt_eufunc WHERE name = ls_dynf-fieldvalue .
IF sy-subrc = 0.
*deleting inactive data ....
DELETE lt_eufunc WHERE nummer = ''.
DELETE lt_eufunc WHERE nummer = 999.
ENDIF.
ENDIF.
ENDIF.
***********
* READ TABLE lt_eufunc INTO ls_eufunc INDEX 1.
* d102n_exportkey-area = ls_eufunc-gruppe ."'STXD'.
* d102n_exportkey-progid = p_func .
* d102n_exportkey-dataid = 999 ."p_tfil .
* d102n_exportkey-seqid = ls_eufunc-seqid .
* CATCH SYSTEM-EXCEPTIONS conne_import_wrong_comp_type = 1.
* IMPORT lt_final
* FROM DATABASE eufunc(FL) ID d102n_exportkey.
* endcatch.
*Move data to final table
LOOP AT lt_eufunc INTO ls_eufunc.
ls_final-p_tfil = ls_eufunc-nummer.
ls_final-datum = ls_eufunc-datum .
ls_final-zeit = ls_eufunc-zeit .
ls_final-seqid = ls_eufunc-seqid .
APPEND ls_final TO lt_final.
CLEAR ls_final.
ENDLOOP.
*Mapping Sceen filed
ls_map-dyfldname = 'P_TFIL'.
ls_map-fldname = 'F0001'.
APPEND ls_map TO lt_map.
CLEAR ls_map.
*Calling F4 function module
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
retfield = 'P_TFIL'"lv_retfield
dynpprog = sy-repid
dynpnr = sy-dynnr
dynprofield = 'P_TFIL'
value_org = 'S'
TABLES
value_tab = lt_final
return_tab = lt_return_tab
dynpfld_mapping = lt_map
EXCEPTIONS
parameter_error = 1
no_values_found = 2
OTHERS = 3.
IF sy-subrc = 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " F4_HELP1
*&---------------------------------------------------------------------*
*& Form GET_BAPI_VALUES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_bapi_values .
*Start of Creating Program Name
CLEAR tfdir.
SELECT SINGLE * FROM tfdir WHERE funcname = p_func.
CALL FUNCTION 'FUNCTION_INCLUDE_SPLIT'
EXPORTING
program = tfdir-pname
IMPORTING
namespace = rs38l-namespace
group = rs38l-str_area
EXCEPTIONS
OTHERS = 6.
IF sy-subrc NE 0.
* message s110 with fname.
LEAVE. "Funktion existiert nicht
ENDIF.
CONCATENATE rs38l-namespace rs38l-str_area INTO rs38l-area.
g_testprog = p_func.
TRANSLATE g_testprog USING ' ='.
g_testprog+30 = 'FT'.
*end of Creating Program Name
REFRESH lt_eufunc.
SELECT gruppe
name
nummer
seqid
srtf2
datum
zeit FROM eufunc INTO TABLE lt_eufunc WHERE name = p_func.
IF sy-subrc = 0.
*deleting inactive data ....
DELETE lt_eufunc WHERE nummer = ''.
DELETE lt_eufunc WHERE nummer = 999.
ENDIF.
*Creating Key fields
READ TABLE lt_eufunc INTO ls_eufunc INDEX 1.
IF sy-subrc = 0.
d102n_exportkey-area = ls_eufunc-gruppe ."'STXD'.
d102n_exportkey-progid = p_func .
d102n_exportkey-dataid = p_tfil .
d102n_exportkey-seqid = ls_eufunc-seqid . "'S'.
ENDIF.
*Import
LOOP AT if_import.
para = if_import-parameter.
lv_s_fil = if_import-dbfield .
lv_field = 'E'. "Import parameter
PERFORM get_values_based_on_structure.
ENDLOOP.
*Export
LOOP AT if_export.
para = if_export-parameter.
lv_s_fil = if_export-dbfield .
lv_field = 'I'. "Exportparameter
PERFORM get_values_based_on_structure.
ENDLOOP.
*Changing
LOOP AT if_change.
para = if_change-parameter.
lv_s_fil = if_change-dbfield .
lv_field = 'C'. "Changing parameter
PERFORM get_values_based_on_structure.
ENDLOOP.
*Tables
LOOP AT if_tables.
CHECK :if_tables-parameter <> 'RETURN',
if_tables-parameter <> 'EXTENSIONIN',
if_tables-parameter <> 'EXTENSIONOUT'.
para = if_tables-parameter.
lv_s_fil = if_tables-dbstruct .
lv_field = 'T'. "Tables parameter
PERFORM get_values_based_on_structure.
ENDLOOP.
*Deleting Return Table parameters
DELETE lt_parame WHERE param = 'RETURN'.
IF p_test = abap_true.
DELETE lt_parame WHERE v_field = ' '.
ENDIF.
ENDFORM. " GET_BAPI_VALUES
*&---------------------------------------------------------------------*
*& Form GET_ALL_FIELDS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_all_fields .
*Import Parameters
LOOP AT if_import.
ls_tabname-tabname = if_import-dbfield.
APPEND ls_tabname TO lt_tabname.
CLEAR ls_tabname.
ENDLOOP.
*if_change Parameters
LOOP AT if_change.
ls_tabname-tabname = if_change-dbfield.
APPEND ls_tabname TO lt_tabname.
CLEAR ls_tabname.
ENDLOOP.
*if_export Parameters
LOOP AT if_export.
ls_tabname-tabname = if_export-dbfield.
APPEND ls_tabname TO lt_tabname.
CLEAR ls_tabname.
ENDLOOP.
*if_tables Parameters
LOOP AT if_tables.
ls_tabname-tabname = if_tables-dbstruct.
APPEND ls_tabname TO lt_tabname.
CLEAR ls_tabname.
ENDLOOP.
IF lt_tabname IS NOT INITIAL.
SELECT * FROM dd03l INTO TABLE it_dd03l
FOR ALL ENTRIES IN lt_tabname
WHERE tabname = lt_tabname-tabname.
SELECT * FROM dd03m INTO TABLE it_dd03m
FOR ALL ENTRIES IN lt_tabname
WHERE tabname = lt_tabname-tabname AND
ddlanguage = 'E'.
DELETE it_dd03m WHERE scrtext_m = 'Updated Info'.
SORT it_dd03m BY intlen.
ENDIF.
ENDFORM. " GET_ALL_FIELDS
*&---------------------------------------------------------------------*
*& Form GET_VALUES_BASED_ON_STRUCTURE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_values_based_on_structure .
IF p_test = abap_true.
CHECK lv_s_fil IS NOT INITIAL.
p_table = lv_s_fil .
CREATE DATA wf_ref TYPE TABLE OF (p_table) .
ASSIGN wf_ref->* TO <value> .
CREATE DATA wf_ref1 LIKE LINE OF <value>.
ASSIGN wf_ref1->* TO <wa_value>.
IF lv_field = 'T'.
* PERFORM parameter_read_input IN PROGRAM (g_testprog) USING para
* d102n_exportkey
* CHANGING <value> .
IF lv_r_time = 1.
PERFORM export_import IN PROGRAM (g_testprog) USING 'II' d102n_exportkey.
* PERFORM export_import IN PROGRAM (g_testprog) USING 'IV' d102n_exportkey.
* PERFORM function_call IN PROGRAM (g_testprog).
lv_r_time = 0.
ENDIF.
CONCATENATE 'I' para INTO lv_para.
PERFORM tables_container IN PROGRAM (g_testprog) TABLES lt_lcont
USING lv_para
'O' ."DIRECTION.
LOOP AT lt_lcont INTO ls_lcont WHERE type = 'u'.
lv_count = lv_count + 1.
ENDLOOP.
DO lv_count TIMES.
PERFORM read_single_value.
ls_lcont_index = ls_lcont_index + 1.
lv_par_index = lv_par_index + 1 .
ENDDO.
ls_lcont_index = 1.
lv_par_index = 1 .
REFRESH lt_lcont.
CLEAR lv_count.
* perFORM PARAMETER_TABLE_gET IN PROGRAM (g_testprog) USING para <value>.
* perFORM PARAMETER_TABLE_sET IN PROGRAM (g_testprog) USING para <value>.
* PERFORM parameter_table_get IN PROGRAM (g_testprog) USING para CHANGING <value>.
* CHECK <value> IS NOT INITIAL.
* READ TABLE <value> INTO <wa_value> INDEX 1.
* CLEAR lv_par_index.
* LOOP AT <value> INTO <wa_value> .
* lv_par_index = sy-tabix.
* PERFORM read_single_value.
* ENDLOOP.
ELSE.
PERFORM parameter_read_input IN PROGRAM (g_testprog) USING para
d102n_exportkey
CHANGING <wa_value> .
lv_par_index = 1.
PERFORM read_single_value.
ENDIF.
ELSE.
lv_par_index = 1.
PERFORM read_single_value.
ENDIF.
ENDFORM. " GET_VALUES_BASED_ON_STRUCTURE
*&---------------------------------------------------------------------*
*& Form GET_BAPI_CODE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_file.
*Download File
DATA :lv_d_file TYPE string.
cl_gui_frontend_services=>get_desktop_directory(
CHANGING
desktop_directory = lv_d_file " Desktop Directory
EXCEPTIONS
cntl_error = 1
error_no_gui = 2
not_supported_by_gui = 3
OTHERS = 4
).
IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
CALL METHOD cl_gui_cfw=>flush.
* CONCATENATE lv_d_file '\' p_func '.XLS' INTO lv_file_path.
CONCATENATE 'C:\Ram kumar\bapi_code\' p_func '.XLS' INTO lv_file_path.
ENDIF.
PERFORM get_alv_input.
*Create Dynamic Structure
FIELD-SYMBOLS: <dyn_table> TYPE STANDARD TABLE,
<dyn_wa> TYPE any,
<dyn_field> TYPE any.
DATA: dy_table TYPE REF TO data,
dy_line TYPE REF TO data.
DATA :lv_sum TYPE i.
LOOP AT lt_parame INTO ls_parame WHERE t_f_indx = 1.
IF lt_o_file IS INITIAL.
ELSE.
CLEAR ls_o_file.
READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_parame-param field = ls_parame-t_field .
CHECK ls_o_file-file = abap_true .
ENDIF.
READ TABLE lt_table_s INTO ls_table_s WITH KEY fieldname = ls_parame-t_field .
IF sy-subrc = 0.
ls_table_s-scrtext_m = ls_parame-t_t_fie .
CONCATENATE ls_parame-param '_' ls_parame-t_t_fie INTO ls_table_s-scrtext_m .
CONCATENATE ls_parame-param '_' ls_parame-t_field INTO ls_table_s-fieldname .
PERFORM check_fieldname.
ELSE.
ls_table_s-scrtext_m = ls_parame-t_t_fie .
ls_table_s-fieldname = ls_parame-t_field .
ENDIF.
ls_table_s-tabname = ls_parame-param .
ls_table_s-datatype = 'CHAR' ."ls_parame-t_f_dt .
ls_table_s-inttype = 'C'."ls_parame-t_f_inty .
lv_length = strlen( ls_parame-param ).
lv_length = lv_length - 1.
lv_str = ls_parame-param+lv_length(1).
IF lv_str = abap_true.
ls_table_s-intlen = 25 .
ELSE.
ls_table_s-intlen = strlen( ls_parame-t_t_fie ) * 2."ls_parame-t_f_inle .
ENDIF.
lv_sum = ls_parame-v_f_le * 2 .
IF ls_table_s-intlen < lv_sum .
ls_table_s-intlen = ls_parame-v_f_le * 2 .
ENDIF.
* ls_table_s-decimals = ls_parame-t_f_de .
APPEND ls_table_s TO lt_table_s .
ls_table_s_temp = ls_table_s .
ls_table_s_temp-scrtext_m = ls_parame-t_t_fie .
ls_table_s_temp-fieldname = ls_parame-t_field .
APPEND ls_table_s_temp TO lt_table_s_temp .
CLEAR ls_table_s.
CLEAR ls_table_s_temp.
ENDLOOP.
DELETE ADJACENT DUPLICATES FROM lt_table_s COMPARING fieldname .
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = lt_table_s
i_length_in_byte = 'X'
IMPORTING
ep_table = lv_s_name.
ASSIGN lv_s_name->* TO <dyn_table>.
CREATE DATA dy_line LIKE LINE OF <dyn_table>.
ASSIGN dy_line->* TO <dyn_wa>.
*lt_parame_temp = lt_parame.
* DATA : lv_p_len TYPE i.
* LOOP AT lt_parame INTO ls_parame.
* lv_p_len = strlen( ls_parame-param ).
* lv_p_len = lv_p_len - 1.
* IF ls_parame-param+lv_p_len(1) = 'X'.
* ELSE.
* APPEND ls_parame TO lt_parame_temp.
* CLEAR ls_parame.
* ENDIF.
* ENDLOOP.
CLEAR lv_count .
*Adding Header Text Data
APPEND <dyn_wa> TO <dyn_table>.
DATA ls_table_index TYPE i VALUE 1.
LOOP AT lt_table_s_temp INTO ls_table_s.
* ls_table_index = sy-tabix.
IF lt_o_file IS INITIAL.
ELSE.
CLEAR ls_o_file.
READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_table_s-tabname field = ls_table_s-fieldname.
CHECK ls_o_file-file = abap_true .
ENDIF.
READ TABLE <dyn_table> INTO <dyn_wa> INDEX 1.
ASSIGN COMPONENT ls_table_index OF STRUCTURE <dyn_wa> TO <dyn_field> .
ls_table_index = ls_table_index + 1.
<dyn_field> = ls_table_s-scrtext_m.
lv_count = lv_count + 1.
MODIFY <dyn_table> FROM <dyn_wa> INDEX 1.
ENDLOOP.
*Adding data to file ....
DATA : lv_data_c TYPE i,
lv_data_i TYPE i VALUE 1.
lt_o_file1 = lt_o_file .
CLEAR ls_table_index .
SORT lt_o_file1 BY index DESCENDING .
READ TABLE lt_o_file1 INTO ls_o_file INDEX 1.
lv_data_c = ls_o_file-index.
CLEAR index.
index1 = 1.
ls_table_index = 1.
index = 2.
DO lv_data_c TIMES.
CLEAR <dyn_wa> .
APPEND <dyn_wa> TO <dyn_table>.
ls_table_index = 1.
DO lv_count TIMES.
CLEAR ls_table_s.
READ TABLE lt_table_s_temp INTO ls_table_s INDEX index1.
index1 = index1 + 1.
IF lt_o_file IS INITIAL.
ELSE.
CLEAR ls_o_file.
READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_table_s-tabname field = ls_table_s-fieldname index = lv_data_i.
* CHECK ls_o_file-file = abap_true .
* IF ls_o_file-value IS INITIAL.
* READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_table_s-tabname field = ls_table_s-fieldname index = 1.
* ENDIF.
ENDIF.
* CLEAR <dyn_wa> .
READ TABLE <dyn_table> INTO <dyn_wa> INDEX index.
ASSIGN COMPONENT ls_table_index OF STRUCTURE <dyn_wa> TO <dyn_field> .
ls_table_index = ls_table_index + 1.
* ASSIGN COMPONENT ls_table_s-fieldname OF STRUCTURE <dyn_wa> TO <dyn_field> .
SHIFT ls_o_file-value LEFT DELETING LEADING space.
IF ls_o_file-value IS NOT INITIAL .
<dyn_field> = ls_o_file-value.
ENDIF.
MODIFY <dyn_table> FROM <dyn_wa> INDEX index.
ENDDO..
CLEAR ls_table_index.
lv_data_i = lv_data_i + 1 .
index = index + 1 .
index1 = 1.
ENDDO.
CALL FUNCTION 'GUI_DOWNLOAD' " TO DOWNLOAD A TEXT DOCUMENT
EXPORTING
filename = lv_file_path
filetype = 'DAT'
TABLES
data_tab = <dyn_table>.
DELETE lt_parame WHERE t_f_indx <> 1 .
ENDFORM. " GET_BAPI_CODE
*&---------------------------------------------------------------------*
*& Form APPEND_LINE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM append_line .
APPEND ls_b_lines TO lt_b_lines.
CLEAR ls_b_lines.
ENDFORM. " APPEND_LINE
*&---------------------------------------------------------------------*
*& Form GET_PRAMETERS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_prameters .
LOOP AT lt_parame INTO ls_parame WHERE param = lv_parameter AND t_f_indx = lv_par_index.
IF ls_parame-field_f = 'T'.
CONCATENATE ' wa_'ls_parame-param'-'ls_parame-t_field ' = '
INTO lv_source_code.
ELSE.
CONCATENATE ' lv_' lv_parameter'-'ls_parame-t_field ' = '
INTO lv_source_code.
ENDIF.
IF p_file = abap_true.
CLEAR ls_o_file.
READ TABLE lt_o_file INTO ls_o_file WITH KEY param = ls_parame-param field = ls_parame-t_field .
IF sy-subrc = 0.
IF ls_o_file-c_field IS INITIAL.
ELSE.
ls_parame-t_field = ls_o_file-c_field .
ENDIF.
ENDIF.
IF ls_o_file-file = abap_true.
CONCATENATE lv_source_code ' ls_file-'ls_parame-t_field'.' INTO lv_source_code.
ELSEIF ls_o_file-h_code = abap_true.
CONCATENATE lv_source_code '''' ls_o_file-value '''' '.' INTO lv_source_code.
ENDIF.
APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
ELSE.
SHIFT ls_parame-v_field LEFT DELETING LEADING space.
CONCATENATE lv_source_code '''' ls_parame-v_field '''' '.' INTO lv_source_code.
APPEND lv_source_code TO lt_source_code.
CLEAR : lv_source_code.
ENDIF.
ENDLOOP.
ENDFORM. " GET_PRAMETERS
*&---------------------------------------------------------------------*
*& Form SPLIT_FM_VARIABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM split_fm_variable .
SPLIT lv_source AT '=' INTO split1 split2 .
split2 = lv_var_name .
CONCATENATE split1 split2 INTO lv_source SEPARATED BY space.
ENDFORM. " SPLIT_FM_VARIABLE
*&---------------------------------------------------------------------*
*& Form WRITE_TO_FINAL
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM write_to_final .
*** WRITE : / lv_source_var.
APPEND lv_source_var TO lt_final_code.
APPEND lv_source_var TO lt_final_code_reduced.
ENDFORM. " WRITE_TO_FINAL
*&---------------------------------------------------------------------*
*& Form SUBROUTINES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM subroutines .
IF p_file = abap_true .
lv_subro = '*&---------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '*& Form FILE_F4_HELP'.
APPEND lv_subro TO lt_subro.
lv_subro = '*&---------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '* text'.
APPEND lv_subro TO lt_subro.
lv_subro = '*----------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '* --> p1 text'.
APPEND lv_subro TO lt_subro.
lv_subro = '* <-- p2 text'.
APPEND lv_subro TO lt_subro.
lv_subro = '*----------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = 'FORM file_f4_help .'.
APPEND lv_subro TO lt_subro.
lv_subro = 'CALL FUNCTION'.
CONCATENATE lv_subro ''' F4_FILENAME''' INTO lv_subro SEPARATED BY space.
APPEND lv_subro TO lt_subro.
lv_subro = 'EXPORTING'.
APPEND lv_subro TO lt_subro.
lv_subro = 'program_name = syst-cprog'.
APPEND lv_subro TO lt_subro.
lv_subro = 'dynpro_number = syst-dynnr'.
APPEND lv_subro TO lt_subro.
lv_subro = 'IMPORTING'.
APPEND lv_subro TO lt_subro.
lv_subro = 'file_name = File.'.
APPEND lv_subro TO lt_subro.
lv_subro = 'ENDFORM. " FILE_F4_HELP.'.
APPEND lv_subro TO lt_subro.
lv_subro = '*&---------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '*& Form UPLOAD_FILE'.
APPEND lv_subro TO lt_subro.
lv_subro = '*&---------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '* text'.
APPEND lv_subro TO lt_subro.
lv_subro = '*----------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = '* --> p1 text'.
APPEND lv_subro TO lt_subro.
lv_subro = '* <-- p2 text'.
APPEND lv_subro TO lt_subro.
lv_subro = '*----------------------------------------------------------------------*'.
APPEND lv_subro TO lt_subro.
lv_subro = 'FORM upload_file .'.
APPEND lv_subro TO lt_subro.
lv_subro = ' DATA: lt_raw TYPE truxs_t_text_data.'.
APPEND lv_subro TO lt_subro.
lv_subro = ' Refresh LT_FILE.'.
APPEND lv_subro TO lt_subro.
lv_subro = ' CALL FUNCTION '.
CONCATENATE lv_subro '''TEXT_CONVERT_XLS_TO_SAP''' INTO lv_subro SEPARATED BY space.
APPEND lv_subro TO lt_subro.
lv_subro = ' EXPORTING'.
APPEND lv_subro TO lt_subro.
lv_subro = '* I_FIELD_SEPERATOR ='.
APPEND lv_subro TO lt_subro.
lv_subro = '* i_line_header = abap_true'.
APPEND lv_subro TO lt_subro.
lv_subro = ' i_tab_raw_data = lt_raw'.
APPEND lv_subro TO lt_subro.
lv_subro = ' i_filename = file'.
APPEND lv_subro TO lt_subro.
lv_subro = ' TABLES'.
APPEND lv_subro TO lt_subro.
lv_subro = ' i_tab_converted_data = Lt_FILE'.
APPEND lv_subro TO lt_subro.
lv_subro = ' EXCEPTIONS'.
APPEND lv_subro TO lt_subro.
lv_subro = ' conversion_failed = 1'.
APPEND lv_subro TO lt_subro.
lv_subro = ' OTHERS = 2.'.
APPEND lv_subro TO lt_subro.
lv_subro = ' IF sy-subrc <> 0.'.
APPEND lv_subro TO lt_subro.
lv_subro = '* Implement suitable error handling here'.
APPEND lv_subro TO lt_subro.
lv_subro = ' ENDIF.'.
APPEND lv_subro TO lt_subro.
lv_subro = 'ENDFORM. " UPLOAD_FILE'.
APPEND lv_subro TO lt_subro.
ENDIF.
ENDFORM. " SUBROUTINES
*&---------------------------------------------------------------------*
*& Form READ_SINGLE_VALUE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_single_value .
READ TABLE it_dd03l INTO ls_dd03l WITH KEY tabname = lv_s_fil.
IF sy-subrc = 0."IF table or structure
SORT it_dd03l BY position.
LOOP AT it_dd03l INTO ls_dd03l WHERE tabname = lv_s_fil.
IF ls_dd03l-datatype IS NOT INITIAL.
ls_parame-param = para.
ls_parame-struct = lv_s_fil ."if_import-dbfield .
ls_parame-field_f = lv_field.
ls_parame-t_field = ls_dd03l-fieldname .
ls_parame-t_f_dt = ls_dd03l-datatype.
ls_parame-t_f_de = ls_dd03l-decimals.
ls_parame-t_f_inle = ls_dd03l-intlen.
ls_parame-t_f_inty = ls_dd03l-inttype.
ls_parame-t_f_le = ls_dd03l-leng.
ls_parame-t_f_po = ls_dd03l-position.
ls_parame-v_f_le = ls_dd03l-leng .
ls_parame-t_f_dl = ls_dd03l-decimals.
ls_parame-v_f_po = ls_dd03l-position.
ls_parame-t_f_indx = lv_par_index .
READ TABLE it_dd03m INTO ls_dd03m WITH KEY tabname = lv_s_fil fieldname = ls_dd03l-fieldname .
IF sy-subrc = 0.
ls_parame-t_t_fie = ls_dd03m-scrtext_m .
ENDIF.
IF p_test = abap_true AND lv_field <> 'T'.
ASSIGN ls_dd03l-fieldname TO <field>.
ASSIGN COMPONENT <field> OF STRUCTURE <wa_value> TO <field_val> .
ls_parame-v_field = <field_val> .
ELSEIF lv_field = 'T'.
ls_lcont_index = ls_lcont_index + 1.
READ TABLE lt_lcont INTO ls_lcont INDEX ls_lcont_index.
IF sy-subrc = 0.
ls_parame-v_field = ls_lcont-value.
ENDIF.
ENDIF.
IF ls_parame-v_field IS INITIAL .
IF p_file = abap_false.
APPEND ls_parame TO lt_parame.
CLEAR ls_parame.
ENDIF.
ELSE.
IF ls_parame-v_field CS '0' AND ls_parame-t_f_le < 100..
IF ls_parame-v_field CA '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_' .
ELSE.
CHECK ls_parame-v_field > 0 .
ENDIF.
ENDIF.
APPEND ls_parame TO lt_parame.
ENDIF.
CLEAR ls_parame.
ENDIF.
ENDLOOP.
ELSE . "IF variables
ls_parame-param = para.
ls_parame-field_f = lv_field.
ls_parame-t_field = para .
IF p_test = abap_true.
ls_parame-v_field = <wa_value> .
ENDIF.
IF ls_parame-v_field IS INITIAL .
ELSE.
IF ls_parame-v_field CS '0'.
IF ls_parame-v_field CA '123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_' .
ELSE.
CHECK ls_parame-v_field > 0 .
ENDIF.
ENDIF.
APPEND ls_parame TO lt_parame.
ENDIF.
CLEAR ls_parame.
ENDIF.
ENDFORM. " READ_SINGLE_VALUE
*&---------------------------------------------------------------------*
*& Form GET_ALV_INPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_alv_input .
IF lt_o_file IS INITIAL.
LOOP AT lt_parame INTO ls_parame ." WHERE t_f_indx = 1.
ls_o_file-param = ls_parame-param.
ls_o_file-field = ls_parame-t_field.
ls_o_file-value = ls_parame-v_field.
ls_o_file-index = ls_parame-t_f_indx.
ls_o_file-lenght = ls_parame-t_f_le.
"set field to disabled
ls_stylerow-fieldname = 'T_TABLE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
CLEAR ls_o_file-f_style.
APPEND ls_stylerow TO ls_o_file-f_style.
ls_stylerow-fieldname = 'T_FIELD' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'T_COND' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'SLECT' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
APPEND ls_o_file TO lt_o_file.
CLEAR ls_o_file.
ENDLOOP.
ELSE.
CLEAR index.
*GREEN value '@08@'. "#EC NOTEXT
*INFO value '@0S@'. "#EC NOTEXT
*RED value '@0A@'. "#EC NOTEXT
SELECT * FROM dd03l INTO TABLE it_dd03l_temp
FOR ALL ENTRIES IN lt_o_file
WHERE tabname = lt_o_file-t_table.
LOOP AT lt_o_file INTO ls_o_file WHERE index = 1.
index = sy-tabix .
IF ls_o_file-table IS INITIAL AND
ls_o_file-h_code IS INITIAL AND
ls_o_file-file IS INITIAL.
ls_o_file-icon = '@0A@' .
ls_o_file-message = 'Please select any one (TABLE ,HARD_CODE,FILE)'.
ELSEIF ls_o_file-table IS NOT INITIAL AND
ls_o_file-h_code IS INITIAL AND
ls_o_file-file IS INITIAL.
READ TABLE it_dd03l_temp INTO ls_dd03l_temp WITH KEY tabname = ls_o_file-t_table.
IF sy-subrc = 0.
CLEAR ls_dd03l_temp.
READ TABLE it_dd03l_temp INTO ls_dd03l_temp WITH KEY fieldname = ls_o_file-t_field.
IF sy-subrc = 0.
ls_o_file-icon = '@08@' .
ls_o_file-message = 'No error...'.
ELSE.
ls_o_file-icon = '@0A@' .
ls_o_file-message = 'Field not exit'.
ENDIF.
ELSE.
ls_o_file-icon = '@0A@' .
ls_o_file-message = 'Table not exit'.
ENDIF.
ELSE.
ls_o_file-icon = '@08@' .
ls_o_file-message = 'No error...'.
ENDIF.
MODIFY lt_o_file FROM ls_o_file INDEX index .
ENDLOOP.
ENDIF.
REFRESH lt_fcat .
IF lv_alv_c <> 1 .
PERFORM fcat USING 'ICON' 'STATUS' .
PERFORM fcat USING 'MESSAGE' 'MESSAGE'.
ENDIF.
PERFORM fcat USING 'PARAM' 'Patameters'.
PERFORM fcat USING 'FIELD' 'Field Name'.
PERFORM fcat USING 'VALUE' 'Field Value' .
PERFORM fcat USING 'TABLE' 'Table Name & Parameters'.
PERFORM fcat USING 'H_CODE' 'Hard Code'.
PERFORM fcat USING 'FILE' 'Input from file '.
PERFORM fcat USING 'SLECT' 'Definition'.
PERFORM fcat USING 'T_TABLE' 'Table Name'.
PERFORM fcat USING 'T_FIELD' 'Field Name'.
PERFORM fcat USING 'T_COND' 'Condition'.
* ls_lay-colwidth_optimize = abap_true.
ls_lay-stylefname = 'F_STYLE'.
* ls_lay-zebra = abap_true.
* Event for Data Changed
la_evts-name = 'DATA_CHANGED'.
la_evts-form = 'GET_DATA_CHANGED'.
APPEND la_evts TO lt_evts.
*Show only index 1
lt_o_file1 = lt_o_file.
DELETE lt_o_file1 WHERE index <> 1 .
PERFORM call_alv.
IF sy-subrc <> 0.
* Implement suitable error handling here
ELSE.
lv_alv_c = 2.
ENDIF.
* BREAK-POINT.
IF sy-ucomm = '&IC1'.
ENDIF.
IF sy-ucomm = '&AC1'.
lv_qus = 'Do you want exit'.
PERFORM popup_to_confirm.
IF lv_ans = '1'.
EXIT.
ENDIF.
ENDIF.
CLEAR ls_o_file .
READ TABLE lt_o_file1 INTO ls_o_file INDEX 1.
IF ls_o_file-icon IS INITIAL.
PERFORM get_alv_input.
ELSE.
CLEAR ls_o_file .
READ TABLE lt_o_file1 INTO ls_o_file WITH KEY icon = '@0A@'.
IF sy-subrc = 0.
PERFORM get_alv_input.
ENDIF.
ENDIF.
ENDFORM. " GET_ALV_INPUT
*&---------------------------------------------------------------------*
*& Form USER_COMMAND
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->R_UCOMM text
* -->RS_SELFIELD text
*----------------------------------------------------------------------*
FORM user_command USING r_ucomm TYPE sy-ucomm
rs_selfield TYPE slis_selfield.
CASE r_ucomm.
WHEN '&IC1'.
* BREAK-POINT.
CLEAR ls_o_file.
READ TABLE lt_o_file1 INTO ls_o_file INDEX rs_selfield-tabindex .
IF ls_o_file IS INITIAL.
ELSE.
IF rs_selfield-fieldname = 'TABLE'.
ls_o_file-table = abap_true.
ls_o_file-h_code = ''.
ls_o_file-file = ''.
ls_o_file-slect = ''.
ELSEIF rs_selfield-fieldname = 'H_CODE'.
ls_o_file-table = '' .
ls_o_file-h_code = abap_true.
ls_o_file-file = ''.
ls_o_file-slect = ls_o_file-value .
ELSEIF rs_selfield-fieldname = 'FILE'.
ls_o_file-table = '' .
ls_o_file-h_code = ''.
ls_o_file-file = abap_true.
ls_o_file-slect = ''.
ENDIF.
DATA : lv_var TYPE char100.
LOOP AT lt_o_file INTO ls_o_file1 WHERE param = ls_o_file-param AND field = ls_o_file-field.
index1 = sy-tabix .
index = ls_o_file1-index .
lv_var = ls_o_file1-value.
ls_o_file1 = ls_o_file .
ls_o_file1-value = lv_var.
ls_o_file1-index = index.
*update same data in different index
* MODIFY lt_o_file1 FROM ls_o_file INDEX sy-tabix.
MODIFY lt_o_file FROM ls_o_file1 INDEX sy-tabix .
ENDLOOP.
* update based on screen fields
MODIFY lt_o_file1 FROM ls_o_file INDEX rs_selfield-tabindex .
* MODIFY lt_o_file FROM ls_o_file INDEX rs_selfield-tabindex .
* PERFORM call_alv.
PERFORM set_specific_field_attributes.
*sET cURSOR POSITION
* PERFORM SET_CURSOR USING rs_selfield-tabindex.
PERFORM get_data_changed .
ENDIF.
WHEN '&AC1'.
DATA : ans VALUE 1.
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Exit '
text_question = 'Do you want exit'"text_question
IMPORTING
answer = ans
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
IF ans = 1.
EXIT.
ENDIF.
* ENDIF.
WHEN 'SAVE'.
* gv_testrun = abap_true.
* PERFORM process_UOM USING gv_testrun.
* PERFORM display_log.
WHEN 'BACK1' OR 'EXIT' OR 'LEAVE'.
* LEAVE TO SCREEN 0.
WHEN '&ONT'.
*** *Getting Screen Value to intenal table
** DATA: gd_repid LIKE sy-repid, "Exists
** ref_grid TYPE REF TO cl_gui_alv_grid.
** IF ref_grid IS INITIAL.
** CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
** IMPORTING
** e_grid = ref_grid.
** ENDIF.
** IF NOT ref_grid IS INITIAL.
** CALL METHOD ref_grid->check_changed_data .
** ENDIF.
*DATA : ROW_NO TYPE lvc_s_row.
**set the focus of cursor in ALV
*ROW_NO = rs_selfield-tabindex .
*CALL METHOD ref_grid->set_current_cell_via_id
*EXPORTING
*is_row_no = rs_selfield-tabindex. "row number where you want to focus the cursor
ENDCASE..
* rs_selfield-refresh = 'X'.
* rs_selfield-tabindex = rs_selfield-tabindex.
CLEAR sy-ucomm .
ENDFORM. "USER_COMMAND
*&---------------------------------------------------------------------*
*& Form FCAT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_3261 text
* -->P_3262 text
*---------------------------------------------------------------------*
FORM fcat USING field desc.
ls_fcat-fieldname = field .
ls_fcat-scrtext_m = desc .
IF field = 'TABLE' OR field = 'H_CODE' OR field ='FILE' .
ls_fcat-checkbox = abap_true.
ls_fcat-edit = abap_true.
ls_fcat-hotspot = abap_true.
ENDIF.
IF field = 'SLECT' OR
field = 'T_TABLE' OR
field = 'T_FIELD' OR
field = 'T_COND' .
ls_fcat-edit = abap_true.
ls_fcat-intlen = 25.
* ls_fcat-hotspot = abap_true.
ENDIF.
APPEND ls_fcat TO lt_fcat.
CLEAR ls_fcat.
ENDFORM. " FCAT
*&---------------------------------------------------------------------*
*& Form CALL_ALV
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM call_alv .
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY_LVC'
EXPORTING
is_layout_lvc = ls_lay
it_fieldcat_lvc = lt_fcat
i_callback_program = sy-repid
i_callback_user_command = 'USER_COMMAND'
* IT_EVENTS = LT_EVTS
* I_CALLBACK_PF_STATUS_SET = 'SET_PF_STATUS'
i_screen_start_column = 10
i_screen_start_line = 10
i_screen_end_column = 130
i_screen_end_line = 30
* i_save = 'X'
TABLES
t_outtab = lt_o_file1
EXCEPTIONS
program_error = 1
OTHERS = 2.
ENDFORM. " CALL_ALV
*&---------------------------------------------------------------------*
*& Form SET_SPECIFIC_FIELD_ATTRIBUTES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM set_specific_field_attributes .
* Populate style variable (FIELD_STYLE) with style properties
*
* The NETPR field/column has been set to editable in the fieldcatalog...
* The following code sets it to be disabled(display only) if 'NETPR'
* is gt than 10.
LOOP AT lt_o_file1 INTO ls_o_file.
IF ls_o_file-h_code = abap_true ."OR ls_o_file-file = abap_true.
ls_stylerow-fieldname = 'T_TABLE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
CLEAR ls_o_file-f_style. "set field to disabled
APPEND ls_stylerow TO ls_o_file-f_style.
CLEAR ls_stylerow.
ls_stylerow-fieldname = 'T_FIELD' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'T_COND' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'SLECT' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
MODIFY lt_o_file1 FROM ls_o_file.
* MODIFY lt_o_file FROM ls_o_file.
CLEAR ls_o_file.
ELSEIF ls_o_file-table = abap_true.
ls_stylerow-fieldname = 'T_TABLE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
CLEAR ls_o_file-f_style. "set field to disabled
APPEND ls_stylerow TO ls_o_file-f_style.
CLEAR ls_stylerow.
ls_stylerow-fieldname = 'T_FIELD' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'T_COND' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_enabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'SLECT' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
MODIFY lt_o_file1 FROM ls_o_file.
* MODIFY lt_o_file FROM ls_o_file.
CLEAR ls_o_file.
ELSEIF ls_o_file-file = abap_true.
ls_stylerow-fieldname = 'T_TABLE' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
CLEAR ls_o_file-f_style. "set field to disabled
APPEND ls_stylerow TO ls_o_file-f_style.
CLEAR ls_stylerow.
ls_stylerow-fieldname = 'T_FIELD' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'T_COND' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
ls_stylerow-fieldname = 'SLECT' .
ls_stylerow-style = cl_gui_alv_grid=>mc_style_disabled.
"set field to disabled
INSERT ls_stylerow INTO TABLE ls_o_file-f_style .
MODIFY lt_o_file1 FROM ls_o_file.
* MODIFY lt_o_file FROM ls_o_file.
CLEAR ls_o_file.
ENDIF .
ENDLOOP.
ENDFORM. " SET_SPECIFIC_FIELD_ATTRIBUTES
*&---------------------------------------------------------------------*
*& Form CHECK_FIELDNAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM check_fieldname .
READ TABLE lt_table_s INTO ls_table_s WITH KEY fieldname = ls_table_s-fieldname .
IF sy-subrc = 0.
* ls_table_s-scrtext_m = ls_parame-t_t_fie .
CONCATENATE ls_parame-param '_' ls_parame-t_t_fie 'X' INTO ls_table_s-scrtext_m .
CONCATENATE ls_parame-param '_' ls_parame-t_field 'X' INTO ls_table_s-fieldname .
ENDIF.
ENDFORM. " CHECK_FIELDNAME
*&---------------------------------------------------------------------*
*& Form get_data_changed
*&---------------------------------------------------------------------*
* Here we will get the current cell and than add 1 to it to move
* to next row. Than we will call the method to set the new row
*----------------------------------------------------------------------*
FORM get_data_changed ."USING RR_DATA_CHANGED
* TYPE REF TO CL_ALV_CHANGED_DATA_PROTOCOL.*
DATA: lo_grid TYPE REF TO cl_gui_alv_grid.
*
DATA: le_row TYPE i,
le_value TYPE c,
le_col TYPE i,
les_row_id TYPE lvc_s_row,
les_col_id TYPE lvc_s_col,
les_row_no TYPE lvc_s_roid.
* Get the ALV Object reference
CALL FUNCTION 'GET_GLOBALS_FROM_SLVC_FULLSCR'
IMPORTING
e_grid = lo_grid.
* Get the Current Cell
CALL METHOD lo_grid->get_current_cell
IMPORTING
e_row = le_row
e_value = le_value
e_col = le_col
es_row_id = les_row_id
es_col_id = les_col_id
es_row_no = les_row_no.
*Get Screen Update
CALL METHOD lo_grid->refresh_table_display.
* Set Cursor
CALL METHOD lo_grid->set_current_cell_via_id
EXPORTING
is_row_id = les_row_id
is_column_id = les_col_id
is_row_no = les_row_no.
ENDFORM. "get_data_changed
*&---------------------------------------------------------------------*
*& Form POPUP_TO_CONFIRM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM popup_to_confirm .
CALL FUNCTION 'POPUP_TO_CONFIRM'
EXPORTING
titlebar = 'Confirmation Message'
text_question = lv_qus "text_question
IMPORTING
answer = lv_ans
EXCEPTIONS
text_not_found = 1
OTHERS = 2.
IF sy-subrc <> 0.
* Implement suitable error handling here
ENDIF.
ENDFORM. " POPUP_TO_CONFIRM
*&---------------------------------------------------------------------*
*& Form GET_PROGRAM
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_program .
DATA :rs38m_programm TYPE trdir-name,
mode TYPE c,
l_edit TYPE c,
trdir TYPE trdir .
CALL FUNCTION 'RS_EDTR_ATTR_ADD'
EXPORTING
program_name = p_prgm
activate_immediately = 'X'
IMPORTING
leaved_with_mode = mode
leave_to_editor = l_edit
CHANGING
program_trdir = trdir
EXCEPTIONS
program_name_missing = 1
program_exists = 2
wrong_parameter_value = 3
OTHERS = 4.
IF sy-subrc NE 0.
* IF sy-msgty NE space.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
lv_qus = 'Program name adlready available do you want continue'.
PERFORM popup_to_confirm.
IF lv_ans = '1'.
*****************Delete Progarm----------------------------------------*
DATA: l_devclass LIKE tadir-devclass.
CALL FUNCTION 'RS_PROGRAM_GET_DEVCLASS'
EXPORTING
progname = p_prgm
IMPORTING
devclass = l_devclass
EXCEPTIONS
OTHERS.
CALL FUNCTION 'RS_DELETE_PROGRAM'
EXPORTING
program = p_prgm
suppress_popup = ' '
tadir_devclass = l_devclass
EXCEPTIONS
enqueue_lock = 1
object_not_found = 2
permission_failure = 3
reject_deletion = 5 "abbr. in popup
OTHERS = 4.
* p_subrc = sy-subrc.
* IF sy-msgno = '055'. p_subrc = 1. ENDIF. "progr. gesperrt
* IF p_subrc < 5.
* MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
*****************Delete Progarm----------------------------------------*
* PERFORM create_code_with_se38.
* DO 5 TIMES.
* CLEAR wa_line .
* APPEND wa_line TO it_line.
* ENDDO.
* it_line = lt_final_code_reduced .
* INSERT REPORT p_prgm FROM it_line.
* SET PARAMETER ID 'RID' FIELD p_prgm .
* CALL TRANSACTION 'SE38'.
** skip TO LINE 50000 .
* ELSE.
CALL SELECTION-SCREEN 2007 STARTING AT 5 10
ENDING AT 75 15.
PERFORM get_program.
ENDIF.
* ELSE.
** insert report *******************************************************
* DO 5 TIMES.
* CLEAR wa_line .
* APPEND wa_line TO it_line.
* ENDDO.
* it_line = lt_final_code_reduced .
* INSERT REPORT p_prgm FROM it_line.
** PERFORM create_code_with_se38.
* SET PARAMETER ID 'RID' FIELD p_prgm .
* CALL TRANSACTION 'SE38'.
ENDIF.
ENDFORM. " GET_PROGRAM
*&---------------------------------------------------------------------*
*& Form CREATE_CODE_WITH_SE38
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM create_code_with_se38 .
REFRESH it_line.
DO 5 TIMES.
CLEAR wa_line .
APPEND wa_line TO it_line.
ENDDO.
it_line = lt_final_code_reduced .
PERFORM bdc_dynpro USING 'SAPLWBABAP' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RS38M-PROGRAMM'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=CHAP'."'=NEW'.
PERFORM bdc_field USING 'RS38M-PROGRAMM'
p_prgm . "'zram_new007'.
PERFORM bdc_field USING 'RS38M-FUNC_EDIT'
'X'.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ED_ENTER'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSTXP-TDLINE(02)'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
' 1'.
CLEAR lv_str.
CONCATENATE 'REPORT ' p_prgm '.' INTO lv_str SEPARATED BY space.
PERFORM bdc_field USING 'RSTXP-TDLINE(01)'
lv_str.
* 'REPORT ZRAM_NEW007.'.
PERFORM bdc_field USING 'RSTXP-TDLINE(02)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(03)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(04)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(05)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(06)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(07)'
''.
PERFORM bdc_field USING 'RSTXP-TDLINE(09)'
''.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ED_ENTER'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSTXP-TDLINE(10)'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
' 1'.
CLEAR bdc_count.
count = 2 .
bdc_count = 2.
*bdc_edi_count = 1.
bdc_edi_count = 2.
LOOP AT it_line INTO wa_line.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ED_ENTER'.
CONCATENATE 'RSTXP-TDLINE('count')' INTO data.
PERFORM bdc_field USING 'BDC_CURSOR'
data."'RSTXP-TDLINE('count')'.
IF bdc_count => 19.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
bdc_edi_count.
bdc_edi_count = bdc_edi_count + 1 .
ELSE.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
'1'.
ENDIF.
CONCATENATE 'RSTXP-TDLINE('count')' INTO data.
PERFORM bdc_field USING data "'RSTXP-TDLINE('count')'
wa_line.
IF count < 19.
count = count + 1.
ELSE.
count = 19.
ENDIF.
bdc_count = bdc_count + 1 .
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WB_CHECK'.
CONCATENATE 'RSTXP-TDLINE('count')' INTO data.
PERFORM bdc_field USING 'BDC_CURSOR'
data."'RSTXP-TDLINE(13)'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
'1'.
PERFORM bdc_dynpro USING 'SAPLS38E' '0400'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=WB_ACTIVATE'.
PERFORM bdc_field USING 'BDC_CURSOR'
data ." 'RSTXP-TDLINE(13)'.
PERFORM bdc_field USING 'RSTXP-TDFIRST'
'1'."bdc_count.
CALL TRANSACTION 'SE38' USING it_bdc MODE 'E' .
IF sy-subrc = 0.
CLEAR lv_str.
CONCATENATE 'Report :' p_prgm ' Created Succcessfully' INTO lv_str.
MESSAGE lv_str TYPE 'I'.
ENDIF.
ENDFORM. " CREATE_CODE_WITH_SE38
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0090 text
* -->P_0091 text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING value(p_0090)
value(p_0091).
wa_bdc-program = p_0090.
wa_bdc-dynpro = p_0091.
wa_bdc-dynbegin = 'X'.
APPEND wa_bdc TO it_bdc.
CLEAR wa_bdc.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_0105 text
* -->P_0106 text
*----------------------------------------------------------------------*
FORM bdc_field USING value(p_0105)
value(p_0106).
wa_bdc-fnam = p_0105.
wa_bdc-fval = p_0106.
CONDENSE wa_bdc-fval.
APPEND wa_bdc TO it_bdc.
CLEAR wa_bdc .
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------*
*& Form GET_NON_DUBLICATE_FILED
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_non_dublicate_filed .
* DATA lv_co TYPE c.
* CLEAR ls_o_file1.
* READ TABLE lt_o_file2 INTO ls_o_file1 WITH KEY field = ls_o_file-field.
* IF sy-subrc = 0.
* lv_co = lv_count .
* CONCATENATE ls_o_file-field '_' lv_co INTO ls_o_file-c_field .
* MODIFY lt_o_file FROM ls_o_file.
* ls_o_file-field = ls_o_file-c_field.
* PERFORM get_non_dublicate_filed.
* ELSE.
index = index + 1 .
DATA count(3) TYPE c.
count = index.
SHIFT count LEFT DELETING LEADING space.
CONCATENATE ls_o_file-field'_'count INTO ls_o_file-c_field.
* APPEND ls_o_file TO lt_o_file2.
MODIFY lt_o_file FROM ls_o_file INDEX index1.
* ENDIF.
ENDFORM. " GET_NON_DUBLICATE_FILED
*&---------------------------------------------------------------------*
*& Form INSERT_PRG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM insert_prg .
CHECK p_prgm IS NOT INITIAL .
DO 5 TIMES.
CLEAR wa_line .
APPEND wa_line TO it_line.
ENDDO.
it_line = lt_final_code_reduced .
INSERT REPORT p_prgm FROM it_line.
SET PARAMETER ID 'RID' FIELD p_prgm .
CALL TRANSACTION 'SE38'.
* skip TO LINE 50000 .
* ELSE.
* CALL SELECTION-SCREEN 2007 STARTING AT 5 10
* ENDING AT 75 15.
* PERFORM get_program.
* ENDIF.
* ELSE.
** insert report *******************************************************
* DO 5 TIMES.
* CLEAR wa_line .
* APPEND wa_line TO it_line.
* ENDDO.
* it_line = lt_final_code_reduced .
* INSERT REPORT p_prgm FROM it_line.
** PERFORM create_code_with_se38.
* SET PARAMETER ID 'RID' FIELD p_prgm .
* CALL TRANSACTION 'SE38'.
ENDFORM. " INSERT_PRG
*&---------------------------------------------------------------------*
*& Form GET_DECLARATION_PART
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM get_declaration_part .
CLEAR lv_source_var.
PERFORM write_to_final.
CONCATENATE 'report'
p_prgm
INTO lv_source_var SEPARATED BY space.
PERFORM write_to_final.
lv_source_var = ' no standard page heading line-size 255.'..
PERFORM write_to_final.CLEAR lv_source_var.
PERFORM write_to_final.
PERFORM write_to_final.
lv_source_var = 'TYPES : BEGIN OF LTS_FILE,'.
PERFORM write_to_final.
IF p_file = abap_true.
CLEAR : index1,index.
LOOP AT lt_o_file INTO ls_o_file WHERE file = abap_true.
index1 = sy-tabix.
CLEAR lv_count.
IF ls_o_file-file = abap_true AND ls_o_file-index = 1.
PERFORM get_non_dublicate_filed.
CLEAR lv_source_var .
IF ls_o_file-lenght IS INITIAL.
ls_o_file-lenght = 1.
ENDIF.
SHIFT ls_o_file-lenght LEFT DELETING LEADING '0'.
SHIFT ls_o_file-lenght LEFT DELETING LEADING space.
* CONCATENATE ls_parame-field_f'_'ls_o_file-field'('ls_o_file-lenght')' ' TYPE C,' INTO lv_source_var.
IF ls_o_file-c_field IS INITIAL.
ELSE.
ls_o_file-field = ls_o_file-c_field.
ENDIF.
*space adjusment
lv_source_var1 = '11111111'.
DO 7 TIMES.
* CONCATENATE '' lv_source_var1 INTO lv_source_var1 SEPARATED BY space.
REPLACE '1' WITH space INTO lv_source_var1.
ENDDO.
CONCATENATE lv_source_var1 ls_o_file-field'('ls_o_file-lenght'),' INTO lv_source_var." ' TYPE C,'
REPLACE '1' WITH space INTO lv_source_var.
PERFORM write_to_final.
ENDIF.
CLEAR ls_o_file.
ENDLOOP.
ELSE.
LOOP AT lt_parame INTO ls_parame.
CLEAR lv_source_var .
IF ls_parame-v_f_le IS INITIAL.
ls_parame-v_f_le = 1.
ENDIF.
SHIFT ls_parame-v_f_le LEFT DELETING LEADING '0'.
SHIFT ls_parame-v_f_le LEFT DELETING LEADING space.
CONCATENATE ls_parame-field_f'_'ls_parame-t_field'('ls_parame-v_f_le')' ' TYPE C,' INTO lv_source_var.
PERFORM write_to_final.
ENDLOOP.
ENDIF.
lv_source_var = ' END OF LTS_FILE.'.
PERFORM write_to_final.
CLEAR lv_source_var.
PERFORM write_to_final.
lv_source_var = 'Data: lt_file type table of lts_file.'.
PERFORM write_to_final.
lv_source_var = 'Data: ls_file type ltS_file. '.
PERFORM write_to_final.
CLEAR lv_source_var.
PERFORM write_to_final.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.'.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'PARAMETERS : file TYPE rlgrap-filename OBLIGATORY.'.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'SELECTION-SCREEN END OF BLOCK b1.'.
APPEND lv_source_var TO lt_source_var.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'AT SELECTION-SCREEN ON VALUE-REQUEST FOR file.'.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'PERFORM file_f4_help.'.
APPEND lv_source_var TO lt_source_var.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
lv_source_var = '*---------------------------*&' .
APPEND lv_source_var TO lt_source_var.
lv_source_var = '*START-OF-SELECTION'.
APPEND lv_source_var TO lt_source_var.
lv_source_var = '*---------------------------*&' .
APPEND lv_source_var TO lt_source_var.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
lv_source_var = 'PERFORM UPLOAD_FILE.'.
APPEND lv_source_var TO lt_source_var.
CLEAR lv_source_var.
APPEND lv_source_var TO lt_source_var.
* Adding F4_help subroutine.
* ENDIF.
PERFORM subroutines.
ENDFORM. " GET_DECLARATION_PART
No comments:
Post a Comment