Learn how to create sap bdc with call transaction method
Program Code
report ZVK11_BDC_DEMO
no standard page heading line-size 255.
*include bdcrecx1.
types : begin of tp_itab,
vkorg(4),
vtweg(2),
matnr(18),
amount(15),
msg type string,
end of tp_itab.
data : gt_itab type STANDARD TABLE OF tp_itab,
gs_itab type tp_itab.
data : gv_file type string.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN skip.
PARAMETERS : P_FILE TYPE IBIPPARMS-PATH OBLIGATORY,
P_MODE TYPE CHAR1 OBLIGATORY DEFAULT 'A'.
SELECTION-SCREEN SKIP.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
* EXPORTING
* PROGRAM_NAME = SYST-CPROG
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
start-of-selection.
clear : gv_file, gt_itab[].
gv_file = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = GV_FILE
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 = gt_itab
* CHANGING
* ISSCANPERFORMED = ' '
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.
* Implement suitable error handling here
ENDIF.
*perform open_group.
loop at gt_itab into gs_itab.
REFRESH : MESSTAB, BDCDATA.
perform bdc_dynpro using 'SAPMV13A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV13A-KSCHL'.
perform bdc_field using 'BDC_OKCODE'
'=ANTA'.
perform bdc_field using 'RV13A-KSCHL'
'ZBAS'.
perform bdc_dynpro using 'SAPLV14A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV130-SELKZ(01)'.
perform bdc_field using 'BDC_OKCODE'
'=WEIT'.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_CURSOR'
'KOMG-VTWEG'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KOMG-VKORG'
gs_itab-vkorg. "'1024'.
perform bdc_field using 'KOMG-VTWEG'
gs_itab-vtweg. "'24'.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_CURSOR'
'KONP-KBETR(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KOMG-MATNR(01)'
gs_itab-matnr. "'11000004'.
CONDENSE gs_itab-AMOUNT.
perform bdc_field using 'KONP-KBETR(01)'
gs_itab-amount. "' 150'.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_CURSOR'
'KOMG-MATNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VK11' USING BDCDATA MODE P_MODE
UPDATE 'A' MESSAGES INTO MESSTAB.
IF MESSTAB[] IS NOT INITIAL.
LOOP AT MESSTAB.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = MESSTAB-MSGID
MSGNR = MESSTAB-MSGNR
MSGV1 = MESSTAB-MSGV1
MSGV2 = MESSTAB-MSGV2
MSGV3 = MESSTAB-MSGV3
MSGV4 = MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = gs_itab-msg.
modify gt_itab from gs_itab TRANSPORTING msg.
exit.
ENDLOOP.
ENDIF.
*perform bdc_transaction using 'VK11'.
clear : gs_itab.
endloop.
cl_demo_output=>display( gt_itab ).
*perform close_group.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
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 <> SPACE.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
no standard page heading line-size 255.
*include bdcrecx1.
types : begin of tp_itab,
vkorg(4),
vtweg(2),
matnr(18),
amount(15),
msg type string,
end of tp_itab.
data : gt_itab type STANDARD TABLE OF tp_itab,
gs_itab type tp_itab.
data : gv_file type string.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
* messages of call transaction
DATA: MESSTAB LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
SELECTION-SCREEN skip.
PARAMETERS : P_FILE TYPE IBIPPARMS-PATH OBLIGATORY,
P_MODE TYPE CHAR1 OBLIGATORY DEFAULT 'A'.
SELECTION-SCREEN SKIP.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
CALL FUNCTION 'F4_FILENAME'
* EXPORTING
* PROGRAM_NAME = SYST-CPROG
* DYNPRO_NUMBER = SYST-DYNNR
* FIELD_NAME = ' '
IMPORTING
FILE_NAME = P_FILE.
start-of-selection.
clear : gv_file, gt_itab[].
gv_file = p_file.
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
FILENAME = GV_FILE
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 = gt_itab
* CHANGING
* ISSCANPERFORMED = ' '
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.
* Implement suitable error handling here
ENDIF.
*perform open_group.
loop at gt_itab into gs_itab.
REFRESH : MESSTAB, BDCDATA.
perform bdc_dynpro using 'SAPMV13A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV13A-KSCHL'.
perform bdc_field using 'BDC_OKCODE'
'=ANTA'.
perform bdc_field using 'RV13A-KSCHL'
'ZBAS'.
perform bdc_dynpro using 'SAPLV14A' '0100'.
perform bdc_field using 'BDC_CURSOR'
'RV130-SELKZ(01)'.
perform bdc_field using 'BDC_OKCODE'
'=WEIT'.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_CURSOR'
'KOMG-VTWEG'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KOMG-VKORG'
gs_itab-vkorg. "'1024'.
perform bdc_field using 'KOMG-VTWEG'
gs_itab-vtweg. "'24'.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_CURSOR'
'KONP-KBETR(01)'.
perform bdc_field using 'BDC_OKCODE'
'/00'.
perform bdc_field using 'KOMG-MATNR(01)'
gs_itab-matnr. "'11000004'.
CONDENSE gs_itab-AMOUNT.
perform bdc_field using 'KONP-KBETR(01)'
gs_itab-amount. "' 150'.
perform bdc_dynpro using 'SAPMV13A' '1004'.
perform bdc_field using 'BDC_CURSOR'
'KOMG-MATNR(01)'.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VK11' USING BDCDATA MODE P_MODE
UPDATE 'A' MESSAGES INTO MESSTAB.
IF MESSTAB[] IS NOT INITIAL.
LOOP AT MESSTAB.
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
MSGID = MESSTAB-MSGID
MSGNR = MESSTAB-MSGNR
MSGV1 = MESSTAB-MSGV1
MSGV2 = MESSTAB-MSGV2
MSGV3 = MESSTAB-MSGV3
MSGV4 = MESSTAB-MSGV4
IMPORTING
MESSAGE_TEXT_OUTPUT = gs_itab-msg.
modify gt_itab from gs_itab TRANSPORTING msg.
exit.
ENDLOOP.
ENDIF.
*perform bdc_transaction using 'VK11'.
clear : gs_itab.
endloop.
cl_demo_output=>display( gt_itab ).
*perform close_group.
*----------------------------------------------------------------------*
* Start new screen *
*----------------------------------------------------------------------*
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 <> SPACE.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM.
0 Comments