Professional Documents
Culture Documents
REPORT z409_so_bdc.
*include bdcrecx1.
DATA: bdcdata TYPE TABLE OF bdcdata WITH HEADER LINE,
messtab TYPE TABLE OF bdcmsgcoll WITH HEADER LINE.
DATA: lv_hdr_s TYPE string,
lv_itm_s TYPE string.
DATA: BEGIN OF wa_hdr,
ind(1),
* data element: AUART
auart(004),
* data element: VKORG
vkorg(004),
* data element: VTWEG
vtweg(002),
* data element: SPART
spart(002),
* data element: KUNAG
kunnr(010),
END OF wa_hdr.
DATA: it_hdr LIKE TABLE OF wa_hdr.
DATA: BEGIN OF wa_itm,
ind(1),
* data element: MATNR
mabnr(018),
* data element: KWMENG
kwmeng(019),
* data element: WERKS_EXT
werks(004),
END OF wa_itm.
DATA: it_itm LIKE TABLE OF wa_itm.
*** End generated data section ***
DATA: lv_cnt(2) TYPE n,
lv_cnt_c(2),
lv_fname TYPE string.
PARAMETERS: lv_hdr TYPE ibipparms-path,
lv_itm TYPE ibipparms-path.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR lv_hdr.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'LV_HDR'
IMPORTING
file_name = lv_hdr.
lv_hdr_s = lv_hdr.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR lv_itm.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
field_name = 'LV_ITM'
IMPORTING
file_name = lv_itm.
lv_itm_s = lv_itm.
START-OF-SELECTION.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_hdr_s
filetype = 'ASC'
has_field_separator = '#'
* 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 = it_hdr
* 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.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_itm_s
filetype = 'ASC'
has_field_separator = '#'
* 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 = it_itm
* 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.
LOOP AT it_hdr INTO wa_hdr.
PERFORM bdc_dynpro USING 'SAPMV45A' '0101'.
PERFORM bdc_field USING 'BDC_CURSOR'
'VBAK-VKORG'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'VBAK-AUART'
wa_hdr-auart.
PERFORM bdc_field USING 'VBAK-VKORG'
wa_hdr-vkorg.
PERFORM bdc_field USING 'VBAK-VTWEG'
wa_hdr-vtweg.
PERFORM bdc_field USING 'VBAK-SPART'
wa_hdr-spart.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
PERFORM bdc_field USING 'KUAGV-KUNNR'
wa_hdr-kunnr.
LOOP AT it_itm INTO wa_itm WHERE ind = wa_hdr-ind.
lv_cnt = lv_cnt + 1.
lv_cnt_c = lv_cnt.
CONCATENATE 'RV45A-MABNR(' lv_cnt_c ')' INTO lv_fname.
PERFORM bdc_field USING lv_fname
wa_itm-mabnr.
CONCATENATE 'RV45A-KWMENG(' lv_cnt_c ')' INTO lv_fname.
PERFORM bdc_field USING lv_fname
wa_itm-kwmeng.
CONCATENATE 'RV45A-WERKS(' lv_cnt_c ')' INTO lv_fname.
PERFORM bdc_field USING lv_fname
wa_itm-werks.
PERFORM bdc_dynpro USING 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'/00'.
IF lv_cnt = 5.
lv_cnt = 1.
ENDIF.
ENDLOOP.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
PERFORM bdc_field USING 'BDC_OKCODE'
'=SICH'.
PERFORM bdc_transaction USING 'VA01'.
ENDLOOP.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_006.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_007.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_008.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_009.
*perform bdc_field using 'BDC_CURSOR'
* 'VBAP-WERKS(01)'.
*perform bdc_field using 'RV45A-MABNR(01)'
* record-MABNR_01_010.
*perform bdc_field using 'RV45A-KWMENG(01)'
* record-KWMENG_01_011.
*perform bdc_field using 'VBAP-WERKS(01)'
* record-WERKS_01_012.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_013.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_014.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_015.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_016.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_017.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_018.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_019.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_020.
*perform bdc_field using 'BDC_CURSOR'
* 'VBAP-WERKS(02)'.
*perform bdc_field using 'RV45A-MABNR(02)'
* record-MABNR_02_021.
*perform bdc_field using 'RV45A-KWMENG(02)'
* record-KWMENG_02_022.
*perform bdc_field using 'VBAP-WERKS(02)'
* record-WERKS_02_023.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_024.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_025.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_026.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_027.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_028.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_029.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_030.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_031.
*perform bdc_field using 'BDC_CURSOR'
* 'RV45A-MABNR(02)'.
*perform bdc_field using 'RV45A-MABNR(02)'
* record-MABNR_02_032.
*perform bdc_field using 'RV45A-KWMENG(02)'
* record-KWMENG_02_033.
*perform bdc_field using 'VBAP-WERKS(02)'
* record-WERKS_02_034.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_035.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_036.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_037.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_038.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_039.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_040.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_041.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_042.
*perform bdc_field using 'BDC_CURSOR'
* 'VBAP-WERKS(02)'.
*perform bdc_field using 'RV45A-MABNR(02)'
* record-MABNR_02_043.
*perform bdc_field using 'RV45A-KWMENG(02)'
* record-KWMENG_02_044.
*perform bdc_field using 'VBAP-WERKS(02)'
* record-WERKS_02_045.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_046.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_047.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_048.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_049.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_050.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_051.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_052.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_053.
*perform bdc_field using 'BDC_CURSOR'
* 'VBAP-WERKS(02)'.
*perform bdc_field using 'RV45A-MABNR(02)'
* record-MABNR_02_054.
*perform bdc_field using 'RV45A-KWMENG(02)'
* record-KWMENG_02_055.
*perform bdc_field using 'VBAP-WERKS(02)'
* record-WERKS_02_056.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_057.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_058.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_059.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_060.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_061.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_062.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_063.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_064.
*perform bdc_field using 'BDC_CURSOR'
* 'VBAP-WERKS(02)'.
*perform bdc_field using 'RV45A-MABNR(02)'
* record-MABNR_02_065.
*perform bdc_field using 'RV45A-KWMENG(02)'
* record-KWMENG_02_066.
*perform bdc_field using 'VBAP-WERKS(02)'
* record-WERKS_02_067.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_068.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_069.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_070.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_071.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_072.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_073.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_074.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_075.
*perform bdc_field using 'BDC_CURSOR'
* 'VBAP-WERKS(02)'.
*perform bdc_field using 'RV45A-MABNR(02)'
* record-MABNR_02_076.
*perform bdc_field using 'RV45A-KWMENG(02)'
* record-KWMENG_02_077.
*perform bdc_field using 'VBAP-WERKS(02)'
* record-WERKS_02_078.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '=SICH'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_079.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_080.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_081.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_082.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_083.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_084.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_085.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_086.
*perform bdc_field using 'BDC_CURSOR'
* 'RV45A-MABNR(02)'.
*perform bdc_transaction using 'VA01'.
*
*enddo.
*
*perform close_group.
*perform close_dataset using dataset.
FORM bdc_field USING fnam fval.
* IF FVAL <> NODATA.
CLEAR bdcdata.
bdcdata-fnam = fnam.
bdcdata-fval = fval.
APPEND bdcdata.
* ENDIF.
ENDFORM. "BDC_FIELD
*&---------------------------------------------------------------------
*
*& Form BDC_DYNPRO
*&---------------------------------------------------------------------
*
* text
*----------------------------------------------------------------------
*
* -->PROGRAM text
* -->DYNPRO text
*----------------------------------------------------------------------
*
FORM bdc_dynpro USING program dynpro.
CLEAR bdcdata.
bdcdata-program = program.
bdcdata-dynpro = dynpro.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
ENDFORM. "BDC_DYNPRO
*&---------------------------------------------------------------------
*
*& Form BDC_TRANSACTION
*&---------------------------------------------------------------------
*
* text
*----------------------------------------------------------------------
*
* -->P_0223 text
*----------------------------------------------------------------------
*
FORM bdc_transaction USING value(p_0223).
REFRESH messtab.
CALL TRANSACTION p_0223 USING bdcdata
MODE 'A'
UPDATE 'S'
MESSAGES INTO messtab.
ENDFORM. " BDC_TRANSACTION