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

Batch data communication error

Former Member
0 Likes
645

Dear exports,

                    while I create bdc conversion, the recording was done after that the new program is created using the recorded data.

In that program while calling function KD_GET_FILENAME_ON_F4 I am not able to attach the file to conversion. Please some body give me some program for reference.

thanks &regards,

karthik

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
580

hi karthik,

use this program for the reference

this uses the call function 'F4_FILENAME'

SCREEN BEGIN OF BLOCK blck WITH FRAME TITLE text-011.
PARAMETERS:
  p_file  
TYPE rlgrap-filename,                  " File Path
  e_file  
TYPE rlgrap-filename OBLIGATORY,       " Error File Path
  p_mode  
TYPE c OBLIGATORY DEFAULT 'N'.         " Mode
SELECTION-
SCREEN END OF BLOCK blck.

* Structure Decleration
DATA :
 
BEGIN OF fs_field,
    bsart
TYPE eban-bsart,             " Document Type.
    matnr
TYPE eban-matnr,             " Material Number.
    menge
TYPE eban-menge,             " Quantity Requested.
    werks
TYPE eban-werks,             " Plant.
END OF fs_field.

*Internal table decleration
DATA:
   t_field   
LIKE TABLE OF fs_field,
   t_bdcdata 
LIKE TABLE OF bdcdata.

DATA:
  fs_bdcdata
LIKE LINE OF t_bdcdata,   " Structure type of bdcdata
   w_str 
TYPE string.

* Data decleration
DATA:
  wa_path
TYPE string ,
  wa_error
TYPE string,
  wa_cnt  
TYPE i,
  w_mode   
TYPE c,
  wa_cnt1(
2) TYPE n,
  it_output
type table of ty_s_error,
  wa_output
like line of it_output.

AT SELECTION-SCREEN.
* Mode 'A' = Foreground mode
* Mode 'N' = Background mode
 
IF p_mode = 'A' OR p_mode = 'N' .

    w_mode = p_mode.

 
ELSE.
*Error Message
   
MESSAGE 'PLEASE ENTER THE MODE A or N' TYPE 'E'.
 
ENDIF.

* Opening window for path selection
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
 
CALL FUNCTION 'F4_FILENAME'
   
EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    =
' '
   
IMPORTING
      file_name     = p_file.

 
TYPES:
    fs_struct(
4096) TYPE c OCCURS 0 .

 
DATA:
    w_struct
TYPE fs_struct.

* Uploading excel file.
 
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
   
EXPORTING
      i_field_seperator          =
'X'
*   I_LINE_HEADER              =
      i_tab_raw_data             = w_struct
      i_filename                 = p_file
   
TABLES
      i_tab_converted_data       = t_field
   
EXCEPTIONS
      conversion_failed          =
1
     
OTHERS                     = 2
            .
 
IF sy-subrc <> 0.
   
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
           
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
 
ENDIF.

*Opening window for Error file download
AT SELECTION-SCREEN ON VALUE-REQUEST FOR e_file.
 
CALL FUNCTION 'F4_FILENAME'
   
EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    =
' '
   
IMPORTING
      file_name     = e_file.

* start of selection event.
START-
OF-SELECTION.

 
LOOP AT t_field INTO fs_field .
   
REFRESH: t_bdcdata.
   
CLEAR fs_bdcdata.
   
PERFORM populate_bdcdata.
   
PERFORM insert_data.
 
ENDLOOP.                               " LOOP AT it_c.

*********************(populate_bdcdata)***********************
* part 1
FORM populate_bdcdata.
PERFORM :
  fill_bdc_data
USING 'SAPMM06B' '0100' 'X'  ' '  ' ',
  fill_bdc_data
USING  ''  ''  ''   'EBAN-BSART' fs_field-bsart,   " Document Type.
  fill_bdc_data
USING  ''  ''  ''   'BDC_OKCODE' '/00',            " Enter.

  fill_bdc_data
USING 'SAPMM06B'  '0106' 'X' ' ' ' ',
  fill_bdc_data
USING  '' '' '' 'EBAN-MATNR(01)'  fs_field-matnr,   " Material Number.
  fill_bdc_data
USING  '' '' ''  'EBAN-MENGE(01)' fs_field-menge,   " Quantity Requested.
  fill_bdc_data
USING  '' '' ''  'EBAN-WERKS(01)' fs_field-werks,   " Plant.
  fill_bdc_data
USING  '' '' ''  'BDC_OKCODE'   '/00',              " Enter.

  fill_bdc_data
USING 'SAPMM06B' '0102' 'X' ''  '' ,
  fill_bdc_data
USING  '' '' ''  'BDC_OKCODE' '=BU'.                 " Save.

ENDFORM.                               " Form populate_bdc.

* part 2
FORM fill_bdc_data USING value(p_program)
                     
value(p_dynpro)
                     
value(p_dynbegin)
                     
value(p_fnam)
                     
value(p_fval).
 
CLEAR fs_bdcdata .
 
IF p_dynbegin = 'X' .
    fs_bdcdata-
program = p_program .
    fs_bdcdata-
dynpro  = p_dynpro .
    fs_bdcdata-dynbegin = p_dynbegin .
   
APPEND fs_bdcdata TO t_bdcdata.
 
ELSE.
    fs_bdcdata-fnam = p_fnam.
    fs_bdcdata-fval = p_fval.
   
CONDENSE fs_bdcdata-fval.
   
APPEND fs_bdcdata TO t_bdcdata.
 
ENDIF.                               " IF p_dynbeg..

ENDFORM .                              " Fill_entry

*********************(insert_data)****************************
FORM insert_data.

*Data decleration for Error Message
 
DATA:
       t_msg
TYPE TABLE OF bdcmsgcoll,   " Collecting Error messages
       w_msg
TYPE bdcmsgcoll,
       w_msg1(
51).

* Call transaction 'ME51'
 
CALL TRANSACTION 'ME51' USING t_bdcdata
   
MODE w_mode
   
UPDATE 'S'
    MESSAGES
INTO t_msg.

 
IF sy-subrc EQ 0.
*    Uploaded into the database
   
WRITE 😕 'DATA UPLOADED IN TABLE EBAN...' .
 
ELSE.
*    Error Found
   
LOOP AT t_msg INTO w_msg WHERE msgtyp EQ 'E'.
*     Format Message
     
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
       
EXPORTING
          msgid               = w_msg-msgid
          msgnr               = w_msg-msgnr
          msgv1               = w_msg-msgv1
          msgv2               = w_msg-msgv2
          msgv3               = w_msg-msgv3
          msgv4               = w_msg-msgv4
       
IMPORTING
          message_text_output = w_msg1.


      wa_output-msg_err = w_msg1.

*Error message in downloaded file
data:
   wa_string(
10) type c.

    wa_string = fs_field-matnr.

   
concatenate wa_string wa_output-msg_err into wa_output-msg_err separated by space.

    
APPEND wa_output-msg_err TO it_output.

      wa_error = e_file.

     
CALL FUNCTION 'GUI_DOWNLOAD'
       
EXPORTING
*         BIN_FILESIZE                    =
          filename                        = wa_error
*         FILETYPE                        = 'ASC'
*         APPEND                          = ' '
          write_field_separator           =
'X'
       
TABLES
          data_tab                        = it_output
*
                .
     
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 sy-subrc <> 0.

   
ENDLOOP.

 
ENDIF.

ENDFORM.                    "insert_data

2 REPLIES 2
Read only

Former Member
0 Likes
581

hi karthik,

use this program for the reference

this uses the call function 'F4_FILENAME'

SCREEN BEGIN OF BLOCK blck WITH FRAME TITLE text-011.
PARAMETERS:
  p_file  
TYPE rlgrap-filename,                  " File Path
  e_file  
TYPE rlgrap-filename OBLIGATORY,       " Error File Path
  p_mode  
TYPE c OBLIGATORY DEFAULT 'N'.         " Mode
SELECTION-
SCREEN END OF BLOCK blck.

* Structure Decleration
DATA :
 
BEGIN OF fs_field,
    bsart
TYPE eban-bsart,             " Document Type.
    matnr
TYPE eban-matnr,             " Material Number.
    menge
TYPE eban-menge,             " Quantity Requested.
    werks
TYPE eban-werks,             " Plant.
END OF fs_field.

*Internal table decleration
DATA:
   t_field   
LIKE TABLE OF fs_field,
   t_bdcdata 
LIKE TABLE OF bdcdata.

DATA:
  fs_bdcdata
LIKE LINE OF t_bdcdata,   " Structure type of bdcdata
   w_str 
TYPE string.

* Data decleration
DATA:
  wa_path
TYPE string ,
  wa_error
TYPE string,
  wa_cnt  
TYPE i,
  w_mode   
TYPE c,
  wa_cnt1(
2) TYPE n,
  it_output
type table of ty_s_error,
  wa_output
like line of it_output.

AT SELECTION-SCREEN.
* Mode 'A' = Foreground mode
* Mode 'N' = Background mode
 
IF p_mode = 'A' OR p_mode = 'N' .

    w_mode = p_mode.

 
ELSE.
*Error Message
   
MESSAGE 'PLEASE ENTER THE MODE A or N' TYPE 'E'.
 
ENDIF.

* Opening window for path selection
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
 
CALL FUNCTION 'F4_FILENAME'
   
EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    =
' '
   
IMPORTING
      file_name     = p_file.

 
TYPES:
    fs_struct(
4096) TYPE c OCCURS 0 .

 
DATA:
    w_struct
TYPE fs_struct.

* Uploading excel file.
 
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
   
EXPORTING
      i_field_seperator          =
'X'
*   I_LINE_HEADER              =
      i_tab_raw_data             = w_struct
      i_filename                 = p_file
   
TABLES
      i_tab_converted_data       = t_field
   
EXCEPTIONS
      conversion_failed          =
1
     
OTHERS                     = 2
            .
 
IF sy-subrc <> 0.
   
MESSAGE ID sy-msgid TYPE 'S' NUMBER sy-msgno
           
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
 
ENDIF.

*Opening window for Error file download
AT SELECTION-SCREEN ON VALUE-REQUEST FOR e_file.
 
CALL FUNCTION 'F4_FILENAME'
   
EXPORTING
      program_name  = syst-cprog
      dynpro_number = syst-dynnr
      field_name    =
' '
   
IMPORTING
      file_name     = e_file.

* start of selection event.
START-
OF-SELECTION.

 
LOOP AT t_field INTO fs_field .
   
REFRESH: t_bdcdata.
   
CLEAR fs_bdcdata.
   
PERFORM populate_bdcdata.
   
PERFORM insert_data.
 
ENDLOOP.                               " LOOP AT it_c.

*********************(populate_bdcdata)***********************
* part 1
FORM populate_bdcdata.
PERFORM :
  fill_bdc_data
USING 'SAPMM06B' '0100' 'X'  ' '  ' ',
  fill_bdc_data
USING  ''  ''  ''   'EBAN-BSART' fs_field-bsart,   " Document Type.
  fill_bdc_data
USING  ''  ''  ''   'BDC_OKCODE' '/00',            " Enter.

  fill_bdc_data
USING 'SAPMM06B'  '0106' 'X' ' ' ' ',
  fill_bdc_data
USING  '' '' '' 'EBAN-MATNR(01)'  fs_field-matnr,   " Material Number.
  fill_bdc_data
USING  '' '' ''  'EBAN-MENGE(01)' fs_field-menge,   " Quantity Requested.
  fill_bdc_data
USING  '' '' ''  'EBAN-WERKS(01)' fs_field-werks,   " Plant.
  fill_bdc_data
USING  '' '' ''  'BDC_OKCODE'   '/00',              " Enter.

  fill_bdc_data
USING 'SAPMM06B' '0102' 'X' ''  '' ,
  fill_bdc_data
USING  '' '' ''  'BDC_OKCODE' '=BU'.                 " Save.

ENDFORM.                               " Form populate_bdc.

* part 2
FORM fill_bdc_data USING value(p_program)
                     
value(p_dynpro)
                     
value(p_dynbegin)
                     
value(p_fnam)
                     
value(p_fval).
 
CLEAR fs_bdcdata .
 
IF p_dynbegin = 'X' .
    fs_bdcdata-
program = p_program .
    fs_bdcdata-
dynpro  = p_dynpro .
    fs_bdcdata-dynbegin = p_dynbegin .
   
APPEND fs_bdcdata TO t_bdcdata.
 
ELSE.
    fs_bdcdata-fnam = p_fnam.
    fs_bdcdata-fval = p_fval.
   
CONDENSE fs_bdcdata-fval.
   
APPEND fs_bdcdata TO t_bdcdata.
 
ENDIF.                               " IF p_dynbeg..

ENDFORM .                              " Fill_entry

*********************(insert_data)****************************
FORM insert_data.

*Data decleration for Error Message
 
DATA:
       t_msg
TYPE TABLE OF bdcmsgcoll,   " Collecting Error messages
       w_msg
TYPE bdcmsgcoll,
       w_msg1(
51).

* Call transaction 'ME51'
 
CALL TRANSACTION 'ME51' USING t_bdcdata
   
MODE w_mode
   
UPDATE 'S'
    MESSAGES
INTO t_msg.

 
IF sy-subrc EQ 0.
*    Uploaded into the database
   
WRITE 😕 'DATA UPLOADED IN TABLE EBAN...' .
 
ELSE.
*    Error Found
   
LOOP AT t_msg INTO w_msg WHERE msgtyp EQ 'E'.
*     Format Message
     
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
       
EXPORTING
          msgid               = w_msg-msgid
          msgnr               = w_msg-msgnr
          msgv1               = w_msg-msgv1
          msgv2               = w_msg-msgv2
          msgv3               = w_msg-msgv3
          msgv4               = w_msg-msgv4
       
IMPORTING
          message_text_output = w_msg1.


      wa_output-msg_err = w_msg1.

*Error message in downloaded file
data:
   wa_string(
10) type c.

    wa_string = fs_field-matnr.

   
concatenate wa_string wa_output-msg_err into wa_output-msg_err separated by space.

    
APPEND wa_output-msg_err TO it_output.

      wa_error = e_file.

     
CALL FUNCTION 'GUI_DOWNLOAD'
       
EXPORTING
*         BIN_FILESIZE                    =
          filename                        = wa_error
*         FILETYPE                        = 'ASC'
*         APPEND                          = ' '
          write_field_separator           =
'X'
       
TABLES
          data_tab                        = it_output
*
                .
     
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 sy-subrc <> 0.

   
ENDLOOP.

 
ENDIF.

ENDFORM.                    "insert_data

Read only

hiriyappa_myageri
Participant
0 Likes
580

can you share you code ?.