Problems selecting bsis data
Hi all,
I'm taking a data from table bsis and bsas but it's make my program run very slow... When I check for the problem, I found out that when reading from table bsis was very slow. Is there any ways or solution for this problem? Here is my coding in selection from bsis. Any suggestion or help needed here....
SELECT b~monat
b~hkont
b~gsber
b~geber
b~bschl
b~shkzg
b~budat
b~dmbtr
b~fkber
b~blart
b~belnr
APPENDING CORRESPONDING FIELDS OF TABLE itaba
FROM bsis AS b
INNER JOIN ska1 AS c ON c~ktopl = 'FGCA' AND
csaknr = bhkont
WHERE b~bukrs = p_bukrs
AND b~gjahr = p_gjahr
AND b~budat LE s_budat-high
AND b~monat LE p_monat
AND b~hkont IN s_hkont
and b~gsber in s_gsber.
thanks,
saiful.
Try using the following code.
TYPES: BEGIN OF ty_bsis,
hkont TYPE bsis-hkont,
monat TYPE bsis-monat,
gsber TYPE bsis-gsber,
geber TYPE bsis-geber,
bschl TYPE bsis-bschl,
shkzg TYPE bsis-shkzg,
budat TYPE bsis-budat,
dmbtr TYPE bsis-dmbtr,
fkber TYPE bsis-fkber,
blart TYPE bsis-blart,
belnr TYPE bsis-belnr,
del(1) TYPE c ,
END OF ty_bsis,
BEGIN OF ty_ska1,
saknr TYPE ska1-saknr,
END OF ty_ska1.
DATA: w_bsis TYPE ty_bsis ,
w_index TYPE sy-tabix,
w_found(1) TYPE c ,
t_bsis TYPE TABLE OF ty_bsis ,
t_bsis_tmp TYPE TABLE OF ty_bsis ,
t_ska1 TYPE HASHED TABLE OF ty_ska1
WITH UNIQUE KEY saknr.
SELECT hkont
monat
gsber
geber
bschl
shkzg
budat
dmbtr
fkber
blart
belnr
FROM bsis
INTO TABLE t_bsis
WHERE bukrs EQ p_bukrs
AND hkont IN s_hkont
AND gjahr EQ p_gjahr
AND budat IN s_budat
AND monat LE p_monat
AND gsber IN s_gsber.
IF sy-subrc EQ 0.
t_bsis_tmp[] = t_bsis[].
SORT t_bsis_tmp BY hkont.
DELETE ADJACENT DUPLICATES FROM t_bsis_tmp COMPARING hkont.
SELECT saknr
FROM ska1
INTO TABLE t_ska1
FOR ALL ENTRIES IN t_bsis_tmp
WHERE ktopl EQ 'FGCA'
AND saknr EQ t_bsis_tmp-hkont.
LOOP AT t_bsis INTO w_bsis.
w_index = sy-tabix.
AT NEW hkont.
READ TABLE t_ska1 WITH KEY saknr = w_bsis-hkont
TRANSPORTING NO FIELDS.
IF sy-subrc EQ 0.
w_found = 'X'.
ELSE.
CLEAR w_found.
ENDIF.
ENDAT.
CASE w_found.
WHEN space.
w_bsis-del = 'X'.
MODIFY t_bsis FROM w_bsis INDEX w_index TRANSPORTING del.
ENDCASE.
ENDLOOP.
DELETE t_bsis WHERE del EQ 'X'.
ENDIF.
Similar Messages
-
Facing problem with a date column in select query
Hi,
I am facing problem with a date column. Below is my query and its fainling with " invalid number format model" .
Query: SELECT *
FROM EMP
WHERE trunc(LAST_UPDATED) >= to_date(to_char(22-05-2009,'dd-mm-yyyy'),'dd-mm-yyyy')
LAST_UPDATED column is "DATE" data type.
Please help me ThanksRadhakrishna Sarma wrote:
SeánMacGC wrote:
WHERE LAST_UPDATED >= to_date('22-05-2009','dd-mm-yyyy');
You do not need the TRUNC here in any case.
I don't think so. What if the user wants only data for 22nd May and the table has records with date later than 22nd also? In that case your query willl not work. In order for the Index to work, I think the query can be written like this I think Sean is right though. Use of TRUNC Function is quiet useless based on the condition given here, since the to_date Function used by OP will always point to midnight of the specified date, in this case 22-05-2009 00:00:00.
Regards,
Jo
Edit: I think Sean proved his point... ;) -
i am trying to find out details about purchase orders that were generated on 10th of january 2006.
I fire following query to get the job done. But there is a problem with this query
It does show records for po's generated on 10th jan, but also includes records for 9th jan.
I can use date 8th of jan along with time parameter 23:59:59.
But i don't think it is a correct approach. Can anybody pls give an alternative for this problem.
select * from purchase_order where po_date > '09-jan-2006' and po_date<'11-jan-
2006'select * from purchase_order where po_date > '09-jan-2006' and po_date<'11-jan-2006' When you said '09-jan-2006' is same as '09-jan-2006 00:00:00', so you will take all row which have '09-jan-2006' with a time after midnight.
You can use trunc :
select * from purchase_order where trunc(po_date)=to_date('100106','DDMMYY');Nicolas. -
PROBLEM WITH MY DATE BETWEEN CLAUSE IN SELECT QUERY
WHEN I RUN THE CODE IT'S FETCHING DATA FROM 2007,2008,2009.
SELECT ERDAT VBELN NETWR
FROM VBRK INTO CORRESPONDING FIELDS OF TABLE IT_VBRK
WHERE ERDAT BETWEEN '01.11.2008' AND '30.11.2008'.
PLEASE GIVE ME A SOLUTION GUYS.Hi, Zubaer,
Please Don't Use All Caps in Subject and Body Text too
Have a look at [Rules of Engagement|https://www.sdn.sap.com/irj/scn/wiki?path=/display/home/rulesofEngagement]
Under Heading
- Use a Good Subject Line
Do not use words in capital letters
Use the following way. it will solve out your Problem,
SELECT erdat vbeln netwr
FROM vbrk INTO CORRESPONDING FIELDS OF TABLE it_vbrk
WHERE erdat BETWEEN '20081101' AND '20081130'.
Best Regards,
Faisal -
Extraction problem - selection conditions for data load using abap program
Hi All,
I have a problem loading data over a selected period where the selection of date range is done using ABAP routine (type 6). Here though in the request header tab in monitor screen i'm able to see the selection date range populated correctly, no records are being extracted. But if i delete the abap filter and directly give the same date range for selection we are able to extract data. if any body has faced similar problem and have a solution for it please help me with yur suggestion.
Thanks,
nithin.It seems the the data range is not properly set in the routine.
You can check the value of selection period generated by routine in the data selection tab-> execute button is there .
Click it to to test the selection values generated by the ABAP routine..
If the value here seems correct one then paste the code of the routine that u have written with brief logic details that u have applied.
Sonal..... -
Since last week or 2 weeks ago, some of our users (both Batam and Singapore) here encountered a problem where they are not able to browse the Internet on their BB as they used to.
Example :
I did a test to browse on their BB
www.cnn.com
they will see below error:
“Unable to connect to the selected mobile data service, please try again later.
If the problem persists please contact your administrator “
However if we use ‘Google’ or ‘Yahoo’ search on the BB and entered ‘CNN’ and run a search on it.
We are able to open the CNN website – from the link result search by Yahoo or Google
It’s also applicable to other websites too.
Any idea?Hi thatemailguy,
Are the users on a BlackBerry Enterprise Server?
Thanks
-CptS
Come follow your BlackBerry Technical Team on twitter! @BlackBerryHelp
Be sure to click Kudos! for those who have helped you.Click Solution? for posts that have solved your issue(s)! -
Cannot select a Date in the 2nd week of any month from "Month View"
Looking for some help with a strange problem that has started within the last day or 2. In Calendar, under the Month view, it will not allow me to select a date in the current week (or the second Week dates in ANY Month for that matter i.e. 6-8-08 thru 6-14-08, 8-3-08 thru 8-9-08, 4-6-08 thru 4-12-08). It skips from the 1st week of June (6-1-08 thru 6-7-08), to the 3rd and 4th weeks of June (6-15-08 thru the end of the month). It is like it is not recognizing where my finger is pointing. I can access the current week through the list view and day view, and it will allow me to post an event by choosing the current week in the add option, but will not let me pick that date to view it once it has been scheduled. The dot shows up, and it shows on list view, but cannot get to the date by selecting it in month view. That section of my phone screen will let me access other applications and recognize where I am touching, so I don't believe it is a sensor issue. I have tried rebooting, but it has not helped. Any ideas out there? Please let me know. Thank You! for any guidance.
Clearwater Randy,
If the screen is only not responding in that particular application, you may want to first do a reset. To reset, press and hold the Sleep/Wake button and the Home button at the same time for at least ten seconds, until the Apple logo appears.
If that does not resolve your issue, try restoring in iTunes. To restore, connect your iPhone into iTunes and click Restore on the Summary page. Note: All of your information will be erased from the iPhone, so make sure to have a backup of important information on your computer before restoring.
Hope this helps,
Jennifer B. -
Problem getting correct data from MS Access after doing an Update
Hi all,
I have a problem getting correct data after doing an update. This is the scenario
I am selecting some(Eg: All records where Column X = �7� ) records and update a column with a particular value (SET Column X = �c� ) in all these records by going through a while loop. In the while loop I add these records to a vector too, and pass it as the return value.
After getting this return value I go through a for loop and get each record one by one from the DB and check if my previous update has actually happened. Since No errors were caught while updating DB, I assume all records are updated properly but my record set shows one after another as if it has not been updated. But if I open the DB it is actually updated.
This does not happen to all records, always it shows like this
1st record Mode = �c�
2nd record Mode = �7�
3st record Mode = �c�
4nd record Mode = �7�
9th record Mode = �c�
10th record Mode = �7�
I am relatively new to java and this is someone elses code that I have to modify,So I am not sure if there some thing wrong in the code too
//Here is the method that gets records and call to update and add to vector
public static Vector getCanceledWorkOrders() throws CSDDBException{
//Variable declaration
try {
objDBConn = DBHandler.getCSDBCon();
strSQL = "SELECT bal bla WHERE [Detailed Mode])=?)";
objStmt = objDBConn.prepareStatement(strSQL);
objStmt.setString(1, '7');
objWOPRs = objStmt.executeQuery();
while (objWOPRs.next()) {
//Add elements to a vector by getting from result set
//updating each record as PROCESSING_CANCELLED_WO(c)
iRetVal = WorkOrderDetailingPolicy.updateRecordStatus(objPWODP.iWorkOrderNumber, objPWODP.strPersonInformed, EMSConstants.PROCESSING_CANCELLED_WO);
if (iRetVal == -1) {
throw new NewException("Updating failed");
catch (Exception e) {
vecWONumbers = null;
throw new CSDDBException(e.getMessage());
}finally{
try {
objWOPRs.close();
objStmt.close();
DBHandler.releaseCSDBCon(objDBConn);
catch (Exception ex) {}
//return vector
//here is the code that actually updates the records
public static int updateRecordStatus(int iWONumber, String strPerInformed , String strStatus) throws CSDDBException{
PreparedStatement objStmt = null;
Connection objDBConn = null;
String strSQL = null;
int iRetVal = -1;
try{
objDBConn = DBHandler.getCSDBCon();
objDBConn.setAutoCommit(false);
strSQL = "UPDATE Table SET [Detailed Mode] = ? WHERE bla bla";
objStmt = objDBConn.prepareStatement(strSQL);
objStmt.setString(1, strStatus);
objStmt.execute();
objDBConn.commit();
iRetVal = 1;
}catch(Exception e){
iRetVal = -1;
}finally{
try{
objStmt.close();
DBHandler.releaseCSDBCon(objDBConn);
}catch(Exception ex){}
return iRetVal;
//Here is the code that call the records again
public static WorkOrderDetailingPolicy getWorkOrders(int iWorkOrderNo) throws CSDDBException{
Connection objDBConn = null;
PreparedStatement objStmt = null;
ResultSet objWOPRs = null;
WorkOrderDetailingPolicy objPWODP = null;
String strSQL = null;
try {
objDBConn = DBHandler.getCSDBCon();
strSQL = "SELECT * FROM [Work Order Detailing] WHERE [Work Order No] = ?";
objStmt = objDBConn.prepareStatement(strSQL);
objStmt.setInt(1, iWorkOrderNo);
objWOPRs = objStmt.executeQuery();
if (objWOPRs.next()) {
objPWODP = new WorkOrderDetailingPolicy();
objPWODP.iWorkOrderNumber = objWOPRs.getInt("Work Order No");
//......Get Record values
catch (Exception e) {
objPWODP = null;
throw new CSDDBException(e.getMessage());
}finally{
try {
objWOPRs.close();
objStmt.close();
DBHandler.releaseCSDBCon(objDBConn);
catch (Exception ex) {}
return objPWODP;
}Hello,
Can you put an example of your problem online?
Are you sure you're not having problems with case sensitive data?
Thanks,
Dimitri -
Problem with passing date parameters in cursor
Is there any problem in passing date parameters and like clause as below
CURSOR eftcursor(start_date DATE, end_date DATE, where_clause varchar2) IS
select * from r_records
where created_date between start_date and end_date and description like where_clause;
and in the open statement
select to_date('01/06/2010 00:00:00', 'dd/mm/yyyy hh24:mi:ss') into startDate from dual;
select to_date('01/07/2010 00:00:00', 'dd/mm/yyyy hh24:mi:ss') into endDate from dual;
str := '%something%aaaaa%';
open eftcursor(startDate ,endDate , str);
Do i need to do any kind of conversion in the cursor where clause or when i am passing the parameter in open statement.Almora wrote:
Do i need to do any kind of conversion in the cursor where clause or when i am passing the parameter in open statement.No, your code looks correct -- ou're passing a date to the cursor.
You might consider whether you really need an explicit cursor though. An implicit cursor is easier to code and performs better. -
I have a problem synching calendar data between my iPhone 3GS iOS 5.1 & Outlook 2007 on MS7. The basic calendar data transfer is OK but the birthdays (little box icon) are a day early & cannot be changed to the correct date. The birthday entries in my Outlook contacts have correct dates.How can I fix this?
The following peocess corrects the calendar entry:
edit the contact & change the birthday, save the change; edit the contact & change the birthday to the correct value, save the change again. The calendar entry then displays on the correct date. Alternatively as a temp solution I can just de-select the "birthdays" calendar which stops the icon being displayed.
Thanks for your advice, I think that it's n going to be a slow process to fix all the entries for not much return. -
Problem while retrving data from a view
Hi Friends
i have a problem while retriving data from a view <b>v_t685a</b>.
the error message is :""" "V_T685A" is not defined in the ABAP Dictionary as a table, projection view or database view."""
i wrote : select single VTEXT1 from V_T685A into w_cst_jin1 where
KSCHL = 'JIN1' and
KAPPL = 'V'.
how to retrive the data.
waiting for quick response
Regards
MukeshHi
This is a Maintenance View, not a Database View
SO can't fetch data using select statement.
You can use the Table <b>T685</b> directly to fetch the condition Types data straight away instead of the view. write the same select for this table and use.
Regards
Anji
Message was edited by:
Anji Reddy Vangala -
Hi Experts,
i am new to the SRM, i am facing problem in passing data from one screen to another.
my requirement is that when we select one shopping cart and press the PROPOSE SOURCES OF SUPPLY button, we will fetch all the contracts that are attached to the shopping cart.
we have implemented a BADI implementation of BBP_SOS_BADI (method BBP_SOS_CHECK) for passing some changed values to the contracts of the shopping cart into the popup screen that is displayed when we press PROPOSE SOURCES OF SUPPLY button and when we select any contract and press ASSIGN ONLY button in the popup screen the badi BBP_DOC_CHANGE_BADI is triggered.
i have implemented another BADI implementation of BBP_DOC_CHANGE_BADI for fetching the selected contract and pass the values to another screen, but the problem is that when we select one contract and press the assign only button we are fetching the wrong contract number ( that is in the BADI method BB_SC_CHANGE parameter IT_ITEM we are fetching the wrong contract), if we again do the same procedure for the second time we are getting the correct contract.
i am unable to understand why we are getting the wrong contract in the first time( that is we are getting contract other than the selected one).
as per my understanding i think when we are passing data to the popup screen using BBP_DOC_CHANGE_BADI we are not updating the shopping cart with the changed data.
can anyone tell me how we can update the SHOPPING CART with the changed contracts data, i have used BBP_PD_SC_UPDATE, BBP_PD_SC_SAVE and other shopping cart FM but nothing is happening.
Thanks
TanveerHello,
What version of SRM are you on? Have you check for OSS Notes? I have had trouble with BBP_DOC_CHANGE_BADI but it was because of other issues. The BADI works pretty well and it is called almost every time something happens to the shopping cart.
I have noticed that sometimes that values are not changed til the second calling of the BADI. I have yet understand why but I think it has to do with prompt processing. Usually, we train our requisitioners to click the 'Check' button to flush things out.
I don't know if I was helpful.... another thought.... could there be an error caught by BBP_DOC_CHECK_BADI that is preventing change in BBP_DOC_CHANGE_BADI?
Regards, Dean. -
How to make users to select the date from calendar control only, by my making the date text field read only (don't want to let users type the date) in date time control in external list in sharepoint 2010. I am looking for a solution which can
be done through sharepoint desginer / out of the box.
thanks.Congratulate you got the solution by yourself. I am new to a
WinForms calendar component, I feel so helpless on many problems even I'd read many tutorials. This question on the
calendar date selection did me a great favor. Cheers. -
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 -
Select RTF Data and display in PDF Document
Hi all,
I have a simple table:
CONTENT_ID - NUMBER
CONTENT - VARCHAR2(4000)
On top of this table I have a form that allows the user to enter / update data. The 'CONTENT' field is a Rich Text Editor (ApEx 4.0 - CKEditor 3). This allows the user to enter and format their text as they require.
I need to be able to select this data and display it in a PDF Document (via BI Publisher).
I therefore have a simple query
select content from content_table where content_id = 1;and a simple template that processes the resulting xml:
<?xml version="1.0" encoding="UTF-8"?>
<ROWSET>
<ROW>
<CONTENT>& lt;h2& gt;
This is a heading& lt;/h2& gt;
& lt;p& gt;
This is the text& lt;/p& gt;
</CONTENT>
</ROW>
</ROWSET>(There is not really a space between the & and 'lt' etc but I had to add this to get it to display correctly here).
Where I run this past my template I get a PDF with:
<h2>
This is a heading</h2>
<p>
This is the text</p>I get the same if I generate HTML.
but what I want to see is the text formatted as the user has entered in the RTF editor.
Can this be done?
Many thanks,
MartinI think your mixing 2 technologies.
At 1 side you have xml in combination with xsl (style sheets used in BI Publisher and FOP) to generate your pdf. And at the other side you have HTML...
XML and HTML are 2 entirely different technologies which you can not mix this simple. I investigated the same problem as you had, and in the end I ended up using jasperreports instead of FOP.
Maybe BI Publisher has some html regions which you could insert into your word document but I doubt it cause more people have asked the same question on this board...
So my advice: use jasperreports (also it is free for commercial usage)
Success
Br,
Nico
Maybe you are looking for
-
How to set page number & current date in sqlplus result
how to set page number & current date in sqlplus result
-
How do I copy a Keynote slide and paste it into a new project?
Running MacBook Pro OSX 10.9.5 Keynote v. 6.2.2 How do I copy a Keynote slide and paste it into a new project? jazzpsy
-
HT204266 Why can't I submit a review about an app, even though I own it?
Why can't I submit a review about an app, even though I own it?
-
FI parking through BAPI_INCOMINGINVOICE_PARK
Hi champs, I want to park FI invoice with the help of BAPI_INCOMINGINVOICE_PARK. In FI parking we do not require PO (Purchase order). But in BAPI_INCOMINGINVOICE_PARK , PO is mandotary field. Is it possible to park a FI invoice with
-
Bifurcation of Symbolic accounts on the basis of Personnel Area / Subarea
Dear Consultants, In T Codes OBYG & OBYE, we link Symbolic accounts to GL Accounts via Employee Subgroups. Is it possible to Link it thru Personnel Subarea ? My client wants to post Profession Tax paid in different states to different GL accounts. Re