BDC won't work in Table Control...
Hi Guys,
Again, i am stuck in the bdc problem. I am trying to bdc into a table control. I have two items to put into the table control via BDC. The TCODE that i need to bdc is PAKG.
<b>Previously</b>,<i> some of you have given me many advise on this but i just couldn't solve it. Here i am attaching my code for everyone to help me.</i>
Below is the code that i wrote:
DATA: I(2) TYPE N.
I = 1.
LOOP AT TUPLOAD.
IF SY-TABIX > 1.
CLEAR PARA.
PARA = 'Q0221-BETRG'.
CONCATENATE PARA '(' I ')' INTO PARA.
PERFORM BDC_FIELD USING PARA TUPLOAD-AMOUNT.
PERFORM BDC_FIELD USING 'BDC_SUBSCR'
'SUBSCREEN_TC2000'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' PARA.
CLEAR PARA.
PARA = 'Q0221-LGART'.
CONCATENATE PARA '(' I ')' INTO PARA.
PERFORM BDC_FIELD USING PARA TUPLOAD-WAGT.
CLEAR PARA.
PARA = 'Q0221-TAXAU'.
CONCATENATE PARA '(' I ')' INTO PARA.
PERFORM BDC_FIELD USING PARA TUPLOAD-TAXA.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=INSL'.
I = I + 1.
ENDIF.
ENDDLOOP.
thanks.
William
The PAKG has a sample BDC file.
This mentions how to code for multiple lines.
I am copying it here:
PerNr ChkDt I OCRe TaxA Business No. RsAr QcTx WagT Hours Amount
07070707 31.12.1999 0 BC MC00 2000
/320 40
/322 50
07070707 31.12.1999 1 BC MC00 2200
/320 44
/322 55
Hope this helps,
Bhanu
Similar Messages
-
BDC Recording For J1IG with Table Control Scroll bar
Dear Friends,
I am doing BDC program for J1IG Transaction after done recording.
As you knows that, In J1IG transaction max. 11 materials are shows in table control at a time and if more records are there, then we have to scroll down manually so after that, we can see the records.
Now my BDC program runs upto 11 materials but when more than 11 materials, selection is coming on first material only and cursor not showing 12th material.
So i think page down is not working for that issue.
I have seen lots of search forum for that but not getting the proper answer.
Please reply.
Regards,
Shivam.Dear Dinu,
For better understanding please see the code.
So you suggest what should i have to do?.
LOOP AT jtab INTO wb.
LOOP AT itab INTO wa WHERE mblnr EQ wb-mblnr.
CLEAR : flag.
AT NEW mblnr.
flag = 'X'.
CLEAR : cnt, var1, var2.
ENDAT.
cnt = cnt + 1.
IF flag EQ 'X'.
PERFORM bdc_dynpro USING 'SAPMJ1IG' '0100'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ECAP'.
PERFORM bdc_dynpro USING 'SAPMJ1IG' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'T_HEADER-EXDAT'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'J_1IEXCHDR-EXGRP'
wa-exgrp.
PERFORM bdc_field USING 'T_HEADER-MBLNR'
wa-mblnr.
PERFORM bdc_field USING 'T_HEADER-MJAHR'
wa-mjahr.
PERFORM bdc_field USING 'T_HEADER-EXNUM'
wa-exnum.
PERFORM bdc_field USING 'T_HEADER-EXDAT'
wa-exdat.
PERFORM bdc_dynpro USING 'SAPMJ1IG' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR'
'J_1IEXCHDR-EXGRP'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=DETL'.
ENDIF.
CONCATENATE 'T_ITEM-ZEILE(' cnt ')' INTO var1.
CONCATENATE 'T_ITEM-SELECTION(' cnt ')' INTO var2.
PERFORM bdc_dynpro USING 'SAPMJ1IG' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
var1. "'T_ITEM-ZEILE(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=MORE'.
PERFORM bdc_field USING var2 "'T_ITEM-SELECTION(01)'
'X'. "record-selection_01_019.
PERFORM bdc_dynpro USING 'SAPMJ1IG' '0400'.
PERFORM bdc_field USING 'BDC_CURSOR'
'T_LOCAL_EXC-EXADDRATE1(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'T_LOCAL_EXC-MENGE(01)'
wa-menge.
PERFORM bdc_field USING 'T_LOCAL_EXC-EXBAS(01)'
wa-exbas.
PERFORM bdc_field USING 'T_LOCAL_EXC-EXBED(01)'
wa-exbed.
PERFORM bdc_field USING 'T_LOCAL_EXC-BEDRATE(01)'
wa-bedrate.
PERFORM bdc_field USING 'T_LOCAL_EXC-EXAED(01)'
wa-exaed.
PERFORM bdc_field USING 'T_LOCAL_EXC-AEDRATE(01)'
wa-aedrate.
PERFORM bdc_field USING 'T_LOCAL_EXC-ECS(01)'
wa-ecs.
PERFORM bdc_field USING 'T_LOCAL_EXC-ECSRATE(01)'
wa-ecsrate.
PERFORM bdc_field USING 'T_LOCAL_EXC-EXADDTAX1(01)'
wa-exaddtax1.
PERFORM bdc_field USING 'T_LOCAL_EXC-EXADDRATE1(01)'
wa-exaddrate1.
PERFORM bdc_dynpro USING 'SAPMJ1IG' '0400'.
PERFORM bdc_field USING 'BDC_CURSOR'
'T_LOCAL_EXC-RG23ASER(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=BACK'.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMJ1IG' '0300'.
PERFORM bdc_field USING 'BDC_CURSOR'
'T_ITEM-DOCNO(01)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SAVE'.
CLEAR opt.
opt-dismode = 'A'.
opt-updmode = 'S'.
* opt-defsize = '12'.
* CLEAR: it_messages[], it_messages.
CALL TRANSACTION 'J1IG' USING it_bdcdata OPTIONS FROM opt
MESSAGES INTO it_messages.
REFRESH it_bdcdata.
ENDLOOP.
CHECK it_messages[] IS NOT INITIAL.
LOOP AT it_messages.
PERFORM fill_messages USING it_messages-msgtyp
it_messages-msgid
it_messages-msgnr
it_messages-msgv1
it_messages-msgv2
it_messages-msgv3
it_messages-msgv4.
ENDLOOP.
PERFORM display_messages TABLES tmsg. -
Last_page button is not working in table control-urgent
hi all,
iam displaying the data in table control.in my pf-status i have first_page,next_page,prev_page and last_page.out of 4 buttons 3 buttons are working finr except last_page. any body can send me the code for this program.iam sending my program below.
REPORT ZMAHI_TABLE_CONTROL .
TABLES : VBAK,VBAP.
DATA : BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBAK-VBELN,
ERDAT TYPE VBAK-ERDAT,
ERNAM TYPE VBAK-ERNAM,
ERZET TYPE VBAK-ERZET,
REASON(40) TYPE C,
END OF ITAB.
DATA : FILL TYPE I VALUE 1.
DATA : N TYPE I .
DATA : BEGIN OF XVALUES OCCURS 50,
BUTXT LIKE T001-BUTXT,
END OF XVALUES.
DATA : BEGIN OF XFIELDS OCCURS 50.
INCLUDE STRUCTURE HELP_VALUE.
DATA : END OF XFIELDS.
DATA : BEGIN OF SEL_VAL OCCURS 50.
INCLUDE STRUCTURE HELP_VTAB.
DATA : END OF SEL_VAL.
TABLE CONTROL DECLARATIONS------
CONTROLS : CONTROL_DATA TYPE TABLEVIEW USING SCREEN '100'.
DATA : OK_CODE TYPE SY-UCOMM,
LIN TYPE I,
LIN1 TYPE I,
LIN2 TYPE I,
LIN3 TYPE I.
DATA: LINES TYPE I,
LIMIT TYPE I VALUE 1.
DATA : LINE_COUNT TYPE I,
LINEI TYPE I,
LINEJ TYPE I,
LINE1 TYPE I,
LINE2 TYPE I,
LN1 TYPE I.
SELECTION-SCREEN : BEGIN OF BLOCK B1.
SELECT-OPTIONS : P_VBELN FOR VBAK-VBELN.
SELECTION-SCREEN : END OF BLOCK B1.
START-OF-SELECTION.
SELECT VBELN
ERDAT
ERNAM
ERZET
FROM VBAK
INTO TABLE ITAB
WHERE VBELN IN P_VBELN.
CALL SCREEN 100.
*& Module F4_HELP INPUT
MODULE F4_HELP INPUT.
FREE : XFIELDS,SEL_VAL,XVALUES.
MOVE : 'ZMAHI' TO XFIELDS-TABNAME,
'REASON' TO XFIELDS-FIELDNAME,
'X' TO XFIELDS-SELECTFLAG.
APPEND XFIELDS.
XVALUES = 'Non Trade F&F'.
APPEND XVALUES .
XVALUES = 'Non Trade Retention'.
APPEND XVALUES .
XVALUES = 'Oldbills Accnt cntmnt'.
APPEND XVALUES .
XVALUES = 'Non Trade Not claimed'.
APPEND XVALUES .
XVALUES = 'Non Trade Dispute'.
APPEND XVALUES .
XVALUES = 'Non Trade Payment Block'.
APPEND XVALUES .
XVALUES = 'N/T Subsntly Cleared'.
APPEND XVALUES .
XVALUES = 'N/T Unstld Advances'.
APPEND XVALUES .
XVALUES = 'N/T OThers'.
APPEND XVALUES .
XVALUES = 'Trade Non Receipt OF BOE'.
APPEND XVALUES .
XVALUES = 'Trade OEM Adjustments'.
APPEND XVALUES .
XVALUES = 'Trade Reject Of Material'.
APPEND XVALUES .
XVALUES = 'Trade NOt Claimed'.
APPEND XVALUES .
XVALUES = 'Trade Dispute'.
APPEND XVALUES .
XVALUES = 'Trade Payment BLock'.
APPEND XVALUES .
XVALUES = 'Trade Subsntly Cleared'.
APPEND XVALUES .
XVALUES = 'Trade Non Submission of bills'.
APPEND XVALUES .
XVALUES = 'Trade others'.
APPEND XVALUES .
CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE_EXT'
EXPORTING
CUCOL = 0
CUROW = 0
DISPLAY = ' '
FIELDNAME = 'REASON'
TABNAME = 'ZIFIOD011'
IMPORTING
SELECT_VALUE = ITAB-REASON
TABLES
FIELDS = XFIELDS
SELECT_VALUES = SEL_VAL
VALUETAB = XVALUES.
ENDMODULE. " F4_HELP INPUT
*& Module STATUS_0100 OUTPUT
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '0100'.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'CANCEL' OR 'EXIT' OR 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'NEXT_LINE'.
CONTROL_DATA-top_line = CONTROL_DATA-top_line + 1.
limit = fill - lines + 1.
IF CONTROL_DATA-top_line > limit.
CONTROL_DATA-top_line = limit.
ENDIF.
WHEN 'PREV_LINE'.
CONTROL_DATA-top_line = CONTROL_DATA-top_line - 1.
IF CONTROL_DATA-top_line < 0.
CONTROL_DATA-top_line = 0.
ENDIF.
WHEN 'NEXT_PAGE'.
CONTROL_DATA-TOP_LINE = CONTROL_DATA-TOP_LINE + LINES.
LIMIT = LIMIT + 1.
CONTROL_DATA-TOP_LINE = LIMIT.
WHEN 'PREV_PAGE'.
CONTROL_DATA-TOP_LINE = CONTROL_DATA-TOP_LINE - LINES.
LIMIT = LIMIT - 1.
CONTROL_DATA-TOP_LINE = LIMIT.
WHEN 'LAST_PAGE'.
CONTROL_DATA-TOP_LINE = FILL - LINES + 1.
WHEN 'FIRST_PAGE'.
CONTROL_DATA-TOP_LINE = 0.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module SCROLL_BAR INPUT
MODULE SCROLL_BAR INPUT.
DESCRIBE TABLE ITAB LINES CONTROL_DATA-LINES.
ENDMODULE. " SCROLL_BAR INPUT
thanks,
maheedhar.THi Ravi,
The code which u sent to me is not working for next page and previous page.
can u plz resend me the code.
iam sending my code below.
REPORT ZMAHI_TABLE_CONTROL .
TABLES : VBAK,VBAP.
DATA : BEGIN OF ITAB OCCURS 0,
VBELN TYPE VBAK-VBELN,
ERDAT TYPE VBAK-ERDAT,
ERNAM TYPE VBAK-ERNAM,
ERZET TYPE VBAK-ERZET,
REASON(40) TYPE C,
END OF ITAB.
DATA : FILL TYPE I VALUE 1.
DATA : N TYPE I .
DATA : BEGIN OF XVALUES OCCURS 50,
BUTXT LIKE T001-BUTXT,
END OF XVALUES.
DATA : BEGIN OF XFIELDS OCCURS 50.
INCLUDE STRUCTURE HELP_VALUE.
DATA : END OF XFIELDS.
DATA : BEGIN OF SEL_VAL OCCURS 50.
INCLUDE STRUCTURE HELP_VTAB.
DATA : END OF SEL_VAL.
TABLE CONTROL DECLARATIONS------
CONTROLS : CONTROL_DATA TYPE TABLEVIEW USING SCREEN '100'.
DATA : OK_CODE TYPE SY-UCOMM,
LIN TYPE I,
LIN1 TYPE I,
LIN2 TYPE I,
LIN3 TYPE I.
DATA: LINES TYPE I,
LIMIT TYPE I VALUE 1.
DATA : LINE_COUNT TYPE I,
LINEI TYPE I,
LINEJ TYPE I,
LINE1 TYPE I,
LINE2 TYPE I,
LN1 TYPE I.
SELECTION-SCREEN : BEGIN OF BLOCK B1.
SELECT-OPTIONS : P_VBELN FOR VBAK-VBELN.
SELECTION-SCREEN : END OF BLOCK B1.
START-OF-SELECTION.
SELECT VBELN
ERDAT
ERNAM
ERZET
FROM VBAK
INTO TABLE ITAB
WHERE VBELN IN P_VBELN.
CALL SCREEN 100.
*& Module F4_HELP INPUT
MODULE F4_HELP INPUT.
FREE : XFIELDS,SEL_VAL,XVALUES.
MOVE : 'ZMAHI' TO XFIELDS-TABNAME,
'REASON' TO XFIELDS-FIELDNAME,
'X' TO XFIELDS-SELECTFLAG.
APPEND XFIELDS.
XVALUES = 'Non Trade F&F'.
APPEND XVALUES .
XVALUES = 'Non Trade Retention'.
APPEND XVALUES .
XVALUES = 'Oldbills Accnt cntmnt'.
APPEND XVALUES .
XVALUES = 'Non Trade Not claimed'.
APPEND XVALUES .
XVALUES = 'Non Trade Dispute'.
APPEND XVALUES .
XVALUES = 'Non Trade Payment Block'.
APPEND XVALUES .
XVALUES = 'N/T Subsntly Cleared'.
APPEND XVALUES .
XVALUES = 'N/T Unstld Advances'.
APPEND XVALUES .
XVALUES = 'N/T OThers'.
APPEND XVALUES .
XVALUES = 'Trade Non Receipt OF BOE'.
APPEND XVALUES .
XVALUES = 'Trade OEM Adjustments'.
APPEND XVALUES .
XVALUES = 'Trade Reject Of Material'.
APPEND XVALUES .
XVALUES = 'Trade NOt Claimed'.
APPEND XVALUES .
XVALUES = 'Trade Dispute'.
APPEND XVALUES .
XVALUES = 'Trade Payment BLock'.
APPEND XVALUES .
XVALUES = 'Trade Subsntly Cleared'.
APPEND XVALUES .
XVALUES = 'Trade Non Submission of bills'.
APPEND XVALUES .
XVALUES = 'Trade others'.
APPEND XVALUES .
CALL FUNCTION 'HELP_VALUES_GET_WITH_TABLE_EXT'
EXPORTING
CUCOL = 0
CUROW = 0
DISPLAY = ' '
FIELDNAME = 'REASON'
TABNAME = 'ZIFIOD011'
IMPORTING
SELECT_VALUE = ITAB-REASON
TABLES
FIELDS = XFIELDS
SELECT_VALUES = SEL_VAL
VALUETAB = XVALUES.
ENDMODULE. " F4_HELP INPUT
*& Module STATUS_0100 OUTPUT
MODULE STATUS_0100 OUTPUT.
SET PF-STATUS '0100'.
ENDMODULE. " STATUS_0100 OUTPUT
*& Module USER_COMMAND_0100 INPUT
MODULE USER_COMMAND_0100 INPUT.
CASE SY-UCOMM.
WHEN 'CANCEL' OR 'EXIT' OR 'BACK'.
LEAVE TO SCREEN 0.
WHEN 'NEXT_LINE'.
CONTROL_DATA-top_line = CONTROL_DATA-top_line + 1.
limit = fill - lines + 1.
IF CONTROL_DATA-top_line > limit.
CONTROL_DATA-top_line = limit.
ENDIF.
WHEN 'PREV_LINE'.
CONTROL_DATA-top_line = CONTROL_DATA-top_line - 1.
IF CONTROL_DATA-top_line < 0.
CONTROL_DATA-top_line = 0.
ENDIF.
WHEN 'NEXT_PAGE'.
CONTROL_DATA-TOP_LINE = CONTROL_DATA-TOP_LINE + LINES.
LIMIT = LIMIT + 1.
CONTROL_DATA-TOP_LINE = LIMIT.
WHEN 'PREV_PAGE'.
CONTROL_DATA-TOP_LINE = CONTROL_DATA-TOP_LINE - LINES.
LIMIT = LIMIT - 1.
CONTROL_DATA-TOP_LINE = LIMIT.
WHEN 'LAST_PAGE'.
DESCRIBE TABLE ITAB LINES LIMIT.
CONTROL_DATA-TOP_LINE = LIMIT.
WHEN 'FIRST_PAGE'.
CONTROL_DATA-TOP_LINE = 0.
WHEN 'P--'.
CLEAR ok_code.
PERFORM paging USING 'P--'.
WHEN 'P-'.
CLEAR ok_code.
PERFORM paging USING 'P-'.
WHEN 'P+'.
CLEAR ok_code.
PERFORM paging USING 'P+'.
WHEN 'P++'.
CLEAR ok_code.
PERFORM paging USING 'P++'.
ENDCASE.
ENDMODULE. " USER_COMMAND_0100 INPUT
*& Module SCROLL_BAR INPUT
MODULE SCROLL_BAR INPUT.
DESCRIBE TABLE ITAB LINES CONTROL_DATA-LINES.
ENDMODULE. " SCROLL_BAR INPUT
*& Form paging
text
-->P_0356 text
*FORM paging USING VALUE(P_0356).
FORM paging USING code.
DATA: i TYPE i,
j TYPE i.
CASE code.
WHEN 'P--'.
CONTROL_DATA-top_line = 1.
WHEN 'P-'.
CONTROL_DATA-top_line = CONTROL_DATA-top_line - line_count.
IF CONTROL_DATA-top_line LE 0.
CONTROL_DATA-top_line = 1.
ENDIF.
WHEN 'P+'.
i = CONTROL_DATA-top_line + line_count.
j = CONTROL_DATA-lines - line_count + 1.
IF j LE 0. j = 1. ENDIF.
IF i LE j.
CONTROL_DATA-top_line = i.
ELSE.
CONTROL_DATA-top_line = j.
ENDIF.
WHEN 'P++'.
CONTROL_DATA-top_line = CONTROL_DATA-lines - line_count + 1.
IF CONTROL_DATA-top_line LE 0.
CONTROL_DATA-top_line = 1.
ENDIF.
ENDCASE.
ENDFORM. " PAGING
*ENDFORM. " paging
thanks,
maheedhar.t -
In BDC'S how to handle Table control
Hi,
I want to know the concept and code for BDC's in Table control steps(MM01,VA01) and coding.Please its very Urgent.Hi Raghavendra,
Go through this program mm01.
rePORT ymmbdcmm01
NO STANDARD PAGE HEADING LINE-SIZE 255.
*& Table Declarations *
TABLES:rmmg1,makt,mara,mvke, marc,mbew,t100.
TYPE-POOLS: truxs.
DATA: it_raw TYPE truxs_t_text_data.
*& Data Declarations *
DATA:
BEGIN OF t_data OCCURS 0,
data TYPE string,
END OF t_data.
DATA:BEGIN OF it_mess OCCURS 0,
msgtyp(5),
lms(200),
msgv1(50),
END OF it_mess.
DATA: BEGIN OF it_itab OCCURS 0,
matnr TYPE rmmg1-matnr,
mbrsh TYPE rmmg1-mbrsh,
mtart TYPE rmmg1-mtart,
werks TYPE rmmg1-werks,
lgort TYPE rmmg1-lgort,
vkorg TYPE rmmg1-vkorg,
vtweg TYPE rmmg1-vtweg,
maktx TYPE makt-maktx,
meins TYPE mara-meins,
matkl TYPE mara-matkl,
spart TYPE mara-spart,
GEWEI TYPE MARA-GEWEI,
dwerk TYPE mvke-dwerk,
versg TYPE mvke-versg,
mtpos TYPE mvke-mtpos,
mtvfp TYPE marc-mtvfp,
tragr TYPE mara-tragr,
ladgr TYPE marc-ladgr,
sernp TYPE marc-sernp,
txline(25), "added
kordb ,
mprof TYPE mara-mprof,
ekgrp TYPE marc-ekgrp,
dismm TYPE marc-dismm,
dispo TYPE marc-dispo,
disls TYPE marc-disls,
mabst(13) TYPE c,
beskz TYPE marc-beskz,
sobsl TYPE marc-sobsl,
lgpro TYPE marc-lgpro,
dzeit TYPE c,
plifz(3) TYPE c,
webaz TYPE c,
fhori TYPE marc-fhori,
eisbe TYPE c,
strgr(2) TYPE c,
vrmod TYPE c,
vint1(3),
vint2(3),
wzeit(3),
sbdkz TYPE marc-sbdkz,
bklas TYPE mbew-bklas,
vprsv TYPE mbew-vprsv,
verpr(11),
peinh TYPE c,
ekalr TYPE mbew-ekalr,
losgr TYPE c,
RGEKZ(1),
fevor(3),
END OF it_itab.
*decl of internal table of table control for BDCDATA & BDCMSGCOLL
DATA : BEGIN OF bdcdata OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdcdata.
DATA:it_msgtab TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE,
it_msgtab1 TYPE STANDARD TABLE OF bdcmsgcoll WITH HEADER LINE.
DATA : fld(50) TYPE c,
cnt(2) TYPE n,
l_mstring(150).
START-OF-SELECTION.
*& File uploading from xlsheet to sap *
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
I_FIELD_SEPERATOR =
i_line_header = 'X'
i_tab_raw_data = it_raw
i_filename = 'C:\Documents and Settings\sapthamm\Desktop\mm02.xls'
TABLES
i_tab_converted_data = it_itab
EXCEPTIONS
conversion_failed = 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.
*& Splitting the Internal Table *
LOOP AT t_data.
SPLIT t_data-data AT cl_abap_char_utilities=>horizontal_tab INTO
it_itab-matnr
it_itab-mbrsh
it_itab-mtart
it_itab-werks
it_itab-lgort
it_itab-vkorg
it_itab-vtweg
it_itab-maktx
it_itab-meins
it_itab-matkl
it_itab-spart
it_itab-GEWEI
it_itab-dwerk
it_itab-versg
it_itab-mtpos
it_itab-mtvfp
it_itab-tragr
it_itab-ladgr
it_itab-sernp
it_itab-mprof
it_itab-ekgrp
it_itab-dismm
it_itab-dispo
it_itab-disls
it_itab-mabst
it_itab-beskz
it_itab-sobsl
it_itab-lgpro
it_itab-dzeit
it_itab-plifz
it_itab-webaz
it_itab-fhori
it_itab-eisbe
it_itab-strgr
it_itab-vrmod
it_itab-vint1
it_itab-vint2
it_itab-wzeit
it_itab-sbdkz
it_itab-bklas
it_itab-vprsv
it_itab-peinh
it_itab-ekalr
it_itab-losgr
APPEND it_itab.
CLEAR: it_itab,
t_data-data.
ENDLOOP.
*perform open_dataset using dataset.
*perform open_group.
*do.
*read dataset dataset into it_itab.
*if sy-subrc <> 0. exit. endif.
*& it_itabing of Material Type-HALB *
LOOP AT it_itab.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0060'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMMG1-MATNR'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'RMMG1-MATNR'
it_itab-matnr.
PERFORM bdc_field USING 'RMMG1-MBRSH'
it_itab-mbrsh.
PERFORM bdc_field USING 'RMMG1-MTART'
it_itab-mtart.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(17)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=P+'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(02)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(04)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(05)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(06)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(08)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(09)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(12)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(13)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(14)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(15)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(17)'
'X'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0070'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MSICHTAUSW-DYTXT(09)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(01)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(02)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(06)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(07)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(08)'
'X'.
PERFORM bdc_field USING 'MSICHTAUSW-KZSEL(09)'
'X'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '0080'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RMMG1-VTWEG'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=ENTR'.
PERFORM bdc_field USING 'RMMG1-WERKS'
it_itab-werks.
PERFORM bdc_field USING 'RMMG1-LGORT'
it_itab-lgort.
PERFORM bdc_field USING 'RMMG1-VKORG'
it_itab-vkorg.
PERFORM bdc_field USING 'RMMG1-VTWEG'
it_itab-vtweg.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARA-SPART'.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MARA-MATKL'
it_itab-matkl.
PERFORM bdc_field USING 'MARA-SPART'
it_itab-spart.
PERFORM bdc_field USING 'MARA-GEWEI'
'kg'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4004'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MARA-SPART'
it_itab-spart.
PERFORM bdc_field USING 'MVKE-DWERK'
it_itab-dwerk.
PERFORM bdc_field USING 'MARA-MATKL'
it_itab-matkl.
PERFORM bdc_field USING 'MVKE-SKTOF'
'X'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MG03STEUER-TAXKM(02)'.
PERFORM bdc_field USING 'MG03STEUER-TAXKM(01)'
'0'.
PERFORM bdc_field USING 'MG03STEUER-TAXKM(02)'
'1'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4200'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
*perform bdc_field using 'MAKT-MAKTX'
it_itab-MAKTX_040.
*perform bdc_field using 'BDC_CURSOR'
'MG03STEUER-TAXKM(05)'.
PERFORM bdc_field USING 'MG03STEUER-TAXKM(03)'
'1'.
PERFORM bdc_field USING 'MG03STEUER-TAXKM(04)'
'1'.
PERFORM bdc_field USING 'MG03STEUER-TAXKM(05)'
'0'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MARA-SPART'
it_itab-spart.
PERFORM bdc_field USING 'MVKE-DWERK'
it_itab-dwerk.
PERFORM bdc_field USING 'MARA-MATKL'
it_itab-matkl.
PERFORM bdc_field USING 'MVKE-SKTOF'
'X'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'BDC_CURSOR'
'MVKE-MTPOS'.
PERFORM bdc_field USING 'MVKE-VERSG'
it_itab-versg.
PERFORM bdc_field USING 'MVKE-MTPOS'
it_itab-mtpos.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MARA-GEWEI'
'KG'.
PERFORM bdc_field USING 'MARC-MTVFP'
it_itab-mtvfp.
PERFORM bdc_field USING 'MARA-TRAGR'
it_itab-tragr.
PERFORM bdc_field USING 'MARC-LADGR'
it_itab-ladgr.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-SERNP'.
PERFORM bdc_field USING 'MARC-SERNP'
it_itab-sernp.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4040'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=LTEX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=TXVB'.
PERFORM bdc_field USING 'RSTXT-TXLINE(02)'
'pcb assembly'.
PERFORM bdc_dynpro USING 'SAPLSTXX' '1100'.
PERFORM bdc_field USING 'BDC_CURSOR'
'RSTXT-TXLINE(02)'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=TXBA'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4040'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SP09'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MARC-EKGRP'
it_itab-ekgrp.
PERFORM bdc_field USING 'MARA-MATKL'
it_itab-matkl.
PERFORM bdc_field USING 'MARC-KORDB'
'X'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARA-MPROF'.
PERFORM bdc_field USING 'MARA-MPROF'
it_itab-mprof.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MARC-EKGRP'
it_itab-ekgrp.
PERFORM bdc_field USING 'MARC-DISMM'
it_itab-dismm.
PERFORM bdc_field USING 'MARC-DISPO'
it_itab-dispo.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-MABST'.
PERFORM bdc_field USING 'MARC-DISLS'
it_itab-disls.
PERFORM bdc_field USING 'MARC-MABST'
it_itab-mabst.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARC-BESKZ'
it_itab-beskz.
PERFORM bdc_field USING 'MARC-SOBSL'
it_itab-sobsl.
PERFORM bdc_field USING 'MARC-LGPRO'
it_itab-lgpro.
if it_itab-sernp = 'TJSL'.
PERFORM bdc_field USING 'MARC-RGEKZ'
ELSE.
PERFORM bdc_field USING 'MARC-RGEKZ'
'1'.
ENDIF.
PERFORM bdc_field USING 'MARC-DZEIT'
it_itab-dzeit.
PERFORM bdc_field USING 'MARC-PLIFZ'
it_itab-plifz.
PERFORM bdc_field USING 'MARC-WEBAZ'
it_itab-webaz.
PERFORM bdc_field USING 'MARC-FHORI'
it_itab-fhori.
PERFORM bdc_field USING 'MARC-EISBE'
it_itab-eisbe.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARC-PERKZ'
'M'.
PERFORM bdc_field USING 'MARC-STRGR'
it_itab-strgr.
PERFORM bdc_field USING 'MARC-VRMOD'
it_itab-vrmod.
PERFORM bdc_field USING 'MARC-VINT1'
it_itab-vint1.
PERFORM bdc_field USING 'MARC-VINT2'
it_itab-vint2.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-WZEIT'.
PERFORM bdc_field USING 'MARC-MTVFP'
it_itab-mtvfp.
PERFORM bdc_field USING 'MARC-WZEIT'
it_itab-wzeit.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'BDC_CURSOR'
'MARC-SBDKZ'.
PERFORM bdc_field USING 'MARC-SBDKZ'
it_itab-sbdkz.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MARC-FEVOR'
'001'.
PERFORM bdc_field USING 'MARC-LGPRO'
it_itab-lgpro.
PERFORM bdc_field USING 'MARC-SERNP'
it_itab-sernp.
PERFORM bdc_field USING 'MARC-DZEIT'
it_itab-dzeit.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
*perform bdc_field using 'MARA-IPRKZ'
it_itab-IPRKZ.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-GEWEI'
'KG'.
PERFORM bdc_field USING 'MARC-SERNP'
it_itab-sernp.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MARA-SPART'
it_itab-spart.
PERFORM bdc_field USING 'BDC_CURSOR'
'MBEW-VPRSV'.
PERFORM bdc_field USING 'MBEW-BKLAS'
it_itab-bklas.
*perform bdc_field using 'MBEW-EKLAS'
it_itab-EKLAS.
PERFORM bdc_field USING 'MBEW-VPRSV'
'v'.
PERFORM bdc_field USING 'MBEW-PEINH'
'1'.
perform bdc_field using 'MBEW-VERPR'
it_itab-VERPR.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'BDC_CURSOR'
'MAKT-MAKTX'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'MARA-MEINS'
it_itab-meins.
PERFORM bdc_field USING 'MBEW-EKALR'
'X'.
PERFORM bdc_field USING 'MARC-AWSLS'
'000001'.
PERFORM bdc_field USING 'MARC-LOSGR'
'1'.
PERFORM bdc_dynpro USING 'SAPLMGMM' '4000'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'MAKT-MAKTX'
it_itab-maktx.
PERFORM bdc_field USING 'BDC_CURSOR'
'MBEW-ZPLPR'.
*perform bdc_field using 'MBEW-ZPLPR'
'6000'.
PERFORM bdc_field USING 'MBEW-BKLAS'
it_itab-bklas.
PERFORM bdc_field USING 'MBEW-VPRSV'
'V'.
PERFORM bdc_field USING 'MBEW-PEINH'
'1'.
PERFORM bdc_dynpro USING 'SAPLSPO1' '0300'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'MM01' USING bdcdata MODE 'A'
UPDATE 'S'
MESSAGES INTO it_msgtab.
CLEAR bdcdata[].
CLEAR it_itab.
PERFORM error.
ENDLOOP.
*& Declaration of Error Handling *
i
it_msgtab1-msgv1 = it_msgtab-msgv1.
it_msgtab1-msgv2 = it_msgtab-msgv2.
it_msgtab1-msgv3 = it_msgtab-msgv3.
APPEND it_msgtab1.
ENDLOOP.
download error message to a file by using function module
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
BIN_FILESIZE =
filename = 'C:\Documents and Settings\sapthamm\Desktop\error.xls'
filetype = 'ASC'
APPEND = ' '
write_field_separator = 'X'
HEADER = '00'
TRUNC_TRAILING_BLANKS = ' '
WRITE_LF = 'X'
COL_SELECT = ' '
COL_SELECT_MASK = ' '
DAT_MODE = ' '
CONFIRM_OVERWRITE = ' '
NO_AUTH_CHECK = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
WRITE_BOM = ' '
TRUNC_TRAILING_BLANKS_EOL = 'X'
WK1_N_FORMAT = ' '
WK1_N_SIZE = ' '
WK1_T_FORMAT = ' '
WK1_T_SIZE = ' '
WRITE_EOL = ABAP_TRUE
IMPORTING
FILELENGTH =
TABLES
data_tab = it_mess
FIELDNAMES =
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*& Form BDC_DYNPRO
text
-->PROGRAM text
-->DYNPRO text
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
Insert field *
FORM bdc_field USING fnam fval.
IF FVAL <> .
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
ENDIF.
ENDFORM. "BDC_FIELD
form error.
LOOP AT it_msgtab.
IF it_msgtab-msgtyp = 'E'.
SELECT SINGLE * FROM t100 WHERE sprsl = it_msgtab-msgspra
AND arbgb = it_msgtab-msgid
AND msgnr = it_msgtab-msgnr.
IF sy-subrc = 0.
l_mstring = t100-text.
IF l_mstring CS '&1'.
REPLACE '&1' WITH it_msgtab-msgv1 INTO l_mstring.
REPLACE '&2' WITH it_msgtab-msgv2 INTO l_mstring.
REPLACE '&3' WITH it_msgtab-msgv3 INTO l_mstring.
REPLACE '&4' WITH it_msgtab-msgv4 INTO l_mstring.
ELSE.
REPLACE '&' WITH it_msgtab-msgv1 INTO l_mstring.
REPLACE '&' WITH it_msgtab-msgv2 INTO l_mstring.
REPLACE '&' WITH it_msgtab-msgv3 INTO l_mstring.
REPLACE '&' WITH it_msgtab-msgv4 INTO l_mstring.
ENDIF.
CONDENSE l_mstring.
it_mess-msgtyp = it_msgtab-msgtyp.
it_mess-lms = l_mstring.
it_mess-msgv1 = it_msgtab-msgv1.
APPEND it_mess.
WRITE: / it_msgtab-msgtyp, l_mstring(150).
ELSE.
WRITE: / it_msgtab.
it_mess-msgtyp = it_msgtab-msgtyp.
it_mess-lms = l_mstring.
it_mess-msgv1 = it_msgtab-msgv1.
APPEND it_mess.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM.
LOOP AT it_msgtab.
Rewords some points.
rgds,
P.Naganjana reddy -
BDC for existing record in table control
Hi,
I have a requirement to change existing records in table control through BDC. Is there any way I can choose the respective record from Table Control through BDC dynamically.
Regards
Akash/J4I/015PER, this transaction is used for adding permits to Operation in WEC. It has list of operations in Table Control. Permit can be added for choosing the operation from table control.
Our custom program is designed to add permits for the operation. So if I have to use the above transaction for adding permits, then first I have to choose the correct operation from the table control and then add permit. -
Bdc recording of screen having table control
hi all,
how to trap scroll in bdc recording of table control.
regards deepakHi..,
<b>I found this program in one of the BDC links !! Hope this helps u !!</b>
Following is a sample code of handling table control in BDC.
REPORT Y730_BDC5 .
*HANDLING TABLE CONTROL IN BDC
DATA : BEGIN OF IT_DUMMY OCCURS 0,
DUMMY(100) TYPE C,
END OF IT_DUMMY.
DATA : BEGIN OF IT_XK01 OCCURS 0,
LIFNR(10) TYPE C,
BUKRS(4) TYPE C,
EKORG(4) TYPE C,
KTOKK(4) TYPE C,
NAME1(30) TYPE C,
SORTL(10) TYPE C,
LAND1(3) TYPE C,
SPRAS(2) TYPE C,
AKONT(6) TYPE C,
FDGRV(2) TYPE C,
WAERS(3) TYPE C,
END OF IT_XK01,
BEGIN OF IT_BANK OCCURS 0,
BANKS(3) TYPE C,
BANKL(10) TYPE C,
BANKN(10) TYPE C,
KOINH(30) TYPE C,
LIFNR(10) TYPE C,
END OF IT_BANK.
DATA : IT_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_BDCMSGCOLL LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
FILENAME = 'C:\VENDOR.TXT'
FILETYPE = 'ASC'
TABLES
DATA_TAB = IT_DUMMY.
LOOP AT IT_DUMMY.
IF IT_DUMMY-DUMMY+0(2) = '11'.
IT_XK01-LIFNR = IT_DUMMY-DUMMY+2(10).
IT_XK01-BUKRS = IT_DUMMY-DUMMY+12(4).
IT_XK01-EKORG = IT_DUMMY-DUMMY+16(4).
IT_XK01-KTOKK = IT_DUMMY-DUMMY+20(4).
IT_XK01-NAME1 = IT_DUMMY-DUMMY+24(30).
IT_XK01-SORTL = IT_DUMMY-DUMMY+54(10).
IT_XK01-LAND1 = IT_DUMMY-DUMMY+64(3).
IT_XK01-SPRAS = IT_DUMMY-DUMMY+67(2).
IT_XK01-AKONT = IT_DUMMY-DUMMY+69(6).
IT_XK01-FDGRV = IT_DUMMY-DUMMY+75(2).
IT_XK01-WAERS = IT_DUMMY-DUMMY+77(3).
APPEND IT_XK01.
ELSE.
IT_BANK-BANKS = IT_DUMMY-DUMMY+2(3).
IT_BANK-BANKL = IT_DUMMY-DUMMY+5(10).
IT_BANK-BANKN = IT_DUMMY-DUMMY+15(10).
IT_BANK-KOINH = IT_DUMMY-DUMMY+25(30).
IT_BANK-LIFNR = IT_DUMMY-DUMMY+55(10).
APPEND IT_BANK.
ENDIF.
ENDLOOP.
LOOP AT IT_XK01.
REFRESH IT_BDCDATA.
perform bdc_dynpro using 'SAPMF02K' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RF02K-REF_LIFNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'RF02K-LIFNR'
IT_XK01-LIFNR.
perform bdc_field using 'RF02K-BUKRS'
IT_XK01-BUKRS.
perform bdc_field using 'RF02K-EKORG'
IT_XK01-EKORG.
perform bdc_field using 'RF02K-KTOKK'
IT_XK01-KTOKK.
perform bdc_dynpro using 'SAPMF02K' '0110'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-TELX1'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFA1-NAME1'
IT_XK01-NAME1.
perform bdc_field using 'LFA1-SORTL'
IT_XK01-SORTL.
perform bdc_field using 'LFA1-LAND1'
IT_XK01-LAND1.
perform bdc_field using 'LFA1-SPRAS'
IT_XK01-SPRAS.
perform bdc_dynpro using 'SAPMF02K' '0120'.
perform bdc_field using 'BDC_CURSOR'
'LFA1-KUNNR'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR'
'LFBK-KOINH(02)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
DATA : FNAM(20) TYPE C,
IDX TYPE C.
MOVE 1 TO IDX.
LOOP AT IT_BANK WHERE LIFNR = IT_XK01-LIFNR.
CONCATENATE 'LFBK-BANKS(' IDX ')' INTO FNAM.
perform bdc_field using FNAM
IT_BANK-BANKS.
CONCATENATE 'LFBK-BANKL(' IDX ')' INTO FNAM.
perform bdc_field using FNAM
IT_BANK-BANKL.
CONCATENATE 'LFBK-BANKN(' IDX ')' INTO FNAM.
perform bdc_field using FNAM
IT_BANK-BANKN.
CONCATENATE 'LFBK-KOINH(' IDX ')' INTO FNAM.
perform bdc_field using FNAM
IT_BANK-KOINH.
IDX = IDX + 1.
ENDLOOP.
perform bdc_dynpro using 'SAPMF02K' '0130'.
perform bdc_field using 'BDC_CURSOR'
'LFBK-BANKS(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPMF02K' '0210'.
perform bdc_field using 'BDC_CURSOR'
'LFB1-FDGRV'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFB1-AKONT'
IT_XK01-AKONT.
perform bdc_field using 'LFB1-FDGRV'
IT_XK01-FDGRV.
perform bdc_dynpro using 'SAPMF02K' '0215'.
perform bdc_field using 'BDC_CURSOR'
'LFB1-ZTERM'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0220'.
perform bdc_field using 'BDC_CURSOR'
'LFB5-MAHNA'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_dynpro using 'SAPMF02K' '0310'.
perform bdc_field using 'BDC_CURSOR'
'LFM1-WAERS'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'LFM1-WAERS'
IT_XK01-WAERS.
perform bdc_dynpro using 'SAPMF02K' '0320'.
perform bdc_field using 'BDC_CURSOR'
'WYT3-PARVW(01)'.
perform bdc_field using 'BDC_OKCODE'
'=ENTR'.
perform bdc_dynpro using 'SAPLSPO1' '0300'.
perform bdc_field using 'BDC_OKCODE'
'=YES'.
CALL TRANSACTION 'XK01' USING IT_BDCDATA
MODE 'A'
UPDATE 'S'
MESSAGES INTO IT_BDCMSGCOLL.
ENDLOOP.
FORM BDC_DYNPRO USING PROG SCR.
CLEAR IT_BDCDATA.
IT_BDCDATA-PROGRAM = PROG.
IT_BDCDATA-DYNPRO = SCR.
IT_BDCDATA-DYNBEGIN = 'X'.
APPEND IT_BDCDATA.
ENDFORM.
FORM BDC_FIELD USING FNAM FVAL.
CLEAR IT_BDCDATA.
IT_BDCDATA-FNAM = FNAM.
IT_BDCDATA-FVAL = FVAL.
APPEND IT_BDCDATA.
ENDFORM.
regards,
sai ramesh -
BDC program for rebate with table controls
Hi Friends,
Iam Doing bdc program for Rebate(TCODE VBO1) with table controls..
can u give the solutions for table controls...
if anybody having the code..please send me..
Thanks & Advance,
sampathhi,
check this example it may help you.
REPORT ZSR_BDC_TBCTRL
NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES : RF02K,LFA1,LFBK.
DATA : BEGIN OF IT_VEN OCCURS 0,
LIFNR LIKE RF02K-LIFNR,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
LAND1 LIKE LFA1-LAND1,
SPRAS LIKE LFA1-SPRAS,
BANKS(6) TYPE C,
BANKL(17) TYPE C,
BANKN(19) TYPE C,
END OF IT_VEN.
DATA : BEGIN OF BANKS OCCURS 0,
BANKS LIKE LFBK-BANKS,
END OF BANKS,
BEGIN OF BANKL OCCURS 0,
BANKL LIKE LFBK-BANKL,
END OF BANKL,
BEGIN OF BANKN OCCURS 0,
BANKN LIKE LFBK-BANKN,
END OF BANKN.
DATA : FLD(20) TYPE C,
CNT(2) TYPE N.
DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
INCLUDE BDCRECX1.
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'Z:\sr.TXT'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_VEN
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.
PERFORM OPEN_GROUP.
LOOP AT IT_VEN.
REFRESH BDCDATA.
REFRESH : BANKS,BANKL,BANKN..
SPLIT IT_VEN-BANKS AT ',' INTO TABLE BANKS.
SPLIT IT_VEN-BANKL AT ',' INTO TABLE BANKL.
SPLIT IT_VEN-BANKN AT ',' INTO TABLE BANKN.
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-LIFNR'
IT_VEN-LIFNR.
PERFORM BDC_FIELD USING 'RF02K-KTOKK'
IT_VEN-KTOKK.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-SPRAS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LFA1-NAME1'
IT_VEN-NAME1.
PERFORM BDC_FIELD USING 'LFA1-SORTL'
IT_VEN-SORTL.
PERFORM BDC_FIELD USING 'LFA1-LAND1'
IT_VEN-LAND1.
PERFORM BDC_FIELD USING 'LFA1-SPRAS'
IT_VEN-SPRAS.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKN(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*perform bdc_field using 'LFBK-BANKS(01)'
'DE'.
*perform bdc_field using 'LFBK-BANKS(02)'
'DE'.
*perform bdc_field using 'LFBK-BANKL(01)'
'10020030'.
*perform bdc_field using 'LFBK-BANKL(02)'
'67270003'.
*perform bdc_field using 'LFBK-BANKN(01)'
'12345'.
*perform bdc_field using 'LFBK-BANKN(02)'
'66666'.
MOVE 1 TO CNT.
LOOP AT BANKS.
CONCATENATE 'LFBK-BANKS(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKS-BANKS.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT BANKL.
CONCATENATE 'LFBK-BANKL(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKL-BANKL.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT BANKN.
CONCATENATE 'LFBK-BANKN(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKN-BANKN.
CNT = CNT + 1.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
PERFORM BDC_TRANSACTION USING 'XK01'.
ENDLOOP.
PERFORM CLOSE_GROUP.&----
*& Report ZSR_BDC_TBCTRL
REPORT ZSR_BDC_TBCTRL
NO STANDARD PAGE HEADING LINE-SIZE 255.
TABLES : RF02K,LFA1,LFBK.
DATA : BEGIN OF IT_VEN OCCURS 0,
LIFNR LIKE RF02K-LIFNR,
KTOKK LIKE RF02K-KTOKK,
NAME1 LIKE LFA1-NAME1,
SORTL LIKE LFA1-SORTL,
LAND1 LIKE LFA1-LAND1,
SPRAS LIKE LFA1-SPRAS,
BANKS(6) TYPE C,
BANKL(17) TYPE C,
BANKN(19) TYPE C,
END OF IT_VEN.
DATA : BEGIN OF BANKS OCCURS 0,
BANKS LIKE LFBK-BANKS,
END OF BANKS,
BEGIN OF BANKL OCCURS 0,
BANKL LIKE LFBK-BANKL,
END OF BANKL,
BEGIN OF BANKN OCCURS 0,
BANKN LIKE LFBK-BANKN,
END OF BANKN.
DATA : FLD(20) TYPE C,
CNT(2) TYPE N.
DATA : BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
INCLUDE BDCRECX1.
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = 'Z:\sr.TXT'
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = 'X'
HEADER_LENGTH = 0
READ_BY_LINE = 'X'
DAT_MODE = ' '
CODEPAGE = ' '
IGNORE_CERR = ABAP_TRUE
REPLACEMENT = '#'
CHECK_BOM = ' '
IMPORTING
FILELENGTH =
HEADER =
TABLES
DATA_TAB = IT_VEN
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.
PERFORM OPEN_GROUP.
LOOP AT IT_VEN.
REFRESH BDCDATA.
REFRESH : BANKS,BANKL,BANKN..
SPLIT IT_VEN-BANKS AT ',' INTO TABLE BANKS.
SPLIT IT_VEN-BANKL AT ',' INTO TABLE BANKL.
SPLIT IT_VEN-BANKN AT ',' INTO TABLE BANKN.
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-LIFNR'
IT_VEN-LIFNR.
PERFORM BDC_FIELD USING 'RF02K-KTOKK'
IT_VEN-KTOKK.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0110'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-SPRAS'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_FIELD USING 'LFA1-NAME1'
IT_VEN-NAME1.
PERFORM BDC_FIELD USING 'LFA1-SORTL'
IT_VEN-SORTL.
PERFORM BDC_FIELD USING 'LFA1-LAND1'
IT_VEN-LAND1.
PERFORM BDC_FIELD USING 'LFA1-SPRAS'
IT_VEN-SPRAS.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0120'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFA1-KUNNR'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/00'.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKN(02)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
*perform bdc_field using 'LFBK-BANKS(01)'
'DE'.
*perform bdc_field using 'LFBK-BANKS(02)'
'DE'.
*perform bdc_field using 'LFBK-BANKL(01)'
'10020030'.
*perform bdc_field using 'LFBK-BANKL(02)'
'67270003'.
*perform bdc_field using 'LFBK-BANKN(01)'
'12345'.
*perform bdc_field using 'LFBK-BANKN(02)'
'66666'.
MOVE 1 TO CNT.
LOOP AT BANKS.
CONCATENATE 'LFBK-BANKS(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKS-BANKS.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT BANKL.
CONCATENATE 'LFBK-BANKL(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKL-BANKL.
CNT = CNT + 1.
ENDLOOP.
MOVE 1 TO CNT.
LOOP AT BANKN.
CONCATENATE 'LFBK-BANKN(' CNT ') ' INTO FLD.
PERFORM BDC_FIELD USING FLD BANKN-BANKN.
CNT = CNT + 1.
ENDLOOP.
PERFORM BDC_DYNPRO USING 'SAPMF02K' '0130'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'LFBK-BANKS(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=ENTR'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=YES'.
PERFORM BDC_TRANSACTION USING 'XK01'.
ENDLOOP.
PERFORM CLOSE_GROUP. -
WSo2 BDC to delete line item in table control
Hi all,
My requirement is to delete material from wso2 table control.
The only way to delete a line item in this table control is to select the line in table control and delete it.
The recording doesnt captures any selection of row.
Any input on how to caputre particular row ??
Please dont send me links to work with table control in bdc
Regards
BhanuDaveL wrote:
I am not aware of any way to make the BDC delete the row, other than by running in 'A'-all mode and letting the user step through each screen and delete the rows that should be deleted.
Well , if the user has to run it in "A" all screen mode why a BDC is required
DaveL wrote:
Deleting them from the table control would obviously have no effect upon the database table though, would it....it would just hide a row from view in this particular table control
Really ? Well it will delete it from database too i dont know what makes you think that it wont be deleted from database.
Anways i have figured out how to capture row selection in BDC .
Thanks for your reply it proves nothing i guess -
How do I identify OK Code in table control in BDC (scroll up/down)?
Hi. I have read a lot of very good posts and articles here in the forums about how to work with table controls when writing a BDC program. Unfortunately I haven't found any that address the specific issue that I'm having.
I'm writing a program to update the line items of a Parked Document using transaction FBV2. I want to be able to insert a row at the end of the previously existing rows regardless of how many there are and I can't seem to figure out the correct OK Codes to scroll up or down, or page up or down within the table control so I can guarantee that I will get to the next available row.
For example. I have a Parked Document with 13 line items. I would like to insert the new line item as row 14. I know that 10 rows will be displayed at run time on this screen according to my settings in the BDC call and want to scroll down 1 time and then enter the new data on the 4th line on the new set of rows.
Does anyone have any experience with this, or can someone point me in the right direction where I might find this information?
Thanks in advance,
AndyHi
In my system I can't run that trx, anyway there's any ok-code for the scrolling, you can have only the okcode for the page up/down buttons.
So you should try to understand how many rows a page can have, so if a page have 10 rows per page and you need to change the row 22, it means you have to simulate to press the page down twice and change the second row of third page.
If you run your BDC by CALL TRANSACTION u should use the option OPTIONS FROM opt, here you indicate to use the standard size of the dynpro. In this way the size of table control is not screen resolution dependent.
TABLES CTU_PARAMS.
CTU_PARAMS-DEFSIZE = 'X'.
CALL TRANSACTION 'FBV1' USING ITAB
OPTIONS FROM CTU_PARAMS.
Max -
BDC - table control - experts please help
Hi experts,
Please help. I am in need of your help.
I am working with BDC and I have a table control in one of the screen. Table control has a check box in the first column. While recording how I entered the data is : I select the check box in a row, enter two values in next two columns of that row and then hit enter then the other columns in that row turn from grey to white (initially these columns are greyed out).
NOw in BDC when I run my session in foreground, I am able to check(select) the check box and enter the values in next two columns and then I have a Enter OKCODE. But when I hit enter it is not able to recognize the row and its unable to turn the greyed out columns in that particular row to white.
Is there a way to specify in my program that I am hitting enter in one particular row.
Please help. Let me know if something is not clear. Very urgent . Pleasee respond. ThanksHi Rich,
Thanks for the replies. I will try that. I got one more doubt. While manually creating the recipes using C201, there is a screen Recipe header. When I record this transaction, I see a different screen for the Recipe header. Fro example the screen numbers are like 4210(manual) and 4211(recording).
But my problem is there are two fields which are missing in the screen which I am getting while recording C201. These two fields are present on the screen for manual creation. I need to enter those two fields while I record. But how can I do this.
Please help. -
Hi Group,
When I am writting BDC for transaction in which table control occurs in the second screen,it is perfectly running when I am testing with the two records in the table control,when I increases the records (200) I am getting the error that <b>Screen is too large for Internal batch Input.</b>
Here I am attaching the part of code.
MOVE 1 TO IDX.
LOOP AT IT_DATATAB INTO WA_DATATAB.
CONCATENATE 'FKKCMP_DIA-CHCKN(' IDX ')'
INTO FNAM.
perform bdc_field using FNAM
wa_datatab-col5.
CONCATENATE 'FKKCMP_DIA-GPART(' IDX ')'
INTO FNAM.
perform bdc_field using fnam
wa_datatab-col1.
CONCATENATE 'FKKCMP_DIA-VKONT(' IDX ')'
INTO FNAM.
perform bdc_field using fnam
wa_datatab-col2 .
CONCATENATE 'FKKCMP_DIA-AUDAT(' IDX ')'
INTO FNAM.
perform bdc_field using fnam
wa_datatab-col3 .
v_betrw = wa_datatab-col4.
CONCATENATE 'FKKCMP_DIA-BETRW(' IDX ')'
INTO FNAM.
write v_betrw to fval.
perform bdc_field using fnam
fval.
IDX = IDX + 1.
ENDLOOP.
Please suggest<b>A table control can contain many records, but the no of records you see on the screen is limited. In this case, the table control can hold only 16 records at a time and then we need to enter the page down and fill in more records.</b>
here is the sample code.
*--For each record in table IT_ICE_CONFM
loop at it_ice_confm.
*--Get the correct line item from calling system.
* it_ice_confm-ebelp = it_ice_confm-ebelp / '00010'.
*-- Check for Purchasing document validity
read table lt_ekko with key ebeln = it_ice_confm-ebeln
binary search.
if sy-subrc <> 0.
"error
endif.
*-- Check for Purchasing document item validity
read table lt_ekpo with key ebeln = it_ice_confm-ebeln
ebelp = it_ice_confm-ebelp
binary search.
if sy-subrc <> 0.
"error
endif.
*--Clear local variables.
clear : lv_tabix,
lv_lfdat.
lv_tabix = sy-tabix.
lv_count1 = lv_count1 + 1.
* For every new Purchase Order, populate first screen
at new ebeln.
read table it_ice_confm index lv_tabix.
perform screen_insert tables it_bdc
using 'SAPMM06E' '0105' 'X'.
perform field_insert: tables it_bdc
using 'BDC_OKCODE' '/00',
tables it_bdc
using 'RM06E-BSTNR' it_ice_confm-ebeln.
endat.
* For every new Purchase Order line item, populate next screen
at new ebelp.
read table it_ice_confm index lv_tabix.
* if no Confirmation control key exist and no Goods receipt indicator
* occurs for the line item, set the Confirmation control key as 0001
if lt_ekpo-bstae = ' '.
if lt_ekpo-wepos = ' '.
perform screen_insert tables it_bdc
using 'SAPMM06E' '0120' 'X'.
perform field_insert: tables it_bdc
using 'RM06E-EBELP' it_ice_confm-ebelp,
tables it_bdc
using 'BDC_OKCODE' '/00'.
perform screen_insert tables it_bdc
using 'SAPMM06E' '0120' 'X'.
perform field_insert: tables it_bdc
using 'RM06E-TCSELFLAG(01)' 'X',
tables it_bdc
using 'BDC_OKCODE' '=DETA'.
perform screen_insert tables it_bdc
using 'SAPMM06E' '0111' 'X'.
perform field_insert: tables it_bdc
using 'EKPO-BSTAE' '0001',
tables it_bdc
using 'BDC_OKCODE' '=BACK'.
else.
* if no Confirmation control key exist and and if Goods receipt
* indicator occurs for this line item, mark PO and line item as error
concatenate 'Item no ' it_ice_confm-ebelp
' of Purchasing document ' it_ice_confm-ebeln
' is invalid'
into return-message.
move: 'E' to return-type,
'ZI' to return-id,
'999' to return-number.
append return.
clear return.
continue.
endif.
else.
endif.
perform screen_insert tables it_bdc
using 'SAPMM06E' '0120' 'X'.
perform field_insert: tables it_bdc
using 'RM06E-EBELP' it_ice_confm-ebelp,
tables it_bdc
using 'BDC_OKCODE' '/00'.
perform screen_insert tables it_bdc
using 'SAPMM06E' '0120' 'X'.
perform field_insert: tables it_bdc
using 'RM06E-TCSELFLAG(01)' 'X',
tables it_bdc
using 'BDC_OKCODE' '=BSTA'.
clear lv_tab_line.
perform select_line using it_ice_confm-ebeln
it_ice_confm-ebelp
changing lv_tab_line.
if not lv_tab_line is initial.
*--Position table control row for the first time
lv_count2 = '01'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0200' 'X'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=UMOD'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0100' 'X'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=NP'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0100' 'X'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=UMOD'.
endif.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0200' 'X'.
endat.
lv_count2 = lv_count2 + 1.
* Handle page down
*-- if confirmations already exist.
if not lv_tab_line is initial.
*-- Check if it is 16th record, to position next record on page down
* table control has 16 rows when default screen size,
* mode and update are set
if lv_count1 = 16.
clear: lv_count1,
lv_count2.
*-- On page down, the next record comes to 2nd row
lv_count2 = '02'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=UMOD'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0100' 'X'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=NP'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0100' 'X'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=UMOD'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0200' 'X'.
endif.
else.
*-- if confirmations does not exist, then check if it is 17th record.
* to position next record on page down
if lv_count1 = 17.
clear: lv_count1,
lv_count2.
lv_count2 = '02'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=UMOD'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0100' 'X'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=NP'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0100' 'X'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=UMOD'.
perform screen_insert tables it_bdc
using 'SAPLEINB' '0200' 'X'.
*-- Initialize the table line to 1.
lv_tab_line = 1.
endif.
endif.
concatenate 'EKES-EBTYP(' lv_count2 ')' into lv_field.
perform field_insert tables it_bdc
using lv_field 'Z1'.
if not it_ice_confm-eindt is initial.
clear: lv_field,
lv_date.
concatenate 'RM06E-EEIND(' lv_count2 ')' into lv_field.
move it_ice_confm-eindt to lv_lfdat.
write lv_lfdat to lv_date.
perform field_insert tables it_bdc
using lv_field lv_date.
endif.
if not it_ice_confm-uzeit is initial.
clear: lv_field,
lv_time.
concatenate 'EKES-UZEIT(' lv_count2 ')' into lv_field.
write it_ice_confm-uzeit to lv_time.
perform field_insert tables it_bdc
using lv_field lv_time.
endif.
clear lv_field.
concatenate 'EKES-XBLNR(' lv_count2 ')' into lv_field.
perform field_insert tables it_bdc
using lv_field it_ice_confm-scacd.
clear lv_field.
concatenate 'EKES-MENGE(' lv_count2 ')' into lv_field.
perform field_insert tables it_bdc
using lv_field it_ice_confm-quantity.
at end of ebelp.
clear: lv_tab_line,
lv_count1,
lv_count2.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=BACK'.
endat.
at end of ebeln.
clear: lv_lines,
lv_msg.
perform screen_insert tables it_bdc
using 'SAPMM06E' '0120' 'X'.
perform field_insert tables it_bdc
using 'BDC_OKCODE' '=BU'.
call transaction <b>tcode</b> using it_bdc
options from x_ctu_params
messages into lt_message.
clear w_success.
if sy-subrc <> 0.
w_success = 'N'.
endif.
refresh: it_bdc,
lt_message.
endat.
endloop.
Regards,
Richa -
How to clear data from Table-Control
Hi all,
I am working on table control. I have some data on the table control.
When I press the 'Cancel' button, I require that the table-control should be cleared.
I tried using REFRESH CONTROL TC01 USING SCREEN 1001. But, the data doesn't get cleared.
Please advise.
Regards,
Saurabh Buksh.hi
good
try this example
REPORT demo_dynpro_tabcont_loop_at.
CONTROLS flights TYPE TABLEVIEW USING SCREEN 100.
DATA: cols LIKE LINE OF flights-cols,
lines TYPE i.
DATA: ok_code TYPE sy-ucomm,
save_ok TYPE sy-ucomm.
DATA: itab TYPE TABLE OF demo_conn.
TABLES demo_conn.
SELECT * FROM spfli INTO CORRESPONDING FIELDS OF TABLE itab.
LOOP AT flights-cols INTO cols WHERE index GT 2.
cols-screen-input = '0'.
MODIFY flights-cols FROM cols INDEX sy-tabix.
ENDLOOP.
CALL SCREEN 100.
MODULE status_0100 OUTPUT.
SET PF-STATUS 'SCREEN_100'.
DESCRIBE TABLE itab LINES lines.
flights-lines = lines.
ENDMODULE.
MODULE cancel INPUT.
LEAVE PROGRAM.
ENDMODULE.
MODULE read_table_control INPUT.
MODIFY itab FROM demo_conn INDEX flights-current_line.
ENDMODULE.
MODULE user_command_0100 INPUT.
save_ok = ok_code.
CLEAR ok_code.
CASE save_ok.
WHEN 'TOGGLE'.
LOOP AT flights-cols INTO cols WHERE index GT 2.
IF cols-screen-input = '0'.
cols-screen-input = '1'.
ELSEIF cols-screen-input = '1'.
cols-screen-input = '0'.
ENDIF.
MODIFY flights-cols FROM cols INDEX sy-tabix.
ENDLOOP.
WHEN 'SORT_UP'.
READ TABLE flights-cols INTO cols WITH KEY selected = 'X'.
IF sy-subrc = 0.
SORT itab STABLE BY (cols-screen-name+10) ASCENDING.
cols-selected = ' '.
MODIFY flights-cols FROM cols INDEX sy-tabix.
ENDIF.
WHEN 'SORT_DOWN'.
READ TABLE flights-cols INTO cols WITH KEY selected = 'X'.
IF sy-subrc = 0.
SORT itab STABLE BY (cols-screen-name+10) DESCENDING.
cols-selected = ' '.
MODIFY flights-cols FROM cols INDEX sy-tabix.
ENDIF.
WHEN 'DELETE'.
READ TABLE flights-cols INTO cols
WITH KEY screen-input = '1'.
IF sy-subrc = 0.
LOOP AT itab INTO demo_conn WHERE mark = 'X'.
DELETE itab.
ENDLOOP.
ENDIF.
ENDCASE.
ENDMODULE.
thanks
mrutyun^ -
Generic Table Control in ABUMN for multiple transfer of assets
Hi Experts,
Problem Description
We are trying to use transaction ABUMN for multiple asset transfer.
We need to transfer more than one assets to multiple assets by quantity
and value.
Our Efforts/Observation
Instead of going ahead with BDC/LSMW, we tried using table control to utilize standard SAP functionality.
For making this happen, we are trying to use the Generic Table control which is available in ABUMN once you click on "Multiple assets" button.
However, even though we are making fields like
EL7, EL8 etc available in the screen (by removing check from the "Invisible" check box), they are in display mode and are not giving me any option to select quantity and value that needs to be transferred from each asset.
We need to assign these fields to some field like quantity/percentage so that they can be used.
If you see, the column header is also blank.
We need to transfer hundreds of assets, hence requesting you to please
fix this urgently so that we can transfer assets and close the quarter.
Thanks in advance for your help and support,
Nitish Gupta
+919867458892Hi Nitish,
I'm sorry, transaction ABUMN will never get this functionality you requested.
For mass transfer, customers have the possibilities to use batch input on transaction ABUM or BAPI.
Please refer customer to the following note : 216806 New posting transactions and batch input
regards Bernhard -
Hi Experts,
Presently I am working with table control,I have got two date fields, I need to do the validation for the date fields,that can be done by me
But if the user enters the wrong date while entering multiple entries, how can we get the line number of the record in which wrong entry is being done.
Do I need to write this In the Screen PAI with CHAIN and ENDCHAIN statements for this table fields.
or in the PAI screen if ok code equal to save.
Thanks In Advance,
Regards,
Irfan HussainYou can do it in a module in CHAIN.. ENDCHAIN in PAI. If an error is thrown at one particular table control line, the control stops and waits for a valid input for the further processing.
Ex:
PAI
loop at itab.
chain.
field SFLIGHT-CARRID.
field SFLIGHT-CONNID.
field SFLIGHT-FLDATE.
field SFLIGHT-PRICE.
module TABCON1_modify on chain-request.
endchain.
endloop.
Module pool program:
module TABCON1_modify input.
do certain validations of the field values entered
message e001 with 'Please enter valid data'.
endmodule.
Message was edited by: Sravanthi -
Hello All,
I have subscreen in which i created a table control.
The problem is when i have a tbale control on subscreen the program dumps but where as when i have one field in sub screen the program doesn't dump.
Could any please help me to solve the problem.
Regards,
LisaHi
You have a field on the sub screen and keep it hidden or invisible.
This will let you work with table control.
Regards,
Venkat
Maybe you are looking for
-
Need help in creating Knowledge module to aggregrate source data.
Hi Guys, I am new to ODI and I am trying to create a Knowledge module. I went through the docs relating to Knowledge modules and APIs, so hopefully did my home work, I still find writing KM to be very challenging for the scenario, I have. The followi
-
How to Configure Reciver HTTP Adapter
Hi, i am doing Proxy-HTTP syncronous scenario. Proxy will fetch XML file located in one server. (example: www.yahoo.com/exchange_rate.xml) i have following problems. 1. How to configure the Reciver HTTP Adapter. 2. What should I use in Address Type.
-
Touchpad works erratically after clicking
I bought a Satellite L40-A just a few weeks ago, and I haven't encountered problems until just last week. I've noticed that my touchpad works erratically (does not move the cursor as expected when used, the synaptics icon on the system tray shows tha
-
When I am having a text conversation sometimes my bubbles are blue and sometimes they are green -why is that
-
How did I get this Reddish hue?
This just started out of the blue............ Whenever I open and try to work on a photo in the "Image Window" in Elements 9 the photo shows a definite reddish hue. But, if I open it in "Raw" it's a nice as could be. Does anyone know what causes this