Different role types. Was: "Hi sap gurus"
define and differentiate the following types of roles
1.single role
2.composite role
3.derived role
4.child role
5.parent role
Message was edited by: Moderator
Please use meaningfull thread subject titles.
Hi
There are 5 types of Roles:
1) Single Role.
2) Composite Role. (Max 164 Single Roles can be attached to one Composite Role)
3) Derived Roles.
4) Orphans Role.
5) Reference Roles.
<b>Composite roles </b>
A composite role is a container with several different roles. For reasons of clarity, it does not make sense and is therefore not allowed to add composite roles to composite roles. Composite roles are also called roles.
Composite roles do not contain authorization data. If you want to change the authorizations (that are represented by a composite role), you must maintain the data for each role of the composite role. Creating composite roles makes sense if some of your employees need authorizations from several roles. Instead of adding each user separately to each role required, you can set up a composite role and assign the users to that group. The users assigned to a composite role are automatically assigned to the corresponding (elementary) roles during comparison.
The menu tree of a composite role is, in the simplest case, a combination of the menus of the roles contained. When you create a new composite role, the initial menu tree is empty at first. You can set up the menu tree by choosing Read menu to add the menus of all roles included. This merging may lead to certain menu items being listed more than once. For example, a transaction or path contained in role 1 and role 2 would appear twice. If the set of roles contained in a composite role changes, the menu tree is also affected. In such a case, you can completely rebuild the menu tree or process only the changes. If you choose the latter option, the Profile Generator removes all items from the menu, which are not contained in any of the roles referenced. It is possible (and often necessary) to change the menu of a composite role at any time. You adjust these menus in the same way as the menus for roles.
<b>Derived roles </b>
Derived roles refer to roles that already exist. The derived roles inherit the menu structure and the functions included (transactions, reports, Web links, and so on) from the role referenced. A role can only inherit menus and functions if no transaction codes have been assigned to it before.
The higher-level role passes on its authorizations to the derived role as default values, which can be changed afterwards. Organizational level definitions are not passed on. They must be created anew in the inheriting role. User assignments are not passed on either. Derived roles are an elegant way of maintaining roles that do not differ in their functionality (identical menus and identical transactions) but have different characteristics with regard to the organizational level.
The menus passed on cannot be changed in the derived roles. Menu maintenance takes place exclusively in the role that passes on its values. Any changes immediately affect all inheriting roles. You can remove the inheritance relationship, but afterwards the inheriting role is treated like any other normal role. Once a relationship is removed, it cannot be established again.
In real time scenario Roles and Authorizations are primarily based on Company codes in many cases and in some scenarios are also based on Cost centers or divisions etc. IN such scenario, a Master role is created and many child roles are created with relevant Organizational levels added to the same. So any change to the master role would be drilled down to Child roles and hence it would avoid a lot of Maintenance overhead.
E.g.: Master Role -- Z_SAP_FI_BUYER_000
Child Role1 -- Z_SAP_FI_BUYER_CC1
Child Role 2 -- Z_SAP_FI_BUYER_CC2
Child Role 3 -- Z_SAP_FI_BUYER_CC3
<b>Orphans Role</b>
Orphans Roles are Stand-alone roles and are many a times required for IS uses/. So a System Admin role, a Security Auditor role and many other special roles mainly not used in Business side are created as ORPHANS. This role limits the user to a particular organization.
<b>Reference Role</b>
They are SAP standard Roles.
Reward points if helpful
Similar Messages
-
What are the different Project Type Scenarios in SAP?
hi experts,
i am new to SAP,
want to know how many types of SAP projects are there ?
What is meant by Enhancement Projects ?
if any info., helps me a lot to understand.
thanks in advance
sasiHi anji,
Good answer,
GAP ANALYSIS:
The gap analysis is the analysis on what the differences between actual system are and what the customer want to develop.
A through gap analysis will identify the gaps between how the business operates ad its needs against what the package can can't do. For each gap there will be one of three outcomes which must be recorded and auctioned, GAP must be closed and customized software can be developed close the gap, GAP must be closed but software cannot be written therefore a workaround is required, GAP does not need to be closed.
In simple terms: Gap means small cracks. In SAP world. In information technology, gap analysis is the study of the differences between two different information systems or applications( ex; existing system or legacy system with Client and new is SAP), often for the purpose of determining how to get from one state to a new state. A gap is sometimes spoken of as "the space between where we are and where we want to be." Gap analysis is undertaken as a means of bridging that space.
Actual gap analysis is time consuming and it plays vital role in blue print stage.
While implementing the SAP to one company they use ASAP Methodologies to implement it has 5 steps .
1: project preparation .
2: Business blue Print .
3: Realization .
4: Final preparation .
5: Golive .
in Business blue print they give AS IS and TOBE that means what are the different requirements are to be made to reach the customer requirement that is called Gap analysys
Regards
Suresh.D
Message was edited by:
suresh dameruppula -
What are the Different Reporting Types Offer By SAP Package
Hello everyone...
Been on SAP almost a year and finding there is alot to learn.
Question: What are the different ways to generate reports and to link reports\programs across the SAP system. I know about BW, RRI, ABAP language, CRYSTAL.
Are there any more ?
Thank you in advance....
Jimthere are four reporting possibilities using business explorer in bw:
bex analyser:
(reports displayed in normal excell)
web application:
(publishing above reports in web)
formated reporting:
(crystal reports)
mobile intelligence:
(view reports in mobiles)
hope it helps -
Why different role types?
Hi,
Qust a simple question:
Why there is a special "nested" role? I would imagine that any role could be a "member" of other roles. Why is it not that way?
Motivation behind this is simple. Imagine a hierarchical role structure. Like an bank teller has some rights, teller supervisor has all the rigts of a teller plus some additional rights, departmet director has all the rights of a supervisor (and teller) and yet some other, etc.
I will neet to create "directorManagedRole" that will contain the directors, then create "directorNestedRole" that will contain "directorManagedRole", then "supervisorManagedRole", then "supervisorNestedRole" that will be "supervisorManagedRole" + "directorNestedRole" ... I hope you get the idea.
There are plenty of role definition objects that will complicate the management of role hierarchies. I will need to create at least two role definition per "business layer" role. And this can create real confusion, because I have to assign users to "*ManagedRole" but check for "*NestedRole".
Are there any reasons why it is implemented in such a way? Why the role mechanism cannot be unified?Hi,
Qust a simple question:
Why there is a special "nested" role? I would imagine that any role could be a "member" of other roles. Why is it not that way?
Motivation behind this is simple. Imagine a hierarchical role structure. Like an bank teller has some rights, teller supervisor has all the rigts of a teller plus some additional rights, departmet director has all the rights of a supervisor (and teller) and yet some other, etc.
I will neet to create "directorManagedRole" that will contain the directors, then create "directorNestedRole" that will contain "directorManagedRole", then "supervisorManagedRole", then "supervisorNestedRole" that will be "supervisorManagedRole" + "directorNestedRole" ... I hope you get the idea.
There are plenty of role definition objects that will complicate the management of role hierarchies. I will need to create at least two role definition per "business layer" role. And this can create real confusion, because I have to assign users to "*ManagedRole" but check for "*NestedRole".
Are there any reasons why it is implemented in such a way? Why the role mechanism cannot be unified? -
SAP Address Type on the SAP Web Gui - Assignment Blocks
Hello SAP Gurus
I am trying to configure system so that different Business Roles can only see different Address Type on the SAP Web Gui - is this possible ?
For instance Business Role - "X" can only see the Standard Address Type and Business Role "Y" can not see the Standard Address but see other ones on the assignment blocks
Thank youHi Raj,
You can achieve this by enhancing the Addresses and Address Types assignment block.
Based on the Address Type 'Standard Address' entry, filter out the corresponding address
in the Addresses AB. This determination can be performed in the enhancement views.
Once the view are created, create a new configuration with Role config key 'Y''.
Add the enhancement views to the Displayed Assignment block section. And remove
the standard assignment blocks from this section so that they will not be available in
the personalization so that this user cannot view the standard address.
Regards,
Leon -
what is role and profile in SAP?
how we can diffferentiate both?Hi Swati,
Role refers to the collection of associated activities (privilages) such as transactions, reports and so on. There are 2 types of Roles, Standard Role and Derived Role. While profile is a set of authorizations that are valid for the transactions defined in that role. Roles contain no actual access. They contain a role menu composed of transaction codes. These transaction codes are then mapped into the profile automatically by profile generator. When a role is generated (once created) the profiles are created automatically by profile generator. Every transaction code is different and may require different numbers of accompanying authorization objects to execute. A single profile can only contain 150 authorizations. Once that number is exceeded the profile generator will automatically create a second profile, sorted alphabetically by object name.
Please refer the below links:
The specified item was not found.
Re: difference between profile and role
Difference between Role & Profile
Regards,
Sreedhar -
Assignment of different Dicument Type in Automatic Payment Program
Hi SAP Gurus,
Presently the payments are being handled centrally at Corp Office in a State. The payment method is C and the clearing doc type is KZ. Now the Company is also starting to use APP at another office in another state. The payment method is C only but for bifurcation purpose of line items the clearing doc type is to be BB which is havng a different number range. But in FBZP, system allows one doc type which is to be entered in Payment Methods for country. Is there any way in which I can do this?Hi,
You can create a substitution for this (TR OBBH).
With
Whe company code is xxxx
and document type is KZ
Transaction code is F110, (Have a look for the transacton code in a payment document)
Then
Document type is BB
Paul -
Different movt. types for GR against Purchase order and GR against Prd. Ord
All SAP Gurus,
Is it possible to have Different movement types for GR against Purchase order and GR against Production Order?
Regards,yes my friend ,
I dont know abt 131 movement type,i think so it is related to RUN SCHEDULE HEADER(rep scenario),order type is different to that in discrete.
But you can do one thing for sure,you can try to create a new movement type copy of 101,and make MIGO allowed for the movement type,and you can easily distinguish between two movement type used for receipt two different functions....
Plz correct me
Enjoy SAP
Rahul.. -
Multiple Document Types For Purchase Requisition For Different Order Types
Dear SAP Gurus,
I want to have different document types of Purchase Requisition for different Order types.
For Example:
for Order Type ZT01- Document Type used should be YR01
for Order Type YA01- Document Type used should be ZR01
How could this be achieved?
Regards.hi
Kindly check the user exit for the same
COZF0001 or COZF0002
regards
thyagarajan -
Different Order Types within a Collective Order
Dear PP Gurus,
I have a requirement for having different order types with in a collective order. For example, in a BOM of 3 levels, the order type for each assembly should be different say ZPP1, ZPP2 and ZPP3.
For this, I have maintained separate production scheduling profiles in each of these assemblies with the respective order types. Also, I have maintained MRP groups separately for each of these materials. Further, in Plant Parameters, no default order type is assigned.
However, when I create the order, the system creates all orders with order type ZPP1 which is for the header material.
As per SAP help, this is possible but I am not able to create collective order with different order types.
Please suggest any SAP Note or configuration changes which I have missed out.
Thanks!
With Regards,
NitinDear Sabine,
Thanks for your reply.
However, as per SAP help, this is possible. Please refer to the link http://help.sap.com/saphelp_470/helpdata/en/ee/b6532cae8011d19e97080009b0db33/content.htm
In this link, under Pre-reuisites section, in Point 2 it is mentioned
"This indicator is transferred into the order header (master data) of the orders. If there are differing order types within the collective order, the setting of the indicator of the order type of the leading order takes precedence. This indicator is transferred to all lower-level orders and overrides their original indicators."
The above line implies that different order types are possible with in a collective order.
Please suggest some way out.
Thanks!
With Regards,
Nitin -
Delivery split with different delivery types
Hi,
Ive got the following problem with delivery split:
In my order (type ZTA) I have two items with two different item categories (for example TA1 and TA2). For these two items two different deliveries with two different delivery types (for example item TA1 in LF1 and TA2 in LF2) should be created. For this I implemented the needed copy control and in the customizing of the order type ZTA I maintained LF1 as a default delivery type. When I deliver the order manually via Transaction VL01N, I have no problem, because the system delivers first the item which can be delivered with delivery type LF1. Then I have to start VL01N again, predefine LF2 as delivery type and then the other item will be delivered with LF2. But this doesnt work in the Batch Collective Processing with VL04, VL10A or even VL10Batch. The system cant deliver the order. And in none of these mentioned transactions I have the possibility to predefine a delivery type. I tried also a routine in the copy control on item category level where I want to switch to a different delivery type in case of the second item category. But it didnt work. And I couldnt find any other appropriate exit how to influence the delivery type on base of the item category. What cant be changed is probably that I will always have to deliver this order two times because the system wont be able to split the order in one collective processing and create two deliveries at once. That wouldnt be a big problem if I could predefine the delivery type for the second collective processing in order to get the second item delivered.
Is there anybody who can help me?
Kind Regards
StephanHi,
thank you for your quick answer. That was a big help and I will do your suggested solution with the BDC.
But if I understand you correctly, you also didn't find a solution for this problem in the SAP Standard functions (without BDS)?
Kind regards
Stephan -
Use a different movement type for Scrap in Production Order Confirmation
Hello gurus. I have the following question.
Is it possible to have the "Scrap" quantity during Production confirmation in a separate movement type?
Currently, when I type in the "Yield" and "Scrap" quantities, both of them are summarized into one backflush line under Movement Type 261. So for example: Yield: 10 pieces and Scrap 5 pieces; I only get one Goods Movement for 15 pieces with MvT 261.
The requirement is that whatever is typed under "Scrap" goes on a different movement type (e.g. 551), because then it will be easy to follow (inventory-wise) how many pieces were used in production and how many were scrapped.
Is it possible?Thanks for your reply Krishna.
Well, I notice that when I type a quantity in the "Scrap" field, the difference with "Yield" is that I simply don't get the produced material on stock (in the case of the last operation with a GR for instance). I just get the backflushed quantity.
But yes, I guess in this transaction, I'm scrapping the produced material, the components are still issued. I was just wondering if perhaps they could be split in 261 for normal backflush and 551 for backflush that didn't generate any finished assembly.
Thanks for your insight. -
Create a sequencial serial number for different Idoc Types
Hi,
we've got a legacy system which requires a serial number in a flat file for different Idoc types. The target filename for the three different Idoc types is exactly the same, lets say: InboundFile_nnnnn.xml (where nnnnn is the sequence number)
In the header of the file we will specify what type of file it is according to the Idoc that was received, but regardless of the idoc type, the sequence numbers for all three idoc types must be sequential. The files are placed on the target server using a receiver ftp adapter on the central adapter engine.
I would like to know if there is any way to store\maintain this sequence number in XI and use it accross different message mappings?
Your response is appreciated.
Thanks
Rudi
(and a merry christmas to you allYou can create a number range object in SNRO transaction abap stack in SAP XI and use that in the mapping by connecting through JCO in XI.RFC enable Number_Get_next.
check this for more info
/people/jayakrishnan.nair/blog/2005/06/20/dynamic-file-name-using-xi-30-sp12-part--i -
Incoming payments thorugh different tender types
Hi All
I have a business scenario here need your expertise
We are using IS retail ECC 06 version.
Our customer has retail stores accross the country..for accessory sale and other articles they are going through point of sale(POS) and for furniture sale they use normal sap r/3 transaction code for incoming payment that is F-28.
My query is if a customer makes payments with different tender types how that can be captured.
For example: Article worth 10000/- 5000/- he wants to pay by cash and 5000/- he was to settle through Credit Card but they want it to settle the same with one document number.
As far my understanding we have to do the transaction twice one for credit card and one for cash payment .and it will generate two document numbers
Please advise..Hi,
I thing no need addon once u add incoming payment automatically invoice will close and JE also will pass.
Regards,
Siva -
Hi sap gurus can u plz improve the performance of my code --sneha
// for the below program i have performance issue can any sap gurus can modify my code to improve the performance ,its very urgent plz help me -
sneha
REPORT ZFIR_GRIR_IPV
NO STANDARD PAGE HEADING
LINE-SIZE 120
MESSAGE-ID ZFI02.
TABLES: BSEG,BKPF.
TYPES: BEGIN OF A_FINAL,
BUKRS TYPE CHAR12,
HKONT_P TYPE CHAR18,
GJAHR TYPE CHAR11,
BELNR TYPE CHAR19,
BUDAT TYPE CHAR12,
WAERS TYPE CHAR8,
XBLNR TYPE CHAR20,
BLART TYPE CHAR13,
MONAT TYPE CHAR13,
DMBTR_P TYPE CHAR13,
KOSTL TYPE CHAR11,
PRCTR_P TYPE CHAR13,
HKONT_G TYPE CHAR18,
DMBTR_G TYPE CHAR13,
PRCTR_G TYPE CHAR13,
BUZID_G TYPE CHAR15,
END OF A_FINAL.
changes on 30 th may by dileep
TYPES: BEGIN OF IT_FINAL,
BUKRS TYPE BUKRS ,
HKONT TYPE HKONT,
BELNR TYPE BELNR_D,
DMBTR TYPE DMBTR ,
KOSTL TYPE KOSTL,
PRCTR TYPE PRCTR,
END OF IT_FINAL.
TYPES: BEGIN OF IT_FINAL1,
BUKRS TYPE BUKRS,
HKONT TYPE HKONT,
GJAHR TYPE GJAHR ,
BELNR TYPE BELNR_D,
BUDAT TYPE BUDAT,
WAERS TYPE WAERS ,
XBLNR TYPE XBLNR1,
BLART TYPE BLART,
MONAT TYPE MONAT,
DMBTR TYPE DMBTR,
KOSTL TYPE KOSTL,
PRCTR TYPE PRCTR,
END OF IT_FINAL1.
end of changes on 30 th may by dileep
TYPES: BEGIN OF P_FINAL,
BUKRS TYPE CHAR12,
DELIMITER_1 TYPE CHAR1,
HKONT_P TYPE CHAR18,
DELIMITER_2 TYPE CHAR1,
GJAHR TYPE CHAR11,
DELIMITER_3 TYPE CHAR1,
BELNR TYPE CHAR19,
DELIMITER_4 TYPE CHAR1,
BUDAT TYPE CHAR12,
DELIMITER_5 TYPE CHAR1,
WAERS TYPE CHAR8,
DELIMITER_6 TYPE CHAR1,
XBLNR TYPE CHAR20,
DELIMITER_7 TYPE CHAR1,
BLART TYPE CHAR13,
DELIMITER_8 TYPE CHAR1,
MONAT TYPE CHAR13,
DELIMITER_9 TYPE CHAR1,
DMBTR_P TYPE CHAR13,
DELIMITER_10 TYPE CHAR1,
KOSTL TYPE CHAR11,
DELIMITER_11 TYPE CHAR1,
PRCTR_P TYPE CHAR13,
DELIMITER_12 TYPE CHAR1,
HKONT_G TYPE CHAR18,
DELIMITER_13 TYPE CHAR1,
DMBTR_G TYPE CHAR13,
DELIMITER_14 TYPE CHAR1,
PRCTR_G TYPE CHAR13,
DELIMITER_15 TYPE CHAR1,
BUZID_G TYPE CHAR15,
END OF P_FINAL.
DATA: IT_BSEG TYPE STANDARD TABLE OF IT_FINAL INITIAL SIZE 0,
I_BSEG TYPE STANDARD TABLE OF IT_FINAL1 INITIAL SIZE 0,
I_FINAL TYPE STANDARD TABLE OF A_FINAL INITIAL SIZE 0 WITH HEADER LINE,
I_FINAL_P TYPE STANDARD TABLE OF P_FINAL INITIAL SIZE 0 WITH HEADER LINE,
W_FINAL_P TYPE P_FINAL,
W_BSEG1 TYPE BSEG,
WA_BSEG TYPE IT_FINAL OCCURS 0 WITH HEADER LINE,
W_BSEG TYPE IT_FINAL1 OCCURS 0 WITH HEADER LINE,
T_BSEG TYPE STANDARD TABLE OF BSEG INITIAL SIZE 0 WITH HEADER LINE,
W_FINAL TYPE A_FINAL,
F_YEAR TYPE BAPI0002_4-FISCAL_YEAR,
F_PERIOD TYPE BAPI0002_4-FISCAL_PERIOD,
RETURN1 TYPE BAPIRETURN1,
V_DATE TYPE CHAR8, " Date in YYYYMMDD format
V_PRESPATH TYPE STRING, " Path
V_APPPATH TYPE STRING, " Path
V_FILENAME(25) TYPE C, " File Name
V_PERIOD TYPE CHAR3, " Date for Posting Period
V_FSYEAR TYPE BDATJ, " Fiscal Year
L_TEXT TYPE CHAR1. " Hypen
CONSTANTS: C_TXT TYPE CHAR4 VALUE '.txt', " File Extension
C_TXT1 TYPE STRING VALUE 'txt', " File Type
C_FLAG_X TYPE CHAR1 VALUE 'X', " Flag
C_ASC TYPE FILETYPE VALUE 'ASC', " File type
C_DAT TYPE CHAR4 VALUE '.dat', " File Type
C_FLAG_1 TYPE CHAR1 VALUE '1', " Constant value
C_ZERO TYPE CHAR1 VALUE '0', " Constant
C_GLD(10) TYPE C VALUE 'GRIR021S', " Constant in file Path
C_DIR TYPE CHAR3 VALUE 'C:\', " Presentation Server path
C_FLAG_12 TYPE CHAR2 VALUE '12', " Constant value
C_PCFILE TYPE STRING VALUE 'PC File',
C_DELIMITER TYPE C VALUE '|'.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
*--- Selection Criteria
SELECT-OPTIONS: S_BUKRS FOR BSEG-BUKRS DEFAULT '012T', " Company Code
S_HKONT FOR BSEG-HKONT OBLIGATORY DEFAULT '4505001',
S_GJAHR FOR BKPF-GJAHR DEFAULT SY-DATUM+0(4),
S_MONAT FOR BKPF-MONAT DEFAULT SY-DATUM+4(2),
S_BELNR FOR BSEG-BELNR ,
S_BUDAT FOR BKPF-BUDAT ,
S_PRCTR FOR BSEG-PRCTR OBLIGATORY DEFAULT '12TOTH00',
S_BLART FOR BKPF-BLART OBLIGATORY DEFAULT 'RE'.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
*--- Radio Buttons for chose the PC Path or App.. Server Path
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
RB_PFILE RADIOBUTTON GROUP RAD2 DEFAULT 'X' USER-COMMAND UCOMM1.
SELECTION-SCREEN COMMENT 5(27) TEXT-002 FOR FIELD RB_PFILE.
PARAMETERS:
P_PFILE LIKE RLGRAP-FILENAME LOWER CASE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
RB_AFILE RADIOBUTTON GROUP RAD2.
SELECTION-SCREEN COMMENT 5(27) TEXT-003 FOR FIELD RB_AFILE.
PARAMETERS:
P_AFILE LIKE RLGRAP-FILENAME LOWER CASE. " Path for AS
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PFILE.
*-- Select File name with Dialog Box
PERFORM SUB_GET_FILENAME CHANGING P_PFILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_AFILE.
*--- Attach F4 HELP CORRESPONDING TO THE FIELD
PERFORM SUB_AP_F4.
AT SELECTION-SCREEN OUTPUT.
*--Modify screen parameters
PERFORM SUB_MODIFY_SCREEN.
AT SELECTION-SCREEN.
*--- Selection Screen validations for Company Code
PERFORM SUB_VALIDATION_BUKRS.
*--- Selection Screen validations for Chart of Accounts
PERFORM SUB_VALIDATION_HKONT.
*--- Selection Screen validations Fiscal Year
PERFORM SUB_VALIDATION_GJAHR.
*--- Selection Screen validations for Peiod
PERFORM SUB_VALIDATION_MONAT.
*--- Selection Screen validations for Company Code
PERFORM SUB_VALIDATION_BELNR.
*--- Selection Screen validations for Chart of Accounts
PERFORM SUB_VALIDATION_BUDAT.
*--- Selection Screen validations Fiscal Year
PERFORM SUB_VALIDATION_PRCTR.
*--- Selection Screen validations for Peiod
PERFORM SUB_VALIDATION_BLART.
START-OF-SELECTION
START-OF-SELECTION.
*--- Check whether filepath/name have been entered in the sel screen
PERFORM SUB_CHECK_FILEPATH.
*--- Prepare Final Internal Table.
PERFORM SUB_PREPARE_FINAL.
*--- Download data.
PERFORM SUB_DOWNLOAD_DATA .
*& Form sub_get_filename
text
<--P_PFILE Presentation server File name
FORM SUB_GET_FILENAME CHANGING P_FILE TYPE C.
DATA : L_FILENAME TYPE STRING, " For File Name
L_PATH TYPE STRING, " For Directory
L_FULLPATH TYPE STRING. " Full path
*--- For File Open Dialog Box
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = C_PCFILE " Window Title
DEFAULT_EXTENSION = C_TXT1 " File Extn
PROMPT_ON_OVERWRITE = C_FLAG_X " Over write
CHANGING
FILENAME = L_FILENAME " File Name
PATH = L_PATH " File Path
FULLPATH = L_FULLPATH " Full Path
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
*--- Error in opening the file
MESSAGE E000.
ELSE.
CONCATENATE L_PATH
L_FILENAME
INTO P_FILE.
V_PRESPATH = L_PATH.
ENDIF.
ENDFORM. " sub_get_filename
*& Form sub_ap_f4
f4 help attched with application server
FORM SUB_AP_F4 .
*--- FM for to get the Application Server Path
IF RB_AFILE = C_FLAG_X.
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
EXPORTING
DIRECTORY =
FILEMASK = C_ASC " File Extn
IMPORTING
SERVERFILE = P_AFILE " File Path
EXCEPTIONS
CANCELED_BY_USER = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
*--- Error in opening the file
MESSAGE E000.
ENDIF.
ENDIF.
ENDFORM. " sub_ap_f4
*& Form sub_modify_screen
text
--> p1 text
<-- p2 text
FORM SUB_MODIFY_SCREEN .
*--- Selection screen Modifications
IF RB_PFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE' OR
SCREEN-NAME = '%_P_PFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_FLAG_1.
CONCATENATE C_DIR C_GLD V_DATE SY-UZEIT(4) C_TXT INTO P_PFILE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE' OR
SCREEN-NAME = '%_P_PFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_ZERO.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF RB_AFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_AFILE' OR
SCREEN-NAME = '%_P_AFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_FLAG_1.
CONCATENATE '/Solectron/Data/' C_GLD V_DATE SY-UZEIT(4) C_DAT
INTO P_AFILE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_AFILE' OR
SCREEN-NAME = '%_P_AFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_ZERO.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF RB_PFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE'.
SCREEN-ACTIVE = C_FLAG_1.
ENDIF.
IF SCREEN-NAME = 'P_AFILE'.
SCREEN-ACTIVE = C_ZERO.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF RB_AFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE'.
SCREEN-ACTIVE = C_ZERO.
ENDIF.
IF SCREEN-NAME = 'P_AFILE'.
SCREEN-ACTIVE = C_FLAG_1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDFORM. " sub_modify_screen
*& Form sub_validation_bukrs
Validation For Company Code
FORM SUB_VALIDATION_BUKRS .
DATA: L_BUKRS TYPE BUKRS. " Company Code
IF S_BUKRS IS NOT INITIAL.
IF S_BUKRS-HIGH IS NOT INITIAL AND S_BUKRS-LOW IS INITIAL.
MESSAGE E006.
ELSE.
*--- Validation for chart of accounts
SELECT BUKRS " Company Code
FROM T001 UP TO 1 ROWS
INTO L_BUKRS
WHERE BUKRS IN S_BUKRS.
ENDSELECT.
IF SY-SUBRC NE 0.
*--- Invalid Company code
MESSAGE E001.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_bukrs
*& Form sub_validation_hkont
Validation For General Ledger Account
FORM SUB_VALIDATION_HKONT .
DATA: L_HKONT TYPE HKONT. " General Ledger Account
IF S_HKONT IS INITIAL.
MESSAGE E002.
ELSE.
IF S_HKONT-HIGH IS NOT INITIAL AND S_HKONT-LOW IS INITIAL.
MESSAGE E006.
ELSE.
*--- Validation for chart of accounts
SELECT SAKNR " General Ledger Account
FROM SKA1 UP TO 1 ROWS
INTO L_HKONT
WHERE SAKNR IN S_HKONT AND KTOPL = '1SLR'.
ENDSELECT.
IF SY-SUBRC NE 0.
*--- Invalid General Ledger Account
MESSAGE E003.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_hkont
*& Form sub_validation_gjahr
Validation For Fiscal Year
FORM SUB_VALIDATION_GJAHR .
DATA: L_GJAHR TYPE GJAHR. " Fiscal Year
IF S_GJAHR IS NOT INITIAL.
IF S_GJAHR-HIGH IS NOT INITIAL AND S_GJAHR-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_gjahr
*& Form sub_validation_monat
Validation For Fiscal period
FORM SUB_VALIDATION_MONAT .
DATA: L_MONAT TYPE MONAT. " Fiscal period
IF S_MONAT IS NOT INITIAL.
IF S_MONAT-LOW LE C_ZERO.
*--- Invalid Fiscal Period
MESSAGE E006.
ENDIF.
IF S_MONAT-HIGH GT C_FLAG_12.
*--- Invalid Fiscal Period
MESSAGE E007.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_monat
*& Form sub_validation_belnr
Validation For Accounting Document Number
FORM SUB_VALIDATION_BELNR .
DATA: L_BELNR TYPE BELNR_D. " Accounting Document Number
IF S_BELNR IS NOT INITIAL.
IF S_BELNR-HIGH IS NOT INITIAL AND S_BELNR-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_belnr
*& Form sub_validation_budat
Validation For Posting Date
FORM SUB_VALIDATION_BUDAT .
DATA: L_BUDAT TYPE BUDAT. " Posting Date
IF S_BUDAT IS NOT INITIAL.
IF S_BUDAT-HIGH IS NOT INITIAL AND S_BUDAT-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_budat
*& Form sub_validation_prctr
Validation For Profit Center
FORM SUB_VALIDATION_PRCTR .
DATA: L_PRCTR TYPE PRCTR. " Profit Center
IF S_PRCTR IS INITIAL.
MESSAGE E010.
ELSE.
IF S_PRCTR-HIGH IS NOT INITIAL AND S_PRCTR-LOW IS INITIAL.
MESSAGE E006.
ELSE.
*--- Validation for chart of accounts
SELECT PRCTR " Profit Center
FROM CEPC UP TO 1 ROWS
INTO L_PRCTR
WHERE PRCTR IN S_PRCTR.
ENDSELECT.
IF SY-SUBRC NE 0.
*--- Invalid Profit Center
MESSAGE E011.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_prctr
*& Form sub_validation_blart
Validation For Document type
FORM SUB_VALIDATION_BLART .
DATA: L_BLART TYPE BLART. " Document type
IF S_BLART IS INITIAL.
MESSAGE E012.
ELSE.
IF S_BLART-HIGH IS NOT INITIAL AND S_BLART-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_blart
*& Form sub_check_filepath
Check user input for initial filename
FORM SUB_CHECK_FILEPATH .
IF RB_PFILE = C_FLAG_X.
IF P_PFILE IS INITIAL.
*--- The Local File Path can not be Empty
MESSAGE I014.
LEAVE LIST-PROCESSING.
ENDIF.
ELSEIF RB_AFILE = C_FLAG_X.
IF P_AFILE IS INITIAL.
*--- The App Server File Path can not be Empty
MESSAGE I015.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " sub_check_filepath
*& Form sub_prepare_final
append the required output data in to the internal table.
FORM SUB_PREPARE_FINAL.
changes on 30 th may by dileep
SELECT * FROM BSEG INTO TABLE I_BSEG WHERE HKONT IN S_HKONT AND "G/L Account
GJAHR IN S_GJAHR AND
PRCTR IN S_PRCTR AND "Profit Center
BLART IN S_BLART . "Document Type
SELECT BUKRS
HKONT
BELNR
DMBTR
KOSTL
PRCTR
FROM BSEG INTO TABLE IT_BSEG WHERE HKONT IN S_HKONT AND "G/L Account
PRCTR IN S_PRCTR. "Profit Center
LOOP AT IT_BSEG INTO WA_BSEG.
SELECT SINGLE GJAHR
BUDAT
WAERS
XBLNR
BLART
MONAT
INTO (W_BSEG-GJAHR,W_BSEG-BUDAT,W_BSEG-WAERS,W_BSEG-XBLNR,W_BSEG-BLART,W_BSEG-MONAT)
FROM BKPF WHERE BELNR = W_BSEG-BELNR AND
GJAHR IN S_GJAHR AND
BLART IN S_BLART . "Document Type
MOVE WA_BSEG-BUKRS TO W_BSEG-BUKRS.
MOVE WA_BSEG-HKONT TO W_BSEG-HKONT.
MOVE WA_BSEG-BELNR TO W_BSEG-BELNR.
MOVE WA_BSEG-DMBTR TO W_BSEG-DMBTR.
MOVE WA_BSEG-KOSTL TO W_BSEG-KOSTL.
MOVE WA_BSEG-PRCTR TO W_BSEG-PRCTR.
APPEND W_BSEG TO I_BSEG.
ENDLOOP.
changes on 30 th may by dileep
IF S_BUKRS IS NOT INITIAL.
SORT I_BSEG BY BUKRS ASCENDING.
DELETE I_BSEG WHERE NOT BUKRS IN S_BUKRS.
ENDIF.
IF S_MONAT IS NOT INITIAL.
SORT I_BSEG BY GJAHR MONAT ASCENDING.
IF S_MONAT-HIGH IS NOT INITIAL AND S_MONAT-LOW IS NOT INITIAL.
DELETE I_BSEG WHERE MONAT < S_MONAT-LOW OR MONAT > S_MONAT-HIGH.
ENDIF.
IF S_MONAT-HIGH IS INITIAL AND S_MONAT-LOW IS NOT INITIAL.
DELETE I_BSEG WHERE MONAT NE S_MONAT-LOW.
ENDIF.
ENDIF.
IF S_BELNR IS NOT INITIAL.
SORT I_BSEG BY BELNR ASCENDING.
DELETE I_BSEG WHERE NOT BELNR IN S_BELNR.
ENDIF.
IF S_BUDAT IS NOT INITIAL.
SORT I_BSEG BY BUDAT ASCENDING.
DELETE I_BSEG WHERE NOT BUDAT IN S_BUDAT.
ENDIF.
LOOP AT I_BSEG INTO W_BSEG.
MOVE W_BSEG-BUKRS TO W_FINAL-BUKRS.
MOVE W_BSEG-HKONT TO W_FINAL-HKONT_P.
MOVE W_BSEG-GJAHR TO W_FINAL-GJAHR.
MOVE W_BSEG-BELNR TO W_FINAL-BELNR.
MOVE W_BSEG-BUDAT TO W_FINAL-BUDAT.
MOVE W_BSEG-WAERS TO W_FINAL-WAERS.
MOVE W_BSEG-XBLNR TO W_FINAL-XBLNR.
MOVE W_BSEG-BLART TO W_FINAL-BLART.
MOVE W_BSEG-MONAT TO W_FINAL-MONAT.
MOVE W_BSEG-DMBTR TO W_FINAL-DMBTR_P.
MOVE W_BSEG-KOSTL TO W_FINAL-KOSTL.
MOVE W_BSEG-PRCTR TO W_FINAL-PRCTR_P.
SELECT SINGLE * FROM BSEG INTO W_BSEG1 WHERE BELNR = W_BSEG-BELNR AND "Document Type
BUZID = 'W' .
IF SY-SUBRC = 0.
MOVE W_BSEG1-HKONT TO W_FINAL-HKONT_G.
MOVE W_BSEG1-DMBTR TO W_FINAL-DMBTR_G.
MOVE W_BSEG1-PRCTR TO W_FINAL-PRCTR_G.
MOVE W_BSEG1-BUZID TO W_FINAL-BUZID_G.
ELSE.
EXIT.
ENDIF.
APPEND W_FINAL TO I_FINAL.
SORT I_FINAL BY BELNR ASCENDING.
ENDLOOP.
ENDFORM. " sub_prepare_final
*& Form sub_download_data
Download data
FORM SUB_DOWNLOAD_DATA .
DATA : V_PRD(2) TYPE N.
IF RB_PFILE = C_FLAG_X.
*--- Downloading To presentation server
V_PRESPATH = P_PFILE.
PERFORM SUB_DOWNLOAD_PRESSERVER.
ELSEIF RB_AFILE = C_FLAG_X.
*--- Downloading To Application server in Auto Mode
V_APPPATH = P_AFILE.
PERFORM SUB_DOWNLOAD_APPSERVER.
ENDIF.
ENDFORM. " sub_download_data
*& Form sub_download_presserver
text
FORM SUB_DOWNLOAD_PRESSERVER.
DATA: MESSAGE TYPE STRING.
IF I_FINAL[] IS INITIAL.
MESSAGE I016.
EXIT.
ELSE.
W_FINAL_P-BUKRS = 'Company Code'.
W_FINAL_P-DELIMITER_1 = '|'.
W_FINAL_P-HKONT_P = 'G/L Account Number'.
W_FINAL_P-DELIMITER_2 = '|'.
W_FINAL_P-GJAHR = 'Fiscal Year'.
W_FINAL_P-DELIMITER_3 = '|'.
W_FINAL_P-BELNR = 'A/c Document Number'.
W_FINAL_P-DELIMITER_4 = '|'.
W_FINAL_P-BUDAT = 'Posting Date' .
W_FINAL_P-DELIMITER_5 = '|'.
W_FINAL_P-WAERS = 'Currency'.
W_FINAL_P-DELIMITER_6 = '|'.
W_FINAL_P-XBLNR = 'Ref. Document Number'.
W_FINAL_P-DELIMITER_7 = '|'.
W_FINAL_P-BLART = 'Document Type'.
W_FINAL_P-DELIMITER_8 = '|'.
W_FINAL_P-MONAT = 'Fiscal Period'.
W_FINAL_P-DELIMITER_9 = '|'.
W_FINAL_P-DMBTR_P = 'Amount'.
W_FINAL_P-DELIMITER_10 = '|'.
W_FINAL_P-KOSTL = 'Cost Center'.
W_FINAL_P-DELIMITER_11 = '|'.
W_FINAL_P-PRCTR_P = 'Profit Center'.
W_FINAL_P-DELIMITER_12 = '|'.
W_FINAL_P-HKONT_G = 'G/L Account Number'.
W_FINAL_P-DELIMITER_13 = '|'.
W_FINAL_P-DMBTR_G = 'Amount'.
W_FINAL_P-DELIMITER_14 = '|'.
W_FINAL_P-PRCTR_G = 'Profit Center'.
W_FINAL_P-DELIMITER_15 = '|'.
W_FINAL_P-BUZID_G = 'Line Item Id'.
APPEND W_FINAL_P TO I_FINAL_P.
LOOP AT I_FINAL INTO W_FINAL.
W_FINAL_P-BUKRS = W_FINAL-BUKRS.
W_FINAL_P-DELIMITER_1 = '|'.
W_FINAL_P-HKONT_P = W_FINAL-HKONT_P.
W_FINAL_P-DELIMITER_2 = '|'.
W_FINAL_P-GJAHR = W_FINAL-GJAHR.
W_FINAL_P-DELIMITER_3 = '|'.
W_FINAL_P-BELNR = W_FINAL-BELNR.
W_FINAL_P-DELIMITER_4 = '|'.
W_FINAL_P-BUDAT = W_FINAL-BUDAT .
W_FINAL_P-DELIMITER_5 = '|'.
W_FINAL_P-WAERS = W_FINAL-WAERS.
W_FINAL_P-DELIMITER_6 = '|'.
W_FINAL_P-XBLNR = W_FINAL-XBLNR.
W_FINAL_P-DELIMITER_7 = '|'.
W_FINAL_P-BLART = W_FINAL-BLART.
W_FINAL_P-DELIMITER_8 = '|'.
W_FINAL_P-MONAT = W_FINAL-MONAT.
W_FINAL_P-DELIMITER_9 = '|'.
W_FINAL_P-DMBTR_P = W_FINAL-DMBTR_P.
W_FINAL_P-DELIMITER_10 = '|'.
W_FINAL_P-KOSTL = W_FINAL-KOSTL.
W_FINAL_P-DELIMITER_11 = '|'.
W_FINAL_P-PRCTR_P = W_FINAL-PRCTR_P.
W_FINAL_P-DELIMITER_12 = '|'.
W_FINAL_P-HKONT_G = W_FINAL-HKONT_G.
W_FINAL_P-DELIMITER_13 = '|'.
W_FINAL_P-DMBTR_G = W_FINAL-DMBTR_G.
W_FINAL_P-DELIMITER_14 = '|'.
W_FINAL_P-PRCTR_G = W_FINAL-PRCTR_G.
W_FINAL_P-DELIMITER_15 = '|'.
W_FINAL_P-BUZID_G = W_FINAL-BUZID_G.
APPEND W_FINAL_P TO I_FINAL_P.
CLEAR : W_FINAL_P, W_FINAL.
ENDLOOP.
ENDIF.
*---Downloading data to file on Presentation Server
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = V_PRESPATH
FILETYPE = 'ASC'
TABLES
DATA_TAB = I_FINAL_P
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
*-- File can not be opened successfully
IF SY-SUBRC NE 0.
IF SY-BATCH EQ C_FLAG_X. " Stop Processing
MESSAGE E017. " File could not be opened
ELSE.
MESSAGE I017. " File could not be opened
LEAVE LIST-PROCESSING.
ENDIF.
ELSE.
CONCATENATE 'Data Successfully downloaded to the Specified Location' V_PRESPATH INTO MESSAGE SEPARATED BY SPACE.
MESSAGE MESSAGE TYPE 'S'.
ENDIF.
MODIFY SCREEN.
ENDFORM. " sub_download_presserver
*& Form sub_download_appserver
text
FORM SUB_DOWNLOAD_APPSERVER .
DATA: V_FILE TYPE STRING, " String
P_DMBTR TYPE CHAR20,
G_DMBTR TYPE CHAR20,
MESSAGE1 TYPE STRING.
IF I_FINAL[] IS INITIAL.
IF SY-BATCH EQ C_FLAG_X.
*--- File contains no data
MESSAGE E016 .
ELSE.
*--- File contains no data
MESSAGE I016 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
*--- To Open The file in Application Server
OPEN DATASET V_APPPATH FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC NE 0.
*--- Display error message: "Could not open file"
IF SY-BATCH EQ C_FLAG_X.
*--- File contains no data
MESSAGE E016 .
ELSE.
*--- File contains no data
MESSAGE I016 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
*--- Perform for building the Report header
CONCATENATE
'COMPANY_CODE'
'G/L_ACCOUNT_NUMBER'
'FISCAL_YEAR'
'A/C_DOCUMENT_NUMBER'
'POSTING_DATE'
'CURRENCY'
'REF_DOCUMENT_NUMBER'
'DOCUMENT_TYPE'
'FISCAL_PERIOD'
'AMOUNT'
'COSTCENTER'
'PROFIT_CENTER'
'G/L_ACCOUNT_NUMBER'
'AMOUNT'
'PROFIT_CENTER'
'LINE_ITEM_ID'
INTO V_FILE SEPARATED BY C_DELIMITER.
TRANSFER V_FILE TO V_APPPATH.
*--- Transfer the data to application Server
LOOP AT I_FINAL INTO W_FINAL.
P_DMBTR = W_FINAL-DMBTR_P.
G_DMBTR = W_FINAL-DMBTR_G.
CONCATENATE
W_FINAL-BUKRS
W_FINAL-HKONT_P
W_FINAL-GJAHR
W_FINAL-BELNR
W_FINAL-BUDAT
W_FINAL-WAERS
W_FINAL-XBLNR
W_FINAL-BLART
W_FINAL-MONAT
P_DMBTR
W_FINAL-KOSTL
W_FINAL-PRCTR_P
W_FINAL-HKONT_G
G_DMBTR
W_FINAL-PRCTR_G
W_FINAL-BUZID_G
INTO V_FILE SEPARATED BY C_DELIMITER.
TRANSFER V_FILE TO V_APPPATH.
IF SY-SUBRC NE 0.
Display error message: "Data could not be written at the location"
MESSAGE 'Data could not be written at the location' TYPE 'I'.
EXIT.
ENDIF.
CLEAR V_FILE.
ENDLOOP.
CLOSE DATASET V_APPPATH.
IF SY-SUBRC NE 0.
Display error message: "File could not be closed"
MESSAGE 'File could not be closed' TYPE 'I'.
EXIT.
ELSE.
CONCATENATE 'Data Successfully downloaded to the Specified Location' V_APPPATH INTO MESSAGE1 SEPARATED BY SPACE.
MESSAGE MESSAGE1 TYPE 'S'.
ENDIF.
ENDFORM. " sub_download_appserverhi,
here is improved code.
REPORT ZFIR_GRIR_IPV
NO STANDARD PAGE HEADING
LINE-SIZE 120
MESSAGE-ID ZFI02.
TABLES: BSEG,BKPF.
TYPES: BEGIN OF A_FINAL,
BUKRS TYPE CHAR12,
HKONT_P TYPE CHAR18,
GJAHR TYPE CHAR11,
BELNR TYPE CHAR19,
BUDAT TYPE CHAR12,
WAERS TYPE CHAR8,
XBLNR TYPE CHAR20,
BLART TYPE CHAR13,
MONAT TYPE CHAR13,
DMBTR_P TYPE CHAR13,
KOSTL TYPE CHAR11,
PRCTR_P TYPE CHAR13,
HKONT_G TYPE CHAR18,
DMBTR_G TYPE CHAR13,
PRCTR_G TYPE CHAR13,
BUZID_G TYPE CHAR15,
END OF A_FINAL.
changes on 30 th may by dileep
TYPES: BEGIN OF IT_FINAL,
BUKRS TYPE BUKRS ,
HKONT TYPE HKONT,
BELNR TYPE BELNR_D,
DMBTR TYPE DMBTR ,
KOSTL TYPE KOSTL,
PRCTR TYPE PRCTR,
END OF IT_FINAL.
TYPES: BEGIN OF IT_FINAL1,
BUKRS TYPE BUKRS,
HKONT TYPE HKONT,
GJAHR TYPE GJAHR ,
BELNR TYPE BELNR_D,
BUDAT TYPE BUDAT,
WAERS TYPE WAERS ,
XBLNR TYPE XBLNR1,
BLART TYPE BLART,
MONAT TYPE MONAT,
DMBTR TYPE DMBTR,
KOSTL TYPE KOSTL,
PRCTR TYPE PRCTR,
END OF IT_FINAL1.
end of changes on 30 th may by dileep
TYPES: BEGIN OF P_FINAL,
BUKRS TYPE CHAR12,
DELIMITER_1 TYPE CHAR1,
HKONT_P TYPE CHAR18,
DELIMITER_2 TYPE CHAR1,
GJAHR TYPE CHAR11,
DELIMITER_3 TYPE CHAR1,
BELNR TYPE CHAR19,
DELIMITER_4 TYPE CHAR1,
BUDAT TYPE CHAR12,
DELIMITER_5 TYPE CHAR1,
WAERS TYPE CHAR8,
DELIMITER_6 TYPE CHAR1,
XBLNR TYPE CHAR20,
DELIMITER_7 TYPE CHAR1,
BLART TYPE CHAR13,
DELIMITER_8 TYPE CHAR1,
MONAT TYPE CHAR13,
DELIMITER_9 TYPE CHAR1,
DMBTR_P TYPE CHAR13,
DELIMITER_10 TYPE CHAR1,
KOSTL TYPE CHAR11,
DELIMITER_11 TYPE CHAR1,
PRCTR_P TYPE CHAR13,
DELIMITER_12 TYPE CHAR1,
HKONT_G TYPE CHAR18,
DELIMITER_13 TYPE CHAR1,
DMBTR_G TYPE CHAR13,
DELIMITER_14 TYPE CHAR1,
PRCTR_G TYPE CHAR13,
DELIMITER_15 TYPE CHAR1,
BUZID_G TYPE CHAR15,
END OF P_FINAL.
DATA: IT_BSEG TYPE STANDARD TABLE OF IT_FINAL INITIAL SIZE 0,
I_BSEG TYPE STANDARD TABLE OF IT_FINAL1 INITIAL SIZE 0,
I_FINAL TYPE STANDARD TABLE OF A_FINAL INITIAL SIZE 0 WITH HEADER LINE,
I_FINAL_P TYPE STANDARD TABLE OF P_FINAL INITIAL SIZE 0 WITH HEADER LINE,
W_FINAL_P TYPE P_FINAL,
W_BSEG1 TYPE BSEG,
WA_BSEG TYPE IT_FINAL OCCURS 0 WITH HEADER LINE,
W_BSEG TYPE IT_FINAL1 OCCURS 0 WITH HEADER LINE,
T_BSEG TYPE STANDARD TABLE OF BSEG INITIAL SIZE 0 WITH HEADER LINE,
W_FINAL TYPE A_FINAL,
F_YEAR TYPE BAPI0002_4-FISCAL_YEAR,
F_PERIOD TYPE BAPI0002_4-FISCAL_PERIOD,
RETURN1 TYPE BAPIRETURN1,
V_DATE TYPE CHAR8, " Date in YYYYMMDD format
V_PRESPATH TYPE STRING, " Path
V_APPPATH TYPE STRING, " Path
V_FILENAME(25) TYPE C, " File Name
V_PERIOD TYPE CHAR3, " Date for Posting Period
V_FSYEAR TYPE BDATJ, " Fiscal Year
L_TEXT TYPE CHAR1. " Hypen
CONSTANTS: C_TXT TYPE CHAR4 VALUE '.txt', " File Extension
C_TXT1 TYPE STRING VALUE 'txt', " File Type
C_FLAG_X TYPE CHAR1 VALUE 'X', " Flag
C_ASC TYPE FILETYPE VALUE 'ASC', " File type
C_DAT TYPE CHAR4 VALUE '.dat', " File Type
C_FLAG_1 TYPE CHAR1 VALUE '1', " Constant value
C_ZERO TYPE CHAR1 VALUE '0', " Constant
C_GLD(10) TYPE C VALUE 'GRIR021S', " Constant in file Path
C_DIR TYPE CHAR3 VALUE 'C:\', " Presentation Server path
C_FLAG_12 TYPE CHAR2 VALUE '12', " Constant value
C_PCFILE TYPE STRING VALUE 'PC File',
C_DELIMITER TYPE C VALUE '|'.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-000.
o
+
Selection Criteria
SELECT-OPTIONS: S_BUKRS FOR BSEG-BUKRS DEFAULT '012T', " Company Code
S_HKONT FOR BSEG-HKONT OBLIGATORY DEFAULT '4505001',
S_GJAHR FOR BKPF-GJAHR DEFAULT SY-DATUM+0(4),
S_MONAT FOR BKPF-MONAT DEFAULT SY-DATUM+4(2),
S_BELNR FOR BSEG-BELNR ,
S_BUDAT FOR BKPF-BUDAT ,
S_PRCTR FOR BSEG-PRCTR OBLIGATORY DEFAULT '12TOTH00',
S_BLART FOR BKPF-BLART OBLIGATORY DEFAULT 'RE'.
SELECTION-SCREEN END OF BLOCK B1.
SELECTION-SCREEN BEGIN OF BLOCK B2 WITH FRAME TITLE TEXT-001.
o
+
Radio Buttons for chose the PC Path or App.. Server Path
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
RB_PFILE RADIOBUTTON GROUP RAD2 DEFAULT 'X' USER-COMMAND UCOMM1.
SELECTION-SCREEN COMMENT 5(27) TEXT-002 FOR FIELD RB_PFILE.
PARAMETERS:
P_PFILE LIKE RLGRAP-FILENAME LOWER CASE.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS:
RB_AFILE RADIOBUTTON GROUP RAD2.
SELECTION-SCREEN COMMENT 5(27) TEXT-003 FOR FIELD RB_AFILE.
PARAMETERS:
P_AFILE LIKE RLGRAP-FILENAME LOWER CASE. " Path for AS
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK B2.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_PFILE.
o
+ Select File name with Dialog Box
PERFORM SUB_GET_FILENAME CHANGING P_PFILE.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_AFILE.
o
+
Attach F4 HELP CORRESPONDING TO THE FIELD
PERFORM SUB_AP_F4.
AT SELECTION-SCREEN OUTPUT.
*--Modify screen parameters
PERFORM SUB_MODIFY_SCREEN.
AT SELECTION-SCREEN.
o
+
Selection Screen validations for Company Code
PERFORM SUB_VALIDATION_BUKRS.
o
+
Selection Screen validations for Chart of Accounts
PERFORM SUB_VALIDATION_HKONT.
o
+
Selection Screen validations Fiscal Year
PERFORM SUB_VALIDATION_GJAHR.
o
+
Selection Screen validations for Peiod
PERFORM SUB_VALIDATION_MONAT.
o
+
Selection Screen validations for Company Code
PERFORM SUB_VALIDATION_BELNR.
o
+
Selection Screen validations for Chart of Accounts
PERFORM SUB_VALIDATION_BUDAT.
o
+
Selection Screen validations Fiscal Year
PERFORM SUB_VALIDATION_PRCTR.
o
+
Selection Screen validations for Peiod
PERFORM SUB_VALIDATION_BLART.
START-OF-SELECTION
START-OF-SELECTION.
o
+
Check whether filepath/name have been entered in the sel screen
PERFORM SUB_CHECK_FILEPATH.
o
+
Prepare Final Internal Table.
PERFORM SUB_PREPARE_FINAL.
o
+
Download data.
PERFORM SUB_DOWNLOAD_DATA .
*& Form sub_get_filename
text
<--P_PFILE Presentation server File name
FORM SUB_GET_FILENAME CHANGING P_FILE TYPE C.
DATA : L_FILENAME TYPE STRING, " For File Name
L_PATH TYPE STRING, " For Directory
L_FULLPATH TYPE STRING. " Full path
o
+
For File Open Dialog Box
CALL METHOD CL_GUI_FRONTEND_SERVICES=>FILE_SAVE_DIALOG
EXPORTING
WINDOW_TITLE = C_PCFILE " Window Title
DEFAULT_EXTENSION = C_TXT1 " File Extn
PROMPT_ON_OVERWRITE = C_FLAG_X " Over write
CHANGING
FILENAME = L_FILENAME " File Name
PATH = L_PATH " File Path
FULLPATH = L_FULLPATH " Full Path
EXCEPTIONS
CNTL_ERROR = 1
ERROR_NO_GUI = 2
NOT_SUPPORTED_BY_GUI = 3
OTHERS = 4.
IF SY-SUBRC NE 0.
o
+
Error in opening the file
MESSAGE E000.
ELSE.
CONCATENATE L_PATH
L_FILENAME
INTO P_FILE.
V_PRESPATH = L_PATH.
ENDIF.
ENDFORM. " sub_get_filename
*& Form sub_ap_f4
f4 help attched with application server
FORM SUB_AP_F4 .
o
+
FM for to get the Application Server Path
IF RB_AFILE = C_FLAG_X.
CALL FUNCTION '/SAPDMC/LSM_F4_SERVER_FILE'
EXPORTING
DIRECTORY =
FILEMASK = C_ASC " File Extn
IMPORTING
SERVERFILE = P_AFILE " File Path
EXCEPTIONS
CANCELED_BY_USER = 1
OTHERS = 2.
IF SY-SUBRC NE 0.
o
+
Error in opening the file
MESSAGE E000.
ENDIF.
ENDIF.
ENDFORM. " sub_ap_f4
*& Form sub_modify_screen
text
--> p1 text
<-- p2 text
FORM SUB_MODIFY_SCREEN .
o
+
Selection screen Modifications
IF RB_PFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE' OR
SCREEN-NAME = '%_P_PFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_FLAG_1.
CONCATENATE C_DIR C_GLD V_DATE SY-UZEIT(4) C_TXT INTO P_PFILE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE' OR
SCREEN-NAME = '%_P_PFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_ZERO.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF RB_AFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_AFILE' OR
SCREEN-NAME = '%_P_AFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_FLAG_1.
CONCATENATE '/Solectron/Data/' C_GLD V_DATE SY-UZEIT(4) C_DAT
INTO P_AFILE.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ELSE.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_AFILE' OR
SCREEN-NAME = '%_P_AFILE_%_APP_%-TEXT'.
SCREEN-ACTIVE = C_ZERO.
MODIFY SCREEN.
ENDIF.
ENDLOOP.
ENDIF.
IF RB_PFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE'.
SCREEN-ACTIVE = C_FLAG_1.
ENDIF.
IF SCREEN-NAME = 'P_AFILE'.
SCREEN-ACTIVE = C_ZERO.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ELSEIF RB_AFILE = C_FLAG_X.
LOOP AT SCREEN.
IF SCREEN-NAME = 'P_PFILE'.
SCREEN-ACTIVE = C_ZERO.
ENDIF.
IF SCREEN-NAME = 'P_AFILE'.
SCREEN-ACTIVE = C_FLAG_1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
ENDFORM. " sub_modify_screen
*& Form sub_validation_bukrs
Validation For Company Code
FORM SUB_VALIDATION_BUKRS .
DATA: L_BUKRS TYPE BUKRS. " Company Code
IF S_BUKRS IS NOT INITIAL.
IF S_BUKRS-HIGH IS NOT INITIAL AND S_BUKRS-LOW IS INITIAL.
MESSAGE E006.
ELSE.
o
+
Validation for chart of accounts
SELECT BUKRS " Company Code
FROM T001 UP TO 1 ROWS
INTO L_BUKRS
WHERE BUKRS IN S_BUKRS.
ENDSELECT.
IF SY-SUBRC NE 0.
o
+
Invalid Company code
MESSAGE E001.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_bukrs
*& Form sub_validation_hkont
Validation For General Ledger Account
FORM SUB_VALIDATION_HKONT .
DATA: L_HKONT TYPE HKONT. " General Ledger Account
IF S_HKONT IS INITIAL.
MESSAGE E002.
ELSE.
IF S_HKONT-HIGH IS NOT INITIAL AND S_HKONT-LOW IS INITIAL.
MESSAGE E006.
ELSE.
o
+
Validation for chart of accounts
SELECT SAKNR " General Ledger Account
FROM SKA1 UP TO 1 ROWS
INTO L_HKONT
WHERE SAKNR IN S_HKONT AND KTOPL = '1SLR'.
ENDSELECT.
IF SY-SUBRC NE 0.
o
+
Invalid General Ledger Account
MESSAGE E003.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_hkont
*& Form sub_validation_gjahr
Validation For Fiscal Year
FORM SUB_VALIDATION_GJAHR .
DATA: L_GJAHR TYPE GJAHR. " Fiscal Year
IF S_GJAHR IS NOT INITIAL.
IF S_GJAHR-HIGH IS NOT INITIAL AND S_GJAHR-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_gjahr
*& Form sub_validation_monat
Validation For Fiscal period
FORM SUB_VALIDATION_MONAT .
DATA: L_MONAT TYPE MONAT. " Fiscal period
IF S_MONAT IS NOT INITIAL.
IF S_MONAT-LOW LE C_ZERO.
o
+
Invalid Fiscal Period
MESSAGE E006.
ENDIF.
IF S_MONAT-HIGH GT C_FLAG_12.
o
+
Invalid Fiscal Period
MESSAGE E007.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_monat
*& Form sub_validation_belnr
Validation For Accounting Document Number
FORM SUB_VALIDATION_BELNR .
DATA: L_BELNR TYPE BELNR_D. " Accounting Document Number
IF S_BELNR IS NOT INITIAL.
IF S_BELNR-HIGH IS NOT INITIAL AND S_BELNR-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_belnr
*& Form sub_validation_budat
Validation For Posting Date
FORM SUB_VALIDATION_BUDAT .
DATA: L_BUDAT TYPE BUDAT. " Posting Date
IF S_BUDAT IS NOT INITIAL.
IF S_BUDAT-HIGH IS NOT INITIAL AND S_BUDAT-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_budat
*& Form sub_validation_prctr
Validation For Profit Center
FORM SUB_VALIDATION_PRCTR .
DATA: L_PRCTR TYPE PRCTR. " Profit Center
IF S_PRCTR IS INITIAL.
MESSAGE E010.
ELSE.
IF S_PRCTR-HIGH IS NOT INITIAL AND S_PRCTR-LOW IS INITIAL.
MESSAGE E006.
ELSE.
o
+
Validation for chart of accounts
SELECT PRCTR " Profit Center
FROM CEPC UP TO 1 ROWS
INTO L_PRCTR
WHERE PRCTR IN S_PRCTR.
ENDSELECT.
IF SY-SUBRC NE 0.
o
+
Invalid Profit Center
MESSAGE E011.
ENDIF.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_prctr
*& Form sub_validation_blart
Validation For Document type
FORM SUB_VALIDATION_BLART .
DATA: L_BLART TYPE BLART. " Document type
IF S_BLART IS INITIAL.
MESSAGE E012.
ELSE.
IF S_BLART-HIGH IS NOT INITIAL AND S_BLART-LOW IS INITIAL.
MESSAGE E006.
ENDIF.
ENDIF.
ENDFORM. " sub_validation_blart
*& Form sub_check_filepath
Check user input for initial filename
FORM SUB_CHECK_FILEPATH .
IF RB_PFILE = C_FLAG_X.
IF P_PFILE IS INITIAL.
o
+
The Local File Path can not be Empty
MESSAGE I014.
LEAVE LIST-PROCESSING.
ENDIF.
ELSEIF RB_AFILE = C_FLAG_X.
IF P_AFILE IS INITIAL.
o
+
The App Server File Path can not be Empty
MESSAGE I015.
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
ENDFORM. " sub_check_filepath
*& Form sub_prepare_final
append the required output data in to the internal table.
FORM SUB_PREPARE_FINAL.
changes on 30 th may by dileep
SELECT * FROM BSEG INTO TABLE I_BSEG WHERE HKONT IN S_HKONT AND "G/L Account
GJAHR IN S_GJAHR AND
PRCTR IN S_PRCTR AND "Profit Center
BLART IN S_BLART . "Document Type
SELECT BUKRS
HKONT
BELNR
DMBTR
KOSTL
PRCTR
FROM BSEG INTO TABLE IT_BSEG WHERE HKONT IN S_HKONT AND "G/L Account
PRCTR IN S_PRCTR. "Profit Center
LOOP AT IT_BSEG INTO WA_BSEG.
SELECT SINGLE GJAHR
BUDAT
WAERS
XBLNR
BLART
MONAT
INTO (W_BSEG-GJAHR,W_BSEG-BUDAT,W_BSEG-WAERS,W_BSEG-XBLNR,W_BSEG-BLART,W_BSEG-MONAT)
FROM BKPF WHERE BELNR = W_BSEG-BELNR AND
GJAHR IN S_GJAHR AND
BLART IN S_BLART . "Document Type
MOVE WA_BSEG-BUKRS TO W_BSEG-BUKRS.
MOVE WA_BSEG-HKONT TO W_BSEG-HKONT.
MOVE WA_BSEG-BELNR TO W_BSEG-BELNR.
MOVE WA_BSEG-DMBTR TO W_BSEG-DMBTR.
MOVE WA_BSEG-KOSTL TO W_BSEG-KOSTL.
MOVE WA_BSEG-PRCTR TO W_BSEG-PRCTR.
APPEND W_BSEG TO I_BSEG.
ENDLOOP.
changes on 30 th may by dileep
IF S_BUKRS IS NOT INITIAL.
SORT I_BSEG BY BUKRS ASCENDING.
DELETE I_BSEG WHERE NOT BUKRS IN S_BUKRS.
ENDIF.
IF S_MONAT IS NOT INITIAL.
SORT I_BSEG BY GJAHR MONAT ASCENDING.
IF S_MONAT-HIGH IS NOT INITIAL AND S_MONAT-LOW IS NOT INITIAL.
DELETE I_BSEG WHERE MONAT < S_MONAT-LOW OR MONAT > S_MONAT-HIGH.
ENDIF.
IF S_MONAT-HIGH IS INITIAL AND S_MONAT-LOW IS NOT INITIAL.
DELETE I_BSEG WHERE MONAT NE S_MONAT-LOW.
ENDIF.
ENDIF.
IF S_BELNR IS NOT INITIAL.
SORT I_BSEG BY BELNR ASCENDING.
DELETE I_BSEG WHERE NOT BELNR IN S_BELNR.
ENDIF.
IF S_BUDAT IS NOT INITIAL.
SORT I_BSEG BY BUDAT ASCENDING.
DELETE I_BSEG WHERE NOT BUDAT IN S_BUDAT.
ENDIF.
LOOP AT I_BSEG INTO W_BSEG.
MOVE W_BSEG-BUKRS TO W_FINAL-BUKRS.
MOVE W_BSEG-HKONT TO W_FINAL-HKONT_P.
MOVE W_BSEG-GJAHR TO W_FINAL-GJAHR.
MOVE W_BSEG-BELNR TO W_FINAL-BELNR.
MOVE W_BSEG-BUDAT TO W_FINAL-BUDAT.
MOVE W_BSEG-WAERS TO W_FINAL-WAERS.
MOVE W_BSEG-XBLNR TO W_FINAL-XBLNR.
MOVE W_BSEG-BLART TO W_FINAL-BLART.
MOVE W_BSEG-MONAT TO W_FINAL-MONAT.
MOVE W_BSEG-DMBTR TO W_FINAL-DMBTR_P.
MOVE W_BSEG-KOSTL TO W_FINAL-KOSTL.
MOVE W_BSEG-PRCTR TO W_FINAL-PRCTR_P.
SELECT SINGLE * FROM BSEG INTO W_BSEG1 WHERE BELNR = W_BSEG-BELNR AND "Document Type
BUZID = 'W' .
IF SY-SUBRC = 0.
MOVE W_BSEG1-HKONT TO W_FINAL-HKONT_G.
MOVE W_BSEG1-DMBTR TO W_FINAL-DMBTR_G.
MOVE W_BSEG1-PRCTR TO W_FINAL-PRCTR_G.
MOVE W_BSEG1-BUZID TO W_FINAL-BUZID_G.
ELSE.
EXIT.
ENDIF.
APPEND W_FINAL TO I_FINAL.
SORT I_FINAL BY BELNR ASCENDING.
ENDLOOP.
ENDFORM. " sub_prepare_final
*& Form sub_download_data
Download data
FORM SUB_DOWNLOAD_DATA .
DATA : V_PRD(2) TYPE N.
IF RB_PFILE = C_FLAG_X.
o
+
Downloading To presentation server
V_PRESPATH = P_PFILE.
PERFORM SUB_DOWNLOAD_PRESSERVER.
ELSEIF RB_AFILE = C_FLAG_X.
o
+
Downloading To Application server in Auto Mode
V_APPPATH = P_AFILE.
PERFORM SUB_DOWNLOAD_APPSERVER.
ENDIF.
ENDFORM. " sub_download_data
*& Form sub_download_presserver
text
FORM SUB_DOWNLOAD_PRESSERVER.
DATA: MESSAGE TYPE STRING.
IF I_FINAL[] IS INITIAL.
MESSAGE I016.
EXIT.
ELSE.
W_FINAL_P-BUKRS = 'Company Code'.
W_FINAL_P-DELIMITER_1 = '|'.
W_FINAL_P-HKONT_P = 'G/L Account Number'.
W_FINAL_P-DELIMITER_2 = '|'.
W_FINAL_P-GJAHR = 'Fiscal Year'.
W_FINAL_P-DELIMITER_3 = '|'.
W_FINAL_P-BELNR = 'A/c Document Number'.
W_FINAL_P-DELIMITER_4 = '|'.
W_FINAL_P-BUDAT = 'Posting Date' .
W_FINAL_P-DELIMITER_5 = '|'.
W_FINAL_P-WAERS = 'Currency'.
W_FINAL_P-DELIMITER_6 = '|'.
W_FINAL_P-XBLNR = 'Ref. Document Number'.
W_FINAL_P-DELIMITER_7 = '|'.
W_FINAL_P-BLART = 'Document Type'.
W_FINAL_P-DELIMITER_8 = '|'.
W_FINAL_P-MONAT = 'Fiscal Period'.
W_FINAL_P-DELIMITER_9 = '|'.
W_FINAL_P-DMBTR_P = 'Amount'.
W_FINAL_P-DELIMITER_10 = '|'.
W_FINAL_P-KOSTL = 'Cost Center'.
W_FINAL_P-DELIMITER_11 = '|'.
W_FINAL_P-PRCTR_P = 'Profit Center'.
W_FINAL_P-DELIMITER_12 = '|'.
W_FINAL_P-HKONT_G = 'G/L Account Number'.
W_FINAL_P-DELIMITER_13 = '|'.
W_FINAL_P-DMBTR_G = 'Amount'.
W_FINAL_P-DELIMITER_14 = '|'.
W_FINAL_P-PRCTR_G = 'Profit Center'.
W_FINAL_P-DELIMITER_15 = '|'.
W_FINAL_P-BUZID_G = 'Line Item Id'.
APPEND W_FINAL_P TO I_FINAL_P.
LOOP AT I_FINAL INTO W_FINAL.
W_FINAL_P-BUKRS = W_FINAL-BUKRS.
W_FINAL_P-DELIMITER_1 = '|'.
W_FINAL_P-HKONT_P = W_FINAL-HKONT_P.
W_FINAL_P-DELIMITER_2 = '|'.
W_FINAL_P-GJAHR = W_FINAL-GJAHR.
W_FINAL_P-DELIMITER_3 = '|'.
W_FINAL_P-BELNR = W_FINAL-BELNR.
W_FINAL_P-DELIMITER_4 = '|'.
W_FINAL_P-BUDAT = W_FINAL-BUDAT .
W_FINAL_P-DELIMITER_5 = '|'.
W_FINAL_P-WAERS = W_FINAL-WAERS.
W_FINAL_P-DELIMITER_6 = '|'.
W_FINAL_P-XBLNR = W_FINAL-XBLNR.
W_FINAL_P-DELIMITER_7 = '|'.
W_FINAL_P-BLART = W_FINAL-BLART.
W_FINAL_P-DELIMITER_8 = '|'.
W_FINAL_P-MONAT = W_FINAL-MONAT.
W_FINAL_P-DELIMITER_9 = '|'.
W_FINAL_P-DMBTR_P = W_FINAL-DMBTR_P.
W_FINAL_P-DELIMITER_10 = '|'.
W_FINAL_P-KOSTL = W_FINAL-KOSTL.
W_FINAL_P-DELIMITER_11 = '|'.
W_FINAL_P-PRCTR_P = W_FINAL-PRCTR_P.
W_FINAL_P-DELIMITER_12 = '|'.
W_FINAL_P-HKONT_G = W_FINAL-HKONT_G.
W_FINAL_P-DELIMITER_13 = '|'.
W_FINAL_P-DMBTR_G = W_FINAL-DMBTR_G.
W_FINAL_P-DELIMITER_14 = '|'.
W_FINAL_P-PRCTR_G = W_FINAL-PRCTR_G.
W_FINAL_P-DELIMITER_15 = '|'.
W_FINAL_P-BUZID_G = W_FINAL-BUZID_G.
APPEND W_FINAL_P TO I_FINAL_P.
CLEAR : W_FINAL_P, W_FINAL.
ENDLOOP.
ENDIF.
*---Downloading data to file on Presentation Server
CALL FUNCTION 'GUI_DOWNLOAD'
EXPORTING
FILENAME = V_PRESPATH
FILETYPE = 'ASC'
TABLES
DATA_TAB = I_FINAL_P
EXCEPTIONS
FILE_WRITE_ERROR = 1
NO_BATCH = 2
GUI_REFUSE_FILETRANSFER = 3
INVALID_TYPE = 4
NO_AUTHORITY = 5
UNKNOWN_ERROR = 6
HEADER_NOT_ALLOWED = 7
SEPARATOR_NOT_ALLOWED = 8
FILESIZE_NOT_ALLOWED = 9
HEADER_TOO_LONG = 10
DP_ERROR_CREATE = 11
DP_ERROR_SEND = 12
DP_ERROR_WRITE = 13
UNKNOWN_DP_ERROR = 14
ACCESS_DENIED = 15
DP_OUT_OF_MEMORY = 16
DISK_FULL = 17
DP_TIMEOUT = 18
FILE_NOT_FOUND = 19
DATAPROVIDER_EXCEPTION = 20
CONTROL_FLUSH_ERROR = 21
OTHERS = 22.
o
+ File can not be opened successfully
IF SY-SUBRC NE 0.
IF SY-BATCH EQ C_FLAG_X. " Stop Processing
MESSAGE E017. " File could not be opened
ELSE.
MESSAGE I017. " File could not be opened
LEAVE LIST-PROCESSING.
ENDIF.
ELSE.
CONCATENATE 'Data Successfully downloaded to the Specified Location' V_PRESPATH INTO MESSAGE SEPARATED BY SPACE.
MESSAGE MESSAGE TYPE 'S'.
ENDIF.
MODIFY SCREEN.
ENDFORM. " sub_download_presserver
*& Form sub_download_appserver
text
FORM SUB_DOWNLOAD_APPSERVER .
DATA: V_FILE TYPE STRING, " String
P_DMBTR TYPE CHAR20,
G_DMBTR TYPE CHAR20,
MESSAGE1 TYPE STRING.
IF I_FINAL[] IS INITIAL.
IF SY-BATCH EQ C_FLAG_X.
o
+
File contains no data
MESSAGE E016 .
ELSE.
o
+
File contains no data
MESSAGE I016 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
o
+
To Open The file in Application Server
OPEN DATASET V_APPPATH FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
IF SY-SUBRC NE 0.
o
+
Display error message: "Could not open file"
IF SY-BATCH EQ C_FLAG_X.
o
+
File contains no data
MESSAGE E016 .
ELSE.
o
+
File contains no data
MESSAGE I016 .
LEAVE LIST-PROCESSING.
ENDIF.
ENDIF.
o
+
Perform for building the Report header
CONCATENATE
'COMPANY_CODE'
'G/L_ACCOUNT_NUMBER'
'FISCAL_YEAR'
'A/C_DOCUMENT_NUMBER'
'POSTING_DATE'
'CURRENCY'
'REF_DOCUMENT_NUMBER'
'DOCUMENT_TYPE'
'FISCAL_PERIOD'
'AMOUNT'
'COSTCENTER'
'PROFIT_CENTER'
'G/L_ACCOUNT_NUMBER'
'AMOUNT'
'PROFIT_CENTER'
'LINE_ITEM_ID'
INTO V_FILE SEPARATED BY C_DELIMITER.
TRANSFER V_FILE TO V_APPPATH.
o
+
Transfer the data to application Server
LOOP AT I_FINAL INTO W_FINAL.
P_DMBTR = W_FINAL-DMBTR_P.
G_DMBTR = W_FINAL-DMBTR_G.
CONCATENATE
W_FINAL-BUKRS
W_FINAL-HKONT_P
W_FINAL-GJAHR
W_FINAL-BELNR
W_FINAL-BUDAT
W_FINAL-WAERS
W_FINAL-XBLNR
W_FINAL-BLART
W_FINAL-MONAT
P_DMBTR
W_FINAL-KOSTL
W_FINAL-PRCTR_P
W_FINAL-HKONT_G
G_DMBTR
W_FINAL-PRCTR_G
W_FINAL-BUZID_G
INTO V_FILE SEPARATED BY C_DELIMITER.
TRANSFER V_FILE TO V_APPPATH.
IF SY-SUBRC NE 0.
Display error message: "Data could not be written at the location"
MESSAGE 'Data could not be written at the location' TYPE 'I'.
EXIT.
ENDIF.
CLEAR V_FILE.
ENDLOOP.
CLOSE DATASET V_APPPATH.
IF SY-SUBRC NE 0.
Display error message: "File could not be closed"
MESSAGE 'File could not be closed' TYPE 'I'.
EXIT.
ELSE.
CONCATENATE 'Data Successfully downloaded to the Specified Location' V_APPPATH INTO MESSAGE1 SEPARATED BY SPACE.
MESSAGE MESSAGE1 TYPE 'S'.
ENDIF.
ENDFORM. " sub_download_appserver
regards,
Vipul
Maybe you are looking for
-
Photoshop CC 14.2.1 and NVidia GTX 660 Display Problems
I'm having exactly this problem: http://forums.adobe.com/message/6264980 The fix documented at the end of that thread works but the penalty is a loss of performance. In an attempt to fix it, I updated to the latest drivers from NVidia for the GTX 660
-
Mac mini w/ SSD, adapter???
If i where to replace the HDD on my mac mini w/ a solid state drive would i need to get a caddy to fit the new SSD? Or is it made for the 2.5 drives since they are so small? -Thanks
-
Account stuck in Provisioning state in OIM 11gR2
Hello, In OIM 11gR2, when provisioning fails, the application still shows in the accounts tab of the user, but it is stuck in the "Provisioning" state. I don't know if it's standard behavior, but it always does this for me. When this problem occurs,
-
I need to know how to remove the color background from an image PLEASE
Hello, I'm trying to remove an image within an image so that the image removed stands alone as its own file. http://fc08.deviantart.net/fs47/f/2009/166/0/5/Straw_Hat__s_Flag_by_fenrir1992.jpg ^ So from that image, I'm trying to remove the black backg
-
To open ScanNotification you need to Install Rosetta
Hello. I just upgrade my Mac with Snow Leopard and every time I turn on the computer I get the following message: To open ScanNotification, you need to install Rosetta. To install Rosetta, connect to the Internet and open ScanNotification. If you can