Hello Friends,
I have developed a program to copy the data in a table to APp Server and its workign fine. The program is Dynamic and I pass the table name on the selection screen. IT had problems when writing to APP server for data Type P but that is now solved and am able to write. but Ma having problem in the other way. I mean copying the same data to IT from Application server.
Below is the code
Ster.
REPORT ywmm_table_dump.
TABLES :
dd03l.
* Type spool declaration
TYPE-POOLS :
abap, slis.
DATA : i_table_data1 TYPE REF TO data,
i_table_final TYPE REF TO data.
DATA : it_dd03l LIKE dd03l OCCURS 0 WITH HEADER LINE.
DATA : i_fcat TYPE STANDARD TABLE OF lvc_s_fcat,
l_fcat LIKE lvc_s_fcat OCCURS 0 WITH HEADER LINE,
l_dr_line TYPE REF TO data,
l_v_as4vers TYPE as4vers.
FIELD-SYMBOLS: <f_field> TYPE ANY.
DATA : BEGIN OF i_output OCCURS 0.
DATA : sdata(10000) TYPE c.
DATA : END OF i_output.
DATA line_cursor TYPE lvc_s_fcat-intlen.
FIELD-SYMBOLS: <f_table_data1> TYPE STANDARD TABLE,
<f_wa_table_data1> TYPE ANY,
<f_table_final> TYPE STANDARD TABLE,
<f_wa_table_final> TYPE ANY.
SELECTION-SCREEN: BEGIN OF BLOCK bl1 WITH FRAME TITLE text-001.
PARAMETERS: rb_copy RADIOBUTTON GROUP map DEFAULT 'X',
rb_rest RADIOBUTTON GROUP map.
SELECTION-SCREEN: END OF BLOCK bl1.
SELECTION-SCREEN: BEGIN OF BLOCK bl2 WITH FRAME TITLE text-002.
PARAMETERS: p_table TYPE tabname OBLIGATORY,
p_plfld TYPE dd03l-fieldname.
SELECTION-SCREEN SKIP 1.
PARAMETERS: p_bkfile TYPE localfile OBLIGATORY.
SELECTION-SCREEN: END OF BLOCK bl2.
*Start of Selection
SELECT *
FROM dd03l
INTO TABLE it_dd03l
WHERE tabname = p_table
AND as4local = 'A'
AND as4vers = l_v_as4vers
AND ( comptype = 'E' OR comptype = space ).
PERFORM get_data.
IF rb_copy = 'X'.
PERFORM backup.
ELSEIF rb_rest = 'X'.
PERFORM database_update.
ENDIF.
*&---------------------------------------------------------------------*
*& Form get_data
*&---------------------------------------------------------------------*
FORM get_data.
CLEAR i_fcat.
REFRESH i_fcat.
CALL FUNCTION 'LVC_FIELDCATALOG_MERGE'
EXPORTING
i_structure_name = p_table " Table Name
CHANGING
ct_fieldcat = i_fcat
EXCEPTIONS
OTHERS = 1.
CALL METHOD cl_alv_table_create=>create_dynamic_table
EXPORTING
it_fieldcatalog = i_fcat
IMPORTING
ep_table = i_table_data1.
IF sy-subrc = 0.
ASSIGN i_table_data1->* TO <f_table_data1>.
ELSE.
WRITE: 'Error creating internal table'.
ENDIF.
IF rb_copy = 'X'.
SELECT * FROM (p_table) INTO CORRESPONDING FIELDS OF
TABLE <f_table_data1> UP TO 20 ROWS.
ELSEIF rb_rest = 'X'.
CREATE DATA l_dr_line LIKE LINE OF <f_table_data1>.
ASSIGN l_dr_line->* TO <f_wa_table_data1>.
*Get Data from Application Server
* Opening the dataset P_BKFILE given in the selection screen
TRANSLATE p_bkfile TO LOWER CASE.
OPEN DATASET p_bkfile FOR INPUT IN TEXT MODE." ENCODING DEFAULT.
IF sy-subrc NE 0.
* MESSAGE:
ELSE.
DO.
* Reading the file from application server
* READ DATASET p_bkfile INTO <f_wa_table_data1>.
READ DATASET p_bkfile INTO i_output.
IF sy-subrc = 0.
* APPEND <f_wa_table_data1> TO <f_table_data1>.
APPEND i_output.
ELSE.
EXIT.
ENDIF.
ENDDO.
* Closing the dataset
CLOSE DATASET p_bkfile.
ENDIF.
****
LOOP AT i_output. *" Problem is here*
MOVE i_output TO <f_wa_table_data1>. " dyn table using p_table
APPEND <f_wa_table_data1> TO <f_table_data1>.
ENDLOOP.
ENDIF.
ENDFORM. " get_data
*&---------------------------------------------------------------------*
*& Form backup
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM backup.
TRANSLATE p_bkfile TO LOWER CASE.
OPEN DATASET p_bkfile FOR OUTPUT IN TEXT MODE.
IF sy-subrc NE 0.
WRITE: text-017.
STOP.
ELSE.
LOOP AT <f_table_data1> ASSIGNING <f_wa_table_data1>.
CLEAR : line_cursor.
LOOP AT i_fcat INTO l_fcat.
IF l_fcat-inttype EQ 'P'.
ASSIGN COMPONENT l_fcat-fieldname
OF STRUCTURE <f_wa_table_data1> TO <f_field>
TYPE l_fcat-inttype
DECIMALS l_fcat-decimals.
ELSE.
ASSIGN COMPONENT l_fcat-fieldname
OF STRUCTURE <f_wa_table_data1> TO <f_field>
TYPE l_fcat-inttype.
ENDIF.
* WRITE <f_field> TO i_output-sdata+line_cursor(l_fcat-intlen).
* line_cursor = line_cursor + l_fcat-intlen.
WRITE <f_field> TO i_output-sdata+line_cursor(l_fcat-dd_outlen).
line_cursor = line_cursor + l_fcat-dd_outlen.
ENDLOOP.
APPEND i_output.
ENDLOOP.
LOOP AT i_output.
TRANSFER i_output TO p_bkfile.
ENDLOOP.
ENDIF.
CLOSE DATASET p_bkfile.
ENDFORM. " backup