BDC - Program - For - Ia05 With Success & Error Files
BDC - Program - For - Ia05 With Success & Error Files
DATA:
PERFORM upload.
LOOP AT gt_upload INTO gs_upload.
IF gs_upload-var1 = 'H'.
MOVE-CORRESPONDING gs_upload TO gs_header.
APPEND gs_header TO gt_header.
CLEAR gs_header.
ELSEIF gs_upload-var1 = 'L'.
MOVE-CORRESPONDING gs_upload TO gs_item.
APPEND gs_item TO gt_item.
CLEAR gt_item.
ENDIF.
ENDLOOP.
IF gt_header IS NOT INITIAL.
LOOP AT gt_header INTO gs_header.
PERFORM fill_bdcdata.
CALL TRANSACTION 'IA05' USING gt_bdcdata MODE 'N' UPDATE 'S' MESSAGES I
NTO gt_bdcmsgcoll.
ENDLOOP.
CLEAR gs_header.
CLEAR gs_upload.
ENDIF.
LOOP AT gt_upload INTO gs_upload.
READ TABLE gt_bdcmsgcoll INTO gs_bdcmsgcoll WITH KEY msgv1 = gs_uploadplnnr.
IF sy-subrc = 0.
MOVE-CORRESPONDING gs_upload TO gs_success.
**gs_success-succ = 'success'.
**modify gt_success from gs_success.
APPEND gs_success TO gt_success.
ELSE.
if gs_upload-var1 = 'H'.
MOVE-CORRESPONDING gs_upload TO gs_error.
APPEND gs_error TO gt_error.
endif.
ENDIF.
CLEAR gs_bdcmsgcoll.
CLEAR gs_upload.
ENDLOOP.
PERFORM download_error_file.
PERFORM download_sucess_file.
*&---------------------------------------------------------------------*
*&
Form UPLOAD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM upload .
*
*
CONVERSION_FAILED
= 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.
" UPLOAD
*&---------------------------------------------------------------------*
*&
Form FILL_BDCDATA
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM fill_bdcdata .
DATA : count(2) TYPE c.
DATA: l_fname(20) TYPE c.
DATA: l_arbei(20) TYPE c.
DATA: l_arbeh(20) TYPE c.
DATA: group TYPE rc271-plnnr.
DATA: temp TYPE i.
temp = 0.
count = '1'.
REFRESH gt_bdcdata.
CLEAR gs_upload.
LOOP AT gt_upload INTO gs_upload WHERE plnnr = gs_header-plnnr.
IF gs_upload-var1 = 'H'.
PERFORM bdc_dynpro
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_field
PERFORM bdc_dynpro
PERFORM bdc_field
"'g11'.
'PLKOD-WERKS'.
USING 'BDC_OKCODE'
'=VOUE'.
PERFORM bdc_field
USING 'PLKOD-PLNAL'
'1'.
PERFORM bdc_field
USING 'PLKOD-KTEXT'
gs_upload-ktext."'task list'.
PERFORM bdc_field
USING 'PLKOD-WERKS'
gs_upload-werks1.
"'1000'.
PERFORM bdc_field
USING 'RCR01-ARBPL'
gs_upload-arbpl.
"'PB-04'.
PERFORM bdc_field
USING 'RCR01-WERKS'
"plant
gs_upload-werks2.
"'1000'.
PERFORM bdc_field
USING 'PLKOD-VERWE'
"usage
gs_upload-verwe.
"'4'.
PERFORM bdc_field
USING 'PLKODVAGRP'
"planing group
gs_upload-vagrp.
"'001'.
PERFORM bdc_field
USING 'PLKOD-STATU'
"status
gs_upload-statu.
"'4'.
PERFORM bdc_field
USING 'PLKODSTRAT'
"maintainace stratagy
gs_upload-strat.
"'QSTAB1'.
PERFORM bdc_dynpro
USING 'SAPLCPDI' '3400'.
* perform bdc_field
using 'BDC_CURSOR'
*
'PLPOD-ARBEH(04)'.
** perform bdc_field
using 'BDC_OKCODE'
**
'=BU'.
PERFORM bdc_field
USING 'PLPODLTXA1(01)'
"operations
gs_upload-ltxa1."'wires'.
PERFORM bdc_field
USING 'PLPOD-ARBEI(01)'
"work
gs_upload-arbei.
"'2'.
PERFORM bdc_field
PERFORM bdc_field
USING 'PLPOD-ARBEH(01)'
gs_upload-arbeh."'HR'.
ELSE.
count = count + 1.
CONCATENATE 'PLPOD-LTXA1(' count' )' INTO l_fname.
CONDENSE l_fname.
CONCATENATE 'PLPOD-ARBEI(' count ')' INTO l_arbei.
CONDENSE l_arbei.
CONCATENATE 'PLPOD-ARBEH(' count ')' INTO l_arbeh.
CONDENSE l_arbeh.
"units
PERFORM bdc_field
LTXA1(02)'
USING
l_fname
"'PLPOD-
gs_upload-ltxa1."'brakes'.
PERFORM bdc_field
PERFORM bdc_field
ARBEH(02)'
USING l_arbei
"'PLPOD-ARBEI(02)'
gs_upload-arbei.
"'2'.
USING
l_arbeh
"
'PLPOD-
gs_upload-arbeh."'HR'.
ENDIF.
ENDLOOP.
PERFORM bdc_field
ENDFORM.
USING 'BDC_OKCODE'
'=BU'.
" FILL_BDCDATA
*&---------------------------------------------------------------------*
*&
Form BDC_DYNPRO
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
*
-->PROGRAM
text
*
-->DYNPRO
text
*----------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR gs_bdcdata.
gs_bdcdata-program = program.
gs_bdcdata-dynpro
= dynpro.
gs_bdcdata-dynbegin = 'X'.
APPEND gs_bdcdata TO gt_bdcdata.
ENDFORM.
"BDC_DYNPRO
*----------------------------------------------------------------------*
*
Insert field
*
*----------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
* IF FVAL <> NODATA.
CLEAR gs_bdcdata.
gs_bdcdata-fnam = fnam.
gs_bdcdata-fval = fval.
APPEND gs_bdcdata TO gt_bdcdata.
* ENDIF.
ENDFORM.
"BDC_FIELD
*&---------------------------------------------------------------------*
*&
Form GET_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_file .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name
= syst-cprog
dynpro_number
= syst-dynnr
*
FIELD_NAME
= ' '
IMPORTING
file_name
= p_file
.
ENDFORM.
" GET_FILE
*&---------------------------------------------------------------------*
*&
Form GET_SUC_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_suc_file .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name
= syst-cprog
dynpro_number
= syst-dynnr
*
FIELD_NAME
= ' '
IMPORTING
file_name
= s_file
.
ENDFORM.
" GET_SUC_FILE
*&---------------------------------------------------------------------*
*&
Form GET_ERR_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM get_err_file .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name
= ' '
IMPORTING
file_name
= e_file.
ENDFORM.
" GET_ERR_FILE
*&---------------------------------------------------------------------*
*&
Form DOWNLOAD_ERROR_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM download_error_file .
CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'
EXPORTING
*
I_FIELD_SEPERATOR
=
*
I_LINE_HEADER
=
i_filename
= e_file
*
I_APPL_KEEP
= ' '
TABLES
i_tab_sap_data
= gt_error
* CHANGING
*
I_TAB_CONVERTED_DATA
=
* EXCEPTIONS
*
CONVERSION_FAILED
= 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.
" DOWNLOAD_ERROR_FILE
*&*---------------------------------------------------------------------*
*& *
Form DOWNLOAD_SUCESS_FILE
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
* --> p1
text
* <-- p2
text
*----------------------------------------------------------------------*
FORM download_sucess_file .
*
*
*
*
*
*
*
*
*
*
ENDFORM.
" DOWNLOAD_SUCESS_FILE