Validating manually entered dates
I have a number of date fields on various pages which use various Date Picker formats. For example one Date Picker field might use one of the date formats, while another Date Picker field might use one of the date and time formats.
My question is: Do I have to hardwire the validation of each date field (for example to_date(:inputDate, 'DD-MON-YYYY')) which means that my validation is invalid if I select a different format for the Date Picker, or is there a way of writing a more generic date validation test (for example to_date(:inputDate, get_format_from_date_picker_somehow))?
Hi All,
have a look at Home>Application Builder>Application 115>Application Attributes>Edit Globalization Attributes:
Application Language Derived From
Specifies how Application Express determines or derives the application language. The application primary language can be static, derived from the Web browser language, or determined from a user preference or item. Available options include:
* No NLS (Application not translated) - Select this option if the application will not be translated.
* Use Application Primary Language - Determines the application's primary language based on the Application Primary Language attribute.
* Browser (use browser language preference) - Determines the application's primary language based on the user's browser language preference.
* Application Preference (use FSP_LANGUAGE_PREFERENCE) - Determines the application's primary language based a value defined using the APEX_UTIL.SET_PREFERENCE API. Select this option to maintain the selected language preference across multiple log ins.
* Item Preference (use item containing preference) - Determines the application's primary language based on an application-level item called FSP_LANGUAGE_PREFERENCE. Using this option requires Oracle Application Express to determine the appropriate language preference every time the user logs in.
Similar Messages
-
Manually-entered date information doesn't stay with photos outside iPhoto
Hello--
I'm having problems trying to share the date information I've manually added in iPhoto to all my scanned photos.
I understand because they are scanned photos they are really new files where the image creation date is the day they were scanned. However, why is it that I can export the title, keywords, and location information of any of these scanned photos but not the date information that iPhoto is storing and using to sort the photos by date?
I've tried exporting the photos to iDisk, sharing via e-mail with the title, keyword, and location information, and downloading specialized EXIF viewers (now understanding that a scanned photo isn't really going to have any EXIF data like a digital camera photo would). The only place external from iPhoto that I seem to be able to view the date information I've added to the scanned photos is in my MobileMe Web Gallery (but not when uploaded to a family member's Web Gallery), but only when selecting the "Show Detailed Info..." menu item after opening a photo...this date info does not come along when I download the photo from my own Web Gallery.
I've also tried changing the date on these scanned photos using the Batch Change... menu item with no resulting change over setting the date in the information area for the photo (I still only see the date I've set in iPhoto or in my Web Gallery).
My ultimate goal is to send many scanned photos with titles, keywords, and date information to a family member also using a Mac to build a slideshow with photos from several of us all sorted properly by date. Right now we're unable to figure out how to do that. Entering the date information into the description field allows that textual data to come along when I share via e-mail, but it doesn't solve the problem of allowing other people to sort automatically by date with a larger set of photos without them having to transcribe that textual date info into the date field in the information area of the photo.
Thank you very much in advance for any specific instructions on making this work! This is getting quite frustrating at how something so seemingly simple and valuable is turning out to be so difficult to figure out.
--BillTerence Devlin wrote:
audio capture/auto ID3 tagging
What do you mean by this?
On the Windows machine I have an app called 'Spin it Again'
I use it for Vinyl and analogue tape capture for stuff that I could not fford to go out and buy new ( if even now available).
All I have to do is put in artist name and title and it finds from online database (Gracenote plus others) , it analysis the audio and automatically splits the single capture in to individual tracks, saving the track names to each track, it uses recorded track length and database info to to comfirm/database naming. It also has basic audio filtering/crackle/hiss removal, audio cleanup options all in one package.
I have yet to find anything that does the same job on the Mac,
iTunes will auto tag tracks from an online database.
The iTunes store database is very limited and does not have much of the older stuff. Plus I have always used FLAC format as my 'archive store' for all my audio, so ripping with iTunes is out For CD's I use EAC with Accurate rip to rip them and that also uses an online database with much greater range than iStore.
Have you searched on MacUpdate?
To an extent, and Garmin are now producing some better software for mac for their GPS units. But still nothing much in the Freeware world yet. I have tried a few apps for GPS over the last year (yes I have had a Mac for almost a year now) but still found nothing that has all the functions that I am used to on the Windows machine, and as I still have the Xp machine set up next to the mac , all on the same screens, then there is no difficulty in swapping machines. It is not of that great an importance that I am going to spend too much time on searching for Mac apps..something will turn up in time...as Name Mangler has done. I spend too much time on these bloody machines as it is...it is now 1210...and I have been on here since 0800...I had planned to go down the farm and do some work down there this morning...another morning gone and nothing real to show for it. -
Manually enter dates in prompt
Post Author: Scott
CA Forum: General
I created a parameter which prompts the user to enter a date range. The problem is.........I want to enter the dates rather than chose from a dropdown list.
Any thoughts?Post Author: rmhogan
CA Forum: General
Try changing the options in the "Edit Parameter Field" to Discrete Value.
Robert -
I have manually inputted data into a blank spreadsheet and would like to use a form to enter data into that sheet !!! How do I do that please
Leigh,
After creating your table, Tap the Tab marked "+" and select "Form" - you will be asked which table to use. (You should get into the habit of naming your tables - if the table name isn't visible, select the table and tap the Styles (Brush) Menu > Table > Turn ON table Name, then double tap on the Table to edit it.)
Select the table you wish to to fill with a form and you will see a new form based on the header data.
The form will allow you to add one row at a time and when you get to the last row, there is an option at the bottom of the form to add a new row using the "+" button. At the top of the form is the row header which you can rename by double tapping.
You can also rename the form on the Tab by double tapping on the name.
Try it out. -
Auto/Manually enter a date
Hello and thank you in advance for your help! Currently I have a form that has text box using an auto date. Then I have three more text boxes that shows a date 7 days, 14 days, and 28 days ahead. I am working on this for a client and they would also like to be able to manually change the dates in any of those text boxes as well. I am having a hard time wrapping my head around what I need to do and need some guidance. Whenever I try to manually enter a date, it immediately calculates and reverts back to today's date (and updates the other boxes as well).
Thank you for your reply. Yes you are right, my scripts are currently in the "Custom Calculation Script" section
Here are the scripts I use to give you a better idea:
First Text Box:
// get the current date's date object for the first text box
var oDate = new Date();
// set the field value
this.getField("FromDate2").value = util.printd("mm/dd/yyyy", oDate);
Second Text Box (7 days):
var f = this.getField("FromDate2");
var d = new Date(f.value);
d.setDate(d.getDate()+7);
event.value = util.printd("mm/dd/yyyy", d);
Third Text Box (14 days):
var f = this.getField("FromDate2");
var d = new Date(f.value);
d.setDate(d.getDate()+14);
event.value = util.printd("mm/dd/yyyy", d);
Fourth Text Box (28 days):
var f = this.getField("FromDate2");
var d = new Date(f.value);
d.setDate(d.getDate()+28);
event.value = util.printd("mm/dd/yyyy", d); -
How to enter data manually in SQL server mgmt studio 2012
On a new table, I right click and select "Edit Top 200 rows". It looks like I can enter data here but
I dont see a 'commit' button anywhere. If I click outside the cell it generates an error that I have not committed the data.
I just want to enter some picklist data and don't want to script this. How can I just enter data via the gui?
ThanksPlease fill the data row by row. When you enter the data in first row then press enter. Then you should move to next row.
--> Error Message: String or binary data would be truncated
Error message says that, for some column you have let's say varchar(10) but you are entering data with >10 length
Cheers,
Vaibhav Chaudhari
[MCTS],
[MCP] -
Hi All,
How to use the manually entered Hours/Days in the Duration field for BG_ABSENCE_DURATION fast formula?
Requirement is to restrict employees for applying for leave more than the accrued balance. In SSHR, apply leave functionality, the employee enters the start date, end date and duration manually. The entered duration must be used in the fast formula to check against available balance.
In the BG_ABSENCE_DURATION FF, I have a function to calculate the net accrual balance as on the calculation date.
I want to add the logic as - If to_number(Duration) /*[manually entered value]*/ > net accrual balance then
Duration = 'FAILED'
invalid_msg = 'Error'
return duration, invalid_msg
Thanks!Hi,
We have a standard functionality to override the duration calculation and you don't need to add a validation for the same. Please set the value of profile option HR: Absence Duration Auto Overwrite to Yes
When you do this user will not have to enter the duration value manually. It will get auto calculated based on the duration calculation in BG_ABSENCE_DURATION when you click on the next button.
For not allowing negative leaves to be applied, If you are on R12 then, this is a standard functionality and you need to set profile option HR Allow Absence Negative Balance to No
If you are on 11i then refer Note: 268171.1: How Do You Stop Accrual Plans from Going Negative?
Try and let me know in case you need further help.
Thanks,
Sanjay -
Hi,
For accrual entry I am using spreadsheet and uploading. In the spreadsheet, in the "Reversal date" field, even if I give wrong date format the system is uploading successfully. I mean it is accepting if I write like 22/22/56/ or 1-/89/99, etc... I need to write a validation to resolve this.
I need to meet following condtions.
1. System has to accept only MM/DD/YYYY format.
2. The system has to allow entering only numbers (and not letters and special characters).
3. The Reversal Date has to be later than the Posting Date .
I dont know how to write validation.
Can anyone help me.
Thanks
RamHi,
If the date is getting populated in date fields in SAP, there is no way the system will accept the way you have indicated. The date format what you have specified in the system MM/DD/YYYY - system will accept only that format. Why don't you try to enter manually a date and check whether system accepts. If system is accepting meaningless dates, there is a some issue in SAP system.
Probably, you can consider whether a validation can be developed to check that reversal date is subsequent to date of accrual date.
Thanks
Murali. -
Can we enter data in any standard table directly through custom form??
Dear All,
Can we enter data in any standard table directly through custom form??
I have create custom form in R.12. I want to insert data in quality standard table directly through custom form. Need experts guideline.
Awaiting regards,Hi,
Can we enter data in any standard table directly through custom form??
I have create custom form in R.12. I want to insert data in quality standard table directly through custom form. Need experts guideline.
Awaiting regards,
I would not recommend touching the standard tables at all unless you are being guided by the SR. For a record to be in the standard table it should go through series of validations based on the what operation you are performing and some times datas are dependent upon the other tables, and also some times the same records are hit to so many other tables simultaneously.
Therefore I would not recommend this brother.
Thanks &
Best Regards, -
Fixed Asset - Manually enter opening balance
Hi,
It's possible to manually enter fixed asset opening balance? anyone wanna share ways of manually enter? l only tried on import way.
Thanks in advance!
PhoebeHi,
There is no feature that can be used to upload FA opening balance amount in the fixed asset addon.
If you refer to fixed asset master data import, you can use template fixed asset master data to import the master data.
JimM -
Keeping SharePoint Query Data and Excel Manual Entry Data Aligned
Greetings!
I've been trying to find the best place to ask this question, so I'm hoping this is close enough to on-topic for this forum.
I have an Excel 2010 workbook that includes a table linked to my SharePoint 2013 site by a data connection. The SharePoint list feeds the table standard information that's managed on the SharePoint site, but I need the user of the Excel workbook to be able
to enter text manually in the workbook to associate local information with the line-items coming from the SharePoint list. To do this, I've added extra columns to the end of the table. This is not just text entered into columns to the right of the data table,
but rather the data table is extended to encompass the adjacent columns, so my expectation was that the rows of the table should hold some level of "identity" to associate the manually entered text with the corresponding data coming from the SharePoint
site.
The user can enter information in the appropriate cells in the "extra" columns at the end of the table, but when I refresh the data connection, the addition of a new list item on the SharePoint side results in the user's manually entered text getting
out of alignment with the row it's supposed to be associated with.
Example
Column 1(SP)
Column 2(Extra)
Row 1
Item 1
Row 2
Item 2
Text entered for Item 2
Row 3
Item 3
Then, if I add a new item to the list in SharePoint, for example, something that would appear between the original items 1 & 2, after refreshing the table, I get the following:
Column 1(SP)
Column 2(Extra)
Row 1
Item 1
Row 2
New Item 1.5
Text entered for Item 2
Row 3
Item 2
Row 4
Item 3
The table's data connection is set to insert rows for new items, and I could swear I had this working properly once upon a time...but I can't seem to make it work now.
Any thoughts on what would cause this?
Thanks in advance!Hi,
Thanks for visiting our forum.
I'm glad to find you have get the explain from MSDN forum. I'll put the link here and it'll benefit for other communicators.
http://social.msdn.microsoft.com/Forums/office/en-US/b3bbe00c-94c0-48d4-bed9-fbd08d707b1d/excel-table-with-sharepoint-data-connection-manual-text-entry-misaligned-after-refresh?forum=exceldev
Have a good time.
Regards,
George Zhao
TechNet Community Support
It's recommended to download and install
Configuration Analyzer Tool (OffCAT), which is developed by Microsoft Support teams. Once the tool is installed, you can run it at any time to scan for hundreds of known issues in Office
programs. -
Manually Enter the Sales Order Schedule Line
Dear All,
I have a requirement where Sales Order will be created by Customer Service with Quantity and customer requested delivery date. Subsequently Planning department will go to the sales order schedule lines and enter manually the delivery date and confirmed quantity (multiple schedule lines) based on the stock/availability. They also need to do some changes in the shedule line if required. But when I try, the manually entered schedule lines are disappeared. Could any one advice how to set this up?
Thanks,
Regards,
VenkatHi Venkat
A schedule line gets grade out because this has been determined . through schedule line determination. . Now in the shipping data tab you can change the schedule line tab if you want . manually you can change the request delivery date also.
But it is not advisable to change the schedule line because again the affect of availability check will vary.
But can we know for what purpose you want to change the schedule line when you create the sales order. Any reason .For what purpose you are going for that customization ?For what purpose?
Regards
Srinath -
How can I get user to enter date & time on a form?
I have a form where I want the user to enter a date and time for an event. The database field is in MYSQL datetime format
I've used the datepicker on the form field but it only allows for a date entry not time.(eeven when seetin the width to 22 chars
I remember doing something before which allowed the user to pick a date and then add the time at the end.
I've got the date defaulted to dd/mm/yyyy and the time to H:mm in the control panel.
Can anyone help please or is there a better way to enter date and time?.
Any help appreciated
Thanks
CliveTwo things:
The column in your database is defined as DateTime, not Date
You use the option on the Date Picker to choose datetime, not date
This will give the user the ability to choose a date and time from the date column. If you need more control over the time, you probably need to add another column defined as Time. Then you can use the validation rules to force an entry rather than allowing the default (current time). -
How can I manually enter MIDI channel number in Control Surface expert Value Change field?
I am creating a software interface for a multidimensional controller which can transmit many linear values at the same time. I can not use Learn mode because it always sends data from all sources, but I can split them by MIDI channels. I would like to manually enter controlling values into Control Surface expert view.
I seem to be able only to input the message, but not MIDI channel on which it is transmitted.Stupid me, it's hex... so 80 is Note Off ch 1, 90 Note On ch 1 etc
-
Problem: new entered data is saved but I am facing one error message --- no
This is a module program for gate entry of materials(miro). This is a simple entry form which updates z tables with data entered. I have to send the new record details automatically through mail to the particular vendor email id from where the material has been purchased.
Problem: new entered data is saved but I am facing one error message --- no authorization to unpack list with rfc when the program is sending list through mail.
PROGRAM ZMMI001_GRN_ENTRY_BARCODE MESSAGE-ID ZMM .
*Table Declaration
TABLES : EKKO , EKPO , LFA1 , MARC ,
MARD , J_1IMTCHID , EKET , MSEG,
MKPF , ZMMT001_GRN_GATE,
ZMMT002_GRN_ITEM.
TABLES: ADR6.
*Table Control Declaration
CONTROLS : TC1 TYPE TABLEVIEW USING SCREEN 1000.
DATA: COLS LIKE LINE OF TC1-COLS.
*Internal Table Declaration
DATA : BEGIN OF IT_TC1 OCCURS 0,
SEL,
SNO(2) TYPE C,
ITEMCODE(18) TYPE C,
ITEMNAME(40) TYPE C,
QUANTITY TYPE P DECIMALS 2,
EXCISE(13) TYPE P DECIMALS 2,
END OF IT_TC1.
DATA : IT_TEMP_TC1 LIKE IT_TC1 OCCURS 0 WITH HEADER LINE.
DATA: BDCDATA LIKE BDCDATA OCCURS 0 WITH HEADER LINE.
DATA : IT_EKPO LIKE EKPO OCCURS 0 WITH HEADER LINE.
DATA : IT_EKKO LIKE EKKO OCCURS 0 WITH HEADER LINE.
DATA : IT_EKET LIKE EKET OCCURS 0 WITH HEADER LINE.
DATA : WK_ZMMT01 LIKE ZMMT001_GRN_GATE.
DATA : IT_ZMMT01 LIKE ZMMT001_GRN_GATE OCCURS 0 WITH HEADER LINE.
DATA : IT_ZMMT02 LIKE ZMMT002_GRN_ITEM OCCURS 0 WITH HEADER LINE.
DATA : BEGIN OF IT_TEMP_EKPO OCCURS 0,
EBELN LIKE EKPO-EBELN,
EBELP LIKE EKPO-EBELP,
MATNR LIKE EKPO-MATNR,
END OF IT_TEMP_EKPO.
DATA : BEGIN OF IT_MSEG OCCURS 0,
MBLNR LIKE MSEG-MBLNR,
MJAHR LIKE MSEG-MJAHR,
ZEILE LIKE MSEG-ZEILE,
BWART LIKE MSEG-BWART,
MATNR LIKE MSEG-MATNR,
EBELN LIKE MSEG-EBELN,
EBELP LIKE MSEG-EBELP,
BUDAT LIKE MKPF-BUDAT,
MENGE LIKE MSEG-MENGE,
END OF IT_MSEG.
DATA : BEGIN OF IT_TEMP_MSEG OCCURS 0,
MBLNR LIKE MSEG-MBLNR,
MJAHR LIKE MSEG-MJAHR,
ZEILE LIKE MSEG-ZEILE,
BWART LIKE MSEG-BWART,
EBELN LIKE MSEG-EBELN,
END OF IT_TEMP_MSEG.
DATA : BEGIN OF IT_TEMP_MKPF OCCURS 0,
MBLNR LIKE MKPF-MBLNR,
MJAHR LIKE MKPF-MJAHR,
BUDAT LIKE MKPF-BUDAT,
BKTXT LIKE MKPF-BKTXT,
END OF IT_TEMP_MKPF.
*Data Declaration
DATA : WK_SNO TYPE I,
WK_LIFNR LIKE LFA1-LIFNR,
WK_EBELN(10) TYPE C,
WK_VBELN(10) TYPE C,
WK_FKDAT TYPE D,
WK_NAME LIKE LFA1-NAME1,
WK_SCHNO(10) TYPE C,
WK_CHALNO(10) TYPE C,
WK_CHALDATE(10) TYPE C,
WK_GRNO(10) TYPE C,
WK_GRDATE(10) TYPE C,
WK_VEHICLE(10) TYPE C,
WK_CARRIER(10) TYPE C,
WK_FREIGHT(13) TYPE P DECIMALS 2,
WK_MDOC(3) TYPE C,
WK_DEPT(7) TYPE C,
WK_MODE(7) TYPE C,
WK_BASIC(13) TYPE P DECIMALS 2,
WK_EXCISE(13) TYPE P DECIMALS 2,
WK_TAX(13) TYPE P DECIMALS 2,
WK_APPVAL(13) TYPE P DECIMALS 2,
WK_CHAL(2) TYPE C,
WK_FORM38(9) TYPE C,
WK_COMMENT(30) TYPE C,
WK_MAKTX(40) TYPE C,
WK_LINES TYPE I,
WK_TOTAL LIKE MARD-LABST,
WK_LGORT LIKE MARD-LGORT,
WK_EXCISE_IND,
WK_TOT_EXCISE LIKE EKPO-NETWR,
WK_DIFF LIKE EKPO-NETWR,
WK_BSTYP LIKE EKKO-BSTYP,
WK_BSART LIKE EKKO-BSART,
WK_DIFF_QTY LIKE EKET-MENGE,
WK_101_QTY LIKE EKET-MENGE,
WK_102_QTY LIKE EKET-MENGE,
WK_122_QTY LIKE EKET-MENGE,
WK_WERKS LIKE EKPO-WERKS,
WK_CHAR_SNO TYPE STRING,
WK_DATE LIKE SY-DATUM,
WK_TIME LIKE SY-UZEIT.
DATA : WK_DATE1 LIKE SY-DATUM,
WK_DATE2 LIKE SY-DATUM,
WK_FISYEAR TYPE I,
WK_CHAR_YEAR(20) TYPE C.
DATA : V_UCOMM TYPE SY-UCOMM,
V_INDEX(10) TYPE C,
V_QUANTITY(8) TYPE C.
**DECLARATION FOR INPUT HELP*
TYPES : BEGIN OF VALUES,
TXZ01 LIKE EKPO-TXZ01,
MENGE LIKE EKPO-MENGE,
MATNR LIKE EKPO-MATNR,
END OF VALUES.
TYPES : BEGIN OF VALUES1,
EBELN LIKE EKKO-EBELN,
END OF VALUES1.
TYPES : BEGIN OF VALUES2,
NAME1 LIKE LFA1-NAME1,
LIFNR LIKE LFA1-LIFNR,
END OF VALUES2.
DATA: PROGNAME LIKE SY-REPID,
DYNNUM LIKE SY-DYNNR,
DYNPRO_VALUES TYPE TABLE OF DYNPREAD,
FIELD_VALUE LIKE LINE OF DYNPRO_VALUES,
VALUES_TAB TYPE TABLE OF VALUES WITH HEADER LINE,
VALUES_TAB1 TYPE TABLE OF VALUES1,
VALUE_EBELN TYPE TABLE OF VALUES1.
VALUES_TAB2 TYPE TABLE OF VALUES2.
DATA : VALUES_TAB2 TYPE VALUES2 OCCURS 0 WITH HEADER LINE.
DATA : RETURN_TAB LIKE DDSHRETVAL OCCURS 0 WITH HEADER LINE.
*nidhi
DATA: BEGIN OF IT_LFA1 OCCURS 0,
LIFNR LIKE LFA1-LIFNR,
ADRNR LIKE LFA1-ADRNR,
END OF IT_LFA1.
DATA: BEGIN OF IT_ADR6 OCCURS 0,
ADDRNUMBER TYPE ADR6-ADDRNUMBER,
SMTP_ADDR TYPE ADR6-SMTP_ADDR,
END OF IT_ADR6.
*nidhi
*& Module FILL_TABLE_CONTROL OUTPUT
text
MODULE FILL_TABLE_CONTROL OUTPUT.
READ TABLE IT_TEMP_TC1 INTO IT_TC1 INDEX TC1-CURRENT_LINE.
ENDMODULE. " FILL_TABLE_CONTROL OUTPUT
*& Module READ_TABLE_CONTROL INPUT
text
MODULE READ_TABLE_CONTROL INPUT.
*Validation for Item code
CLEAR : EKPO-MATNR,
EKPO-WERKS.
IF sy-uname = 'GATE1020'.
IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR
SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR
SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR
SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR
SY-UNAME = 'ABAP' ).
**SELECT SINGLE bstyp FROM EKKO INTO WK_BSTYP WHERE ebeln = wk_ebeln.
**SELECT SINGLE bsart FROM EKKO INTO WK_BSART WHERE ebeln = wk_ebeln.
READ TABLE VALUES_TAB WITH KEY MATNR = IT_TC1-ITEMCODE.
**ELSE.
SELECT SINGLE MATNR WERKS
FROM EKPO CLIENT SPECIFIED
INTO (EKPO-MATNR , EKPO-WERKS )
WHERE MANDT = SY-MANDT AND
EBELN = WK_EBELN AND
MATNR EQ IT_TC1-ITEMCODE.
ENDIF.
IF SY-SUBRC NE 0 AND NOT IT_TC1-ITEMCODE IS INITIAL.
CLEAR it_tc1.
MESSAGE E003 WITH TEXT-002.
ELSE.
SELECT SINGLE MAKTX FROM MAKT
CLIENT SPECIFIED
INTO WK_MAKTX WHERE
MANDT = SY-MANDT AND
MATNR = IT_TC1-ITEMCODE AND SPRAS = SY-LANGU.
ENDIF.
ENDIF.
**SELECT SINGLE bstyp FROM EKKO INTO WK_BSTYP WHERE ebeln = wk_ebeln.
**SELECT SINGLE bsart FROM EKKO INTO WK_BSART WHERE ebeln = wk_ebeln.
IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR
SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR
SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR
SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR SY-UNAME =
'ABAP' ).
IF WK_BSART = 'ZLR' .
Validation for Quantity.
IF NOT IT_TC1-QUANTITY IS INITIAL.
READ TABLE VALUES_TAB WITH KEY MATNR = IT_TC1-ITEMCODE.
IF SY-SUBRC EQ 0 AND IT_TC1-QUANTITY GT VALUES_TAB-MENGE.
MESSAGE E003 WITH TEXT-013.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
*Validation for Max.Stock Level
CLEAR : MARC-MABST.
SELECT SINGLE MABST FROM MARC
CLIENT SPECIFIED
INTO MARC-MABST
WHERE MANDT = SY-MANDT AND
MATNR = IT_TC1-ITEMCODE AND
WERKS = EKPO-WERKS.
CLEAR : MARD-LABST ,
MARD-INSME .
SELECT SINGLE labst insme FROM mard
CLIENT SPECIFIED
INTO (mard-labst , mard-insme )
WHERE MANDT = SY-MANDT AND
matnr = it_tc1-itemcode
AND werks = ekpo-werks.
SELECT SUM( LABST ) SUM( INSME ) FROM MARD
CLIENT SPECIFIED
INTO (MARD-LABST , MARD-INSME )
WHERE MANDT = SY-MANDT AND
MATNR = IT_TC1-ITEMCODE
AND WERKS = EKPO-WERKS.
CLEAR : WK_TOTAL.
WK_TOTAL = MARD-LABST + MARD-INSME + IT_TC1-QUANTITY.
IF WK_BSART = 'ZLR'.
IF WK_TOTAL GT MARC-MABST.
MESSAGE E001 WITH IT_TC1-ITEMCODE.
ENDIF.
ENDIF.
Appending the table control data to Internal table
READ TABLE IT_TEMP_TC1 INDEX TC1-CURRENT_LINE.
IT_TC1-SNO = TC1-CURRENT_LINE.
IF SY-SUBRC EQ 0.
MODIFY IT_TEMP_TC1 FROM IT_TC1 INDEX TC1-CURRENT_LINE.
ELSE.
READ TABLE IT_TEMP_TC1 WITH KEY ITEMCODE = IT_TC1-ITEMCODE.
IF SY-SUBRC NE 0.
IT_TC1-ITEMNAME = WK_MAKTX.
IF IT_TC1-ITEMCODE IS INITIAL.
CLEAR IT_TC1.
ELSE.
APPEND IT_TC1 TO IT_TEMP_TC1.
ENDIF.
ELSE.
MESSAGE E003 WITH TEXT-004.
ENDIF.
ENDIF.
CLEAR : J_1IMTCHID-J_1ICAPIND.
SELECT SINGLE J_1ICAPIND FROM J_1IMTCHID
CLIENT SPECIFIED
INTO J_1IMTCHID-J_1ICAPIND
WHERE MANDT = SY-MANDT AND
MATNR = IT_TC1-ITEMCODE AND
WERKS = EKPO-WERKS.
IF SY-SUBRC EQ 0.
IF J_1IMTCHID-J_1ICAPIND = 'N'.
WK_EXCISE_IND = 'N'.
ELSE.
WK_EXCISE_IND = 'E'.
ENDIF.
ENDIF.
ENDMODULE. " READ_TABLE_CONTROL INPUT
*& Module USER_COMMAND_1000 INPUT
text
MODULE USER_COMMAND_1000 INPUT.
V_UCOMM = SY-UCOMM.
CASE V_UCOMM.
WHEN 'WK_SAVE'.
IF WK_APPVAL > 0.
IF ( SY-UNAME = 'STORE1010' OR SY-UNAME = 'STORE1020' OR
SY-UNAME = 'STORE1030' OR SY-UNAME = 'STORE1040' OR
SY-UNAME = 'STORE1050' OR SY-UNAME = 'STORE1060' OR
SY-UNAME = 'STORE1070' OR SY-UNAME = 'STORE1080' ).
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
INPUT = WK_VBELN
IMPORTING
OUTPUT = WK_VBELN.
SELECT * FROM EKKO INTO TABLE IT_EKKO WHERE EBELN = WK_EBELN
AND
LOEKZ NE 'X'.
IF SY-SUBRC EQ 0.
READ TABLE IT_EKKO INDEX 1.
WK_BSTYP = IT_EKKO-BSTYP.
ENDIF.
SELECT * FROM EKPO CLIENT SPECIFIED
INTO TABLE IT_EKPO WHERE
MANDT = SY-MANDT AND
EBELN = WK_EBELN AND LOEKZ NE 'X'.
SORT IT_EKPO BY EBELN EBELP.
IF WK_BSTYP = 'L'.
SELECT * FROM EKET CLIENT SPECIFIED
INTO TABLE IT_EKET WHERE
MANDT = SY-MANDT AND
EBELN = WK_EBELN.
IF SY-SUBRC EQ 0.
SORT IT_EKET BY EBELN EBELP ETENR.
LOOP AT IT_EKPO.
CLEAR WK_DIFF_QTY.
LOOP AT IT_EKET WHERE EBELN = IT_EKPO-EBELN
AND EBELP = IT_EKPO-EBELP
AND EINDT LE SY-DATUM.
WK_DIFF_QTY = WK_DIFF_QTY + IT_EKET-MENGE -
IT_EKET-WEMNG.
ENDLOOP.
IF WK_DIFF_QTY GT 0.
IT_TEMP_EKPO-EBELN = IT_EKET-EBELN.
IT_TEMP_EKPO-EBELP = IT_EKET-EBELP.
IT_TEMP_EKPO-MATNR = IT_EKPO-MATNR.
APPEND IT_TEMP_EKPO.
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF WK_BSTYP = 'F'.
SELECT * FROM EKET
CLIENT SPECIFIED
INTO TABLE IT_EKET
WHERE MANDT = SY-MANDT AND
EBELN = IT_EKPO-EBELN.
LOOP AT IT_EKPO.
CLEAR : WK_DIFF_QTY.
READ TABLE IT_EKET WITH KEY EBELN = IT_EKPO-EBELN
EBELP = IT_EKPO-EBELP.
IF SY-SUBRC EQ 0.
WK_DIFF_QTY = IT_EKPO-MENGE - IT_EKET-WEMNG.
ENDIF.
IF WK_DIFF_QTY GT 0.
IT_TEMP_EKPO-EBELN = IT_EKET-EBELN.
IT_TEMP_EKPO-EBELP = IT_EKET-EBELP.
IT_TEMP_EKPO-MATNR = IT_EKPO-MATNR.
APPEND IT_TEMP_EKPO.
ENDIF.
ENDLOOP.
ENDIF.
SORT IT_TEMP_EKPO BY EBELN EBELP.
PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OK_GO'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'GODYNPRO-PO_NUMBER'.
PERFORM BDC_FIELD USING 'GODYNPRO-PO_NUMBER'
WK_EBELN.
PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OK_GO'.
IF WK_EXCISE_IND = 'E'.
PERFORM BDC_FIELD USING 'J_1IEXHEAD-EXNUM'
WK_VBELN.
PERFORM BDC_FIELD USING 'J_1IEXHEAD-EXDAT'
WK_FKDAT.
PERFORM BDC_FIELD USING 'GOHEAD-LFSNR'
WK_VBELN.
ELSE.
PERFORM BDC_FIELD USING 'GOHEAD-LFSNR'
WK_VBELN.
ENDIF.
CLEAR : WK_CHAR_SNO.
WK_CHAR_SNO = WK_SNO.
CONDENSE WK_CHAR_SNO NO-GAPS.
PERFORM BDC_FIELD USING 'GOHEAD-BKTXT'
WK_CHAR_SNO.
LOOP AT IT_TEMP_TC1.
READ TABLE IT_TEMP_EKPO WITH KEY MATNR =
IT_TEMP_TC1-ITEMCODE.
IF SY-SUBRC EQ 0.
CLEAR V_INDEX.
V_INDEX = SY-TABIX.
CONDENSE V_INDEX NO-GAPS.
PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OK_GO'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'GODYNPRO-DETAIL_ZEILE'.
PERFORM BDC_FIELD USING 'GODYNPRO-DETAIL_ZEILE'
PERFORM BDC_FIELD USING 'GODYNPRO-DETAIL_ZEILE'
V_INDEX.
PERFORM BDC_DYNPRO USING 'SAPLMIGO' '0001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=OK_GO'.
PERFORM BDC_FIELD USING 'BDC_CURSOR'
'GOITEM-ERFMG'.
PERFORM BDC_FIELD USING 'GOITEM-ERFMG'
CLEAR V_QUANTITY.
V_QUANTITY = IT_TEMP_TC1-QUANTITY.
CONDENSE V_QUANTITY NO-GAPS.
PERFORM BDC_FIELD USING 'GOITEM-ERFMG'
V_QUANTITY.
PERFORM BDC_FIELD USING 'GOITEM-LSMNG'
V_QUANTITY.
perform bdc_field using 'GOITEM-LGOBE'
WK_LGORT.
ENDIF.
ENDLOOP.
CALL TRANSACTION 'MIGO' USING BDCDATA
MODE 'E'
UPDATE 'L'.
IF SY-SUBRC NE 0.
MESSAGE E003 WITH TEXT-003.
LOOP AT SCREEN.
SCREEN-INPUT = 1.
MODIFY SCREEN.
ENDLOOP.
ENDIF.
LEAVE PROGRAM.
ELSE.
CLEAR : WK_TOT_EXCISE.
IF NOT WK_EXCISE IS INITIAL.
LOOP AT IT_TEMP_TC1.
READ TABLE IT_EKPO WITH KEY MATNR = IT_TEMP_TC1-ITEMCODE.
IF SY-SUBRC EQ 0.
WK_TOT_EXCISE = WK_TOT_EXCISE +
( ( ( IT_EKPO-NETWR / IT_EKPO-MENGE ) * 16 / 100 )
IT_TEMP_TC1-QUANTITY ).
ENDIF.
ENDLOOP.
WK_DIFF = WK_EXCISE - WK_TOT_EXCISE.
IF WK_DIFF LE 0.
WK_DIFF = -1 * WK_DIFF.
ENDIF.
IF WK_DIFF GE 1.
WK_COMMENT = 'Difference in Excise. Please Check!'.
ENDIF.
ENDIF.
SELECT * FROM EKPO CLIENT SPECIFIED
INTO TABLE IT_EKPO WHERE
MANDT = SY-MANDT AND
EBELN = WK_EBELN.
IF SY-SUBRC EQ 0.
READ TABLE IT_EKPO INDEX 1.
WK_WERKS = IT_EKPO-WERKS.
ENDIF.
SELECT * FROM ZMMT001_GRN_GATE
CLIENT SPECIFIED
INTO TABLE IT_ZMMT01
WHERE MANDT = SY-MANDT AND
WERKS = WK_WERKS.
IF SY-SUBRC EQ 0.
SORT IT_ZMMT01 BY SERIAL DESCENDING.
READ TABLE IT_ZMMT01 INDEX 1.
WK_SNO = IT_ZMMT01-SERIAL + 1.
ELSE.
WK_SNO = 1.
ENDIF.
CLEAR WK_ZMMT01.
WK_ZMMT01-MANDT = SY-MANDT.
WK_ZMMT01-SERIAL = WK_SNO.
WK_ZMMT01-WERKS = WK_WERKS.
WK_ZMMT01-EBELN = WK_EBELN.
WK_ZMMT01-LIFNR = WK_LIFNR.
WK_ZMMT01-CHALNO = WK_CHALNO.
WK_ZMMT01-CHALDATE = WK_CHALDATE.
WK_ZMMT01-BILLNO = WK_VBELN.
WK_ZMMT01-BILLDATE = WK_FKDAT.
WK_ZMMT01-GRNUMBER = WK_GRNO.
WK_ZMMT01-GRDATE = WK_GRDATE.
WK_ZMMT01-VEHICLE = WK_VEHICLE.
WK_ZMMT01-CARRIER = WK_CARRIER.
WK_ZMMT01-FREIGHT = WK_FREIGHT.
WK_ZMMT01-MDOC = WK_MDOC.
WK_ZMMT01-DEPT = WK_DEPT.
WK_ZMMT01-PAYMODE = WK_MODE.
WK_ZMMT01-BASIC = WK_BASIC.
WK_ZMMT01-EXCISE = WK_EXCISE.
WK_ZMMT01-TAXAMT = WK_TAX.
WK_ZMMT01-APPVAL = WK_APPVAL.
WK_ZMMT01-CHALINV = WK_CHAL.
WK_ZMMT01-FORM38 = WK_FORM38.
WK_ZMMT01-COMMENTS = WK_COMMENT.
WK_ZMMT01-CDATE = SY-DATUM.
WK_ZMMT01-CTIME = SY-UZEIT.
WK_ZMMT01-PERSON = SY-UNAME.
IF WK_FKDAT+4(2) = '04' OR
WK_FKDAT+4(2) = '05' OR
WK_FKDAT+4(2) = '06' OR
WK_FKDAT+4(2) = '07' OR
WK_FKDAT+4(2) = '08' OR
WK_FKDAT+4(2) = '09' OR
WK_FKDAT+4(2) = '10' OR
WK_FKDAT+4(2) = '11' OR
WK_FKDAT+4(2) = '12'.
WK_DATE10(4) = WK_FKDAT0(4).
WK_DATE1+4(2) = '04'.
WK_DATE1+6(2) = '01'.
ELSEIF
WK_FKDAT+4(2) = '01' OR
WK_FKDAT+4(2) = '02' OR
WK_FKDAT+4(2) = '03'.
WK_FISYEAR = WK_FKDAT+0(4).
WK_FISYEAR = WK_FISYEAR - 1.
WK_CHAR_YEAR = WK_FISYEAR.
CONDENSE WK_CHAR_YEAR NO-GAPS.
WK_DATE1+0(4) = WK_CHAR_YEAR.
WK_DATE1+4(2) = '04'.
WK_DATE1+6(2) = '01'.
ELSE.
ENDIF.
nidhi
SELECT LIFNR ADRNR FROM LFA1 INTO TABLE IT_LFA1 WHERE LIFNR =
WK_ZMMT01-LIFNR.
SELECT ADDRNUMBER SMTP_ADDR FROM ADR6 INTO TABLE IT_ADR6 FOR
ALL ENTRIES IN IT_LFA1 WHERE ADDRNUMBER = IT_LFA1-ADRNR.
SELECT SINGLE * FROM ZMMT001_GRN_GATE
CLIENT SPECIFIED
WHERE MANDT = SY-MANDT AND
WERKS = WK_WERKS AND
LIFNR = WK_LIFNR AND
BILLNO = WK_VBELN AND
BILLDATE GE WK_DATE1.
IF SY-SUBRC EQ 0.
MESSAGE E003 WITH TEXT-006.
ENDIF.
CLEAR IT_ZMMT02.
REFRESH IT_ZMMT02.
LOOP AT IT_TEMP_TC1.
IT_ZMMT02-MANDT = SY-MANDT.
IT_ZMMT02-SERIAL = WK_SNO.
IT_ZMMT02-WERKS = WK_WERKS.
IT_ZMMT02-EBELN = WK_EBELN.
IT_ZMMT02-ITEMCODE = IT_TEMP_TC1-ITEMCODE.
IT_ZMMT02-DESCRIPTION = IT_TEMP_TC1-ITEMNAME.
IT_ZMMT02-QUANTITY = IT_TEMP_TC1-QUANTITY.
IT_ZMMT02-EXCISE = IT_TEMP_TC1-EXCISE.
APPEND IT_ZMMT02.
CLEAR IT_ZMMT02.
ENDLOOP.
IF IT_ZMMT02[] IS INITIAL.
MESSAGE E003 WITH TEXT-007.
ENDIF.
IF SY-UNAME = 'GATE1010' AND WK_WERKS NE '1010'.
MESSAGE E003 WITH TEXT-008.
ELSEIF SY-UNAME = 'GATE1020' AND WK_WERKS NE '1020'.
MESSAGE E003 WITH TEXT-008.
ELSEIF SY-UNAME = 'GATE1030' AND WK_WERKS NE '1030'.
MESSAGE E003 WITH TEXT-008.
ELSEIF SY-UNAME = 'GATE1040' AND WK_WERKS NE '1040'.
MESSAGE E003 WITH TEXT-008.
ELSEIF SY-UNAME = 'GATE1050' AND WK_WERKS NE '1050'.
MESSAGE E003 WITH TEXT-008.
ELSEIF SY-UNAME = 'GATE1060' AND WK_WERKS NE '1060'.
MESSAGE E003 WITH TEXT-008.
ELSEIF SY-UNAME = 'ABAP' AND WK_WERKS NE 'ABAP'.
MESSAGE E003 WITH TEXT-008.
ELSEIF SY-UNAME = 'GATE1070' AND WK_WERKS NE '1070'.
MESSAGE E003 WITH TEXT-008.
ELSEIF SY-UNAME = 'GATE1080' AND WK_WERKS NE '1080'.
MESSAGE E003 WITH TEXT-008.
ENDIF.
INSERT ZMMT001_GRN_GATE FROM WK_ZMMT01.
INSERT ZMMT002_GRN_ITEM FROM TABLE IT_ZMMT02.
IF SY-SUBRC EQ 0.
COMMIT WORK.
MESSAGE I002 WITH WK_SNO.
********nidhi*******************************************************
CALL SCREEN 1001.
CLEAR WK_LIFNR.
CLEAR WK_EBELN.
CLEAR WK_NAME.
CLEAR WK_SCHNO.
CLEAR WK_CHALNO.
CLEAR WK_CHALDATE.
CLEAR WK_VBELN.
CLEAR WK_FKDAT.
CLEAR WK_GRNO.
CLEAR WK_GRDATE.
CLEAR WK_VEHICLE.
CLEAR WK_CARRIER.
CLEAR WK_FREIGHT.
CLEAR WK_MDOC.
CLEAR WK_DEPT.
CLEAR WK_MODE.
CLEAR WK_BASIC.
CLEAR WK_EXCISE.
CLEAR WK_TAX.
CLEAR WK_APPVAL.
CLEAR WK_CHAL.
CLEAR WK_FORM38.
REFRESH IT_TEMP_TC1.
CLEAR WK_FISYEAR.
CLEAR WK_DATE1.
CLEAR WK_CHAR_YEAR.
CALL TRANSACTION 'ZMMI001'.
ELSE.
ROLLBACK WORK.
MESSAGE E003 WITH TEXT-006.
ENDIF.
ENDIF.
ELSE.
MESSAGE E009 WITH TEXT-014.
ENDIF.
WHEN 'WK_EXIT'.
WHEN 'WK_CLEAR'.
CLEAR WK_LIFNR.
CLEAR WK_EBELN.
CLEAR WK_NAME.
CLEAR WK_SCHNO.
CLEAR WK_CHALNO.
CLEAR WK_CHALDATE.
CLEAR WK_VBELN.
CLEAR WK_FKDAT.
CLEAR WK_GRNO.
CLEAR WK_GRDATE.
CLEAR WK_VEHICLE.
CLEAR WK_CARRIER.
CLEAR WK_FREIGHT.
CLEAR WK_MDOC.
CLEAR WK_DEPT.
CLEAR WK_MODE.
CLEAR WK_BASIC.
CLEAR WK_EXCISE.
CLEAR WK_TAX.
CLEAR WK_APPVAL.
CLEAR WK_CHAL.
CLEAR WK_FORM38.
REFRESH IT_TEMP_TC1 .
CLEAR WK_FISYEAR.
CLEAR WK_DATE1.
CLEAR WK_CHAR_YEAR.
WHEN 'DELETE'.
DELETE IT_TEMP_TC1 WHERE SEL = 'X'.
ENDCASE.
ENDMODULE. " USER_COMMAND_1000 INPUT
Start new screen *
FORM BDC_DYNPRO USING PROGRAM DYNPRO.
CLEAR BDCDATA.
BDCDATA-PROGRAM = PROGRAM.
BDCDATA-DYNPRO = DYNPRO.
BDCDATA-DYNBEGIN = 'X'.
APPEND BDCDATA.
ENDFORM. "BDC_DYNPRO
Insert field *
FORM BDC_FIELD USING FNAM FVAL.
IF FVAL <> NODATA.
CLEAR BDCDATA.
BDCDATA-FNAM = FNAM.
BDCDATA-FVAL = FVAL.
APPEND BDCDATA.
ENDIF.
ENDFORM. "BDC_FIELD
*& Module STATUS_1000 OUTPUT
text
MODULE STATUS_1000 OUTPUT.
SET PF-STATUS 'GRN'.
SET TITLEBAR 'GRN'.
PROGNAME = SY-REPID.
DYNNUM = SY-DYNNR.
CLEAR: FIELD_VALUE, DYNPRO_VALUES.
FIELD_VALUE-FIELDNAME = 'IT_TC1-ITEMCODE'.
APPEND FIELD_VALUE TO DYNPRO_VALUES.
FIELD_VALUE-FIELDNAME = 'WK_EBELN'.
APPEND FIELD_VALUE TO DYNPRO_VALUES.
FIELD_VALUE-FIELDNAME = 'WK_LIFNR'.
APPEND FIELD_VALUE TO DYNPRO_VALUES.
LOOP AT SCREEN.
IF SCREEN-NAME NE 'WK_COMMENT'.
SCREEN-INPUT = 1.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR
SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR
SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR
SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR SY-UNAME =
'ABAP' ).
LOOP AT SCREEN.
IF SCREEN-NAME = 'WK_SNO' OR
SCREEN-NAME = 'SNO' OR
SCREEN-NAME = 'WK_COMMENT' .
SCREEN-INVISIBLE = 1.
SCREEN-ACTIVE = 0.
SCREEN-INPUT = 0.
SCREEN-OUTPUT = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
IF WK_LIFNR IS INITIAL.
SET CURSOR FIELD 'WK_LIFNR'.
ELSEIF WK_EBELN IS INITIAL.
SET CURSOR FIELD 'WK_EBELN'.
ELSEIF WK_VBELN IS INITIAL.
SET CURSOR FIELD 'WK_VBELN'.
ELSEIF WK_FKDAT IS INITIAL.
SET CURSOR FIELD 'WK_FKDAT'.
ENDIF.
ELSE.
IF NOT WK_SNO IS INITIAL.
IF SY-UNAME = 'STORE1010'.
WK_WERKS = '1010'.
ELSEIF SY-UNAME = 'STORE1020'.
WK_WERKS = '1020'.
ELSEIF SY-UNAME = 'STORE1030'.
WK_WERKS = '1030'.
ELSEIF SY-UNAME = 'STORE1040'.
WK_WERKS = '1040'.
ELSEIF SY-UNAME = 'STORE1050'.
WK_WERKS = '1050'.
ELSEIF SY-UNAME = 'STORE1060'.
WK_WERKS = '1060'.
ELSEIF SY-UNAME = 'STORE1070'.
WK_WERKS = '1070'.
ELSEIF SY-UNAME = 'STORE1080'.
WK_WERKS = '1080'.
ENDIF.
SELECT SINGLE * FROM ZMMT001_GRN_GATE INTO WK_ZMMT01
WHERE SERIAL = WK_SNO AND
WERKS = WK_WERKS.
IF SY-SUBRC EQ 0.
WK_WERKS = WK_ZMMT01-WERKS.
WK_EBELN = WK_ZMMT01-EBELN.
WK_LIFNR = WK_ZMMT01-LIFNR.
WK_CHALNO = WK_ZMMT01-CHALNO.
WK_CHALDATE = WK_ZMMT01-CHALDATE.
WK_VBELN = WK_ZMMT01-BILLNO.
WK_FKDAT = WK_ZMMT01-BILLDATE.
WK_GRNO = WK_ZMMT01-GRNUMBER.
WK_GRDATE = WK_ZMMT01-GRDATE.
WK_VEHICLE = WK_ZMMT01-VEHICLE.
WK_CARRIER = WK_ZMMT01-CARRIER.
WK_FREIGHT = WK_ZMMT01-FREIGHT.
WK_MDOC = WK_ZMMT01-MDOC.
WK_DEPT = WK_ZMMT01-DEPT.
WK_MODE = WK_ZMMT01-PAYMODE.
WK_BASIC = WK_ZMMT01-BASIC.
WK_EXCISE = WK_ZMMT01-EXCISE.
WK_TAX = WK_ZMMT01-TAXAMT.
WK_APPVAL = WK_ZMMT01-APPVAL.
WK_CHAL = WK_ZMMT01-CHALINV.
WK_FORM38 = WK_ZMMT01-FORM38.
WK_COMMENT = WK_ZMMT01-COMMENTS.
SELECT * FROM ZMMT002_GRN_ITEM INTO TABLE IT_ZMMT02
WHERE SERIAL = WK_SNO AND
WERKS = WK_WERKS.
IF SY-SUBRC EQ 0.
CLEAR IT_TEMP_TC1.
REFRESH IT_TEMP_TC1.
LOOP AT IT_ZMMT02.
IT_TEMP_TC1-SNO = SY-TABIX.
IT_TEMP_TC1-ITEMCODE = IT_ZMMT02-ITEMCODE.
IT_TEMP_TC1-ITEMNAME = IT_ZMMT02-DESCRIPTION.
IT_TEMP_TC1-QUANTITY = IT_ZMMT02-QUANTITY.
APPEND IT_TEMP_TC1.
CLEAR IT_TEMP_TC1.
ENDLOOP.
ENDIF.
ENDIF.
LOOP AT SCREEN.
IF ( SCREEN-NAME NE 'WK_SNO' ) AND
( SCREEN-NAME NE 'WK_SAVE' ) AND
( SCREEN-NAME NE 'WK_CLEAR' ) AND
( SCREEN-NAME NE 'WK_EXIT' ).
SCREEN-INPUT = 0.
ENDIF.
MODIFY SCREEN.
ENDLOOP.
LOOP AT TC1-COLS INTO COLS WHERE INDEX GT 0.
COLS-SCREEN-INPUT = '0'.
MODIFY TC1-COLS FROM COLS INDEX SY-TABIX.
ENDLOOP.
ENDIF.
ENDIF.
WK_DATE = SY-DATUM.
WK_TIME = SY-UZEIT.
TC1-LINES = 20.
ENDMODULE. " STATUS_1000 OUTPUT
*& Module EXIT_1000 INPUT
text
MODULE EXIT_1000 INPUT.
CASE SY-UCOMM.
WHEN 'BACK' OR 'CANCEL' OR 'EXIT' OR 'WK_EXIT'.
LEAVE PROGRAM.
ENDCASE.
ENDMODULE. " EXIT_1000 INPUT
*& Module ITEM_CODE INPUT
text
MODULE ITEM_CODE INPUT.
REFRESH : VALUES_TAB.
CLEAR : VALUES_TAB.
IF ( SY-UNAME = 'GATE1020' OR
SY-UNAME = 'GATE1010' OR
SY-UNAME = 'GATE1030' OR
SY-UNAME = 'GATE1040' OR
SY-UNAME = 'GATE1050' OR
SY-UNAME = 'GATE1060' OR
SY-UNAME = 'GATE1070' OR
SY-UNAME = 'STORE1020' OR
SY-UNAME = 'STORE1030' OR
SY-UNAME = 'STORE1040' OR
SY-UNAME = 'STORE1050' OR
SY-UNAME = 'STORE1060' OR
SY-UNAME = 'STORE1070' OR
SY-UNAME = 'STORE1010' OR
SY-UNAME = 'ABAP' ).
SELECT * FROM EKKO CLIENT SPECIFIED
INTO TABLE IT_EKKO WHERE
MANDT = SY-MANDT AND
EBELN = WK_EBELN AND
LOEKZ NE 'X'.
IF SY-SUBRC EQ 0.
READ TABLE IT_EKKO INDEX 1.
WK_BSTYP = IT_EKKO-BSTYP.
WK_BSART = IT_EKKO-BSART.
ENDIF.
if wk_bsart = 'ZLR'.
SELECT * FROM EKPO CLIENT SPECIFIED
INTO TABLE IT_EKPO WHERE
MANDT = SY-MANDT AND
EBELN = WK_EBELN AND
LOEKZ NE 'X'.
SORT IT_EKPO BY EBELN EBELP.
IF WK_BSTYP = 'L' AND WK_BSART = 'ZLR'.
SELECT * FROM EKET CLIENT SPECIFIED
INTO TABLE IT_EKET WHERE
MANDT = SY-MANDT AND
EBELN = WK_EBELN.
IF SY-SUBRC EQ 0.
SORT IT_EKET BY EBELN EBELP ETENR.
LOOP AT IT_EKPO.
CLEAR WK_DIFF_QTY.
LOOP AT IT_EKET WHERE EBELN = IT_EKPO-EBELN
AND EBELP = IT_EKPO-EBELP
AND EINDT LE SY-DATUM.
WK_DIFF_QTY = WK_DIFF_QTY + IT_EKET-MENGE - IT_EKET-WEMNG.
ENDLOOP.
IF WK_DIFF_QTY GT 0.
VALUES_TAB-TXZ01 = IT_EKPO-TXZ01.
VALUES_TAB-MENGE = WK_DIFF_QTY.
VALUES_TAB-MATNR = IT_EKPO-MATNR.
APPEND VALUES_TAB.
ENDIF.
ENDLOOP.
ENDIF.
ELSEIF WK_BSTYP = 'F'.
SELECT mseg~mblnr
mseg~mjahr
mseg~zeile
mseg~bwart
mseg~matnr
mseg~ebeln
mseg~ebelp
mkpf~budat
mseg~menge INTO TABLE it_mseg
FROM mkpf INNER JOIN mseg
ON mkpfmblnr EQ msegmblnr
AND mkpfmjahr EQ msegmjahr
FOR ALL entries IN it_ekpo
WHERE bwart IN ('101','122','102')
AND werks = it_ekpo-werks
AND ebeln = it_ekpo-ebeln
AND ebelp = it_ekpo-ebelp.
SELECT * FROM EKET CLIENT SPECIFIED
INTO TABLE IT_EKET
WHERE MANDT = SY-MANDT AND
EBELN = IT_EKPO-EBELN.
LOOP AT IT_EKPO.
CLEAR : WK_DIFF_QTY.
wk_101_qty,
wk_102_qty,
wk_122_qty.
LOOP AT it_mseg WHERE ebeln = it_ekpo-ebeln AND
ebelp = it_ekpo-ebelp.
IF it_mseg-bwart = '101'.
wk_101_qty = wk_101_qty + it_mseg-menge.
ENDIF.
IF it_mseg-bwart = '102'.
wk_102_qty = wk_102_qty + it_mseg-menge.
ENDIF.
IF it_mseg-bwart = '122'.
wk_122_qty = wk_122_qty + it_mseg-menge.
ENDIF.
ENDLOOP.
if not it_mseg[] is initial.
wk_diff_qty = it_ekpo-menge - wk_101_qty
- wk_102_qty - wk_122_qty.
else.
wk_diff_qty = it_ekpo-menge.
endif.
READ TABLE IT_EKET WITH KEY EBELN = IT_EKPO-EBELN
EBELP = IT_EKPO-EBELP.
IF SY-SUBRC EQ 0.
WK_DIFF_QTY = IT_EKPO-MENGE - IT_EKET-WEMNG.
ENDIF.
IF wk_diff_qty LE it_ekpo-menge.
IF WK_DIFF_QTY GT 0.
VALUES_TAB-TXZ01 = IT_EKPO-TXZ01.
VALUES_TAB-MENGE = WK_DIFF_QTY.
VALUES_TAB-MATNR = IT_EKPO-MATNR.
APPEND VALUES_TAB.
ENDIF.
ENDLOOP.
ENDIF.
ELSE.
SELECT TXZ01
MATNR FROM EKPO CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB
WHERE MANDT = SY-MANDT AND
EBELN = WK_EBELN AND
LOEKZ NE 'X'.
ENDIF.
ELSE.
SELECT TXZ01
MATNR FROM EKPO CLIENT SPECIFIED
INTO CORRESPONDING FIELDS OF TABLE VALUES_TAB
WHERE MANDT = SY-MANDT AND
EBELN = WK_EBELN AND
LOEKZ NE 'X'.
ENDIF.
SORT VALUES_TAB BY TXZ01.
CALL FUNCTION 'F4IF_INT_TABLE_VALUE_REQUEST'
EXPORTING
RETFIELD = 'IT_TC1-ITEMCODE'
DYNPPROG = PROGNAME
DYNPNR = DYNNUM
DYNPROFIELD = 'IT_TC1-ITEMCODE'
VALUE_ORG = 'S'
TABLES
VALUE_TAB = VALUES_TAB
RETURN_TAB = RETURN_TAB
EXCEPTIONS
PARAMETER_ERROR = 1
NO_VALUES_FOUND = 2
OTHERS = 3.
*BREAK-POINT.
IF SY-SUBRC = 0.
READ TABLE RETURN_TAB INDEX 1.
SELECT SINGLE MAKTX FROM MAKT CLIENT SPECIFIED
INTO WK_MAKTX WHERE
MANDT = SY-MANDT AND
MATNR = RETURN_TAB-FIELDVAL AND SPRAS = SY-LANGU.
ENDIF.
ENDMODULE. " ITEM_CODE INPUT
*& Module CHECK_INPUT INPUT
text
MODULE CHECK_INPUT INPUT.
CLEAR : EKKO-EBELN , EKKO-LIFNR.
SELECT SINGLE EBELN LIFNR FROM EKKO CLIENT SPECIFIED
INTO (EKKO-EBELN , EKKO-LIFNR ) WHERE
MANDT = SY-MANDT AND
EBELN = WK_EBELN.
IF SY-SUBRC NE 0 AND ( SY-UNAME = 'GATE1010' OR
SY-UNAME = 'GATE1020' OR
SY-UNAME = 'GATE1030' OR
SY-UNAME = 'GATE1040' OR
SY-UNAME = 'GATE1050' OR
SY-UNAME = 'GATE1060' OR
SY-UNAME = 'GATE1070' OR
SY-UNAME = 'GATE1080' OR SY-UNAME = 'ABAP' ).
IF WK_EBELN NE SPACE.
MESSAGE E003 WITH TEXT-001.
ENDIF.
ELSE.
WK_LIFNR = EKKO-LIFNR.
CLEAR : LFA1-NAME1.
SELECT SINGLE NAME1 FROM LFA1 CLIENT SPECIFIED
INTO LFA1-NAME1 WHERE
MANDT = SY-MANDT AND
LIFNR = WK_LIFNR.
IF SY-SUBRC EQ 0.
WK_NAME = LFA1-NAME1.
ENDIF.
ENDIF.
IF ( SY-UNAME = 'GATE1010' OR SY-UNAME = 'GATE1020' OR
SY-UNAME = 'GATE1030' OR SY-UNAME = 'GATE1040' OR
SY-UNAME = 'GATE1050' OR SY-UNAME = 'GATE1060' OR
SY-UNAME = 'GATE1070' OR SY-UNAME = 'GATE1080' OR SY-UNAME =
'ABAP' ).
IF wk_vbeln IS INITIAL.
set cursor field wk_vbeln.
MESSAGE E003 WITH text-009.
ENDIF.
IF wk_fkdat IS INITIAL.
MESSAGE E003 WITH text-010.
ENDIF.
ENDIF.
IF ( SY-UNAME = 'STORE1010' OR SY-UNAME = 'STORE1020' OR
SY-UNAME = 'STORE1030' OR SY-UNAME = 'STORE1040' OR
SY-UNAME = 'STORE1050' OR SY-UNAME = 'STORE1060' OR
SY-UNAME = 'STORE1070' OR SY-UNAME = 'STORE1080' ).
CLEAR : ZMMT001_GRN_GATE.
SELECT SINGLE EBELN CDATE FROM ZMMT001_GRN_GATE
CLIENT SPECIFIED
INTO (ZMMT001_GRN_GATE-EBELN ,
ZMMT001_GRN_GATE-CDATE )
WHERE MANDT = SY-MANDT AND
SERIAL = WK_SNO AND WERKS = WK_WERKS.
IF SY-SUBRC EQ 0.
SELECT MBLNR
MJAHR
BUDAT
BKTXT FROM MKPF CLIENT SPECIFIED
INTO TABLE IT_TEMP_MKPF
WHERE MANDT = SY-MANDT AND
BUDAT = ZMMT001_GRN_GATE-CDATE
AND BKTXT = WK_SNO.
IFHi,
after calling you programm and get the message call transaction su53. That willl display the authorization that you need.
Hope this helps.
Regards
Bernd
Maybe you are looking for
-
Error in EJB running on WebSphere Application Server v6
Hi, I am getting the following exception when a transaction ends in Stateless Session EJB: [8/4/05 13:04:00:396 CDT] 0000004d LocalTranCoor W WLTC0033W: Resource imssDS rolled back in cleanup of LocalTransactionContainment. [8/4/05 13:04:00:406 CDT
-
Can I change the XY Graph to trans appearance ???? so I can see any thing which behind it.
-
Why can't I get a PID to tune without having an offset from setpoint?
I am using the basic PID algorithm supplied in the PID toolkit and after calculating the terms as described in the manual, my system controls quite well. However, there is about a 2-3 degree offset below setpoint on my heater. I am just starting to u
-
Two portals (same SID), one R/3 System - changing portal client number?
We have one R/3 system but two portals. One is EP6, the other is EP7 and is due to replace EP6. On installation of version 7.0 we had to keep the SID the same on both portals. Now we are having trouble with SSO into R/3 as the ACL in STRUSTSSO2 wil
-
My son was recently at a website which planted a Quicktime icon down near the clock in the taskbar... I found no way to delete the icon. I even tried installing and reinstalling Quicktime, still the icon remains. DOES ANYONE KNOW HOW TO GET RID OF TH