BAPI FOR PO CREATION
************************************************************************
* Program Name : ZBAPI_PO_CREATION Object ID: oo01 *
* Description : bapi for po creation *
* Create Date : 31.11.2018 *
* FO Owner : Rohini Kumar *
* Tech Owner : Rohini Kumar *
* Project Module : SD *
************************************************************************
* Change Log *
************************************************************************
* REQ# DATE WHO CHANGE_ID DESCR *
*-----------------------------------------------------------------------
* 001 Initial *
************************************************************************
REPORT zbapi_po_creation.
include zbapi_po_creation_top. " top include for global data declration
include zbapi_po_creation_sel. " sel include for selecation
include zbapi_po_creation_sub. " f01 subrotine programs
*----------------------------------------------*
* I N I T I A L I Z A T I O N *
*----------------------------------------------*
INITIALIZATION.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
PERFORM f4_file_name.
*&---------------------------------------------------------------------*
*& Start of Selection Event *
*&---------------------------------------------------------------------*
START-OF-SELECTION.
PERFORM data_process. " CONVERTING DATA FROM EXCEL TO INTERNAL TABLE
*PERFORM uplode_data.
*----------------------------------------------*
* E N D - O F - S E L E C T I O N *
*----------------------------------------------*
END-OF-SELECTION.
CLEAR gcl_app_log.
*****Application Log
gcl_app_log = zca_cl_application_log=>get_instance( ).
CALL METHOD gcl_app_log->create_app_log_handle(
EXPORTING
i_object = 'ZRKMAIN' " Object In SLGO
i_subobject = 'ZRKSUB' " Sub Object In SLGO
i_tcode = sy-tcode
i_repid = sy-cprog
RECEIVING
r_log_handle = gs_log_handle ).
PERFORM uplode_data.
************************* Save and Display Application Log *************************
CALL METHOD gcl_app_log->save_and_display_app_log
EXPORTING
i_log_handle = gs_log_handle
i_flg_save = abap_false.
*Text elements
*----------------------------------------------------------
* T01 select flat file
*Selection texts
*----------------------------------------------------------
* P_FILE D .
*&---------------------------------------------------------------------*
*& Include ZBAPI_PO_CREATION_TOP
*&---------------------------------------------------------------------*
TYPES: BEGIN OF ty_file,
vendor TYPE elifn, " vendro
purch_org TYPE ekorg, " puraches orgnization
pur_group TYPE bkgrp, " purache groups
co_code TYPE bukrs, " comapny code
po_item TYPE ebelp, " po item
material TYPE matnr, " material number
short_text TYPE txz01, " short text
QUANTITY type BSTMG, " po quanity
NET_PRICE TYPE BAPICUREXT, " net price
plant TYPE EWERK, " net price
flag type c,
END OF ty_file.
DATA: po_number LIKE bapimepoheader-po_number.
***** Internal Table
DATA : gt_final TYPE STANDARD TABLE OF ty_file,
gs_final TYPE ty_file.
* gt_return TYPE STANDARD TABLE OF bapireturn.
DATA : gt_return TYPE STANDARD TABLE OF bapiret2,
gs_return TYPE bapiret2.
DATA : gt_type TYPE truxs_t_text_data.
DATA: gt_po_items TYPE TABLE OF bapimepoitem,
gt_poitemx TYPE TABLE OF bapimepoitemx,
gs_poitemx TYPE bapimepoitemx,
wa_po_items LIKE bapimepoitem,
return TYPE bapireturn,
po_header TYPE TABLE OF bapimepoheader,
wa_poheaderx TYPE bapimepoheaderx,
wa_po_header TYPE bapimepoheader.
* passing constan for values
DATA : gc_x TYPE c VALUE 'X'.
***** Declaration for application log
DATA: gt_return_log TYPE bapiret2_t.
****************** Class/Objects***************************
DATA: gcl_app_log TYPE REF TO zca_cl_application_log,
****************** Internal Structure *********************
gs_log_handle TYPE balloghndl.
"Local table
DATA: gt_return1 TYPE STANDARD TABLE OF bapiret2,
gs_return1 TYPE bapiret2.
DATA: bapiret2 TYPE STANDARD TABLE OF bapiret2.
*&---------------------------------------------------------------------*
*& Include ZBAPI_PO_CREATION_SEL
*&---------------------------------------------------------------------*
SELECTION-SCREEN BEGIN OF BLOCK a1 WITH FRAME TITLE TEXT-t01.
PARAMETER p_file TYPE rlgrap-filename.
SELECTION-SCREEN END OF BLOCK a1.
*&---------------------------------------------------------------------*
*& Include ZBAPI_PO_CREATION_SUB
*&---------------------------------------------------------------------*
*&---------------------------------------------------------------------*
*& Form UPLODE_DATA
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM uplode_data .
DATA : lv_log(100) TYPE c,
lv_flag type c.
***** Uploading the data into the database table
LOOP AT gt_final INTO gs_final.
if gs_final-po_item is INITIAL and gs_final-vendor is NOT INITIAL.
* header data in po creation
wa_po_header-vendor = gs_final-vendor.
wa_po_header-purch_org = gs_final-purch_org.
PERFORM f_converstion_exit.
wa_po_header-pur_group = gs_final-pur_group.
wa_po_header-comp_code = gs_final-co_code.
* passing x values in po item
wa_poheaderx-vendor = gc_x.
wa_poheaderx-purch_org = gc_x.
wa_poheaderx-pur_group = gc_x.
wa_poheaderx-comp_code = gc_x.
lv_flag = 'X'.
* item data move
ENDIF.
IF gs_final-po_item IS NOT INITIAL.
wa_po_items-po_item = gs_final-po_item.
wa_po_items-material = gs_final-material.
wa_po_items-short_text = gs_final-short_text.
wa_po_items-quantity = gs_final-quantity.
wa_po_items-net_price = gs_final-net_price.
wa_po_items-plant = gs_final-plant.
* passing x value in po item
gs_poitemx-po_item = gs_final-po_item.
gs_poitemx-po_itemx = gc_x.
gs_poitemx-material = gc_x.
gs_poitemx-short_text = gc_x.
gs_poitemx-quantity = gc_x.
gs_poitemx-po_price = gc_x.
gs_poitemx-plant = gc_x.
APPEND gs_poitemx TO gt_poitemx.
APPEND wa_po_items TO gt_po_items.
CLEAR: lv_flag.
ENDIF.
IF gs_final-po_item IS NOT INITIAL or lv_flag is NOT INITIAL.
CONTINUE.
ENDIF.
CALL FUNCTION 'BAPI_PO_CREATE1'
EXPORTING
poheader = wa_po_header
poheaderx = wa_poheaderx
IMPORTING
exppurchaseorder = po_number
TABLES
return = gt_return1
poitem = gt_po_items
poitemx = gt_poitemx.
IF gt_return1[] IS NOT INITIAL.
LOOP AT gt_return1 INTO gs_return1. "data(gs_return1).
gs_return-type = gs_return1-type.
gs_return-id = gs_return1-id.
CONCATENATE po_number gs_return1-message
INTO lv_log SEPARATED BY ' - '.
gs_return-message_v1 = lv_log.
APPEND gs_return TO gt_return.
CLEAR : gs_return1.
ENDLOOP.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
wait = 'X'.
CHECK sy-subrc EQ 0.
CALL METHOD gcl_app_log->add_message_to_app_log
EXPORTING
i_log_handle = gs_log_handle
i_tab_return = gt_return.
CLEAR: gs_poitemx, wa_po_items,wa_po_header,GS_FINAL.
ENDLOOP.
ENDFORM. " UPLODE_DATA
*&---------------------------------------------------------------------*
*& Form F4_FILE_NAME
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f4_file_name .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
field_name = 'P_FILE'
IMPORTING
file_name = p_file.
ENDFORM. " F4_FILE_NAME
*&---------------------------------------------------------------------*
*& Form DATA_PROCESS
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM data_process .
****** Uploading the data in the file into internal table
CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
EXPORTING
i_field_seperator = 'X'
i_line_header = 'X'
i_tab_raw_data = gt_type
i_filename = p_file
TABLES
i_tab_converted_data = gt_final[]
EXCEPTIONS
conversion_failed = 1
OTHERS = 2.
IF sy-subrc NE 0.
MESSAGE ID sy-msgid
TYPE sy-msgty
NUMBER sy-msgno
WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
ENDIF.
ENDFORM. " DATA_PROCESS
*&---------------------------------------------------------------------*
*& Form F_CONVERSTION_EXIT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM f_converstion_exit .
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = gs_final-pur_group
IMPORTING
output = gs_final-pur_group.
ENDFORM. " F_CONVERSTION_EXIT
ZCA_CL_APPLICATION_LOG
S_INSTANCE Static Attribute Public Type Ref To ZCA_CL_APPLICATION_LOG Application Log
method ADD_MESSAGE_TO_APP_LOG.
DATA: l_str_log TYPE bal_s_msg,
l_str_msg TYPE bapiret2.
IF i_str_return IS NOT INITIAL.
l_str_log-msgty = i_str_return-type.
l_str_log-msgid = i_str_return-id.
l_str_log-msgno = i_str_return-number.
l_str_log-msgv1 = i_str_return-message_v1.
l_str_log-msgv2 = i_str_return-message_v2.
l_str_log-msgv3 = i_str_return-message_v3.
l_str_log-msgv4 = i_str_return-message_v4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = i_log_handle
i_s_msg = l_str_log
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
IF sy-subrc <> 0.
ENDIF.
CLEAR l_str_log.
ENDIF.
IF i_tab_return[] IS NOT INITIAL .
LOOP AT i_tab_return INTO l_str_msg.
l_str_log-msgty = l_str_msg-type.
l_str_log-msgid = l_str_msg-id.
l_str_log-msgno = l_str_msg-number.
l_str_log-msgv1 = l_str_msg-message_v1.
l_str_log-msgv2 = l_str_msg-message_v2.
l_str_log-msgv3 = l_str_msg-message_v3.
l_str_log-msgv4 = l_str_msg-message_v4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = i_log_handle
i_s_msg = l_str_log
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
IF sy-subrc <> 0.
ENDIF.
CLEAR:l_str_msg,l_str_log.
ENDLOOP.
ENDIF.
endmethod.
method CREATE_APP_LOG_HANDLE.
DATA: l_str_log TYPE bal_s_log .
l_str_log-object = i_object.
l_str_log-subobject = i_subobject.
l_str_log-aluser = sy-uname.
l_str_log-altcode = i_tcode.
l_str_log-alprog = i_repid.
****** Application Log Creation
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = l_str_log
IMPORTING
e_log_handle = r_log_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
endmethod.
method GET_INSTANCE.
IF s_instance IS NOT BOUND.
CREATE OBJECT s_instance.
ENDIF.
r_instance = s_instance.
endmethod.
method SAVE_AND_DISPLAY_APP_LOG.
DATA: l_tab_log_handle TYPE bal_t_logh.
APPEND i_log_handle TO l_tab_log_handle.
IF i_flg_save = abap_true.
***************** Save log
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
i_save_all = abap_true
i_t_log_handle = l_tab_log_handle
EXCEPTIONS
log_not_found = 1
save_not_allowed = 2
numbering_error = 3
OTHERS = 4.
ELSE.
******* Display Log
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
i_t_log_handle = l_tab_log_handle
EXCEPTIONS
profile_inconsistent = 1
internal_error = 2
no_data_available = 3
no_authority = 4
OTHERS = 5.
ENDIF.
endmethod.
ADD_MESSAGE_TO_APP_LOG Instance Method Public
CREATE_APP_LOG_HANDLE Instance Method Public
GET_INSTANCE Static Method Public
SAVE_AND_DISPLAY_APP_LOG Instance Method Public
I_LOG_HANDLE Importing Type BALLOGHNDL Application Log: Log Handle
I_STR_RETURN Importing Type BAPIRET2 Return Parameter
I_TAB_RETURN Importing Type BAPIRET2_T Return table
I_OBJECT Importing Type BALOBJ_D Application log: Object name (Application code)
I_SUBOBJECT Importing Type BALSUBOBJ Application Log: Subobject
I_TCODE Importing Type BALTCODE Application Log: Transaction code
I_REPID Importing Type BALPROG Application log: Program name
R_LOG_HANDLE Returning Type BALLOGHNDL Application Log: Log Handle
R_INSTANCE Returning Type Ref To ZCA_CL_APPLICATION_LOG Application Log
I_LOG_HANDLE Importing Type BALLOGHNDL
I_FLG_SAVE Importing Type CHAR01
method ADD_MESSAGE_TO_APP_LOG.
DATA: l_str_log TYPE bal_s_msg,
l_str_msg TYPE bapiret2.
IF i_str_return IS NOT INITIAL.
l_str_log-msgty = i_str_return-type.
l_str_log-msgid = i_str_return-id.
l_str_log-msgno = i_str_return-number.
l_str_log-msgv1 = i_str_return-message_v1.
l_str_log-msgv2 = i_str_return-message_v2.
l_str_log-msgv3 = i_str_return-message_v3.
l_str_log-msgv4 = i_str_return-message_v4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = i_log_handle
i_s_msg = l_str_log
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
IF sy-subrc <> 0.
ENDIF.
CLEAR l_str_log.
ENDIF.
IF i_tab_return[] IS NOT INITIAL .
LOOP AT i_tab_return INTO l_str_msg.
l_str_log-msgty = l_str_msg-type.
l_str_log-msgid = l_str_msg-id.
l_str_log-msgno = l_str_msg-number.
l_str_log-msgv1 = l_str_msg-message_v1.
l_str_log-msgv2 = l_str_msg-message_v2.
l_str_log-msgv3 = l_str_msg-message_v3.
l_str_log-msgv4 = l_str_msg-message_v4.
CALL FUNCTION 'BAL_LOG_MSG_ADD'
EXPORTING
i_log_handle = i_log_handle
i_s_msg = l_str_log
EXCEPTIONS
log_not_found = 1
msg_inconsistent = 2
log_is_full = 3
OTHERS = 4.
IF sy-subrc <> 0.
ENDIF.
CLEAR:l_str_msg,l_str_log.
ENDLOOP.
ENDIF.
endmethod.
method CREATE_APP_LOG_HANDLE.
DATA: l_str_log TYPE bal_s_log .
l_str_log-object = i_object.
l_str_log-subobject = i_subobject.
l_str_log-aluser = sy-uname.
l_str_log-altcode = i_tcode.
l_str_log-alprog = i_repid.
****** Application Log Creation
CALL FUNCTION 'BAL_LOG_CREATE'
EXPORTING
i_s_log = l_str_log
IMPORTING
e_log_handle = r_log_handle
EXCEPTIONS
log_header_inconsistent = 1
OTHERS = 2.
IF sy-subrc <> 0.
ENDIF.
endmethod.
method GET_INSTANCE.
IF s_instance IS NOT BOUND.
CREATE OBJECT s_instance.
ENDIF.
r_instance = s_instance.
endmethod.
method SAVE_AND_DISPLAY_APP_LOG.
DATA: l_tab_log_handle TYPE bal_t_logh.
APPEND i_log_handle TO l_tab_log_handle.
IF i_flg_save = abap_true.
***************** Save log
CALL FUNCTION 'BAL_DB_SAVE'
EXPORTING
i_save_all = abap_true
i_t_log_handle = l_tab_log_handle
EXCEPTIONS
log_not_found = 1
save_not_allowed = 2
numbering_error = 3
OTHERS = 4.
ELSE.
******* Display Log
CALL FUNCTION 'BAL_DSP_LOG_DISPLAY'
EXPORTING
i_t_log_handle = l_tab_log_handle
EXCEPTIONS
profile_inconsistent = 1
internal_error = 2
no_data_available = 3
no_authority = 4
OTHERS = 5.
ENDIF.
endmethod.
Also use t-code SLG0 AND SLG1 Two malignance the t-code
Please support my work
Comments
Post a Comment