‎2010 Feb 08 5:08 AM
Hi Folks,
I am trying to develop a BDC program for FB50 transaction. However, I am facing some issue while executing it. It stops at 2nd page where it asks for "Document Date". Please refer my code below. Please let me know incase any other info is required.
I would be grateful if someone can suggest something. Thanks!
INCLUDE bdcrecx1.
DATA: p_fname TYPE string,
date(10).
DATA: BEGIN OF w_flat OCCURS 0,
bukrs(4),
bldat(10),
waers(5),
budat(10),
xblnr(16),
hkont(10),
shkzg(1),
wrbtr(16),
kostl(10),
prctr(10),
END OF w_flat.
************************************************************************
Selection-screen ************
************************************************************************
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_fnam LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk1.
************************************************************************
I N I T I A L I Z A T I O N ************
************************************************************************
INITIALIZATION.
************************************************************************
VALUE_REQUEST FOR FILE UPLOAD ************
************************************************************************
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fnam.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
mask = ',TXT,*.TXT'
CHANGING
file_name = p_fnam
EXCEPTIONS
mask_too_long = 1
OTHERS = 2.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1 OR 2.
MESSAGE e041(zz).
ENDCASE.
ENDIF.
************************************************************************
S T A R T O F S E L E C T I O N ************
************************************************************************
START-OF-SELECTION.
PERFORM tabdelimeted_upload.
PERFORM bdc_update.
&----
*& Form tabdelimeted_UPLOAD
&----
*Here the data form presentation server is being uploaded to R/3
*system (Internal Table)
----
--> p1 --> p_fname
<-- p2 --> w_flat
----
FORM tabdelimeted_upload.
MOVE p_fnam TO p_fname.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_fname
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = w_flat
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. " UPLOAD
&----
*& Form BDC_UPDATE
&----
Here the data form Internal table is being uploaded to respective
database table in R/3 system through transaction code 'FB50'.
----
--> p1 --> w_flat
<-- p2 --> BDCDATA then session gets processed after executing
----
FORM bdc_update.
PERFORM open_group.
LOOP AT w_flat.
**perform bdc_dynpro using 'SAPMF05A' '1001'.
**perform bdc_field using 'BDC_OKCODE'
'/ECCDE'.
PERFORM bdc_dynpro USING 'SAPLACHD' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BKPF-BUKRS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BKPF-BUKRS'
w_flat-bukrs.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
WRITE sy-datum TO date.
CONCATENATE sy-datum+6(2)
'.'
sy-datum+4(2)
'.'
sy-datum+0(4)
INTO date.
PERFORM bdc_field USING 'ACGL_HEAD-BLDAT'
w_flat-bldat.
PERFORM bdc_field USING 'ACGL_HEAD-WAERS'
w_flat-waers.
PERFORM bdc_field USING 'ACGL_HEAD-BUDAT'
w_flat-budat.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'PICK'.
PERFORM bdc_field USING 'ACGL_HEAD-BLDAT'
w_flat-bldat.
PERFORM bdc_field USING 'ACGL_HEAD-WAERS'
w_flat-waers.
PERFORM bdc_field USING 'ACGL_HEAD-BUDAT'
w_flat-budat.
PERFORM bdc_field USING 'BDC_CURSOR'
'ACGL_ITEM-PRCTR'.
PERFORM bdc_field USING 'ACGL_ITEM-HKONT'
w_flat-hkont.
PERFORM bdc_field USING 'ACGL_ITEM-SHKZG'
w_flat-shkzg.
PERFORM bdc_field USING 'ACGL_ITEM-WRBTR'
w_flat-wrbtr.
PERFORM bdc_field USING 'ACGL_ITEM-KOSTL'
w_flat-kostl.
PERFORM bdc_field USING 'ACGL_ITEM-PRCTR'
w_flat-prctr.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BDC_CURSOR'
'ACGL_ITEM-HKONT'.
PERFORM bdc_transaction USING 'FB50'.
ENDLOOP.
PERFORM close_group.
ENDFORM. "bdc_update
Regards.
‎2010 Feb 08 5:11 AM
‎2010 Feb 08 5:20 AM
Sure. I am reposting the code with the tag code.
INCLUDE bdcrecx1.
DATA: p_fname TYPE string,
date(10).
DATA: BEGIN OF w_flat OCCURS 0,
bukrs(4),
bldat(10),
waers(5),
budat(10),
xblnr(16),
hkont(10),
shkzg(1),
wrbtr(16),
kostl(10),
prctr(10),
END OF w_flat.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME TITLE text-001.
PARAMETERS : p_fnam LIKE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK blk1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fnam.
CALL FUNCTION 'KD_GET_FILENAME_ON_F4'
EXPORTING
static = 'X'
mask = ',TXT,*.TXT'
CHANGING
file_name = p_fnam
EXCEPTIONS
mask_too_long = 1
OTHERS = 2.
IF sy-subrc <> 0.
CASE sy-subrc.
WHEN 1 OR 2.
MESSAGE e041(zz).
ENDCASE.
ENDIF.
START-OF-SELECTION.
PERFORM tabdelimeted_upload.
PERFORM bdc_update.
FORM tabdelimeted_upload.
MOVE p_fnam TO p_fname.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_fname
filetype = 'ASC'
has_field_separator = 'X'
TABLES
data_tab = w_flat
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.
FORM bdc_update.
PERFORM open_group.
LOOP AT w_flat.
**perform bdc_dynpro using 'SAPMF05A' '1001'.
**perform bdc_field using 'BDC_OKCODE'
** '/ECCDE'.
PERFORM bdc_dynpro USING 'SAPLACHD' '1000'.
PERFORM bdc_field USING 'BDC_CURSOR'
'BKPF-BUKRS'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'BKPF-BUKRS'
w_flat-bukrs.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
WRITE sy-datum TO date.
* CONCATENATE sy-datum+6(2)
* '.'
* sy-datum+4(2)
* '.'
* sy-datum+0(4)
* INTO date.
PERFORM bdc_field USING 'ACGL_HEAD-BLDAT'
w_flat-bldat.
PERFORM bdc_field USING 'ACGL_HEAD-WAERS'
w_flat-waers.
PERFORM bdc_field USING 'ACGL_HEAD-BUDAT'
w_flat-budat.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'PICK'.
PERFORM bdc_field USING 'ACGL_HEAD-BLDAT'
w_flat-bldat.
PERFORM bdc_field USING 'ACGL_HEAD-WAERS'
w_flat-waers.
PERFORM bdc_field USING 'ACGL_HEAD-BUDAT'
w_flat-budat.
PERFORM bdc_field USING 'BDC_CURSOR'
'ACGL_ITEM-PRCTR'.
PERFORM bdc_field USING 'ACGL_ITEM-HKONT'
w_flat-hkont.
PERFORM bdc_field USING 'ACGL_ITEM-SHKZG'
w_flat-shkzg.
PERFORM bdc_field USING 'ACGL_ITEM-WRBTR'
w_flat-wrbtr.
PERFORM bdc_field USING 'ACGL_ITEM-KOSTL'
w_flat-kostl.
PERFORM bdc_field USING 'ACGL_ITEM-PRCTR'
w_flat-prctr.
PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BU'.
PERFORM bdc_field USING 'BDC_CURSOR'
'ACGL_ITEM-HKONT'.
PERFORM bdc_transaction USING 'FB50'.
ENDLOOP.
PERFORM close_group.
ENDFORM. "bdc_update
‎2010 Feb 08 5:45 AM
Please debug your code and check if w_flat has the document date filled.
‎2010 Feb 08 6:56 AM
‎2010 Feb 08 6:57 AM