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 data help

Former Member
0 Likes
897

plz send me a code which makes use of BDC DATA in the program .

PLZ EXPLAIND D BDCDATA USED IN THE CODE.

is it used in call transaction & session method both???

1 ACCEPTED SOLUTION
Read only

Former Member
0 Likes
767

Hi,

here a short example:

PARAMETERS: P_MATNR LIKE MARA-MATNR.

  • Definition der BDC-Tabelle

DATA: BEGIN OF BDCDATA OCCURS 500.

INCLUDE STRUCTURE BDCDATA.

DATA: END OF BDCDATA.

*

WRITE: P_MATNR TO P_MATNR.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.

PERFORM BDC_FIELD USING 'RMMG1-MATNR' P_MATNR.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.

*

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=RESA'.

*

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.

PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(01)' 'X'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.

*

CALL TRANSACTION 'MM03' USING BDCDATA MODE 'E'.

*

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

*

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

*

ENDFORM. "BDC_DYNPRO

************************************************************************

FORM BDC_FIELD USING FNAM FVAL.

*

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

*

ENDFORM. "BDC_FIELD

************************************************************************

regards, Dieter

5 REPLIES 5
Read only

Former Member
0 Likes
767

http://www.sap-img.com/abap/bdc-example-using-table-control-in-bdc.htm

To appreciate its usage,

do the following:

record some transaction you like in SHDB transaction.

When you save the recording , you will see a table like structure with all screen names and program names.

This is what a BDCDATA internal table will look like.

In the program also, we are trying to build such a table which we see in the recording.

Regards,

Ravi

Read only

Former Member
0 Likes
767

Hi,

Please check the code below for Call transaction:

&----


*& Report YFII_GL_VOUCHER_UPLOAD *

*& *

&----


*& *

*& *

&----


REPORT yfii_gl_voucher_upload

NO STANDARD PAGE HEADING LINE-SIZE 150 MESSAGE-ID yfi.

&----


*& Tables

&----


TABLES: bkpf,

t100.

&----


*& Type-pools

&----


TYPE-POOLS : slis,

icon. "For Icon display

&----


*& Global Variables

&----


DATA: g_okcode(6) TYPE c,

g_sodate(10) TYPE c,

p_bldat1(10) TYPE c,

p_budat1(10) TYPE c,

g_count(2) TYPE c VALUE 1,

g_flnam TYPE string,

g_mstring(250) TYPE c ,

g_field(30) TYPE c,

g_msg(120) TYPE c, "To hold desc of error

g_scol TYPE i VALUE '1', "for start coloum

g_srow TYPE i VALUE '1', "for start row

g_ecol TYPE i VALUE '256', "for end coloum

g_erow TYPE i VALUE '65536', "for end row

g_lines_1 TYPE i, "To hold no.of error

g_ans TYPE c.

DATA: w_tabix LIKE sy-tabix. "For sy-tabix.

&----


*& Constants

&----


CONSTANTS: c_x(1) TYPE c VALUE 'X',

c_sync TYPE c VALUE 'S'. "Synchronous update

&----


*& Internal Tables

&----


TYPES: BEGIN OF tp_file ,

hkont(10) ,

shkzg(1),

gsber(8),

kostl(8),

aufnr(16),

prctr(25),

mwskz(2),

sgtxt(50),

wrbtr(15),

geber(10),

fistl(16),

menge(13),

meins(3),

END OF tp_file.

TYPES: BEGIN OF tp_final ,

bukrs LIKE bkpf-bukrs,

blart LIKE bkpf-blart,

bldat LIKE bkpf-bldat,

budat LIKE bkpf-budat,

waers LIKE bkpf-waers,

kursf LIKE bkpf-kursf,

xblnr LIKE bkpf-xblnr,

bktxt LIKE bkpf-bktxt,

hkont LIKE bseg-hkont,

shkzg LIKE bseg-shkzg,

gsber LIKE bseg-gsber,

kostl LIKE bseg-kostl,

aufnr LIKE bseg-aufnr,

prctr LIKE bseg-prctr,

mwskz LIKE bseg-mwskz,

sgtxt LIKE bseg-sgtxt,

wrbtr(10) TYPE c,

geber LIKE bseg-geber,

fistl LIKE bseg-fistl,

menge(10) TYPE c,

meins(10) TYPE c,

w_msg(200) TYPE c,

status TYPE icon-id,

END OF tp_final.

----


  • Declaration for Internal Tables

----


  • Internal table for excel file

DATA : ig_intern TYPE STANDARD TABLE OF kcde_cells ,

wg_intern LIKE LINE OF ig_intern ,

  • Internal table for populating the screens and fields for VK11

ig_bdcdata TYPE STANDARD TABLE OF bdcdata ,

wg_bdcdata LIKE LINE OF ig_bdcdata ,

  • Internal table for populating the screens and fields for VK12

ig_bdcdata1 TYPE STANDARD TABLE OF bdcdata ,

wg_bdcdata1 LIKE LINE OF ig_bdcdata1 ,

  • Internal table and work areas for ALV

ig_fcat TYPE STANDARD TABLE OF slis_fieldcat_alv,

wg_fcat TYPE slis_fieldcat_alv ,

wg_layout TYPE slis_layout_alv ,

  • Internal table for flatfile structure

ig_file TYPE TABLE OF tp_file ,

wg_file TYPE tp_file,

  • Internal table to hold data for uploading

ig_final TYPE TABLE OF tp_final ,

wg_final TYPE tp_final ,

  • Internal table to hold data for uploading

ig_final1 TYPE TABLE OF tp_final ,

wg_final1 TYPE tp_final ,

  • Internal table for error records

ig_messtab TYPE TABLE OF bdcmsgcoll ,

wg_messtab TYPE bdcmsgcoll .

DATA: g_custom_container TYPE REF TO cl_gui_custom_container,

g_grid TYPE REF TO cl_gui_alv_grid,

g_fieldcat TYPE lvc_t_fcat, "#EC NEEDED

wa_fieldcatalog TYPE lvc_s_fcat,

g_layout TYPE lvc_s_layo,

it_exclude TYPE ui_functions.

DATA: con_x(1) VALUE 'X',

str_variant TYPE disvariant.

----


  • S E L E C T - O P T I O N S

----


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

PARAMETERS: p_bukrs LIKE bkpf-bukrs ,

p_blart LIKE bkpf-blart DEFAULT 'SA' ,

p_bldat LIKE bkpf-bldat DEFAULT sy-datum,

p_budat LIKE bkpf-budat DEFAULT sy-datum,

p_waers LIKE bkpf-waers DEFAULT 'USD' ,

p_kursf LIKE bkpf-kursf ,

p_xblnr LIKE bkpf-xblnr ,

p_bktxt LIKE bkpf-bktxt DEFAULT 'Excel Mass Jrnl Upload'.

SELECTION-SCREEN END OF BLOCK blk1.

SELECTION-SCREEN BEGIN OF BLOCK blk2 WITH FRAME TITLE text-s02.

PARAMETERS:

rb_text RADIOBUTTON GROUP r1 DEFAULT 'X',

rb_excel RADIOBUTTON GROUP r1,

p_flnam TYPE rlgrap-filename OBLIGATORY,

p_dismod TYPE ctu_params-dismode OBLIGATORY DEFAULT 'N'.

SELECTION-SCREEN END OF BLOCK blk2.

----


  • AT SELECTION-SCREEN ON VALUE-REQUEST

----


AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_flnam.

PERFORM get_filename.

----


  • AT SELECTION-SCREEN ON FIELD

----


AT SELECTION-SCREEN ON p_flnam.

PERFORM check_file_path.

----


  • START-OF-SELECTION

----


START-OF-SELECTION.

PERFORM refresh_tables.

  • For selecting the text file

IF rb_text EQ c_x.

PERFORM uploading_text_file.

ELSE.

  • Excel file

PERFORM upload_excel_file TABLES ig_file

USING p_flnam

g_scol

g_srow

g_ecol

g_erow.

ENDIF.

PERFORM populate.

PERFORM call_bdc.

CALL SCREEN 0100.

&----


*& Form UPLOADING_FLAT_FILE

&----


  • Upload the data from text file to internal table

----


FORM uploading_text_file .

CLEAR g_flnam.

g_flnam = p_flnam.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

filename = g_flnam

filetype = 'ASC'

has_field_separator = c_x

TABLES

data_tab = ig_file

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 NE 0.

MESSAGE e000 WITH 'Error uploading file'.

ENDIF.

  • Check if the input file is blank

IF ig_file[] IS INITIAL.

MESSAGE e000 WITH 'No data in the file to process'.

ENDIF.

ENDFORM. " UPLOADING_FLAT_FILE

&----


*& Form UPLOAD_EXCEL_FILE

&----


  • upload excel spreadsheet into internal table

----


  • -->P_TABLE Table to return excel data into

  • -->P_FILE file name and path

  • -->P_SCOL start column

  • -->P_SROW start row

  • -->P_ECOL end column

  • -->P_EROW end row

----


FORM upload_excel_file TABLES p_table

USING p_flnam

p_scol

p_srow

p_ecol

p_erow.

DATA : l_index TYPE i.

FIELD-SYMBOLS : <fs_intern> TYPE ANY.

CALL FUNCTION 'KCD_EXCEL_OLE_TO_INT_CONVERT'

EXPORTING

filename = p_flnam

i_begin_col = p_scol

i_begin_row = p_srow

i_end_col = p_ecol

i_end_row = p_erow

TABLES

intern = ig_intern

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 2

OTHERS = 3.

IF sy-subrc NE 0.

MESSAGE e000 WITH 'Error uploading file'(006).

ENDIF.

  • Check if the input file is blank

IF ig_intern[] IS INITIAL.

MESSAGE e000 WITH 'No data in the file to process'(012).

ELSE.

SORT ig_intern BY row col.

CLEAR wg_intern.

LOOP AT ig_intern INTO wg_intern.

MOVE wg_intern-col TO l_index.

ASSIGN COMPONENT l_index OF STRUCTURE wg_file TO <fs_intern>.

MOVE wg_intern-value TO <fs_intern>.

AT END OF row.

APPEND wg_file TO p_table.

CLEAR: wg_intern,wg_file.

ENDAT.

CLEAR : wg_intern,l_index.

ENDLOOP.

ENDIF.

ENDFORM. " uploading_excel_file

&----


*& Form populate

&----


FORM populate .

CLEAR wg_file.

LOOP AT ig_file INTO wg_file.

MOVE: p_bukrs TO wg_final-bukrs,

p_blart TO wg_final-blart,

p_bldat TO wg_final-bldat,

p_budat TO wg_final-budat,

p_waers TO wg_final-waers,

p_kursf TO wg_final-kursf,

p_xblnr TO wg_final-xblnr,

p_bktxt TO wg_final-bktxt.

WRITE icon_green_light AS ICON TO wg_final-status.

MOVE: wg_file-hkont TO wg_final-hkont,

wg_file-shkzg TO wg_final-shkzg,

wg_file-gsber TO wg_final-gsber,

wg_file-kostl TO wg_final-kostl,

wg_file-aufnr TO wg_final-aufnr,

wg_file-prctr TO wg_final-prctr,

wg_file-sgtxt TO wg_final-sgtxt,

wg_file-wrbtr TO wg_final-wrbtr,

wg_file-mwskz TO wg_final-mwskz,

wg_file-geber TO wg_final-geber,

wg_file-fistl TO wg_final-fistl,

wg_file-menge TO wg_final-menge,

wg_file-meins TO wg_final-meins,

wg_file-sgtxt TO wg_final-sgtxt,

wg_file-menge TO wg_final-menge.

APPEND wg_final TO ig_final.

CLEAR wg_final.

ENDLOOP.

ENDFORM. " populate

&----


*& Form call_bdc

&----


FORM call_bdc .

  • PERFORM bdc_dynpro USING 'SAPLACHD' '1000'.

  • PERFORM bdc_field USING 'BDC_CURSOR' 'BKPF-BUKRS'.

  • PERFORM bdc_field USING 'BKPF-BUKRS'

  • p_bukrs.

*

  • PERFORM bdc_field USING 'BDC_OKCODE'

  • '/00'.

PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.

PERFORM bdc_field USING 'BDC_OKCODE'

'BS'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/ECCDE'.

WRITE p_bldat TO p_bldat1.

PERFORM bdc_field USING 'ACGL_HEAD-BLDAT'

p_bldat1.

PERFORM bdc_field USING 'ACGL_HEAD-WAERS'

p_waers.

WRITE p_budat TO p_budat1.

PERFORM bdc_field USING 'ACGL_HEAD-BUDAT'

p_budat1.

PERFORM bdc_field USING 'ACGL_HEAD-XBLNR'

p_xblnr.

PERFORM bdc_field USING 'ACGL_HEAD-BKTXT'

p_bktxt.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

g_count = 1.

LOOP AT ig_final INTO wg_final.

CLEAR g_field.

PERFORM bdc_dynpro USING 'SAPMF05A' '1001'.

CONCATENATE 'ACGL_ITEM-HKONT' '(' g_count ')' INTO g_field.

PERFORM bdc_field USING g_field

wg_final-hkont.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-SHKZG' '(' g_count ')' INTO g_field.

PERFORM bdc_field USING g_field

wg_final-shkzg.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-WRBTR' '(' g_count ')' INTO g_field.

PERFORM bdc_field USING g_field

wg_final-wrbtr.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-MWSKZ' '(' g_count ')' INTO g_field.

PERFORM bdc_field USING g_field

wg_final-mwskz.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-SGTXT' '(' g_count ')' INTO g_field.

PERFORM bdc_field USING g_field

wg_final-sgtxt.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-MENGE' '(' g_count ')' INTO g_field.

PERFORM bdc_field USING g_field

wg_final-menge.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-MEINS' '(' g_count ')' INTO g_field.

PERFORM bdc_field USING g_field

wg_final-meins.

PERFORM bdc_field USING 'BDC_CURSOR'

'ACGL_ITEM-HKONT(10)'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

ADD 1 TO g_count.

ENDLOOP.

PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=PBBP'.

PERFORM call_transaction USING 'FV50' p_dismod.

PERFORM check CHANGING g_fieldcat .

PERFORM layout CHANGING g_layout

.

ENDFORM. " call_bdc

&----


*& Form BDC_DYNPRO

&----


  • Start dynpro processing

----


FORM bdc_dynpro USING p_program

p_dynpro.

CLEAR: wg_bdcdata.

wg_bdcdata-program = p_program.

wg_bdcdata-dynpro = p_dynpro.

wg_bdcdata-dynbegin = c_x.

APPEND wg_bdcdata TO ig_bdcdata .

ENDFORM. " BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


  • Create dynpro field

----


FORM bdc_field USING p_nam p_val.

CLEAR: wg_bdcdata.

wg_bdcdata-fnam = p_nam.

wg_bdcdata-fval = p_val.

APPEND wg_bdcdata TO ig_bdcdata.

ENDFORM. " BDC_FIELD

&----


*& Form check

&----


  • text

----


  • -->G_FIELDCAT text

----


FORM check CHANGING g_fieldcat TYPE lvc_t_fcat .

DATA: line_fieldcat TYPE slis_fieldcat_alv

.

REFRESH g_fieldcat.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'STATUS'

' '

'STATUS'(120)

' '

' '.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'W_MSG'

' '

'Error'(120)

' '

' '.

.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'BUKRS'

' '

'Company Code'(112)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'BLART'

' '

'Document Type'(113)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'BLDAT'

' '

'Document Date'(114)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'BUDAT'

' '

'Posting Date'(115)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'WAERS'

' '

'Currency'(116)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'KURSF'

' '

'Exchange Rate'(117)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'XBLNR'

' '

'Ref.Doc.No.'(118)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'BKTXT'

' '

'Header Text'(119)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'HKONT'

' '

'General Ledger Account'(121)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'SHKZG'

' '

'Debit/Credit'(122)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'GSBER'

' '

'Business Area'(123)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'KOSTL'

' '

'Cost center'(124)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'AUFNR'

' '

'Order'(125)

''

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'PRCTR'

' '

'Profit Center'(126)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'MWSKZ'

' '

'Tax code'(126)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'SGTXT'

' '

'Text'(126)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'WRBTR'

' '

'Amount'(126)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'FISTL'

' '

'Profit Center'(126)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'MEINS'

' '

'Unit of Measure'(127)

' '

'X'.

PERFORM fill_fields_of_fieldcatalog USING 'IG_FINAL'

'MENGE'

' '

'Quantity'(128)

' '

'X' .

.

ENDFORM. " check

&----


*& Form layout

&----


  • text

----


  • -->G_LAYOUT text

----


FORM layout USING g_layout TYPE lvc_s_layo .

CLEAR g_layout .

g_layout-cwidth_opt = 'X' .

g_layout-cwidth_opt = 'X' .

g_layout-ctab_fname = 'COL' .

g_layout-edit = 'x' .

ENDFORM. "layout

&----


*& Form set_pf_status

&----


  • text

----


  • -->RT_EXTAB text

----


FORM set_pf_status USING rt_extab TYPE slis_t_extab .

SET PF-STATUS 'STANDARD' .

ENDFORM. "set_pf_status

&----


*& Form fill_fields_of_fieldcatalog

&----


FORM fill_fields_of_fieldcatalog USING fp_tabname TYPE lvc_fname

fp_field TYPE lvc_tname

fp_key TYPE c

fp_name TYPE any

fp_spot TYPE c

fp_edit TYPE c.

DATA: wg_field TYPE lvc_s_fcat .

CLEAR wg_field.

wg_field-tabname = fp_tabname.

wg_field-fieldname = fp_field.

wg_field-key = fp_key.

wg_field-coltext = fp_name.

wg_field-no_zero = 'X'.

wg_field-hotspot = fp_spot.

wg_field-outputlen = 18.

wg_field-edit = fp_edit.

APPEND wg_field TO g_fieldcat.

CLEAR wg_field.

ENDFORM. "fill_fields_of_fieldcatalog

----


  • MODULE alv_list_display OUTPUT

----


*

----


MODULE alv_list_display OUTPUT.

IF g_custom_container IS INITIAL.

CLEAR : it_exclude, it_exclude[].

  • Create an object of Custom Control

CREATE OBJECT g_custom_container

EXPORTING

container_name = 'ALVGRID'.

  • Attach ALV Grid to Custom Control

CREATE OBJECT g_grid

EXPORTING

i_parent = g_custom_container.

  • Set the layout

g_layout-no_rowmark = con_x.

  • Prepare Field catalog

PERFORM check CHANGING g_fieldcat .

  • Making grid editable

CALL METHOD g_grid->set_ready_for_input

EXPORTING

i_ready_for_input = 1.

  • Exclude toolbar buttons which are not required

PERFORM exclude_tb_functions CHANGING it_exclude.

str_variant-report = sy-repid.

  • Display ALV Report

PERFORM display.

ENDIF.

ENDMODULE. " ALV_LIST_DISPLAY OUTPUT

&----


*& Form EXCLUDE_TB_FUNCTIONS

&----


  • text

----


  • <--P_IT_EXCLUDE text

----


FORM exclude_tb_functions CHANGING pt_exclude TYPE ui_functions.

DATA ls_exclude TYPE ui_func.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy_row.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_delete_row.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_append_row.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_insert_row.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_move_row.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_cut.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_copy.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_check.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_refresh.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_undo.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_print.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_sum.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_mb_sum.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_subtot.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_info.

APPEND ls_exclude TO pt_exclude.

ls_exclude = cl_gui_alv_grid=>mc_fc_loc_paste_new_row.

APPEND ls_exclude TO pt_exclude.

ENDFORM. " EXCLUDE_TB_FUNCTIONS

&----


*& Module STATUS_0100 OUTPUT

&----


  • text

----


MODULE status_0100 OUTPUT.

SET PF-STATUS 'STANDARD'.

  • SET TITLEBAR 'xxx'.

ENDMODULE. " STATUS_0100 OUTPUT

&----


*& Module USER_COMMAND_0100 INPUT

&----


  • text

----


MODULE user_command_0100 INPUT.

CASE g_okcode.

WHEN 'SAVE'.

CALL METHOD g_grid->check_changed_data.

PERFORM call_bdc1.

WHEN 'BACK'.

*PERFORM POP_UP_TO_CONFIRM.

LEAVE TO SCREEN 0.

ENDCASE.

CLEAR g_okcode.

ENDMODULE. " USER_COMMAND_0100 INPUT

&----


*& Form display

&----


  • text

----


FORM display.

CALL METHOD g_grid->set_table_for_first_display

EXPORTING

is_layout = g_layout

is_variant = str_variant

i_save = 'A'

it_toolbar_excluding = it_exclude

CHANGING

it_fieldcatalog = g_fieldcat

it_outtab = ig_final[].

ENDFORM. "display

&----


*& Form check_file_path

&----


  • Checking for appropriate file format

----


FORM check_file_path .

IF rb_text EQ c_x.

  • Search for text file

SEARCH p_flnam FOR '.txt'.

IF sy-subrc NE 0.

MESSAGE i012 DISPLAY LIKE 'E'.

STOP.

ENDIF.

ELSE.

  • Search for excel file

SEARCH p_flnam FOR '.xls'.

IF sy-subrc NE 0.

MESSAGE i013 DISPLAY LIKE 'E'.

STOP.

ENDIF.

ENDIF.

ENDFORM. " check_file_path

&----


*& Form get_filename

&----


  • Getting the input file name

----


FORM get_filename .

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

field_name = 'P_FLNAM'

IMPORTING

file_name = p_flnam.

ENDFORM. " get_filename

&----


*& Form call_transaction

&----


  • Call transaction for VK11

----


FORM call_transaction USING p_trans

p_mode.

DATA: w_indx TYPE i.

REFRESH ig_messtab.

CLEAR wg_messtab.

CALL TRANSACTION p_trans

USING ig_bdcdata

MODE p_mode

UPDATE c_sync

MESSAGES INTO ig_messtab.

LOOP AT ig_messtab INTO wg_messtab.

SELECT SINGLE *

FROM t100

INTO t100

WHERE sprsl = wg_messtab-msgspra

AND arbgb = wg_messtab-msgid AND

msgnr = wg_messtab-msgnr.

CLEAR w_indx.

IF sy-subrc EQ 0.

w_indx = wg_messtab-fldname+16(2).

g_mstring = t100-text.

IF g_mstring CS '&1'.

REPLACE '&1' WITH wg_messtab-msgv1 INTO g_mstring.

REPLACE '&2' WITH wg_messtab-msgv2 INTO g_mstring.

REPLACE '&3' WITH wg_messtab-msgv3 INTO g_mstring.

REPLACE '&4' WITH wg_messtab-msgv4 INTO g_mstring.

ELSE.

CONDENSE wg_messtab-msgv1.

CONDENSE wg_messtab-msgv2.

CONDENSE wg_messtab-msgv3.

CONDENSE wg_messtab-msgv4.

REPLACE '&' WITH wg_messtab-msgv1(15) INTO g_mstring.

REPLACE '&' WITH wg_messtab-msgv2(10) INTO g_mstring.

REPLACE '&' WITH wg_messtab-msgv3(1) INTO g_mstring.

REPLACE '&' WITH wg_messtab-msgv4(4) INTO g_mstring.

ENDIF.

CONDENSE g_mstring.

  • CLEAR wg_final1.

READ TABLE ig_final INTO wg_final index w_indx.

IF sy-subrc EQ 0.

IF wg_messtab-msgtyp EQ 'E' OR wg_messtab-msgtyp EQ 'A'.

WRITE icon_red_light AS ICON TO wg_final-status.

ELSEIF wg_messtab-msgtyp EQ 'W'.

WRITE icon_yellow_light AS ICON TO wg_final-status.

ELSEIF wg_messtab-msgtyp EQ 'S'.

WRITE icon_green_light AS ICON TO wg_final-status.

ENDIF.

wg_final-w_msg = g_mstring.

MODIFY ig_final FROM wg_final INDEX w_indx.

ENDIF.

ELSE.

WRITE icon_red_light AS ICON TO wg_final-status.

wg_final-w_msg = g_mstring.

MODIFY ig_final FROM wg_final INDEX w_indx.

ENDIF.

ENDLOOP.

ENDFORM. " call_transaction

&----


*& Form call_bdc1

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM call_bdc1 .

PERFORM bdc_dynpro1 USING 'SAPMF05A' '1001'.

PERFORM bdc_field1 USING 'BDC_OKCODE'

'BS'.

PERFORM bdc_field1 USING 'BDC_OKCODE'

'/ECCDE'.

WRITE p_bldat TO p_bldat1.

PERFORM bdc_field1 USING 'ACGL_HEAD-BLDAT'

p_bldat1.

PERFORM bdc_field1 USING 'ACGL_HEAD-WAERS'

p_waers.

WRITE p_budat TO p_budat1.

PERFORM bdc_field1 USING 'ACGL_HEAD-BUDAT'

p_budat1.

PERFORM bdc_field1 USING 'ACGL_HEAD-XBLNR'

p_xblnr.

PERFORM bdc_field1 USING 'ACGL_HEAD-BKTXT'

p_bktxt.

PERFORM bdc_field1 USING 'BDC_OKCODE'

'/00'.

g_count = 1.

LOOP AT ig_final INTO wg_final.

CLEAR g_field.

PERFORM bdc_dynpro1 USING 'SAPMF05A' '1001'.

CONCATENATE 'ACGL_ITEM-HKONT' '(' g_count ')' INTO g_field.

PERFORM bdc_field1 USING g_field

wg_final-hkont.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-SHKZG' '(' g_count ')' INTO g_field.

PERFORM bdc_field1 USING g_field

wg_final-shkzg.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-WRBTR' '(' g_count ')' INTO g_field.

PERFORM bdc_field1 USING g_field

wg_final-wrbtr.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-MWSKZ' '(' g_count ')' INTO g_field.

PERFORM bdc_field1 USING g_field

wg_final-mwskz.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-SGTXT' '(' g_count ')' INTO g_field.

PERFORM bdc_field1 USING g_field

wg_final-sgtxt.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-MENGE' '(' g_count ')' INTO g_field.

PERFORM bdc_field1 USING g_field

wg_final-menge.

CLEAR g_field.

CONCATENATE 'ACGL_ITEM-MEINS' '(' g_count ')' INTO g_field.

PERFORM bdc_field1 USING g_field

wg_final-meins.

PERFORM bdc_field1 USING 'BDC_CURSOR'

'ACGL_ITEM-HKONT(10)'.

PERFORM bdc_field1 USING 'BDC_OKCODE'

'/00'.

ADD 1 TO g_count.

ENDLOOP.

PERFORM bdc_dynpro1 USING 'SAPMSSY0' '0120'.

PERFORM bdc_field1 USING 'BDC_OKCODE'

'=PBBP'.

PERFORM call_transaction1 USING 'FV50' p_dismod.

PERFORM check CHANGING g_fieldcat .

PERFORM layout CHANGING g_layout.

ENDFORM. " call_bdc1

&----


*& Form BDC_DYNPRO

&----


  • Start dynpro processing

----


FORM bdc_dynpro1 USING p_program

p_dynpro.

CLEAR: wg_bdcdata.

wg_bdcdata1-program = p_program.

wg_bdcdata1-dynpro = p_dynpro.

wg_bdcdata1-dynbegin = c_x.

APPEND wg_bdcdata1 TO ig_bdcdata1 .

ENDFORM. " BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


  • Create dynpro field

----


FORM bdc_field1 USING p_nam p_val.

CLEAR: wg_bdcdata1.

wg_bdcdata1-fnam = p_nam.

wg_bdcdata1-fval = p_val.

APPEND wg_bdcdata1 TO ig_bdcdata1.

ENDFORM. " BDC_FIELD

&----


*& Form call_transaction

&----


  • Call transaction for VK11

----


FORM call_transaction1 USING p_trans

p_mode.

DATA: w_indx TYPE i.

REFRESH ig_messtab.

CLEAR wg_messtab.

CALL TRANSACTION p_trans

USING ig_bdcdata1

MODE p_mode

UPDATE c_sync

MESSAGES INTO ig_messtab.

LOOP AT ig_messtab INTO wg_messtab.

SELECT SINGLE *

FROM t100

INTO t100

WHERE sprsl = wg_messtab-msgspra

AND arbgb = wg_messtab-msgid AND

msgnr = wg_messtab-msgnr.

CLEAR w_indx.

IF sy-subrc EQ 0.

w_indx = wg_messtab-fldname+16(2).

g_mstring = t100-text.

IF g_mstring CS '&1'.

REPLACE '&1' WITH wg_messtab-msgv1 INTO g_mstring.

REPLACE '&2' WITH wg_messtab-msgv2 INTO g_mstring.

REPLACE '&3' WITH wg_messtab-msgv3 INTO g_mstring.

REPLACE '&4' WITH wg_messtab-msgv4 INTO g_mstring.

ELSE.

CONDENSE wg_messtab-msgv1.

CONDENSE wg_messtab-msgv2.

CONDENSE wg_messtab-msgv3.

CONDENSE wg_messtab-msgv4.

REPLACE '&' WITH wg_messtab-msgv1(15) INTO g_mstring.

REPLACE '&' WITH wg_messtab-msgv2(10) INTO g_mstring.

REPLACE '&' WITH wg_messtab-msgv3(1) INTO g_mstring.

REPLACE '&' WITH wg_messtab-msgv4(4) INTO g_mstring.

ENDIF.

CONDENSE g_mstring.

  • CLEAR wg_final1.

READ TABLE ig_final INTO wg_final index w_indx.

IF sy-subrc EQ 0.

IF wg_messtab-msgtyp EQ 'E' OR wg_messtab-msgtyp EQ 'A'.

WRITE icon_red_light AS ICON TO wg_final-status.

ELSEIF wg_messtab-msgtyp EQ 'W'.

WRITE icon_yellow_light AS ICON TO wg_final-status.

ELSEIF wg_messtab-msgtyp EQ 'S'.

WRITE icon_green_light AS ICON TO wg_final-status.

ENDIF.

wg_final-w_msg = g_mstring.

MODIFY ig_final FROM wg_final INDEX w_indx.

ENDIF.

ELSE.

WRITE icon_red_light AS ICON TO wg_final-status.

wg_final-w_msg = g_mstring.

MODIFY ig_final FROM wg_final INDEX w_indx.

ENDIF.

ENDLOOP.

ENDFORM. " call_transaction

&----


*& Form refresh_tables

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM refresh_tables .

REFRESH ig_bdcdata.

REFRESH ig_bdcdata1.

REFRESH ig_messtab.

REFRESH ig_file.

REFRESH ig_final.

CLEAR wg_bdcdata.

CLEAR wg_bdcdata1.

CLEAR wg_messtab.

ENDFORM. " refresh_tables

Regards

Kannaiah

Please reward helpful points

Read only

Former Member
0 Likes
767

Hi,

The structure BDCDATA is used to store the screen flow while in Call Transaction or Session Method. Go thru the following example. It will give total view of the BDC with Call transaction and Session Method.

&----


*& Report : ZJAYARAM_TABCTL_XD01

*& Title : Program for running BDC with table control and creating error log

*& Author : JAYARAMA SARMA

*& Created on : 03/05/2004

*& Request

*& Desription : This program describes BDC with table control and

  • the control of table rows with diff screen

  • resolutions

&----


*& Modification Log

&----


*& Mod # Author Date Requested by

*& Reason for Change

&----


*& 00 #

*&

&----


REPORT ZJAYARAM_TABCTL_XD01 NO STANDARD PAGE HEADING LINE-SIZE 132

LINE-COUNT 60

MESSAGE-ID Z00.

----


  • Table/Structure declarations. *

----


TABLES : KNA1. "Customer master

----


  • Constants declarations. *

----


CONSTANTS : C_MODE VALUE 'A',

C_UPDATE VALUE 'S',

C_X VALUE 'X',

C_SESS TYPE APQI-GROUPID VALUE 'ZCUSTOMER', "Session Name

C_XD01 LIKE TSTC-TCODE VALUE 'XD01'.

----


  • Variable declarations. *

----


DATA : V_FNAME(15) VALUE SPACE, " Name of file to be created

V_FAILREC TYPE I, " No of failed records

V_MSG(255), " Message Text

V_ERRREC TYPE I, " No of failed records

V_LINES TYPE I, " No of records

V_BANKS(15), " Table column BANKS

V_BANKL(15), " Table column BANKL

V_BANKN(15), " Table column BANKN

V_TIDX(2) TYPE N. " Table row index

----


*-- FLAG DECLARATIONS

----


DATA : FG_DATA_EXIST VALUE 'X', " Check for data

FG_SESSION_OPEN VALUE ' '. " Check for Session Open

----


*-- MACRO DEFINITIONS

----


*-- Macro for BANKS

DEFINE BANKS.

CLEAR V_BANKS.

CONCATENATE 'KNBK-BANKS(' &1 ')' INTO V_BANKS.

CONDENSE V_BANKS.

END-OF-DEFINITION.

*-- Macro for BANKL

DEFINE BANKL.

CLEAR V_BANKL.

CONCATENATE 'KNBK-BANKL(' &1 ')' INTO V_BANKL.

CONDENSE V_BANKL.

END-OF-DEFINITION.

*-- Macro for BANKN

DEFINE BANKN.

CLEAR V_BANKN.

CONCATENATE 'KNBK-BANKN(' &1 ')' INTO V_BANKN.

CONDENSE V_BANKN.

END-OF-DEFINITION.

----


  • Structures / Internal table declarations *

----


*-- Structure to hold BDC data

TYPES : BEGIN OF T_BDCTABLE.

INCLUDE STRUCTURE BDCDATA.

TYPES END OF T_BDCTABLE.

*-- Structure to trap BDC messages

TYPES : BEGIN OF T_MSG.

INCLUDE STRUCTURE BDCMSGCOLL.

TYPES : END OF T_MSG.

*-- Structure to trap ERROR messages

TYPES : BEGIN OF T_ERR_MSG,

MESSAGE(255),

END OF T_ERR_MSG.

*--Internal table to store flat file data

DATA : BEGIN OF IT_KNA1 OCCURS 0,

KUNNR LIKE KNA1-KUNNR,

KTOKD LIKE T077D-KTOKD,

NAME1 LIKE KNA1-NAME1,

SORTL LIKE KNA1-SORTL,

ORT01 LIKE KNA1-ORT01,

PSTLZ LIKE KNA1-PSTLZ,

LAND1 LIKE KNA1-LAND1,

SPRAS LIKE KNA1-SPRAS,

LZONE LIKE KNA1-LZONE,

END OF IT_KNA1.

*--Internal table to store bank details

DATA : BEGIN OF IT_BANK OCCURS 0,

BANKS LIKE KNBK-BANKS,

BANKL LIKE KNBK-BANKL,

BANKN LIKE KNBK-BANKN,

END OF IT_BANK.

*-- Internal table to hold BDC data

DATA: IT_BDCDATA TYPE STANDARD TABLE OF T_BDCTABLE WITH HEADER LINE,

*-- Internal Table to store ALL messages

IT_MSG TYPE STANDARD TABLE OF T_MSG WITH HEADER LINE,

*-- Internal Table to store error messages

IT_ERR_MSG TYPE STANDARD TABLE OF T_ERR_MSG WITH HEADER LINE.

----


  • Selection Screen. *

----


SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.

PARAMETERS : P_FLNAME(15) OBLIGATORY.

SELECTION-SCREEN END OF BLOCK B1.

SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-002.

SELECTION-SCREEN BEGIN OF LINE.

PARAMETERS : R_LIST RADIOBUTTON GROUP GRP1.

SELECTION-SCREEN COMMENT 5(20) TEXT-003.

PARAMETERS : R_SESS RADIOBUTTON GROUP GRP1.

SELECTION-SCREEN COMMENT 30(20) TEXT-004.

SELECTION-SCREEN END OF LINE.

SELECTION-SCREEN END OF BLOCK B2.

----


  • Event:Initialization *

----


INITIALIZATION.

----


  • AT Selection Screen. *

----


AT SELECTION-SCREEN.

----


  • Event: Start-of-Selection *

----


START-OF-SELECTION.

V_FNAME = P_FLNAME.

PERFORM GET_DATA.

PERFORM GET_BANKDATA.

PERFORM GENERATE_DATASET.

----


  • Event: End-of-Selection *

----


END-OF-SELECTION.

IF FG_DATA_EXIST = ' '.

MESSAGE I010 WITH TEXT-009.

EXIT.

ENDIF.

PERFORM GENERATE_BDCDATA.

PERFORM DISPLAY_ERR_RECS.

----


  • Event: top-of-page

----


TOP-OF-PAGE.

//////////////////////////////////////////////////////////////////////

*

  • FORM DEFINITIONS *

*

*//////////////////////////////////////////////////////////////////////

&----


*& Form get_data

&----


  • Subroutine to get the data from mard

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_DATA.

CALL FUNCTION 'UPLOAD'

EXPORTING

  • CODEPAGE = ' '

FILENAME = 'C:\XD01.TXT'

FILETYPE = 'DAT'

  • ITEM = ' '

  • FILEMASK_MASK = ' '

  • FILEMASK_TEXT = ' '

  • FILETYPE_NO_CHANGE = ' '

  • FILEMASK_ALL = ' '

  • FILETYPE_NO_SHOW = ' '

  • LINE_EXIT = ' '

  • USER_FORM = ' '

  • USER_PROG = ' '

  • SILENT = 'S'

  • IMPORTING

  • FILESIZE =

  • CANCEL =

  • ACT_FILENAME =

  • ACT_FILETYPE =

TABLES

DATA_TAB = IT_KNA1

  • EXCEPTIONS

  • CONVERSION_ERROR = 1

  • INVALID_TABLE_WIDTH = 2

  • INVALID_TYPE = 3

  • NO_BATCH = 4

  • UNKNOWN_ERROR = 5

  • GUI_REFUSE_FILETRANSFER = 6

  • OTHERS = 7

.

IF SY-SUBRC <> 0.

  • MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

  • WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ENDIF.

IF IT_KNA1[] IS INITIAL.

FG_DATA_EXIST = ' '.

ENDIF.

ENDFORM. " get_data

&----


*& Form GENERATE_DATASET

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GENERATE_DATASET.

MESSAGE I010 WITH 'OPENING FILE IN APPLICATION SERVER'.

**--Creating a data set in application server

OPEN DATASET V_FNAME FOR OUTPUT IN TEXT MODE.

**---Transfering data from internal table to dataset

MESSAGE I010 WITH 'TRANSFERING DATA FROM INETERAL TABLE TO THE FILE'.

LOOP AT IT_KNA1.

TRANSFER IT_KNA1 TO V_FNAME.

ENDLOOP.

**--Closing the dataset

MESSAGE I010 WITH 'CLOSING THE FILE'.

CLOSE DATASET V_FNAME.

ENDFORM. " GENERATE_DATASET

&----


*& Form BDC_DYNPRO

&----


  • text

----


  • -->P_0467 text

  • -->P_0468 text

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROGRAM.

IT_BDCDATA-DYNPRO = DYNPRO.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM.

&----


*& Form BDC_FIELD

&----


  • text

----


  • -->P_0472 text

  • -->P_0473 text

----


FORM BDC_FIELD USING FNAM FVAL.

IF NOT FVAL IS INITIAL.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDIF.

ENDFORM.

&----


*& Form GENERATE_BDCDATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GENERATE_BDCDATA.

REFRESH IT_KNA1.

  • Opening dataset for reading

OPEN DATASET V_FNAME FOR INPUT IN TEXT MODE.

        • Reading the file from application server

DO.

CLEAR: IT_KNA1,IT_BDCDATA.

REFRESH IT_BDCDATA.

READ DATASET V_FNAME INTO IT_KNA1.

IF SY-SUBRC <> 0.

EXIT.

ELSE.

  • Populate BDC Data for Initial Screen

PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0100',

BDC_FIELD USING 'BDC_CURSOR' 'RF02D-KUNNR',

BDC_FIELD USING 'BDC_OKCODE' '/00',

BDC_FIELD USING 'RF02D-KUNNR' IT_KNA1-KUNNR,

BDC_FIELD USING 'RF02D-KTOKD' IT_KNA1-KTOKD.

  • Populate BDC Data for Second Screen

PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0110',

BDC_FIELD USING 'BDC_CURSOR' 'KNA1-NAME1',

BDC_FIELD USING 'BDC_OKCODE' '/00',

BDC_FIELD USING 'KNA1-NAME1' IT_KNA1-NAME1,

BDC_FIELD USING 'KNA1-SORTL' IT_KNA1-SORTL,

BDC_FIELD USING 'KNA1-ORT01' IT_KNA1-ORT01,

BDC_FIELD USING 'KNA1-PSTLZ' IT_KNA1-PSTLZ,

BDC_FIELD USING 'KNA1-LAND1' IT_KNA1-LAND1,

BDC_FIELD USING 'KNA1-SPRAS' IT_KNA1-SPRAS.

  • Populate BDC Data for Third Screen

PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0120',

BDC_FIELD USING 'BDC_CURSOR' 'KNA1-LZONE',

BDC_FIELD USING 'BDC_OKCODE' '/00',

BDC_FIELD USING 'KNA1-LZONE' IT_KNA1-LZONE.

  • Populate BDC Data for Fourth Screen

PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0125',

BDC_FIELD USING 'BDC_CURSOR' 'KNA1-NIELS',

BDC_FIELD USING 'BDC_OKCODE' '/00'.

  • Populate BDC Data for Table control for bank details.

V_TIDX = '01'.

LOOP AT IT_BANK.

BANKS V_TIDX.

BANKL V_TIDX.

BANKN V_TIDX.

PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0130',

BDC_FIELD USING 'BDC_CURSOR' V_BANKN,

BDC_FIELD USING 'BDC_OKCODE' '=ENTR',

BDC_FIELD USING V_BANKS IT_BANK-BANKS,

BDC_FIELD USING V_BANKL IT_BANK-BANKL,

BDC_FIELD USING V_BANKN IT_BANK-BANKN.

V_TIDX = V_TIDX + 1.

ENDLOOP.

PERFORM : BDC_DYNPRO USING 'SAPMF02D' '0130',

BDC_FIELD USING 'BDC_CURSOR' V_BANKS,

BDC_FIELD USING 'BDC_OKCODE' '=UPDA'.

CALL TRANSACTION C_XD01 USING IT_BDCDATA

MODE C_MODE

UPDATE C_UPDATE

MESSAGES INTO IT_MSG.

IF SY-SUBRC <> 0.

*--In case of error list display

IF R_LIST = C_X.

V_ERRREC = V_ERRREC + 1.

PERFORM FORMAT_MESSAGE.

IT_ERR_MSG-MESSAGE = V_MSG.

APPEND IT_ERR_MSG.

CLEAR : V_MSG,IT_ERR_MSG.

ENDIF.

*--In case of session log

IF R_SESS = C_X.

*-- In case of transaction fails.

IF FG_SESSION_OPEN = ' '.

FG_SESSION_OPEN = C_X.

PERFORM BDC_OPEN_GROUP.

ENDIF. " IF FG_SESSION_OPEN = ' '.

*-- Insert BDC Data..

PERFORM BDC_INSERT_DATA.

ENDIF. " IF R_SESS = C_X.

ENDIF. " IF SY-SUBRC <> 0.

ENDIF. " IF SY-SUBRC <> 0.

ENDDO.

  • Closing the dataset

CLOSE DATASET V_FNAME.

*-- Close the session if opened

IF FG_SESSION_OPEN = C_X.

PERFORM BDC_CLOSE_GROUP.

CALL TRANSACTION 'SM35'.

ENDIF.

ENDFORM. " GENERATE_BDCDATA

&----


*& Form BDC_OPEN_GROUP

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BDC_OPEN_GROUP.

CALL FUNCTION 'BDC_OPEN_GROUP'

EXPORTING

CLIENT = SY-MANDT

  • DEST = FILLER8

GROUP = C_SESS

  • HOLDDATE = FILLER8

KEEP = C_X

USER = SY-UNAME

  • RECORD = FILLER1

  • IMPORTING

  • QID =

EXCEPTIONS

CLIENT_INVALID = 1

DESTINATION_INVALID = 2

GROUP_INVALID = 3

GROUP_IS_LOCKED = 4

HOLDDATE_INVALID = 5

INTERNAL_ERROR = 6

QUEUE_ERROR = 7

RUNNING = 8

SYSTEM_LOCK_ERROR = 9

USER_INVALID = 10

OTHERS = 11

.

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

&----


*& Form BDC_INSERT_DATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BDC_INSERT_DATA.

CALL FUNCTION 'BDC_INSERT'

EXPORTING

TCODE = C_XD01

  • POST_LOCAL = NOVBLOCAL

  • PRINTING = NOPRINT

TABLES

DYNPROTAB = IT_BDCDATA

EXCEPTIONS

INTERNAL_ERROR = 1

NOT_OPEN = 2

QUEUE_ERROR = 3

TCODE_INVALID = 4

PRINTING_INVALID = 5

POSTING_INVALID = 6

OTHERS = 7

.

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

&----


*& Form BDC_CLOSE_GROUP

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM BDC_CLOSE_GROUP.

CALL FUNCTION 'BDC_CLOSE_GROUP'

EXCEPTIONS

NOT_OPEN = 1

QUEUE_ERROR = 2

OTHERS = 3.

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

&----


*& Form FORMAT_MESSAGE

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM FORMAT_MESSAGE.

CLEAR V_LINES.

DESCRIBE TABLE IT_MSG LINES V_LINES.

READ TABLE IT_MSG INDEX V_LINES.

CLEAR V_MSG.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = IT_MSG-MSGID

LANG = IT_MSG-MSGSPRA

NO = IT_MSG-MSGNR

V1 = IT_MSG-MSGV1

V2 = IT_MSG-MSGV2

V3 = IT_MSG-MSGV3

V4 = IT_MSG-MSGV4

IMPORTING

MSG = V_MSG

EXCEPTIONS

NOT_FOUND = 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. " FORMAT_MESSAGE

&----


*& Form DISPLAY_ERR_RECS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM DISPLAY_ERR_RECS.

LOOP AT IT_ERR_MSG.

WRITE: / IT_ERR_MSG-MESSAGE.

ENDLOOP.

ENDFORM. " DISPLAY_ERR_RECS

&----


*& Form GET_BANKDATA

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM GET_BANKDATA.

IT_BANK-BANKS = 'AD'.

IT_BANK-BANKL = '1000'.

IT_BANK-BANKN = 'S.B A/C'.

APPEND IT_BANK.

IT_BANK-BANKS = 'AD'.

IT_BANK-BANKL = 'CITY'.

IT_BANK-BANKN = 'CURR. A/C'.

APPEND IT_BANK.

IT_BANK-BANKS = 'AD'.

IT_BANK-BANKL = 'H001'.

IT_BANK-BANKN = 'S.B A/C'.

APPEND IT_BANK.

ENDFORM. " GET_BANKDATA

Regards,

Jayaram...

Read only

Former Member
0 Likes
768

Hi,

here a short example:

PARAMETERS: P_MATNR LIKE MARA-MATNR.

  • Definition der BDC-Tabelle

DATA: BEGIN OF BDCDATA OCCURS 500.

INCLUDE STRUCTURE BDCDATA.

DATA: END OF BDCDATA.

*

WRITE: P_MATNR TO P_MATNR.

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0060'.

PERFORM BDC_FIELD USING 'RMMG1-MATNR' P_MATNR.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.

*

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '=RESA'.

*

PERFORM BDC_DYNPRO USING 'SAPLMGMM' '0070'.

PERFORM BDC_FIELD USING 'MSICHTAUSW-KZSEL(01)' 'X'.

PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.

*

CALL TRANSACTION 'MM03' USING BDCDATA MODE 'E'.

*

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

*

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

*

ENDFORM. "BDC_DYNPRO

************************************************************************

FORM BDC_FIELD USING FNAM FVAL.

*

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

*

ENDFORM. "BDC_FIELD

************************************************************************

regards, Dieter

Read only

Former Member
0 Likes
767

BDCDATA is a structure with fields program name, coming screen number, screen begin, field name , field value...

u use this both in call transaction method and session method.

consider the following code...

It just opens the EKPO table in SE16 transaction and poses the screen to select the fields for selection on the selection screen..

after the screen u can select which ever field u want for selection crieteria...

u just execute this ....

data :

t_bdcdata type standard table

of bdcdata

initial size 0.

data:

wa_bdcdata type bdcdata.

perform bdc_dynpro using 'SAPLSETB' '0230'.

perform bdc_field using 'BDC_CURSOR'

'DATABROWSE-TABLENAME'.

perform bdc_field using 'BDC_OKCODE'

'=ANZE'.

perform bdc_field using 'DATABROWSE-TABLENAME'

'EKPO'.

perform bdc_dynpro using '/1BCDWB/DBEKPO' '1000'.

perform bdc_field using 'BDC_OKCODE'

'=SEOP'.

perform bdc_field using 'LIST_BRE'

'250'.

perform bdc_field using 'MAX_SEL'

'200'.

perform bdc_dynpro using 'SAPMSSY0' '0120'.

perform bdc_field using 'BDC_CURSOR'

'06/04'.

perform bdc_field using 'BDC_OKCODE'

'=DMA2'.

call transaction 'SE16' using t_bdcdata mode 'A'.

----


  • Start new screen *

----


form bdc_dynpro using program dynpro.

clear wa_bdcdata.

wa_bdcdata-program = program.

wa_bdcdata-dynpro = dynpro.

wa_bdcdata-dynbegin = 'X'.

append wa_bdcdata to t_bdcdata.

endform. "Form BDC_DYNPRO

----


  • Insert field *

----


form bdc_field using fnam fval.

clear wa_bdcdata.

wa_bdcdata-fnam = fnam.

wa_bdcdata-fval = fval.

append wa_bdcdata to t_bdcdata.

endform. " Form BDC_FIELD

reward if it helps...

sai ramesh.