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

Work area

Former Member
0 Likes
601

Hi I want to use internal table and work area in my bdc program like

Data: it_bdcdata type table of bdcdata.

Wa_bdcdata type bdcdata.

Call transaction va01 using wa_bdcdata …

The above syntax is giving syntax error like wa_bdcdata is not with occurs 0

Suppose if I give it_bdcdata then records are not uploading. I did all clear and refresh

And inside of bdc I am doing clear wa_bdcdata.

Wa_bdcdata-program = ‘ a’.

Append wa_bdcdata to it_bdcdata.

Please suggest me

4 REPLIES 4
Read only

gopi_narendra
Active Contributor
0 Likes
539

You should be using a internal table to use the call transaction statement.

See the sample code as below

DATA: BDCDATA TYPE TABLE OF BDCDATA. 
DATA: ITAB TYPE TABLE OF BDCMSGCOLL. 

DATA: PROGRAM LIKE SY-REPID, 
      WA_BDCDATA TYPE BDCDATA. 

WA_BDCDATA-PROGRAM  = 'SAPMS38M'. 
WA_BDCDATA-DYNPRO   = '0100'. 
WA_BDCDATA-DYNBEGIN = 'X'. 
APPEND WA_BDCDATA TO BDCDATA. 

CLEAR WA_BDCDATA. 
WA_BDCDATA-FNAM     = 'RS38M-PROGRAMM'. 
WA_BDCDATA-FVAL     = PROGRAM. 
APPEND WA_BDCDATA TO BDCDATA. 

CALL TRANSACTION 'SE38'  USING BDCDATA  MODE 'N' 
                         MESSAGES INTO ITAB.

Regards

Gopi

Read only

Former Member
0 Likes
539

Hi,

Write:

Call transaction va01 using it_bdcdata

instead of Call transaction va01 using wa_bdcdata.

Regards,

Rama.Pammi

Read only

Former Member
0 Likes
539

Work area can be created only for Internal Table type.

do and check like this,

Data: it_bdcdata type table of bdcdata,

Wa_bdcdata type bdcdata.

Call transaction 'va01' using it_bdcdata.

reward if useful.

Regards,

Vimal

Read only

Former Member
0 Likes
539

Hi ,

Here is the sample code for BDC .

TYPES: BEGIN OF x_itab ,

mptyp TYPE rmipm-mptyp,

wstra TYPE rmipm-wstra,

pstxt TYPE rmipm-pstxt,

tplnr TYPE riwo1-tplnr,

equnr TYPE riwo1-equnr,

bautl TYPE riwo1-bautl,

iwerk TYPE rmipm-iwerk,

wpgrp TYPE rmipm-wpgrp,

auart TYPE rmipm-auart,

ilart TYPE rmipm-ilart,

gewerk TYPE rmipm-gewerk,

wergw TYPE rmipm-wergw,

gsber TYPE rmipm-gsber,

plnty TYPE rmipm-plnty,

plnnr TYPE rmipm-plnnr,

priok TYPE rmipm-priok,

plnal TYPE rmipm-plnal ,

END OF x_itab.

TYPES: BEGIN OF x_messages,

index TYPE i,

msgtyp(1),

equnr(18),

tplnr(30),

message(120),

END OF x_messages.

DATA : it_itab TYPE STANDARD TABLE OF x_itab ,

wa_itab TYPE x_itab .

DATA x_ctuprms TYPE ctu_params.

DATA it_bdcdata TYPE STANDARD TABLE OF bdcdata.

DATA : wa_bdcdata TYPE bdcdata.

DATA: w_flname TYPE ibipparms-path.

DATA: it_excel TYPE STANDARD TABLE OF alsmex_tabline,

wa_excel TYPE alsmex_tabline.

DATA: it_msgtab TYPE STANDARD TABLE OF bdcmsgcoll .

DATA wa_msgtab TYPE bdcmsgcoll.

DATA : it_messages TYPE STANDARD TABLE OF x_messages .

DATA wa_messages TYPE x_messages.

DATA: w_index TYPE i VALUE 1.

constants : c_var(3) value '/00' ,

c_var1(3) value '=BU' .

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

  • SELECTION SCREEN

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

SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME .

.

SELECTION-SCREEN : SKIP 1 .

PARAMETERS : p_flname TYPE rlgrap-filename OBLIGATORY.

SELECTION-SCREEN END OF BLOCK b1.

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

  • AT SELECTION SCREEN (F4 HELP)

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

AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_flname.

CALL FUNCTION 'F4_FILENAME'

EXPORTING

program_name = syst-cprog

dynpro_number = syst-dynnr

  • FIELD_NAME = ' '

IMPORTING

file_name = w_flname.

p_flname = w_flname.

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

  • START OF SELECTION

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

START-OF-SELECTION.

PERFORM fill_it_itab.

PERFORM execute_bdc.

----


  • FORM execute_bdc *

----


  • Sub-routine to create maintanince item.

----


FORM execute_bdc.

DATA: w_bill(18).

PERFORM fill_ctuprms.

LOOP AT it_itab INTO wa_itab.

REFRESH it_bdcdata.

PERFORM fill_bdcdata USING :

'SAPLIWP3' '0200' 'X',

'BDC_OKCODE' c_var ' ',

'RMIPM-MPTYP' wa_itab-mptyp ' ',

'RMIPM-WSTRA' wa_itab-wstra ' ',

'SAPLIWP3' '0201' 'X',

'BDC_OKCODE' c_var ' ',

'RMIPM-PSTXT' wa_itab-pstxt ' ',

'RMIPM-WSTRA' wa_itab-wstra ' ',

'RIWO1-TPLNR' wa_itab-tplnr ' ',

'RIWO1-EQUNR' wa_itab-equnr ' ',

'RIWO1-BAUTL' wa_itab-bautl ' ',

'RMIPM-IWERK' wa_itab-iwerk ' ',

'RMIPM-WPGRP' wa_itab-wpgrp ' ',

'RMIPM-AUART' wa_itab-auart ' ',

'RMIPM-ILART' wa_itab-ilart ' ',

'RMIPM-GEWERK' wa_itab-gewerk ' ',

'RMIPM-WERGW' wa_itab-wergw ' ',

'RMIPM-GSBER' wa_itab-gsber ' ',

'RMIPM-PLNTY' wa_itab-plnty ' ',

'RMIPM-PLNNR' wa_itab-plnnr ' ',

'RMIPM-PLNAL' wa_itab-plnal ' ',

'SAPLIWP3' '0201' 'X',

'BDC_OKCODE' c_var ' ',

'RMIPM-PSTXT' wa_itab-pstxt ' ',

*'RMIPM-WSTRA' wa_itab-WSTRA ' ',

'RIWO1-TPLNR' wa_itab-tplnr ' ',

'RIWO1-EQUNR' wa_itab-equnr ' ',

'RIWO1-BAUTL' wa_itab-bautl ' ',

'RMIPM-IWERK' wa_itab-iwerk ' ',

'RMIPM-WPGRP' wa_itab-wpgrp ' ',

'RMIPM-AUART' wa_itab-auart ' ',

'RMIPM-ILART' wa_itab-ilart ' ',

'RMIPM-GEWERK' wa_itab-gewerk ' ',

'RMIPM-WERGW' wa_itab-wergw ' ',

'RMIPM-GSBER' wa_itab-gsber ' ',

'RMIPM-PRIOK' wa_itab-priok ' ',

'RMIPM-PLNTY' wa_itab-plnty ' ',

'RMIPM-PLNNR' wa_itab-plnnr ' ',

'RMIPM-PLNAL' wa_itab-plnal ' ',

'SAPLIWP3' '0201' 'X',

'BDC_OKCODE' c_var1 ' ',

'RMIPM-PSTXT' wa_itab-pstxt ' ',

*'RMIPM-WSTRA' wa_itab-WSTRA ' ',

'RIWO1-TPLNR' wa_itab-tplnr ' ',

'RIWO1-EQUNR' wa_itab-equnr ' ',

'RIWO1-BAUTL' wa_itab-bautl ' ',

'RMIPM-IWERK' wa_itab-iwerk ' ',

*'RMIPM-WPGR懄' wa_itab-WPGRP ' ',

'RMIPM-AUART' wa_itab-auart ' ',

'RMIPM-ILART' wa_itab-ilart ' ',

'RMIPM-GEWERK' wa_itab-gewerk ' ',

'RMIPM-WERGW' wa_itab-wergw ' ',

'RMIPM-GSBER' wa_itab-gsber ' ',

'RMIPM-PRIOK' wa_itab-priok ' ',

'RMIPM-PLNTY' wa_itab-plnty ' ',

'RMIPM-PLNNR' wa_itab-plnnr ' ',

'RMIPM-PLNAL' wa_itab-plnal ' '.

CALL TRANSACTION 'IP04' USING it_bdcdata OPTIONS FROM x_ctuprms

MESSAGES INTO it_msgtab.

CLEAR wa_bdcdata.

REFRESH it_bdcdata.

PERFORM collecit_messages.

ENDLOOP.

PERFORM write_messages.

ENDFORM. "execute_bdc

&----


*& Form FILL_BDCDATA

&----


  • SUB-ROUTINE TO FILL BCDDATA FOR EXECUTION OF BDC

----


  • -->P_0414 text *

  • -->P_0415 text *

  • -->P_0416 text *

----


FORM fill_bdcdata USING val1

val2

val3.

CLEAR wa_bdcdata.

IF val3 = 'X'.

MOVE val1 TO wa_bdcdata-program.

MOVE val2 TO wa_bdcdata-dynpro.

MOVE val3 TO wa_bdcdata-dynbegin.

ELSE.

MOVE val1 TO wa_bdcdata-fnam.

MOVE val2 TO wa_bdcdata-fval.

ENDIF.

APPEND wa_bdcdata TO it_bdcdata.

ENDFORM. " FILL_BDCDATA

&----


*& Form FILL_it_itab

&----


*SUB-ROUTINE TO FILL DATA FROM A SPECIFIED FILE TO it_itab INTERNAL TABLE

----


FORM fill_it_itab.

refresh it_excel.

CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'

EXPORTING

filename = p_flname

i_begin_col = 2

i_begin_row = 3

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.

        • Filling Data into Internal Tables IT_ITAB From Internal Table

        • it_excel.

CLEAR wa_itab.

LOOP AT it_excel INTO wa_excel.

case wa_excel-col .

when '1' .

wa_itab-mptyp = wa_excel-value.

when '2' .

MOVE wa_excel-value TO wa_itab-wstra.

when '3' .

wa_itab-pstxt = wa_excel-value.

when '4' .

wa_itab-tplnr = wa_excel-value.

when '5' .

wa_itab-equnr = wa_excel-value.

when '6' .

wa_itab-bautl = wa_excel-value.

when '7' .

wa_itab-iwerk = wa_excel-value.

when '8' .

wa_itab-wpgrp = wa_excel-value.

when '9' .

wa_itab-auart = wa_excel-value.

when '10' .

wa_itab-ilart = wa_excel-value.

when '11' .

wa_itab-gewerk = wa_excel-value.

when '12' .

wa_itab-wergw = wa_excel-value.

when '13' .

wa_itab-gsber = wa_excel-value.

when '14' .

wa_itab-plnty = wa_excel-value.

when '15' .

wa_itab-plnnr = wa_excel-value.

when '16' .

wa_itab-plnal = wa_excel-value.

when '17' .

wa_itab-priok = wa_excel-value.

endcase.

AT END OF row.

CONDENSE: wa_itab-mptyp , wa_itab-wstra,

wa_itab-pstxt , wa_itab-tplnr , wa_itab-equnr,

wa_itab-bautl , wa_itab-iwerk, wa_itab-wpgrp,

wa_itab-auart , wa_itab-ilart , wa_itab-gewerk,

wa_itab-wergw , wa_itab-gsber , wa_itab-plnty ,

wa_itab-plnnr , wa_itab-plnal , wa_itab-priok.

APPEND wa_itab TO it_itab.

CLEAR wa_itab.

ENDAT .

ENDLOOP.

ENDFORM. " FILL_it_itab

&----


*& Form FILL_CTUPRMS

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM fill_ctuprms.

CLEAR x_ctuprms.

x_ctuprms-dismode = 'N'.

ENDFORM. " FILL_CTUPRMS

&----


*& Form COLLECit_messages

&----


  • text

--


&#25028;--

  • --> p1 text

  • <-- p2 text

----


FORM collecit_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

IMPORTING

msg = w_msg

EXCEPTIONS

OTHERS = 0.

CONDENSE w_msg.

CLEAR wa_messages.

wa_messages-index = w_index.

wa_messages-msgtyp = wa_msgtab-msgtyp.

wa_messages-message = w_msg.

wa_messages-equnr = wa_itab-equnr .

wa_messages-tplnr = wa_itab-tplnr.

APPEND wa_messages TO it_messages .

ENDLOOP.

w_index = w_index + 1.

REFRESH it_msgtab.

ENDFORM. " COLLECit_messages

&----


*& Form write_messages

&----


  • text

----


  • --> p1 text

  • <-- p2 text

----


FORM write_messages .

LOOP AT it_messages INTO wa_messages .

WRITE:/1 sy-vline.

WRITE : 2 wa_messages-index .

IF wa_messages-msgtyp = 'S'.

WRITE: 10 icon_green_light.

ELSEIF wa_messages-msgtyp = 'E'.

WRITE: 10 icon_red_light.

ELSEIF wa_messages-msgtyp = 'W'.

WRITE: 10 icon_yellow_light.

ENDIF.

WRITE: 20 sy-vline.

WRITE : 30 wa_messages-equnr .

WRITE: 48 sy-vline.

WRITE : 49 wa_messages-tplnr .

WRITE: 79 sy-vline.

WRITE : 80 wa_messages-message .

WRITE: 180 sy-vline.

WRITE:/1 sy-vline.

ULINE 1(180).

ENDLOOP.

ENDFORM. " write_messages

Reward points if it helps.

Regards,

Shafivullah Mohammad