‎2006 Jun 07 9:25 PM
Hi ,
I am trying to create a BDC for routing opertaions update . During recording for a Screen ( that has subscreens )i get this :
BDC_SUBSCR SAPLCPDO 1210GENERAL.
I wanted to know Is there a special way to populate the subscreen fields ? I just copied the bdcdata-fnam = 'bdc_subscr' and fval = SAPLCPDO 1210GENERAL , but it looks like this is not the correct way as i get an error saying No transaction data for screen SAPLCPDO.
I would appreciate if anyone can let me know how to code for this.
Thank you very much
‎2006 Jun 07 9:26 PM
‎2006 Jun 07 9:30 PM
Tamanna,
If your requirement is how to code BDC program for a transaction which has subscreens in it...then refer to the example program I had created at one of my client places. But this is not for tcode CA02. Sorry I couldn't be of more help.
* Table declaration
TABLES:
wyt3,
/bay2/u7sxcrecce.
*&---------------------------------------------------------------------*
*& Internal Table Declaration for Bushy Park Legacy data
*&---------------------------------------------------------------------*
DATA : BEGIN OF i_leg OCCURS 0,
po_nm(15), " PO No - EBELN
byrc(2), " Purchasing group - buyer code - EKGRP
vendor(10), " LIFNR
po_date(6), " BEDAT
cur(3), " currency - WAERS
zterm(2), " terms code - ZTERM
fob(2), " FOB code - IINCO1
mat(7), " material - EMATN
mat_pck(15), " material PCK - ematn
quant(15), " quantity due - MENGE
u_meas(2), " Unit of measure - MEINS
del_date(6), " Item delivery date - EINDT
ven_mat(30), " Material # used by vendor
net_pr(17), " Net price - NETPR
ship_via(3), " Ship via
del_loc(5), " Delivery location - ABLAD
dist_acc(21), " Distribution account
txz01(55), " Purchase Document Text
recip(5), " Recipient - WEMPF
line_cd(3), " Line code
comp(2), " Company
line_num(4), " PO line number
indicator(1), " Indictor as to what kind of PO's is being converted
projnbr(30), " filler
works(2), " Legacy works - WERKS
work_ord(7), " Work Order Number - AUFNR
wbs(8), " Project number - use for WBS x-ref
cost_elem(7), " G/L account for Project PO's w/o mat. master - SAKTO
xref_wbs(23), " WBS for manual load - SAKTO
percent(12), " Mara
* Filler for NET PRICE
filler(17), " Mara - net price
gl_act(7), " GL acct for Work Order
label(3), " Label
iwg_warehouse(9),
cost_cen(5), " Cost center
expence_cl(4), " Expence class
tax_code(2), " Tax Code
quan_gr(16), " Quantity of goods received
amt_gr(17), " Amount of goods received
quan_fi(16), " Quantity invoiced
amt_fi(17), " Amount invoiced
site(15), " Site name - Added by Naren Somen
* flag(1), " Indicator for valuted material - N/A
* commit_amt(14)," Commitment value
END OF i_leg.
*&---------------------------------------------------------------------*
*& Internal Table Declaration for SAP data
*&---------------------------------------------------------------------*
DATA : BEGIN OF i_sap OCCURS 0,
po_nm(15), " PO No - EBELN
ekgrp(3), " Purchasing Group
lifnr(10), " Vendor Number
zterm(4), " Payment Terms
werks(4), " Plant
txz01(40), " Text
netprice(14), " Price
commit_amt(14), " Commitment values
END OF i_sap.
DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
DATA: i_xleg LIKE i_leg OCCURS 0 WITH HEADER LINE.
DATA: i_wyt3 LIKE wyt3 OCCURS 0 WITH HEADER LINE.
DATA: p_itab LIKE i_leg OCCURS 0 WITH HEADER LINE.
* Internal table to store the messages
DATA: BEGIN OF i_mesage_tab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll .
DATA END OF i_mesage_tab.
*Begin of change by Naren Somen
*Buffer to the hold the records from tab delimited text file
DATA: BEGIN OF i_record_buffer,
record_buffer(4000) TYPE c.
DATA: END OF i_record_buffer.
*End of change by Naren Somen
DATA: w_input_rec_count(6) TYPE n," Input File Record Counter
w_address TYPE p, " Count of vendor addresses found
w_flg TYPE c VALUE 'X', " BDC Rec Indicator
w_insert_line(1) TYPE c, " Insert New Line Item in PO
w_del_date(10), " Delivery Date Format Changes
w_year(4), " Year
w_mon(2), " Month
w_date(2), " Date
w_purgrp(3), " SAP Purchasing group
w_vendor(10), " SAP vendor
w_payterm(4), " SAP payment terms
w_plant(4), " SAP plant
w_acct(10), " SAP G/L acct - temp
w_order(12), " SAP Work Order Number
w_aufnr LIKE ekkn-aufnr. " Work Order
DATA: w_input LIKE swaexpdef-expr,
w1_dec LIKE dfies-decimals,
w_mul TYPE i,
w_val TYPE i,
w_val01 LIKE ekpo-netpr,
w_netprice(11), " Net Price
w_netprice_hold(11), " hold variable for net price
w_netprice1(14), " Net Price before dec. point
w_netprice2(9), " Net Price after dec. point
w_quant TYPE c VALUE '1', " Quantity
w_count LIKE sy-tabix, " Loop Counter
w_costcenter TYPE kostl, " Costcenter
w_glaccount TYPE kstar, " G/L account
w_item TYPE bstpo VALUE '0010', " Line item number
w_quote(1) TYPE x VALUE '27'.
DATA: BEGIN OF i_epstp,
field1(11) TYPE c VALUE 'RM06E-EPSTP',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_epstp.
DATA: BEGIN OF i_knttp,
field1(10) TYPE c VALUE 'EKPO-KNTTP',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_knttp.
DATA: BEGIN OF i_txz01,
field1(10) TYPE c VALUE 'EKPO-TXZ01',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_txz01.
DATA: BEGIN OF i_eeind,
field1(11) TYPE c VALUE 'RM06E-EEIND',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_eeind.
DATA: BEGIN OF i_netpr,
field1(10) TYPE c VALUE 'EKPO-NETPR',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_netpr.
DATA: BEGIN OF i_matkl,
field1(10) TYPE c VALUE 'EKPO-MATKL',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_matkl.
DATA: BEGIN OF i_werks,
field1(10) TYPE c VALUE 'EKPO-WERKS',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_werks.
DATA: BEGIN OF i_ktext1,
field1(11) TYPE c VALUE 'ESLL-KTEXT1',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_ktext1.
DATA: BEGIN OF i_meins,
field1(10) TYPE c VALUE 'ESLL-MEINS',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_meins.
DATA: BEGIN OF i_ekpo_meins,
field1(10) TYPE c VALUE 'EKPO-MEINS',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_ekpo_meins.
DATA: BEGIN OF i_menge,
field1(10) TYPE c VALUE 'ESLL-MENGE',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_menge.
DATA: BEGIN OF i_ekpo_menge,
field1(10) TYPE c VALUE 'EKPO-MENGE',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_ekpo_menge.
DATA: BEGIN OF i_tbtwr,
field1(10) TYPE c VALUE 'ESLL-TBTWR',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_tbtwr.
DATA: BEGIN OF i_mkntm,
field1(11) TYPE c VALUE 'RM11K-MKNTM',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_mkntm.
DATA: BEGIN OF i_kostl,
field1(10) TYPE c VALUE 'ESKN-KOSTL',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_kostl.
DATA: BEGIN OF i_sakto,
field1(10) TYPE c VALUE 'ESKN-SAKTO',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_sakto.
DATA: BEGIN OF i_bstpo,
field1(11) TYPE c VALUE 'RM06E-BSTPO',
field2(1) TYPE c VALUE '(',
field3(3) TYPE n VALUE 000,
field4(1) TYPE c VALUE ')',
END OF i_bstpo.
DATA: BEGIN OF i_kstar,
kstar TYPE kstar,
END OF i_kstar.
DATA: c_yb(2) VALUE 'YB'.
DATA: c_partner_counter(3) TYPE c VALUE '002'. "Partner Counter -
"Naren Somen
CONSTANTS: c_185(4) TYPE c VALUE '0185', " System ID - Walker
c_202(4) TYPE c VALUE '0202', " System ID - Bushy Park
c_delimiter(1) TYPE x VALUE '09'," tab character-Naren Somen
c_unit(2) TYPE c VALUE 'PU', " Unit of measure
c_sq(2) TYPE c VALUE 'SQ',
c_zero(1) TYPE c VALUE '0',
c_loop(2) TYPE c VALUE '14',
c_00(2) TYPE c VALUE '00'.
*&---------------------------------------------------------------------*
*& Input Parameters / Selection Options
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK bl1 WITH FRAME TITLE text-tx1.
PARAMETERS : p_input LIKE filename-fileextern OBLIGATORY, " Input File
p_error LIKE filename-fileextern OBLIGATORY. " Output File
SELECTION-SCREEN END OF BLOCK bl1.
*
SELECTION-SCREEN BEGIN OF BLOCK bl3 WITH FRAME TITLE text-tx3.
PARAMETERS : p_ekorg LIKE ekko-ekorg OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bl3.
*
SELECTION-SCREEN BEGIN OF BLOCK bl4 WITH FRAME TITLE text-tx4.
PARAMETERS : p_uname LIKE apqi-userid OBLIGATORY,
p_sess LIKE bgr00-group OBLIGATORY.
SELECTION-SCREEN END OF BLOCK bl4.
*&---------------------------------------------------------------------*
*& Main Program Logic
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM open_input_output_files.
PERFORM create_bdc_session.
PERFORM write_results.
END-OF-SELECTION.
*&---------------------------------------------------------------------*
*& Form OPEN_INPUT_OUTPUT_FILES
*&---------------------------------------------------------------------*
FORM open_input_output_files.
PERFORM open_input_file.
PERFORM open_output_error_file.
ENDFORM. " OPEN_INPUT_OUTPUT_FILES
*&---------------------------------------------------------------------*
*& Form CREATE_BDC_SESSION
*&---------------------------------------------------------------------*
FORM create_bdc_session.
PERFORM open_group.
i_xleg[] = i_leg[].
LOOP AT i_leg.
IF i_leg-po_nm = i_xleg-po_nm.
SKIP.
ELSE.
PERFORM read_xref_tables.
*-- First screen
CLEAR w_insert_line.
PERFORM bdc_dynpro USING 'SAPMM06E' '0100'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM06E-BSART'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'EKKO-LIFNR' i_sap-lifnr.
PERFORM bdc_field USING 'RM06E-BSART' c_yb.
PERFORM bdc_field USING 'EKKO-EKORG' p_ekorg.
PERFORM bdc_field USING 'EKKO-EKGRP' i_sap-ekgrp.
PERFORM vendor_address.
IF w_address EQ '3'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '04/02'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SELV'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '04/02'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SELV'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '04/02'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SELV'.
ENDIF.
IF w_address EQ '2'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '04/02'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SELV'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '04/02'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SELV'.
ENDIF.
IF w_address EQ '1'.
PERFORM bdc_dynpro USING 'SAPMSSY0' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' '04/02'.
PERFORM bdc_field USING 'BDC_OKCODE' '=SELV'.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM06E-EBELP'.
PERFORM bdc_field USING 'BDC_OKCODE' '=KOPF'.
PERFORM bdc_dynpro USING 'SAPMM06E' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR' 'EKKO-VERKF'.
PERFORM bdc_field USING 'BDC_OKCODE' 'AB'.
PERFORM bdc_field USING 'EKKO-VERKF' i_leg-po_nm.
PERFORM bdc_field USING 'EKKO-ZTERM' i_sap-zterm.
PERFORM bdc_field USING 'EKKO-SPRAS' 'EN'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLXM06'.
PERFORM record_counter.
LOOP AT i_xleg WHERE po_nm EQ i_leg-po_nm.
* w_count = w_count + 1.
WRITE: i_leg-del_date TO w_del_date YYMMDD.
CONCATENATE '20' w_del_date INTO w_del_date.
MOVE w_del_date(4) TO w_year.
MOVE w_del_date+4(2) TO w_date.
MOVE w_del_date+6(2) TO w_mon.
CONCATENATE w_date '/' w_mon '/' w_year INTO w_del_date.
PERFORM item_xref_tables.
IF w_insert_line EQ space.
*-- Second Screen Line # 1
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' i_eeind.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
* PERFORM bdc_field USING i_bstpo w_item.
PERFORM bdc_field USING i_epstp 'D'.
PERFORM bdc_field USING i_knttp 'K'.
PERFORM bdc_field USING i_txz01 i_sap-txz01.
PERFORM bdc_field USING i_eeind w_del_date.
PERFORM bdc_field USING i_netpr i_sap-netprice.
PERFORM bdc_field USING i_matkl '25080400'.
PERFORM bdc_field USING i_werks i_sap-werks.
**-- Second Screen Line # 2 Onwards.
ELSE.
*--- Call Insert Line.
PERFORM line_item_data.
IF i_epstp-field3 GT c_loop.
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' 'RM06E-EBELP'.
PERFORM bdc_field USING 'BDC_OKCODE' '=NP'.
PERFORM record_counter.
PERFORM line_item_data.
ENDIF.
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_CURSOR' i_eeind.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
* PERFORM bdc_field USING i_bstpo w_item.
PERFORM bdc_field USING i_epstp 'D'.
PERFORM bdc_field USING i_knttp 'K'.
PERFORM bdc_field USING i_txz01 i_sap-txz01.
PERFORM bdc_field USING i_eeind w_del_date.
PERFORM bdc_field USING i_netpr i_sap-netprice.
PERFORM bdc_field USING i_matkl '25080400'.
PERFORM bdc_field USING i_werks i_sap-werks.
ENDIF.
w_insert_line = 'X'.
*-- Third Screen.
PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLMLSP'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLMLSL'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLMLSL'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLMLSP'.
PERFORM bdc_field USING 'BDC_CURSOR' 'ESLL-TBTWR(01)'.
PERFORM bdc_field USING i_ktext1 i_sap-txz01.
PERFORM bdc_field USING i_menge i_xleg-quant.
PERFORM bdc_field USING i_meins 'PU'.
PERFORM bdc_field USING i_tbtwr i_sap-netprice.
PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR' 'ESKN-SAKTO(01)'.
PERFORM bdc_field USING 'BDC_OKCODE' '/00'.
PERFORM bdc_field USING i_mkntm w_quant.
PERFORM bdc_field USING i_kostl w_costcenter.
PERFORM bdc_field USING i_sakto w_glaccount.
PERFORM bdc_dynpro USING 'SAPLMLSK' '0200'.
PERFORM bdc_field USING 'BDC_CURSOR' 'ESLL-INTROW'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BACK'.
PERFORM bdc_dynpro USING 'SAPLMLSP' '0200'.
PERFORM bdc_field USING 'BDC_OKCODE' '=ESB'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLMLSP'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLMLSL'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLMLSL'.
PERFORM bdc_field USING 'BDC_SUBSCR' 'SAPLMLSP'.
PERFORM bdc_field USING 'BDC_CURSOR' 'ESLL-KTEXT1(01)'.
ENDLOOP.
PERFORM bdc_dynpro USING 'SAPMM06E' '0120'.
PERFORM bdc_field USING 'BDC_OKCODE' '=BU'.
PERFORM bdc_transaction USING 'ME21'.
ENDIF.
ENDLOOP.
PERFORM close_group.
ENDFORM. " CREATE_BDC_SESSION
*&---------------------------------------------------------------------*
*& Form WRITE_RESULTS
*&---------------------------------------------------------------------*
FORM write_results.
WRITE: text-tx5, w_input_rec_count.
ENDFORM. " WRITE_RESULTS
*&---------------------------------------------------------------------*
*& Form OPEN_INPUT_FILE
*&---------------------------------------------------------------------*
FORM open_input_file.
OPEN DATASET p_input FOR INPUT IN TEXT MODE.
IF sy-subrc <> 0.
MESSAGE e000 WITH p_input.
ENDIF.
DO.
READ DATASET p_input INTO i_record_buffer.
IF sy-subrc <> 0.
EXIT.
ELSE.
SPLIT i_record_buffer-record_buffer AT c_delimiter INTO
i_leg-po_nm
i_leg-byrc
i_leg-vendor
i_leg-po_date
i_leg-cur
i_leg-zterm
i_leg-fob
i_leg-mat
i_leg-mat_pck
i_leg-quant
i_leg-u_meas
i_leg-del_date
i_leg-ven_mat
i_leg-net_pr
i_leg-ship_via
i_leg-del_loc
i_leg-dist_acc
i_leg-txz01
i_leg-recip
i_leg-line_cd
i_leg-comp
i_leg-line_num
i_leg-indicator
i_leg-projnbr
i_leg-works
i_leg-work_ord
i_leg-wbs
i_leg-cost_elem
i_leg-xref_wbs
i_leg-percent
i_leg-filler
i_leg-gl_act
i_leg-label
i_leg-iwg_warehouse
i_leg-cost_cen
i_leg-expence_cl
i_leg-tax_code
i_leg-quan_gr
i_leg-amt_gr
i_leg-quan_fi
i_leg-amt_fi
"Added by Naren Somen
i_leg-site.
* i_leg-flag
* i_leg-commit_amt.
APPEND i_leg.
ENDIF.
ENDDO.
DESCRIBE TABLE i_leg LINES w_input_rec_count.
CLOSE DATASET p_input.
ENDFORM. " OPEN_INPUT_FILE
*&---------------------------------------------------------------------*
*& Form OPEN_OUTPUT_ERROR_FILE
*&---------------------------------------------------------------------*
FORM open_output_error_file.
OPEN DATASET p_error FOR OUTPUT IN TEXT MODE.
IF sy-subrc <> 0.
MESSAGE e001 WITH p_error.
ENDIF.
ENDFORM. " OPEN_OUTPUT_ERROR_FILE
*&---------------------------------------------------------------------*
*& Form OPEN_GROUP
*&---------------------------------------------------------------------*
FORM open_group.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = p_sess
user = p_uname
keep = 'X'.
ENDFORM. " OPEN_GROUP
*&---------------------------------------------------------------------*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = w_flg.
APPEND bdcdata.
CLEAR bdcdata.
ENDFORM. " BDC_DYNPRO
*&---------------------------------------------------------------------*
*& Form BDC_FIELD
*&---------------------------------------------------------------------*
FORM bdc_field USING fnam fval.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
CLEAR bdcdata.
ENDFORM. " BDC_FIELD
*&---------------------------------------------------------------------*
*& Form BDC_transaction
*&---------------------------------------------------------------------*
FORM bdc_transaction USING tran_code.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = tran_code
TABLES
dynprotab = bdcdata.
CLEAR bdcdata.
REFRESH bdcdata.
ENDFORM. " BDC_TRANSACTION
*&---------------------------------------------------------------------*
*& Form CLOSE_GROUP
*&---------------------------------------------------------------------*
FORM close_group.
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 0
queue_error = 0
OTHERS = 0.
ENDFORM. " CLOSE_GROUP
*&---------------------------------------------------------------------*
*& Form READ_XREF_TABLES
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM read_xref_tables.
CLEAR i_sap.
PERFORM convert_pur_group USING i_leg-byrc.
PERFORM convert_vendor USING i_leg-vendor.
PERFORM convert_payterm USING i_leg-zterm.
ENDFORM. " READ_XREF_TABLES
*&---------------------------------------------------------------------*
*& Form CONVERT_PUR_GROUP
*&---------------------------------------------------------------------*
FORM convert_pur_group USING p_byrc.
SELECT SINGLE ekgrp FROM /bay2/u7emxrbuyr
INTO w_purgrp
WHERE system_id EQ c_185 AND leginp_cd EQ p_byrc.
IF sy-subrc EQ 0.
MOVE w_purgrp TO i_sap-ekgrp.
CLEAR w_purgrp.
ENDIF.
ENDFORM. " CONVERT_PUR_GROUP
*&---------------------------------------------------------------------*
*& Form CONVERT_VENDOR
*&---------------------------------------------------------------------*
FORM convert_vendor USING p_vendor.
DATA : w_venfamily(8) TYPE c,
w_vendor_temp(7) TYPE c,
wa_vendor TYPE /bay2/u7pxxrvend,
wa_vendor1 TYPE /bay2/u7pxxrvend.
CLEAR: w_vendor, w_venfamily, w_vendor_temp.
* Select with Full Vendor Number
SELECT SINGLE * FROM /bay2/u7pxxrvend INTO wa_vendor
WHERE leg_ven_num EQ p_vendor AND system_id = c_185.
IF sy-subrc EQ 0.
IF wa_vendor-ktokk EQ 'YKRD'.
MOVE wa_vendor-lifnr TO w_vendor.
ELSE. " IF YSUP
* Select the YKRD for corrusponding YSUP from WYT3
SELECT ekorg lifnr
INTO (wyt3-ekorg, wyt3-lifnr)
FROM wyt3
WHERE
lifn2 EQ wa_vendor-lifnr.
SELECT SINGLE lifnr
INTO w_vendor
FROM wyt3
WHERE lifnr EQ wyt3-lifnr AND
ekorg EQ wyt3-ekorg AND
parvw EQ 'LF'.
IF sy-subrc EQ 0.
EXIT.
ENDIF.
ENDSELECT. " SELECT ekorg lifnr
ENDIF. " IF wa_vendor-ktokk EQ 'YKRD'.
ENDIF. " IF SY-SUBRC EQ 0.
IF w_vendor IS INITIAL.
* Select YKRD with Legacy Vendor Family Number
MOVE p_vendor TO w_vendor_temp.
CONCATENATE w_vendor_temp '%' INTO w_venfamily.
SELECT SINGLE * FROM /bay2/u7pxxrvend INTO wa_vendor1
WHERE leg_ven_num LIKE w_venfamily AND
ktokk EQ 'YKRD' AND system_id = c_185.
IF sy-subrc EQ 0.
MOVE wa_vendor1-lifnr TO w_vendor.
MOVE w_vendor TO i_sap-lifnr.
ELSE.
CONCATENATE p_vendor 'X' INTO i_sap-lifnr.
ENDIF.
ELSE.
MOVE w_vendor TO i_sap-lifnr.
ENDIF.
ENDFORM. " CONVERT_VENDOR
*&---------------------------------------------------------------------*
*& Form CONVERT_PAYTERM
*&---------------------------------------------------------------------*
FORM convert_payterm USING p_i_leg01_trms_code.
SELECT SINGLE zterm
INTO w_payterm
FROM /bay2/u7emcpterm
WHERE legpterm EQ p_i_leg01_trms_code AND system_id = c_185.
IF sy-subrc = 0.
MOVE w_payterm TO i_sap-zterm.
CLEAR w_payterm.
ENDIF.
ENDFORM. " CONVERT_PAYTERM
*&---------------------------------------------------------------------*
*& Form CONVERT_PLANT
*&---------------------------------------------------------------------*
FORM convert_plant USING p_works.
SELECT SINGLE werks FROM /bay2/u7smcpwerk
INTO w_plant
WHERE system_id EQ c_185
AND legwerks EQ p_works.
IF sy-subrc = 0.
MOVE w_plant TO i_sap-werks.
ENDIF.
ENDFORM. " CONVERT_PLANT
*&---------------------------------------------------------------------*
*& Form VENDOR_ADDRESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM vendor_address.
REFRESH i_wyt3.
SELECT * FROM wyt3 INTO i_wyt3
WHERE lifnr EQ i_sap-lifnr
AND parza = c_partner_counter.
APPEND i_wyt3.
CLEAR i_wyt3.
ENDSELECT.
DESCRIBE TABLE i_wyt3 LINES w_address.
ENDFORM. " VENDOR_ADDRESS
*&---------------------------------------------------------------------*
*& Form ITEM_XREF_TABLES
*&---------------------------------------------------------------------*
FORM item_xref_tables.
PERFORM convert_plant USING i_xleg-works.
PERFORM convert_costcenter USING i_xleg-cost_cen
i_xleg-works.
PERFORM convert_glacc USING i_xleg-expence_cl.
MOVE: i_xleg-txz01(40) TO i_sap-txz01,
i_xleg-po_nm TO i_sap-po_nm,
i_xleg-filler+3(14) TO i_sap-netprice.
* i_xleg-commit_amt TO i_sap-commit_amt.
ENDFORM. " ITEM_XREF_TABLES
*&---------------------------------------------------------------------*
*& Form RECORD_COUNTER
*&---------------------------------------------------------------------*
FORM record_counter.
i_epstp-field3 = 1.
i_knttp-field3 = 1.
i_txz01-field3 = 1.
i_eeind-field3 = 1.
i_netpr-field3 = 1.
i_matkl-field3 = 1.
i_werks-field3 = 1.
i_ktext1-field3 = 1.
i_meins-field3 = 1.
i_menge-field3 = 1.
i_tbtwr-field3 = 1.
i_mkntm-field3 = 1.
i_kostl-field3 = 1.
i_sakto-field3 = 1.
i_ekpo_meins-field3 = 1.
i_ekpo_menge-field3 = 1.
w_count = 0.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form LINE_ITEM_DATA
*&---------------------------------------------------------------------*
FORM line_item_data.
i_epstp-field3 = i_epstp-field3 + 1.
i_knttp-field3 = i_knttp-field3 + 1.
i_txz01-field3 = i_txz01-field3 + 1.
i_eeind-field3 = i_eeind-field3 + 1.
i_netpr-field3 = i_netpr-field3 + 1.
i_matkl-field3 = i_matkl-field3 + 1.
i_werks-field3 = i_werks-field3 + 1.
i_ekpo_menge-field3 = i_ekpo_menge-field3 + 1.
i_ekpo_meins-field3 = i_ekpo_meins-field3 + 1.
w_item = w_item + 10.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CONVERT_COSTCENTER
*&---------------------------------------------------------------------*
FORM convert_costcenter USING p_costcenter p_works.
CONCATENATE c_sq p_works p_costcenter c_zero INTO w_costcenter.
ENDFORM.
*&---------------------------------------------------------------------*
*& Form CONVERT_COSTCENTER
*&---------------------------------------------------------------------*
FORM convert_glacc USING w_expence_cl.
SELECT SINGLE kstar FROM /bay2/u7sxcrecce INTO i_kstar-kstar WHERE
leginp_cd EQ w_expence_cl.
MOVE i_kstar-kstar TO w_glaccount.
ENDFORM.Thanks,
‎2006 Jun 07 10:32 PM
For subscrens, usually you've to use the main screen program name and screen number.
See the technical info of that field, use the program name, screen#, and field name from field description for batchinput, see if it works.
Regards
Sridhar
‎2006 Jun 08 6:25 AM
Hi sharma ,
why dont u try with BAPIs.
BAPI_ROUTING_CREATE Creation of a routing
BAPI_ROUTING_EXISTENCE_CHECK Check whether routing exists
IDOC_INPUT_ROUTING_CREATE
ROUTING_CLEARBUFFER
ROUTING_DISPLAY
‎2006 Jun 08 6:40 AM
Hi,
Try to Record it using SHDB tansaction Properly with out errors, and get the Code from recording that will give clear idea about the screen numbers and screen fields
Regards
vijay
‎2006 Jun 08 6:58 AM
HI,
No need to handle subscreen while doing BDC.you can just use your Screen number and Program name like normal screen.Dont worry about subscreen.
Cheers,
Bujji.