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

BDC recording for transaction 'ME11' by call transaction

Former Member
0 Kudos

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..

1 ACCEPTED SOLUTION

Former Member
0 Kudos

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

6 REPLIES 6

Former Member
0 Kudos

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

Former Member
0 Kudos

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

Former Member
0 Kudos

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.

Former Member
0 Kudos

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. "

Former Member
0 Kudos

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.

Former Member
0 Kudos

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