Include prg
hi experts,
i created one include prong. but the error am getting like that
REPORT/PROGRAM statement missing, or program type is I (INCLUDE).
what can i do
Hi raghuveer,
1. Yes u will get this message.
2. U activate it forcefully (ACTIVATE ANYWAY BUTTON)
3. a) Now create another Z program.
b) INCLUDE zprg.
and Activate this program.
(After Activation)
4. Goto your original include,
and now if u activate, it WILL NOT GIVE any message.
5. WHENEVER WE TRY TO ACTIVATE ANY INCLUDE,
(which is never used in other programs),
it will give this Message,
which can be ignored !
regards,
amit m.
Similar Messages
-
hi all
i am getting runtime error in this report can any one help me out.
Include prg is attached down.
REPORT ZVBLOCKED.
INCLUDE ZVBLOCKEDTOP.
REPID = SY-REPID.
PERFORM GET_DATA.
PERFORM APPEND_FIELD.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = REPID.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = LAYOUT
IT_FIELDCAT = F_VBAK
I_TABNAME = 'IT_VBAK'
IT_EVENTS = F_EVENTS
TABLES
T_OUTTAB = IT_VBAK.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = LAYOUT
IT_FIELDCAT = F_EKKO
I_TABNAME = 'IT_EKKO'
IT_EVENTS = F_EVENTS
TABLES
T_OUTTAB = IT_EKKO.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
FORM GET_DATA.
SELECT VBELN NETWR FROM VBAK INTO TABLE IT_VBAK WHERE KUNNR IN S_KUNNR.
SELECT EBELN AEDAT FROM EKKO INTO TABLE IT_EKKO WHERE LIFNR IN S_LIFNR.
ENDFORM.
FORM APPEND_FIELD.
FCAT-FIELDNAME = 'VBELN'.
FCAT-TABNAME = 'VBAK'.
FCAT-REF_FIELDNAME = 'VBELN'.
FCAT-REF_TABNAME = 'VBAK'.
APPEND FCAT TO F_VBAK.
FCAT-FIELDNAME = 'NETWR'.
FCAT-TABNAME = 'VBAK'.
FCAT-REF_FIELDNAME = 'NETWR'.
FCAT-REF_TABNAME = 'VBAK'.
APPEND FCAT TO F_VBAK.
FCAT-FIELDNAME = 'EBELN'.
FCAT-TABNAME = 'EKKO'.
FCAT-REF_FIELDNAME = 'EBELN'.
FCAT-REF_TABNAME = 'EKKO'.
APPEND FCAT TO F_EKKO.
FCAT-FIELDNAME = 'AEDAT'.
FCAT-TABNAME = 'EKKO'.
FCAT-REF_FIELDNAME = 'AEDAT'.
FCAT-REF_TABNAME = 'EKKO'.
APPEND FCAT TO F_EKKO.
ENDFORM.
This is include prg.
TABLES: LFA1,EKKO,KNA1,VBAK.
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_LIFNR FOR LFA1-LIFNR,
S_KUNNR FOR KNA1-KUNNR.
SELECTION-SCREEN END OF BLOCK B1.
TYPES: BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
NETWR TYPE VBAK-NETWR,
END OF TY_VBAK.
DATA: WA_VBAK TYPE TY_VBAK,
IT_VBAK TYPE TABLE OF TY_VBAK.
TYPES: BEGIN OF TY_EKKO,
EBELN TYPE EKKO-EBELN,
AEDAT TYPE EKKO-AEDAT,
END OF TY_EKKO.
DATA: WA_EKKO TYPE TY_EKKO,
IT_EKKO TYPE TABLE OF TY_EKKO.
TYPE-POOLS: SLIS.
DATA: REPID LIKE SY-REPID,
FCAT TYPE SLIS_FIELDCAT_ALV,
F_LFA1 TYPE SLIS_T_FIELDCAT_ALV,
F_VBAK TYPE SLIS_T_FIELDCAT_ALV,
F_EKKO TYPE SLIS_T_FIELDCAT_ALV,
LAYOUT TYPE SLIS_LAYOUT_ALV,
F_EVENTS TYPE SLIS_T_FIELDCAT_ALV.Check the below code, its working fine.
*& Report YSAT_TEST3
REPORT YSAT_TEST3.
type-pools: slis.
TABLES: LFA1,EKKO,KNA1,VBAK.
data: lv_event type slis_alv_event, " add this
lt_event type slis_t_event. " add this
SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
SELECT-OPTIONS: S_LIFNR FOR LFA1-LIFNR,
S_KUNNR FOR KNA1-KUNNR.
SELECTION-SCREEN END OF BLOCK B1.
TYPES: BEGIN OF TY_VBAK,
VBELN TYPE VBAK-VBELN,
NETWR TYPE VBAK-NETWR,
END OF TY_VBAK.
DATA: WA_VBAK TYPE TY_VBAK,
IT_VBAK TYPE TABLE OF TY_VBAK.
TYPES: BEGIN OF TY_EKKO,
EBELN TYPE EKKO-EBELN,
AEDAT TYPE EKKO-AEDAT,
END OF TY_EKKO.
DATA: WA_EKKO TYPE TY_EKKO,
IT_EKKO TYPE TABLE OF TY_EKKO.
TYPE-POOLS: SLIS.
DATA: REPID LIKE SY-REPID,
FCAT TYPE SLIS_FIELDCAT_ALV,
F_LFA1 TYPE SLIS_T_FIELDCAT_ALV,
F_VBAK TYPE SLIS_T_FIELDCAT_ALV,
F_EKKO TYPE SLIS_T_FIELDCAT_ALV,
LAYOUT TYPE SLIS_LAYOUT_ALV,
F_EVENTS TYPE SLIS_T_FIELDCAT_ALV.
REPID = SY-REPID.
perform it_events. " add this
PERFORM GET_DATA.
PERFORM APPEND_FIELD.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_INIT'
EXPORTING
I_CALLBACK_PROGRAM = REPID.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = LAYOUT
IT_FIELDCAT = F_VBAK
I_TABNAME = 'IT_VBAK'
IT_EVENTS = lt_event " add this
TABLES
T_OUTTAB = IT_VBAK.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_APPEND'
EXPORTING
IS_LAYOUT = LAYOUT
IT_FIELDCAT = F_EKKO
I_TABNAME = 'IT_EKKO'
IT_EVENTS = lt_event " add this
TABLES
T_OUTTAB = IT_EKKO.
CALL FUNCTION 'REUSE_ALV_BLOCK_LIST_DISPLAY'.
FORM GET_DATA.
SELECT VBELN NETWR FROM VBAK INTO TABLE IT_VBAK WHERE KUNNR IN S_KUNNR.
SELECT EBELN AEDAT FROM EKKO INTO TABLE IT_EKKO WHERE LIFNR IN S_LIFNR.
ENDFORM.
FORM APPEND_FIELD.
FCAT-FIELDNAME = 'VBELN'.
FCAT-TABNAME = 'VBAK'.
FCAT-REF_FIELDNAME = 'VBELN'.
FCAT-REF_TABNAME = 'VBAK'.
APPEND FCAT TO F_VBAK.
FCAT-FIELDNAME = 'NETWR'.
FCAT-TABNAME = 'VBAK'.
FCAT-REF_FIELDNAME = 'NETWR'.
FCAT-REF_TABNAME = 'VBAK'.
APPEND FCAT TO F_VBAK.
FCAT-FIELDNAME = 'EBELN'.
FCAT-TABNAME = 'EKKO'.
FCAT-REF_FIELDNAME = 'EBELN'.
FCAT-REF_TABNAME = 'EKKO'.
APPEND FCAT TO F_EKKO.
FCAT-FIELDNAME = 'AEDAT'.
FCAT-TABNAME = 'EKKO'.
FCAT-REF_FIELDNAME = 'AEDAT'.
FCAT-REF_TABNAME = 'EKKO'.
APPEND FCAT TO F_EKKO.
ENDFORM.
*& Form IT_EVENTS
* text
* --> p1 text
* <-- p2 text
FORM IT_EVENTS . " add this
refresh lt_event.
clear lv_event.
lv_event-name = slis_ev_top_of_list.
lv_event-form = 'LIST_HEADER'.
append lv_event to lt_event.
clear lv_event.
lv_event-name = slis_ev_top_of_page.
lv_event-form = 'VERIFIC_HEADER'.
append lv_event to lt_event.
ENDFORM. " IT_EVENTS
Thanks
Satyasuresh Donepudi
Edited by: Satya suresh Donepudi on Apr 29, 2009 9:04 AM -
Material on dialog programming
Hi al,
does anybody have good material on dialog programming.
SPECIALLY ON TABLE CONTROL
THANKSHi
Go thru this docu
TRANSACTIONS
TABLE OF CONTENTS
TABLE OF CONTENTS 2
GENERAL INTRODUCTION TO TRANSACTION 5
Logical Unit of Work (LUW) 5
DYNPRO concept 6
SCREEN PAINTER 7
Using Screen Painter 7
Creating a new Screen 7
Designing of Screen 8
Selecting Screen Fields 9
Attributes of Screen Elements 9
Field List 10
Screen Flow Logic 10
MODULE POOL PROGRAMMING 12
Creation of Module Pool Program 12
Communication between Dynpro and Module Program 12
CREATION OF A COMPLETE TRANSACTION 12
Steps involved to create a complete transaction 12
Handling Function Code 13
THE FIELD CHECKS 14
Automatic Field Checks 14
About at Exit Command 15
In module pool program. 15
Flow Logic Validations 16
Module assign. 16
Module Pool Program Validations 17
DYNAMICALLY CALLING THE SCREENS 19
About Displaying Next Screen 19
Set Screen 20
Call Screen 20
Leave to screen 21
SUBSCREENS 22
TABLE CONTROLS 23
Features of Table Controls 23
Declaring of Table Control in the Module Pool Program 24
Designing Table Control on Screen 24
Passing data to Table Control 24
STEP LOOPS 27
Types of Step Loops 27
Switching To List Mode 28
Returning back from LIST mode 28
Process on HELP-REQUEST event 29
Value Request 30
THE SCREEN DISPLAYED IS POP-UP SCREEN AND CODE FOR THE FLOW LOGIC AND MODULE IS WRITTEN BELOW: 32
Need To Change Screen 34
Modifying the screen 34
Field Name Length Description 34
MODULE MODIFY_SCREEN. 35
LOOP AT SCREEN. 35
ENDMODULE.WORKING WITH MATCHCODE OBJECTS 35
WORKING WITH MATCHCODE OBJECTS 36
Creating Matchcode object 36
Creating Matchcode ids. 37
Using Matchcode 38
Creating Lock Objects 39
Activation of Lock Object 40
GENERAL INTRODUCTION TO TRANSACTION
Transaction, in R/3 system is an operation that lets the user make necessary changes to the database. The entire R/3 system is nothing but set of business transaction. The data transfer from old system to SAP R/3 database, or modifying data, or deleting data, which is not required, is done through transaction.
For SAP system, Transaction is nothing but sequence of steps called as dialog steps and for user it is sequence of screens that appears one after the other depending upon the option he selects. The special transaction monitor called the SAP dispatcher handles the sequence of steps that takes place in any transaction. The main task of transaction is to update database table. The database table is not updated until a transaction is completed. All changes can be rolled back if the transaction has not finished.
The transaction contains two steps which are as following:
Interactive phase: In this step, user enters the data, which needs to be inserted or deleted or modified on to the screen. There can be single screen or multiple screens depending upon the transaction. So this step can consist of single step or multiple steps. In this phase you prepare database record.
Update phase: This phase processes the database record and updates the database table. Actual updating of database table takes place in this phase.
All the transactions are associated with transaction code. And all these codes are stored in a table TSTC.
Logical Unit of Work (LUW)
The R/3 system is multi user system and many users access the same information at the same time, which is mainly DATA. Consider the case where one user is modifying a record, and second user is trying to delete the same record. If the second user is successful in deleting the record then the first user will face problem for modifying the record that is already deleted. The avoid such situation, R/3 system has provided Logical Unit of Work, which is defined as a locking mechanism to protect transaction integrity. Of course, there are other measures, which ensures data integrity like check table i.e. foreign key relationship. Within SAP system there are three types of transaction and may be distinguished as:
Database transaction known as LUW. It can be defined as a period in which operation requested must be performed as a unit, i.e. all or nothing operation. At the end of LUW, either of the database changes are committed or rolled back.
Update transaction or SAP LUW. One SAP LUW can have several databases LUW. So a set of a database is either committed or rolled back. The special ABAP/4 command COMMIT WORK, marks the end of a SAP LUW.
ABAP/4 transaction. Is made up of a set of related task combined under one transaction code. ABAP/4 transactions are for programming environment, in which ABAP/4 transaction functions like one complete object containing screens, menus and transaction codes.
R/3 system has provided in built locking mechanism, which defines the Logical Unit of Work. Also user can set his own locking mechanism. The LUW starts when a lock entry in the system table is created, and it ends when the lock is released.
To provide the user the facility to communicate with the table in order to modify or delete or insert data, R/3 has provided tool called SCREEN PAINTER. This tool allows you to design screen, process screen through program and update the database table. SAP has provided one and only one way to update the database table, i.e. transaction. Though you can update database table by using open SQL statement through program, SAP usually doesnt recommend this kind of updating. Many standard transactions are available to update standard table but if the need arises, the developer should be able to develop new transaction, which allows the updating of database tables. This can be achieved by using various components of screen painter.
Following are the few concepts and steps for creating entire new transaction.
DYNPRO concept
A dynpro refers to the screen + flow logic. With screen painter you can develop screen and flow logic. The relationship between screen, flow logic, and program can be shown as follows:
Dynpro, as figure indicates consist of screen and flow logic and places exactly one call to module pool program. A transaction consists of many screens and for each screen flow logic is attached. When the transaction is executed, the screen places a call to flow logic and flow logic in turn places a call to module pool program.
A module program is usual ABAP/4 program that consist of modules and data declaration.
ABAP/4 is an event driven language. In module pool program too, events get triggered and these events are handled in flow logic. Flow logic editor is subset of ABAP/4 editor. The system automatically displays the two important events for the flow logic.
Screen is the important component of dynpro and can be created, designed by screen painter.
Screen Painter
A screen painter can be started by
Development workbench  Screen Painter
Or
SE51 transaction code.
Using Screen Painter
The process of creating a dynpro includes the creation and definition of all the needed screen components.
The steps involved in creating the dynpro are as follows:
Create screen and attributes by using screen attribute screen.
Select and place the needed fields within the screen by using dict/program fields.
Establish the field attributes to which the screen belongs by using field list.
Define the flow logic respect to the transaction to which it belongs by using flow logic.
Creating a new Screen
Steps involved are as follows:
Enter the name of program and number of the screen
Click on Create
On screen attribute screen enter short description
Enter screen type. Normally, you select NORMAL option for usual R/3 screen. Other options available are SUBSCREEN & MODAL DIALOG BOX. Modal dialog box is used to establish independent and interactive dialog box while subscreen is screen within screen.
Next attribute to be passed is NEXT SCREEN. Here you need to specify the next screen number, which must be processed after the current one.
Designing of Screen
Screen can be designed by using FULL SCREEN EDITOR. You can go to full screen editor.
From screen attribute screen
By pressing full screen editor pushbutton
Or
From initial screen of screen painter.
There are two modes available with full screen editor.
Graphical mode. The graphical mode works similarly to typical window application.
Alphanumeric mode (rarely used).
Elements of screen
Text Standard text or field labels.
Entry - display field.
Radiobutton All radiobutton must be associated with one group.
Checkbox Normally used for YES/NO operations.
Pushbutton Used for activating particular function.
Boxes grouping together many screen elements.
Subscreens This is a screen area in which you can display another screen.
Table controls This area of screen is similar to table but should be treated as a loop.
Status - Display output fields containing icon.
All these elements are on the control bar of full screen editor and can be placed on the screen work area by clicking and placing them wherever needed.
Selecting Screen Fields
Screen field can be either dictionary objects or program fields. Steps involved in the placing of fields on the screen are as follows:
Click the pushbutton Dict/program fields on the full screen editor
Or
Goto  dict/prog fields.
Enter table name.
Click Get from dictionary.
Select fields.
Click copy pushbutton.
Position the cursor where you want those fields to be placed.
To adjust various screen elements, you can use drag and drop facility for screen elements.
Attributes of Screen Elements
The entire element of a screen has some attributes, which determines their behavior.
General These attributes are directly managed by the screen painter like name of the element, or text of element or column width and various things associated with the screen.
Dictionary These attributes are applicable to fields, which are from dictionary. Various components of dictionary can be attached to this element like search help, foreign key.
Program.
Display Behavior of the element with respect to their display feature.
Attribute dialog box can be displayed by
Clicking on the ATTRIBUTE push button on the application tool bar.
Double clicking on the element.
Field List
This list displays a list of all screen elements together with their screen attributes. One important element of Field list is OKCODE. Any pushbutton is associated with function code as in menu item in menu painter. When the user clicks the pushbutton this code is stored in OKCODE. This OKCODE is created by system without a name and is not visible on the screen. In ABAP/4 this field is work field and is nothing but an area wherein system stores the variable and is the last field of the field list and is invisible, hence user needs to give the name OKCODE. It is not mandatory to give the name OKCODE; developer can give any name to this field.
Screen Flow Logic
You can go to this screen either by
Initial screen of Screen painter  Flow logic
Or
From Screen attribute screen  Flow logic
When transaction is executed, the screen is displayed, user enters few fields, selects few functions. Later the screen is processed and processing of screen is done by flow logic. The events that are associated with screen are as follows:
Process before Output (PBO)
Process after input (PAI)
Process on value request (POV)
Process on help request (POH)
The system automatically displays two very important events or modules in flow logic i.e. PAI and PBO
PBO event
This event is triggered before the screen is displayed. The processing of screen before the display of screen is done in this event. For example, filling in default values in the screen fields.
PAI event
This event is responsible for processing of screen after the user enters the data and clicks the pushbutton. The processing of screen can include displaying another screen, or just displaying list or quitting the transaction itself and many more things. Usually it is displaying another screen. These operations can be carried out in the PAI event. OKCODE plays an important role in this operation.
POV event
Process on value request is triggered when the user clicks F4 key. You can handle this event when the user presses F4 key by writing code for the same in module pool program. Normally when the user presses F4, list of possible values is displayed. The standard list produced by system is adequate for applications you develop yourself. However, you can also have the option of setting up your own documentation and lists of possible values that are more detailed.
POH event
Normally when the user places the cursor on the field and presses F1 function key, the system displays its own Help for that particular field. You can add your own functionality to the Help button by writing code for the same in the POH event.
Module Pool Programming
This component though is not attached to the screen painter, plays important role in transaction. Normally, for reports, on line executable programs are written but for transaction, Module Pool Programs are written. The module pool program contains only modules to handle various events associated with screen and data declaration statements.
System divides the module pool program into several include program. These are global field, PBO modules, and PAI modules. It is entirely users decision whether to use these modules or write directly into main program.
Creation of Module Pool Program
You can create module pool program either through
Object browser
System automatically creates the module pool program and for these program which are created through object browser, system creates the include modules.
Or
ABAP/4 editor
It is similar to normal program creation. Type of program should be given M and is not created by system.
Communication between Dynpro and Module Program
For each screen, the system executes the flow logic, which contains corresponding events. The control is passed to Module Pool Program. Module Pool Program handles the code for these events and again passes back control to the flow logic and finally to screen. Unlike on line program, in this case, the control remains with flow logic. The switching of control between flow logic and module pool program and back is common process when user executes transaction.
Creation of a Complete Transaction
Steps involved to create a complete transaction
Create module pool program.
From screen painter create screens.
Write flow logic for each screen.
Write code for all the events in module pool program.
Check for any error in screen and flow logic.
Generate each and every component of screen i.e. flow logic and screen.
Single screen can be tested using Screen Painter.
Create transaction code through object browser.
Generate the transaction code.
User can execute the transaction by entering the transaction code in the command field.
Handling Function Code
The function code or OKCODE is the last field of Field list. Function code can be handled as follows:
During the Designing of the screen, a function code is assigned to pushbutton.
In field list, developer needs to specify OKCODE as last field.
In module program it is a global field and can be evaluated in the PAI event.
A function code is treated in the same way, regardless it comes from pushbutton, menu item or any other GUI element.
A complete example for transaction is shown below:
If you have a screen like the one below:
When the user clicks on the Display button, you want to display details of sflight, with corresponding carrid and connid (which is entered by the user).
Module pool program to handle this particular screen is as follows:
Program YVTEST7.
TABLES: SFLIGHT.
DATA: OKCODE (4).
MODULE INPUT1 INPUT,
CASE OKCODE.
WHEN DISP.
SELECT * FROM SFLIGHT
WHERE CARRID = SFLIGHT CARRID AND
CONNID = SFLIGHT CONNID.
ENDSELECT.
LEAVE TO SCREEN 200.
WHEN EXIT. LEAVE TO SCREEN 0.
ENDCASE.
ENDMODULE. INPUT1 INPUT
MODULE USER_COMMAND_0200 INPUT.
CASE OKCODE.
WHEN BACK. LEAVE TO SCREEN 100.
ENDCASE.
ENDMODULE. USER_COMMAND_0200 INPUT
When the user clicks on display, control is transferred to screen no. 200 on which you display sflight details & on the same screen, when user clicks on BACK button, he comes back to main screen.
Flow logic for screen 100 is as follows:
PROCESS AFTER INPUT.
MODULE INPUT.
Flow logic for screen 200
PROCESS AFTER INPUT.
USER_COMMAND_0200.
MODULES: Modules are handled in module pool program.
You need to write flow logic for screen 200 and design screen 200.
In case of transaction transfer of data from program to screen is automatic i.e. you need not transfer the data from program to screen explicitly. The fields, which you define in the screen receives the data from program and displays the same.
The Field Checks
As already mentioned Transaction is the only method, which SAP recommends to update the database tables. Data entered in the database table should be valid and correct. Data entered is validated at each and every point. ABAP/4 offers various methods to validate data and those are as follows:
Automatic field checks
Checks performed in the flow logic
Checks performed in the ABAP/4 module pool program
Automatic Field Checks
These checks are based on the field information stored in the dictionary. These checks are performed by the system automatically when the user enters the data for the screen field. System performs these checks before PAI event is triggered. Types of field checks performed by system are as follows:
Required input
While designing the screen, for particular screen field if you click the Req. Entry checkbox, the field becomes mandatory. When the transaction is executed if user leaves this particular field blank, the system displays error message. User cannot proceed until the user enters some data.
Proper Data Format
Each field has its own data format whether it is table field or screen field. Whenever data is entered, system checks for the proper format of the data. For example date. Each user has its own format for date, which is defined in the user master record. If the date defined in the user master record is in the format DD/MM/YYYY, if the user enters the date, say, in YY/DD/MM, the user displays the error message. System also checks for the value of month or days. For example if month entered is greater than twelve then the error message is displayed.
Valid Value for the Field
In data dictionary two tables are related by Primary key-Foreign key relationship. Whenever the user enters the data, the system checks for the check table values. Also in Domain, if you have fixed values, then the system checks for these values.
Automatic field checks are repeated each time the user enters the data.
About at Exit Command
Automatic field checks can be avoided by AT EXIT-COMMAND, which works exactly the same way as Cancel works on application tools bar. In the R/3 screen, if you want to quit the processing of that particular screen without entering the mandatory fields, user can click the Cancel button. Same functionality can be incorporated in the user-defined transaction by using AT EXIT-COMMAND. This module can be called before the system executes the automatic field checks and it goes without saying that before PAI event. Code for AT EXIT-COMMAND in flow logic and in module pool program can be written as follows:
In Flow Logic
Process After Input.
Module exit AT EXIT-COMMAND.
In module pool program.
Module exit.
Case okcode.
When Exit.
Leave to screen 0.
To achieve this kind of functionality a pushbutton or menu item should be assigned a function type E. It tells the system to process this particular module before carrying out any field checks.
Flow Logic Validations
Consider the case where you want user to enter only LH and SQ for sflight-carrid. In this case, you are restricting value of a screen field. This cannot be achieved by automatic field check. Hence there is a need of additional validation. It can be done in flow logic by using following statement:
Field -
Values
Syntax
PAI.
Field sflight-carrid values (LH).
For multiple values
PAI.
Field sflight-carrid values (LH SQ).
Field sflight-price values (between 1000 and 2000).
In this case when the user enters the value, PAI is triggered and field is checked for that particular value. If the value entered happens to be wrong, that field is enabled for user to enter. If you have multiple Field statements in your flow logic, it is sequential execution.
Consider the following case:
PAI.
Module assign.
Field sflight-carrid values (LH SQ).
In ABAP/4
Module assign.
Data: carrid1 like sflight-carrid.
Carrid1 = sflight-carrid.
Endmodule.
In this case, Sflight-carrid is used in the flow logic before the field statement. The system will give invalid value or some previous value as the field sflight-carrid is used in module before it is checked i.e., field statement is after the module in which sflight-carrid is being used. The field is not available to the system unless it executes the field statement. Field statement transfers the values to the program and is done only once. If you dont have Field statement in your flow logic, transfer of values takes place in PAI event.
Consider one more case where you have multiple field statement.
PAI.
Field Sflight-carrid values (LH).
Field Sflight-connid values (0400 0500).
In this case if the user enters only carrid wrong, then this particular field is enabled and rest of the fields are disabled for user to input. Many times if the user enters wrong value for one field, then you might want to give option to user to enter all the fields, which is not possible by using Field statement only. This functionality can be achieved by CHAIN ENDCHAIN.
Syntax
Chain.
Field sflight-carrid value (LH).
Field sflight-connid values (between 200 and 500).
Endchain.
Field sflight-price values (100 1000).
In this case, if the user enters wrong value only for carrid, both the fields i.e. carrid and connid are enabled as they are grouped together in the Chain statement. The field price will be disabled for input. Usually, logically related fields are grouped together with Chain-Endchain statement.
Module Pool Program Validations
Checking fields ABAP/4 program includes
Field statement in flow logic.
Module statement in ABAP/4 module pool Program.
Syntax
PAI.
Field sflight-carrid module <name>.
This module can be handled in the main program i.e. module pool program.
In ABAP/4 program
Module Check.
Select single * from sflight where carrid = sflight-carrid.
If sy-subrc ne 0.
Message e001.
Endif.
In this case, field sflight-carrid is checked in the table for its existence.
Dynamically Calling the Screens
About Displaying Next Screen
Transaction is a sequence of screens, which are displayed one after the other. The next screen displayed depends upon the attributes of first screen. In attributes you need to give Next Screen number i.e. if next screen displayed should be 200 screen, then this number should be given in next Screen attributes. These are static attributes of the screen. By default, if nothing is specified in the program, the system branches out to the screen number, which is specified in the attribute screen.
But this doesnt happen always. If you have many pushbuttons on the screen like the one in the following case:
In this case, if user selects MARA pushbutton, then fields from Mara table are displayed. When the user clicks on the MARD, then the fields from MARD table are displayed. Depending upon users selection, the screen is branched out and this has to be done during runtime. This functionality can be achieved by dynamically calling the screen in module pool program.
The screen can branch out to new screen depending upon user selection. Following command in module pool program can do this:
SET SCREEM
CALL SCREEN
LEAVE TO SCREEN <NUMBER>
All these commands override the specifications given in the attributes. This overriding is temporary. The values stored in the attribute are not changed.
Set Screen
Syntax
Set screen <number>.
In module pool program
Case okcode.
When DISP.
Set screen 200.
When LIST.
Set screen 300.
Endcase.
In this case, the entire processing of current screen takes place and then the system branches out to next screen. If you want to branch out to the next screen without processing the current screen, LEAVE SCREEN should be used along with the SET SCREEN.
For Example:
Case okcode..
When DISP.
Set screen 200.
Leave Screen.
When LIST.
Set screen 300.
Leave Screen.
Endcase.
When SET SCREEN is used, control cannot be transferred to the main screen or previous screen, unless you write code for the same.
Call Screen
Usually used for pop up screens. Many times, there is a need for user to enter additional information or secondary information on another screen or pop up screen. Once the user enters the data, he should be able to go back to main screen or to the screen where he started. This is not possible by using SET SCREEN. CALL SCREEN achieves this functionality.
Syntax
Call Screen 200.
Will simply call a screen number 200 from a main screen. Once the screen is displayed the user can enter all the data and return to the main screen by clicking BACK button.
To call screen as pop up screen the syntax is
Call screen starting at <col.no.> <line no>
Ending at <col no> <line no>.
In this case window will be popped as window and user can close it by using BACK button.
Leave to screen
To SET a new screen without processing current screen, you need to use the following two statements together:
SET SCREEN 200.
LEAVE SCREEN.
Or a Single statement
LEAVE TO SCREEN 200.
Subscreens
A subscreen is a screen within screen. Consider the following case.
If user clicks on FIRST pushbutton, you want to display details of MARA table and if user clicks on the SECOND pushbutton, you want to display details of MARD table. You can do this by calling two different screens. But the information will be displayed on the next screen. Displaying data on the same screen is possible by using SUBSCREENS.
Step to create a subscreen are as follows:
Create a subscreen area on MAIN screen and name it.
Create a separate screen of subscreen type.
Arrange the fields on this screen so that they fit in subscreen area exactly. Only when it is larger, the part of the screen that fits in the main area will be visible.
Write code for calling subscreen in flow logic.
To call subscreen, from your flow logic, you need to include the statement both in PAI and PBO.
Syntax
PBO.
Call subscreen <area> including <prg name> <screen no>.
PAI.
Call subscreen <area>.
Area - is the name of the area on main screen.
Prg. Name - is the name of the module pool program.
Screen number - is subscreen screen number.
Some of the donts with subscreen are:
GUI status cannot be set to the subscreen
OKCODE is not applicable to the subscreen.
Subscreen cannot call another screen.
It cannot contain AT EXIT-COMMAND.
You can call multiple subscreen in the same area (at any given point of time, only one subscreen can be called in the subscreen area) and is done dynamically during runtime by using variable screen number.
Table Controls
A table can be created in transaction. These tables when designed on the screen are called as SCREEN TABLES. These screen tables are of two types viz.
Table controls
Step loops
Though these are tables when code is written to handle them, the tables are treated as loops.
Features of Table Controls
Data is displayed in the form of table when many records match the criteria.
Table control gives user the feeling of an actual table.
You can scroll through the table vertically and horizontally.
You can select rows and columns
Resize the width of a column
You can have separator lines in between rows and columns
Automatic resizing of the table when the user resizes the window.
In general table control includes all the features of an actual table and user gets the feeling that he is actually working with table. You can update information in table control and it can be updated in the database table by writing code for it.
Steps associated for creating complete screen table are as follows:
Declaration of table control in module pool program.
Designing of table control on the screen.
Passing data to table in flow logic.
Declaring of Table Control in the Module Pool Program
Syntax
Controls TCI type Tableview using screen <screen no.>
When you use table control in a screen you must declare the structure in module pool program. Important fields of tableview are as follows:
Lines number of displayable rows in a table.
Top_line the row of table where the screen displays start.
Current_line The row currently being processed inside a loop.
When you process the table control in flow logic depending upon where you want to start display of rows, you need to use these variables.
Designing Table Control on Screen
To design table control on the screen, you need to click on Table in control bar and place it on the screen. You can adjust the length and width of table control.
Name the table control. (Here you need to use same name which you have used for declaration of table control in module pool program)
From dictionary object, select table fields and place them in the table control.
Passing data to Table Control
As already mentioned, table controls are tables but are treated like loops. Usually transfer of data from program to screen is automatic. But in case of table control, transfer of data is not automatic. You need to explicitly transfer the data to table control. ABAP/4 provides loop statement, which is associated with flow logic to transfer the data. Because table control is treated like a loop, data from where it is transferred should be a loop. You cannot transfer the data by only select statement; you need to put the data into internal table. ABAP/4 provides the LOOP statement, which is associated with the flow logic and allows you to loop through the table control and internal tables. In between LOOP-ENDLOOP, you can use most of the flow logic keywords like field values. Module etc.
You need to code a LOOP statement in both PBO and PAI event of the screen. With LOOP statement, you can transfer the data from program to table control and vice versa. That is, if user updates the value in the table control, you can update database table with its value. And this can be done in PAI event. So even if you are not updating database table through the table control, you need to put the LOOP statement in the PAI event also.
Syntax
PBO.
LOOP AT <internal table> with control <table control name> cursor <scroll variable>
PAI.
Loop at itab.
Proper usage of Table Control is as follows:
In flow logic.
PBO.
LOOP AT ITAB WITH CONTROL TC1 CURSOR TC1-TOP_LINE.
MODULE ASSIGN.
ENDLOOP.
PAI.
LOOP AT ITAB.
ENDLOOP.
Considering, we have following fields in table control and the screen looks like this:
In module pool program
CONTROL TC1 Type tableview using screen 200.
Module assign.
Sflight carrid = itab carrid.
Sflight - connid= itab - connid.
Sflight - fldate= itab fldate.
Endmodule.
The transfer of the data from program to table control takes place in steps and these steps are as follows:
With LOOP AT statement the first row is picked up and placed in the header of the internal table.
Whatever statements you have in between LOOP-ENDLOOP are executed. In this case, you have Module statement. In Module statement, value of internal table is assigned to table control field.
The row in internal table is transferred to the first line of the table control as stated in the LOOP AT statement.
The system encounters the ENDLOOP statement and Control is passed to the next line of the internal table.
In the same way, all the records of the internal table are passed to the table control.
STEP LOOPS
Step Loops are type of screen table as already mentioned. Step loops are repeated blocks of field in a screen. Each block contains one or more fields and these blocks are repeated. Step loops arent like actual table. You can scroll vertically but not horizontally. Three steps are associated with creation of step loops:
Creation of step loops on screen, which includes declaring fields on the screen and then defining the step, loops for these fields.
Passing data to the step loop is exactly similar to the passing of data to table controls.
In step loop, you dont need to define the step loop as such in the module pool program but the cursor needs to be defined in the program.
Types of Step Loops
Static Static Step Loop (SSL) have fixed size that cannot be changed during the runtime. If user resizes the window, the size of the static step loop is not changed.
Dynamic Dynamic Step Loop (DSL) is variable in size. When the user resizes the window, the system increases or decreases the number of the step loop blocks.
You can have only one dynamic step loop and can have as many static loops in your transaction.
Programming with the Static and dynamic step loop is exactly same. For the system or for the user it doesnt make any difference whether it is static or dynamic step loop. Only attribute, which you fix during designing of the step loop, is type attribute for step loop F for fixed i.e static and V for variable i.e. dynamic.
Writing code for Step Loop in the flow logic.
PBO.
Loop at itab cursor cl.
Module set.
Endloop.
PAI.
Loop at itab.
Endloop.
Empty loop is must for both table control and step loop
LOOP AT statement for step loops and Table controls is similar. Loop At statement transfers the data to screen table. You need to have the Module to assign the values for the screen table.
In module pool program you need to define the cursor.
Date: CL TYPE i.
Cursor parameter tells which line of step loop display should start.
Module Set in module pool program assigns the values to step loop fields, which is similar to table controls.
Branching to List Processing
Switching To List Mode
You can display a list within a transaction.
You can produce a list from module pool program by using the command
Leave to List-Processing.
This statement switches the system from dialog mode to list mode. And from this point onwards until you return to dialog mode, you can use all the normal report statement like write, select or any other event.
Returning back from LIST mode
You can return back to dialog mode by clicking the BACK button.
You can have your GUI status and write code for the same. You can include the command LEAVE LIST-PROCESSING. When the system reaches this command, it leaves the list mode and returns to the dialog mode.
Help & Value Request
In any transaction, When the user presses F1 or ? on a field, System provides the help facility for that particular field. In dialog program, when F1 is pressed, help provided by R3 system is sourced from data element documentation. If this documentation is not present for that particular field or if user needs to display additional information for that particular field, then user defined help can be provided through PROCESS ON HELP REQUEST.
In ABVP/4 help can be provided to the user by:
Data element documentation: The F1 help can be enhanced, by adding an additional text for the data element in ABAP/4 dictionary.
It can be done with the help of following steps:
Place cursor on the screen field,
GOTO  DOCUMENTATION  DATA ELEMENT DOCUMENT
You can now extend the existing help.
USING THE PROCESS ON HELP-REQUEST.
If you dont have this event in a program, then the documentation of the field in the ABAP/4 dictionary is taken into consideration. If this event exits in the program then it is executed.
Process on HELP-REQUEST event
This event is triggered when user presses F1 on a screen field. You need to handle this event in flow-logic by specifying the fields and attaching the module to it.
Syntax
PROCESS ON HELP REQUEST.
FIELD SFLIGHT-CARRID MODULE HELP-FOR-CARRID.
In module pool program
MODULE HELP.
Write : `This is field is from sflight table
Write : / It is of four Character.
ENDMODULE.
When the user presses F1 on this particular field, then this message will be displayed on the screen.
Value Request
Whenever the user presses F4 on the screen field list of possible values, particular fields are displayed. If the standard value-help is inadequate or if you want to display additional fields or with different combination of fields, developer can program this in PROCESS ON VALUE-REQUEST event in the flow-logic and subsequent module in the module pool program. When the user presses F4, list of possible values are displayed either from matchcode objects or check table or help view or domain. Each one of them is explained briefly.
Matchcode objects: Are aggregated dictionary objects and detailed procedure to create these objects is explained in the later part of the material.
Check Table: If a check table is assigned to the table field and if the user presses F4 for that particular field, then all the key fields are displayed.
Domain Values: The values defined in the domain are displayed. These values are set in domain when the domain is created in the dictionary.
Help views: In cases where the check table is not sufficient, you can create a help view with this check table, which gives additional information like explanatory text for the fields of the check table.
PROCESS ON VALUE_REQUEST.
Each time the user presses F4 on the screen field, following algorithm is called internally.
When the user presses F4 on flight number, the following screen is displayed.
The screen displayed is pop-up screen and code for the flow logic and module is written below:
Flow-logic code -
hi
IF the package used for the enhancement is different from the package for the
main prg then whether it will have any effect on the triggering of the enhacement
at runtime.
(Means the enhancement triggers or not)
thx for any replies,
kiranHI ALL,
i am having an enhacement COPA0005
i have to trigger this from either KE21N or FB01
In this case My enhancement is active and the project is also active but
the enhancement is not triggering. I set a break point to the function exit name
and also again other name to the very first step inside the include prg name
but my enhancement is not at all triggering. Y i dont know.
Can you please explain where i went wrong in this situation.
=========================
2)
In my case
a) COPAZ0005 Enhancement is in the package 'KE'.
b) the include prg ZXKKEU08 is in the exit "EXIT_SAPLKEII_002" which isin the enhacement is in the package "Z_EF_ABAP". -
Call Include program in a report class prg
Hi Oo gurus..
Hi want to call include program in my report class program
how can i do that ?
I also used include in a report program and its work fine, but when i tried to use in a class then its not work
please post solution and example,
Advance Thanks..
NirajOk i solve it....
Thanks -
Modification in MB5B prg...material stock between a date range
Hi experts
I have to modify mb5b tranx prg . presently we are using date as selection criteria..but now onwards user wants G/L account along with date as selection criteria. I created one selec-option for field HKONT type hkont-bseg. Now in select queries i need ur help ..Kindly tell me where i need to use this field in my select queries to fetch RELEVANT data.
Regards
Anu
CODE:
REPORT ZRM07MLBD NO STANDARD PAGE HEADING MESSAGE-ID M7 LINE-SIZE 280.
********my change*******
tables : BSEG.
TYPE-POOLS: IMREP, " Typen Bestandsführungsreporting
SLIS. " Typen Listviewer
INCLUDE ZRM07MLDD.
DATA FLAG(1) TYPE C VALUE ' '.
DATA BAL_QTY TYPE P DECIMALS 2.
DATA BAL_AMT TYPE P DECIMALS 2.
*include: rm07mldd. " reportspezifische Datendefinitionen
"n571473
define the selection screen here "n571473
"n571473
SELECTION-SCREEN BEGIN OF BLOCK DATABASE-SELECTION
WITH FRAME TITLE TEXT-001.
Text-001: Datenbankabgrenzungen
SELECT-OPTIONS: MATNR FOR MARD-MATNR MEMORY ID MAT
MATCHCODE OBJECT MAT1,
BUKRS FOR T001-BUKRS MEMORY ID BUK,
WERKS FOR T001W-WERKS MEMORY ID WRK,
LGORT FOR T001L-LGORT,
CHARG FOR MCHB-CHARG,
BWTAR FOR MBEW-BWTAR,
BWART FOR MSEG-BWART.
PARAMETERS SOBKZ LIKE MSEG-SOBKZ.
SELECTION-SCREEN SKIP.
SELECT-OPTIONS: DATUM FOR MKPF-BUDAT NO-EXTENSION,
**********my change**************
HKONT FOR BSEG-HKONT.
********END CHANGE************
SELECTION-SCREEN END OF BLOCK DATABASE-SELECTION.
SELECTION-SCREEN BEGIN OF BLOCK BESTANDSART
WITH FRAME TITLE TEXT-002.
Text-002: Bestandsart
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS LGBST LIKE AM07M-LGBST RADIOBUTTON GROUP BART DEFAULT 'X'.
SELECTION-SCREEN COMMENT 4(50) TEXT-010 FOR FIELD LGBST.
Text-010: Lagerort-/Chargenbestand
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS BWBST LIKE AM07M-BWBST RADIOBUTTON GROUP BART.
SELECTION-SCREEN COMMENT 4(50) TEXT-011 FOR FIELD BWBST.
Text-011: bewerteter Bestand
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
PARAMETERS SBBST LIKE AM07M-SBBST RADIOBUTTON GROUP BART.
SELECTION-SCREEN COMMENT 4(50) TEXT-012 FOR FIELD SBBST.
Text-012: Sonderbestand
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN END OF BLOCK BESTANDSART.
Commented By Rachit Material group Not Required
improved definition of parameters for scope of list "n599218
*SELECTION-SCREEN BEGIN OF BLOCK MARA WITH FRAME TITLE TEXT-040.
**selection-screen begin of line.
*PARAMETERS P_MATKL LIKE MARA-MATKL.
**selection-screen end of line.
**SELECTION-SCREEN COMMENT 4(50) TEXT-030 for fieLD s_matkl.
*SELECTION-SCREEN END OF BLOCK MARA.
SELECTION-SCREEN BEGIN OF BLOCK LISTUMFANG
WITH FRAME TITLE TEXT-003. "Listumfang
the following 3 parameters became obsolete do not use "n599218
anymor. They are still here to inform the user about "n599218
that he is using old variants or SUBMIT commands "n599218
PARAMETERS : "n599218
XONUL LIKE AM07M-XONUL NO-DISPLAY, "n599218
XVBST LIKE AM07M-XVBST NO-DISPLAY, "n599218
XNVBST LIKE AM07M-XNVBS NO-DISPLAY. "n599218
7 new categories for the scope of list "n599218
"n599218
cat. I docs I stock on I I stock on I Parameter "n599218
I I start date I I end date I "n599218
---+--+--------++------+-------- "n599218
1 I yes I = zero I = I = zero I pa_wdzer "n599218
2 I yes I = zero I <> I <> zero I pa_wdzew "n599218
3 I yes I <> zero I <> I = zero I pa_wdwiz "n599218
4 I yes I <> zero I <> I <> zero I pa_wdwuw "n599218
5 I yes I <> zero I = I <> zero I pa_wdwew "n599218
I I I I I "n599218
6 I no I = zero I = I = zero I pa_ndzer "n599218
7 I no I <> zero I = I <> zero I pa_ndsto "n599218
"n599218
definition of the pushbutton : show or hide the following "n599218
parameters for the scope of list "n599218
SELECTION-SCREEN PUSHBUTTON /1(20) PB_LIU "n599218
USER-COMMAND LIU. "n599218
"n599218
text line : materials with movements "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN COMMENT 1(55) TEXT-072 "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / start = zero = end = zero "n599218
1 I yes I = zero I = I = zero I pa_wdzer "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : PA_WDZER LIKE AM07M-MB5B_XONUL "n599218
MODIF ID LIU. "n599218
text-083 : no opening stock ; no closing stock "n599218
SELECTION-SCREEN COMMENT 5(70) TEXT-083 "n599218
FOR FIELD PA_WDZER "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / start = zero = end <> zero "n599218
2 I yes I = zero I <> I <> zero I pa_wdzew "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : PA_WDZEW LIKE AM07M-MB5B_XONUL "n599218
MODIF ID LIU. "n599218
text-084 : no opening stock ; with closing stock "n599218
SELECTION-SCREEN COMMENT 5(70) TEXT-084 "n599218
FOR FIELD PA_WDZEW "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / start stock <> 0 / end stock = 0 "n599218
3 I yes I <> zero I <> I = zero I pa_wdwiz "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : PA_WDWIZ LIKE AM07M-MB5B_XONUL "n599218
MODIF ID LIU. "n599218
text-085 : with opening stock ; no closing stock "n599218
SELECTION-SCREEN COMMENT 5(70) TEXT-085 "n599218
FOR FIELD PA_WDWIZ "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / with start and end stocks / different "n599218
4 I yes I <> zero I <> I <> zero I pa_wdwuw "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : PA_WDWUW LIKE AM07M-MB5B_XONUL "n599218
MODIF ID LIU. "n599218
with opening stock ; with closing stock ; changed "n599218
SELECTION-SCREEN COMMENT 5(70) TEXT-086 "n599218
FOR FIELD PA_WDWUW "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
with movements / with start and end stock / equal "n599218
5 I yes I <> zero I = I <> zero I pa_wdwew "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : PA_WDWEW LIKE AM07M-MB5B_XONUL "n599218
MODIF ID LIU. "n599218
with opening stock ; with closing stock ; non-changed "n599218
SELECTION-SCREEN COMMENT 5(70) TEXT-087 "n599218
FOR FIELD PA_WDWEW "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
text line : materials without movements "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN COMMENT 1(55) TEXT-073 "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
materials without movements / stocks = zero "n599218
6 I no I = zero I = I = zero I pa_ndzer "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : PA_NDZER LIKE AM07M-MB5B_XONUL "n599218
MODIF ID LIU. "n599218
text-083 : no opening stock ; no closing stock "n599218
SELECTION-SCREEN COMMENT 5(70) TEXT-083 "n599218
FOR FIELD PA_NDZER "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
materials without movements / with start or end stock "n599218
7 I no I <> zero I = I <> zero I pa_ndsto "n599218
SELECTION-SCREEN BEGIN OF LINE. "n599218
SELECTION-SCREEN POSITION 2. "n599218
PARAMETERS : PA_NDSTO LIKE AM07M-MB5B_XONUL "n599218
MODIF ID LIU. "n599218
with opening stock ; with closing stock ; non-changed "n599218
SELECTION-SCREEN COMMENT 5(70) TEXT-087 "n599218
FOR FIELD PA_NDSTO "n599218
MODIF ID LIU. "n599218
SELECTION-SCREEN END OF LINE. "n599218
"n599218
SELECTION-SCREEN END OF BLOCK LISTUMFANG.
SELECTION-SCREEN BEGIN OF BLOCK EINSTELLUNGEN
WITH FRAME TITLE TEXT-068. "Settings
parameter for totals only - hierseq. list
corresponding display variant
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS XSUM LIKE AM07M-XSUM.
SELECTION-SCREEN COMMENT 4(60) TEXT-090 FOR FIELD XSUM.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(30) TEXT-091 FOR FIELD PA_SUVAR.
*Commented by Rachit
SELECTION-SCREEN POSITION 40.
PARAMETERS: PA_SUVAR LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF LINE.
parameter for totals only - flat list + corresponding display variant
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS PA_SUMFL LIKE AM07M-XSUM.
SELECTION-SCREEN COMMENT 4(60) TEXT-092 FOR FIELD PA_SUMFL.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN COMMENT 5(30) TEXT-091 FOR FIELD PA_SFLVA.
SELECTION-SCREEN POSITION 40.
PARAMETERS: PA_SFLVA LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF LINE.
SELECTION-SCREEN BEGIN OF LINE.
SELECTION-SCREEN POSITION 1.
PARAMETERS XCHAR LIKE AM07M-XCHRG.
SELECTION-SCREEN COMMENT 4(50) TEXT-015 FOR FIELD XCHAR.
Text-015: nur chargenpflichtige Materialien
Das Kennzeichen 'xchar' bestimmt die Art der Listausgabe entweder
auf Material- oder Chargenebene.
SELECTION-SCREEN END OF LINE.
the function "No reversal movements" is only "n571473
available from relaese 4.5B and higher "n571473
( TEXT-026 : No reversal movements ) "n571473
SELECTION-SCREEN BEGIN OF LINE. "n571473
SELECTION-SCREEN POSITION 1. "n571473
PARAMETERS NOSTO LIKE AM07M-NOSTO. "n571473
SELECTION-SCREEN COMMENT 4(50) TEXT-026 "n571473
FOR FIELD NOSTO. "n571473
SELECTION-SCREEN END OF LINE. "n571473
SELECTION-SCREEN END OF BLOCK EINSTELLUNGEN.
*Rachit
SELECTION-SCREEN BEGIN OF BLOCK LISTE WITH FRAME TITLE TEXT-040.
PARAMETERS: P_VARI LIKE DISVARIANT-VARIANT.
SELECTION-SCREEN END OF BLOCK LISTE.
HAUPTPROGRAMM *********************************
F4-Hilfe für Reportvariante -
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
PERFORM F4_FOR_VARIANT.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_SFLVA.
PERFORM VARIANT_VALUE_REQUEST_F4
USING PA_SFLVA G_S_VARI_SUMFL.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR PA_SUVAR.
PERFORM VARIANT_VALUE_REQUEST_F4
USING PA_SUVAR G_S_VARI_SUMHQ.
"n599218
INITIALIZATION "n599218
"n599218
"n599218
INITIALIZATION.
CLEAR : G_S_VARI_SUMHQ, G_S_VARI_SUMFL.
REPID = SY-REPID.
VARIANT_SAVE = 'A'.
preprae the working areas for the variants
MOVE : REPID TO G_S_VARI_SUMHQ-REPORT,
'SUHQ' TO G_S_VARI_SUMHQ-HANDLE,
REPID TO G_S_VARI_SUMFL-REPORT,
'SUFL' TO G_S_VARI_SUMFL-HANDLE.
MOVE-CORRESPONDING : G_S_VARI_SUMHQ TO G_S_VARI_SUMHQ_DEF,
G_S_VARI_SUMFL TO G_S_VARI_SUMFL_DEF.
PERFORM GET_THE_DEFAULT_VARIANT
USING PA_SFLVA
G_S_VARI_SUMFL
G_S_VARI_SUMFL_DEF.
PERFORM GET_THE_DEFAULT_VARIANT
USING PA_SUVAR
G_S_VARI_SUMHQ
G_S_VARI_SUMHQ_DEF.
PERFORM INITIALISIERUNG.
get the parameters from the last run "n547170
PERFORM ESDUS_GET_PARAMETERS. "n547170
set flag when INITILIZATION is processed
MOVE 'X' TO G_FLAG_INITIALIZATION.
"n599218
AT SELECTION-SCREEN "n599218
"n599218
Prüfung der eingegebenen Selektionsparameter, -
Berechtigungsprüfung -
AT SELECTION-SCREEN.
the following 3 parameters XONUL, XVBST, and XNVBST "n599218
became obsolete; send error when they should be filled. "n599218
This could be possible if the user works with old "n599218
selection variants or this report is launched by a "n599218
SUBMIT command "n599218
IF XONUL IS INITIAL AND "n599218
XVBST IS INITIAL AND "n599218
XNVBST IS INITIAL. "n599218
ok, the old parameters are empty "n599218
ELSE. "n599218
text-088 : note 599218 : obsolete parameter used "n599218
MESSAGE E895 WITH TEXT-088. "n599218
ENDIF.
did the user hit the pushbutton "Category" ? "n599218
CASE SSCRFIELDS-UCOMM. "n599218
WHEN 'LIU '. "n599218
yes, the pushbutton "Category" was hit "n599218
IF G_FLAG_STATUS_LIU = C_HIDE. "n599218
show the 7 parameters on the selection srceen "n599218
MOVE C_SHOW TO G_FLAG_STATUS_LIU. "n599218
ELSE. "n599218
hide the 7 paramaters "n599218
MOVE C_HIDE TO G_FLAG_STATUS_LIU. "n599218
ENDIF. "n599218
ENDCASE. "n599218
"n599218
go on only if the user wants to launch this report "n599218
CHECK : SY-UCOMM = 'ONLI' OR "n599218
SY-UCOMM = 'PRIN' OR "n599218
SY-UCOMM = 'SJOB'. "n599218
only one sum function can be processed
IF XSUM = 'X' AND
PA_SUMFL = 'X'.
SET CURSOR FIELD 'XSUM'.
select one sum list only
MESSAGE E895 WITH TEXT-093.
ENDIF.
PERFORM EINGABEN_PRUEFEN.
SET CURSOR FIELD 'PA_SFLVA'.
PERFORM VARIANT_CHECK_EXISTENCE
USING PA_SFLVA
G_S_VARI_SUMFL
G_S_VARI_SUMFL_DEF.
SET CURSOR FIELD 'PA_SUVAR'.
PERFORM VARIANT_CHECK_EXISTENCE
USING PA_SUVAR
G_S_VARI_SUMHQ
G_S_VARI_SUMHQ_DEF.
check whether FI summarization is active and other "n547170
restrictions could deliver wrong results "n547170
PERFORM F0800_CHECK_RESTRICTIONS. "n547170
- the user wants to surpress the reversal movements : "n497992
process warning M7 392 "n497992
IF NOT NOSTO IS INITIAL. "n497992
emerge warning ? "n497992
CALL FUNCTION 'ME_CHECK_T160M' "n497992
EXPORTING "n497992
I_ARBGB = 'M7' "n497992
I_MSGNR = '392' "n497992
EXCEPTIONS "n497992
NOTHING = 0 "n497992
OTHERS = 1. "n497992
"n497992
IF SY-SUBRC <> 0. "n497992
SET CURSOR FIELD 'NOSTO'. "n497992
to surpress the reversal movements could cause ... "n497992
MESSAGE W392. "n497992
ENDIF. "n497992
ENDIF. "n497992
carry out special authotity check for the tax auditor "n547170
PERFORM TPC_CHECK_TAX_AUDITOR. "n547170
does the user wants a selection via company code or a plant ?
fill range table g_ra_werks
REFRESH : G_RA_BWKEY, G_RA_WERKS, G_T_ORGAN.
CLEAR : G_RA_BWKEY, G_RA_WERKS, G_T_ORGAN, G_S_ORGAN.
REFRESH : G_0000_RA_BWKEY, G_0000_RA_WERKS, G_0000_RA_BUKRS.
CLEAR : G_0000_RA_BWKEY, G_0000_RA_WERKS, G_0000_RA_BUKRS.
DESCRIBE TABLE BUKRS LINES G_F_CNT_LINES_BUKRS.
DESCRIBE TABLE WERKS LINES G_F_CNT_LINES_WERKS.
IF G_F_CNT_LINES_BUKRS > 0 OR
G_F_CNT_LINES_WERKS > 0.
fill range tables for the CREATION OF TABLE G_T_ORGAN
MOVE : WERKS[] TO G_0000_RA_WERKS[],
BUKRS[] TO G_0000_RA_BUKRS[].
PERFORM F0000_CREATE_TABLE_G_T_ORGAN
USING C_ERROR.
ENDIF.
save the parameters of this run "n547170
PERFORM ESDUS_SAVE_PARAMETERS. "n547170
"n599218
AT SELECTION-SCREEN OUTPUT "n599218
"n599218
"n599218
AT SELECTION-SCREEN OUTPUT. "n599218
"n599218
IF G_FLAG_INITIALIZATION IS INITIAL. "n599218
the process time INITIALIZATION was not done, so "n599218
carry out the functions here "n599218
MOVE 'X' TO G_FLAG_INITIALIZATION. "n599218
"n599218
PERFORM INITIALISIERUNG. "n599218
"n599218
get the parameters from the last run "n599218
PERFORM ESDUS_GET_PARAMETERS. "n599218
ENDIF. "n599218
"n599218
how to handle the 7 paramaters for the scope of list ? "n599218
LOOP AT SCREEN. "n599218
modify the selection screen "n599218
CASE SCREEN-GROUP1. "n599218
WHEN 'LIU'. "n599218
IF G_FLAG_STATUS_LIU = C_SHOW. "n599218
SCREEN-ACTIVE = '1'. "show parameters "n599218
ELSE. "n599218
SCREEN-ACTIVE = '0'. "Hide parameters "n599218
ENDIF. "n599218
"n599218
MODIFY SCREEN. "n599218
ENDCASE. "n599218
ENDLOOP. "n599218
"n599218
adapt the icon on the pushbutton depending on the status "n599218
CASE G_FLAG_STATUS_LIU. "n599218
WHEN C_HIDE. "n599218
MOVE TEXT-081 TO PB_LIU. "@0EQ@ Scope ... "n599218
WHEN C_SHOW. "n599218
MOVE TEXT-082 TO PB_LIU. "@0HQ@ Scope ... "n599218
WHEN OTHERS. "n599218
ENDCASE. "n599218
"n599218
"n599218
START-OF-SELECTION
START-OF-SELECTION.
*SET PF-STATUS 'TEST'.
create the title line
If no date is given at all, the range is set to the maximum
extend (1.1.0000 - 31.12.9999).
If only datum-low is set, it is interpreted as the day for
which the analysis is wanted --> datum-high is filled up.
IF DATUM-LOW IS INITIAL.
DATUM-LOW = '00000101'.
IF DATUM-HIGH IS INITIAL.
DATUM-HIGH = '99991231'.
ENDIF.
ELSE.
IF DATUM-HIGH IS INITIAL.
DATUM-HIGH = DATUM-LOW.
ENDIF.
ENDIF.
MOVE: DATUM-LOW(4) TO JAHRLOW,
DATUM-LOW+4(2) TO MONATLOW,
DATUM-LOW+6(2) TO TAGLOW,
DATUM-HIGH(4) TO JAHRHIGH,
DATUM-HIGH+4(2) TO MONATHIGH,
DATUM-HIGH+6(2) TO TAGHIGH.
SET TITLEBAR 'MAN'
WITH TAGLOW MONATLOW JAHRLOW TAGHIGH MONATHIGH JAHRHIGH.
create the headlines using the titelbar "n599218
PERFORM CREATE_HEADLINE. "n599218
calculate the offsets for the list header
PERFORM CALCULATE_OFFSETS.
for the representation of tied empties "n547170
PERFORM F0700_PREPARE_TIED_EMPTIES. "n547170
create table g_t_mseg_fields with the names of all
wanted fields from MSEG and MKPF
PERFORM F0300_GET_FIELDS.
set a break-point : is IS-OIL active ? "n599218 A
"n599218 A
check whether this is a IS-OIL system "n599218 A
PERFORM CHECK_IS_OIL_SYSTEM. "n599218 A
"n599218 A
IF G_FLAG_IS_OIL_ACTIVE = 'X'. "IS-OIL ? "n599218 A
the 2 IS-OIL specific data fields will be inserted into "n599218 A
working table G_T_MSEG_FIELDS. Then these fields will "n599218 A
transported from database table MSEG, too "n599218 A
APPEND 'MSEG~OIGLCALC' TO G_T_MSEG_FIELDS. "n599218 A
APPEND 'MSEG~OIGLSKU' TO G_T_MSEG_FIELDS. "n599218 A
ENDIF. "n599218 A
create the ALV fieldcatalog for the main list always
MOVE 'G_T_BELEGE' TO G_F_TABNAME.
PERFORM F0400_CREATE_FIELDCAT.
do not print the ALV-statistics and selection criteria
CLEAR G_S_PRINT.
G_S_PRINT-NO_PRINT_SELINFOS = 'X'.
G_S_PRINT-NO_PRINT_LISTINFOS = 'X'."
create the range table for the storage location
PERFORM F0600_CREATE_RANGE_LGORT.
- show the current activity and the progress "n599218
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' "n599218
EXPORTING "n599218
TEXT = TEXT-063. "Reading current stocks "n599218
get the stock tables
PERFORM AKTUELLE_BESTAENDE.
PERFORM TABELLEN_LESEN.
- show the current activity and the progress "n599218
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' "n599218
EXPORTING "n599218
TEXT = TEXT-064. "Reading MM documents "n599218
PERFORM F1000_SELECT_MSEG_MKPF.
PERFORM BELEGSELEKTION.
END-OF-SELECTION
END-OF-SELECTION.
results of all the autority checks
PERFORM F9100_AUTH_PLANT_RESULT.
- show the current activity and the progress "n599218
IF BWBST = 'X'. "n599218
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' "n599218
EXPORTING "n599218
TEXT = TEXT-066. "Calculating Stocks and Values "n599218
ELSE. "n599218
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' "n599218
EXPORTING "n599218
TEXT = TEXT-067. "Calculating Stocks "n599218
ENDIF. "n599218
PERFORM SUMMEN_BILDEN.
PERFORM BESTAENDE_BERECHNEN.
PERFORM LISTUMFANG.
- show the current activity and the progress "n599218
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR' "n599218
EXPORTING "n599218
TEXT = TEXT-065. "Preparing list output "n599218
stop if table bestand is empty
LOOP AT BESTAND.
SELECT SINGLE MATKL FROM MARA INTO CORRESPONDING FIELDS OF BESTAND
WHERE
MATNR = BESTAND-MATNR.
MODIFY BESTAND INDEX SY-TABIX.
ENDLOOP.
DESCRIBE TABLE BESTAND LINES G_F_CNT_LINES.
IF G_F_CNT_LINES IS INITIAL.
Keinen Eintrag zu den Suchbegriffen gefunden/selektiert
MESSAGE S083.
perform anforderungsbild.
ELSE.
process log function if the use is a tax auditor "n555246
and the database selection was successful "n555246
IF G_FLAG_TPCUSER = '1'. "n555246
PERFORM TPC_WRITE_LOG. "n555246
ENDIF. "n555246
PERFORM FELDGRUPPEN_AUFBAUEN.
sort table with header data per material
IF BWBST IS INITIAL.
SORT BESTAND BY MATNR WERKS CHARG.
ELSE.
SORT BESTAND BY MATNR BWKEY.
ENDIF.
which function does the user want ?
IF XSUM = 'X'.
hierseq. alv with sums
PERFORM CREATE_TABLE_TOTALS_HQ.
PERFORM CREATE_FIELDCAT_TOTALS_HQ.
PERFORM ALV_HIERSEQ_LIST_TOTALS.
ENDIF.
IF FLAG NE 'X'.
IF PA_SUMFL = 'X'.
elseif pa_sumfl = 'X'.
show the sums only in a flat ALV
PERFORM CREATE_TABLE_TOTALS_FLAT.
PERFORM CREATE_FIELDCAT_TOTALS_FLAT.
PERFORM ALV_FLAT_LIST_SUMS_ONLY.
ELSE.
display the full list using the APPEND ALV
PERFORM BESTAENDE_AUSGEBEN.
ENDIF.
ENDIF.
FLAG = ' '.
ENDIF.
CLEAR: G_T_MSEG_LEAN, G_T_BSIM_LEAN, BESTAND. "n443935
*& PF_STATUS_SET_TOTALS
FORM PF_STATUS_SET_TOTALS "#EC CALLED
USING EXTAB TYPE SLIS_T_EXTAB.
SET PF-STATUS 'STANDARD' EXCLUDING EXTAB.
ENDFORM. "PF_STATUS_SET_TOTALS
user_parameters_save
FORM USER_PARAMETERS_SAVE.
GET PARAMETER ID 'BUK' FIELD G_SAVE_PARAMS-BUKRS.
GET PARAMETER ID 'WRK' FIELD G_SAVE_PARAMS-WERKS.
GET PARAMETER ID 'MAT' FIELD G_SAVE_PARAMS-MATNR.
GET PARAMETER ID 'CHA' FIELD G_SAVE_PARAMS-CHARG.
GET PARAMETER ID 'BLN' FIELD G_SAVE_PARAMS-BELNR.
GET PARAMETER ID 'BUK' FIELD G_SAVE_PARAMS-BUKRS.
GET PARAMETER ID 'GJR' FIELD G_SAVE_PARAMS-GJAHR.
ENDFORM. "user_parameters_save
user_parameters_restore
FORM USER_PARAMETERS_RESTORE.
SET PARAMETER ID 'BUK' FIELD G_SAVE_PARAMS-BUKRS.
SET PARAMETER ID 'WRK' FIELD G_SAVE_PARAMS-WERKS.
SET PARAMETER ID 'MAT' FIELD G_SAVE_PARAMS-MATNR.
SET PARAMETER ID 'CHA' FIELD G_SAVE_PARAMS-CHARG.
GET PARAMETER ID 'BLN' FIELD G_SAVE_PARAMS-BELNR.
GET PARAMETER ID 'BUK' FIELD G_SAVE_PARAMS-BUKRS.
GET PARAMETER ID 'GJR' FIELD G_SAVE_PARAMS-GJAHR.
ENDFORM. "user_parameters_restore
*& USER_COMMAND_TOTALS
FORM USER_COMMAND_TOTALS "#EC CALLED
USING R_UCOMM LIKE SY-UCOMM
RS_SELFIELD TYPE SLIS_SELFIELD.
CLEAR G_S_BESTAND_KEY.
CASE R_UCOMM.
WHEN '&GRPT'.
SORT BESTAND BY BWKEY MATKL.
FLAG = 'X'.
PERFORM GRP_TOTAL(ZGRP_TOTAL) TABLES BESTAND.
IF FLAG = 'X'.
EXIT.
ENDIF.
WHEN '&STR'.
IF BWBST = 'X'.
IF FLAG = 'X'.
clear: LGBST,BWBST ,SBBST.
PERFORM GRP_TOTAL(ZGRP_TOTAL1) TABLES BESTAND.
SUBMIT ZRM07MLBD2 WITH LGBST = 'X'
WITH WERKS = '1000'
WITH BUKRS = '1001'
WITH XSUM = 'X'
WITH PA_WDZER = PA_WDZER
WITH PA_WDZEW = PA_WDZEW
WITH PA_WDWIZ = PA_WDWIZ
WITH PA_WDWUW = PA_WDWUW
WITH PA_WDWEW = PA_WDWEW
WITH PA_NDZER = PA_NDZER
WITH PA_NDSTO = PA_NDSTO
WITH LGORT IN LGORT
WITH DATUM IN DATUM
WITH MATNR IN MATNR VIA SELECTION-SCREEN
AND RETURN.
CLEAR: LGBST.
ELSE.
MESSAGE E345(0) WITH 'First see the grp total'.
ENDIF.
ELSE.
MESSAGE E345(0) WITH 'Stock type chosen was not valuated'.
ENDIF.
Quarter Ending----
WHEN '&QTRE'.
TYPES: BEGIN OF TY_MTART,
MATNR LIKE MARA-MATNR,
MTART LIKE MARA-MTART,
END OF TY_MTART.
DATA: L_REC_QTY TYPE P DECIMALS 3,
L_ISS_QTY TYPE P DECIMALS 3,
L_REC_AMT TYPE P DECIMALS 3,
L_ISS_AMT TYPE P DECIMALS 3,
L_OTHERS_QTY TYPE P DECIMALS 3,
L_SALE_QTY TYPE P DECIMALS 3,
L_SALE_AMT TYPE P DECIMALS 3,
L_OTHERS_AMT TYPE P DECIMALS 3.
DATA: IT_MAKT TYPE STANDARD TABLE OF MAKT WITH HEADER LINE,
IT_T023T TYPE STANDARD TABLE OF T023T WITH HEADER LINE,
IT_T134 TYPE STANDARD TABLE OF T134T WITH HEADER LINE.
DATA: IT_MTART TYPE STANDARD TABLE OF TY_MTART WITH HEADER LINE.Dear Experts,
Thanks all for the reply.
I have followed the OSS notes 194788
Only enter the selection criteria which are required for the selection of the stock management unit for which the opening stock balance and closing stock should be determined.
In MB5B I key in selection criteria which are :
material number : xxxxxx
company code : 1000
plant : 1500
batch : xxxxxx
special stock indicator : orders on hand
selection date : 01.08.2009 to current date
stock type :special stock
and the result comes out :
there is initial balance of 3000 kg on 01.08.2009 - INCORRECT ( our team never enter this initial balance but still came out )
therefore the stock of current date also WRONG
if the total stock is adjusted using stock take , the accounting journal will be created, and reduce the financial asset with the same amount of 3000 kg (WRONG EFFECT)
how to solve this issue without affecting the accounting journal ?
Thanks
Pauline -
New include proram -user exit- sales order
hi
i have to create a new screen which has to be displayed as a pop up
from the user exit "<u>userexit_save_document_prepare"</u> which is present in MV45AFZZ
the processing logic for the screen should be written in include program which is to be included in the specified userexit.
the include program which i created while syntax checking shows
"include <u>prg-name</u> is not accesible".
why this is occuring.
Another question is whether can i write the modules for pbo,pai and the subroutines i.e form & end-form all in the include program which iam creating.
It is showing incorrect nesting. write end-form for the form before moduele.
whether i have to write PBO,PAI,subroutines in independent include programs.
Please give reply ASAP.in that case then
call like this
perform check (in program).
<b>what i am thinking is THIS program in Update Mode may be bcos of that.</b>
Regards
prabhu
Message was edited by:
Prabhu Peram -
Calling second transaction from a bdc prg
Hi experts
I am using a prog for ISU-Transaction EG33 now my requirement is I have to call another transaction IL02 within this transaction my requirement is just to tick a check box.
Another thing here after executing my current prg ( eg33) function location is created after completion of transction ....the same function location need to be used in my second transaction for which whom i am gonna tick tat check box.(single installation)
thanks in advance
any ideas ???hi,
u can have a look at this code
*& Report ZFIC_BDC_F_43_02_ADJ
REPORT zfic_bdc_f_43_02_adj MESSAGE-ID zfi NO STANDARD PAGE HEADING .
DATA : t_excel LIKE alsmex_tabline OCCURS 0 WITH HEADER LINE,
v_mvar1 LIKE balm-msgv1,
v_mtext(100) TYPE c,
v_tabix(4) TYPE c ,
t_bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
----declaration of internal table for uploading the excel file -
DATA: BEGIN OF itab OCCURS 0 ,
bukrs LIKE bkpf-bukrs,
blart LIKE bkpf-blart,
bldat(10) TYPE c ,
budat(10) TYPE c ,
monat LIKE bkpf-monat,
waers LIKE bkpf-waers,
docid LIKE fs006-docid,
newbs LIKE rf05a-newbs,
newko LIKE rf05a-newko,
mwskz LIKE bseg-mwskz,
wrbtr LIKE bseg-wrbtr,
zuonr LIKE bseg-zuonr,
sgtxt LIKE bseg-sgtxt,
zfbdt(10) TYPE c ,
prctr LIKE cobl-prctr,
bukrs1 TYPE bkpf-bukrs,
blart1 TYPE bkpf-blart,
bldat1(10) TYPE c ,
budat1(10) TYPE c ,
monat1 TYPE bkpf-monat,
waers1 TYPE bkpf-waers,
newbs1 LIKE rf05a-newbs,
newko1 LIKE rf05a-newko,
newum LIKE rf05a-newum,
wrbtr1(16) TYPE c,
zuonr1 LIKE bseg-zuonr,
sgtxt1 LIKE bseg-sgtxt,
zfbdt1(10) TYPE c ,
bupla1 LIKE bseg-bupla,
secco1 LIKE bseg-secco,
prctr1 LIKE bseg-prctr,
docid1 LIKE fs006-docid,
wrbtr(16) TYPE c ,
newbs2 LIKE rf05a-newbs ,
newbs3 LIKE rf05a-newbs ,
END OF itab.
DATA: BEGIN OF messtab OCCURS 0 .
INCLUDE STRUCTURE bdcmsgcoll.
DATA: row TYPE i,
key(30),
END OF messtab.
DATA: BEGIN OF messtab2 OCCURS 0,
mtype LIKE bdcmsgcoll-msgtyp,
mtext(100) TYPE c,
row TYPE i,
key(30) TYPE c,
END OF messtab2.
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME TITLE text-001.
PARAMETER : p_pfile(128) TYPE c OBLIGATORY,
p_pbrow TYPE i OBLIGATORY,
p_perow TYPE i OBLIGATORY,
p_pdis LIKE ctu_params-dismode OBLIGATORY DEFAULT
'A'.
SELECTION-SCREEN END OF BLOCK b1.
AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_pfile .
CALL FUNCTION 'F4_FILENAME'
EXPORTING
program_name = syst-cprog
dynpro_number = syst-dynnr
FIELD_NAME = ' '
IMPORTING
file_name = p_pfile .
START-OF-SELECTION .
----uploading the excel file to internal table -
PERFORM upload_file .
-----filling the bdc table -
PERFORM fill_bdctable .
------writing the error log -
PERFORM write_messtab .
*& Form UPLOAD_FILE
text
--> p1 text
<-- p2 text
FORM upload_file .
CLEAR : t_excel .
REFRESH : t_excel .
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
filename = p_pfile
i_begin_col = '1'
i_begin_row = p_pbrow
i_end_col = '27'
i_end_row = p_perow
TABLES
intern = t_excel
EXCEPTIONS
inconsistent_parameters = 1
upload_ole = 2
OTHERS = 3.
IF sy-subrc <> 0.
MESSAGE e000 WITH text-002.
ENDIF.
LOOP AT t_excel .
CASE t_excel-col .
WHEN '001'.
itab-bldat = t_excel-value.
WHEN '002'.
itab-budat = t_excel-value.
WHEN '003'.
itab-blart = t_excel-value.
WHEN '004'.
itab-bukrs = t_excel-value.
WHEN '005'.
itab-monat = t_excel-value.
WHEN '006'.
itab-waers = t_excel-value.
WHEN '007'.
itab-docid = t_excel-value.
WHEN '008'.
itab-newbs = t_excel-value.
WHEN '009'.
itab-newko = t_excel-value.
WHEN '010'.
itab-wrbtr = t_excel-value.
WHEN '011'.
itab-bupla1 = itab-bukrs.
itab-secco1 = itab-bukrs.
itab-zfbdt = t_excel-value.
WHEN '012'.
itab-zuonr = t_excel-value.
WHEN '013'.
itab-sgtxt = t_excel-value.
WHEN '014'.
itab-newbs1 = t_excel-value.
WHEN '015'.
itab-newko1 = t_excel-value.
WHEN '016'.
itab-prctr = t_excel-value .
WHEN '017'.
itab-wrbtr = t_excel-value .
WHEN '018'.
itab-bldat1 = t_excel-value.
WHEN '019'.
itab-budat1 = t_excel-value.
WHEN '020'.
itab-blart1 = t_excel-value.
WHEN '021'.
itab-monat1 = t_excel-value.
WHEN '022'.
itab-newbs2 = t_excel-value.
WHEN '023'.
itab-wrbtr1 = t_excel-value.
WHEN '024'.
itab-zuonr1 = t_excel-value.
WHEN '025'.
itab-sgtxt1 = t_excel-value.
WHEN '026'.
itab-newbs3 = t_excel-value.
WHEN '027'.
itab-newum = t_excel-value .
AT END OF row .
APPEND itab.
CLEAR itab .
ENDAT.
ENDCASE .
ENDLOOP.
ENDFORM. " UPLOAD_FILE
*& Form fill_bdctable
text
--> p1 text
<-- p2 text
FORM fill_bdctable .
LOOP AT itab .
v_tabix = sy-tabix .
PERFORM bdc_dynpro USING :
'1' 'SAPMF05A' '0100',
' ' 'BDC_CURSOR' 'FS006-DOCID',
' ' 'BDC_OKCODE' '/00',
' ' 'BKPF-BLDAT' itab-bldat,
' ' 'BKPF-BLART' itab-blart,
' ' 'BKPF-BUKRS' itab-bukrs,
' ' 'BKPF-BUDAT' itab-budat,
' ' 'BKPF-MONAT' itab-monat,
' ' 'BKPF-WAERS' itab-waers,
' ' 'FS006-DOCID' itab-docid,
' ' 'RF05A-NEWBS' itab-newbs,
' ' 'RF05A-NEWKO' itab-newko,
'1' 'SAPMF05A' '0302',
' ' 'BDC_CURSOR' 'RF05A-NEWKO',
' ' 'BDC_OKCODE' '/00',
' ' 'BSEG-WRBTR' itab-wrbtr,
' ' 'BSEG-MWSKZ' ITAB-MWSKZ,
' ' 'BSEG-ZFBDT' itab-zfbdt,
' ' 'BSEG-ZUONR' itab-zuonr,
' ' 'BSEG-SGTXT' itab-sgtxt,
' ' 'RF05A-NEWBS' itab-newbs1,
' ' 'RF05A-NEWKO' itab-newko1,
'1' 'SAPMF05A' '0300',
' ' 'BDC_CURSOR' 'BSEG-WRBTR',
' ' 'BDC_OKCODE' '/00',
' ' 'BSEG-WRBTR' itab-wrbtr,
'1' 'SAPLKACB' '0002',
' ' 'BDC_CURSOR' 'COBL-PRCTR',
' ' 'BDC_OKCODE' '=ENTE',
' ' 'COBL-PRCTR' itab-prctr,
'1' 'SAPMF05A' '0300',
' ' 'BDC_CURSOR' 'BSEG-WRBTR',
' ' 'BDC_OKCODE' '=BS',
' ' 'BSEG-WRBTR' itab-wrbtr,
'1' 'SAPLKACB' '0002',
' ' 'BDC_CURSOR' 'COBL-PRCTR',
' ' 'BDC_OKCODE' '=ENTE',
' ' 'COBL-PRCTR' itab-prctr,
'1' 'SAPMF05A' '0700',
' ' 'BDC_CURSOR' 'RF05A-NEWBS',
' ' 'BDC_OKCODE' '=BU'.
CALL TRANSACTION 'F-43' USING t_bdcdata
MODE p_pdis
UPDATE 'A' MESSAGES INTO messtab.
LOOP AT messtab WHERE msgtyp = 'E' .
v_mvar1 = messtab-msgv1+0(49).
CALL FUNCTION 'MESSAGE_PREPARE'
EXPORTING
language = sy-langu
msg_id = messtab-msgid
msg_no = messtab-msgnr
msg_var1 = v_mvar1
MSG_VAR2 = ' '
MSG_VAR3 = ' '
MSG_VAR4 = ' '
IMPORTING
msg_text = v_mtext
EXCEPTIONS
function_not_completed = 1
message_not_found = 2
OTHERS = 3 .
IF sy-subrc <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
messtab-row = p_pbrow + v_tabix - 1.
messtab-key = itab-newbs.
messtab2-row = messtab-row.
messtab2-key = messtab-key.
messtab2-mtype = messtab-msgtyp.
messtab2-mtext = v_mtext.
APPEND messtab2.
CLEAR messtab.
ENDLOOP.
REFRESH t_bdcdata .
PERFORM bdc_dynpro USING :
'1' 'SAPMF05A' '0100',
' ' 'BDC_CURSOR' 'RF05A-NEWKO',
' ' 'BDC_OKCODE' '/00',
' ' 'BKPF-BLDAT' itab-bldat1,
' ' 'BKPF-BLART' itab-blart1,
' ' 'BKPF-BUKRS' itab-bukrs,
' ' 'BKPF-BUDAT' itab-budat1,
' ' 'BKPF-MONAT' itab-monat1,
' ' 'BKPF-WAERS' itab-waers,
' ' 'FS006-DOCID' itab-docid1,
' ' 'RF05A-NEWBS' itab-newbs2,
' ' 'RF05A-NEWKO' itab-newko,
'1' 'SAPMF05A' '0302',
' ' 'BDC_CURSOR' 'RF05A-NEWUM',
' ' 'BDC_OKCODE' '/00',
' ' 'BSEG-WRBTR' itab-wrbtr1,
' ' 'BSEG-ZFBDT' itab-zfbdt,
' ' 'BSEG-SGTXT' itab-sgtxt1,
' ' 'RF05A-NEWBS' itab-newbs3,
' ' 'RF05A-NEWKO' itab-newko,
' ' 'RF05A-NEWUM' itab-newum,
'1' 'SAPMF05A' '0304',
' ' 'BDC_CURSOR' 'BSEG-PRCTR',
' ' 'BDC_OKCODE' '/00',
' ' 'BSEG-WRBTR' itab-wrbtr1,
' ' 'BSEG-PRCTR' itab-prctr,
' ' 'BSEG-ZUONR' itab-zuonr1,
' ' 'BSEG-SGTXT' itab-sgtxt1,
' ' 'BSEG-BUPLA' itab-bukrs,
' ' 'BSEG-SECCO' itab-bukrs,
'1' 'SAPMF05A' '0304',
' ' 'BDC_CURSOR' 'BSEG-WRBTR',
' ' 'BDC_OKCODE' '=BS',
' ' 'BSEG-WRBTR' itab-wrbtr1,
' ' 'BSEG-BUPLA' itab-bukrs,
' ' 'BSEG-SECCO' itab-bukrs,
' ' 'BSEG-PRCTR' itab-prctr,
' ' 'BSEG-ZUONR' itab-zuonr1,
' ' 'BSEG-SGTXT' itab-sgtxt1,
'1' 'SAPMF05A' '0700',
' ' 'BDC_CURSOR' 'RF05A-NEWBS',
' ' 'BDC_OKCODE' '=BU'.
CALL TRANSACTION 'F-02' USING t_bdcdata
MODE p_pdis
UPDATE 'A' MESSAGES INTO messtab.
APPEND messtab.
REFRESH t_bdcdata .
ENDLOOP .
ENDFORM. " fill_bdctable
*& Form BDC_DYNPRO
text
-->P_0337 text
-->P_0338 text
-->P_0339 text
FORM bdc_dynpro USING flag
var1
var2.
CLEAR t_bdcdata .
IF flag = 1.
t_bdcdata-program = var1.
t_bdcdata-dynpro = var2.
t_bdcdata-dynbegin = 'X'.
ELSE.
t_bdcdata-fnam = var1.
t_bdcdata-fval = var2.
ENDIF.
APPEND t_bdcdata.
ENDFORM. " BDC_DYNPRO -
Copy a subroutine with include on a different server
Hi
I need to copy a subroutine which has many includes and into that includes there are many perform.how to copy such kind of subroutines.I have a subroutine and its PERFORM statement PRG also exist but they are not linked i.e when i double click on the perform it doesn't take me to the given prg.So i m thinking to copy the same prg from prd server.So how to copy the subroutine with all the includes and perform.
Regards
TanyaHi Tanya gulsan,
It is not possible to just copy it from system to system.
You should create a function module with Remote function call (RFC) option in SE37.You should include this subroutine includes many includes.Then call it this one from the targeted system.
If it helpful, reward points.
Thank you,
Prasad G.V.K
Edited by: PRASAD GVK on Jul 15, 2008 12:20 PM -
Search Hardcoded values in Prg
Hi All,
I need to search for some Hard coded values inside the all Z PRograms.
IS there any way to do it other than manaully use Find on each of Inclueds and main prg?
I have 11 Company codes and respective VAT # for each.
I have more than 1000 Prgrams with minimum 5-6 includes in each.
Please suggest a way out.
Regards
Rameshgo to transaction SLIN, type the program name for which you ned to remove the hard cocded values , uncheck all the checkboxes and check only the
" Character strings " check box... it will list all the hardcoded values in program... -
Help me decide. Amex PRG or Ritz?
After applying for the Amex Green I had some serious regrets, realizing it offers terrible rewards and still; an AF!I must admit though, the only reason I even applied for that card was due to not educating myself. I just saw it was the charge card with the cheapest AF and applied. I now understand the error of my ways and have committed to thoroughly researching any CC in the future.After seeing the new changes to the Amex PRG, I knew I had applied for the wrong card for sure. Up until today I was going to apply for it, but now I am a little undecided. The bonus categoies for dining, gas and groceries are very appealing to me and the $100 airline fee credit/no FTF's were the icing on the cake; justifying the $195 AF down to prety much $95. I travel back to London from Detroit (DTW) once a year to visit family and friends. I know the $100 airline fee can be used for airline gift cards so I was planning on using it as basically $100 off my tickets every year. I also travel domestically once/twice a year too. Anyway, I was looking at the Chase Ritz Carlton card today just out of lust and I noticed it had a $300 airline fee credit! Now with a $395 AF, I could do the same thing, and bring the AF down to virtually $95 also. It offers Lounge Club access which was the only thing that was making me consider it over the Amex PRG to be honest. The only thing is, I usually only stay at low-mid tier hotels and not Ritz Carlton hotels. What do you think? I am getting married next year and planning a honeymoon to Scotland/England so I guess I could use reward points towards a Ritz stay in central London? EDIT*** If I was to apply for the Ritz I know I would have to wait until December of this year to apply as Chase dont approve if you've opened 5 or more accounts in 24 months. EDIT*** Ok it doesn't apply to cobranded cards, never mind
myjourney wrote:
TYREX wrote:
Irish80 wrote:
TYREX wrote:
Irish80 wrote:
myjourney wrote:
Not to sway you one way or the other but the Ritz also includes Enjoy Two Complimentary Nights at any participating Tier 1-4 Can you say honeymoon Both cards are great IMHOChase will still you the 140K point offer instead of the two night one and that's a better deal. The Ritz card is great and the 140K offer makes it tough to turn down along with the other benefits.Yes, it seems like it! The Ritz in London is classed as a Tier 3 hotel and points required are 50,000 per night, so this would be a nice benefit given I'd have easily over 150,000 points by then. Does anyone know if this is just for a standard room or could you use the points/complimentary nights for a larger suite? I mean I am guessing there is a cap for which rooms you can choose, but was just wondering?You can use the points for any room. The card also comes with three certificates for upgrades to Club Level rooms at a Ritz for up to 7 nights.After considering this, I think it seems like a no-brainer for me now, at least for the first year of owning the card. That's awesome.Given I was wrong about the whole 'Chase-24 month-cobranded cards' thing, I will probably be applying within the next few months now then. Something that just occurred to me though, I travel with Delta to LAX sometimes to stay with a friend and I know Delta are partnered with Amex. So I am guessing my Lounge Club wouldn't qualify with Delta purchases... I could always just find another airline but do like Delta. Hmm. Lol You'll love this answer Sounds like you can benefit from both cards in that case Sounds like a double app spree to me and neither card has FTF so another plus Edit to add and you can add 50k MR points to go with the honeymoon as wellHahahaha!I mean I feel I wouldn't be using both cards that much to benefit, but I guess the Amex PRG's fee would be waived the first year; which is tempting.I don't want to go overboard though, as I would have to close one card before the year in that case. Trying to focus roughly $30k of yearly spending across more than 3 cards would be diluting my potential rewards too much for my liking, even with say, $10k of yearly spending per card. My CSP still needs love as well. I wish they would offer an airline credit with the Sapphire otherwise I could just garden for another 1-2 years -
How do I include 'Edge Web Fonts' into Edge Animate?
How do I include 'Edge Web Fonts' (not Google Web Fonts) into Edge Animate?
Have you tried to use google fonts? I have used them and they work for me.
When you add your font for example:
Copy paste:
<link href='http://fonts.googleapis.com/css?family=Finger+Paint' rel='stylesheet' type='text/css'>
and then for font family.
'Finger Paint', cursive;
then select addfont on the addfont screen -
No Apple Remote or Apple Mini-DVI to VGA Adaptor included with new MacBooks
Hi!
I just picked up a new (black) MacBook yesterday from the Apple Retail Store in Meadowhall (Sheffield). I was quite surprised to open the box and find that the Apple Remote and Mini-DVI to VGA adaptor cable are now optional items and no longer included in the package. Okay, they're not expensive (an extra £30.00 to add both of them), but I just thought I'd mention it to let potential customers know.
I have to say that I'm very pleased at the speed bump and the 250GB hard drive though (you can never have too much space). Also good to have 2GB RAM out of the box (rather than paying an extra £90.00 for the 2GB model). Excellent!bford0001 - 15% restocking fee? Did you buy it from an Apple Retail store? I bought a black MacBook from them just under two weeks ago (a 2.2 with 160GB HD and 2GB RAM) and they let me take it back and walk out of the store without charging me anything!
One other thing I have noticed - why has the L2 cache dropped to 3MB from 4MB? I know the processor is more powerful, but doesn't that mean it would just about level out, because of the reduction? I noticed the same for the £1,299.00 MacBook Pro and that on the other two models, it's gone up to 6MB. Anyone know how this would change the performance? -
Post Author: tadj188#
CA Forum: Formula
Needed: Sum of LineCount Including Groups and Detail Data On Each Page Used To Generate New Page If TotalPageLineCount > 28
Background:
1) Report SQL is created with unions to have detail lines continue on a page, until it reaches page footer or report footer, rather than using subreports. A subreport report is now essentially a group1a, group1b, etc. (containing column headers and other data within the the report with their respective detail lines). I had multiple subreports and each subreport became one union.
Created and tested, already:
1) I have calculated @TotalLineForEachOfTheSameGroup, now I need to sum of the individual same group totals to get the total line count on a page.
Issue:
1) I need this to create break on a certain line before, it dribbles in to a pre-printed area.
Other Ideas Appreciated:
1) Groups/detail lines break inconveniently(dribble) into the pre-printed area, looking for alternatives for above situation.
Thank you.
Tadjexport all image of each page try like this
var myDoc = app.activeDocument;
var myFolder = myDoc.filePath;
var myImage = myDoc.allGraphics;
for (var i=0; myImage.length>i; i++){
app.select(myImage[i]);
var MyImageNmae = myImage[i].itemLink.name;
app.jpegExportPreferences.jpegQuality = JPEGOptionsQuality.high;
app.jpegExportPreferences.exportResolution = 300;
app.selection[0].exportFile(ExportFormat.JPG, File(myFolder+"/"+MyImageNmae+".JPEG"), false);
alert(myImage[i].itemLink.name) -
In Outlook my PDF attachments appear as whole documents and not just the PDF icon. How can I have attachments included as PDF icons and not the documents?
For your own viewing, you can of course control-click on the attachment and select "View as Icon".
For others' viewing, it depends upon their email reader. To ensure that attachments are not displayed expicitly you can put them all in a zip file (via control click and "Compress") then attaching them, or you can use third party stuff like Attachment Tamer.
charlie
Maybe you are looking for
-
Image engineering of windows xp with WADK 8.1 and deployed with MDT
Hello, We know that image engineering of Windows XP with WADK 8.1 is not compatible then even if there is any ways to achieve this anyway....(by refresh scenario or any enabling setting). Thanks Richa KM
-
hey there I cant update 5.0.1 to 6.0.1 in my iphone so anyone tell me how can i update?
-
I know how to customize it, but it's just that when i open the window to drag the items to my toolbar nothing happens. it wont let me drag anything i can delete things just by clicking on it. so is it locker or something? do i have to reset safari?
-
How to ON the front camera of E71 (the small camer...
Guys, does anyone know how to ON that second camera on E71. Ty Solved! Go to Solution.
-
Windows vista service pack 1 keeps installing
My computer crashed, so had hard drive reformated and re-loading Windows Vista Ultimate 32-bit. Doing all the updates via Windows Update, I get to Service Pack 1. It installs successfully, but won't move onto Service pack 2. I have like 10 supposed s