Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BDC Problem , Pls help

Former Member
0 Likes
1,263

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

6 REPLIES 6
Read only

RichHeilman
Developer Advocate
Developer Advocate
0 Likes
820

Have you recorded your transaction via transaction code SHDB. This really is the best way to get your BDC code.

Regards,

Rich Heilman

Read only

Former Member
0 Likes
820

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,

Read only

sridhar_k1
Active Contributor
0 Likes
820

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

Read only

Former Member
0 Likes
820

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                                                                                

Read only

Former Member
0 Likes
820

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

Read only

Former Member
0 Likes
820

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.