12-18-2007 3:10 AM
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,
12-18-2007 3:46 AM
12-18-2007 3:46 AM
12-18-2007 4:06 AM
12-18-2007 3:11 PM
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
12-18-2007 9:16 PM
03-15-2011 5:12 AM
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.