Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BDC FB50 issue

Former Member
0 Likes
819

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.

5 REPLIES 5
Read only

former_member206377
Active Contributor
0 Likes
701

Please use 'code' tags so that the code is readable.

Read only

0 Likes
701

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

Read only

0 Likes
701

Please debug your code and check if w_flat has the document date filled.

Read only

0 Likes
701

yes it definitely have the date field.

Read only

0 Likes
701

yes my internal table has the document date filled.