2007 Sep 18 8:44 AM
hi all,
i need to know all about this function module.
i know this can be use as function module and interface.
but what i really want to know is that
what can be use as export parameter(what sud i give as export parameter)
import parameter.
and what is retun table and what data is fill in it.
if possible give me a working code for the same.
points ll be sure awarded.
anuj
hi all,
i need to know all about this function module.
i know this can be use as function module and interface.
but what i really want to know is that
what can be use as export parameter(what sud i give as export parameter)
import parameter.
and what is retun table and what data is fill in it.
if possible give me a working code for the same.
points ll be sure awarded.
anuj
2007 Sep 18 8:49 AM
Hi,
The method GetDetail returns the attributes of user USERNAME, as well as
the profiles and activity groups that are assigned to that user.
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
USERNAME = SY-UNAME
TABLES
PARAMETER = L_IT_PARAM
RETURN = L_IT_RETURN.
<b>Reward if helpful.</b>
2007 Sep 18 8:53 AM
You have to pass the user's ID to the function module. It's the only input parameter, but it is mandatory.
The module then returns pretty much every attribute of that user. The data where there is only one set for each user (eg name and address) is passed in a structure, anything where there is many items (parameters, roles) is returned in a table.
Get familiar with the data in transaction SU01 for a user, the BAPI returns all of this.
Regards,
Nick
2007 Sep 18 8:53 AM
HI
<b>FU BAPI_USER_GET_DETAIL[/b Read User Details
<b>Functionality</b>
The method GetDetail returns the attributes of user USERNAME, as well as the profiles and activity groups that are assigned to that user.
<b>Parameters</b>
USERNAME
LOGONDATA
DEFAULTS
ADDRESS
COMPANY
SNC
REF_USER
ALIAS
UCLASS
LASTMODIFIED
ISLOCKED
PARAMETER
PROFILES
ACTIVITYGROUPS
RETURN
ADDTEL
ADDFAX
ADDTTX
ADDTLX
ADDSMTP
ADDRML
ADDX400
ADDRFC
ADDPRT
ADDSSF
ADDURI
ADDPAG
ADDCOMREM
PARAMETER1
GROUPS
UCLASSSYS
EXTIDHEAD
EXTIDPART
SYSTEMS
<b>Exceptions</b>
<b>Function Group</b>
SU_USER
hi see this program and how i had used that one
************************************************************************
* Copyright (C) and all other rights in this program *
* are reserved by xxxxxxxxxxxxxxxxxxxxxxxxxxxx *
* *
************************************************************************
REPORT zfi_gl_upload .
*----------------------------------------------------------------------*
* EXTERNAL TABLE DECLARATIONS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* TYPES *
*----------------------------------------------------------------------*
* Data type for Raw data from file
TYPES : BEGIN OF tt_file_data,
record_data TYPE char200, "LocalFile data
END OF tt_file_data.
* Data Type for document header
TYPES : BEGIN OF tt_header,
record_no TYPE i, "Record Number in the file
company_code TYPE bukrs, "Company Code
doc_type TYPE blart, "Document type
doc_date TYPE bldat, "Document Date in Document
post_date TYPE budat, "Posting Date in the Document
currency TYPE waers, "Currency Key
exchg_rate TYPE kursf, "Exchange Rate
ref_num TYPE xblnr1, "Reference Document Number
head_text TYPE bktxt, "Document Header Text
END OF tt_header.
*Data type for document items
TYPES : BEGIN OF tt_line_item,
record_no TYPE i, "Record Number in the file
line_item_no TYPE buzei, "Line Item Within Document
account_num TYPE hkont, "General Ledger Account
cost_centre TYPE kostl, "Cost Center
order_no TYPE aufnr, "Order Number
segment TYPE fb_segment, "Segment
profit_ctr TYPE prctr, "Profit Center
amt_debit TYPE wrbtr, "Amount in document currencyline_item_text TYPE sgtxt, "Item Text
amt_credit TYPE wrbtr, "Amount in document currencyline_item_text TYPE sgtxt, "Item Text
tax_code TYPE mwskz, "Sales Tax Code
company_code TYPE bukrs,
trade_part TYPE rassc,
movement_type TYPE rmvct,
item_text TYPE sgtxt,
END OF tt_line_item.
*Data type for tracking the record number in file
TYPES : BEGIN OF tt_error_log,
record_no TYPE i, "Record Number in file
message TYPE
abaptxt255-line, "Error Message
END OF tt_error_log.
*Data type for tracking the record number in file
TYPES : BEGIN OF tt_doc_split_log,
doc_no TYPE i, "Record Number in file
balance_entry TYPE char1,
balance_record TYPE i,
END OF tt_doc_split_log.
*Data type for application server file format
TYPES : BEGIN OF tt_file_upload,
data(2541) TYPE c, "Formatted data for upload
END OF tt_file_upload.
*Data type for application server file format
TYPES : BEGIN OF tt_tax_code,
company_code TYPE bukrs,
tax_code TYPE mwskz,
condition_type TYPE kscha,
END OF tt_tax_code.
*----------------------------------------------------------------------*
* CONSTANTS *
*----------------------------------------------------------------------*
CONSTANTS : gc_foreground TYPE char1 VALUE ' ',
gc_header TYPE char1 VALUE 'H',
gc_max_line TYPE i VALUE 950,
gc_pkey_40 TYPE newbs VALUE '40' ,
gc_pkey_50 TYPE newbs VALUE '50' ,
gc_file_end TYPE char1 VALUE 'X',
gc_format TYPE char2 VALUE ' /',
gc_slash TYPE char1 VALUE '',
gc_ok TYPE char1 VALUE 'X',
gc_s0 TYPE char1 VALUE '0',
gc_s1 TYPE char1 VALUE '1',
gc_s2 TYPE char1 VALUE '2',
gc_nodata TYPE char1 VALUE '/',
gc_tcode TYPE char4 VALUE 'FBV1',
gc_error TYPE char1 VALUE 'E',
gc_batch TYPE char1 VALUE 'B',
gc_success TYPE char1 VALUE 'S',
gc_gbp TYPE waers VALUE 'GBP',
* gc_fmt_amt TYPE char2 VALUE '/0',
gc_saparator TYPE char1 VALUE ',',
gc_dot TYPE char1 VALUE '.',
gc_fmt_dot TYPE char2 VALUE ',.',
gc_bseg TYPE bbseg-tbnam VALUE 'BBSEG',
gc_cancel TYPE char1 VALUE '2',
gc_check TYPE char4 VALUE 'CHCK',
gc_post TYPE char4 VALUE 'POST',
gc_park TYPE char4 VALUE 'PARK',
gc_x TYPE char1 VALUE 'X',
gc_line TYPE char1 VALUE 'L'.
*----------------------------------------------------------------------*
* STRUCTURE DECLARATIONS *
*----------------------------------------------------------------------*
DATA : gs_header TYPE tt_header,
gs_file_data TYPE tt_file_data,
gs_line_item TYPE tt_line_item,
gs_tax_code TYPE tt_tax_code,
gs_bal_line_item TYPE tt_line_item,
gs_file_upload TYPE tt_file_upload,
gs_error_log TYPE tt_error_log,
gs_bgr00 TYPE bgr00 ,
gs_bbkpf TYPE bbkpf,
gs_bbseg TYPE bbseg,
* gs_run_log TYPE ztfi_int_run_log,
gs_doc_split_log TYPE tt_doc_split_log,
wa_fcat TYPE lvc_s_fcat.
*----------------------------------------------------------------------*
* INTERNAL TABLE DECLARATIONS *
*----------------------------------------------------------------------*
DATA :
*Internal table for file data
gt_file_data TYPE STANDARD TABLE OF tt_file_data,
*Internal table for document items
gt_line_item TYPE STANDARD TABLE OF tt_line_item,
gt_bal_line_item TYPE STANDARD TABLE OF tt_line_item,
*Iternal table for aplication server file data
gt_file_upload TYPE STANDARD TABLE OF tt_file_upload,
*Internal table for error logs
gt_error_log TYPE STANDARD TABLE OF tt_error_log,
*Internal table for posting log
gt_tax_code TYPE STANDARD TABLE OF tt_tax_code,
*Table for interface run log
*gt_run_log TYPE STANDARD TABLE OF ztfi_int_run_log,
*
gt_doc_split_log TYPE STANDARD TABLE OF tt_doc_split_log,
*Table for field catalog of ALV table
i_fcat TYPE TABLE OF lvc_s_fcat.
*----------------------------------------------------------------------*
* FIELD GROUPS & FIELD SYMBOLS *
*----------------------------------------------------------------------*
*----------------------------------------------------------------------*
* VARIABLE DECLARATIONS *
*----------------------------------------------------------------------*
DATA : gv_filename TYPE fileextern,
gv_exit_cnt TYPE i,
gv_file_type TYPE char1,
gv_start_date TYPE sy-datum,
gv_start_time TYPE sy-uzeit,
gv_post_error TYPE char1,
gv_string TYPE string,
gv_process TYPE char4,
gv_error TYPE char1,
gv_session_name TYPE char12,
gv_park TYPE char1,
gv_check_level TYPE char1,
gv_user_info TYPE char1,
gv_fiscal_year TYPE gjahr,
gv_colpos TYPE i,
gv_continue_flag TYPE c,
gv_back_flag TYPE c,
gv_ucomm TYPE sy-ucomm,
gv_okcode_9001 TYPE sy-ucomm.
*Objects for ALV grid
DATA: gv_alv TYPE REF TO cl_gui_alv_grid,
gv_control TYPE REF TO cl_gui_custom_container.
TYPE-POOLS icon.
TABLES sscrfields.
TABLES usr02.
*----------------------------------------------------------------------*
* SELECT-OPTIONS AND PARAMETERS *
*----------------------------------------------------------------------*
* Local File path
SELECTION-SCREEN BEGIN OF BLOCK file_info WITH FRAME TITLE text-001.
PARAMETER : p_file TYPE ibipparms-path .
SELECTION-SCREEN END OF BLOCK file_info.
SELECTION-SCREEN BEGIN OF BLOCK file_park WITH FRAME
TITLE text-002.
SELECTION-SCREEN BEGIN OF LINE.
POSITION 5.
SELECTION-SCREEN COMMENT 5(5) com1.
POSITION 12.
PARAMETERS p_park RADIOBUTTON GROUP gr1.
POSITION 21.
SELECTION-SCREEN COMMENT 21(5) com2.
POSITION 28.
PARAMETERS p_post RADIOBUTTON GROUP gr1.
POSITION 40.
SELECTION-SCREEN PUSHBUTTON 40(9) but1 USER-COMMAND cli1.
POSITION 64.
SELECTION-SCREEN COMMENT 64(6) com3.
POSITION 71.
PARAMETER p_status TYPE char4.
POSITION 1.
SELECTION-SCREEN END OF LINE .
SELECTION-SCREEN END OF BLOCK file_park.
SELECTION-SCREEN BEGIN OF BLOCK user_info WITH FRAME TITLE text-003.
SELECT-OPTIONS s_user FOR usr02-bname .
SELECTION-SCREEN SKIP 2.
SELECTION-SCREEN PUSHBUTTON 60(10) but2 USER-COMMAND cli2.
SELECTION-SCREEN END OF BLOCK user_info.
*----------------------------------------------------------------------*
* ON LOAD EVENT - Occurs only once, when the program is loaded *
*----------------------------------------------------------------------*
LOAD-OF-PROGRAM.
*----------------------------------------------------------------------*
* INITIALIZATION EVENT - processing prior to selection screen *
*----------------------------------------------------------------------*
INITIALIZATION.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN OUTPUT - processing prior to selection screen *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN OUTPUT.
PERFORM authority_check.
but1 = 'Update'.
but2 = 'Find User'.
com1 = 'Park'.
com2 = 'Post'.
com3 = 'Status'.
IF gv_park = 'X'.
p_status = 'PARK'.
ELSE.
p_status = 'POST'.
ENDIF.
AT SELECTION-SCREEN.
CLEAR gv_user_info .
IF sscrfields = 'CLI1'.
PERFORM posting_block_update .
ELSEIF sscrfields = 'CLI2'.
PERFORM report_user_info.
ENDIF.
***************************************************************
* Initialization event
***************************************************************
INITIALIZATION.
* w_repname = sy-repid.
PERFORM initialize_fieldcat.
PERFORM initialize_layout.
***************************************************************
* Start of selection
***************************************************************
START-OF-SELECTION.
* clear all global variables
PERFORM clear_memory.
* Read file from the presentation server
PERFORM read_local_file.
* Process the data read from the file
PERFORM process_data.
* Display ALV report..
PERFORM display_alv_rpt.
* LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 0.
*Print Data
* CALL SCREEN 9001.
*come back
*ENDIF.
*----------------------------------------------------------------------*
* AT SELECTION-SCREEN EVENTS - validate user input *
*----------------------------------------------------------------------*
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_file.
*Pop up screen to select the local file from PC
CALL FUNCTION 'F4_FILENAME'
IMPORTING
file_name = p_file.
* -------- S T A R T O F M A I N P R O C E S S I N G -------- *
*----------------------------------------------------------------------*
* START-OF-SELECTION - start of database access *
*----------------------------------------------------------------------*
START-OF-SELECTION.
IF gv_continue_flag IS NOT INITIAL.
* CASE sy-ucomm.
* WHEN 'CONTINUE'.
SET PF-STATUS 'SCREEN3'.
* ENDCASE.
* Data validation / posting
PERFORM check_data.
PERFORM report_error.
PERFORM update_log_table.
ENDIF. "IF gv_continue_flag IS NOT INITIAL
AT USER-COMMAND.
CASE sy-ucomm.
WHEN 'BACK2'.
CLEAR gv_continue_flag.
LEAVE TO SCREEN 9001.
* CALL SCREEN 9001.
* LEAVE LIST-PROCESSING AND RETURN TO SCREEN 9001.
WHEN 'EXIT' OR 'CANCEL'.
LEAVE PROGRAM.
ENDCASE.
*----------------------------------------------------------------------*
* END-OF-SELECTION - end of logical database selections *
*----------------------------------------------------------------------*
*END-OF-SELECTION.
*----------------------------------------------------------------------*
* FORMS *
*----------------------------------------------------------------------*
*&--------------------------------------------------------------------*
*& Form clear_memory
*&--------------------------------------------------------------------*
* Clear All global tables and variables
*---------------------------------------------------------------------*
FORM clear_memory.
REFRESH : gt_file_data[],
gt_line_item[] ,
gt_file_upload[] ,
gt_error_log[].
* gt_run_log[].
CLEAR : gs_header ,
gs_file_data ,
gs_line_item ,
gs_file_upload ,
gs_error_log ,
gs_bgr00 ,
gs_bbkpf ,
gs_bbseg ,
* gs_run_log ,
gv_filename ,
gv_file_type ,
gv_start_date ,
gv_start_time .
ENDFORM. "CLEAR_MEMORY
*&---------------------------------------------------------------------*
*& Form authority_check
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM authority_check.
DATA: "ls_ztfi_param TYPE ztfi_param,
lv_authority_check TYPE char1.
AUTHORITY-CHECK OBJECT 'F_BKPF_BUP'
ID 'BRGRU' FIELD 'TEST'.
IF sy-subrc = 0.
lv_authority_check = gc_success.
ENDIF.
LOOP AT SCREEN.
IF lv_authority_check <> gc_success.
IF screen-name = 'P_PARK' OR
screen-name = 'P_POST' OR
screen-name = 'BUT1' .
screen-input = 0.
ENDIF.
ENDIF.
IF screen-name = 'P_STATUS' .
screen-input = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
* SELECT SINGLE value INTO gv_park
* FROM ztfi_param
* WHERE param_name = 'PARK_INDICATOR'.
*
* IF sy-subrc = 0.
*
* IF gv_park = 'X'.
* p_park = 'X'.
* p_post = ' '.
* ELSE.
* p_park = ' '.
* p_post = 'X'.
* ENDIF.
*
* ENDIF.
ENDFORM. "authority_check
*&---------------------------------------------------------------------*
*& Form report_user_info
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM report_user_info.
DATA : lt_return TYPE TABLE OF bapiret2,
lt_user TYPE TABLE OF usr01-bname.
DATA : ls_return TYPE bapiret2,
ls_address TYPE bapiaddr3,
ls_user TYPE usr01-bname.
DATA: lv_user TYPE bapibname-bapibname,
lv_string TYPE string.
LEAVE TO LIST-PROCESSING AND RETURN TO SCREEN 1000.
SET PF-STATUS space.
SELECT bname FROM usr01 INTO TABLE lt_user WHERE bname IN s_user.
IF sy-subrc = 0.
WRITE :/ 'User Details'.
SKIP 1.
LOOP AT lt_user INTO ls_user.
lv_user = ls_user.
CALL FUNCTION 'BAPI_USER_GET_DETAIL'
EXPORTING
username = lv_user
IMPORTING
address = ls_address
TABLES
return = lt_return.
CONCATENATE ls_address-firstname
ls_address-lastname
INTO lv_string
SEPARATED BY space.
WRITE :/ 'User Id :',lv_user,
/ 'Name :',lv_string.
SKIP 1 .
ENDLOOP.
ENDIF.
ENDFORM. "report_user_info
*&---------------------------------------------------------------------*
*& Form posting_block_update
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
FORM posting_block_update.
* DATA : ls_ztfi_param TYPE ztfi_param.
* IF p_park <> gv_park.
*
* ls_ztfi_param-param_name = 'PARK_INDICATOR'.
* ls_ztfi_param-value = p_park.
*
* MODIFY ztfi_param FROM ls_ztfi_param.
*
* COMMIT WORK.
*
* gv_park = p_park.
*
* ENDIF.
IF gv_park = 'X'.
MESSAGE 'Posting in previous period is set to PARK' TYPE 'S'.
ELSE.
MESSAGE 'Posting in previous period is set to POST' TYPE 'S'.
ENDIF.
ENDFORM. "posting_block_update
*&--------------------------------------------------------------------*
*& Form read_local_file
*&--------------------------------------------------------------------*
* Reads the file from presentation server. The file format is CSV
*---------------------------------------------------------------------*
FORM read_local_file.
DATA lv_filename TYPE string.
lv_filename = p_file.
IF sy-mandt = '100'.
MESSAGE ' Can not run at client 100' TYPE 'I'.
LEAVE LIST-PROCESSING.
ENDIF.
*Check whether the file is already uploaded .
PERFORM check_interface_run_log.
*Read the file from presentation server
CALL FUNCTION 'GUI_UPLOAD'
EXPORTING
filename = lv_filename
TABLES
data_tab = gt_file_data
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. "IF SY-SUBRC <> 0.
*Remove unwanted lines from file
DELETE gt_file_data INDEX 1.
DELETE gt_file_data INDEX 2.
DELETE gt_file_data INDEX 2.
ENDFORM. "read_local_file
*&--------------------------------------------------------------------*
*& Form process_data
*&--------------------------------------------------------------------*
* This form implemets the following functionalities
*---------------------------------------------------------------------*
* 1. Split each record into individual fields
*---------------------------------------------------------------------*
* 2. Check each record for mandatory and optional fields
*---------------------------------------------------------------------*
* 3. Data validation for positng the document
*---------------------------------------------------------------------*
* 4. Upload the file to server if there is no validation errors
*---------------------------------------------------------------------*
FORM process_data.
*&---------------------------------------------------------------------
*& Local Variables
*&---------------------------------------------------------------------
DATA : lv_rec_type TYPE char1,
lv_amt_debit TYPE char15,
lv_amt_credit TYPE char15,
lv_exchg_rate TYPE char15,
lv_line_type TYPE char1,
lv_line_count TYPE i,
lv_string TYPE string, "#EC NEEDED
lv_index TYPE i,
lv_park_indicator TYPE char10,
lv_eof_indicator TYPE char1,
lv_post_date TYPE char10,
lv_doc_date TYPE char10.
* Exit the form If an error occured in any of the previous Blocks
CLEAR lv_eof_indicator.
* SELECT SINGLE value INTO lv_park_indicator
* FROM ztfi_param
* WHERE param_name = 'PARK_INDICATOR'.
*
* IF sy-subrc = 0.
*
* IF lv_park_indicator = 'X'.
*
* gv_park = 'X'.
*
* ENDIF.
*
* ENDIF.
lv_line_count = 0.
LOOP AT gt_file_data INTO gs_file_data.
lv_index = sy-tabix.
IF lv_index = 1.
* Split document header data
SPLIT gs_file_data
AT gc_saparator
INTO
gs_header-company_code
gs_header-doc_type
lv_doc_date
lv_post_date
gs_header-currency
lv_exchg_rate
gs_header-ref_num
gs_header-head_text
lv_string
IN CHARACTER MODE.
gs_header-record_no = 2.
IF gs_header-currency = 'GBP'.
CLEAR gs_header-exchg_rate .
ELSE.
gs_header-exchg_rate = lv_exchg_rate.
ENDIF.
* Data input format change with left padding of zeros
PERFORM convert_data_input CHANGING lv_doc_date.
* Data input format change with left padding of zeros
PERFORM convert_data_input CHANGING gs_header-company_code.
CALL FUNCTION 'CONVERSION_EXIT_DATEX_INPUT'
EXPORTING
input = lv_doc_date
IMPORTING
output = gs_header-doc_date.
* Data input format change with left padding of zeros
PERFORM convert_data_input CHANGING lv_post_date.
CALL FUNCTION 'CONVERSION_EXIT_DATEX_INPUT'
EXPORTING
input = lv_post_date
IMPORTING
output = gs_header-post_date.
SPLIT gv_filename AT gc_dot
INTO gs_header-ref_num
lv_string
IN CHARACTER MODE.
*Check the posting period.
ELSE.
* Split documents items data
ADD 1 TO lv_line_count.
SPLIT gs_file_data
AT gc_saparator
INTO
gs_line_item-account_num
gs_line_item-cost_centre
gs_line_item-order_no
gs_line_item-segment
gs_line_item-profit_ctr
lv_amt_debit
lv_amt_credit
gs_line_item-tax_code
gs_line_item-company_code
gs_line_item-trade_part
gs_line_item-movement_type
gs_line_item-item_text
lv_string
IN CHARACTER MODE.
IF gs_line_item-account_num IS INITIAL AND
gs_line_item-cost_centre IS INITIAL AND
gs_line_item-order_no IS INITIAL AND
gs_line_item-segment IS INITIAL AND
gs_line_item-profit_ctr IS INITIAL.
EXIT.
ELSE.
gs_line_item-amt_debit = lv_amt_debit.
gs_line_item-amt_credit = lv_amt_credit.
gs_line_item-record_no = lv_index + 3.
gs_line_item-line_item_no = lv_line_count.
* Data input format change with left padding of zeros
PERFORM convert_data_input CHANGING
gs_line_item-account_num.
* Data input format change with left padding of zeros
PERFORM convert_data_input CHANGING
gs_line_item-cost_centre.
APPEND gs_line_item TO gt_line_item.
CLEAR gs_line_item.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. "Process_data
*&--------------------------------------------------------------------*
*& Form CONVERT_DATA_INPUT
*&--------------------------------------------------------------------*
* COverts the contents of the data to left padded with zeros
*---------------------------------------------------------------------*
* -->DATA text
*---------------------------------------------------------------------*
FORM convert_data_input CHANGING lv_data TYPE any.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
EXPORTING
input = lv_data
IMPORTING
output = lv_data.
ENDFORM. "CONVERt_DATA_INPUT
*&--------------------------------------------------------------------*
*& Form CHECK_DATA
*&--------------------------------------------------------------------*
* This form implements the following functionalities
*---------------------------------------------------------------------*
* 1. Split the document if line items are more than 950
*---------------------------------------------------------------------*
* 2. Mandatory and optional field check
*---------------------------------------------------------------------*
* 3. Posting rehersal for data validation
*---------------------------------------------------------------------*
* 4. format the data into application server file formatt
*---------------------------------------------------------------------*
*
*---------------------------------------------------------------------*
FORM check_data.
*&---------------------------------------------------------------------
*& Local Variables
*&---------------------------------------------------------------------
DATA : lv_line_count TYPE i,
lv_str_length TYPE i,
lv_debit TYPE bseg-wrbtr,
lv_credit TYPE bseg-wrbtr,
lv_answer TYPE char1.
lv_debit = 0.
lv_credit = 0.
gs_error_log-record_no = gs_header-record_no.
* Mandatory field check for Document header.
IF gs_header-company_code IS INITIAL OR
gs_header-doc_type IS INITIAL OR
gs_header-currency IS INITIAL OR
gs_header-doc_date IS INITIAL OR
gs_header-post_date IS INITIAL .
gs_error_log-message = 'Mandatory Field Missing'.
APPEND gs_error_log TO gt_error_log.
ENDIF. "IF GS_HEADER-UPLOAD_TYPE IS INITIAL.
DESCRIBE TABLE gt_line_item LINES lv_line_count.
IF lv_line_count > 950.
MESSAGE 'File Validation Error : Number of lines more than 950' TYPE 'I'.
LEAVE LIST-PROCESSING.
ELSE.
PERFORM bapi_document_check.
ENDIF.
ENDFORM. "check_data
*&--------------------------------------------------------------------*
*& Form GET_FILENAME
*&--------------------------------------------------------------------*
* This from extracts the filename from the complete local file path
*---------------------------------------------------------------------*
* Then the physical file path is extracted from the logical file path
*---------------------------------------------------------------------*
* of application server file. The complete application server file
*---------------------------------------------------------------------*
* path is formed by combining the physical path and filename.
*---------------------------------------------------------------------*
FORM get_filename.
DATA: lv_path(150) TYPE c,
lv_lines TYPE i.
DATA : lt_split_data TYPE STANDARD TABLE OF char100,
ls_split_data TYPE char100.
lv_path = p_file.
SPLIT lv_path AT gc_slash INTO TABLE lt_split_data.
DESCRIBE TABLE lt_split_data LINES lv_lines.
READ TABLE lt_split_data INTO ls_split_data INDEX lv_lines.
gv_filename = ls_split_data.
ENDFORM. "Get_header_text
*&--------------------------------------------------------------------*
*& Form report_error
*&--------------------------------------------------------------------*
* This form reports all errors detected during data validations
*---------------------------------------------------------------------*
FORM report_error.
DATA : lv_line_no TYPE i.
lv_line_no = 4.
IF gt_error_log[] IS NOT INITIAL.
SKIP 1.
WRITE : / 'Date :' , sy-datum,
/ 'Time :' , sy-uzeit,
/ 'User Name :' , sy-uname,
/ 'File Name :' , gv_filename.
SKIP 1.
SORT gt_error_log BY record_no ASCENDING.
IF gv_check_level = gc_line.
WRITE :/ 'File Check : Error in Line item level'.
ELSE.
WRITE :/ 'File Check : Error in Dcoument level'.
ENDIF.
LOOP AT gt_error_log INTO gs_error_log FROM 2.
AT NEW record_no.
WRITE :/1(11)'Line No :', 14(5) gs_error_log-record_no.
ENDAT.
WRITE :/1(10)'Error :', 14(90) gs_error_log-message.
ENDLOOP.
ENDIF.
ENDFORM. "report_error
*&--------------------------------------------------------------------*
*& Form Update_Log_table
*&--------------------------------------------------------------------*
*& This form updates the interface run log table with the
*---------------------------------------------------------------------*
* current status of the file
*---------------------------------------------------------------------*
FORM update_log_table.
*&---------------------------------------------------------------------
*& Local Variables
*&---------------------------------------------------------------------
* IF gt_error_log[] IS INITIAL.
* gs_run_log-file_name = gv_filename.
* gs_run_log-post_date = sy-datum.
* gs_run_log-post_time = sy-uzeit.
*
*
**Insert the log entry into table
* MODIFY ztfi_int_run_log
* FROM gs_run_log.
*
* IF sy-subrc = 0.
*
* COMMIT WORK.
*
* ENDIF. "IF SY-SUBRC = 0.
*
* ENDIF.
*
ENDFORM. "Update_Log_table
*&--------------------------------------------------------------------*
*& Form check_interface_run_log
*&--------------------------------------------------------------------*
* Validation of the process using log entries in ZTFI_INT_RUN_LOG
*---------------------------------------------------------------------*
* Any process (check,upload,Post) will checked before excecution
*---------------------------------------------------------------------*
* to know whether it is already done for the same file or not.This
*---------------------------------------------------------------------*
* This validation prevents the user from repeating the process
*---------------------------------------------------------------------*
* by mistake.
*---------------------------------------------------------------------*
FORM check_interface_run_log.
DATA : lv_post_date TYPE char10,
lv_post_time TYPE char10,
lv_answer TYPE char1.
*Get the file path for the application server file
PERFORM get_filename.
**Get all records corresonding to the file from run log table
* SELECT * FROM ztfi_int_run_log INTO TABLE gt_run_log
* WHERE file_name = gv_filename .
*
* IF sy-dbcnt > 1.
*
* SORT gt_run_log BY post_date DESCENDING post_time DESCENDING.
*
* ENDIF.
* READ TABLE gt_run_log INTO gs_run_log INDEX 1.
* IF sy-subrc = 0.
*
* WRITE gs_run_log-post_date TO lv_post_date.
*
* WRITE gs_run_log-post_time TO lv_post_time.
*
* CONCATENATE 'File already posted on'
* lv_post_date
* 'Time '
* lv_post_time
* 'Would you like to continue ?'
* INTO
* gv_string
* SEPARATED BY space.
*
* CALL FUNCTION 'POPUP_TO_CONFIRM'
* EXPORTING
* titlebar = 'Confirm file Name'
* text_question = gv_string
* text_button_1 = 'Yes'
* text_button_2 = 'No'
* display_cancel_button = ' '
* start_column = 20
* start_row = 10
* iv_quickinfo_button_1 = 'Proceed with posting process'
* iv_quickinfo_button_2 = 'Cancel the posting process'
* IMPORTING
* answer = lv_answer
* EXCEPTIONS
* text_not_found = 1
* OTHERS = 2.
*
* IF sy-subrc <> 0.
* MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
* WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
* ENDIF.
*
* ENDIF.
*
IF lv_answer = gc_cancel.
PERFORM clear_memory.
LEAVE LIST-PROCESSING.
ENDIF.
ENDFORM. "CHECK_INTERFACE_RUN_LOG
*&--------------------------------------------------------------------*
*& Form bapi_document_check
*&--------------------------------------------------------------------*
* Check The accounting document using BAPI_ACC_DOCUMENT_CHECK
*---------------------------------------------------------------------*
FORM bapi_document_check.
CONSTANTS :
lc_idoc TYPE char4 VALUE 'IDOC',
lc_rfbu TYPE char4 VALUE 'RFBU',
lc_dest TYPE bdi_logsys-logsys VALUE space,
lc_msg_id TYPE symsgid VALUE 'F5',
lc_msg_no TYPE symsgno VALUE '201'.
DATA: ls_doc_header TYPE bapiache09,
lc_ref_key TYPE bapiache01-obj_key,
lv_line_cnt TYPE i,
lv_error TYPE char1,
lv_post TYPE char1,
lv_loop_cnt TYPE i,
lv_lines TYPE i.
DATA : lv_line_count TYPE i,
lv_str_length TYPE i,
lv_debit TYPE bseg-wrbtr,
lv_credit TYPE bseg-wrbtr,
lv_answer TYPE char1,
lv_comp_code TYPE bukrs.
DATA:
lt_accnt_rec TYPE TABLE OF bapiacar09,
lt_accnt_gl_tmp TYPE TABLE OF bapiacgl09,
lt_accnt_gl TYPE TABLE OF bapiacgl09,
lt_accnt_tax TYPE TABLE OF bapiactx09,
lt_currency_amt TYPE TABLE OF bapiaccr09, "#EC NEEDED
lt_return TYPE TABLE OF bapiret2 ,
lt_accnt_pay TYPE TABLE OF bapiacap09.
DATA: lt_belnr TYPE STANDARD TABLE OF rf048_d INITIAL SIZE 0.
DATA: ls_belnr TYPE rf048_d.
DATA: gt_a053 TYPE TABLE OF a053,
gs_a053 TYPE a053.
DATA: ls_e1bpache09 TYPE e1bpache09,
ls_e1bpacgl09 TYPE e1bpacgl09,
ls_e1bpactx09 TYPE e1bpactx09,
ls_e1bpaccr09 TYPE e1bpaccr09.
DATA:
ls_accnt_gl TYPE bapiacgl09,
ls_accnt_tax TYPE bapiactx09,
ls_currency_amt TYPE bapiaccr09,
ls_return TYPE bapiret2 .
CALL FUNCTION 'OWN_LOGICAL_SYSTEM_GET'
IMPORTING
own_logical_system = ls_doc_header-obj_sys.
ls_doc_header-obj_type = lc_idoc.
CONCATENATE sy-datum
sy-uzeit
INTO ls_doc_header-obj_key.
*create reference key yourself above statement,
ls_doc_header-username = sy-uname.
ls_doc_header-header_txt = gs_header-head_text .
ls_doc_header-comp_code = gs_header-company_code.
ls_doc_header-doc_date = gs_header-doc_date.
ls_doc_header-pstng_date = gs_header-post_date.
ls_doc_header-fisc_year = gs_header-post_date+0(4).
ls_doc_header-doc_type = gs_header-doc_type.
ls_doc_header-ref_doc_no = gs_header-ref_num.
ls_doc_header-bus_act = lc_rfbu.
LOOP AT gt_line_item INTO gs_line_item .
ADD 1 TO lv_line_cnt.
CLEAR ls_accnt_gl.
ls_accnt_gl-itemno_acc = lv_line_cnt.
ls_accnt_gl-gl_account = gs_line_item-account_num.
ls_accnt_gl-tax_code = gs_line_item-tax_code.
ls_accnt_gl-item_text = gs_line_item-item_text.
ls_accnt_gl-costcenter = gs_line_item-cost_centre.
ls_accnt_gl-orderid = gs_line_item-order_no.
ls_accnt_gl-profit_ctr = gs_line_item-profit_ctr.
* ls_accnt_gl-segment = gs_line_item-segment.
IF gs_line_item-company_code IS INITIAL.
ls_accnt_gl-comp_code = gs_header-company_code.
ENDIF.
ls_accnt_gl-trade_id = gs_line_item-trade_part.
ls_accnt_gl-cs_trans_t = gs_line_item-movement_type.
APPEND ls_accnt_gl TO lt_accnt_gl.
CLEAR ls_currency_amt.
ls_currency_amt-itemno_acc = lv_line_cnt.
ls_currency_amt-currency = gs_header-currency.
ls_currency_amt-exch_rate = gs_header-exchg_rate.
IF gs_line_item-amt_debit IS NOT INITIAL .
ls_currency_amt-amt_doccur = gs_line_item-amt_debit.
ELSE.
ls_currency_amt-amt_doccur = gs_line_item-amt_credit * -1.
ENDIF.
APPEND ls_currency_amt TO lt_currency_amt.
ENDLOOP.
lt_accnt_gl_tmp = lt_accnt_gl.
SORT lt_accnt_gl_tmp BY tax_code.
DELETE ADJACENT DUPLICATES FROM lt_accnt_gl_tmp COMPARING tax_code.
LOOP AT lt_accnt_gl_tmp INTO ls_accnt_gl.
ADD 1 TO lv_line_cnt.
* CLEAR ls_accnt_tax.
*
*
* IF ls_accnt_gl-comp_code IS INITIAL.
* lv_comp_code = gs_header-company_code.
* ELSE.
* lv_comp_code = ls_accnt_gl-comp_code.
* ENDIF.
*
*
* CALL FUNCTION 'FI_TAX_GET_CONDITION_TYPES'
* EXPORTING
* i_bukrs = lv_comp_code
* i_mwskz = ls_accnt_gl-tax_code
* TABLES
* t_a053 = gt_a053[]
* EXCEPTIONS
* parameter_error = 1
* bukrs_not_found = 2
* country_not_found = 3
* entry_not_found = 4
* kalsm_not_found = 5
* txjcd_not_found = 6
* invalid_length = 7
* unknown_error = 8
* OTHERS = 9.
*
* IF sy-subrc = 0.
*
* READ TABLE gt_a053[] INTO gs_a053 WITH KEY mwskz = ls_accnt_gl-tax_code.
*
* ls_accnt_tax-cond_key = gs_a053-kschl.
*
* ENDIF.
ls_accnt_tax-itemno_acc = lv_line_cnt.
ls_accnt_tax-tax_code = gs_line_item-tax_code.
APPEND ls_accnt_tax TO lt_accnt_tax.
CLEAR ls_currency_amt.
ls_currency_amt-itemno_acc = lv_line_cnt.
ls_currency_amt-currency = gs_header-currency.
ls_currency_amt-exch_rate = gs_header-exchg_rate.
APPEND ls_currency_amt TO lt_currency_amt.
ENDLOOP.
CLEAR lv_error.
gv_check_level = gc_line.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
DESTINATION lc_dest
EXPORTING
documentheader = ls_doc_header "#EC ENHOK
TABLES
accountgl = lt_accnt_gl "#EC ENHOK
accounttax = lt_accnt_tax "#EC ENHOK
return = lt_return.
*Check the return table for any errors detected
LOOP AT lt_return INTO ls_return WHERE type = gc_error.
CLEAR gs_error_log.
gs_error_log-record_no = ls_return-row + 4.
gs_error_log-message = ls_return-message.
APPEND gs_error_log TO gt_error_log .
lv_error = gc_ok.
ENDLOOP. " LOOP AT GT_RETURN INTO GS_RETURN.
ADD 1 TO lv_loop_cnt.
IF gt_error_log[] IS INITIAL.
gv_check_level = gc_header.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_CHECK'
DESTINATION lc_dest
EXPORTING
documentheader = ls_doc_header "#EC ENHOK
TABLES
accountgl = lt_accnt_gl "#EC ENHOK
accounttax = lt_accnt_tax "#EC ENHOK
currencyamount = lt_currency_amt
return = lt_return.
*Check the return table for any errors detected
LOOP AT lt_return INTO ls_return WHERE type = gc_error.
CLEAR gs_error_log.
gs_error_log-record_no = ls_return-row + 4.
gs_error_log-message = ls_return-message.
APPEND gs_error_log TO gt_error_log .
ENDLOOP. " LOOP AT GT_RETURN INTO GS_RETURN.
IF gt_error_log IS INITIAL.
DATA:lv_period_file TYPE monat,
lv_period_system TYPE monat,
lt_ret_table TYPE bapireturn1.
CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'
EXPORTING
companycodeid = ls_doc_header-comp_code
posting_date = ls_doc_header-pstng_date
IMPORTING
* FISCAL_YEAR = lv_FISCAL_YEAR
fiscal_period = lv_period_file
return = lt_ret_table .
CALL FUNCTION 'BAPI_COMPANYCODE_GET_PERIOD'
EXPORTING
companycodeid = ls_doc_header-comp_code
posting_date = sy-datum
IMPORTING
fiscal_year = gv_fiscal_year
fiscal_period = lv_period_system
return = lt_ret_table.
IF lv_period_file >= lv_period_system.
CLEAR gv_park.
ENDIF.
IF gv_park <> 'X'.
WRITE : / 'Date :' , sy-datum,
/ 'Time :' , sy-uzeit,
/ 'User Name :' , sy-uname,
/ 'File Name :' , gv_filename.
SKIP 1.
CALL FUNCTION 'BAPI_ACC_DOCUMENT_POST'
DESTINATION lc_dest
EXPORTING
documentheader = ls_doc_header "#EC ENHOK
TABLES
accountgl = lt_accnt_gl "#EC ENHOK
accounttax = lt_accnt_tax "#EC ENHOK
currencyamount = lt_currency_amt
return = lt_return.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'.
CALL FUNCTION 'FI_ACCBELNR_GET'
TABLES
t_belnr = lt_belnr.
CLEAR ls_belnr.
LOOP AT lt_belnr INTO ls_belnr .
WRITE :/'Document Posted :', ls_belnr-belnr_e.
WRITE :' Company Code :', : ls_belnr-bukrs.
ENDLOOP.
ELSE.
MESSAGE 'The Document will be Parked' TYPE 'I'.
*Get the new session name
PERFORM get_new_session_name.
CLEAR gs_bgr00 .
TRANSLATE gs_bgr00 USING gc_format.
*Fill file header
lv_str_length = STRLEN( gv_filename ).
lv_str_length = lv_str_length - 4.
gs_bgr00-stype = gc_s0.
gs_bgr00-group = gv_session_name.
gs_bgr00-mandt = sy-mandt.
gs_bgr00-usnam = sy-uname.
gs_bgr00-start = space.
gs_bgr00-xkeep = gc_ok.
gs_bgr00-nodata = gc_nodata.
gs_file_upload-data = gs_bgr00. "#EC ENHOK
APPEND gs_file_upload TO gt_file_upload.
CLEAR gs_file_upload.
CLEAR gs_bbkpf.
TRANSLATE gs_bbkpf USING gc_format.
*Fill Document header
gs_bbkpf-stype = gc_s1.
gs_bbkpf-tcode = gc_tcode.
gs_bbkpf-bukrs = gs_header-company_code.
gs_bbkpf-blart = gs_header-doc_type.
WRITE gs_header-doc_date TO gs_bbkpf-bldat .
WRITE gs_header-post_date TO gs_bbkpf-budat .
gs_bbkpf-waers = gs_header-currency.
IF gs_header-exchg_rate IS NOT INITIAL.
gs_bbkpf-kursf = gs_header-exchg_rate.
ENDIF.
IF gs_header-ref_num IS NOT INITIAL.
gs_bbkpf-xblnr = gs_header-ref_num.
ENDIF. "IF GS_HEADER-REF_NUM IS NOT INITIAL.
IF gs_header-head_text IS NOT INITIAL.
gs_bbkpf-bktxt = gs_header-head_text.
ENDIF. "IF GS_HEADER-REF_NUM IS NOT INITIAL.
LOOP AT gt_line_item INTO gs_line_item.
CLEAR gs_bbseg.
TRANSLATE gs_bbseg USING gc_format.
IF gs_line_item-line_item_no = 1.
gs_file_upload-data = gs_bbkpf. "#EC ENHOK
APPEND gs_file_upload TO gt_file_upload.
CLEAR gs_file_upload.
ENDIF. "IF GS_LINE_ITEM-LINE_ITEM_NO = 1.
* fill document items.
gs_bbseg-stype = gc_s2.
gs_bbseg-tbnam = gc_bseg.
IF gs_line_item-amt_debit IS NOT INITIAL.
gs_bbseg-newbs = gc_pkey_40 .
WRITE gs_line_item-amt_debit
TO gs_bbseg-wrbtr
NO-GROUPING
CURRENCY gs_bbkpf-waers .
ELSE.
gs_bbseg-newbs = gc_pkey_50.
WRITE gs_line_item-amt_credit
TO gs_bbseg-wrbtr
NO-GROUPING
CURRENCY gs_bbkpf-waers .
ENDIF.
IF gs_line_item-tax_code IS NOT INITIAL.
gs_bbseg-mwskz = gs_line_item-tax_code.
ENDIF. "IF GS_LINE_ITEM-TAX_CODE IS NOT INITIAL.
IF gs_line_item-cost_centre IS NOT INITIAL.
gs_bbseg-kostl = gs_line_item-cost_centre.
ENDIF. "IF GS_LINE_ITEM-COST_CENTRE IS NOT INITIAL.
IF gs_line_item-order_no IS NOT INITIAL.
gs_bbseg-aufnr = gs_line_item-order_no.
ENDIF. "IF GS_LINE_ITEM-ORDER_NO IS NOT INITIAL.
IF gs_line_item-item_text IS NOT INITIAL.
gs_bbseg-sgtxt = gs_line_item-item_text.
ENDIF.
IF gs_line_item-profit_ctr IS NOT INITIAL.
gs_bbseg-prctr = gs_line_item-profit_ctr.
ENDIF.
IF gs_line_item-segment IS NOT INITIAL.
gs_bbseg-segment = gs_line_item-segment.
ENDIF.
IF gs_line_item-account_num IS NOT INITIAL.
gs_bbseg-newko = gs_line_item-account_num.
ENDIF.
IF gs_line_item-company_code IS NOT INITIAL AND
gs_line_item-line_item_no <> 1.
gs_bbseg-newbk = gs_line_item-company_code.
ENDIF.
gs_file_upload-data = gs_bbseg. "#EC ENHOK
APPEND gs_file_upload TO gt_file_upload.
CLEAR gs_file_upload.
ENDLOOP.
PERFORM park_document.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. "bapi_document_check
*&--------------------------------------------------------------------*
*& Form CONVERT_DATE_FORMAT
*&--------------------------------------------------------------------*
* Converts date formatt from DDMMYYYY to YYYYMMDD
*---------------------------------------------------------------------*
* -->DATE Date
*---------------------------------------------------------------------*
FORM convert_date_format CHANGING date TYPE any .
CALL FUNCTION 'CONVERSION_EXIT_DATEX_INPUT'
EXPORTING
input = date
IMPORTING
output = date.
ENDFORM. "CONVERt_DATE_INPUT
*&--------------------------------------------------------------------*
*& Form get_new_session_name
*&--------------------------------------------------------------------*
* Get new Session Name by from date and time
*---------------------------------------------------------------------*
FORM get_new_session_name.
CONSTANTS :
lc_fi TYPE char2 VALUE 'FI'.
gv_session_name+0(2) = lc_fi.
gv_session_name+2(4) = sy-datum+2(4).
gv_session_name+6(6) = sy-uzeit.
ENDFORM. "get_new_session_name
**&--------------------------------------------------------------------*
**& Form Post_data
**&--------------------------------------------------------------------*
** This form is called only when the program is run in background
**---------------------------------------------------------------------*
** The form uses RFBIBL00 program for posting the data to SAP
**---------------------------------------------------------------------*
*
FORM park_document.
*&---------------------------------------------------------------------
*& Local tables
*&---------------------------------------------------------------------
DATA : lt_list TYPE STANDARD TABLE OF abaplist,
lt_vlist TYPE STANDARD TABLE OF char100 .
*&---------------------------------------------------------------------
*& Local Structures
*&---------------------------------------------------------------------
DATA : ls_vlist TYPE char100 .
*&---------------------------------------------------------------------
*& Local Variables
*&---------------------------------------------------------------------
DATA : lv_que_id TYPE apql-qid,
lv_group_id TYPE apql-groupid,
lv_read_log TYPE char1 ,
lv_server_file TYPE rcgfiletr-ftappl,
lv_local_file TYPE rcgfiletr-ftfront,
lv_server_filename TYPE ibipparms-path,
lv_string TYPE string,
lv_doc_no TYPE char10.
DATA :lv_numkr TYPE numkr,
lv_nrlevel_old TYPE nrlevel,
lv_nrlevel_new TYPE nrlevel.
lv_server_filename = 'G:usrsapFCDDVEBMGS00workpark.dat'.
OPEN DATASET lv_server_filename
FOR OUTPUT
IN TEXT MODE
ENCODING DEFAULT.
LOOP AT gt_file_upload INTO gs_file_upload.
*Transfer data to application server
TRANSFER gs_file_upload TO lv_server_filename.
ENDLOOP. " LOOP AT GT_FILE_UPLOAD INTO GS_FILE_UPLOAD.
CLOSE DATASET lv_server_filename.
SELECT SINGLE numkr FROM t003 INTO lv_numkr WHERE blart = 'SA'.
SELECT SINGLE nrlevel FROM nriv INTO lv_nrlevel_old WHERE
object = 'RF_BELEG' AND
subobject = gs_header-company_code AND
nrrangenr = lv_numkr AND
toyear = gv_fiscal_year.
SUBMIT rfbibl00 WITH ds_name = lv_server_filename
WITH fl_check = space
WITH callmode = 'C'
WITH xinf = gc_ok
AND RETURN.
IF sy-subrc <> 0.
WRITE :/ 'Error: Check the file path'(028).
LEAVE LIST-PROCESSING.
ELSE.
SELECT SINGLE nrlevel FROM nriv INTO lv_nrlevel_new WHERE
object = 'RF_BELEG' AND
subobject = gs_header-company_code AND
nrrangenr = lv_numkr AND
toyear = gv_fiscal_year.
IF lv_nrlevel_old <> lv_nrlevel_new.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = lv_nrlevel_new
IMPORTING
output = lv_nrlevel_new.
WRITE :/'Document Parked :',18(10) lv_nrlevel_new.
WRITE :' Company Code :', gs_header-company_code.
ELSE.
WRITE :/'Document could not be Parked : Program Exception'.
ENDIF. "if Sy-subrc <> 0.
ENDIF.
ENDFORM. "post_data
.
*&---------------------------------------------------------------------*
*& Module USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
* For action on user command in PBO of ALV Screen 9001.
*----------------------------------------------------------------------*
MODULE user_command_9001 INPUT.
DATA: lv_savecode TYPE sy-ucomm.
lv_savecode = gv_okcode_9001.
CLEAR gv_okcode_9001.
CASE lv_savecode.
WHEN 'BACK1'.
* Go back to selection screen.
* LEAVE LIST-PROCESSING.
* EXIT.
gv_back_flag = 'X'.
gv_ucomm = 'ONLI'.
CALL SELECTION-SCREEN 1000.
* LEAVE TO SCREEN 0.
WHEN 'CONTINUE'.
* Move to next screen.
gv_continue_flag = 'X'.
LEAVE TO SCREEN 0.
ENDCASE. "case lv_savecode
ENDMODULE. " USER_COMMAND_9001 INPUT
*&---------------------------------------------------------------------*
*& Form prepare_field_catalog
*&---------------------------------------------------------------------*
* Used to prepare field catalog for table gt_line_item in ALV
*----------------------------------------------------------------------*
FORM prepare_field_catalog .
CLEAR wa_fcat.
REFRESH i_fcat.
wa_fcat-col_pos = '1'.
wa_fcat-fieldname = 'RECORD_NO'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-scrtext_m = 'Record Number'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '2'.
wa_fcat-fieldname = 'LINE_ITEM_NO'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-scrtext_m = 'Item Number'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '3'.
wa_fcat-fieldname = 'ACCOUNT_NUM'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-scrtext_m = 'Account Number'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '4'.
wa_fcat-fieldname = 'COST_CENTRE'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-scrtext_m = 'Cost Centre'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '5'.
wa_fcat-fieldname = 'ORDER_NO'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-scrtext_m = 'Order Number'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '6'.
wa_fcat-fieldname = 'SEGMENT'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-scrtext_m = 'Segment'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '7'.
wa_fcat-fieldname = 'PROFIT_CTR'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-scrtext_m = 'Profit Center'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
ENDFORM. " prepare_field_catalog
*&---------------------------------------------------------------------*
*& Module output OUTPUT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
MODULE status_9001 OUTPUT.
SET PF-STATUS 'PF9001'.
SET TITLEBAR '001'.
ENDMODULE. " STATUS_9001 OUTPUT
*&---------------------------------------------------------------------*
*& Module PREPARE_ALV OUTPUT
*&---------------------------------------------------------------------*
* Preparing ALV grid for screen 9001.
*----------------------------------------------------------------------*
MODULE prepare_alv OUTPUT.
IF gv_control IS INITIAL.
CREATE OBJECT gv_control
EXPORTING
* PARENT =
container_name = 'GV_CONTAINER'
* STYLE =
* LIFETIME = lifetime_default
* REPID =
* DYNNR =
* NO_AUTODEF_PROGID_DYNNR =
* EXCEPTIONS
* CNTL_ERROR = 1
* CNTL_SYSTEM_ERROR = 2
* CREATE_ERROR = 3
* LIFETIME_ERROR = 4
* LIFETIME_DYNPRO_DYNPRO_LINK = 5
* others = 6
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF. "IF gv_control IS INITIAL
IF gv_alv IS INITIAL.
CREATE OBJECT gv_alv
EXPORTING
* I_SHELLSTYLE = 0
* I_LIFETIME =
i_parent = gv_control
* I_APPL_EVENTS = space
* I_PARENTDBG =
* I_APPLOGPARENT =
* I_GRAPHICSPARENT =
* I_NAME =
* I_FCAT_COMPLETE = SPACE
* EXCEPTIONS
* ERROR_CNTL_CREATE = 1
* ERROR_CNTL_INIT = 2
* ERROR_CNTL_LINK = 3
* ERROR_DP_CREATE = 4
* others = 5
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDIF. "IF gv_alv IS INITIAL
* Field catalog for table in alv display
PERFORM prepare_field_catalog.
* Preparing table for ALV display
CALL METHOD gv_alv->set_table_for_first_display
* EXPORTING
* I_BUFFER_ACTIVE =
* I_BYPASSING_BUFFER =
* I_CONSISTENCY_CHECK =
* I_STRUCTURE_NAME =
* IS_VARIANT =
* I_SAVE =
* I_DEFAULT = 'X'
* IS_LAYOUT =
* IS_PRINT =
* IT_SPECIAL_GROUPS =
* IT_TOOLBAR_EXCLUDING =
* IT_HYPERLINK =
* IT_ALV_GRAPHICS =
* IT_EXCEPT_QINFO =
* IR_SALV_ADAPTER =
CHANGING
it_outtab = gt_line_item
it_fieldcatalog = i_fcat
* IT_SORT =
* IT_FILTER =
* EXCEPTIONS
* INVALID_PARAMETER_COMBINATION = 1
* PROGRAM_ERROR = 2
* TOO_MANY_LINES = 3
* others = 4
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
ENDMODULE. " output OUTPUT
*&---------------------------------------------------------------------*
*& Form INITIALIZE_FIELDCAT
*&---------------------------------------------------------------------*
* Initialize field catalog
*----------------------------------------------------------------------*
FORM initialize_fieldcat.
CLEAR wa_fcat.
REFRESH i_fcat.
wa_fcat-col_pos = '1'.
wa_fcat-fieldname = 'RECORD_NO'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-seltext = 'Record Number'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '2'.
wa_fcat-fieldname = 'LINE_ITEM_NO'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-seltext = 'Item Number'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '3'.
wa_fcat-fieldname = 'ACCOUNT_NUM'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-seltext = 'Account Number'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '4'.
wa_fcat-fieldname = 'COST_CENTRE'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-seltext = 'Cost Centre'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '5'.
wa_fcat-fieldname = 'ORDER_NO'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-seltext = 'Order Number'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '6'.
wa_fcat-fieldname = 'SEGMENT'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-seltext = 'Segment'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
wa_fcat-col_pos = '7'.
wa_fcat-fieldname = 'PROFIT_CTR'.
wa_fcat-tabname = 'GT_LINE_ITEM'.
wa_fcat-just = 'R'.
wa_fcat-seltext = 'Profit Center'.
APPEND wa_fcat TO i_fcat.
CLEAR wa_fcat.
ENDFORM. " INITIALIZE_FIELDCAT
*&---------------------------------------------------------------------*
*& Form INITIALIZE_LAYOUT
*&---------------------------------------------------------------------*
* Add layout details
*----------------------------------------------------------------------*
FORM initialize_layout .
* st_layout-colwidth_optimize = 'X'.
* st_layout-zebra = 'X'.
*
ENDFORM. " INITIALIZE_LAYOUT
*&---------------------------------------------------------------------*
*& Form display_alv_rpt
*&---------------------------------------------------------------------*
FORM display_alv_rpt .
CALL FUNCTION 'REUSE_ALV_LIST_DISPLAY'
EXPORTING
* I_INTERFACE_CHECK = ' '
* I_BYPASSING_BUFFER =
* I_BUFFER_ACTIVE = ' '
i_callback_program = sy-repid
* I_CALLBACK_PF_STATUS_SET = ' '
* I_CALLBACK_USER_COMMAND = ' '
* I_STRUCTURE_NAME =
* IS_LAYOUT =
it_fieldcat = i_fcat
* IT_EXCLUDING =
* IT_SPECIAL_GROUPS =
* IT_SORT =
* IT_FILTER =
* IS_SEL_HIDE =
* I_DEFAULT = 'X'
i_save = 'X'
* IS_VARIANT =
* IT_EVENTS =
* IT_EVENT_EXIT =
* IS_PRINT =
* IS_REPREP_ID =
* I_SCREEN_START_COLUMN = 0
* I_SCREEN_START_LINE = 0
* I_SCREEN_END_COLUMN = 0
* I_SCREEN_END_LINE = 0
* IR_SALV_LIST_ADAPTER =
* IT_EXCEPT_QINFO =
* I_SUPPRESS_EMPTY_DATA = ABAP_FALSE
* IMPORTING
* E_EXIT_CAUSED_BY_CALLER =
* ES_EXIT_CAUSED_BY_USER =
TABLES
t_outtab = gt_line_item
* EXCEPTIONS
* PROGRAM_ERROR = 1
* OTHERS = 2
.
IF sy-subrc <> 0.
* MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
* WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
*come back
ENDFORM. " display_alv_rpt
2007 Sep 18 8:55 AM
Hi
simply like this
getting user data
<b>* --- Read user-related data
call function 'BAPI_USER_GET_DETAIL'
exporting
username = username
importing
logondata = tlogondata-logondata
defaults = tdefaults-defaults
address = taddress+12
company = tcompany-company
ref_user = trefdata-ref_user
alias = taliasdata-alias
tables
parameter = xparameter
profiles = xprofiles
activitygroups = xactivitygroups
return = return.</b>
reward if usefull
2007 Sep 18 8:59 AM
u just pass data in USERNAME parameter u ll get all details of user
this will work
2007 Sep 18 11:35 AM
thanks all for yout early reply
but i to know
what for import export and table returns is used for
please tell me what i should give in then
if i want to use all the three
anuj
| User | Count |
|---|---|
| 3 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 | |
| 1 |