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

Popular posts from this blog

all user exit mv45afzz (implicit user exit )

How to Give Dropdown in alv report in sap abap programming Language

Long Text in input and output field in module pool