BDC Program with recording

Hi All,
I have a requirement to create a bdc program for asset creation with recording. Any have this, please send the step-by-step procedure.
I am very thankful to you in advance.
Thanks,
Nagarjuna.

HI Nagarjuna,
Step by Step approach to ceate simple BDC session program using reusable template.
Batch Data Communication is one of the vital data upload / transaction automation option in many SAP components . I am suggesting here a way out to simplify the programming for a BDC application . It utilizes a template program and gives steps to use it to create your own BDC program on the fly.
This step by step approach can be used to create a Simple BDC program i.e for a transaction which does not have any table control / looping at screen table. The same can also be enhanced to develop a program for transactions involving table controls .
1. Create a new program as executable program using SE38 transaction code.
2. Copy the following template code into your program .
---- Start of Template -
REPORT
NO STANDARD PAGE HEADING
LINE-SIZE 200
LINE-COUNT 300.
*-- DATA DECLARATION--
*---Types
DATA : BEGIN OF t_upload,
FIELD1(10),
FIELD2(2),
FIELD3(18),
FIELD4(35),
END OF t_upload.
*--- Tables
DATA : BEGIN OF i_bdcdata OCCURS 0."to hold the transaction record
INCLUDE STRUCTURE bdcdata.
DATA: END OF i_bdcdata.
DATA: i_upload LIKE STANDARD TABLE OF t_upload," to hold file data.
i_upload1 LIKE STANDARD TABLE OF t_upload." to hold file data.
*--- Work Areas
DATA: wa_upload2 LIKE t_upload,
wa_upload LIKE t_upload,
wa_upload1 LIKE t_upload.
*--- Variables
DATA: v_count1(4) TYPE n,
v_error TYPE c,
v_session(12),
v_field(21) TYPE c,
v_message(60) type 'C'.
*--Constants
DATA: c_open TYPE c VALUE '(',
c_close TYPE c VALUE ')',
c_x TYPE c VALUE 'X'.
*---Initialisation
initialization.
refresh : i_upload , i_upload1 ,i_bdcdata.
-------Selection Screen Design -
*Selection screen for input of upload file address
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
PARAMETERS : p_file LIKE rlgrap-filename OBLIGATORY.
SELECTION-SCREEN END OF BLOCK blk1.
---AT SELECTION SCREEN -
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*--For popup to select file.
PERFORM give_help.
-----START OF SELECTION -
START-OF-SELECTION.
*--Data upload using WS_Upload.
PERFORM get_data.
*-- OPEN SESSION
PERFORM open_group.
*--Insert transactions using BDCDATA table in the session.
PERFORM do_transaction .
*-- Close the session.
PERFORM close_group.
END-OF-SELECTION.
*& Form f_get_data
For data upload from external file.
FORM get_data.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_file
filetype = 'DAT'
TABLES
data_tab = i_upload
EXCEPTIONS
conversion_error = 1
file_open_error = 2
file_read_error = 3
invalid_type = 4
no_batch = 5
unknown_error = 6
invalid_table_width = 7
gui_refuse_filetransfer = 8
customer_error = 9
OTHERS = 10.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ELSE.
DELETE I_UPLOAD INDEX 1.
ENDIF.
ENDFORM. " f_get_data
*& Form F_open_group
To open session in session management.
FORM open_group.
v_session = 'TCODE'.
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
group = v_session
user = sy-uname
keep = 'X'.
ENDFORM. " F_open_group
*& Form f_do_transaction
Insert transactions in session after passing values to BDCDATA
FORM do_transaction.
LOOP AT i_upload INTO wa_upload .
*---- insert your generated codes from recording at SHDB here
*----- insertion ends
perform bdc_transaction using 'TCODE'.
REFRESH : I_BDCDATA.
CLEAR : WA_UPLOAD.
ENDIF.
ENDLOOP.
ENDFORM. " f_do_transaction
*& Form bdc_dynpro
For appending screen details to BDCDATA
FORM bdc_dynpro USING program dynpro.
CLEAR i_bdcdata.
i_bdcdata-program = program.
i_bdcdata-dynpro = dynpro.
i_bdcdata-dynbegin = 'X'.
APPEND i_bdcdata.
CLEAR i_bdcdata.
ENDFORM. "bdc_dynpro
*& Form bdc_field
For appending field details to bdcdata table
FORM bdc_field USING fnam fval.
CLEAR i_bdcdata.
i_bdcdata-fnam = fnam.
i_bdcdata-fval = fval.
APPEND i_bdcdata.
CLEAR i_bdcdata.
ENDFORM. " bdc_field
*& Form bdc_transaction
For inserting Transaction in the session
FORM bdc_transaction USING tcode.
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = tcode
TABLES
dynprotab = i_bdcdata.
ENDFORM. " bdc_transaction
*& Form F_close_group
For closing the session created in Session manager SM35
FORM close_group.
CALL FUNCTION 'BDC_CLOSE_GROUP'.
concatenate 'Session ' v_session 'successfully created' into v_field.
MESSAGE v_field type 'I'..
CALL TRANSACTION 'SM35'.
ENDFORM. "f_close_group
*& Form f_give_help
For user help to select file
FORM give_help.
CALL FUNCTION 'WS_FILENAME_GET'
EXPORTING
mask = ',.,..'
mode = 'O'
IMPORTING
filename = p_file
EXCEPTIONS
inv_winsys = 1
no_batch = 2
selection_cancel = 3
selection_error = 4
OTHERS = 5.
IF sy-subrc <> 0 AND NOT sy-msgty IS INITIAL.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " f_give_help
---- End of Template -
3.Go to the transaction SHDB in another session ( you can also give TCODE - OSHDB in transaction code window and hit enter ).
4.Create you transaction recording in SHDB . Ensure your transaction recording takes care of input values to all the
fields to which you intend to pass values in the BDC.
5.Once your recording is done correctly create the program from recording in the SHDB transction . You will find the button to create program in SHDB . Choose the option of creating from file when you proceed through the subsequent steps.
6. Define data type t_upload and structure wa_upload in the template program with fields of structure 'RECORD' from the program generated using SHDB recording ( replace the field1, field2 and so on as per your requirement). For your understanding you can remove the suffixes to the
field name but keep the field size unchanged.
7.Copy the coding existing between 'do' and 'enddo' statement from the generated program . Insert the copied code between the loop and endloop code of form 'Do_transaction '. Replace fields of structure 'RECORD' with respective fields of structure wa_upload.Insert constant values wherever possible in transaction recording.You can also handle customised data conversions here.
8.Replace 'TCODE' in the template program with the transaction code you intend to process in this BDC.
9.Please carry out further syntax check and resolve the related issues.
This program will provide for input help to select upload file from local machine. The file needs to be in Tab delimited format and is assumed to have first row as column headers .
On successful creation of session you will be prompted with a Information popup giving the name of session ,and will take you to the SM35 transaction to process your session.
thanks
karthik

Similar Messages

  • Bdc program with out coding

    Hi All,
    I want to know how to write a bdc program with out coding...
    Thank you,
    Gopi....

    Hai.
    check this.
    BATCH DATA COMMUNICATION
    About Data Transfer In R/3 System
    When a company decides to implement the SAP R/3 to manage business-critical data, it usually does not start from a no-data situation. Normally, a SAP R/3 project comes into replace or complement existing application.
    In the process of replacing current applications and transferring application data, two situations might occur:
    • The first is when application data to be replaced is transferred at once, and only once.
    • The second situation is to transfer data periodically from external systems to SAP and vice versa.
    • There is a period of time when information has to be transferred from existing application, to SAP R/3, and often this process will be repetitive.
    The SAP system offers two primary methods for transferring data into SAP systems. From non-SAP systems or legacy system. These two methods are collectively called “batch input” or “batch data communication”.
    1. SESSION METHOD
    2. CALL TRANSACTION
    3. DIRECT INPUT
    Advantages offered by BATCH INPUT method:
    1. Can process large data volumes in batch.
    2. Can be planned and submitted in the background.
    3. No manual interaction is required when data is transferred.
    4. Data integrity is maintained as whatever data is transferred to the table is through transaction. Hence batch input data is submitted to all the checks and validations.
    To implement one of the supported data transfers, you must often write the program that exports the data from your non-SAP system. This program, known as a “data transfer” program must map the data from the external system into the data structure required by the SAP batch input program.
    The batch input program must build all of the input to execute the SAP transaction.
    Two main steps are required:
    • To build an internal table containing every screen and every field to be filled in during the execution of an SAP transaction.
    • To pass the table to SAP for processing.
    Prerequisite for Data Transfer Program
    Writing a Data Transfer Program involves following prerequisites:
    Analyzing data from local file
    Analyzing transaction
    Analyzing transaction involves following steps:
    • The transaction code, if you do not already know it.
    • Which fields require input i.e., mandatory.
    • Which fields can you allow to default to standard values.
    • The names, types, and lengths of the fields that are used by a transaction.
    • Screen number and Name of module pool program behind a particular transaction.
    To analyze a transaction::
    • Start the transaction by menu or by entering the transaction code in the command box.
    (You can determine the transaction name by choosing System – Status.)
    • Step through the transaction, entering the data will be required for processing your batch input data.
    • On each screen, note the program name and screen (dynpro) number.
    (dynpro = dyn + pro. Dyn = screen, pro = number)
    • Display these by choosing System – Status. The relevant fields are Program (dynpro) and Dynpro number. If pop-up windows occur during execution, you can get the program name and screen number by pressing F1 on any field or button on the screen.
    The technical info pop-up shows not only the field information but also the program and screen.
    • For each field, check box, and radio button on each screen, press F1 (help) and then choose Technical Info.
    Note the following information:
    - The field name for batch input, which you’ll find in its own box.
    - The length and data type of the field. You can display this information by double clicking on the Data Element field.
    • Find out the identification code for each function (button or menu) that you must execute to process the batch-input data (or to go to new screen).
    Place the cursor on the button or menu entry while holding down the left mouse button. Then press F1.
    In the pop-up window that follows, choose Technical info and note the code that is shown in the Function field.
    You can also run any function that is assigned to a function key by way of the function key number. To display the list of available function keys, click on the right mouse button. Note the key number that is assigned to the functions you want to run.
    Once you have program name, screen number, field name (screen field name), you can start writing.
    DATA TRANSFER program.
    Declaring internal table
    First Integral Table similar to structure like local file.
    Declaring internal table like BDCDATA
    The data from internal table is not transferred directly to database table, it has to go through transaction. You need to pass data to particular screen and to particular screen-field. Data is passed to transaction in particular format, hence there is a need for batch input structure.
    The batch input structure stores the data that is to be entered into SAP system and the actions that are necessary to process the data. The batch input structure is used by all of the batch input methods. You can use the same structure for all types of batch input, regardless of whether you are creating a session in the batch input queue or using CALL TRANSACTION.
    This structure is BDCDATA, which can contain the batch input data for only a single run of a transaction. The typical processing loop in a program is as follows:
    • Create a BDCDATA structure
    • Write the structure out to a session or process it with CALL TRANSACTION USING; and then
    • Create a BDCDATA structure for the next transaction that is to be processed.
    Within a BDCDATA structure, organize the data of screens in a transaction. Each screen that is processed in the course of a transaction must be identified with a BDCDATA record. This record uses the Program, Dynpro, and Dynbegin fields of the structure.
    The screen identifier record is followed by a separate BDCDATA record for each value, to be entered into a field. These records use the FNAM and FVAL fields of the BDCDATA structure. Values to be entered in a field can be any of the following:
    • Data that is entered into screen fields.
    • Function codes that are entered into the command field. Such function codes execute functions in a transaction, such as Save or Enter.
    The BDCDATA structure contains the following fields:
    • PROGRAM: Name of module pool program associated with the screen. Set this field only for the first record for the screen.
    • DYNPRO: Screen Number. Set this field only in the first record for the screen.
    • DYNBEGIN: Indicates the first record for the screen. Set this field to X, only for the first record for the screen. (Reset to ‘ ‘ (blank) for all other records.)
    • FNAM: Field Name. The FNAM field is not case-sensitive.
    • FVAL: Value for the field named in FNAM. The FVAL field is case-sensitive. Values assigned to this field are always padded on the right, if they are less than 132 characters. Values must be in character format.
    Transferring data from local file to internal table
    Data is uploaded to internal table by UPLOAD of WS_UPLOAD function.
    Population of BDCDATA
    For each record of internal table, you need to populate Internal table, which is similar to BDCDATA structure.
    All these five initial steps are necessary for any type of BDC interface.
    DATA TRANSFER program can call SESSION METHOD or CALL TRANSACTION. The initial steps for both the methods are same.
    First step for both the methods is to upload the data to internal table. From Internal Table, the data is transferred to database table by two ways i.e., Session method and Call transaction.
    SESSION METHOD
    About Session method
    In this method you transfer data from internal table to database table through sessions.
    In this method, an ABAP/4 program reads the external data that is to be entered in the SAP System and stores the data in session. A session stores the actions that are required to enter your data using normal SAP transaction i.e., Data is transferred to session which in turn transfers data to database table.
    Session is intermediate step between internal table and database table. Data along with its action is stored in session i.e., data for screen fields, to which screen it is passed, the program name behind it, and how the next screen is processed.
    When the program has finished generating the session, you can run the session to execute the SAP transactions in it. You can either explicitly start and monitor a session or have the session run in the background processing system.
    Unless session is processed, the data is not transferred to database table.
    BDC_OPEN_GROUP
    You create the session through program by BDC_OPEN_GROUP function.
    Parameters to this function are:
    • User Name: User name
    • Group: Name of the session
    • Lock Date: The date on which you want to process the session.
    • Keep: This parameter is passed as ‘X’ when you want to retain session after
    processing it or ‘ ‘ to delete it after processing.
    BDC_INSERT
    This function creates the session & data is transferred to Session.
    Parameters to this function are:
    • Tcode: Transaction Name
    • Dynprotab: BDC Data
    BDC_CLOSE_GROUP
    This function closes the BDC Group. No Parameters.
    Some additional information for session processing
    When the session is generated using the KEEP option within the BDC_OPEN_GROUP, the system always keeps the sessions in the queue, whether it has been processed successfully or not.
    However, if the session is processed, you have to delete it manually. When session processing is completed successfully while KEEP option was not set, it will be removed automatically from the session queue. Log is not removed for that session.
    If the batch-input session is terminated with errors, then it appears in the list of INCORRECT session and it can be processed again. To correct incorrect session, you can analyze the session. The Analysis function allows to determine which screen and value has produced the error. If you find small errors in data, you can correct them interactively, otherwise you need to modify batch input program, which has generated the session or many times even the data file.
    CALL TRANSACTION
    About CALL TRANSACTION
    A technique similar to SESSION method, while batch input is a two-step procedure, Call Transaction does both steps online, one after the other. In this method, you call a transaction from your program by
    Call transaction <tcode> using <BDCTAB>
    Mode <A/N/E>
    Update <S/A>
    Messages into <MSGTAB>.
    Parameter – 1 is transaction code.
    Parameter – 2 is name of BDCTAB table.
    Parameter – 3 here you are specifying mode in which you execute transaction
    A is all screen mode. All the screen of transaction are displayed.
    N is no screen mode. No screen is displayed when you execute the transaction.
    E is error screen. Only those screens are displayed wherein you have error record.
    Parameter – 4 here you are specifying update type by which database table is updated.
    S is for Synchronous update in which if you change data of one table then all the related Tables gets updated. And sy-subrc is returned i.e., sy-subrc is returned for once and all.
    A is for Asynchronous update. When you change data of one table, the sy-subrc is returned. And then updating of other affected tables takes place. So if system fails to update other tables, still sy-subrc returned is 0 (i.e., when first table gets updated).
    Parameter – 5 when you update database table, operation is either successful or unsuccessful or operation is successful with some warning. These messages are stored in internal table, which you specify along with MESSAGE statement. This internal table should be declared like BDCMSGCOLL, a structure available in ABAP/4. It contains the following fields:
    1. Tcode: Transaction code
    2. Dyname: Batch point module name
    3. Dynumb: Batch input Dyn number
    4. Msgtyp: Batch input message type (A/E/W/I/S)
    5. Msgspra: Batch input Lang, id of message
    6. Msgid: Message id
    7. MsgvN: Message variables (N = 1 - 4)
    For each entry, which is updated in database, table message is available in BDCMSGCOLL. As BDCMSGCOLL is structure, you need to declare a internal table which can contain multiple records (unlike structure).
    Steps for CALL TRANSACTION method
    1. Internal table for the data (structure similar to your local file)
    2. BDCTAB like BDCDATA
    3. UPLOAD or WS_UPLOAD function to upload the data from local file to itab. (Considering file is local file)
    4. Loop at itab.
    Populate BDCTAB table.
    Call transaction <tcode> using <BDCTAB>
    Mode <A/N/E>
    Update <S/A>.
    Refresh BDCTAB.
    Endloop.
    (To populate BDCTAB, You need to transfer each and every field)
    The major differences between Session method and Call transaction are as follows:
    SESSION METHOD CALL TRANSACTION
    1. Data is not updated in database table unless Session is processed. Immediate updation in database table.
    2. No sy-subrc is returned. Sy-subrc is returned.
    3. Error log is created for error records. Errors need to be handled explicitly
    4. Updation in database table is always synchronous Updation in database table can be synchronous Or Asynchronous.
    Error Handling in CALL TRANSACTION
    When Session Method updates the records in database table, error records are stored in the log file. In Call transaction there is no such log file available and error record is lost unless handled. Usually you need to give report of all the error records i.e., records which are not inserted or updated in the database table. This can be done by the following method:
    Steps for the error handling in CALL TRANSACTION
    1. Internal table for the data (structure similar to your local file)
    2. BDCTAB like BDCDATA
    3. Internal table BDCMSG like BDCMSGCOLL
    4. Internal table similar to Ist internal table
    (Third and fourth steps are for error handling)
    5. UPLOAD or WS_UPLOAD function to upload the data from the local file to itab. (Considering file is local file)
    6. Loop at itab.
    Populate BDCTAB table.
    Call transaction <tr.code> using <Bdctab>
    Mode <A/N/E>
    Update <S/A>
    Messages <BDCMSG>.
    Perform check.
    Refresh BDCTAB.
    Endloop.
    7 Form check.
    IF sy-subrc <> 0. (Call transaction returns the sy-subrc if updating is not successful).
    Call function Format_message.
    (This function is called to store the message given by system and to display it along with record)
    Append itab2.
    Display the record and message.
    DIRECT INPUT
    About Direct Input
    In contrast to batch input, this technique does not create sessions, but stores the data directly. It does not simulate the online transaction. To enter the data into the corresponding database tables directly, the system calls a number of function modules that execute any necessary checks. In case of errors, the direct input technique provides a restart mechanism. However, to be able to activate the restart mechanism, direct input programs must be executed in the background only. Direct input checks the data thoroughly and then updates the database directly.
    You can start a Direct Input program in two ways;
    Start the program directly
    This is the quickest way to see if the program works with your flat file. This option is possible with all direct input programs. If the program ends abnormally, you will not have any logs telling you what has or has not been posted. To minimize the chance of this happening, always use the check file option for the first run with your flat file. This allows you to detect format errors before transfer.
    Starting the program via the DI administration transaction
    This transaction restarts the processing, if the data transfer program aborts. Since DI document are immediately posted into the SAP D/B, the restart option prevents the duplicate document posting that occurs during a program restart (i.e., without adjusting your flat file).
    Direct input is usually done for standard data like material master, FI accounting document, SD sales order and Classification for which SAP has provided standard programs.
    First time you work with the Direct Input administration program, you will need to do some preparation before you can transfer data:
    - Create variant
    - Define job
    - Start job
    - Restart job
    Common batch input errors
    - The batch input BDCDATA structure tries to assign values to fields which do not exist in the current transaction screen.
    - The screen in the BDCDATA structure does not match the right sequence, or an intermediate screen is missing.
    - On exceptional occasions, the logic flow of batch input session does not exactly match that of manual online processing. Testing the sessions online can discover by this.
    - The BDCDATA structure contains fields, which are longer than the actual definition.
    - Authorization problems.
    RECORDING A BATCH INPUT
    A B recording allows you to record a R/3 transaction and generate a program that contains all screens and field information in the required BDC-DATA format.
    You can either use SHDB transaction for recording or
    SYSTEM ? SERVICES ? BATCH INPUT ? EDIT
    And from here click recording.
    Enter name for the recording.
    (Dates are optional)
    Click recording.
    Enter transaction code.
    Enter.
    Click Save button.
    You finally come to a screen where, you have all the information for each screen including BDC_OKCODE.
    • Click Get Transaction.
    • Return to BI.
    • Click overview.
    • Position the cursor on the just recorded entry and click generate program.
    • Enter program name.
    • Click enter
    The program is generated for the particular transaction.
    BACKGROUND PROCESSING
    Need for Background processing
    When a large volume of data is involved, usually all batch inputs are done in background.
    The R/3 system includes functions that allow users to work non-interactively or offline. The background processing systems handle these functions.
    Non-interactively means that instead of executing the ABAP/4 programs and waiting for an answer, user can submit those programs for execution at a more convenient planned time.
    There are several reasons to submit programs for background execution.
    • The maximum time allowed for online execution should not exceed 300 seconds. User gets TIMEOUT error and an aborted transaction, if time for execution exceeds 300 seconds. To avoid these types of error, you can submit jobs for background processing.
    • You can use the system while your program is executing.
    This does not mean that interactive or online work is not useful. Both type of processing have their own purposes. Online work is the most common one entering business data, displaying information, printing small reports, managing the system and so on. Background jobs are mainly used for the following tasks; to process large amount of data, to execute periodic jobs without human intervention, to run program at a more convenient, planned time other than during normal working hours i.e., Nights or weekends.
    The transaction for background processing is SM36.
    Or
    Tools ? Administration ? Jobs ? Define jobs
    Or
    System ? services ? Jobs
    Components of the background jobs
    A job in Background processing is a series of steps that can be scheduled and step is a program for background processing.
    • Job name. Define the name of assigned to the job. It identifies the job. You can specify up to 32 characters for the name.
    • Job class. Indicates the type of background processing priority assigned to the job.
    The job class determines the priority of a job. The background system admits three types of job classes: A B & C, which correspond to job priority.
    • Job steps. Parameters to be passed for this screen are as follows:
    Program name.
    Variant if it is report program
    Start criteria for the job: Option available for this are as follows:
    Immediate - allows you to start a job immediately.
    Date/Time - allows you to start a job at a specific name.
    After job - you can start a job after a particular job.
    After event - allows you to start a job after a particular event.
    At operation mode - allows you to start a job when the system switches to a particular operation mode.
    Defining Background jobs
    It is two step process: Firstly, you define the job and then release it.
    When users define a job and save it, they are actually scheduling the report i.e., specifying the job components, the steps, the start time.
    When users schedule program for background processing, they are instructing the system to execute an ABAP/4 report or an external program in the background. Scheduled jobs are not executed until they are released. When jobs are released, they are sent for execution to the background processing system at the specified start time. Both scheduling and releasing of jobs require authorizations.
    HANDLING OF POP UP SCREEN IN BDC
    Many times in transaction pop up screen appears and for this screen you don’t pass any record but some indication to system telling it to proceed further. For example: The following screen
    To handle such screen, system has provided a variable called BDC_CURSOR. You pass this variable to BDCDATA and process the screen.
    Usually such screen appears in many transactions, in this case you are just passing information, that YES you want to save the information, that means YES should be clicked. So you are transferring this information to BDCDATA i.e., field name of YES which is usually SPOT_OPTION. Instead of BDC_OKCODE, you are passing BDC_CURSOR.
    BDC_CURSOR is also used to place cursor on particular field.
    AN EXAMPLE WITH SESSION METHOD
    Following program demonstrates how data is passed from flat file to SAP transaction and further to database table by using SESSION method.
    The transaction is TFBA (to change customer).
    A simple transaction where you are entering customer number on first screen and on next screen data is displayed for the particular customer number. Field, which we are changing here, are name and city. When you click on save, the changed record gets saved.
    Prerequisite to write this BDC interface as indicated earlier is:
    1. To find screen number
    2. To find screen field names, type of the field and length of the field.
    3. To find BDC_OKCODE for each screen
    4. Create flat file.
    Flat file can be created in your hard disk as follows:
    1 Vinod   Hyderabad
    2 Kavitha Secunderabad
    3 Kishore Hyderabad
    (Where 1st character field is Customer number, 2nd field is Customer name and 3rd field is City.)
    To transfer this data to database table SCUSTOM following interface can be used.
    REPORT DEMO1.
    Following internal table is to upload flat file.
    DATA: BEGIN OF ITAB OCCURS 0,
    ID(10),
    NAME(25),
    CITY(25),
    END OF ITAB.
    *Following internal table BDCDATA is to pass date from internal table to session.
    DATA: BDCTAB LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
    Variables
    DATA: DATE1 LIKE SY-DATUM. DATE1 = SY-DATUM - 1. “ This is for Hold Date
    To upload flat file to internal table.
    CALL FUNCTION UPLOAD
    EXPORTING
    FILE NAME = ‘C:\FF.TXT’
    FILE TYPE = ‘ASC”
    TABLES
    DATA_TAB = ITAB
    EXCEPTIONS
    CONVERSION_ERROR = 1
    INVALID_TABLE_WIDTH = 2
    INVALID_TYPE = 3
    NO_BATCH = 4
    UNKNOWN_ERROR = 5
    OTHERS = 6.
    If sy-subrc = 0.
    Calling Function to Create a Session
    CALL FUNCTION ‘BDC_OPEN_GROUP’
    EXPORTING
    CLIENT = SY-MANDT
    GROUP = ‘POTHURI’
    HOLDDATE = DATE1
    KEEP = ‘X’
    USER = SY-UNAME
    EXCEPTIONS
    CLIENT_INVALID = 1
    DESTINATION_INVALID = 2
    GROUP_INVALID = 3
    GROUP_IS_LOCKED = 4
    HOLDDATE_INVALID = 5
    INTERNAL_ERROR = 6
    QUEUE_ERROR = 7
    RUNNING = 8
    SYSTEM_LOCK_ERROR = 9
    USER_INVALID = 10
    OTHERS = 11.
    If sy-subrc = 0.
    *-- MAIN Logic--
    LOOP AT ITAB
    PERFORM GENERATE_DATA. “ Populating BDCDATA Table
    CALL FUNCTION ‘BDC_INSERT’
    EXPORTING
    TCODE = ‘TFBA’
    TABLES
    DYNPROTAB = BDCTAB
    EXCEPTIONS
    INTERNAL_ERROR = 1
    NOT_OPEN = 2
    QUEUE_ERROR = 3
    TCODE_INVALID = 4
    PRINTING_INVALID = 5
    POSTING_INVALID = 6
    OTHERS = 7.
    REFRESH BDCTAB
    ENDLOOP.
    Calling function to close the session
    CALL FUNCTION ‘BDC_CLOSE_GROUP’
    EXCEPTIONS
    NOT_OPEN = 1
    QUEUE_ERROR = 2
    OTHERS = 3.
    Endif.
    Endif.
    *& Form GENERATE_DATA
    Create BDC Data
    FORM GENERATE_DATA
    Passing information for 1st screen on BDCDATA
    BDCTAB-PROGRAM = ‘SAPMTFBA’.
    BDCTAX-DYNPRO = 100.
    BDCTAP-DYNBEGIN = ‘X’.
    APPEND BCDTAB.CLEAR BDCTAB.
    Passing field information to BDCDATA
    BDCTAB-FNAM = ‘SCUSTOM-ID’
    BDCTAB-FVAL = ITAB-ID.
    APPEND BDCTAB.CLEAR BDCTAB.
    Passing BDC_OKCODE to BDCDATA
    BDCTAB-FNAM = ‘BDC_OKCODE’.
    BDCTAB-FVAL = ‘/5’.
    APPEND BDCTAB.CLEAR BDCTAB.
    Passing screen information for next screen to BDCDATA
    BDCTAB-PROGRAM = ‘SAPMTFBA’.
    BDCTAB-DYNPRO = 200.
    BDCTAB-DYNBEGIN = ‘X’.
    APPEND BDCTAB.CLEAR BDCTAB.
    Passing screen information to BDCDATA
    BDCTAB-FNAM = ‘SCUSTOM-NAME’.
    BDCTAB-FVAL = ITAB-NAME.
    APPEND BDCTAB.CLEAR BDCTAB.
    Passing screen information to BDCDATA
    BDCTAB-FNAM = ‘SCUSTOM-CITY’.
    BDCTAB-FVAL = ITAB-CITY.
    APPEND BDCTAB.CLEAR BDCTAB.
    Passing BDC_OKCODE to BDCDATA
    BDCTAB-FNAM = ‘BDC_OKCODE’.
    BDCTAB-FVAL = ‘SAVE’.
    APPEND BDCTAB.CLEAR BDCTAB.
    ENDFORM. “GENERATE_DATA
    AN EXAMPLE WITH CALL TRANSACTION
    Same steps to be repeated for CALL TRANSACTION
    The only difference between the two types of interface is in Session method, you create session and store information about screen and data into session. When session is processed the data is transferred to database. While in CALL TRANSACTION, data is transferred directly to database table.
    REPORT DEMO1.
    Follow above Code till MAIN Logic. Even the Subroutine should be copied
    LOOP AT ITAB
    PERFORM GENERATE_DATA, “Populating BDCDATA Table
    Call transaction ‘TFBA’ using BCDDATA Mode ‘A’ Update ‘S’.
    REFRESH BDCTAB
    ENDLOOP.
    regards.
    sowjanya.b.

  • BDC PROGRAM WITH PAGE DOWN FUNCTIONALITY

    Hi,
      Can anyone provide me BDC program with page down functionality.
    Regards,
    SP

    Hi ,
    There is ok code i.e P+, which is the page down ,
    For example if you have 5 slots in the screen and from the BDC u have to fill more than the 5 slots so we will send the FVAL to BDCDATA like 'P+' it will increse the one more page ssay like 5 more slots.
    Regards,
    Bharani

  • BDC PROGRAM WITH OUT USING A FM?

    Hi Experts,
    I need wirte a BDC program for tcode PA30.
    i did the screen recording part using tcode-shdb.
    i need to use field i recorded as input fields.
    Now the main part is how to write code? with out using a class/method?
    class/method which i earlier used is class : CL_GUI_FRONTEND_SERVICES.
                                                             method: gui_upload.
    am not using ny flat file/xml file to upload?
    are there any function modules which i can use?
    and how to write code with out using FM?
    if any can solve  my issue would be very helpful...plz provide code...which would be more helpful.
    Thanks in Adv.
    Krrish.

    Hi,
       If you are migrating employee data, I would suggest you to do it through PA40 transaction rather PA30. systematic screen validations it will go through. If you dont want to use any FM and wanted to do using recording pls find the below code which will update the employee data through PA40 with call transaction method.
    SELECTION SCREEN
    SELECTION-SCREEN: BEGIN OF BLOCK b1 WITH FRAME TITLE   text-001.
    PARAMETERS: p_plan TYPE ibipparms-path OBLIGATORY.
    SELECTION-SCREEN: END OF BLOCK b1.
    TYPES: BEGIN OF ty_error,
             pernr TYPE persno,       " Personnel number
             rel_obj_id(12),         " Related Object ID
             msg(200) TYPE c,       " To store Message
           END   OF ty_error.
    DATA: i_tplan TYPE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE,
          i_intern TYPE STANDARD TABLE OF alsmex_tabline WITH HEADER LINE,
          i_error    TYPE ty_error OCCURS 0 WITH HEADER LINE.
    DATA: BEGIN OF w_pa000,
           pernr TYPE persno,
           begda TYPE begda,
          END OF w_pa000.
    DATA: wa_plan LIKE i_plan,
          wa_messtab    TYPE bdcmsgcoll, " Messages
          wa_error      TYPE ty_error.  " Errors
    DATA: it_pa000 LIKE STANDARD TABLE OF w_pa000 WITH HEADER LINE,
          it_pa002 LIKE STANDARD TABLE OF w_pa000 WITH HEADER LINE,
          it_pa001 LIKE STANDARD TABLE OF w_pa000 WITH HEADER LINE.
    DATA:  g_mode LIKE ctu_params-dismode VALUE 'N',
           g_file TYPE ibipparms-path.
    ALV field catalog
    DATA : i_fieldcat TYPE slis_t_fieldcat_alv.
          Batchinputdata of single transaction
    DATA:   i_bdcdata LIKE bdcdata    OCCURS 0 WITH HEADER LINE.
          messages of call transaction
    DATA:   i_messtab LIKE bdcmsgcoll OCCURS 0 WITH HEADER LINE.
          error session opened (' ' or 'X')
    Table to hold the return messages
    DATA: BEGIN OF i_errmsg OCCURS 10.
            INCLUDE STRUCTURE bapiret2.
    DATA: END OF i_errmsg.
    ALV List header table
    DATA : i_header1 TYPE slis_t_listheader.
    ALV List header table
    DATA : i_header TYPE slis_listheader.
    ***ALV Events
    DATA: is_layout TYPE slis_layout_alv.
    DATA : it_event TYPE slis_alv_event.
    DATA : it_event1 TYPE slis_t_event.
    To get the F4 help for file
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_plan.
      PERFORM get_filename.
    START  OF SELECTION
    START-OF-SELECTION.
    Initialise data
      PERFORM initialise_events.
    Retrieve data from Excel file
      PERFORM retreive_data.
    Populate final data into an internal table
      PERFORM populate_data.
    Process the excel file data to create a record for IT0007
      PERFORM process_data.
    END  OF SELECTION
    END-OF-SELECTION.
      PERFORM final_output.
    *&      Form  GET_FILENAME
    FORM get_filename .
    *Function module used for F4 help
      CALL FUNCTION 'F4_FILENAME'
        EXPORTING
          program_name  = syst-cprog
          dynpro_number = syst-dynnr
        IMPORTING
          file_name     = p_plan.
    ENDFORM.                    " GET_FILENAME
    *&      Form  INITIALISE_EVENTS
    FORM initialise_events .
      i_header-typ = 'H'.
    i_header-key = 'R'.
      i_header-info = 'BDC Interface for PA Infotypes 0000,0001,0002'.
      APPEND i_header TO i_header1.
      CLEAR i_header.
      i_header-typ = 'S'.
      i_header-info = 'Hiring, Org.Assignment, Personnel Data'.
      APPEND i_header TO i_header1.
      CLEAR i_header.
    ***Events and form name
      it_event-name = 'TOP_OF_PAGE'.
      it_event-form = 'TOP_OF_PAGE'.
      APPEND it_event TO it_event1.
    ENDFORM.                    " INITIALISE_EVENTS
    *&      Form  RETREIVE_DATA
    FORM retreive_data .
      PERFORM upload_data.
    ENDFORM.                    " RETREIVE_DATA
    *&      Form  UPLOAD_DATA
    FORM upload_data .
    FM to upload data from excel sheet to internal table
      CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
        EXPORTING
          filename                = p_plan
          i_begin_col             = g_colbeg
          i_begin_row             = g_rowbeg
          i_end_col               = g_colend
          i_end_row               = g_rowend
        TABLES
          intern                  = i_tplan
        EXCEPTIONS
          inconsistent_parameters = 1
          upload_ole              = 2
          OTHERS                  = 3.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " UPLOAD_DATA
    *&      Form  POPULATE_DATA
    FORM populate_data .
    processing the internal table generated from the function module
    Passing data from Excel file to internal table
      CLEAR: g_cnt_processed,
             g_cnt_err_processed,
             i_intern,
             i_plan.
      LOOP AT i_tplan.
        AT NEW row.
          CLEAR i_plan.
        ENDAT.
        CASE i_tplan-col.
    Begin Date
          WHEN '0001'.
            i_plan-pernr = i_tplan-value.
    End Date
          WHEN '0002'.
            i_plan-begda = i_tplan-value.
          WHEN '0003'.
            i_plan-massg = i_tplan-value.
    Sign
          WHEN '0004'.
            i_plan-plans = i_tplan-value.
          WHEN '0005'.
            i_plan-werks = i_tplan-value.
          WHEN '0006'.
            i_plan-persg = i_tplan-value.
          WHEN '0007'.
            i_plan-persk = i_tplan-value.
          WHEN '0008'.
            i_plan-anrex = i_tplan-value.
          WHEN '0009'.
            i_plan-nachn = i_tplan-value.
          WHEN '0010'.
            i_plan-vorna = i_tplan-value.
          WHEN '0011'.
            i_plan-gesch = i_tplan-value.
          WHEN '0012'.
            i_plan-gbdat = i_tplan-value.
          WHEN '0013'.
            i_plan-fatxt = i_tplan-value.
          WHEN '0014'.
            i_plan-famdt = i_tplan-value.
          WHEN '0015'.
            i_plan-gblnd = i_tplan-value.
          WHEN '0016'.
            i_plan-anzkd = i_tplan-value.
          WHEN '0017'.
            i_plan-natio = i_tplan-value.
          WHEN '0018'.
            i_plan-btrtl = i_tplan-value.
          WHEN '0019'.
            i_plan-gsber = i_tplan-value.
          WHEN '0020'.
            i_plan-abkrs = i_tplan-value.
        ENDCASE.
    Appending the internal table tb_data, tb_chng
        AT END OF row.
          APPEND i_plan.
          IF i_plan IS INITIAL.
            g_cnt_err_processed = g_cnt_err_processed + 1.
          ENDIF.
        ENDAT.
      ENDLOOP.
    To get the total number of records processed
      DESCRIBE TABLE i_plan LINES g_lines.
      g_cnt_processed = g_cnt_err_processed + g_lines.
      CLEAR g_lines.
    ENDFORM.                    " POPULATE_DATA
    *&      Form  PROCESS_DATA
    FORM process_data .
      CLEAR wa_error.
      REFRESH i_bdcdata.
    Check if the employee numbers from the template has already been hired
      SELECT pernr
             begda
             FROM pa0000
             INTO TABLE it_pa000
             FOR ALL ENTRIES IN i_plan
             WHERE pernr = i_plan-pernr
               AND massn = 'ZA'.
      IF sy-subrc = 0.
        SORT it_pa000 BY pernr.
    Check if employee has a corresponding infotype 0001 record
        SELECT pernr
               begda
               FROM pa0001
               INTO TABLE it_pa001
               FOR ALL ENTRIES IN it_pa000
               WHERE pernr = it_pa000-pernr AND
                     begda = it_pa000-begda.
        IF sy-subrc = 0.
          SORT it_pa001 BY pernr.
    Check if employee has a corresponding infotype 0002 record
          SELECT pernr
               begda
               FROM pa0001
               INTO TABLE it_pa002
               FOR ALL ENTRIES IN it_pa001
               WHERE pernr = it_pa001-pernr AND
                     begda = it_pa001-begda.
          IF sy-subrc = 0.
            SORT it_pa002 BY pernr.
          ENDIF.
        ENDIF.
      ENDIF.
      LOOP AT i_plan.
        REFRESH i_bdcdata.
    ***your recording to be pasted here***
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'P0006-BEGDA'.
        PERFORM call_transaction.
        APPEND wa_error TO i_error.
        REFRESH: i_bdcdata, i_messtab.
        CLEAR: wa_error, i_error.
      ENDLOOP.
    ENDFORM.                    " PROCESS_DATA
    *&      Form  BDC_DYNPRO
    FORM bdc_dynpro USING program dynpro.
      CLEAR i_bdcdata.
      i_bdcdata-program  = program.
      i_bdcdata-dynpro   = dynpro.
      i_bdcdata-dynbegin = 'X'.
      APPEND i_bdcdata.
    ENDFORM.                    "BDC_DYNPRO
    *&      Form  BDC_FIELD
    FORM bdc_field USING fnam fval.
    IF fval <> nodata.
      CLEAR i_bdcdata.
      i_bdcdata-fnam = fnam.
      i_bdcdata-fval = fval.
      APPEND i_bdcdata.
    ENDIF.
    ENDFORM.                    "bdc_field
    *&      Form  ERROR_RECORD_DATA
    FORM error_record_data .
      CLEAR: g_lines,
           wa_messtab,
           g_msg.
      DESCRIBE TABLE i_messtab LINES g_lines.
      READ TABLE i_messtab INTO wa_messtab INDEX g_lines.
      IF sy-subrc = 0.
        CLEAR g_msg.
        CALL FUNCTION 'FORMAT_MESSAGE'
          EXPORTING
            id        = wa_messtab-msgid
            lang      = sy-langu
            no        = wa_messtab-msgnr
            v1        = wa_messtab-msgv1
            v2        = wa_messtab-msgv2
            v3        = wa_messtab-msgv3
            v4        = wa_messtab-msgv4
          IMPORTING
            msg       = g_msg
          EXCEPTIONS
            not_found = 1
            OTHERS    = 2.
       IF wa_messtab-msgtyp = 'E'.
        IF wa_messtab-msgtyp = 'S' AND wa_messtab-msgnr = '102' AND wa_messtab-msgid = 'PG'.
          wa_error-pernr = i_plan-pernr.
          wa_error-rel_obj_id = 'S'.
          wa_error-msg = 'Personnel Number Created Successfully'.
        ELSE.
          wa_error-pernr = i_plan-pernr.
          wa_error-rel_obj_id = 'E'.
          wa_error-msg = g_msg.
        ENDIF.
       APPEND wa_error TO i_error.
       CLEAR i_error.
      ENDIF.
    ENDFORM.                    " ERROR_RECORD_DATA
    *&      Form  FINAL_OUTPUT
    FORM final_output .
      CLEAR g_lines.
      SORT i_error.
    *************added*********************************************
      loop at i_error into wa_error.
        if wa_error-MSG eq 'No batch input data for screen MP000600 2000'.
          wa_error-rel_obj_id = 'S'.
          wa_error-MSG = 'Record Created Successfully'.
          modify i_error from wa_error.
        endif.
      endloop.
      loop at i_error into wa_error.
        if  wa_error-rel_obj_id = 'S'.
          g_cnt_success = g_cnt_success + 1.       " Append success count
        elseif  wa_error-rel_obj_id = 'E'.
          g_cnt_failure = g_cnt_failure + 1.       " Append error count
        endif.
      endloop.
    ***Field catalog
      PERFORM field_cat.
    ***Assigning Program name
      g_repid = sy-repid.
      SORT i_error.
    ***Display Output
    IF NOT it_final[] IS INITIAL.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
           EXPORTING
                i_callback_program       = g_repid
               i_callback_user_command  = 'USER_COMMAND'
               i_callback_pf_status_set = 'PF_STATUS_SET'
                i_save                   = 'A'
                it_events                = it_event1
                is_layout                = is_layout
                it_fieldcat              = i_fieldcat[]
           TABLES
                t_outtab                 = i_error[].
    ELSE.
       MESSAGE i015(zv_msg) WITH 'No Data Found for this selection'.
       LEAVE LIST-PROCESSING.
    ENDIF.
    ENDFORM.                    " FINAL_OUTPUT
    *&      Form  top_of_page
          text
    FORM top_of_page.
    ***FM for Displaying Heading
      CALL FUNCTION 'REUSE_ALV_COMMENTARY_WRITE'
        EXPORTING
          it_list_commentary = i_header1[]
          i_logo             = 'ENJOYSAP_LOGO'.
    ENDFORM.                    "top_of_page
    *&      Form  FIELD_CAT
    FORM field_cat .
    ENDFORM.                    " FIELD_CAT
    *&      Form  CALL_TRANSACTION
    FORM call_transaction .
      CALL TRANSACTION 'PA40' USING i_bdcdata
                                   MODE g_mode
                                   UPDATE 'S'
                                   MESSAGES INTO i_messtab.
    If call transaction successful
      IF sy-subrc = 0.
       g_cnt_success = g_cnt_success + 1.       " Append success count  "changed
        PERFORM error_record_data.  " Populate all data
    If call transaction not successful
      ELSE.
        PERFORM error_record_data. " Populate all table
       g_cnt_failure = g_cnt_failure + 1.       " Append error count  "changed
      ENDIF.
    ENDFORM.                    " CALL_TRANSACTION

  • Issue Related to BDC Program against Recording

    Hi,
    I have a issue related to <b>BDC Programming</b>.
    Here My Transaction is related to <b>VX22</b>.
    First I did <b>Recording[SHDB]</b> for This Transaction<b>[VX22].</b>
    Then I had added same code from <b>Recording[SHDB]</b> in my Program.
    The Transaction which was going through <b>SHDB</b> Correctly, Not Working from My Program.
    Can any body tell me the Reason for this.
    I am adding <b>SHDB[Recording]</b> as well as Programming Code out here for checking.
    If anybody knows the diffrence please reply me.
    <b>SHDB - RECORDING</b>
    <b>    PERFORM bdc_dynpro      USING 'SAPMV52G' '0100'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'RV52G-SELKZ'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'VBAK-VBELN'
                                      record-vbeln_001.
        PERFORM bdc_field       USING 'RV52G-SELKZ'
                                      record-selkz_002. " space
        PERFORM bdc_dynpro      USING 'SAPLV52E' '0500'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'RV52G-SELKZ(02)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=DETA'.
        PERFORM bdc_field       USING 'RV52G-SELKZ(02)'
                                      record-selkz_02_003.
        PERFORM bdc_dynpro      USING 'SAPLV52E' '0520'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'VBEX-MODCO'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'VBEX-ALNUM'
                                      record-alnum_004. "Space
        PERFORM bdc_field       USING 'VBEX-EMBGR'
                                      record-embgr_005. "Space
        PERFORM bdc_field       USING 'VBEX-GENNR'
                                      record-gennr_006. "Space
        PERFORM bdc_field       USING 'VBEX-MODCO'
                                      record-modco_007. "Space
        PERFORM bdc_dynpro      USING 'SAPLV52E' '0520'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'VBEX-MODCO'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=BACK'.
        PERFORM bdc_field       USING 'VBEX-GENNR'
                                      record-gennr_008. "Value passed
        PERFORM bdc_field       USING 'VBEX-MODCO'
                                      record-modco_009. "Value Passed
        PERFORM bdc_dynpro      USING 'SAPLV52E' '0500'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      '*VBEX-VBELN'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=SICH'.
        PERFORM bdc_transaction USING 'VX22'.</b>
    <b>In Program Code Added:</b>
    <b>  CLEAR v_line_item.
      PERFORM f_bdc_dynpro      USING 'SAPMV52G' '0100'.
      PERFORM f_bdc_field       USING 'BDC_CURSOR'
                                      'RV52G-SELKZ'.
      PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
      PERFORM f_bdc_field       USING 'VBAK-VBELN'
                                      i_data-vbeln.
      PERFORM f_bdc_field       USING 'RV52G-SELKZ'
                                      v_space.
      CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
        EXPORTING
          input  = i_data-sno
        IMPORTING
          output = i_data-sno.
      SHIFT i_data-sno LEFT DELETING LEADING space.
      CONCATENATE c_line i_data-sno c_cl_b INTO v_line_item.
      PERFORM f_bdc_dynpro      USING 'SAPLV52E' '0500'.
      PERFORM f_bdc_field       USING 'BDC_CURSOR'
                                      v_line_item.
      PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                      '=DETA'.
      PERFORM f_bdc_field       USING v_line_item
                                      c_x.
      PERFORM f_bdc_dynpro      USING 'SAPLV52E' '0520'.
      PERFORM f_bdc_field       USING 'BDC_CURSOR'
                                      'VBEX-MODCO'.
      PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
      PERFORM f_bdc_field       USING 'VBEX-ALNUM'
                                      v_space.
      PERFORM f_bdc_field       USING 'VBEX-EMBGR'
                                      v_space.
      PERFORM f_bdc_field       USING 'VBEX-GENNR'
                                      v_space.
      PERFORM f_bdc_field       USING 'VBEX-MODCO'
                                      v_space.
      PERFORM f_bdc_dynpro      USING 'SAPLV52E' '0520'.
      PERFORM f_bdc_field       USING 'BDC_CURSOR'
                                      'VBEX-MODCO'.
      PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                      '=BACK'.
      PERFORM f_bdc_field       USING 'VBEX-GENNR'
                                      i_data-gennr.
      PERFORM f_bdc_field       USING 'VBEX-MODCO'
                                      'A'.
      PERFORM f_bdc_dynpro      USING 'SAPLV52E' '0500'.
      PERFORM f_bdc_field       USING 'BDC_CURSOR'
                                      '*VBEX-VBELN'.
      PERFORM f_bdc_field       USING 'BDC_OKCODE'
                                      '=SICH'.
      PERFORM f_bdc_call_transaction USING 'VX22'.</b>
    Can Anybody tell me the Diffrence B/N Recording and Program.
    only <b>v_line_item</b> is added extra in program to find out specific line item and select that line item that is working Correctly.
    <b>Issue#1</b>
    The issues in above come in first Initial Screen[100] Where i need to Remove Check for <b>'RV52G-SELKZ'</b> that is first thing that is not happening.
    Next it woking correctly for <b> 500</b> Screen [By Selecting Correct line item and then Details for it].
    <b>Issue#2</b>
    Then it is going to Screen <b>502</b> where first it need to clear all the enabled field i passed <b>space</b> to them. but still it is showing values in all fields. After Clearing i should Re-Add 2 fields among Those fields.
    Then other things will happen.
    Can anybody tell me what is reason in program code is not working - I had tried in all <b>'A/E/N'</b> Modes but it's not working!
    If anybody knows reason please help me out.
    One More thing i had tried by making <b>PARAMETER ID'S</b> of few fields BLANK. But by this way also it is not working.
    <b>  SET PARAMETER ID 'ALN' FIELD v_space.
      SET PARAMETER ID 'EMB' FIELD v_space.
      SET PARAMETER ID 'GNR' FIELD v_space.</b>
    Can anybody give me the solution.
    Thanks in advance.
    Thanks & Regards,
    Prasad.

    Hi,
    I had tried in Ravi's way also.
    I will explain the process once more.
    It's a DE-Assign Process - Main purpose is to make the External Licence number blank.
    For that process is as follows:
    First user will Trigger <b>VX22</b> transaction,
    In the initial screen <b>100</b> he will give <b>Sales Order Number[VBELN]</b> then remove Check Box against <b>Blocked Items(Legal Control)</b> Then Press Enter.
    It will take user to <b>Change Licen Data [500]</b> Screen.
    There from the line items he will select specific line item which is already filled in with <b>ASSIGN</b> process.
    He will select check box against that Line item then will hit on <b>Details[F2]</b> from the Tool Bar.
    It will take user to <b>502 screen</b> There he will be deleting all the data in change mode one by one in order of <b>Exp.Ctrl.Class</b>, <b>Grouping</b>, <b>License Number</b>, <b>Change ID</b> Then he will hit on enter then by that <b>Ext.License No</b> which is in display mode - value against that field will get deleted.
    Then he will again provide <b>License Number, Change ID</b> and then <b>hit Enter, Enter, Then Back Button</b> then it will take us back to previous screen <b>[500]</b> there he will hit on <b>SAVE</b> button. Then Order will be saved.
    ABove is the actual process.
    Anybody having the solution for above as BDC is initially not making screen fields blank initially.
    how we can do this by SET PARAMETER ID's.
    Thanks & Regards,
    Prasad.

  • Changes in BDC program to upload data from text/excel file

    Hi friends i have obtained the BDc program after recording :
    start-of-selection.
    perform open_group.
    perform bdc_dynpro      using 'SAPLCOIH' '0100'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CAUFVD-GSBER'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'AUFPAR-PM_AUFART'
                                  'PM01'.
    perform bdc_field       using 'CAUFVD-IWERK'
                                  '460a'.
    perform bdc_field       using 'CAUFVD-GSBER'
                                  '2460'.
    perform bdc_field       using 'CAUFVD-EQUNR'
                                  '10000009'.
    perform bdc_dynpro      using 'SAPLCOIH' '3000'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '/00'.
    perform bdc_field       using 'CAUFVD-KTEXT'
                                  'abc'.
    perform bdc_field       using 'CAUFVD-INGPR'
                                  'GM'.
    perform bdc_field       using 'CAUFVD-VAPLZ'
                                  'RTN_VELR'.
    perform bdc_field       using 'CAUFVD-VAWRK'
                                  '460A'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CAUFVD-GLTRP'.
    perform bdc_field       using 'CAUFVD-GSTRP'
                                  '1.8.2010'.
    perform bdc_field       using 'CAUFVD-GLTRP'
                                  '1.8.2010'.
    perform bdc_field       using 'CAUFVD-TPLNR'
                                  'RTNP-HIG'.
    perform bdc_field       using 'CAUFVD-EQUNR'
                                  '10000009'.
    perform bdc_field       using 'AFVGD-INDET'
                                  '1'.
    perform bdc_field       using 'AFVGD-WERKS'
                                  '460A'.
    perform bdc_field       using 'AFVGD-STEUS'
                                  'PMIN'.
    perform bdc_field       using 'AFVGD-ARBEH'
                                  'H'.
    perform bdc_field       using 'AFVGD-DAUNE'
                                  'H'.
    perform bdc_dynpro      using 'SAPLCOIH' '3000'.
    perform bdc_field       using 'BDC_OKCODE'
                                  '=BU'.
    perform bdc_field       using 'BDC_CURSOR'
                                  'CAUFVD-KTEXT'.
    perform bdc_field       using 'CAUFVD-KTEXT'
                                  'abc'.
    perform bdc_field       using 'CAUFVD-INGPR'
                                  'GM'.
    perform bdc_field       using 'CAUFVD-VAPLZ'
                                  'RTN_VELR'.
    perform bdc_field       using 'CAUFVD-VAWRK'
                                  '460A'.
    perform bdc_field       using 'CAUFVD-GSTRP'
                                  '01.08.2010'.
    perform bdc_field       using 'CAUFVD-GLTRP'
                                  '01.08.2010'.
    perform bdc_field       using 'CAUFVD-TPLNR'
                                  'RTNP-HIG'.
    perform bdc_field       using 'CAUFVD-EQUNR'
                                  '10000009'.
    perform bdc_field       using 'AFVGD-LTXA1'
                                  'abc'.
    perform bdc_field       using 'AFVGD-INDET'
                                  '1'.
    perform bdc_field       using 'AFVGD-ARBPL'
                                  'RTN_VELR'.
    perform bdc_field       using 'AFVGD-WERKS'
                                  '460A'.
    perform bdc_field       using 'AFVGD-STEUS'
                                  'PMIN'.
    perform bdc_field       using 'AFVGD-ARBEH'
                                  'H'.
    perform bdc_field       using 'AFVGD-DAUNE'
                                  'H'.
    perform bdc_transaction using 'IW31'.
    perform close_group.
    after executing it has two options.one is for call transactioin and other is for with session.Now i want to do the uploading from text file.Please guide me how to achieve that and what should be the order of fields in the text file.I am just a beginner.I know how to do that with LSMW bt trying BDc first time for creating PM orders

    You can use class "cl_gui_frontend_services". First you must select file with "file_open_dialog" method and the you can upload file with "gui_upload" method into internal table. Here is a sample: (I didn't try the code but I'm sure you can get it working, there are lots of sample codes about that. You can also search FM "GUI_UPLOAD").
    REPORT  zreport.
    DATA:
    gv_subrc TYPE sysubrc,
    gv_result TYPE abap_bool,
    gt_data_tab type table of zstruc.
    PARAMETERS: p_fname LIKE rlgrap-filename.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_fname.
        PERFORM file_open_dialog USING space space space space
                            CHANGING p_fname gv_action gv_subrc.
    START-OF-SELECTION.
    PERFORM gui_upload TABLES gt_data_tab
                     USING p_fname  CHANGING gv_subrc.
    *** FORMS ***
    FORM file_open_dialog USING pv_window_title
                                pv_default_extension
                                pv_default_filename
                                pv_initial_directory
                       CHANGING pv_filename
                                pv_user_action
                                pv_subrc.
      DATA:
      lt_file_table TYPE filetable,
      lv_rc         TYPE i,
      lv_initial_directory TYPE string.
      IF pv_initial_directory IS INITIAL.
        PERFORM get_desktop_directory CHANGING lv_initial_directory.
      ELSE.
        lv_initial_directory = pv_initial_directory.
      ENDIF.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        EXPORTING
          window_title            = pv_window_title
          default_extension       = pv_default_extension
          default_filename        = pv_default_filename
    *     file_filter             =
    *     with_encoding           =
          initial_directory       = lv_initial_directory
    *     multiselection          =
        CHANGING
          file_table              = lt_file_table
          rc                      = lv_rc
          user_action             = pv_user_action
    *     file_encoding           =
        EXCEPTIONS
          file_open_dialog_failed = 1
          cntl_error              = 2
          error_no_gui            = 3
          not_supported_by_gui    = 4
          OTHERS                  = 5
      pv_subrc = sy-subrc.
      IF pv_subrc EQ 0.
        READ TABLE lt_file_table INTO pv_filename INDEX 1.
      ENDIF.
    ENDFORM.
    FORM gui_upload TABLES pt_data_tab
                     USING pv_filename
                  CHANGING pv_subrc    TYPE sysubrc.
      DATA:
      lt_data_tab TYPE TABLE OF string,
      lv_filename TYPE string.
      lv_filename = pv_filename.
      CALL METHOD cl_gui_frontend_services=>gui_upload
        EXPORTING
          filename                = lv_filename
          filetype                = 'ASC'
         has_field_separator     = 'X'
    *     header_length           = 0
    *     read_by_line            = 'X'
    *     dat_mode                = SPACE
    *     codepage                = SPACE
    *     ignore_cerr             = ABAP_TRUE
    *     replacement             = '#'
    *     virus_scan_profile      =
    *     show_transfer_status    = 'X'
    *   IMPORTING
    *     filelength              =
    *     header                  =
        CHANGING
          data_tab                = lt_data_tab
        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
          not_supported_by_gui    = 17
          error_no_gui            = 18
          OTHERS                  = 19
      pv_subrc = sy-subrc.
      IF pv_subrc EQ 0.
        pt_data_tab[] = lt_data_tab[].
      ENDIF.
    ENDFORM.

  • Msg of type 'S' in BDC program and same msg of type 'A'

    We have to upload data for ABZON transaction of assets. When we use LSMW with recording method and try to upload say 3 records. All teh records are updated successfully but the batch input session log says last two records with a message of type 'A' "leave transaction is not possible in batch input"
    But when we upload the same data with BDC program with call transaction then teh log shows same message with type 'S'.
    what could be the reason for this?
    Though data gets uploaded successfully the 'A' message is being displayed in LSMW batch input log.
    if anyone has encountered a similar problem pls let us know how to resolve this asap.
    Thanks,
    Simmi

    hi,
    one crucial point I remember by using enjoy tcodes for bdc is the change of field bukrs.
    you must create one bdc-map for each company - program sth like this:
        LOOP AT itab.
          AT NEW bukrs.
            IF bk ne itab-bukrs.                    "not for 1st bk
              PERFORM open_btci_group USING map '00000000' 'X'.
              ADD 1 TO cnt.
              PERFORM bdc_dynpro      USING 'SAPLSPO4' '0300'.
              PERFORM bdc_field       USING 'BDC_OKCODE' '=FURT'.
              zeile = '01'.
              PERFORM bdc_field_loop USING  zeile 'SVALD-VALUE' itab-bukrs.
            ENDIF.
          ENDAT.
    hope that helps

  • BDC program for Other Goods receipts

    Hi all,
    I need BDC program for Other goods receipts,
    I have data in excel like material, batch id, qty, actual width, length, plant etc. i want to upload this in one short based on the movement type.
    Thanks in advance.
    Shankar

    Hi MP Shankar,
    This is a sample BDC program .Use the format to develop your own BDC program.First record your trasnaction and use that recorded program here.Pass your filename here.
    SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
    PARAMETERS: p_ifile TYPE dxfile-filename.
    SELECTION-SCREEN END OF BLOCK b1.
    SELECTION-SCREEN BEGIN OF BLOCK b3 WITH FRAME TITLE text-002.
    PARAMETERS: p_sess RADIOBUTTON GROUP g3                  "create session
                       DEFAULT 'X' USER-COMMAND bdc,
                p_ctu  RADIOBUTTON GROUP g3.                 "call transaction
    SELECTION-SCREEN END OF BLOCK b3.
    DATA : BEGIN OF itab OCCURS 0,
           str TYPE string,
           END OF itab,
           l_file TYPE string,
           t_bdcdata TYPE STANDARD TABLE OF bdcdata,
           wa_bdcdata LIKE LINE OF t_bdcdata.
    AT SELECTION SCREEN ON VALUE REQUEST
    Value request for the filename.
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_ifile.
      PERFORM help_input_file.
    START-OF-SELECTION.
      CLEAR l_file.
      l_file = p_ifile.
      CALL FUNCTION 'GUI_UPLOAD'
        EXPORTING
          filename                = l_file
          filetype                = 'ASC'
        TABLES
          data_tab                = itab
        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.
    *Start new session
      IF p_sess = 'X'.
        PERFORM bdc_open.
      ENDIF.
      LOOP AT itab.
        PERFORM creat_batch_input.
        PERFORM bdc_insert.
        IF p_ctu = 'X'.
          CALL TRANSACTION 'SE38'  USING t_bdcdata  MODE 'A'.
        ENDIF.
      ENDLOOP.
      IF p_sess = 'X'.
        PERFORM bdc_close .
      ENDIF.
    *&      Form  bdc_open
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_open .
      CALL FUNCTION 'BDC_OPEN_GROUP'
        EXPORTING
          client              = sy-mandt
          group               = 'ZMUK'
          user                = sy-uname
        EXCEPTIONS
          client_invalid      = 1
          destination_invalid = 2
          group_invalid       = 3
          group_is_locked     = 4
          holddate_invalid    = 5
          internal_error      = 6
          queue_error         = 7
          running             = 8
          system_lock_error   = 9
          user_invalid        = 10
          OTHERS              = 11.
    ENDFORM.                    " bdc_open
    *&      Form  creat_batch_input
          text
    -->  p1        text
    <--  p2        text
    FORM creat_batch_input .
    use your own recorded program here.
      PERFORM bdc_dynpro      USING 'SAPLWBABAP' '0100'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=STRT'.
      PERFORM bdc_field       USING 'RS38M-PROGRAMM'
                                    itab-str.
      PERFORM bdc_field       USING 'RS38M-FUNC_EDIT'
                                    'X'.
      PERFORM bdc_dynpro      USING 'SAPLSLVC_FULLSCREEN' '0500'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=&F03'.
      PERFORM bdc_dynpro      USING 'SAPLWBABAP' '0100'.
      PERFORM bdc_field       USING 'BDC_OKCODE'
                                    '=BACK'.
      PERFORM bdc_field       USING 'RS38M-PROGRAMM'
                                    itab-str.
      PERFORM bdc_field       USING 'RS38M-FUNC_EDIT'
                                    'X'.
    ENDFORM.                    " creat_batch_input
    *&      Form  bdc_insert
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_insert .
      CALL FUNCTION 'BDC_INSERT'
        EXPORTING
          tcode            = 'SE38'
        TABLES
          dynprotab        = t_bdcdata
        EXCEPTIONS
          internal_error   = 1
          not_open         = 2
          queue_error      = 3
          tcode_invalid    = 4
          printing_invalid = 5
          posting_invalid  = 6
          OTHERS           = 7.
    ENDFORM.                    " bdc_insert
    *&      Form  bdc_dynpro
          text
         -->P_0168   text
         -->P_0169   text
    FORM bdc_dynpro  USING p_program TYPE any
                           p_dynpro  TYPE any.
      CLEAR wa_bdcdata.
      wa_bdcdata-program  = p_program.
      wa_bdcdata-dynpro   = p_dynpro.
      wa_bdcdata-dynbegin = 'X'.
      APPEND wa_bdcdata TO t_bdcdata.
    ENDFORM.                    " bdc_dynpro
    *&      Form  bdc_field
          text
         -->P_0179   text
         -->P_0180   text
    FORM bdc_field  USING   p_fnam TYPE any
                            p_fval TYPE any.
      CLEAR wa_bdcdata.
      wa_bdcdata-fnam = p_fnam.
      wa_bdcdata-fval = p_fval.
      CONDENSE wa_bdcdata-fval.
      APPEND wa_bdcdata TO t_bdcdata.
    ENDFORM.                    " bdc_field
    *&      Form  bdc_close
          text
    -->  p1        text
    <--  p2        text
    FORM bdc_close .
      CALL FUNCTION 'BDC_CLOSE_GROUP'
        EXCEPTIONS
          not_open    = 1
          queue_error = 2
          OTHERS      = 3.
    ENDFORM.                    " bdc_close
    *&      Form  help_input_file
          text
    -->  p1        text
    <--  p2        text
    FORM help_input_file .
      DATA:  lt_file_table TYPE filetable,
             la_file_table LIKE LINE OF lt_file_table,
             l_rc TYPE i,
             l_pcdsn TYPE cffile-filename.
      REFRESH lt_file_table.
      CLEAR la_file_table.
      CALL METHOD cl_gui_frontend_services=>file_open_dialog
        CHANGING
          file_table = lt_file_table
          rc         = l_rc.
      READ TABLE lt_file_table INTO la_file_table INDEX 1.
      l_pcdsn = la_file_table-filename.
      MOVE l_pcdsn TO p_ifile.
    ENDFORM.                    " help_input_file

  • BDC Program for posting FI document

    Hi everyone!
    Anyone out there already made a BDC program for posting FI documents with this concept:
    User will upload a spreadsheet file with the line items per row
    User will input which TCODE user will use for posting
    BDC program will then post the document using the line items in the spreadsheet file
    I need to make a BDC program with that concept but having a hard time to think of a good algorithm to make my program very flexible.
    Thanks!

    you can use batch input program RFBIBL00 to pasrk document. Please check these links for more information.
    http://help.sap.com/printdocu/core/Print46c/en/data/pdf/CAGTFADM/CAGTFADM-FI.pdf
    http://help.sap.com/printdocu/core/print46b/en/data/en/pdf/CAGTFADM-FI.pdf
    Have a processing routine defined for the specific Idocs that come into SAP.
    So, as and when the idocs are in, the routine triggers and you can codeappropriately in the routine for parking the idocs.
    Check these threads
    BAPI For Parking FI Document
    Post FI Parked Documents
    You can use message type INVOIC, IDoc Type INVOIC01/02 with process code INVF (FM IDOC_INPUT_INVOIC_FI) for FBV1 transaction.
    See if there are any BAPI/FMs for parking an FI document.
    1.. Use INVOIC01 IDOC with INVF process code (This works for Vendor Line Items only). I read the documentation somewhere that, this would work even if the line items are > 999
    2.. BAPI_ACC_INVOICE_RECEIPT_POST (This works for Vendor Line Items only)
    3.. BAPI_ACC_DOCUMENT_POST (Tax jurisdiction allocation not calculated properly)
    4.. BAPI_ACC_GL_POSTING_POST (No tax line items allowed for this BAPI)

  • XK99 lsmw or BDC program to copy vendors doesn´t update db records

    Hello people
    I am facing a requirement to copy a list of existing vendors into about 10 new company codes. Vendors all exist in the "main" company code, so I figured it would be a good idea to use the XK99 transaction as a basis for a mass upload via lsmw or bdc program.
    So
    So I performed a recording and applied my logic in lsmw, ran the batch input folder in SM35, seemingly without errors. But to my srprise I saw that no database records had been created in the LFB1 table.
    So I tried to incorporate the recording into a bdc program that uses call transaction, but the same thing happens. The batch input seems to be running OK, but no changes are actually made to db....
    So I was wondering what could I be doing wrong? I notice one strange thing though. After carrying out the selections in XK99 manually, one needs to mark columns to be transfered and then push the ´Perform mass update´ button and THEN click save. However, when in recording mode, one may click save directly, and no error is given and the recording ends.
    However, the select columns operation, if I try to do it during recording, doesnt seem to get captured....
    Any ideas of what I might be doing wrong here?
    Regards, Jorgen
    T    XK99                                 
    SAPMMSDL    0200    X                                                                                                                                                                                                                                                                               
                                                              BDC_OKCODE    =NEXT
                                                             BDC_SUBSCR    SAPMMSDL                                1000SUBTAB
                                                             BDC_CURSOR    MASSTABS-TABTXT(02)
                                                              MASSTABS-MARK(02)    X
    SAPLMASS_SEL_DIALOG    0100    X                                                                                                                                                                                                                                                                               
                                                              BDC_OKCODE    =NEW
                                                             BDC_SUBSCR    SAPLMASS_SEL_DIALOG                     0200SUB_ALL
                                                             BDC_SUBSCR    SAPLMASSFREESELECTIONS                  1000SUB_SEL
                                                              BDC_CURSOR    MASSFREESEL-LOW(01)
                                                             MASSFREESEL-LOW(01)    300011
    SAPLMASS_SEL_DIALOG    0100    X                                                                                                                                                                                                                                                                               
                                                              BDC_OKCODE    /00
                                                             BDC_SUBSCR    SAPLMASS_SEL_DIALOG                     0400SUB_ALL
                                                             BDC_SUBSCR    SAPLMASSFREESELECTIONS                  1000SUB_SEL
                                                              MASSFREESEL-LOW(01)    300011
                                                             MASSFREESEL-LOW(02)    7010
                                                             BDC_SUBSCR    SAPLMASSFREESELECTIONS                  2000SUB_PARA
                                                              BDC_CURSOR    MASSFREESEL_P-LOW(02)
                                                             MASSFREESEL_P-LOW(01)    300011
                                                             MASSFREESEL_P-LOW(02)    7000
    SAPLMASS_SEL_DIALOG    0100    X                                                                                                                                                                                                                                                                               
                                                              BDC_OKCODE    =CRET
                                                             BDC_SUBSCR    SAPLMASS_SEL_DIALOG                     0400SUB_ALL
                                                             BDC_SUBSCR    SAPLMASSFREESELECTIONS                  1000SUB_SEL
                                                              BDC_CURSOR    MASSFREESEL-LOW(01)
                                                             BDC_SUBSCR    SAPLMASSFREESELECTIONS                  2000SUB_PARA
    SAPLMASSINTERFACE    0200    X                                                                                                                                                                                                                                                                               
                                                              BDC_OKCODE    =SAVE
                                                             BDC_SUBSCR    SAPLMASSINTERFACE                       0202FIELDS
                                                             BDC_SUBSCR    SAPLMASSINTERFACE                       0210SUB_HEAD
                                                              BDC_CURSOR    HEADER_STRUC-FIELD2-VALUE-LEFT(01)
                                                             BDC_SUBSCR    SAPLMASSINTERFACE                       0212SUB_DATA

    Hello,
    first of all Transaction XK99 is more helpful in case of vendor change, not really creation.
    It was also intended to cover mass maintenance so it is used instead of LSMW or any other BDC custom program.
    I would say that you can go either with LSMW or CALL TRANSACTION custom program, but you should base your recording on XK/FK01 transactions.
    Regards,
    Grzegorz

  • Issue with BDC program used for FBZ5 (Check Print)

    Hi all,
    I am having one requirement in Check printing. as per that i have made one Z program which will accept multiple Payment documents. I am passing selected accounting documents to BDC routine for Transaction FBZ5. (As in FBZ5 we can take a print for one Payment document not for multiple)
    We can have 3 scenarios in FBZ5
    1. Fresh Check printing (First time check printing)
    2. Old Check (printing for same Check no)
    3. New Check (After voiding older check)
    Category 1 and 2 are working fine but i am facing problem in category 3.
    For Category 3 : BDC Screen flow is like this
    A. Tcode FBZ5 Start program: SAPMFCHK Screen: 750 --> Click on 'Print'
    B. Program: SAPLSPO2 Screen: 0100  --> Here specify option 'New Check'
    C. Program: SAPMFCHK Screen: 0700
        - This program belongs to new Tcode FCH7
        - Here we have to give Void Reason code
    Now issue with Category 3:
    While executing BDC in online and background mode my control is terminating at step C mentioned above
    Troubleshooting:
    I have debugged standard program of FBZ5
    1. in Include MFCHKFD0 we can see call to Tcode FCH7  (PERFORM AUFRUF_FCH7.)
    2. in form AUFRUF_FCH7 i found code related to BDC
       also there one statement is getting triggered -->   CALL TRANSACTION 'FCH7' USING BDC MODE 'A'.
    So there is a BDC call inside my Z BDC program, so is this a reason why my program is not working for above scenario ?
    Or can't we handle above scenario in a way mentioned above?

    Hi Sandra,
    I was trying to upload customer master in fd01 using bdc. The screens were different while recording. So could not perform the upload. Thenone screen was skipped so that the bdc was working fine and the data was uploaded.
    This is the flow of the recording.
    'SAPMF02D' '0105'.
    SAPMF02D' '7105'
    SAPMF02D' '0111
    SAPMF02D' '0120
    SAPMF02D' '0130
    SAPMF02D' '0210
    SAPMF02D' '0215
    SAPMF02D' '0220'
    SAPMF02D' '0230'
    SAPMF02D' '0610
    After the second screen was deleted the bdc worked fine.

  • Problem with creating BDC program

    Hi All,
    I was trying to create a BDC program for transaction SE63 (language translation). I am doing it for text modules translation. For this, screen contains two fields, one is source language and another is target language and both are input disabled. We can input entries only through F4 help.
    Now the problem is while doing recording through transaction SHDB, it is not recognizing the F4 help and so i am not able to make any entry in that through BDC. Since field is input disabled so I can not make the entries directly.
    Can anyone please help me, how to make entries in this type of field through BDC?
    Regards,
    Akhil

    Thanks Keshav for your valueble reply but this function module is giving me error saying go to SE63 for translation. Can you mull over any other option and suggest me the same.

  • How to create a BDC program for given recording.

    i have to create a BDC program for uploading a file.
    currently i am using call function
      CALL FUNCTION 'F4_FILENAME'

    just check out the code below  it  is  for  updating two transactions
                           types Declaration                      *
    types: begin of t_tab1 ,
                vendor(10),
                material(18),
                pur_org(4),
                wglif(18),
          end of t_tab1.
                  Data Declaration                                 *
    data : begin of it_tab5 occurs 0,
              vendor(10),
              material(18),
             end of it_tab5.
    **DATA : BEGIN OF IT_TAB6 OCCURS 0,
             VENDOR(10),
             MATERIAL(18),
            END OF IT_TAB6.
    data: it_tab1 type standard table of t_tab1 with header line.
    data: wa_tab1 type t_tab1.
    data: wa_tab2 type t_tab1.
    data: it_tab3 like bdcdata occurs 0 with header line.
    data: it_tab4 like bdcdata occurs 0 with header line.
    data: it_tab2 type table of bdcmsgcoll with header line.
    data: d_file_name like ibipparms-path,
          d_file_name1 type string.
                       Start-of-selection                        *
    start-of-selection.
    FM for finding the flat file
      call function 'F4_FILENAME'
    EXPORTING
      PROGRAM_NAME        = SYST-CPROG
      DYNPRO_NUMBER       = SYST-DYNNR
      FIELD_NAME          = ' '
       importing
         file_name           = d_file_name.
      d_file_name1 = d_file_name.
    ******FM for uploading data from flat file into internal table
      call function 'GUI_UPLOAD'
        exporting
          filename                      = d_file_name1
         filetype                      = 'ASC'
      HAS_FIELD_SEPARATOR           = ' '
      HEADER_LENGTH                 = 0
      READ_BY_LINE                  = 'X'
      DAT_MODE                      = ' '
      CODEPAGE                      = ' '
      IGNORE_CERR                   = ABAP_TRUE
      REPLACEMENT                   = '#'
      CHECK_BOM                     = ' '
    IMPORTING
      FILELENGTH                    =
      HEADER                        =
        tables
          data_tab                      = it_tab5
    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.
                     End-of-selection                         *
    end-of-selection.
      sort it_tab5 by vendor.
      loop at it_tab5.
        perform bdc_dynpro using 'SAPLBG00'  0101 .
        perform bdc_field using 'BDC_OKCODE' '/00' .
        perform bdc_dynpro using 'SAPLBG00'  1000 .
        perform bdc_field using 'BDC_OKCODE' '=BUCH' .
        perform bdc_field using 'BDC_SUBSCR'
        'SAPLBG00                                1101KOPF_1000'.
        perform bdc_field using 'GBGMK-GAART' '2' .
        perform bdc_field using 'GBGMK-GAERB' 'X' .
        perform bdc_field using 'BDC_SUBSCR'
          'SAPLBG00                          1103TAB_SUB_1000'.
        perform bdc_field using 'BDC_CURSOR' 'GBGMP-LSTNR(01)' .
        perform bdc_field using 'GBGMP-LSTNR(01)' it_tab5-material .
       call transaction 'BGM1' using it_tab3 mode 'E' messages into it_tab2
        refresh it_tab3.
        wa_tab1-pur_org = 'ABCP'.
        loop at it_tab2.
        endloop.
        perform bdc_dynpro using 'SAPMM06I'  0100 .
        perform bdc_field using 'BDC_CURSOR' 'EINE-EKORG' .
        perform bdc_field using 'BDC_OKCODE' '/00' .
        perform bdc_field using 'EINA-LIFNR' it_tab5-vendor .
        perform bdc_field using 'EINA-MATNR' it_tab5-material .
        perform bdc_field using 'EINE-EKORG' wa_tab1-pur_org .
        perform bdc_field using 'RM06I-NORMB' 'X' .
        perform bdc_dynpro using 'SAPMM06I'  0101 .
        perform bdc_field using 'BDC_CURSOR' 'EINA-WGLIF' .
        perform bdc_field using 'BDC_OKCODE' '=BU' .
        perform bdc_field using 'EINA-WGLIF' it_tab2-msgv1 .
        call transaction 'ME12' using it_tab3 mode 'E'.
        refresh it_tab3.
        refresh it_tab2.
      endloop.
    *&      Form  BDC_DYNPRO
         Start new screen
         -->P_FNAM  text
         -->P_FVAL  text
    form bdc_dynpro  using   program
                             dynpro.
      clear it_tab3.
      it_tab3-program  = program.
      it_tab3-dynpro   = dynpro.
      it_tab3-dynbegin = 'X'.
      append it_tab3.
    endform.                    " BDC_DYNPRO
    *&      Form  BDC_FIELD
       Insert field
         -->P_FNAM  text
         -->P_FVAL  text
    form bdc_field  using    fnam
                             fval.
      clear it_tab3.
      it_tab3-fnam = fnam.
      it_tab3-fval = fval.
      append it_tab3.
    endform.                    " BDC_FIELD
    <REMOVED BY MODERATOR>
    Edited by: Alvaro Tejada Galindo on Apr 14, 2008 6:20 PM

  • Recording TCode for BDC program

    Hi ALL,
    I have a problem in recording GS01 tcode.
    I have to a table control in GS01 tcode.
    After some rows again i need to update the data.
    How can i record this and write BDC program for the same.

    Hi
    To uplaod the data using the table control,if number of line are more then screen.
    Then use the P+ in u r code.
                let assume that u can see 10 rows on screen.once the count reachs the 10 then do P+ then
    new line will come and after P+ clear u r counter.

  • Help with scheduling a program to record from the internet

    Recently, I received a message on my tv about a new feature for scheduling programs to be recorded from the internet.  So now I'm wondering how you do it.  Which website do you go to?  I've been to verizon.com and verizon.central.net and did not see anything for it.  I have also called customer service but they are having "issues" with their systems.  Can somebody please help?
    All I am trying to do is schedule a program to record at home from my desk at work...
    Solved!
    Go to Solution.

    You should be able to do it from here: http://www36.verizon.com/fiostv/web/Default.aspx. However, remember you must have the Home Media DVR to be able to use it.
    Justin
    Verizon FiOS TV, Internet, and phone
    IMG 1.6.0, Build 06.89
    Keller, TX

Maybe you are looking for