Skip to Content
author's profile photo
Former Member

table control in BDC

plz tell me how to use TABLE CONTROL IN bdc

PLZ ANY BODY SUGGEST

Add comment
10|10000 characters needed characters exceeded

  • Follow
  • Get RSS Feed

3 Answers

  • author's profile photo
    Former Member
    Posted on Sep 27, 2007 at 12:31 PM

    Hi,

    For the docuementation check this link below

    http://sap.niraj.tripod.com/id29.html

    for sample coding check further links.....

    what ever the data that u want to trnasfer to table ctrl, put it in a flat file.

    create an internal able that can occupy those datas.

    then transfer from internal table to table control.

    ex: for me41/.

    REPORT YELS_ME41_BDC_V NO STANDARD PAGE HEADING LINE-SIZE 255.

    INCLUDE BDCRECX1.

    • INTERNAL TABLE DECLARATION.

    DATA : BEGIN OF ITAB OCCURS 0,

    V_NUM(3) TYPE C,"SERIAL NUMBER

    EMATN LIKE EKPO-EMATN,

    TXZ01 LIKE EKPO-TXZ01,

    ANMNG(13) TYPE C,

    MEINS(3) TYPE C,

    LPEIN LIKE RM06E-LPEIN,

    EEIND LIKE RM06E-EEIND,

    MATKL LIKE EKPO-MATKL,

    END OF ITAB.

    • VARIABLE DECLARATION

    DATA : V_LASTNUM(3) TYPE C,

    V_TEMPVAR(15),

    V_PAGES(3) TYPE C VALUE '10',

    V_COUNT TYPE I,

    V_CTR TYPE I,

    V_TCTR(2) TYPE C,

    V_TEST TYPE C VALUE 0,

    ITEM LIKE RM06E-EBELP.

    *DATA: BDCDATA TYPE BDCDATA OCCURS 0 WITH HEADER LINE.

    • BEGIN OF PROGRAM.

    START-OF-SELECTION.

    PERFORM GET-DATA.

    SORT ITAB BY NUM EEIND.

    PERFORM OPEN_GROUP.

    *DATA TRANSFERRED FROM INTERNAL TABLE TO IST 2ND SCREEN FIELDS(HEADER

    *DATA)

    LOOP AT ITAB.

    IF ITAB-V_NUM NE V_LASTNUM.

    " HEADER DATA EXECUTES FOR ONLY ONE TIME FOR ONE RFQ GENERATION

    • WHEN SNO IS NOT EQUAL TO LASTNUMBER. THEN PROCEED.

    V_TEST = 0.

    PERFORM BDC_DYNPRO USING 'SAPMM06E' '0300'.

    PERFORM BDC_FIELD USING 'BDC_CURSOR'

    'EKKO-ANGDT'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '/00'.

    PERFORM BDC_FIELD USING 'RM06E-ASART'

    'AN'. "RFQ TYPE.

    PERFORM BDC_FIELD USING 'EKKO-SPRAS'

    'EN'. " LANGUAGE KEY.

    PERFORM BDC_FIELD USING 'RM06E-ANFDT'

    '19.07.2007'."RFQ DATE.

    PERFORM BDC_FIELD USING 'EKKO-ANGDT'

    '29.07.2007'."QUOTATION DEAD LINE.

    PERFORM BDC_FIELD USING 'EKKO-EKORG'

    '3000'."PURCHASE ORGANISATION.

    PERFORM BDC_FIELD USING 'EKKO-EKGRP'

    '003'."PURCHASE GROUP.

    PERFORM BDC_FIELD USING 'RM06E-LPEIN'

    'T'.

    • IIND SCREEN.

    PERFORM BDC_DYNPRO USING 'SAPMM06E' '0301'.

    PERFORM BDC_FIELD USING 'BDC_CURSOR'

    'EKKO-SUBMI'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    'BU'.

    PERFORM BDC_FIELD USING 'EKKO-EKGRP'

    '003'.

    PERFORM BDC_FIELD USING 'EKKO-PINCR'

    '10'." ITEM INTERVAL.

    PERFORM BDC_FIELD USING 'EKKO-SUBMI'

    '1'." COLL NO.

    PERFORM BDC_FIELD USING 'EKKO-SPRAS'

    'EN'.

    PERFORM BDC_FIELD USING 'EKKO-UPINC'

    '1'." SUB ITEM INTERVAL.

    PERFORM BDC_FIELD USING 'EKKO-ANGDT'

    '29.07.2007'.

    PERFORM BDC_DYNPRO USING 'SAPMM06E' '0301'.

    PERFORM BDC_FIELD USING 'BDC_CURSOR'

    'EKKO-EKGRP'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '/00'.

    PERFORM BDC_FIELD USING 'EKKO-EKGRP'

    '003'.

    PERFORM BDC_FIELD USING 'EKKO-PINCR'

    '10'.

    PERFORM BDC_FIELD USING 'EKKO-SUBMI'

    '1'.

    PERFORM BDC_FIELD USING 'EKKO-UPINC'

    '1'.

    PERFORM BDC_FIELD USING 'EKKO-ANGDT'

    '29.07.2007'.

    **********tab ctrl*********************************************

    • IIIRD SCREEN

    PERFORM BDC_DYNPRO USING 'SAPMM06E' '0320'.

    PERFORM BDC_FIELD USING 'BDC_CURSOR'

    'RM06E-EEIND(01)'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '/00'.

    PERFORM BDC_FIELD USING 'EKKO-ANGDT'

    '29.07.2007'.

    • DATA MOVED FROM INTERNAL TABLE TO TABLE CONTROL

    *

    V_CTR = 0.

    "FOR ONE RFQ , MORE ITEMS WILL BE THERE. COUNT STARTS HERE.

    LOOP AT ITAB WHERE V_NUM = ITAB-V_NUM." CHECK THE SNO IS EQUAL .

    V_CTR = V_CTR + 1." COUNT IS INCREMENTED BY 1.

    • MY TAB CTRL CAN HAVE ONLY 20 RECORDS.

    • IF COUNT IS LESS THAN OR EQUAL TO 20 ASSIGN THIS VALUE TO TCTR VAR

    IF V_CTR <= 20.

    V_TCTR = V_CTR.

    ENDIF.

    *IF COUNT IS GREATER THAN 20 ASSIGN THIS VALUE TO TCTR VAR

    IF V_CTR > 20.

    V_TCTR = '20'.

    ENDIF.

    • IF COUNT IS LESS THAN OR EQUAL TO 10 BLANK SPACE IS ALLOTTED TO TEST

    • VAR.

    IF V_CTR >= 10.

    V_TEST = ''.

    ENDIF.

    • WHEN COUNT IS LESS THAN 20 THEN ITEM (PAGES) WILL BE 10.

    IF V_CTR < 20.

    V_PAGES = 10.

    PERFORM BDC_FIELD USING 'RM06E-EBELP'

    V_PAGES.

    ENDIF.

    • WHEN COUNT IS GREATER THAN 20 THEN ITEM (PAGES) WILL BE INCREMENTED BY

    • 10 FOR EVERY ENTRY..

    IF V_CTR >= 20.

    V_PAGES = V_PAGES + 10.

    PERFORM BDC_FIELD USING 'RM06E-EBELP'

    V_PAGES.

    ENDIF.

    • CONCTAENATION IS DONE TO GET A PATTERN LIKE EKPO-EMATN(01).

    • UPLOAD EMATN FIELD INTO TABLE CONTROL

    CONCATENATE 'ekpo-ematn(' V_TEST V_TCTR ')' INTO V_TEMPVAR.

    CONDENSE V_TEMPVAR NO-GAPS.

    PERFORM BDC_FIELD USING V_TEMPVAR ITAB-EMATN.

    • UPLOAD SHORT TEXT FIELD INTO TABLE CONTROL

    CONCATENATE 'ekpo-txz01(' V_TEST V_TCTR ')' INTO V_TEMPVAR.

    CONDENSE V_TEMPVAR NO-GAPS.

    PERFORM BDC_FIELD USING V_TEMPVAR ITAB-TXZ01.

    • UPLOAD QUANTITY FIELD INTO TABLE CONTROL

    CONCATENATE 'rm06e-anmng(' V_TEST V_TCTR ')' INTO V_TEMPVAR.

    CONDENSE V_TEMPVAR NO-GAPS.

    PERFORM BDC_FIELD USING V_TEMPVAR ITAB-ANMNG.

    • UPLOAD UNIT OF MEASURE FIELD INTO TABLE CONTROL

    CONCATENATE 'ekpo-meins(' V_TEST V_TCTR ')' INTO V_TEMPVAR.

    CONDENSE V_TEMPVAR NO-GAPS.

    PERFORM BDC_FIELD USING V_TEMPVAR ITAB-MEINS.

    • UPLOAD DATE FORMAT FIELD INTO TABLE CONTROL

    CONCATENATE 'rm06e-lpein(' V_TEST V_TCTR ')' INTO V_TEMPVAR.

    CONDENSE V_TEMPVAR NO-GAPS.

    PERFORM BDC_FIELD USING V_TEMPVAR ITAB-LPEIN.

    • UPLOAD DATE FIELD INTO TABLE CONTROL

    CONCATENATE 'rm06e-eeind(' V_TEST V_TCTR ')' INTO V_TEMPVAR.

    CONDENSE V_TEMPVAR NO-GAPS.

    PERFORM BDC_FIELD USING V_TEMPVAR ITAB-EEIND.

    • UPLOAD MATERIAL GROUP FIELD INTO TABLE CONTROL

    CONCATENATE 'EKPO-MATKL(' V_TEST V_TCTR ')' INTO V_TEMPVAR.

    CONDENSE V_TEMPVAR NO-GAPS.

    PERFORM BDC_FIELD USING V_TEMPVAR ITAB-MATKL.

    PERFORM BDC_DYNPRO USING 'SAPMM06E' '0320'.

    PERFORM BDC_FIELD USING 'BDC_CURSOR'

    'EKKO-ANGDT'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '=LS'.

    PERFORM BDC_FIELD USING 'EKKO-ANGDT'

    '29.07.2007'.

    *AFTER INSERTING ONE ROW OF DATA PRESS ENTER .CURSOR SHOULD BE AT DEAD

    *LINE DATE.

    CONCATENATE 'ekpo-ematn(' V_TEST V_TCTR ')' INTO V_TEMPVAR.

    CONDENSE V_TEMPVAR NO-GAPS.

    PERFORM BDC_FIELD USING 'BDC_CURSOR' V_TEMPVAR.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '/00'.

    ENDLOOP.

    *************************vendor addr*******************

    V_LASTNUM = ITAB-V_NUM.

    *******ENTER VENDOR NUMBER AND SAVE.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '/00'.

    PERFORM BDC_DYNPRO USING 'SAPMM06E' '0140'.

    PERFORM BDC_FIELD USING 'BDC_CURSOR'

    'EKKO-LIFNR'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '/00'.

    PERFORM BDC_FIELD USING 'EKKO-LIFNR'

    '9054'." VENDOR NUMBER.

    PERFORM BDC_DYNPRO USING 'SAPLMEXF' '0100'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '=ENTE'.

    PERFORM BDC_FIELD USING 'BDC_CURSOR'

    'RM06E-SPRAS'.

    PERFORM BDC_FIELD USING 'BUTTON_INIT'

    'X'.

    PERFORM BDC_DYNPRO USING 'SAPMM06E' '0140'.

    PERFORM BDC_DYNPRO USING 'SAPMM06E' '0140'.

    PERFORM BDC_FIELD USING 'BDC_CURSOR'

    'EKKO-LIFNR'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '=BU'.

    PERFORM BDC_FIELD USING 'EKKO-LIFNR'

    '9054'.

    PERFORM BDC_FIELD USING 'ADDR1_DATA-NAME1'

    'tttt'.

    PERFORM BDC_FIELD USING 'ADDR1_DATA-SORT1'

    'TT'.

    PERFORM BDC_FIELD USING 'ADDR1_DATA-COUNTRY'

    'AZ'.

    PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0300'.

    PERFORM BDC_FIELD USING 'BDC_OKCODE'

    '=YES'.

    PERFORM BDC_TRANSACTION USING 'ME41'.

    REFRESH BDCDATA.

    ENDIF.

    ENDLOOP.

    PERFORM CLOSE_GROUP.

    &----


    *& Form get-data

    &----


    • UPLOAD FLAT FILES TO INTERNAL TABLE.

    ----


    FORM GET-DATA.

    *TRANSFER DATA FROM FLAT FILE TO INTERNAL TABLE.

    CALL FUNCTION 'UPLOAD'

    EXPORTING

    • CODEPAGE = ' '

    FILENAME = ' '

    FILETYPE = ' '

    • 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 = ITAB

    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.

    ENDFORM. "get-data

    For More Info,

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

    Please check this links for sample codes.

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

    http://arthur_ong.tripod.com/xab023.htm

    Regards,

    Padmam.

    Add comment
    10|10000 characters needed characters exceeded

  • author's profile photo
    Former Member
    Posted on Sep 27, 2007 at 01:09 PM

    Hi Ranveer,

    Go through this ,

    Table control in BDC

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

    For more info check this thread as well

    bdc---table-control

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

    Table control in BDC

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

    For more info check this thread as well

    bdc---table-control

    Thanks

    Add comment
    10|10000 characters needed characters exceeded

  • author's profile photo
    Former Member
    Posted on Sep 28, 2007 at 03:25 PM

    Dear Ranveer,

    Go through the following code:

    Handling Table Control in BDC

    An example abap program of handling Table Control during bdc programming.

    REPORT zmm_bdcp_purchaseorderkb02

    NO STANDARD PAGE HEADING LINE-SIZE 255.

    ----


    • Declaring internal tables *

    ----


    *-----Declaring line structure

    DATA : BEGIN OF it_dummy OCCURS 0,

    dummy(255) TYPE c,

    END OF it_dummy.

    *-----Internal table for line items

    DATA : BEGIN OF it_idata OCCURS 0,

    ematn(18), "Material Number.

    menge(13), "Qyantity.

    netpr(11), "Net Price.

    werks(4), "Plant.

    ebelp(5), "Item Number.

    END OF it_idata.

    *-----Deep structure for header data and line items

    DATA : BEGIN OF it_me21 OCCURS 0,

    lifnr(10), "Vendor A/c No.

    bsart(4), "A/c Type.

    bedat(8), "Date of creation of PO.

    ekorg(4), "Purchasing Organisation.

    ekgrp(3), "Purchasing Group.

    x_data LIKE TABLE OF it_idata,

    END OF it_me21.

    DATA : x_idata LIKE LINE OF it_idata.

    DATA : v_delimit VALUE ','.

    DATA : v_indx(3) TYPE n.

    DATA : v_fnam(30) TYPE c.

    DATA : v_count TYPE n.

    DATA : v_ne TYPE i.

    DATA : v_ns TYPE i.

    *include bdcrecx1.

    INCLUDE zmm_incl_purchaseorderkb01.

    ----


    • Search help for file *

    ----


    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.

    CALL FUNCTION 'F4_FILENAME'

    EXPORTING

    program_name = syst-cprog

    dynpro_number = syst-dynnr

    IMPORTING

    file_name = p_file.

    START-OF-SELECTION.

    ----


    • To upload the data into line structure *

    ----


    CALL FUNCTION 'WS_UPLOAD'

    EXPORTING

    filename = p_file

    filetype = 'DAT'

    TABLES

    data_tab = it_dummy.

    ----


    • Processing the data from line structure to internal tables *

    ----


    REFRESH:it_me21.

    CLEAR :it_me21.

    LOOP AT it_dummy.

    IF it_dummy-dummy+0(01) = 'H'.

    v_indx = v_indx + 1.

    CLEAR it_idata.

    REFRESH it_idata.

    CLEAR it_me21-x_data.

    REFRESH it_me21-x_data.

    SHIFT it_dummy.

    SPLIT it_dummy AT v_delimit INTO it_me21-lifnr

    it_me21-bsart

    it_me21-bedat

    it_me21-ekorg

    it_me21-ekgrp.

    APPEND it_me21.

    ELSEIF it_dummy-dummy+0(01) = 'L'.

    SHIFT it_dummy.

    SPLIT it_dummy AT v_delimit INTO it_idata-ematn

    it_idata-menge

    it_idata-netpr

    it_idata-werks

    it_idata-ebelp.

    APPEND it_idata TO it_me21-x_data.

    MODIFY it_me21 INDEX v_indx.

    ENDIF.

    ENDLOOP.

    ----


    • To open the group *

    ----


    PERFORM open_group.

    ----


    • To populate the bdcdata table for header data *

    ----


    LOOP AT it_me21.

    v_count = v_count + 1.

    REFRESH it_bdcdata.

    PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0100',

    ' ' 'BDC_CURSOR' 'EKKO-LIFNR',

    ' ' 'BDC_OKCODE' '/00',

    ' ' 'EKKO-LIFNR' it_me21-lifnr,

    ' ' 'RM06E-BSART' it_me21-bsart,

    ' ' 'RM06E-BEDAT' it_me21-bedat,

    ' ' 'EKKO-EKORG' it_me21-ekorg,

    ' ' 'EKKO-EKGRP' it_me21-ekgrp,

    ' ' 'RM06E-LPEIN' 'T'.

    PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

    ' ' 'BDC_CURSOR' 'RM06E-EBELP',

    ' ' 'BDC_OKCODE' '/00'.

    MOVE 1 TO v_indx.

    *-----To populate the bdcdata table for line item data

    LOOP AT it_me21-x_data INTO x_idata.

    CONCATENATE 'EKPO-EMATN(' v_indx ')' INTO v_fnam.

    PERFORM subr_bdc_table USING ' ' v_fnam x_idata-ematn.

    CONCATENATE 'EKPO-MENGE(' v_indx ')' INTO v_fnam.

    PERFORM subr_bdc_table USING ' ' v_fnam x_idata-menge.

    CONCATENATE 'EKPO-NETPR(' v_indx ')' INTO v_fnam.

    PERFORM subr_bdc_table USING ' ' v_fnam x_idata-netpr.

    CONCATENATE 'EKPO-WERKS(' v_indx ')' INTO v_fnam.

    PERFORM subr_bdc_table USING ' ' v_fnam x_idata-werks.

    v_indx = v_indx + 1.

    PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

    ' ' 'BDC_CURSOR' 'RM06E-EBELP',

    ' ' 'BDC_OKCODE' '/00'.

    ENDLOOP.

    PERFORM subr_bdc_table USING: 'X' 'SAPMM06E' '0120',

    ' ' 'BDC_CURSOR' 'RM06E-EBELP',

    ' ' 'BDC_OKCODE' '=BU'.

    PERFORM bdc_transaction USING 'ME21'.

    ENDLOOP.

    PERFORM close_group.

    ----


    • End of selection event *

    ----


    END-OF-SELECTION.

    IF session NE 'X'.

    *-----To display the successful records

    WRITE :/10 text-001. "Sucess records

    WRITE :/10 SY-ULINE(20).

    SKIP.

    IF it_sucess IS INITIAL.

    WRITE :/ text-002.

    ELSE.

    WRITE :/ text-008, "Total number of Succesful records

    35 v_ns.

    SKIP.

    WRITE:/ text-003, "Vendor Number

    17 text-004, "Record number

    30 text-005. "Message

    ENDIF.

    LOOP AT it_sucess.

    WRITE:/4 it_sucess-lifnr,

    17 it_sucess-tabix CENTERED,

    30 it_sucess-sucess_rec.

    ENDLOOP.

    SKIP.

    *-----To display the erroneous records

    WRITE:/10 text-006. "Error Records

    WRITE:/10 SY-ULINE(17).

    SKIP.

    IF it_error IS INITIAL.

    WRITE:/ text-007. "No error records

    ELSE.

    WRITE:/ text-009, "Total number of erroneous records

    35 v_ne.

    SKIP.

    WRITE:/ text-003, "Vendor Number

    17 text-004, "Record number

    30 text-005. "Message

    ENDIF.

    LOOP AT it_error.

    WRITE:/4 it_error-lifnr,

    17 it_error-tabix CENTERED,

    30 it_error-error_rec.

    ENDLOOP.

    REFRESH it_sucess.

    REFRESH it_error.

    ENDIF.

    CODE IN INCLUDE.

    ----


    • Include ZMM_INCL_PURCHASEORDERKB01

    ----


    DATA: it_BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

    DATA: it_MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.

    DATA: E_GROUP_OPENED.

    *-----Internal table to store sucess records

    DATA:BEGIN OF it_sucess OCCURS 0,

    msgtyp(1) TYPE c,

    lifnr LIKE ekko-lifnr,

    tabix LIKE sy-tabix,

    sucess_rec(125),

    END OF it_sucess.

    DATA: g_mess(125) type c.

    *-----Internal table to store error records

    DATA:BEGIN OF it_error OCCURS 0,

    msgtyp(1) TYPE c,

    lifnr LIKE ekko-lifnr,

    tabix LIKE sy-tabix,

    error_rec(125),

    END OF it_error.

    ----


    • Selection screen

    ----


    SELECTION-SCREEN BEGIN OF LINE.

    PARAMETERS session RADIOBUTTON GROUP ctu. "create session

    SELECTION-SCREEN COMMENT 3(20) text-s07 FOR FIELD session.

    SELECTION-SCREEN POSITION 45.

    PARAMETERS ctu RADIOBUTTON GROUP ctu. "call transaction

    SELECTION-SCREEN COMMENT 48(20) text-s08 FOR FIELD ctu.

    SELECTION-SCREEN END OF LINE.

    SELECTION-SCREEN BEGIN OF LINE.

    SELECTION-SCREEN COMMENT 3(20) text-s01 FOR FIELD group.

    SELECTION-SCREEN POSITION 25.

    PARAMETERS group(12). "group name of session

    SELECTION-SCREEN COMMENT 48(20) text-s05 FOR FIELD ctumode.

    SELECTION-SCREEN POSITION 70.

    PARAMETERS ctumode LIKE ctu_params-dismode DEFAULT 'N'.

    "A: show all dynpros

    "E: show dynpro on error only

    "N: do not display dynpro

    SELECTION-SCREEN END OF LINE.

    SELECTION-SCREEN BEGIN OF LINE.

    SELECTION-SCREEN COMMENT 48(20) text-s06 FOR FIELD cupdate.

    SELECTION-SCREEN POSITION 70.

    PARAMETERS cupdate LIKE ctu_params-updmode DEFAULT 'L'.

    SELECTION-SCREEN END OF LINE.

    SELECTION-SCREEN BEGIN OF LINE.

    SELECTION-SCREEN COMMENT 3(20) text-s03 FOR FIELD keep.

    SELECTION-SCREEN POSITION 25.

    PARAMETERS: keep AS CHECKBOX. "' ' = delete session if finished

    "'X' = keep session if finished

    SELECTION-SCREEN COMMENT 48(20) text-s09 FOR FIELD e_group.

    SELECTION-SCREEN POSITION 70.

    PARAMETERS e_group(12). "group name of error-session

    SELECTION-SCREEN END OF LINE.

    SELECTION-SCREEN BEGIN OF LINE.

    SELECTION-SCREEN COMMENT 51(17) text-s03 FOR FIELD e_keep.

    SELECTION-SCREEN POSITION 70.

    PARAMETERS: e_keep AS CHECKBOX. "' ' = delete session if finished

    "'X' = keep session if finished

    SELECTION-SCREEN END OF LINE.

    PARAMETERS:p_file LIKE rlgrap-filename.

    ----


    • at selection screen *

    ----


    AT SELECTION-SCREEN.

    • group and user must be filled for create session

    IF SESSION = 'X' AND

    GROUP = SPACE. "OR USER = SPACE.

    MESSAGE E613(MS).

    ENDIF.

    ----


    • create batchinput session *

    ----


    FORM OPEN_GROUP.

    IF SESSION = 'X'.

    SKIP.

    WRITE: /(20) 'Create group'(I01), GROUP.

    SKIP.

    *----open batchinput group

    CALL FUNCTION 'BDC_OPEN_GROUP'

    EXPORTING

    CLIENT = SY-MANDT

    GROUP = GROUP

    USER = sy-uname.

    WRITE:/(30) 'BDC_OPEN_GROUP'(I02),

    (12) 'returncode:'(I05),

    SY-SUBRC.

    ENDIF.

    ENDFORM. "OPEN_GROUP

    ----


    • end batchinput session *

    ----


    FORM CLOSE_GROUP.

    IF SESSION = 'X'.

    *------close batchinput group

    CALL FUNCTION 'BDC_CLOSE_GROUP'.

    WRITE: /(30) 'BDC_CLOSE_GROUP'(I04),

    (12) 'returncode:'(I05),

    SY-SUBRC.

    ELSE.

    IF E_GROUP_OPENED = 'X'.

    CALL FUNCTION 'BDC_CLOSE_GROUP'.

    WRITE: /.

    WRITE: /(30) 'Fehlermappe wurde erzeugt'(I06).

    ENDIF.

    ENDIF.

    ENDFORM. "CLOSE_GROUP

    ----


    • Start new transaction according to parameters *

    ----


    FORM BDC_TRANSACTION USING TCODE TYPE ANY.

    DATA: L_SUBRC LIKE SY-SUBRC.

    *------batch input session

    IF SESSION = 'X'.

    CALL FUNCTION 'BDC_INSERT'

    EXPORTING

    TCODE = TCODE

    TABLES

    DYNPROTAB = it_BDCDATA.

    WRITE: / 'BDC_INSERT'(I03),

    TCODE,

    'returncode:'(I05),

    SY-SUBRC,

    'RECORD:',

    SY-INDEX.

    ELSE.

    REFRESH it_MESSTAB.

    CALL TRANSACTION TCODE USING it_BDCDATA

    MODE CTUMODE

    UPDATE CUPDATE

    MESSAGES INTO it_MESSTAB.

    L_SUBRC = SY-SUBRC.

    WRITE: / 'CALL_TRANSACTION',

    TCODE,

    'returncode:'(I05),

    L_SUBRC,

    'RECORD:',

    SY-INDEX.

    ENDIF.

    ----


    • Message handling for Call Transaction *

    ----


    perform subr_mess_hand using g_mess.

    *-----Erzeugen fehlermappe

    IF L_SUBRC <> 0 AND E_GROUP <> SPACE.

    IF E_GROUP_OPENED = ' '.

    CALL FUNCTION 'BDC_OPEN_GROUP'

    EXPORTING

    CLIENT = SY-MANDT

    GROUP = E_GROUP

    USER = sy-uname

    KEEP = E_KEEP.

    E_GROUP_OPENED = 'X'.

    ENDIF.

    CALL FUNCTION 'BDC_INSERT'

    EXPORTING

    TCODE = TCODE

    TABLES

    DYNPROTAB = it_BDCDATA.

    ENDIF.

    REFRESH it_BDCDATA.

    ENDFORM. "BDC_TRANSACTION

    ----


    • Form subr_bdc_table *

    ----


    • text

    ----


    • -->P_0220 text *

    • -->P_0221 text *

    • -->P_0222 text *

    ----


    FORM subr_bdc_table USING VALUE(P_0220) TYPE ANY

    VALUE(P_0221) TYPE ANY

    VALUE(P_0222) TYPE ANY.

    CLEAR it_bdcdata.

    IF P_0220 = ' '.

    CLEAR it_bdcdata.

    it_bdcdata-fnam = P_0221.

    it_bdcdata-fval = P_0222.

    APPEND it_bdcdata.

    ELSE.

    it_bdcdata-dynbegin = P_0220.

    it_bdcdata-program = P_0221.

    it_bdcdata-dynpro = P_0222.

    APPEND it_bdcdata.

    ENDIF.

    ENDFORM. " subr_bdc_table

    ----


    • Form subr_mess_hand *

    ----


    • text *

    ----


    • -->P_G_MESS text *

    ----


    FORM subr_mess_hand USING P_G_MESS TYPE ANY.

    LOOP AT IT_MESSTAB.

    CALL FUNCTION 'FORMAT_MESSAGE'

    EXPORTING

    ID = it_messtab-msgid

    LANG = it_messtab-msgspra

    NO = it_messtab-msgnr

    v1 = it_messtab-msgv1

    v2 = it_messtab-msgv2

    IMPORTING

    MSG = P_G_MESS

    EXCEPTIONS

    OTHERS = 0.

    CASE it_messtab-msgtyp.

    when 'E'.

    it_error-error_rec = P_G_MESS.

    it_error-lifnr = it_me21-lifnr.

    it_error-tabix = v_count.

    APPEND IT_ERROR.

    when 'S'.

    it_sucess-sucess_rec = P_G_MESS.

    it_sucess-lifnr = it_me21-lifnr.

    it_sucess-tabix = v_count.

    APPEND IT_SUCESS.

    endcase.

    ENDLOOP.

    Describe table it_sucess lines v_ns.

    Describe table it_error lines v_ne.

    ENDFORM. " subr_mess_hand

    Regards,

    Abir

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

    • Don't forget to award points *

                                                                      Add comment
                                                                      10|10000 characters needed characters exceeded