Application Development and Automation Discussions
Join the discussions or start your own on all things application development, including tools and APIs, programming models, and keeping your skills sharp.
cancel
Showing results for 
Search instead for 
Did you mean: 
Read only

BAPI_USER_GET_DETAIL

Former Member
0 Likes
11,340

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

6 REPLIES 6
Read only

Former Member
0 Likes
5,618

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>

Read only

Former Member
0 Likes
5,618

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

Read only

Former Member
0 Likes
5,618

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

Read only

Former Member
0 Likes
5,618

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

Read only

Former Member
0 Likes
5,618

u just pass data in USERNAME parameter u ll get all details of user

this will work

Read only

Former Member
0 Likes
5,618

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