report Z_BDC_421930.
DATA: BEGIN OF IT_UPLOAD OCCURS 0,
*Sales order number, item number, and rejection reason
T_VBELN LIKE VBAK-VBELN,
T_POSNR LIKE VBAP-POSNR,
T_ABGRU LIKE VBAP-ABGRU,
END OF IT_UPLOAD.
* no standard page heading line-size 255.
DATA: BEGIN OF IT_MESSAGE1 OCCURS 0,
LINE(100),
END OF IT_MESSAGE1.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_MESSAGE LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
PARAMETERS P_FILE LIKE RLGRAP-FILENAME.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
PERFORM GET_FILENAME.
START-OF-SELECTION.
PERFORM UPLOAD.
LOOP AT IT_UPLOAD.
perform bdc_dynpro using 'SAPMV45A' '0102'.
perform bdc_field using 'BDC_CURSOR'
'VBAK-VBELN'.
perform bdc_field using 'BDC_OKCODE'
'=SUCH'.
perform bdc_field using 'VBAK-VBELN'
IT_UPLOAD-T_VBELN.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=T/07'.
*perform bdc_field using 'VBKD-BSTKD'
* record-BSTKD_002.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_003.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_004.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_005.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_006.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_007.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_008.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_009.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_010.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(02)'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
*perform bdc_field using 'VBKD-BSTKD'
* record-BSTKD_011.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_012.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_013.
perform bdc_field using 'BDC_CURSOR'
'RV45A-MABNR(01)'.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
*perform bdc_field using 'VBKD-BSTKD'
* record-BSTKD_014.
perform bdc_field using 'BDC_CURSOR'
'KUAGV-KUNNR'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_015.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_016.
perform bdc_dynpro using 'SAPMV45A' '4001'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
*perform bdc_field using 'VBKD-BSTKD'
* record-BSTKD_017.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_018.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_019.
perform bdc_field using 'BDC_CURSOR'
'VBAP-ABGRU(01)'.
perform bdc_field using 'VBAP-ABGRU(01)'
IT_UPLOAD-T_ABGRU.
*
* PERFORM BDC_DYNPRO USING 'SAPMV45A' '0102'.
* PERFORM BDC_FIELD USING 'BDC_CURSOR'
* 'VBAK-VBELN'.
* PERFORM BDC_FIELD USING 'BDC_OKCODE'
* '/00'.
* PERFORM BDC_FIELD USING 'VBAK-VBELN'
* IT_UPLOAD-VBELN_001. " Sales order number
* PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
* PERFORM BDC_FIELD USING 'BDC_OKCODE'
* '/00'.
* PERFORM BDC_FIELD USING 'RV45A-MABNR(01)' " Material
* IT_UPLOAD-MABNR_01_012.
* PERFORM BDC_FIELD USING 'RV45A-KWMENG(01)' " Quantity
* IT_UPLOAD-KWMENG_01_013.
* PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
* PERFORM BDC_FIELD USING 'BDC_OKCODE'
* '=SICH'.
* PERFORM BDC_FIELD USING 'BDC_CURSOR'
* 'RV45A-MABNR(01)'. " Material number
*PERFORM BDC_TRANSACTION USING 'VA02'.
CALL TRANSACTION 'VA02'
USING BDCDATA
MODE 'A'
* there have three parameters : N A E .three mode ,you N means no notice.
* A means show stem by step
UPDATE 'S'
MESSAGES INTO IT_MESSAGE.
* Message
PERFORM DISPLAY_SUCCESS_MSG.
REFRESH: BDCDATA, IT_MESSAGE.
CLEAR: BDCDATA,IT_MESSAGE.
ENDLOOP.
*include bdcrecx1.
*parameters: dataset(132) lower case.
*** DO NOT CHANGE - the generated data section - DO NOT CHANGE ***
*
* If it is nessesary to change the data section use the rules:
* 1.) Each definition of a field exists of two lines
* 2.) The first line shows exactly the comment
* '* data element: ' followed with the data element
* which describes the field.
* If you don't have a data element use the
* comment without a data element name
* 3.) The second line shows the fieldname of the
* structure, the fieldname must consist of
* a fieldname and optional the character '_' and
* three numbers and the field length in brackets
* 4.) Each field must be type C.
*
*** Generated data section with specific formatting - DO NOT CHANGE ***
**data: begin of record,
** data element: VBELN_VA
* VBELN_001(030),
** data element: BSTKD
* BSTKD_002(035),
** data element: KUNAG
* KUNNR_003(010),
** data element: KUNWE
* KUNNR_004(010),
** data element: KETDAT
* KETDAT_005(010),
** data element: KPRGBZ
* KPRGBZ_006(001),
** data element: PRSDT
* PRSDT_007(010),
** data element: DZTERM
* ZTERM_008(004),
** data element: INCO1
* INCO1_009(003),
** data element: INCO2
* INCO2_010(028),
** data element: BSTKD
* BSTKD_011(035),
** data element: KUNAG
* KUNNR_012(010),
** data element: KUNWE
* KUNNR_013(010),
** data element: BSTKD
* BSTKD_014(035),
** data element: KUNAG
* KUNNR_015(010),
** data element: KUNWE
* KUNNR_016(010),
** data element: BSTKD
* BSTKD_017(035),
** data element: KUNAG
* KUNNR_018(010),
** data element: KUNWE
* KUNNR_019(010),
** data element: ABGRU_VA
* ABGRU_01_020(002),
* end of record.
*** End generated data section ***
*
*start-of-selection.
*
*perform open_dataset using dataset.
*perform open_group.
*
*do.
*
*read dataset dataset into record.
*if sy-subrc <> 0. exit. endif.
*
*perform bdc_dynpro using 'SAPMV45A' '0102'.
*perform bdc_field using 'BDC_CURSOR'
* 'VBAK-VBELN'.
*perform bdc_field using 'BDC_OKCODE'
* '=SUCH'.
*perform bdc_field using 'VBAK-VBELN'
* record-VBELN_001.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '=T/07'.
*perform bdc_field using 'VBKD-BSTKD'
* record-BSTKD_002.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_003.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_004.
*perform bdc_field using 'RV45A-KETDAT'
* record-KETDAT_005.
*perform bdc_field using 'RV45A-KPRGBZ'
* record-KPRGBZ_006.
*perform bdc_field using 'VBKD-PRSDT'
* record-PRSDT_007.
*perform bdc_field using 'VBKD-ZTERM'
* record-ZTERM_008.
*perform bdc_field using 'VBKD-INCO1'
* record-INCO1_009.
*perform bdc_field using 'VBKD-INCO2'
* record-INCO2_010.
*perform bdc_field using 'BDC_CURSOR'
* 'RV45A-MABNR(02)'.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'VBKD-BSTKD'
* record-BSTKD_011.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_012.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_013.
*perform bdc_field using 'BDC_CURSOR'
* 'RV45A-MABNR(01)'.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '/00'.
*perform bdc_field using 'VBKD-BSTKD'
* record-BSTKD_014.
*perform bdc_field using 'BDC_CURSOR'
* 'KUAGV-KUNNR'.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_015.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_016.
*perform bdc_dynpro using 'SAPMV45A' '4001'.
*perform bdc_field using 'BDC_OKCODE'
* '=SICH'.
*perform bdc_field using 'VBKD-BSTKD'
* record-BSTKD_017.
*perform bdc_field using 'KUAGV-KUNNR'
* record-KUNNR_018.
*perform bdc_field using 'KUWEV-KUNNR'
* record-KUNNR_019.
*perform bdc_field using 'BDC_CURSOR'
* 'VBAP-ABGRU(01)'.
*perform bdc_field using 'VBAP-ABGRU(01)'
* record-ABGRU_01_020.
*perform bdc_transaction using 'VA02'.
*
*enddo.
*
*perform close_group.
*perform close_dataset using dataset.
*
*INCLUDE Z_BDC_421930_GET_FILENAMEF01.
*&---------------------------------------------------------------------*
*& Form GET_FILENAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form GET_FILENAME .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
ENDFORM.
" GET_FILENAME
*&---------------------------------------------------------------------*
*& Form UPLOAD
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form UPLOAD .
DATA: P_FILE1 TYPE STRING,
L_W_TAB.
L_W_TAB = CL_ABAP_CHAR_UTILITIES=>HORIZONTAL_TAB.
P_FILE1 = P_FILE.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = P_FILE1
FILETYPE = 'ASC'
HAS_FIELD_SEPARATOR = L_W_TAB
TABLES
DATA_TAB = IT_UPLOAD
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. " UPLOAD
*&---------------------------------------------------------------------*
*& Form DISPLAY_SUCCESS_MSG
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
form DISPLAY_SUCCESS_MSG .
SORT IT_MESSAGE BY MSGTYP MSGID.
LOOP AT IT_MESSAGE WHERE MSGTYP = 'S' AND
MSGID = 'CO'.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = IT_MESSAGE-MSGID
MSGNR = IT_MESSAGE-MSGNR
MSGV1 = IT_MESSAGE-MSGV1
MSGV2 = IT_MESSAGE-MSGV2
MSGV3 = IT_MESSAGE-MSGV3
MSGV4 = IT_MESSAGE-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = IT_MESSAGE1.
APPEND IT_MESSAGE1.
CLEAR IT_MESSAGE1.
ENDLOOP.
endform. " DISPLAY_SUCCESS_MSG
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "bdc_dynpro
*&---------------------------------------------------------------------*
*& Form bdc_field
*----------------------------------------------------------------------*
* Insert field *
*----------------------------------------------------------------------*
FORM BDC_FIELD USING FNAM FVAL.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDFORM.
Z_BDC_421930(关于BDC使用的exercise)
最新推荐文章于 2024-07-17 18:56:32 发布
