2007 Nov 06 6:19 AM
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
2007 Nov 06 6:24 AM
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
2007 Nov 06 6:24 AM
Hi,
Write:
Call transaction va01 using it_bdcdata
instead of Call transaction va01 using wa_bdcdata.
Regards,
Rama.Pammi
2007 Nov 06 6:27 AM
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
2007 Nov 06 6:40 AM
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
--
--> 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