Sunteți pe pagina 1din 5

report ZPRACTISE_PROGRAM_4

no standard page heading line-size 255.


include bdcrecx1.
TYPES: BEGIN OF S_UPLOAD,
EBELN
TYPE EKPO-EBELN,
MATNR
TYPE EBAN-MATNR,
LINE_NO1 TYPE N LENGTH 2,
MENGE
TYPE n length 4,
LFDAT
TYPE C LENGTH 10,
LINE_NO2 TYPE N LENGTH 2,
END OF S_UPLOAD.
DATA : IT_UPLOAD TYPE TABLE OF S_UPLOAD,
WA_UPLOAD TYPE S_UPLOAD,
IT_HEADER TYPE TABLE OF S_UPLOAD,
WA_HEADER TYPE S_UPLOAD,
IT_ITEMS TYPE TABLE OF S_UPLOAD,
WA_ITEMS TYPE S_UPLOAD.
DATA : T_BDCDATA TYPE TABLE OF BDCDATA ,
W_BDCDATA TYPE BDCDATA,
W_MODE TYPE C,
LV_FILENAME TYPE STRING.
DATA: COUNTER1
COUNTER2
TEMP1
TEMP2

TYPE
TYPE
TYPE
TYPE

N LENGTH 2,
N LENGTH 2,
BDCDATA-FNAM,
BDCDATA-FVAL.

DATA: BEGIN OF IT_MESSTAB OCCURS 0.


INCLUDE STRUCTURE BDCMSGCOLL.
DATA: END OF IT_MESSTAB.
TYPES: fs_struct(4096) TYPE c OCCURS 0.
DATA : w_struct TYPE fs_struct.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-011.
PARAMETERS : P_FILE TYPE RLGRAP-FILENAME,
P_MODE TYPE C OBLIGATORY DEFAULT 'N'.
SELECTION-SCREEN END OF BLOCK B1.
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.
LV_FILENAME = P_FILE.

start-of-selection.
perform gui_upload.
perform getdata.
perform bdc.
end-of-selection.
*&---------------------------------------------------------------------*
*&
Form GUI_UPLOAD
*&---------------------------------------------------------------------*
*
text
*----------------------------------------------------------------------*
FORM GUI_UPLOAD.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename
= LV_FILENAME
FILETYPE
= 'ASC'
HAS_FIELD_SEPARATOR
= 'X'
* HEADER_LENGTH
= 0
* READ_BY_LINE
= 'X'
* DAT_MODE
= ' '
* CODEPAGE
= ' '
* IGNORE_CERR
= ABAP_TRUE
* REPLACEMENT
= '#'
* CHECK_BOM
= ' '
* VIRUS_SCAN_PROFILE
=
* NO_AUTH_CHECK
= ' '
* IMPORTING
* FILELENGTH
=
* HEADER
=
tables
data_tab
= IT_UPLOAD.
* EXCEPTIONS
* FILE_OPEN_ERROR
= 1
* FILE_READ_ERROR
= 2
* NO_BATCH
= 3
* GUI_REFUSE_FILETRANSFER
= 4
* INVALID_TYPE
= 5
* NO_AUTHORITY
= 6
* UNKNOWN_ERROR
= 7
* BAD_DATA_FORMAT
= 8
* HEADER_NOT_ALLOWED
= 9
* SEPARATOR_NOT_ALLOWED
= 10
* HEADER_TOO_LONG
= 11
* UNKNOWN_DP_ERROR
= 12
* ACCESS_DENIED
= 13
* DP_OUT_OF_MEMORY
= 14
* DISK_FULL
= 15
* DP_TIMEOUT
= 16
* OTHERS
= 17
.
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.
"GUI_UPLOAD
*&---------------------------------------------------------------------*
*&
Form getdata
*&---------------------------------------------------------------------*

*
text
*----------------------------------------------------------------------*
form getdata.
it_header[] = it_upload[].
DELETE ADJACENT DUPLICATES FROM it_header COMPARING MATNR.
delete it_header where menge = '0'.
if it_header[] is not initial.
endif.
endform.
"getdata
form bdc.
perform open_group.
loop at it_header into wa_header.
CLEAR W_BDCDATA.
REFRESH T_BDCDATA.
COUNTER1 = WA_HEADER-LINE_NO1.
perform bdc_dynpro
perform bdc_field
perform bdc_field
perform bdc_field
*
perform bdc_dynpro

using 'SAPMM06E' '0205'.


using 'BDC_CURSOR'
'RM06E-EVRTN'.
using 'BDC_OKCODE'
'/00'.
using 'RM06E-EVRTN' wa_header-ebeln.
'5500000189'.
using 'SAPMM06E' '0222'.

*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
CONCATENATE 'RM06E-EVRTP(' COUNTER1 ')' INTO TEMP2.
perform bdc_field
using 'BDC_CURSOR'
TEMP2.
* &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
**
'RM06E-EVRTP(01)'.
*
'RM06E-EVRTP(' COUNTER1 ')'.

perform bdc_field
perform bdc_field
perform bdc_field

using 'BDC_CURSOR'
TEMP1.
using 'BDC_OKCODE'
'=ET'.
using 'RM06E-EBELP'
'10'.

*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
CONCATENATE 'RM06E-TCSELFLAG(' COUNTER1 ')' INTO TEMP1.
perform bdc_field
USING TEMP1
'X'.
clear temp1.
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
** perform bdc_field
using 'RM06E-TCSELFLAG(01)'
* perform bdc_field
using 'RM06E-TCSELFLAG('COUNTER2')'
*
'X'.

loop at it_upload into wa_upload where matnr = wa_header-matnr.


if counter2 >= 16.
PERFORM bdc_field
USING 'BDC_OKCODE'
'=P+'.
ENDIF.
COUNTER2 = WA_UPLOAD-LINE_NO2.
perform bdc_dynpro
using 'SAPMM06E' '1117'.
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&
CONCATENATE 'EKET-MENGE(' COUNTER2 ')' INTO TEMP2.
perform bdc_field
using 'BDC_CURSOR'
TEMP2.
CLEAR TEMP2.
*
'EKET-MENGE(01)'.
**
'EKET-MENGE( COUNTER2 )'.
perform bdc_field

using 'BDC_OKCODE'
'=BU'.

CONCATENATE 'RM06E-EEIND(' COUNTER2 ')' INTO TEMP1.


perform bdc_field
using TEMP1
wa_upload-lfdat.
CLEAR TEMP1.
* perform bdc_field
using 'RM06E-EEIND(01)' wa_upload-lfdat.
**
'17.06.2013'.
CONCATENATE 'EKET-MENGE(' COUNTER2 ')' INTO TEMP1.
perform bdc_field
using TEMP1
wa_upload-menge.
CLEAR TEMP1.
* perform bdc_field
using 'EKET-MENGE(01)' wa_upload-menge.
**
'
18'.
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&
*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
CLEAR WA_UPLOAD.
endloop.
perform bdc_transaction using 'ME38'.
*
*
*
*

CALL TRANSACTION 'ME38' USING T_BDCDATA


MODE 'A'
UPDATE 'S'
MESSAGES INTO IT_MESSTAB.

CLEAR WA_HEADER.
ENDLOOP.

perform close_group.
endform.

S-ar putea să vă placă și