05-27-2008 9:31 AM
hi,
i have problem in my bdc programm there is 3 buttons for execute a call transaction in
test mode, foreground, background
i have problem in execution of test mode
when i execute test mode radiobutton
i am print the data as
number of records in upload file: 1
number of records that are processed without error:
number of errornuous record:
i am get the upload file data but i am not get records without error and error record in flat file after execution of programm.
flat file records are correct.
my codes are this
REPORT zfb02upld
NO STANDARD PAGE HEADING LINE-SIZE 255.
******************************************************************
I N T E R N A L T A B L E *
******************************************************************
DATA: BEGIN OF wa_data,
belnr TYPE bdc_fval, "Accounting Document Number
bukrs TYPE bdc_fval, "Company Code
gjahr TYPE bdc_fval, "Fiscal Year
bktxt TYPE bdc_fval, "Document Header Text
xblnr TYPE bdc_fval, "Reference Field
END OF wa_data.
DATA : BEGIN OF wa_error,
index TYPE c LENGTH 1,
text TYPE c LENGTH 100,
lines like sy-tabix,
END OF wa_error.
DATA : it_error LIKE TABLE OF wa_error.
DATA : it_success LIKE TABLE OF wa_data.
*********************************************************************
D A T A *
*********************************************************************
DATA: it_data LIKE TABLE OF wa_data.
DATA: it_bdcdata TYPE TABLE OF bdcdata.
DATA: wa_bdcdata LIKE LINE OF it_bdcdata.
DATA it_messtab LIKE TABLE OF bdcmsgcoll.
DATA wa_messtab LIKE LINE OF it_messtab.
DATA: v_file TYPE string.
DATA: v_index TYPE i.
DATA: v_text(100) TYPE c.
*DATA: message TYPE string.
DATA: c_x TYPE char01 VALUE 'X',
c_n(01) TYPE c.
*********************************************************************
S E L E C T I O N S C R E E N *
*********************************************************************
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME.
PARAMETERS : pa_file LIKE fc03tab-pl00_file OBLIGATORY.
SELECTION-SCREEN SKIP.
PARAMETERS: p_test RADIOBUTTON GROUP rec,
p_back RADIOBUTTON GROUP rec DEFAULT 'X',
p_onli RADIOBUTTON GROUP rec.
SELECTION-SCREEN END OF BLOCK b.
*********************************************************************
AT SELECTION-SCREEN *
*********************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR pa_file.
PERFORM get_file USING pa_file.
************************************************************************
START-OF-SELECTION *
************************************************************************
START-OF-SELECTION.
v_file = pa_file.
*uploading flat file into internal table
PERFORM upload_file USING v_file CHANGING it_data.
PERFORM bdc.
&----
*& Form bdc
&----
text
----
FORM bdc.
IF p_onli = c_x.
c_n = 'A'.
ELSE.
c_n = 'N'.
ENDIF.
IF p_test = c_x.
WRITE:/ 'Test Mode Completed'.
ULINE.
PERFORM audit_report. " jayant
ENDIF.
*POPULATING THE BDCDATA
LOOP AT it_data INTO wa_data.
REFRESH it_bdcdata.
CLEAR it_bdcdata.
PERFORM bdc_dynpro USING 'SAPMF05L' '0100' c_x.
PERFORM bdc_field USING 'BDC_CURSOR' 'RF05L-BELNR'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'RF05L-BELNR' wa_data-belnr.
PERFORM bdc_field USING 'RF05L-BUKRS' wa_data-bukrs.
PERFORM bdc_field USING 'RF05L-GJAHR' wa_data-gjahr.
PERFORM bdc_dynpro USING 'SAPMF05L' '0700' c_x.
PERFORM bdc_field USING 'BDC_CURSOR' 'BKPF-BELNR'.
PERFORM bdc_field USING 'BDC_OKCODE' '=VK'.
PERFORM bdc_dynpro USING 'SAPMF05L' '1710' c_x.
PERFORM bdc_field USING 'BDC_CURSOR' 'TTYPT-OTEXT'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ENTR'.
PERFORM bdc_field USING 'BKPF-BKTXT' wa_data-bktxt.
PERFORM bdc_field USING 'BKPF-XBLNR' wa_data-xblnr.
PERFORM bdc_dynpro USING 'SAPMF05L' '0700' c_x.
PERFORM bdc_field USING 'BDC_CURSOR' 'BKPF-BELNR'.
PERFORM bdc_field USING 'BDC_OKCODE' '=AE'.
CALL TRANSACTION 'FB02' USING it_bdcdata
MODE c_n
MESSAGES INTO it_messtab.
PERFORM write_message.
ENDLOOP.
ENDFORM. "bdc
&----
*& Form get_file
&----
text
----
-->P_PA_FILE text
----
FORM get_file USING p_pa_file.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
program_name = syst-repid
field_name = 'PA_FILE'
CHANGING
file_name = pa_file.
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. " get_file
&----
*& Form upload_file
&----
text
----
-->P_V_FILE text
<--P_IT_DATA text
----
FORM upload_file USING p_v_file
CHANGING p_it_data LIKE it_data.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_v_file
filetype = 'DAT'
TABLES
data_tab = p_it_data.
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. " upload_file
&----
*& Form bdc_dynpro
&----
text
----
-->P_0043 text
-->P_0044 text
----
FORM bdc_dynpro USING program TYPE bdc_prog
dynpro TYPE bdc_dynr
dynbegin TYPE bdc_start.
wa_bdcdata-program = program.
wa_bdcdata-dynpro = dynpro.
wa_bdcdata-dynbegin = dynbegin.
APPEND wa_bdcdata TO it_bdcdata.
CLEAR wa_bdcdata.
ENDFORM. " bdc_dynpro
&----
*& Form bdc_field
&----
text
----
-->P_0048 text
-->P_0049 text
----
FORM bdc_field USING fnam TYPE fnam_____4
fval TYPE bdc_fval.
wa_bdcdata-fnam = fnam.
wa_bdcdata-fval = fval.
APPEND wa_bdcdata TO it_bdcdata.
CLEAR wa_bdcdata.
ENDFORM. " bdc_field
----
FORM write_message *
----
This subroutine populates the BDC table *
----
FORM write_message.
Get the BDC error messages
LOOP AT it_messtab INTO wa_messtab.
CLEAR v_text.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
id = wa_messtab-msgid
lang = 'EN'
no = wa_messtab-msgnr
v1 = wa_messtab-msgv1
v2 = wa_messtab-msgv2
v3 = wa_messtab-msgv3
v4 = wa_messtab-msgv4
IMPORTING
msg = v_text.
IF sy-subrc = 0.
CASE wa_messtab-msgtyp.
WHEN 'S'.
WRITE:/ v_text.
CLEAR v_text.
WHEN 'E'.
wa_error-index = v_index. "record num
wa_error-text = v_text . "message text
APPEND wa_error TO it_error.
CLEAR wa_error.
ENDCASE.
ENDIF.
ENDLOOP.
REFRESH it_messtab.
CLEAR wa_messtab.
IF NOT it_error[] IS INITIAL.
WRITE: /30 'ERROR RECORDS DETAILS'.
SKIP 1.
WRITE: /5 'RECORD NO', 15 sy-vline,
16 'ERROR MESSAGE'.
ULINE.
LOOP AT it_error INTO wa_error.
WRITE : /5 wa_error-index LEFT-JUSTIFIED,
15 sy-uline,
16 wa_error-text.
CLEAR wa_error.
ENDLOOP.
ENDIF.
ENDFORM. " f_error_handling
----
FORM audit_report *
----
This subroutine populates the BDC table *
----
FORM audit_report.
*data: lines like sy-tabix.
DATA: lv_input TYPE i,
lv_process TYPE i,
lv_error TYPE i,
lv_count TYPE i.
DESCRIBE TABLE it_data LINES lv_input.
DESCRIBE TABLE it_success LINES lv_process.
DESCRIBE TABLE it_error LINES lv_error.
WRITE:/5 text-011, 50 lv_input,
/5 text-012, 50 lv_process,
/5 text-013, 50 lv_error.
ENDFORM. "audit_report
plz help me .
thanks.
05-27-2008 8:24 PM
for some reason, you are running PERFORM audit_report prior to actually running your BDC code. So your itabs aren't populated with successes/failures.
IF p_test = c_x.
WRITE:/ 'Test Mode Completed'.
ULINE.
PERFORM audit_report.
ENDIF.