Sunteți pe pagina 1din 4

.

*&---------------------------------------------------------------------*
*& Report ZBAPI_PROJECT7
*&
*&---------------------------------------------------------------------*
*&
*&
*&---------------------------------------------------------------------*
REPORT zbapi_project7.
TYPES: BEGIN OF ty_itab,
so TYPE i,
flag TYPE c,
posnr TYPE vbap-posnr,
ntgew TYPE vbap-ntgew,
matnr TYPE vbap-matnr,
werks TYPE vbap-werks,
audat TYPE vbak-audat,
spart TYPE vbak-spart,
parvw TYPE vbpa-parvw,
kunnr TYPE vbpa-kunnr,
vkorg TYPE vbak-vkorg,
vtweg TYPE vbak-vtweg,
vdatu TYPE vbak-vdatu,
auart TYPE vbak-auart,
END OF ty_itab.
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:
DATA:

it_itab TYPE STANDARD TABLE OF ty_itab.


wa_itab TYPE ty_itab.
i_return TYPE bapiret2 OCCURS 0 WITH HEADER LINE.
i_bapisdhd1 TYPE bapisdhd1 .
i_bapiparnr TYPE bapiparnr OCCURS 0 WITH HEADER LINE.
i_bapivbeln TYPE bapivbeln-vbeln OCCURS 0 WITH HEADER LINE.
i_bapisditm TYPE bapisditm OCCURS 0 WITH HEADER LINE.
it_vbeln TYPE STANDARD TABLE OF vbeln.

parameters: P_FILE(132) lower case.


*PARAMETERS: p_file(10) TYPE c OBLIGATORY.
AT SELECTION-SCREEN.
IF p_file IS INITIAL.
MESSAGE 'PLEASE enter THE value,P1.CHECK' TYPE 'E'.
ENDIF.
START-OF-SELECTION.
PERFORM gui_upload.
* PERFORM load_data.
PERFORM create_data.
*&---------------------------------------------------------------------*
*&
Form gui_upload
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
FORM gui_upload.
DATA: fname TYPE string.
fname = P_FILE.

CALL FUNCTION 'GUI_UPLOAD'


EXPORTING
filename
= 'FNAME'
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
=
*IMPORTING
*FILELENGTH
=
*HEADER
=
TABLES
data_tab
= it_itab[]
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.

"gui_upload

*&---------------------------------------------------------------------*
*&
Form load_data
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
*FORM load_data.
* LOOP AT it_itab INTO wa_itab.
*
WRITE:/ wa_itab-so, wa_itab-flag, wa_itab-posnr, wa_itab-ntgew, wa_itab-mat
nr, wa_itab-werks, wa_itab-audat, wa_itab-spart, wa_itab-parvw, wa_itab-kunnr, w
a_itab-vkorg, wa_itab-vtweg, wa_itab-VDATU.
* ENDLOOP.
*ENDFORM.
"load_data
*&---------------------------------------------------------------------*
*&
Form create_data

*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
FORM create_data.
DATA: v_so TYPE i.
v_so = 1.
DO.
LOOP AT it_itab INTO wa_itab WHERE so = v_so.
IF wa_itab-flag = 'X'.
MOVE wa_itab-auart TO i_bapisdhd1-doc_type.
MOVE wa_itab-audat TO i_bapisdhd1-doc_date.
MOVE wa_itab-vkorg TO i_bapisdhd1-sales_org.
MOVE wa_itab-vtweg TO i_bapisdhd1-distr_chan.
MOVE wa_itab-spart TO i_bapisdhd1-division.
MOVE wa_itab-vdatu TO i_bapisdhd1-req_date_h.
ENDIF.
IF wa_itab-parvw IS NOT INITIAL.
MOVE wa_itab-parvw TO i_bapiparnr-partn_role.
MOVE wa_itab-kunnr TO i_bapiparnr-partn_numb.
APPEND i_bapiparnr.
ENDIF.
IF wa_itab-posnr IS NOT INITIAL.
MOVE wa_itab-posnr TO i_bapisditm-itm_number.
MOVE wa_itab-ntgew TO i_bapisditm-target_qty.
MOVE wa_itab-matnr TO i_bapisditm-material.
MOVE wa_itab-werks TO i_bapisditm-plant.
APPEND i_bapisditm.
ENDIF.
ENDLOOP.
IF sy-subrc = 0.
PERFORM call_bapi.
APPEND i_bapivbeln TO it_vbeln.
v_so = v_so + 1.
CLEAR: i_bapisdhd1,i_bapiparnr,i_bapiparnr[],
i_bapisditm, i_bapisditm[].
ELSE.
EXIT.
ENDIF.
ENDDO.
DATA : wa_vbeln LIKE LINE OF it_vbeln.
LOOP AT it_vbeln INTO wa_vbeln.
WRITE:/ wa_vbeln.
ENDLOOP.
ENDFORM.
"create_data
*&---------------------------------------------------------------------*
*&
Form Call_bapi
*&---------------------------------------------------------------------*
*text
*----------------------------------------------------------------------*
FORM call_bapi.
CALL FUNCTION 'BAPI_SALESORDER_CREATEFROMDAT2'
EXPORTING
*SALESDOCUMENTIN
=
order_header_in
= i_bapisdhd1
*ORDER_HEADER_INX
=
*SENDER
=
*BINARY_RELATIONSHIPTYPE
=

*INT_NUMBER_ASSIGNMENT
=
*BEHAVE_WHEN_ERROR
=
*LOGIC_SWITCH
=
*testrun
= 'X'
*CONVERT
= ' '
IMPORTING
salesdocument
= i_bapivbeln
TABLES
return
= i_return
order_items_in
= i_bapisditm
*
order_items_inx
=
order_partners
= i_bapiparnr
*ORDER_SCHEDULES_IN
=
*ORDER_SCHEDULES_INX
=
*ORDER_CONDITIONS_IN
=
*ORDER_CONDITIONS_INX
=
*ORDER_CFGS_REF
=
*ORDER_CFGS_INST
=
*ORDER_CFGS_PART_OF
=
*ORDER_CFGS_VALUE
=
*ORDER_CFGS_BLOB
=
*ORDER_CFGS_VK
=
*ORDER_CFGS_REFINST
=
*ORDER_CCARD
=
*ORDER_TEXT
=
*ORDER_KEYS
=
*EXTENSIONIN
=
*PARTNERADDRESSES
=
.
READ TABLE i_return WITH KEY type = 'E'.
IF sy-subrc <> 0.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait
= 'X'
*
IMPORTING
*
RETURN
=
.
ELSE.
ENDIF.
ENDFORM.

"Call_bapi

S-ar putea să vă placă și