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 program to change to vendor master

Former Member
0 Kudos

Can anyone give me a sample BDC code to change vendor master MK02

After entering the Vendor number and selecting the checkboxes Address and Control in the first screen if i take enter it should go to the second screen which contains all fields of address to modify but My code is giving the screen 0110 which contains only few fields,even though i prepared BDC table with 0111 screen, but the actual screen to be called is 0111.

Can anyone send the sample code or give me the solution

Thanks,

1 ACCEPTED SOLUTION

Former Member
0 Kudos

Is this an address screen?

Rob

5 REPLIES 5

Former Member
0 Kudos

Is this an address screen?

Rob

0 Kudos

YES

0 Kudos

Your problem is likely that there is a hidden field on the first screen of FK02 (USE_ZAV) which must be checked. This causes the transaction to use Central Address Management. This is done automatically when the program is run on-line, but must be done explicitly in batch input. So your call to the first screen should look something like:

    perform dynpro
      tables bdcdata
      using:
     'X' 'SAPMF02K'     '0108',         "Change Vendor: Initial Screen
      ' ' 'RF02K-LIFNR'              hr_data-lifnr,
      ' ' 'RF02K-BUKRS'             'UOFT',
      ' ' 'RF02K-D0110'             'X',
      ' ' 'RF02K-D0120'             'X',
      ' ' 'RF02K-D0130'             'X',
      ' ' 'RF02K-D0210'             'X',
      ' ' 'RF02K-D0310'             'X',
      ' ' 'WRF02K-D0320'            'X',
      ' ' 'USE_ZAV'                 'X'.               "<====

Rob

Edited by: Rob Burbank on Dec 18, 2007 3:29 PM

I changed the code to try to make it more compatable with MK02

0 Kudos

Simply you can use FM VENDOR_UPDATE Instead of BDC

Thanks

Seshu

Former Member
0 Kudos

DATA : lv_filename TYPE STRING,

V_TEXTOUT TYPE T100-TEXT,

v_tcode TYPE tcode.

DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.

DATA: MESSTAB TYPE STANDARD TABLE OF BDCMSGCOLL ,

MESSTAB1 TYPE BDCMSGCOLL.

DATA : ITAB_FILETAB TYPE FILETABLE.

CONSTANTS: C_TCODE(4) TYPE C VALUE 'AS02', " Assets master data Change - Transaction

C_N TYPE C VALUE 'N', " Not to display screens while call transaction

C_E TYPE C VALUE 'E', " Error

C_S TYPE C VALUE 'S'.

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

PARAMETERS : P_FILE TYPE STRING OBLIGATORY,

P_APPL TYPE FILENAME-FILEEXTERN DEFAULT '/usr/sap/tmp/test_asset.txt' OBLIGATORY LOWER CASE,

P_ALV TYPE C AS CHECKBOX.

SELECTION-SCREEN END OF BLOCK B2.

AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.

PERFORM GET_FILENAME_UPLOAD_FILE.

AT SELECTION-SCREEN ON P_FILE.

PERFORM CHECK_FILE_EXISTS.

START-OF-SELECTION.

PERFORM READ_FILE .

PERFORM FILL_TAB.

PERFORM GET_FINAL_RECORD.

PERFORM BDC_REC.

FORM CHECK_FILE_EXISTS.

DATA: V_FILENAME TYPE STRING,

V_RET TYPE C.

V_FILENAME = P_FILE .

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_EXIST

EXPORTING

FILE = V_FILENAME

RECEIVING

RESULT = V_RET

EXCEPTIONS

CNTL_ERROR = 1

ERROR_NO_GUI = 2

WRONG_PARAMETER = 3

NOT_SUPPORTED_BY_GUI = 4

OTHERS = 5.

IF NOT ( SY-SUBRC = 0 AND V_RET = 'X' ).

MESSAGE E000(100) WITH 'file does not exits '.

ENDIF.

ENDFORM.

&----


*& Form GET_FILENAME_UPLOAD_FILE

&----


  • select the file on presentation server using F4 option.

&----


FORM GET_FILENAME_UPLOAD_FILE.

DATA: V_TITLE TYPE STRING,

V_RC TYPE I.

V_TITLE = 'WINDOW ' .

CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_OPEN_DIALOG

EXPORTING

WINDOW_TITLE = V_TITLE

DEFAULT_FILENAME = '*.txt'

INITIAL_DIRECTORY = 'C:\'

MULTISELECTION = ' ' "No multiple selection

CHANGING

FILE_TABLE = ITAB_FILETAB

RC = V_RC.

READ TABLE ITAB_FILETAB INTO P_file INDEX 1.

ENDFORM.

FORM READ_FILE .

lv_filename = p_file.

CALL FUNCTION 'GUI_UPLOAD'

EXPORTING

FILENAME = lv_filename

FILETYPE = 'ASC'

HAS_FIELD_SEPARATOR = 'X'

HEADER_LENGTH = 0

READ_BY_LINE = 'X'

DAT_MODE = ' '

CODEPAGE = ' '

  • IGNORE_CERR = ABAP_TRUE

REPLACEMENT = '#'

CHECK_BOM = ' '

  • VIRUS_SCAN_PROFILE =

  • NO_AUTH_CHECK = ' '

  • IMPORTING

  • FILELENGTH =

  • HEADER =

TABLES

DATA_TAB = ITAB_FILE

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.

ENDFORM.

FORM BDC_REC .

DATA user_date TYPE sy-datum.

DATA : DATE_FORMAT(10) TYPE C,

  • TEMP(2) TYPE C,

ROW TYPE STRING ,

ROW1 TYPE STRING.

LOOP at ITAB_FINAL INTO WA_FINAL .

CONCATENATE WA_FINAL-afabg6(4) WA_FINAL-afabg0(2) WA_FINAL-afabg+3(2) INTO USER_DATE .

WRITE USER_DATE TO DATE_FORMAT.

PERFORM BDC_DYNPRO USING 'SAPLAIST' '0100'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'ANLA-ANLN1'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'/00'.

PERFORM BDC_FIELD USING 'ANLA-ANLN1'

WA_FINAL-ANLN1 . "'158'.

PERFORM BDC_FIELD USING 'ANLA-ANLN2'

WA_FINAL-ANLN2 . "'0'.

PERFORM BDC_FIELD USING 'ANLA-BUKRS'

WA_FINAL-BUKRS . "'2600'.

PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=TAB08'.

PERFORM BDC_FIELD USING 'BDC_CURSOR'

'ANLA-TXT50'.

PERFORM BDC_FIELD USING 'ANLA-TXT50'

'PUMP/ATTACK REAGENT METERING'.

PERFORM BDC_FIELD USING 'ANLH-ANLHTXT'

'PUMP/ATTACK REAGENT METERING'.

PERFORM BDC_FIELD USING 'ANLA-INVNR'

'DB1LA607251CNWF'.

PERFORM BDC_FIELD USING 'ANLA-MENGE'

'1'.

PERFORM BDC_FIELD USING 'ANLA-MEINS'

'EA'.

PERFORM BDC_FIELD USING 'ANLA-INKEN'

'X'.

  • PERFORM BDC_FIELD USING 'ANLA-AKTIV'

  • '07/01/1984'.

PERFORM BDC_DYNPRO USING 'SAPLAIST' '1000'.

PERFORM BDC_FIELD USING 'BDC_OKCODE'

'=BUCH'.

  • CLEAR TEMP.

*TEMP = WA_FINAL-LINENO.

CONCATENATE 'ANLB-WBIND(' WA_FINAL-LINENO ')' INTO ROW1 .

PERFORM BDC_FIELD USING 'BDC_CURSOR'

ROW1 ."'ANLB-WBIND(06)'.

CONCATENATE 'ANLB-AFABG(' WA_FINAL-LINENO ')' INTO row.

PERFORM BDC_FIELD USING row

DATE_FORMAT . "wa_file-afabg . "'12/01/1985'.

CALL TRANSACTION C_TCODE USING BDCDATA

MODE C_N

UPDATE C_S

MESSAGES INTO MESSTAB.

IF SY-SUBRC EQ 0.

READ TABLE MESSTAB INTO MESSTAB1 WITH KEY MSGTYP = C_S.

IF SY-SUBRC EQ 0.

  • Builds actual message based on info returned from Call transaction

CALL FUNCTION 'MESSAGE_TEXT_BUILD'

EXPORTING

MSGID = MESSTAB1-MSGID

MSGNR = MESSTAB1-MSGNR

MSGV1 = MESSTAB1-MSGV1

MSGV2 = MESSTAB1-MSGV2

MSGV3 = MESSTAB1-MSGV3

MSGV4 = MESSTAB1-MSGV4

IMPORTING

MESSAGE_TEXT_OUTPUT = V_TEXTOUT.

  • Build Success table ready for output

MOVE-CORRESPONDING WA_FINAL TO WA_SUCCESS.

WA_SUCCESS-MESS = V_TEXTOUT.

APPEND WA_SUCCESS TO ITAB_SUCCESS.

CLEAR: WA_SUCCESS .

ENDIF.

ELSE.

FORM BDC_DYNPRO USING PROGRAM DYNPRO.

CLEAR BDCDATA.

BDCDATA-PROGRAM = PROGRAM.

BDCDATA-DYNPRO = DYNPRO.

BDCDATA-DYNBEGIN = 'X'.

APPEND BDCDATA.

ENDFORM.

----


  • Insert field *

----


FORM BDC_FIELD USING FNAM FVAL.

  • IF FVAL <> NODATA.

CLEAR BDCDATA.

BDCDATA-FNAM = FNAM.

BDCDATA-FVAL = FVAL.

APPEND BDCDATA.

  • ENDIF.

ENDFORM.