0% found this document useful (0 votes)
382 views

BDC - Program - For - Ia05 With Success & Error Files

This document defines a program that uploads task planning data from an Excel file into SAP system using transaction IA05. It parses the uploaded data into header and item records. For each header record, it calls transaction IA05 to create a task list and checks for errors. Successful records are written to a separate file while error records are written to another file.

Uploaded by

Shesadri Nath
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
382 views

BDC - Program - For - Ia05 With Success & Error Files

This document defines a program that uploads task planning data from an Excel file into SAP system using transaction IA05. It parses the uploaded data into header and item records. For each header record, it calls transaction IA05 to create a task list and checks for errors. Successful records are written to a separate file while error records are written to another file.

Uploaded by

Shesadri Nath
Copyright
© Attribution Non-Commercial (BY-NC)
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

*&---------------------------------------------------------------------*

*& Report Y___IA05_COPY


*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT y___ia05_copy.
TYPE-POOLS truxs.
TYPES: BEGIN OF ty_upload,
var1 TYPE c,
"for header and items
plnnr TYPE rc271-plnnr,
"group
ktext TYPE plkod-ktext,
"task list desc
werks1 TYPE plkod-werks,
"planing plant
arbpl TYPE rcr01-arbpl,
"work center
werks2 TYPE rcr01-werks,
"plant
verwe TYPE plkod-verwe,
"usage
vagrp TYPE plkod-vagrp,
"planing group
statu TYPE plkod-statu,
"status
strat TYPE plkod-strat,
"maintainace stratagy
ltxa1 TYPE plpod-ltxa1,
"operations
arbei(5) TYPE c,"PLPOD-ARBEI,
"work
arbeh TYPE plpod-arbeh,
"units
END OF ty_upload.

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.


PARAMETERS :p_file LIKE rlgrap-filename.
PARAMETERS: s_file LIKE rlgrap-filename.
PARAMETERS: e_file LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK b1.
DATA: git_raw TYPE truxs_t_text_data.
DATA: gt_upload TYPE STANDARD TABLE OF ty_upload,
gs_upload TYPE ty_upload.
DATA: gt_bdcdata TYPE STANDARD TABLE OF bdcdata,
gs_bdcdata TYPE bdcdata.
DATA:succ_cnt(5) TYPE c,
err_cnt(5) TYPE c.
DATA : baltmsg1 TYPE baltmsg,
balmsgty1 TYPE balmsgty.
DATA: lv_file TYPE string.
DATA: lv_file1 TYPE string.

DATA:

gt_success TYPE TABLE OF ty_upload,


gt_error TYPE TABLE OF ty_upload.
DATA : gs_success LIKE LINE OF gt_success,
gs_error LIKE LINE OF gt_error.
DATA:
DATA:
DATA:
DATA:

gt_bdcmsgcoll TYPE STANDARD TABLE OF bdcmsgcoll.


gs_bdcmsgcoll LIKE LINE OF gt_bdcmsgcoll.
l_message(200) TYPE c.
gt_header TYPE STANDARD TABLE OF ty_upload,
gs_header TYPE ty_upload.
DATA : gt_item TYPE STANDARD TABLE OF ty_upload,
gs_item TYPE ty_upload.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.


PERFORM get_file.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR s_file.
PERFORM get_suc_file.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR e_file.
PERFORM get_err_file.
START-OF-SELECTION.

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 .

CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'


EXPORTING
*
I_FIELD_SEPERATOR
=
*
I_LINE_HEADER
=
i_tab_raw_data
= git_raw
i_filename
= p_file
TABLES
i_tab_converted_data
= gt_upload
* 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.
" 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

USING 'SAPLCPDI' '3001'.


USING 'BDC_CURSOR'
'RC271-PLNNR'.
USING 'BDC_OKCODE'
'/00'.
USING 'RC271-PLNNR'
gs_upload-plnnr.
USING 'RC271-STTAG'
'13.10.2012'.
USING 'SAPLCPDA' '3010'.
USING 'BDC_CURSOR'

"'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 .

*
*
*

*
*
*
*
*

*
*

CALL FUNCTION 'SAP_CONVERT_TO_XLS_FORMAT'


EXPORTING
I_FIELD_SEPERATOR
=
I_LINE_HEADER
=
i_filename
= s_file
I_APPL_KEEP
= ' '
TABLES
i_tab_sap_data
= gt_success
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_SUCESS_FILE

You might also like