Search on this Website

Friday, September 14, 2007

BDC Sample Program

*&---------------------------------------------------------------------*
*& Report ZPROG65_11 *
*& *
*&---------------------------------------------------------------------*
REPORT zprog65_11 .
TABLES : lfa1.

TYPES : BEGIN OF ven ,
lifnr LIKE rf02k-lifnr,
bukrs LIKE rf02k-bukrs ,
ekorg LIKE rf02k-ekorg,
ktokk LIKE rf02k-ktokk,
name1 LIKE lfa1-name1,
sortl LIKE lfa1-sortl,
land1 LIKE lfa1-land1,
spars LIKE lfa1-spras,
akont LIKE lfb1-akont,
fdgrv LIKE lfb1-fdgrv,
waers LIKE lfm1-waers,
anred LIKE lfa1-anred ,
END OF ven .



DATA : t_ven TYPE TABLE OF ven WITH HEADER LINE ,
t_bdc LIKE TABLE OF bdcdata WITH HEADER LINE .

DATA : v_file TYPE string ,
v_temp TYPE i ,
v_lifnr(10) TYPE n,
v_hdate LIKE sy-datum.

DATA : c_tcode LIKE sy-tcode ."value 'XK01'.
PARAMETERS : p_file(30) DEFAULT 'c:\vendor1_11.txt',
p_group LIKE apqi-groupid.

START-OF-SELECTION .


MOVE p_file TO v_file .
PERFORM file_upload TABLES t_ven USING v_file .

v_hdate = sy-datum - 1.

CALL FUNCTION 'BDC_OPEN_GROUP'
EXPORTING
client = sy-mandt
* DEST = FILLER8
group = p_group
holddate = v_hdate
keep = 'X'
user = sy-uname
*
* IMPORTING
* QID =
EXCEPTIONS
client_invalid = 1
destination_invalid = 2
group_invalid = 3
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.

LOOP AT t_ven .

clear lfa1.
v_temp = 0.

MOVE t_ven-lifnr TO v_lifnr.

SELECT SINGLE * FROM lfa1 INTO lfa1 WHERE lifnr =
v_lifnr.

IF sy-subrc = 0.
WRITE :/ 'found'.
v_temp = 1.
else.
write: / 'not found'.
ENDIF.


IF v_temp = 0.

c_tcode = 'xk01'.

PERFORM fill_ddc_table .

ELSEIF v_temp = 1.
c_tcode = 'xk02'.

PERFORM fill_bdc_table .

ENDIF.

CALL FUNCTION 'BDC_INSERT'
EXPORTING
tcode = c_tcode
TABLES
dynprotab = t_bdc
EXCEPTIONS
internal_error = 1
OTHERS = 7.

REFRESH t_bdc .
ENDLOOP .

CALL FUNCTION 'BDC_CLOSE_GROUP'
EXCEPTIONS
not_open = 1
queue_error = 2
OTHERS = 3.

*&---------------------------------------------------------------------*
*& Form file_upload
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* -->P_T_VEN text
* -->P_V_FILE text
*----------------------------------------------------------------------*
FORM file_upload TABLES p_tven STRUCTURE t_ven

USING p_vfile.


CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = p_vfile
filetype = 'ASC'
has_field_separator = 'X'
* IMPORTING
* FILELENGTH =
* HEADER =
TABLES
data_tab = p_tven
EXCEPTIONS
file_open_error = 1
file_read_error = 2
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. " file_upload
*&---------------------------------------------------------------------*
*& Form FILL_DDC_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_ddc_table .


* SCREN 100
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0100'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'RF02K-LIFNR'.
t_bdc-fval = t_ven-lifnr .
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'RF02K-BUKRS'.
t_bdc-fval = t_ven-bukrs.
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'RF02K-EKORG'.
t_bdc-fval = t_ven-ekorg.
APPEND t_bdc. CLEAR t_bdc.


t_bdc-fnam = 'RF02K-KTOKK'.
t_bdc-fval = t_ven-ktokk.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.

* 110
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0110'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'LFA1-NAME1'.
t_bdc-fval = t_ven-name1 .
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'LFA1-SORTL'.
t_bdc-fval = t_ven-sortl.
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'LFA1-LAND1'.
t_bdc-fval = t_ven-land1.
APPEND t_bdc. CLEAR t_bdc.


t_bdc-fnam = 'LFA1-SPRAS'.
t_bdc-fval = t_ven-spars.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.
* 120
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0120'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.



* 130
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0130'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '=ENTR'.
APPEND t_bdc. CLEAR t_bdc.



* 210
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0210'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.


t_bdc-fnam = 'LFB1-AKONT'.
t_bdc-fval = t_ven-akont .
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'LFB1-FDGRV'.
t_bdc-fval = t_ven-fdgrv.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.


* 215
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0215'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.


* 220
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0220'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.


* 310
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0310'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.


t_bdc-fnam = 'LFM1-WAERS'.
t_bdc-fval = t_ven-waers .
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.


* 320
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0320'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '=UPDA'.
APPEND t_bdc. CLEAR t_bdc.




ENDFORM. "FILL_DDC_TABLE


" FILL_DDC_TABLE
*&---------------------------------------------------------------------*
*& Form FILL_BDC_TABLE
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM fill_bdc_table .

* SCREN 101
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0101'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'RF02K-LIFNR'.
t_bdc-fval = t_ven-lifnr .
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'RF02K-BUKRS'.
t_bdc-fval = t_ven-bukrs.
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'RF02K-EKORG'.
t_bdc-fval = t_ven-ekorg.
APPEND t_bdc. CLEAR t_bdc.


t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.

* 110
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0110'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'lfa1-anred'.
t_bdc-fval = t_ven-anred .
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'LFA1-NAME1'.
t_bdc-fval = t_ven-name1 .
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'LFA1-SORTL'.
t_bdc-fval = t_ven-sortl.
APPEND t_bdc. CLEAR t_bdc.

t_bdc-fnam = 'LFA1-LAND1'.
t_bdc-fval = t_ven-land1.
APPEND t_bdc. CLEAR t_bdc.


t_bdc-fnam = 'LFA1-SPRAS'.
t_bdc-fval = t_ven-spars.
APPEND t_bdc. CLEAR t_bdc.



t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '/00'.
APPEND t_bdc. CLEAR t_bdc.

* 300
t_bdc-program = 'SAPMF02K'.
t_bdc-dynpro = '0300'.
t_bdc-dynbegin = 'X'.
APPEND t_bdc. CLEAR t_bdc.


t_bdc-fnam = 'BDC_OKCODE'.
t_bdc-fval = '=YES'.
APPEND t_bdc. CLEAR t_bdc.


ENDFORM. " FILL_BDC_TABLE

No comments: