To Sync any ZTABLE data from one server to another server using RFC.

Here actual data's are available in 510 client. We need to pull data from 510 client to 500 client. Using RFC we need to achieve this functionality
Form data receiver system (Ex.500) we will send request to sender system (Ex.510). 
Receiver Side Programs



Driver program (500) Client

*&---------------------------------------------------------------------*
*& Report  ZELVR_ZTABLE_GET_DATA
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT  ZELVR_ZTABLE_GET_DATA.
TYPE-POOLS : ABAPSLIS.
DATA : ITAB TYPE STANDARD TABLE OF ZTAB_STRUCT.
FIELD-SYMBOLS<FS_TABLE> TYPE STANDARD TABLE,
               <FS>
,
               <FS_WA1>
,
               <FS_WA>
.
DATA WA           TYPE ZTAB_STRUCT.
DATA : LV_INT1      TYPE INT1.
DATA : LV_INT2      TYPE INT2.
DATA : LV_INT4      TYPE INT4.
*ALV data declarations
DATAFIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
      GD_TAB_GROUP 
TYPE SLIS_T_SP_GROUP_ALV.
DATA IT_TABDESCR    TYPE ABAP_COMPDESCR_TAB,
       WA_TABDESCR    
TYPE ABAP_COMPDESCR,
       LT_TOT_COMP    
TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE,
       LT_COMP        
TYPE CL_ABAP_STRUCTDESCR=>COMPONENT_TABLE,
       LA_COMP        
LIKE LINE OF LT_COMP,
       LO_NEW_TYPE    
TYPE REF TO CL_ABAP_STRUCTDESCR,
       LO_TABLE_TYPE  
TYPE REF TO CL_ABAP_TABLEDESCR,
       W_TREF         
TYPE REF TO DATA,
       W_DY_LINE      
TYPE REF TO DATA,
       
COUNT          TYPE SY-TABIX,
       LOOP1          
TYPE SY-TABIX,
       NUM            
TYPE CHAR10,
       MSG            
TYPE CHAR100.
DATA : REF_TABLE_DESCR TYPE REF TO CL_ABAP_STRUCTDESCR.
DATA : W_TYP           TYPE REF TO CL_ABAP_ELEMDESCR.
DATA : DEST            TYPE CHAR3.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETERS TBMA_VAL TYPE TABNAME16.
SELECTION-SCREEN END OF BLOCK B1.
IF SY-SYSID 'JD1' AND SY-MANDT '400'.
  DEST 
'RQ1'.
ENDIF.
IF SY-SYSID 'JP1' AND SY-MANDT '500'.
  DEST 
'RP1'.
ENDIF.
CALL FUNCTION 'ZTABLE_RFC_FM' DESTINATION DEST
  
EXPORTING
    TBMA_VAL 
TBMA_VAL
  
TABLES
    ITAB     
ITAB.
IF SY-SUBRC 0.
* Return structure of the table.
  REF_TABLE_DESCR ?= CL_ABAP_STRUCTDESCR
=>DESCRIBE_BY_NAMETBMA_VAL ).
  IT_TABDESCR[
REF_TABLE_DESCR->COMPONENTS[].

  
LOOP AT IT_TABDESCR INTO WA_TABDESCR.
    
COUNT COUNT 1.
    
IF WA_TABDESCR-TYPE_KIND 'P'.
      WA_TABDESCR
-LENGTH 16.
    
ENDIF.
    WA_TABDESCR
-LENGTH WA_TABDESCR-LENGTH / 2.
    
CASE WA_TABDESCR-TYPE_KIND.
      
WHEN 'STRING'.  W_TYP CL_ABAP_ELEMDESCR=>GET_STRING( ).
      
WHEN 'XSTRING'W_TYP CL_ABAP_ELEMDESCR=>GET_XSTRING( ).
      
WHEN 'b'.       W_TYP ?= CL_ABAP_ELEMDESCR=>DESCRIBE_BY_DATAP_DATA LV_INT1 ).
      
WHEN 's'.       W_TYP ?= CL_ABAP_ELEMDESCR=>DESCRIBE_BY_DATAP_DATA LV_INT2 ).
      
WHEN 'I'.       W_TYP CL_ABAP_ELEMDESCR=>GET_I( ).
      
WHEN 'F'.       W_TYP CL_ABAP_ELEMDESCR=>GET_F( ).
      
WHEN 'D'.       W_TYP CL_ABAP_ELEMDESCR=>GET_D( ).
      
WHEN 'T'.       W_TYP CL_ABAP_ELEMDESCR=>GET_T(  ).
      
WHEN 'C'.       W_TYP CL_ABAP_ELEMDESCR=>GET_C( P_LENGTH WA_TABDESCR-LENGTH ).
      
WHEN 'N'.       W_TYP CL_ABAP_ELEMDESCR=>GET_N( P_LENGTH WA_TABDESCR-LENGTH ).
      
WHEN 'X'.       W_TYP CL_ABAP_ELEMDESCR=>GET_X( P_LENGTH WA_TABDESCR-LENGTH ).
      
WHEN 'P'.       W_TYP CL_ABAP_ELEMDESCR=>GET_P( P_LENGTH WA_TABDESCR-LENGTH P_DECIMALS WA_TABDESCR-DECIMALS ).
    
ENDCASE.

    
CLEAR LA_COMP.
    LA_COMP
-TYPE W_TYP.               "Field type
    LA_COMP
-NAME WA_TABDESCR-NAME.    "Field name   ex: FIELD1
    
APPEND LA_COMP TO LT_TOT_COMP.      "Add entry to component table
  
ENDLOOP.
* Create new type from component table
  LO_NEW_TYPE 
CL_ABAP_STRUCTDESCR=>CREATE( LT_TOT_COMP ).
* Create new table type
  LO_TABLE_TYPE 
CL_ABAP_TABLEDESCR=>CREATE( LO_NEW_TYPE ).
* Create dynamic internal table and assign to Field Symbol
  
CREATE DATA W_TREF TYPE HANDLE LO_TABLE_TYPE.
  
ASSIGN W_TREF->TO <FS_TABLE>.
* Create dynamic work area and assign to Field Symbol
  
CREATE DATA W_DY_LINE LIKE LINE OF <FS_TABLE>.
  
ASSIGN W_DY_LINE->TO <FS_WA>.

  
LOOP AT ITAB INTO WA.
    LOOP1 
LOOP1 + 1.
    
READ TABLE IT_TABDESCR INTO WA_TABDESCR INDEX LOOP1.
    
IF SY-SUBRC 0.
      
ASSIGN COMPONENT WA_TABDESCR-NAME OF STRUCTURE <FS_WA> TO <FS>.
      <FS> 
WA-VALUE.
      
IF LOOP1 1.
        <FS> 
SY-MANDT.
      
ENDIF.
    
ENDIF.
    
IF COUNT LOOP1.
      NUM 
NUM + 1.
      
APPEND <FS_WA> TO <FS_TABLE>.
      
CLEAR : LOOP1<FS_WA>.
    
ENDIF.
  
ENDLOOP.

  
MODIFY (TBMA_VALFROM TABLE <FS_TABLE>.

  
IF SY-SUBRC 0.
    
CONDENSE NUM.
    
CONCATENATE 'TABLE' TBMA_VAL 'TOTAL' NUM 'RECORDS UPDATED SUCCESSFULLY!' INTO MSG SEPARATED BY ''.
    
MESSAGE MSG TYPE 'S'.
  
ELSE.
    MSG 
'ERROR IN TABLE UPDATE!'.
    
MESSAGE MSG TYPE 'E'.
  
ENDIF.
ENDIF.


Receiver Side RFC FM (500) Client

 

 

FUNCTION ZTABLE_RFC_FM .*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(TBMA_VAL) TYPE  TABNAME16
*"  TABLES
*"      ITAB STRUCTURE  ZTAB_STRUCT
*"----------------------------------------------------------------------

  
DATA DEST TYPE CHAR3.

  
IF SY-SYSID 'RQ1' AND SY-MANDT '300'.
    DEST 
'JD1'.
  
ENDIF.
  
IF SY-SYSID 'RP1' AND SY-MANDT '300'.
    DEST 
'JP1'.
  
ENDIF.

  
CALL FUNCTION 'ZTABLE_RFC_FM' DESTINATION DEST
    
EXPORTING
      TBMA_VAL 
TBMA_VAL
    
TABLES
      ITAB     
ITAB.
ENDFUNCTION.

Sender Side RFC FM (510) Client







FUNCTION ZTABLE_RFC_FM.
*"----------------------------------------------------------------------
*"*"Local Interface:
*"  IMPORTING
*"     VALUE(TBMA_VAL) TYPE  TABNAME16
*"  EXPORTING
*"     VALUE(TAB_NAME) TYPE  TABNAME16
*"  TABLES
*"      ITAB STRUCTURE  ZTAB_STRING
*"----------------------------------------------------------------------

  
TYPE-POOLS ABAPSLIS.

  
FIELD-SYMBOLS<FS_TABLE> TYPE STANDARD TABLE,
                 <FS>
,
                 <FS_WA>
.
  
"<fs_field>.

  
DATA : DYN_TABLE    TYPE REF TO DATA,
         DYN_LINE     
TYPE REF TO DATA,
         WA_FIELDCAT  
TYPE LVC_S_FCAT,
         IT_FIELDCAT  
TYPE LVC_T_FCAT,
         WA           
TYPE ZTAB_STRING.

  
DATA : LOOP1 TYPE SY-TABIX,
         LOOP2 
TYPE SY-TABIX,
         CURR_LINE 
TYPE SY-TABIX.
*ALV data declarations
  
DATAFIELDCATALOG TYPE SLIS_T_FIELDCAT_ALV WITH HEADER LINE,
        GD_TAB_GROUP 
TYPE SLIS_T_SP_GROUP_ALV.

  
DATA : IT_TABDESCR TYPE ABAP_COMPDESCR_TAB,
         WA_TABDESCR 
TYPE ABAP_COMPDESCR,
         FIELDNAME   
TYPE ABAP_COMPNAME.
  
DATA : REF_TABLE_DESCR TYPE REF TO CL_ABAP_STRUCTDESCR.
* Return structure of the table.
  REF_TABLE_DESCR ?= CL_ABAP_STRUCTDESCR
=>DESCRIBE_BY_NAMETBMA_VAL ). "typedescr
  IT_TABDESCR[] 
REF_TABLE_DESCR->COMPONENTS[].

  
LOOP AT IT_TABDESCR INTO WA_TABDESCR.
    
CLEAR WA_FIELDCAT.
    WA_FIELDCAT
-FIELDNAME WA_TABDESCR-NAME .
    WA_FIELDCAT
-DATATYPE  = WA_TABDESCR-TYPE_KIND.
    WA_FIELDCAT
-INTTYPE   WA_TABDESCR-TYPE_KIND.
    
IF WA_TABDESCR-TYPE_KIND 'P'.
      WA_TABDESCR
-LENGTH 30.
    
ENDIF.
    WA_FIELDCAT
-INTLEN    WA_TABDESCR-LENGTH / 2.
    WA_FIELDCAT
-DECIMALS  = WA_TABDESCR-DECIMALS.
    
APPEND WA_FIELDCAT TO IT_FIELDCAT.
  
ENDLOOP.
* Create dynamic internal table and assign to Field-Symbol
  
CALL METHOD CL_ALV_TABLE_CREATE=>CREATE_DYNAMIC_TABLE
    
EXPORTING
      IT_FIELDCATALOG 
IT_FIELDCAT
    
IMPORTING
      EP_TABLE        
DYN_TABLE.
  
ASSIGN DYN_TABLE->TO <FS_TABLE>.
* Create dynamic work area and assign to Field Symbol
  
CREATE DATA DYN_LINE LIKE LINE OF <FS_TABLE>.
  
ASSIGN DYN_LINE->TO <FS_WA>.
  
ASSIGN DYN_LINE->TO <FS>.
* Select Data from table using field symbol which points to dynamic itab
  
SELECT INTO CORRESPONDING FIELDS OF TABLE  <FS_TABLE>
             
FROM (TBMA_VAL).

  
LOOP AT <FS_TABLE> ASSIGNING <FS>.
    LOOP1 
LOOP1 + 1.
    
CLEAR : LOOP2.
    
LOOP AT IT_TABDESCR INTO WA_TABDESCR.
      LOOP2 
LOOP2 + 1.
      
ASSIGN COMPONENT LOOP2 OF STRUCTURE <FS> TO <FS_WA>.
      
IF SY-SUBRC NE 0.
        
EXIT.
      
ENDIF.
      WA
-ROW_N LOOP1.
      WA
-COL_N LOOP2.
      WA
-VALUE <FS_WA>.
      
CONDENSE WA-VALUE.
      
APPEND WA TO ITAB.
    
ENDLOOP.
  
ENDLOOP.

  TAB_NAME 
TBMA_VAL.
ENDFUNCTION.

Share this

Related Posts