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

BDC issue

Former Member
0 Likes
635

Hi All,

we have written a bdc for material upload for Tcode MMZ1. all works fine till the Accounting screen where we have to give the valuation type as D. (MBEW-BWTTY). and the Costing Screen we have to manually give enter to cross these screens and then save it. How can i overcome this issue.

Points vl be rewarded for all suggestions.

This is the Program - (Problem area is in bold)

&----


*& Report Z_GMM

*&

&----


*&

*&

&----


REPORT Z_GMM.

TABLES : RMMG1,MAKT,MARA,MVKE,MG03STEUER,MARC,MPOP,MBEW,RM03M.

DATA: BEGIN OF IT_MATE OCCURS 1,

MATNR(16) TYPE C,

MBRSH(1) TYPE C,

MTART(4) TYPE C,

WERKS(4) TYPE C,

LGORT(4) TYPE C,

BWTAR(10) TYPE C,

VKORG(4) TYPE C,

VTWEG(2) TYPE C,

REF_MATNR(16) TYPE C,

REF_WERKS(4) TYPE C,

REF_LGORT(4) TYPE C,

REF_BWTAR(10) TYPE C,

REF_VKORG(4) TYPE C,

REF_VTWEG(2) TYPE C,

VERSG(1) TYPE C,

KTGRM(2) TYPE C,

MTPOS(4) TYPE C,

PRMOD(1) TYPE C,

TAXKM(1) TYPE C,

KLART(3) TYPE C,

BWTTY(1) TYPE C,

END OF IT_MATE.

DATA: BEGIN OF IT_MATE_ERR OCCURS 1,

MATNR(16) TYPE C,

MBRSH(1) TYPE C,

MTART(4) TYPE C,

WERKS(4) TYPE C,

LGORT(4) TYPE C,

BWTAR(10) TYPE C,

VKORG(4) TYPE C,

VTWEG(2) TYPE C,

REF_MATNR(16) TYPE C,

REF_WERKS(4) TYPE C,

REF_LGORT(4) TYPE C,

REF_BWTAR(10) TYPE C,

REF_VKORG(4) TYPE C,

REF_VTWEG(2) TYPE C,

VERSG(1) TYPE C,

KTGRM(2) TYPE C,

MTPOS(4) TYPE C,

PRMOD(1) TYPE C,

TAXKM(1) TYPE C,

KLART(3) TYPE C,

BWTTY(1) TYPE C,

MSG(100) TYPE C,

END OF IT_MATE_ERR.

DATA: IT_BDCDATA LIKE BDCDATA OCCURS 1 WITH HEADER LINE.

DATA: IT_MSGS LIKE BDCMSGCOLL OCCURS 1 WITH HEADER LINE.

DATA: V_MSG(100) TYPE C,

V_MODE,

V1(20) TYPE C.

DATA: V_FILE TYPE STRING.

SELECTION-SCREEN: BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-H01.

PARAMETERS: P_FILE LIKE RLGRAP-FILENAME OBLIGATORY DEFAULT 'C:\'.

SELECTION-SCREEN: BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-H02.

PARAMETERS: P_ALL RADIOBUTTON GROUP G1,

P_NO RADIOBUTTON GROUP G1 DEFAULT 'X',

P_ERR RADIOBUTTON GROUP G1.

SELECTION-SCREEN: END OF BLOCK B2.

SELECTION-SCREEN: END OF BLOCK B1.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

PERFORM SHOW_OPEN_DIALOG.

START-OF-SELECTION.

PERFORM READ_DATA.

IF NOT IT_MATE[] IS INITIAL.

IF P_ALL = 'X'.

V_MODE = 'A'.

ELSEIF P_NO = 'X'.

V_MODE = 'N'.

ELSE.

V_MODE = 'E'.

ENDIF.

PERFORM POPULATE_BDCDATA.

ENDIF.

END-OF-SELECTION.

IF NOT IT_MATE_ERR[] IS INITIAL.

PERFORM DOWNLOAD_ERR_REC.

ENDIF.

&----


*& Form SHOW_OPEN_DIALOG

&----


  • text

----


FORM SHOW_OPEN_DIALOG .

CALL FUNCTION 'F4_FILENAME'

EXPORTING

PROGRAM_NAME = SYST-CPROG

DYNPRO_NUMBER = SYST-DYNNR

FIELD_NAME = ' '

IMPORTING

FILE_NAME = P_FILE.

ENDFORM. " SHOW_OPEN_DIALOG

&----


*& Form READ_DATA

&----


  • text

----


FORM READ_DATA.

DATA: V_FILE TYPE STRING.

V_FILE = P_FILE.

IF NOT V_FILE IS INITIAL.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = V_FILE

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

TABLES

DATA_TAB = IT_MATE

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.

ENDIF.

ENDFORM. " READ_DATA

&----


*& Form POPULATE_BDCDATA

&----


  • text

----


FORM POPULATE_BDCDATA .

LOOP AT IT_MATE.

perform bdc_dynpro using 'SAPMM03M' '0060'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_field using 'RM03M-MATNR' IT_MATE-MATNR.

perform bdc_field using 'RM03M-MBRSH' IT_MATE-MBRSH.

perform bdc_field using 'RM03M-MTART' IT_MATE-MTART.

perform bdc_field using 'RM03M-REF_MATNR' IT_MATE-REF_MATNR.

  • perform bdc_dynpro using 'SAPMM03M' '0070'.

  • perform bdc_field using 'BDC_OKCODE' '=SELA'.

perform bdc_dynpro using 'SAPMM03M' '0070'.

perform bdc_field using 'BDC_OKCODE' '=SCHL'.

perform bdc_field using 'RM03M-KZAU1(01)' 'X'.

perform bdc_field using 'RM03M-KZAU1(03)' 'X'.

perform bdc_field using 'RM03M-KZAU1(04)' 'X'.

perform bdc_field using 'RM03M-KZAU1(05)' 'X'.

perform bdc_field using 'RM03M-KZAU1(06)' 'X'.

perform bdc_field using 'RM03M-KZAU1(08)' 'X'.

perform bdc_field using 'RM03M-KZAU1(09)' 'X'.

perform bdc_field using 'RM03M-KZAU1(11)' 'X'.

perform bdc_field using 'RM03M-KZAU1(12)' 'X'.

perform bdc_field using 'RM03M-KZAU2(02)' 'X'.

perform bdc_field using 'RM03M-KZAU2(05)' 'X'.

perform bdc_field using 'RM03M-KZAU2(06)' 'X'.

perform bdc_dynpro using 'SAPMM03M' '0080'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_field using 'RM03M-WERKS' IT_MATE-WERKS.

perform bdc_field using 'RM03M-LGORT' IT_MATE-LGORT.

perform bdc_field using 'RM03M-VKORG' IT_MATE-VKORG.

perform bdc_field using 'RM03M-VTWEG' IT_MATE-VTWEG.

perform bdc_field using 'RM03M-REF_WERKS' IT_MATE-REF_WERKS.

perform bdc_field using 'RM03M-REF_LGORT' IT_MATE-REF_LGORT.

perform bdc_field using 'RM03M-REF_VKORG' IT_MATE-REF_VKORG.

perform bdc_field using 'RM03M-REF_VTWEG' IT_MATE-REF_VTWEG.

perform bdc_dynpro using 'SAPMM03M' '0210'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0215'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0216'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0212'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0248'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0249'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0252'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0260'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0270'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0275'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0280'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_dynpro using 'SAPMM03M' '0290'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_field using 'BDC_OKCODE' '=ENTR'.

perform bdc_dynpro using 'SAPLSPO1' '0300'.

perform bdc_field using 'BDC_OKCODE' '=YES'.

CALL TRANSACTION 'MMZ1' USING IT_BDCDATA

MODE V_MODE

UPDATE 'S' "SYNCHRONOUS

MESSAGES INTO IT_MSGS.

IF SY-SUBRC = 0.

PERFORM HANDLE_SUCCESS_RECS.

REFRESH IT_MSGS.

CLEAR: V_MSG.

ELSE.

PERFORM HANDLE_ERROR_RECS.

REFRESH IT_MSGS.

CLEAR: V_MSG,

IT_MATE_ERR.

ENDIF.

CLEAR: IT_BDCDATA,

IT_BDCDATA[].

ENDLOOP.

ENDFORM. " POPULATE_BDCDATA

&----


*& Form BDC_DYNPRO

&----


  • text

----


  • -->PROGRAM text

  • -->DYNPRO text

----


FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR IT_BDCDATA.

IT_BDCDATA-PROGRAM = PROGRAM.

IT_BDCDATA-DYNPRO = DYNPRO.

IT_BDCDATA-DYNBEGIN = 'X'.

APPEND IT_BDCDATA.

ENDFORM. "BDC_DYNPRO

&----


*& Form BDC_FIELD

&----


  • text

----


  • -->FNAM text

  • -->FVAL text

----


FORM BDC_FIELD USING FNAM FVAL.

IF NOT FVAL IS INITIAL.

CLEAR IT_BDCDATA.

IT_BDCDATA-FNAM = FNAM.

IT_BDCDATA-FVAL = FVAL.

APPEND IT_BDCDATA.

ENDIF.

ENDFORM. "BDC_FIELD

&----


*& Form HANDLE_SUCCESS_RECS

&----


  • text

----


FORM HANDLE_SUCCESS_RECS .

READ TABLE IT_MSGS WITH KEY MSGTYP = 'S'.

IF SY-SUBRC = 0.

*--Formatting the message

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = IT_MSGS-MSGID

LANG = SY-LANGU

NO = IT_MSGS-MSGNR

V1 = IT_MSGS-MSGV1

V2 = IT_MSGS-MSGV2

V3 = IT_MSGS-MSGV3

V4 = IT_MSGS-MSGV4

IMPORTING

MSG = V_MSG

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

IF SY-SUBRC = 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

WRITE:/ V_MSG.

CLEAR: V_MSG,

IT_MSGS.

ENDIF.

ENDIF.

ENDFORM. " HANDLE_SUCCESS_RECS

*&----


*& Form HANDLE_ERROR_RECS

*&----


*text

*----


FORM HANDLE_ERROR_RECS .

READ TABLE IT_MSGS WITH KEY MSGTYP = 'E'.

IF SY-SUBRC = 0.

*--Formatting the message

CALL FUNCTION 'FORMAT_MESSAGE'

EXPORTING

ID = IT_MSGS-MSGID

LANG = SY-LANGU

NO = IT_MSGS-MSGNR

V1 = IT_MSGS-MSGV1

V2 = IT_MSGS-MSGV2

V3 = IT_MSGS-MSGV3

V4 = IT_MSGS-MSGV4

IMPORTING

MSG = IT_MATE_ERR-MSG

EXCEPTIONS

NOT_FOUND = 1

OTHERS = 2.

IF SY-SUBRC = 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

MOVE-CORRESPONDING IT_MATE TO IT_MATE_ERR.

APPEND IT_MATE_ERR.

DELETE IT_MATE INDEX SY-TABIX.

CLEAR IT_MATE_ERR.

ENDIF.

ENDIF.

ENDFORM. " HANDLE_ERROR_RECS

*&----


*& Form DOWNLOAD_ERR_REC

*&----


*text

*----


FORM DOWNLOAD_ERR_REC .

V1 = P_FILE(3).

SHIFT P_FILE BY 3 PLACES LEFT.

CONCATENATE 'ERR_' P_FILE INTO P_FILE.

CONCATENATE V1 P_FILE INTO P_FILE.

V_FILE = P_FILE.

CALL FUNCTION 'GUI_DOWNLOAD'

EXPORTING

  • BIN_FILESIZE =

FILENAME = 'C:\ERR_MMZ1.XLS'

FILETYPE = 'ASC'

  • APPEND = ' '

WRITE_FIELD_SEPARATOR = 'X'

  • HEADER = '00'

  • TRUNC_TRAILING_BLANKS = ' '

  • WRITE_LF = 'X'

  • COL_SELECT = ' '

  • COL_SELECT_MASK = ' '

  • DAT_MODE = ' '

  • CONFIRM_OVERWRITE = ' '

  • NO_AUTH_CHECK = ' '

  • CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

  • REPLACEMENT = '#'

  • WRITE_BOM = ' '

  • TRUNC_TRAILING_BLANKS_EOL = 'X'

  • WK1_N_FORMAT = ' '

  • WK1_N_SIZE = ' '

  • WK1_T_FORMAT = ' '

  • WK1_T_SIZE = ' '

  • WRITE_EOL = ABAP_TRUE

  • IMPORTING

  • FILELENGTH =

TABLES

DATA_TAB = IT_MATE_ERR

  • FIELDNAMES =

EXCEPTIONS

FILE_WRITE_ERROR = 1

NO_BATCH = 2

GUI_REFUSE_FILETRANSFER = 3

INVALID_TYPE = 4

NO_AUTHORITY = 5

UNKNOWN_ERROR = 6

HEADER_NOT_ALLOWED = 7

SEPARATOR_NOT_ALLOWED = 8

FILESIZE_NOT_ALLOWED = 9

HEADER_TOO_LONG = 10

DP_ERROR_CREATE = 11

DP_ERROR_SEND = 12

DP_ERROR_WRITE = 13

UNKNOWN_DP_ERROR = 14

ACCESS_DENIED = 15

DP_OUT_OF_MEMORY = 16

DISK_FULL = 17

DP_TIMEOUT = 18

FILE_NOT_FOUND = 19

DATAPROVIDER_EXCEPTION = 20

CONTROL_FLUSH_ERROR = 21

OTHERS = 22.

IF SY-SUBRC = 0.

MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO

WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.

ELSE.

MESSAGE I000(Z00) WITH 'Error File downloaded at' V_FILE.

ENDIF.

ENDFORM. " DOWNLOAD_ERR_REC

3 REPLIES 3
Read only

Former Member
0 Likes
554

Hi,

don't use batch input to create materials.

You should prefer "direct input" standard programm RMDATIND by LSMW

or the BAPI : BAPI_MATERIAL_SAVEDATA

Regards.

David

Read only

Former Member
0 Likes
554

we have written a bdc for material upload for Tcode MMZ1. all works fine till the Accounting screen where we have to give the valuation type as D. (MBEW-BWTTY). and the Costing Screen we have to manually give enter to cross these screens and then save it. How can i overcome this issue.

Hi,

Do re recording for the same process by adding valuation type as D, cross the screen by hitting the enter and save it. after completioin of recording.

ex. 1st screen ->2nd screen->3rd Manula operation screen->4thscreen(where u r saving)

pick the 3 screen number and bdc-okcode for particuler action. place the same code in between before and after the screen.

ex. 1st screen ->2nd screen->3rd add peice of code of that action->4thscreen(where u r saving)

Read only

Former Member
0 Likes
554

Hi,

In your code just try and replace the lines

perform bdc_dynpro using 'SAPMM03M' '0290'.

perform bdc_field using 'BDC_OKCODE' '/00'.

perform bdc_field using 'BDC_OKCODE' '=ENTR'.

perform bdc_dynpro using 'SAPLSPO1' '0300'.

perform bdc_field using 'BDC_OKCODE' '=YES'.

with this code and see if it helps.Please add you itab fields at necessary places in this code.

perform bdc_dynpro using 'SAPMM03M' '0290'.

perform bdc_field using 'BDC_CURSOR'

'MARA-MEINS'.

perform bdc_field using 'BDC_OKCODE'

'/00'.

perform bdc_field using 'MARA-MEINS'

record-MEINS_014.

perform bdc_field using 'MBEW-EKALR'

record-EKALR_015.

perform bdc_field using 'MARC-LOSGR'

record-LOSGR_016.

perform bdc_field using 'MBEW-BKLAS'

record-BKLAS_017.

perform bdc_field using 'MBEW-BWTTY'

record-BWTTY_018.

perform bdc_field using 'MBEW-VPRSV'

record-VPRSV_019.

perform bdc_field using 'MBEW-PEINH'

record-PEINH_020.

perform bdc_dynpro using 'SAPLSPO1' '0300'.

perform bdc_field using 'BDC_OKCODE'

'=YES'.

Reward points if useful

Regards,

Bhavin P Shah