09-11-2007 11:47 AM
Hi,
I need to fill all the fields while recording & need to pick those fields which are mandatory for the flat file structure for transaction 'ME11'.
So, i want to know the mandatory fields of transaction 'ME11'.
Show the sample code for BDC recording for transaction 'ME11'.
thanks..
09-11-2007 11:55 AM
you can refer to this piece of code - this one updates the info records -
*&---------------------------------------------------------------------*
*& Form SUB_UPDATE_SINGLE
*&---------------------------------------------------------------------*
* Update individual Info record
*----------------------------------------------------------------------*
* <--C_DATA Work Area of T_DATA
*----------------------------------------------------------------------*
FORM SUB_UPDATE_SINGLE CHANGING C_DATA LIKE T_DATA.
DATA : T_BDC TYPE BDCDATA OCCURS 0 WITH HEADER LINE,
T_MSG TYPE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : L_DATAB TYPE CHAR10,
L_DATBI TYPE CHAR10,
L_KPEIN TYPE CHAR5,
L_PRICE TYPE CHAR16.
* First Screen - Enter Material,Vendor,Purch Org,Plant & Inf Rec Cat.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPMM06I'.
T_BDC-DYNPRO = '0100'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINA-LIFNR'.
T_BDC-FVAL = C_DATA-LIFNR.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINA-MATNR'.
T_BDC-FVAL = C_DATA-MATNR.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINE-EKORG'.
T_BDC-FVAL = P_EKORG.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINE-WERKS'.
T_BDC-FVAL = P_WERKS.
APPEND T_BDC.
CLEAR T_BDC.
CASE P_ESOKZ.
WHEN '0'.
T_BDC-FNAM = 'RM06I-NORMB'. "Standard
WHEN '2'.
T_BDC-FNAM = 'RM06I-KONSI'. "Consignment
WHEN '3'.
T_BDC-FNAM = 'RM06I-LOHNB'. "Subcontracting
WHEN 'P'.
T_BDC-FNAM = 'RM06I-PIPEL'. "Pipeline
ENDCASE.
T_BDC-FVAL = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '/00'.
APPEND T_BDC.
* Second Screen - Go To Purch Org Data 2.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPMM06I'.
T_BDC-DYNPRO = '0101'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '=EIN2'.
APPEND T_BDC.
* Write the Quotation # now.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPMM06I'.
T_BDC-DYNPRO = '0105'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINE-ANGNR'.
T_BDC-FVAL = C_DATA-ANGNR.
APPEND T_BDC.
* Press Conditions.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '=KO'.
APPEND T_BDC.
* Handle the Popup Box - Press New Validity Period.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPLV14A'.
T_BDC-DYNPRO = '0102'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '=NEWD'.
APPEND T_BDC.
* Fill up the Validity Period and Price etc.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPMV13A'.
T_BDC-DYNPRO = '0201'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR : T_BDC, L_DATAB.
WRITE : T_DATA-FRDAT TO L_DATAB.
T_BDC-FNAM = 'RV13A-DATAB'.
T_BDC-FVAL = L_DATAB.
APPEND T_BDC.
CLEAR : T_BDC, L_DATBI.
WRITE : T_DATA-TODAT TO L_DATBI.
T_BDC-FNAM = 'RV13A-DATBI'.
T_BDC-FVAL = L_DATBI.
APPEND T_BDC.
CLEAR: T_BDC, L_PRICE.
MOVE C_DATA-PRICE TO L_PRICE.
T_BDC-FNAM = 'KONP-KBETR(01)'.
T_BDC-FVAL = L_PRICE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'KONP-KONWA(01)'.
T_BDC-FVAL = C_DATA-WAERS.
APPEND T_BDC.
CLEAR : T_BDC, L_KPEIN.
MOVE C_DATA-KPEIN TO L_KPEIN.
T_BDC-FNAM = 'KONP-KPEIN(01)'.
T_BDC-FVAL = L_KPEIN.
APPEND T_BDC.
* Press Save.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '=SICH'.
APPEND T_BDC.
* Call ME12 for updation work.
CALL TRANSACTION 'ME12' USING T_BDC
MODE P_MODE
MESSAGES INTO T_MSG.
* Process the BDC Messages.
READ TABLE T_MSG WITH KEY MSGTYP = 'S'
MSGID = '06'
MSGNR = '335'.
IF SY-SUBRC EQ 0.
* Successfully updated.
PERFORM SUB_BUILD_MESSAGE USING T_MSG
CHANGING C_DATA-STTXT.
C_DATA-ICON = ICON_LED_GREEN.
ELSE.
* Look for the Error message - report Error.
READ TABLE T_MSG WITH KEY MSGTYP = 'E'.
IF SY-SUBRC EQ 0.
PERFORM SUB_BUILD_MESSAGE USING T_MSG
CHANGING C_DATA-STTXT.
C_DATA-ICON = ICON_LED_RED.
ELSE.
C_DATA-ICON = ICON_LED_RED.
C_DATA-STTXT = 'UPDATION FAILED.'.
ENDIF.
ENDIF.
ENDFORM. " SUB_UPDATE_SINGLE
09-11-2007 11:51 AM
Hi,
Goto Recording SHDB transaction code, and give the Transaction code ME11 and do the recording, then Save the Recording after comeplting the Recording, then from SHDB transaction code, select the Recording and press Program button, then give the Program name and press Source code, then it will generate the source code for you .....
Regards
Sudheer
09-11-2007 11:55 AM
you can refer to this piece of code - this one updates the info records -
*&---------------------------------------------------------------------*
*& Form SUB_UPDATE_SINGLE
*&---------------------------------------------------------------------*
* Update individual Info record
*----------------------------------------------------------------------*
* <--C_DATA Work Area of T_DATA
*----------------------------------------------------------------------*
FORM SUB_UPDATE_SINGLE CHANGING C_DATA LIKE T_DATA.
DATA : T_BDC TYPE BDCDATA OCCURS 0 WITH HEADER LINE,
T_MSG TYPE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : L_DATAB TYPE CHAR10,
L_DATBI TYPE CHAR10,
L_KPEIN TYPE CHAR5,
L_PRICE TYPE CHAR16.
* First Screen - Enter Material,Vendor,Purch Org,Plant & Inf Rec Cat.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPMM06I'.
T_BDC-DYNPRO = '0100'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINA-LIFNR'.
T_BDC-FVAL = C_DATA-LIFNR.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINA-MATNR'.
T_BDC-FVAL = C_DATA-MATNR.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINE-EKORG'.
T_BDC-FVAL = P_EKORG.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINE-WERKS'.
T_BDC-FVAL = P_WERKS.
APPEND T_BDC.
CLEAR T_BDC.
CASE P_ESOKZ.
WHEN '0'.
T_BDC-FNAM = 'RM06I-NORMB'. "Standard
WHEN '2'.
T_BDC-FNAM = 'RM06I-KONSI'. "Consignment
WHEN '3'.
T_BDC-FNAM = 'RM06I-LOHNB'. "Subcontracting
WHEN 'P'.
T_BDC-FNAM = 'RM06I-PIPEL'. "Pipeline
ENDCASE.
T_BDC-FVAL = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '/00'.
APPEND T_BDC.
* Second Screen - Go To Purch Org Data 2.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPMM06I'.
T_BDC-DYNPRO = '0101'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '=EIN2'.
APPEND T_BDC.
* Write the Quotation # now.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPMM06I'.
T_BDC-DYNPRO = '0105'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'EINE-ANGNR'.
T_BDC-FVAL = C_DATA-ANGNR.
APPEND T_BDC.
* Press Conditions.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '=KO'.
APPEND T_BDC.
* Handle the Popup Box - Press New Validity Period.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPLV14A'.
T_BDC-DYNPRO = '0102'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '=NEWD'.
APPEND T_BDC.
* Fill up the Validity Period and Price etc.
CLEAR T_BDC.
T_BDC-PROGRAM = 'SAPMV13A'.
T_BDC-DYNPRO = '0201'.
T_BDC-DYNBEGIN = TRUE.
APPEND T_BDC.
CLEAR : T_BDC, L_DATAB.
WRITE : T_DATA-FRDAT TO L_DATAB.
T_BDC-FNAM = 'RV13A-DATAB'.
T_BDC-FVAL = L_DATAB.
APPEND T_BDC.
CLEAR : T_BDC, L_DATBI.
WRITE : T_DATA-TODAT TO L_DATBI.
T_BDC-FNAM = 'RV13A-DATBI'.
T_BDC-FVAL = L_DATBI.
APPEND T_BDC.
CLEAR: T_BDC, L_PRICE.
MOVE C_DATA-PRICE TO L_PRICE.
T_BDC-FNAM = 'KONP-KBETR(01)'.
T_BDC-FVAL = L_PRICE.
APPEND T_BDC.
CLEAR T_BDC.
T_BDC-FNAM = 'KONP-KONWA(01)'.
T_BDC-FVAL = C_DATA-WAERS.
APPEND T_BDC.
CLEAR : T_BDC, L_KPEIN.
MOVE C_DATA-KPEIN TO L_KPEIN.
T_BDC-FNAM = 'KONP-KPEIN(01)'.
T_BDC-FVAL = L_KPEIN.
APPEND T_BDC.
* Press Save.
CLEAR T_BDC.
T_BDC-FNAM = 'BDC_OKCODE'.
T_BDC-FVAL = '=SICH'.
APPEND T_BDC.
* Call ME12 for updation work.
CALL TRANSACTION 'ME12' USING T_BDC
MODE P_MODE
MESSAGES INTO T_MSG.
* Process the BDC Messages.
READ TABLE T_MSG WITH KEY MSGTYP = 'S'
MSGID = '06'
MSGNR = '335'.
IF SY-SUBRC EQ 0.
* Successfully updated.
PERFORM SUB_BUILD_MESSAGE USING T_MSG
CHANGING C_DATA-STTXT.
C_DATA-ICON = ICON_LED_GREEN.
ELSE.
* Look for the Error message - report Error.
READ TABLE T_MSG WITH KEY MSGTYP = 'E'.
IF SY-SUBRC EQ 0.
PERFORM SUB_BUILD_MESSAGE USING T_MSG
CHANGING C_DATA-STTXT.
C_DATA-ICON = ICON_LED_RED.
ELSE.
C_DATA-ICON = ICON_LED_RED.
C_DATA-STTXT = 'UPDATION FAILED.'.
ENDIF.
ENDIF.
ENDFORM. " SUB_UPDATE_SINGLE
09-11-2007 11:57 AM
Hi,
All mandatory fields wil have tick mark ask your functional guy to sit beside and give proper data for recording then you can record it in SHDB.
Regards,
Bohra.
09-11-2007 11:58 AM
Hi Ankita,
Check the following program.
Reward point if useful...
REPORT zmm0069 NO STANDARD PAGE HEADING
MESSAGE-ID z0
LINE-SIZE 132
LINE-COUNT 65(2).
----
Internal Tables *
----
*Internal table for the purchasing info records fields.
DATA: BEGIN OF i_inforecord OCCURS 0,
matnr(18),
lifnr(10),
uom(3),
ekgrp(3),
planned_time(3),
under_tol(3),
over_tol(3),
qty(10),
price_cat(5),
inco(3),
designation(28),
netpr(13),
scale_qty1(10),
scale_pr1(13),
scale_qty2(10),
scale_pr2(13),
scale_qty3(13),
scale_pr3(10),
scale_qty4(13),
scale_pr4(10),
scale_qty5(13),
scale_pr5(10),
scale_qty6(13),
scale_pr6(10),
scale_qty7(13),
scale_pr7(10),
scale_qty8(13),
scale_pr8(10),
scale_qty9(13),
scale_pr9(10),
scale_qty10(13),
scale_pr10(10),
END OF i_inforecord.
Internal table for Old and New Vendor number
DATA : BEGIN OF i_lfb1 OCCURS 1,
lifnr(10),
altkn(10),
END OF i_lfb1.
Declare internal table for Call Transaction and BDC Session
DATA: i_bdc_table LIKE bdcdata OCCURS 0 WITH HEADER LINE.
----
Global Variables *
----
DATA: g_counter(2) TYPE n,
g_field_name(18) TYPE c,
zc_yes TYPE syftype VALUE 'X'.
----
Selection Screen *
----
SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
PARAMETERS: p_fname1 TYPE localfile .
SELECTION-SCREEN SKIP 1.
SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.
PARAMETERS: p_rloc1 AS CHECKBOX DEFAULT 'X'.
SELECTION-SCREEN BEGIN OF BLOCK c WITH FRAME TITLE text-003.
PARAMETERS p_group(12) OBLIGATORY DEFAULT 'ZPURCHINFO'.
SELECTION-SCREEN END OF BLOCK c.
SELECTION-SCREEN END OF BLOCK b.
SELECTION-SCREEN END OF BLOCK a.
**WRITE the report header
TOP-OF-PAGE.
INCLUDE zheading.
----
Start of selection *
----
START-OF-SELECTION.
Load Input file
PERFORM f_load_input_file.
Create BDC records.
PERFORM create_bdc_records .
&----
*& Form Create_BDC_records
&----
Perform the BDC for the records in the internal table
----
FORM create_bdc_records .
IF NOT i_inforecord[] IS INITIAL.
Open BDC session
PERFORM open_bdc_session.
SELECT lifnr altkn FROM lfb1 INTO TABLE i_lfb1
FOR ALL ENTRIES IN i_inforecord
WHERE altkn = i_inforecord-lifnr.
Sorting the Internal table for better performance
SORT i_lfb1 BY altkn.
LOOP AT i_inforecord.
***Mapping Old Vendor number to the new Vendor number
READ TABLE i_lfb1 WITH KEY altkn = i_inforecord-lifnr BINARY
SEARCH.
IF sy-subrc EQ 0.
i_inforecord-lifnr = i_lfb1-lifnr.
ENDIF.
CLEAR i_bdc_table[].
PERFORM insert_screen_header.
call transaction 'ME11' using i_bdc_table
mode 'A'.
CLEAR i_bdc_table.
ENDLOOP.
CLEAR i_inforecord[].
PERFORM close_bdc_session.
Release the BDC sessions created
PERFORM release_bdc.
ENDIF.
ENDFORM. " open_group
&----
*& Form bdc_dynpro_start
&----
Start the screen for the transfer of fields
----
FORM bdc_dynpro_start USING p_g_program_1
p_g_screen.
CLEAR i_bdc_table.
i_bdc_table-program = p_g_program_1.
i_bdc_table-dynpro = p_g_screen.
i_bdc_table-dynbegin = 'X'.
APPEND i_bdc_table.
ENDFORM. " bdc_dynpro_start_start
&----
*& Form bdc_insert_field
&----
Insert field *
----
FORM bdc_insert_field USING f_name f_value.
IF f_value <> space.
CLEAR i_bdc_table.
i_bdc_table-fnam = f_name.
i_bdc_table-fval = f_value.
APPEND i_bdc_table.
ENDIF.
ENDFORM. "bdc_insert_field
&----
*& Form open_bdc_session
&----
Open a BDC session
----
FORM open_bdc_session .
Open BDC session and create and update records
CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
DEST = FILLER8
group = p_group
HOLDDATE = FILLER8
keep = 'X'
user = sy-uname
RECORD = FILLER1
PROG = SY-CPROG
IMPORTING
QID =
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.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " create_bdc_session
&----
*& Form insert_screen_header
&----
Screen flow for the transfer of fields
----
FORM insert_screen_header .
First Screen 100
PERFORM bdc_dynpro_start USING 'SAPMM06I' '0100'.
PERFORM bdc_insert_field USING:'BDC_CURSOR' 'EINA-LIFNR',
'BDC_OKCODE' '/00',
'EINA-LIFNR' i_inforecord-lifnr,
'EINA-MATNR' i_inforecord-matnr,
'EINE-EKORG' '1000',
'RM06I-NORMB' zc_yes.
****----
Next Screen 101
PERFORM bdc_dynpro_start USING 'SAPMM06I' '0101'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'EINA-MAHN1',
'BDC_OKCODE' '/00',
'EINA-MEINS' i_inforecord-uom.
****----
*Next Screen 102
PERFORM bdc_dynpro_start USING 'SAPMM06I' '0102'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'EINE-INCO2',
'EINE-APLFZ' i_inforecord-planned_time,
'EINE-EKGRP' i_inforecord-ekgrp,
'EINE-NORBM' i_inforecord-qty.
PERFORM bdc_insert USING 'EINE-UEBTK' ' '.
PERFORM bdc_insert_field USING:'EINE-PEINH' i_inforecord-scale_qty1,
'EINE-BPRME' i_inforecord-uom,
'EINE-UNTTO' '5',
'EINE-UEBTO' '25',
'EINE-MEPRF' i_inforecord-price_cat,
'EINE-NETPR' i_inforecord-netpr,
'EINE-INCO1' i_inforecord-inco,
'EINE-INCO2' i_inforecord-designation.
Checking for Scale quantities
IF i_inforecord-scale_qty2 = space.
PERFORM bdc_insert_field USING 'BDC_OKCODE' '=BU'.
PERFORM insert_bdc_new.
ELSE.
PERFORM bdc_insert_field USING 'BDC_OKCODE' '=KO'.
****----
Next Screen 201
PERFORM bdc_dynpro_start USING 'SAPMV13A' '0201'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'RV13A-DATAB',
'BDC_OKCODE' '=PSTF'.
****----
Next Screen 201
PERFORM bdc_dynpro_start USING 'SAPMV13A' '0201'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'KONP-KSCHL(01)',
'BDC_OKCODE' '=PSTF',
'RV130-SELKZ(01)' zc_yes.
****----
LAST SCREEN 303
PERFORM bdc_dynpro_start USING 'SAPMV13A' '0303'.
PERFORM bdc_insert_field USING : 'BDC_CURSOR' 'KONM-KBETR(03)',
'BDC_OKCODE' '=SICH'.
Counter to Loop the Item level entry
g_counter = 0.
PERFORM scale_entry USING i_inforecord-scale_qty2
i_inforecord-scale_pr2.
PERFORM scale_entry USING i_inforecord-scale_qty3
i_inforecord-scale_pr3.
PERFORM scale_entry USING i_inforecord-scale_qty4
i_inforecord-scale_pr4.
PERFORM scale_entry USING i_inforecord-scale_qty5
i_inforecord-scale_pr5.
PERFORM scale_entry USING i_inforecord-scale_qty6
i_inforecord-scale_pr6.
PERFORM scale_entry USING i_inforecord-scale_qty7
i_inforecord-scale_pr7.
PERFORM scale_entry USING i_inforecord-scale_qty8
i_inforecord-scale_pr8.
PERFORM scale_entry USING i_inforecord-scale_qty9
i_inforecord-scale_pr9.
PERFORM scale_entry USING i_inforecord-scale_qty10
i_inforecord-scale_pr10.
PERFORM insert_bdc_new.
ENDIF.
ENDFORM. " insert_screen_header
&----
*& Form insert_bdc
&----
Insert BDC
----
FORM insert_bdc_new .
CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = 'ME11'
POST_LOCAL = NOVBLOCAL
PRINTING = NOPRINT
SIMUBATCH = ' '
CTUPARAMS = ' '
TABLES
dynprotab = i_bdc_table
EXCEPTIONS
internal_error = 1
not_open = 2
queue_error = 3
tcode_invalid = 4
printing_invalid = 5
posting_invalid = 6
OTHERS = 7
.
IF sy-subrc <> 0.
MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
CLEAR i_bdc_table[].
ENDFORM. " insert_bdc
&----
*& Form close_bdc_session
&----
Close the BDC session
----
FORM close_bdc_session .
CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 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. " close_bdc_session
&----
*& Form f_load_input_file
&----
Upload the file
----
FORM f_load_input_file.
Check always Local file for upload
IF p_rloc1 = zc_yes.
CALL FUNCTION 'WS_UPLOAD'
EXPORTING
filename = p_fname1
filetype = 'DAT'
TABLES
data_tab = i_inforecord
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.
STOP.
ENDIF.
ENDIF.
ENDFORM. " f_load_input_file
&----
*& Form release_bdc
&----
Release the session
----
FORM release_bdc.
SUBMIT rsbdcsub WITH mappe EQ p_group
WITH von EQ sy-datum
WITH bis EQ sy-datum
WITH fehler EQ '.'
EXPORTING LIST TO MEMORY
AND RETURN.
ENDFORM. " release_bdc
&----
*& Form scale_entry
&----
Populate the Scale quantities
----
-->P_SCALE_QTY
-->P_SCALE_PRICE
----
FORM scale_entry USING p_scale_qty
p_scale_price.
Increment the Counter
g_counter = g_counter + 1.
IF p_scale_qty <> space.
CONCATENATE 'KONM-KSTBM(' g_counter ')' INTO g_field_name.
PERFORM bdc_insert_field USING g_field_name p_scale_qty.
CONCATENATE 'KONM-KBETR(' g_counter ')' INTO g_field_name.
PERFORM bdc_insert_field USING g_field_name p_scale_price.
ENDIF.
ENDFORM.
&----
*& Form bdc_insert
&----
To uncheck the Unlimited (UEBTK)
----
FORM bdc_insert USING f_name f_value.
CLEAR i_bdc_table.
i_bdc_table-fnam = f_name.
i_bdc_table-fval = f_value.
APPEND i_bdc_table.
ENDFORM. "
09-11-2007 12:03 PM
Hi Ankita..
The mandatory fields in particular screen are marked by 'Correct tick mark' on the area where the particular value is to be entered.
Regards,
DJ.
11-08-2007 3:18 AM
Hi Experts,
I have no idea why my codes doesn't call the =BACK ok_code for certain entries uploaded via text file template. This is suppose to be called after Gross Price screen being displayed. Below is my codes. This is to create purchasing info record. Please help....Thanks.
----
FORM CREATE_INFO_REC *
----
Set up batch input and call transaction ME11. *
----
FORM CREATE_INFO_REC. "For Standard Info Record
data: l_datab like sy-datum,
l_datbi like sy-datum.
REFRESH BDCDATA.
PERFORM BDC_DYNPRO USING 'SAPMM06I' '0100'. "First screen in ME11 (Create)
PERFORM BDC_FIELD USING 'EINA-LIFNR' ITAB-LIFNR.
PERFORM BDC_FIELD USING 'EINA-MATNR' ITAB-MATNR.
PERFORM BDC_FIELD USING 'EINE-EKORG' ITAB-EKORG.
PERFORM BDC_FIELD USING 'EINE-WERKS' ITAB-WERKS.
PERFORM BDC_FIELD USING 'RM06I-NORMB' 'X'.
PERFORM BDC_DYNPRO USING 'SAPMM06I' '0101'. "2nd screen - General Data View
MOVE ITAB-MATNR TO W_MAT.
MOVE W_MAT TO MAT18.
MOVE ITAB-LIFNR TO WLIFNR1.
MOVE WLIFNR1 TO W_LIFNR.
SELECT * FROM EINA WHERE MATNR = MAT18 AND
LIFNR = W_LIFNR.
ENDSELECT.
IF SY-DBCNT > 0.
IF EINA-IDNLF <> ITAB-IDNLF.
WRITE:/ ITAB-LIFNR, ITAB-MATNR, ITAB-IDNLF,
'Vendor Product Differs', EINA-IDNLF, 'Not Changed'.
ENDIF.
ELSE.
PERFORM BDC_FIELD USING 'EINA-IDNLF' ITAB-IDNLF. "Vendor Material No field in General Data view
ENDIF.
PERFORM BDC_FIELD USING 'EINA-URZLA' ITAB-URZLA. "Country of Origin
PERFORM BDC_FIELD USING 'EINA-VERKF' ITAB-VERKF. "Sales Person
PERFORM BDC_FIELD USING 'EINA-TELF1' ITAB-TELF1. "Telephone
PERFORM BDC_FIELD USING 'EINA-VABME' ITAB-VABME. "Var. Order Unit
PERFORM BDC_DYNPRO USING 'SAPMM06I' '0102'. "Purchasing Data view - 3rd view
perform bdc_field using 'BDC_CURSOR' itab-NETPR.
PERFORM BDC_FIELD USING 'EINE-APLFZ' ITAB-APLFZ. "Planned Delivery Time in Purchasing Data view
PERFORM BDC_FIELD USING 'EINE-NORBM' ITAB-NORBM. "Standard Qty
PERFORM BDC_FIELD USING 'EINE-KZABS' ITAB-KZABS. "Ackn. reqd.
PERFORM BDC_FIELD USING 'EINE-BSTAE' ITAB-BSTAE. "ConfContrK - Confirmation Control Key
if itab-netpr le 0.
PERFORM BDC_FIELD USING 'EINE-NETPR' '0'. "Net Price
else.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/00'.
PERFORM BDC_FIELD USING 'EINE-NETPR' ITAB-NETPR. "Net Price
endif.
PERFORM BDC_FIELD USING 'EINE-peinh' ITAB-PEINH. "Price Unit
PERFORM BDC_FIELD USING 'EINE-WAERS' ITAB-WAERS. "Currency Key
PERFORM BDC_FIELD USING 'EINE-BPRME' ITAB-BPRME. "Order Price Unit (Beside Net Price field)
PERFORM BDC_FIELD USING 'EINE-MWSKZ' ITAB-MWSKZ. "Tax Code
PERFORM BDC_FIELD USING 'EINE-MEPRF' ITAB-MEPRF. "PR. Date Cat. (in Conditions box)
PERFORM BDC_FIELD USING 'EINE-INCO1' ITAB-INCO1. "Inco term part 1 (small box)
PERFORM BDC_FIELD USING 'EINE-INCO2' ITAB-INCO2. "Inco term part 2 (bigger box)
case sy-ucomm.
when '/00'.
when others.
perform bdc_field using 'BDC_OKCODE' '=KO'.
endcase.
Purch. Organization Data-2
PERFORM BDC_DYNPRO USING 'SAPMM06I' '0105'.
SELECT SINGLE * FROM LFA1 WHERE LIFNR = W_LIFNR.
SELECT lifnr ekorg kalsk
FROM lfm1
INTO CORRESPONDING FIELDS OF TABLE i_lfm1
FOR ALL ENTRIES IN itab
WHERE lifnr EQ wlifnr1
AND ekorg EQ itab-ekorg.
IF sy-subrc EQ 0.
SELECT kalse kalsk kalsm
FROM tmks
INTO CORRESPONDING FIELDS OF TABLE i_tmks
FOR ALL ENTRIES IN i_lfm1
WHERE kalse EQ i_lfm1-ekorg
AND kalsk EQ i_lfm1-kalsk.
ENDIF.
PERFORM f_condtype_check1 USING wlifnr1 itab-ekorg changing l_var l_check.
Condition Type (PB00/P000) "one of the selection must be selected in the Condition Type window
if l_check = 'X'.
IF LFA1-LAND1 = 'JP' and itab-netpr = 0.
PERFORM BDC_DYNPRO USING 'SAPLMEKO' '0501'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'T685-KSCHL(01)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' l_var.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.
else.
PERFORM BDC_DYNPRO USING 'SAPLMEKO' '0501'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'T685-KSCHL(01)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' l_var.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.
PERFORM BDC_DYNPRO USING 'SAPLMEKO' '0501'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'T685-KSCHL(01)'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' l_var.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.
endif.
else. "condition type in text file not the same as determine by the system - so pick the first one
PERFORM BDC_DYNPRO USING 'SAPLMEKO' '0501'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'T685-KSCHL(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.
PERFORM BDC_DYNPRO USING 'SAPLMEKO' '0501'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'T685-KSCHL(01)'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=PICK'.
endif.
Condition validity periods
PERFORM BDC_DYNPRO USING 'SAPLV14A' '0102'. "Will call Select Validity Period window
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/07'.
Condition Supplements
PERFORM BDC_DYNPRO USING 'SAPMV13A' '0201'. "Will call Change Gross Price-Local Condition(P000/PB00):Condition Supplements
PERFORM BDC_FIELD USING 'RV13A-DATAB' sy-datum. "Valid on
PERFORM BDC_FIELD USING 'RV13A-DATBI' '99991231'. "Valid to
perform bdc_field using 'BDC_CURSOR' 'RV13A-DATAB'.
if itab-datab ne space and itab-datbi ne space.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = itab-datab
IMPORTING
OUTPUT = itab-datab.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = itab-datbi
IMPORTING
OUTPUT = itab-datbi.
PERFORM BDC_FIELD USING 'RV13A-DATAB' ITAB-DATAB.
PERFORM BDC_FIELD USING 'RV13A-DATBI' ITAB-DATBI.
else.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = sy-datum
IMPORTING
OUTPUT = l_datab.
CALL FUNCTION 'CONVERSION_EXIT_PDATE_OUTPUT'
EXPORTING
INPUT = '99991231'
IMPORTING
OUTPUT = l_datbi.
PERFORM BDC_FIELD USING 'RV13A-DATAB' l_datab.
PERFORM BDC_FIELD USING 'RV13A-DATBI' l_datbi.
endif.
if itab-netpr le 0.
PERFORM BDC_FIELD USING 'KONP-KBETR(01)' '0'.
else.
PERFORM BDC_FIELD USING 'KONP-KBETR(01)' ITAB-NETPR.
endif.
PERFORM BDC_FIELD USING 'KONP-KONWA(01)' ITAB-WAERS.
PERFORM BDC_FIELD USING 'KONP-KPEIN(01)' ITAB-PEINH.
PERFORM BDC_FIELD USING 'KONP-KMEIN(01)' ITAB-BPRME.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BACK'.
PERFORM BDC_DYNPRO USING 'SAPMM06I' '0102'. "Purchase Org. Data 1
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=TEXT'.
Text Overview
PERFORM BDC_DYNPRO USING 'SAPMM06I' '0103'. "Needed coz to call Text display screen
IF ITAB-LTEP1 NE SPACE.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'RM06I-LTEX2(02)'.
PERFORM BDC_FIELD USING 'RM06I-SELKZ(2)' 'X'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'LANG'.
PERFORM BDC_DYNPRO USING 'SAPLSTXX' '1100'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'TXDE'.
PERFORM BDC_DYNPRO USING 'SAPLSPO1' '0100'.
PERFORM BDC_FIELD USING 'BDC_CURSOR' 'SPOP-OPTION1'.
PERFORM BDC_DYNPRO USING 'SAPLSTXX' '1100'.
ENDIF.
Text Overview (Purchase Order text)
IF ITAB-LTEP1 = '*'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'TXBA'.
PERFORM BDC_DYNPRO USING 'SAPMM06I' '0103'.
ENDIF.
Replace/Overwrite Text (Purchase Order text)
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(2)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(2)' ITAB-LTEP1.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP1 = SPACE OR ITAB-LTEP1 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(2)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP2 NE SPACE AND ITAB-LTEP2 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(3)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(3)' ITAB-LTEP2.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP2 = SPACE OR ITAB-LTEP2 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(3)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP3 NE SPACE AND ITAB-LTEP3 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(4)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(4)' ITAB-LTEP3.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP3 = SPACE OR ITAB-LTEP3 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(4)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP4 NE SPACE AND ITAB-LTEP4 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(5)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(5)' ITAB-LTEP4.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP4 = SPACE OR ITAB-LTEP4 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(5)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP5 NE SPACE AND ITAB-LTEP5 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(6)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(6)' ITAB-LTEP5.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP5 = SPACE OR ITAB-LTEP5 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(6)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP6 NE SPACE AND ITAB-LTEP6 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(7)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(7)' ITAB-LTEP6.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP6 = SPACE OR ITAB-LTEP6 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(7)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP7 NE SPACE AND ITAB-LTEP7 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(8)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(8)' ITAB-LTEP7.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP7 = SPACE OR ITAB-LTEP7 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(8)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP8 NE SPACE AND ITAB-LTEP8 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(9)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(9)' ITAB-LTEP8.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP8 = SPACE OR ITAB-LTEP8 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(9)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP9 NE SPACE AND ITAB-LTEP9 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(10)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(10)' ITAB-LTEP9.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP9 = SPACE OR ITAB-LTEP9 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(10)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP10 NE SPACE AND ITAB-LTEP10 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(11)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(11)' ITAB-LTEP10.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP10 = SPACE OR ITAB-LTEP10 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(11)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP11 NE SPACE AND ITAB-LTEP11 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(12)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(12)' ITAB-LTEP11.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP11 = SPACE OR ITAB-LTEP11 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(12)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP12 NE SPACE AND ITAB-LTEP12 NE '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(13)' '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXLINE(13)' ITAB-LTEP12.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
IF ITAB-LTEP12 = SPACE OR ITAB-LTEP12 = '*'.
PERFORM BDC_FIELD USING 'RSTXT-TXPARGRAPH(13)' '*'.
ENDIF.
ENDIF.
IF ITAB-LTEP1 NE SPACE AND ITAB-LTEP1 NE '*'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' 'TXBA'.
PERFORM BDC_DYNPRO USING 'SAPMM06I' '0103'.
ENDIF.
Save Document
PERFORM BDC_FIELD USING 'BDC_OKCODE' '/11'.
perform bdc_dynpro using 'SAPMV13A' '0201'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=SICH'.
PERFORM BDC_FIELD USING 'BDC_OKCODE' '=BU'.
CALL TRANSACTION 'ME11' USING BDCDATA MODE P_MODE UPDATE 'S'.
ENDFORM. "CREATE_INFO_REC
----
FORM BDC_DYNPRO *
----
Fills in a row of the BDCDATA table for a dynpro. *
----
--> P_PROGRAM *
--> P_DYNPRO *
----
FORM BDC_DYNPRO USING P_PROGRAM P_DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = P_PROGRAM.
BDCDATA-DYNPRO = P_DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO