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

Reg, BDC TABLE CONTROL

Former Member
0 Likes
475

Hi all

I am uploading data for XK01 from textfile, through , BDC .

I got code for table control in SDN itself.

But can anyone please tell me eloborately .

what are the variables to be declared for that ? How to handle?

what are the variable AND how to use in concatenate?

perform bdc_field using 'LFBK-BANKS(01)'

record-BANKS_01_008.

perform bdc_field using 'LFBK-BANKS(02)'

record-BANKS_02_009.

perform bdc_field using 'LFBK-BANKL(01)'

record-BANKL_01_010.

perform bdc_field using 'LFBK-BANKL(02)' record-BANKL_02_011.

perform bdc_field using 'LFBK-BANKN(01)'

record-BANKN_01_012.

perform bdc_field using 'LFBK-BANKN(02)'

record-BANKN_02_013.

perform bdc_dynpro using 'SAPLBANK' '0100'.

perform bdc_field using 'BDC_OKCODE'

Regards

Karthik

2 REPLIES 2
Read only

Former Member
0 Likes
424

Hi,

The sample code for XK01 is as given below:

*include for dispaying icons in error log

INCLUDE <icon>.

*Declaration of structures

*Structure of the file to be uploaded

TYPES:BEGIN OF x_struct,

bukrs TYPE rf02k-bukrs, "Company Code

ekorg TYPE rf02k-ekorg, "Purchasing Organization

ktokk TYPE rf02k-ktokk, "Vendor account group

title_medi TYPE sza1_d0100-title_medi, "Title text

name1 TYPE addr1_data-name1, "Name 1

name2 TYPE addr1_data-name2, "Name 2

name3 TYPE addr1_data-name3, "Name 3

name4 TYPE addr1_data-name4, "Name 4

sort1 TYPE addr1_data-sort1, "Search Term 1

street TYPE addr1_data-street, "Street

house_num1 TYPE addr1_data-house_num1, "House Number

post_code1 TYPE addr1_data-post_code1, "City postal code

city1 TYPE addr1_data-city1, "City

country TYPE addr1_data-country, "Country Key

region TYPE addr1_data-region, "Region (State, Province, County)

po_box TYPE addr1_data-po_box, "PO Box

post_code2 TYPE addr1_data-post_code2, "PO Box postal code

post_code3 TYPE addr1_data-post_code3, "Company postal code (for large customers)

END OF x_struct.

*Structure to capture the messages

TYPES: BEGIN OF x_messages,

msgtyp(1) TYPE c,

bukrs TYPE rf02k-bukrs, "Company Code

ekorg TYPE rf02k-ekorg, "Purchasing Organization

ktokk TYPE rf02k-ktokk, "Vendor account group

message(120) TYPE c,

END OF x_messages.

DATA: it_messages TYPE STANDARD TABLE OF x_messages,

wa_messages TYPE x_messages.

*Internal table and work area which has same structure as file

DATA:it_file TYPE STANDARD TABLE OF x_struct.

DATA:wa_file TYPE x_struct.

*internal table for BDC

DATA: it_bdcdata TYPE STANDARD TABLE OF bdcdata.

DATA: wa_bdcdata TYPE bdcdata.

*Internal table for capturing messages

DATA:it_msgtab TYPE STANDARD TABLE OF bdcmsgcoll,

wa_msgtab TYPE bdcmsgcoll.

DATA:it_excel TYPE STANDARD TABLE OF alsmex_tabline,

wa_excel TYPE alsmex_tabline.

DATA: x_ctuprms TYPE ctu_params.

DATA:con(50) TYPE c.

DATA:con1(50) TYPE c.

*selection screen

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

*Enter file name on presentation server

PARAMETERS: p_file TYPE rlgrap-filename OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

*subroutine for F4 help

PERFORM browse.

START-OF-SELECTION.

*subroutine to upload the file

PERFORM upload.

*subroutine for display parameters

PERFORM fill_params.

*subroutine to fill BDC internal table

PERFORM transact.

&----


*& Form fill_params

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_params .

x_ctuprms-dismode = 'N'.

x_ctuprms-updmode = 'A'.

x_ctuprms-defsize = 'X'.

ENDFORM. " fill_params

&----


*& Form bdc_dynpro

&----


  • text

----


  • -->P_0367 text

  • -->P_0368 text

----


FORM bdc_dynpro USING program dynpro. "#EC *

CLEAR wa_bdcdata.

wa_bdcdata-program = program.

wa_bdcdata-dynpro = dynpro.

wa_bdcdata-dynbegin = 'X'.

APPEND wa_bdcdata TO it_bdcdata.

ENDFORM. " bdc_dynpro

&----


*& Form bdc_field

&----


  • text

----


  • -->P_0447 text

  • -->P_0448 text

----


FORM bdc_field USING fnam fval. "#EC *

CLEAR wa_bdcdata.

wa_bdcdata-fnam = fnam.

wa_bdcdata-fval = fval.

APPEND wa_bdcdata TO it_bdcdata.

ENDFORM. " bdc_field

&----


*& Form collect_messages

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM collect_messages .

DATA: w_msg(100).

LOOP AT it_msgtab INTO wa_msgtab.

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

id = wa_msgtab-msgid

lang = wa_msgtab-msgspra

no = wa_msgtab-msgnr

v1 = wa_msgtab-msgv1

v2 = wa_msgtab-msgv2

v3 = wa_msgtab-msgv3

IMPORTING

msg = w_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.

CONDENSE w_msg.

CLEAR wa_messages.

wa_messages-msgtyp = wa_msgtab-msgtyp.

wa_messages-message = w_msg.

wa_messages-bukrs = wa_file-bukrs .

wa_messages-ekorg = wa_file-ekorg.

wa_messages-ktokk = wa_file-ktokk.

APPEND wa_messages TO it_messages .

ENDLOOP.

REFRESH it_msgtab.

ENDFORM. " collect_messages

&----


*& Form write_messages

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_messages .

LOOP AT it_messages INTO wa_messages .

WRITE:/1 sy-vline.

IF wa_messages-msgtyp = 'S'.

WRITE: 5 icon_green_light.

ELSEIF wa_messages-msgtyp = 'E'.

WRITE: 5 icon_red_light.

ELSEIF wa_messages-msgtyp = 'W'.

WRITE: 5 icon_yellow_light.

ENDIF.

WRITE: 15 sy-vline.

WRITE : 16 wa_messages-bukrs .

WRITE: 30 sy-vline.

WRITE : 32 wa_messages-ekorg .

WRITE: 48 sy-vline.

WRITE : 49 wa_messages-message .

WRITE: 170 sy-vline.

WRITE:/1 sy-vline.

ULINE 1(180).

ENDLOOP.

ENDFORM. " write_messages

&----


*& Form browse

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM browse .

*Function which enables the user to browse the files on hard disk

CALL FUNCTION 'KD_GET_FILENAME_ON_F4'

EXPORTING

program_name = syst-repid

static = 'X'

CHANGING

file_name = p_file

EXCEPTIONS

mask_too_long = 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. " browse

&----


*& Form upload

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM upload .

*Function to upload excel file

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_file

i_begin_col = 1

i_begin_row = 8

i_end_col = 18

i_end_row = 9999

TABLES

intern = it_excel

EXCEPTIONS

inconsistent_parameters = 1

upload_ole = 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.

CLEAR wa_file.

*Read the file row-wise

LOOP AT it_excel INTO wa_excel.

CASE wa_excel-col .

*Read Company Code

WHEN '1'.

wa_file-bukrs = wa_excel-value.

*Read Purchasing Organization

WHEN '2'.

wa_file-ekorg = wa_excel-value.

*Read Vendor account group

WHEN '3'.

wa_file-ktokk = wa_excel-value.

*Read Title

WHEN '4'.

wa_file-title_medi = wa_excel-value.

*Read Name 1

WHEN '5'.

wa_file-name1 = wa_excel-value.

*Read Name 2

WHEN '6'.

wa_file-name2 = wa_excel-value.

*Read Name 3

WHEN '7'.

wa_file-name3 = wa_excel-value.

*Read Name 4

WHEN '8'.

wa_file-name4 = wa_excel-value.

*Read Search Term 1

WHEN '9'.

IF STRLEN( wa_excel-value ) = 1.

CONCATENATE '00' wa_excel-value INTO con.

wa_file-sort1 = con.

ELSEIF STRLEN( wa_excel-value ) = 2.

CONCATENATE '0' wa_excel-value INTO con1.

wa_file-sort1 = con1.

ELSE.

wa_file-sort1 = wa_excel-value.

ENDIF.

*Read Street

WHEN '10'.

wa_file-street = wa_excel-value.

*Read house no

WHEN '11'.

wa_file-house_num1 = wa_excel-value.

*Read city postal code

WHEN '12'.

wa_file-post_code1 = wa_excel-value.

*Read city

WHEN '13'.

wa_file-city1 = wa_excel-value.

*Read country

WHEN '14'.

wa_file-country = wa_excel-value.

*Read Region (State, Province, County)

WHEN '15'.

wa_file-region = wa_excel-value.

*Read PO Box

WHEN '16'.

wa_file-po_box = wa_excel-value.

*Read PO Box postal code

WHEN '17'.

wa_file-post_code2 = wa_excel-value.

*Read Company postal code (for large customers)

WHEN '18'.

wa_file-post_code3 = wa_excel-value.

ENDCASE.

AT END OF row.

CONDENSE:wa_file-bukrs,wa_file-ekorg,wa_file-ktokk,wa_file-title_medi,

wa_file-name1,wa_file-name2,wa_file-name3,wa_file-name4,

wa_file-sort1,wa_file-street,wa_file-house_num1,

wa_file-post_code1,wa_file-city1,wa_file-country,wa_file-region,

wa_file-po_box,wa_file-post_code2,wa_file-post_code3.

APPEND wa_file TO it_file.

CLEAR wa_file.

ENDAT .

ENDLOOP.

ENDFORM. " upload

&----


*& Form transact

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM transact .

LOOP AT it_file INTO wa_file.

PERFORM bdc_dynpro USING 'SAPMF02K' '0100'.

PERFORM bdc_field USING 'BDC_CURSOR'

'RF02K-KTOKK'.

PERFORM bdc_field USING 'BDC_OKCODE'

'/00'.

PERFORM bdc_field USING 'RF02K-BUKRS'

wa_file-bukrs.

PERFORM bdc_field USING 'RF02K-EKORG'

wa_file-ekorg.

PERFORM bdc_field USING 'RF02K-KTOKK'

wa_file-ktokk.

PERFORM bdc_dynpro USING 'SAPMF02K' '0110'.

PERFORM bdc_field USING 'BDC_CURSOR'

'LFA1-REGIO'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=PF03'.

PERFORM bdc_field USING 'LFA1-ANRED'

wa_file-title_medi.

PERFORM bdc_field USING 'LFA1-NAME1'

wa_file-name1.

PERFORM bdc_field USING 'LFA1-NAME2'

wa_file-name2.

PERFORM bdc_field USING 'LFA1-NAME3'

wa_file-name3.

PERFORM bdc_field USING 'LFA1-NAME4'

wa_file-name4.

PERFORM bdc_field USING 'LFA1-SORTL'

wa_file-sort1.

PERFORM bdc_field USING 'LFA1-STRAS'

wa_file-street.

PERFORM bdc_field USING 'LFA1-PFORT'

wa_file-house_num1.

PERFORM bdc_field USING 'LFA1-ORT01'

wa_file-post_code1.

PERFORM bdc_field USING 'LFA1-ORT02'

wa_file-city1.

PERFORM bdc_field USING 'LFA1-LAND1'

wa_file-country.

PERFORM bdc_field USING 'LFA1-REGIO'

wa_file-region.

PERFORM bdc_field USING 'LFA1-PFACH'

wa_file-po_box.

PERFORM bdc_field USING 'LFA1-PSTL2'

wa_file-post_code2.

PERFORM bdc_field USING 'LFA1-PSTLZ'

wa_file-post_code2.

PERFORM bdc_dynpro USING 'SAPLSPO1' '0100'.

PERFORM bdc_field USING 'BDC_OKCODE'

'=YES'.

CALL TRANSACTION 'XK01'

USING it_bdcdata

OPTIONS FROM x_ctuprms

MESSAGES INTO it_msgtab.

REFRESH it_bdcdata.

PERFORM collect_messages.

CLEAR wa_file.

ENDLOOP.

PERFORM write_messages.

ENDFORM. " transact

Read only

Former Member
0 Likes
424

hi,

you have the code

perform bdc_field using 'LFBK-BANKS(01)'

record-BANKS_01_008.

perform bdc_field using 'LFBK-BANKS(02)'

record-BANKS_02_009.....

so you will put the code in a loop .

get a character type field that can hold the name of the field i.e.LFBK-BANKS say fieldname and the for 01 ,02 for these numbers get a counter variable of type NUMC say counter .

Increment the counter for each loop pass and concatenate fieldname '(' counter ')' into fieldname .

So in this way you can fill the each row of table control.