Interfaces--bdc
hi
iam doing the interfaces trough function modules. if iam testing trough interface monitor tool for that particular flat file iam getting this error..
Interface test routine Search for interface file started no interface file available number of workfiles not sufficiently
please suggest me..
Singh,
Check this threads where they have discussed on how to use them with XI:
import BAPI into XI
Re: interface of xi with bapi
Re: BDC
Regards,
---Satish
Similar Messages
-
How do we write technical specs?
How do we write technical specs?
Hi,
The points to be included in technical specs are:
Business Requirement
From business standpoint describe:
Objective - What the object(s) are supposed to accomplish?
Purpose - Describe what are the purposes of these object(s)?
Users - Describe who will use are these object(s)? And when? And where?
Known Errors / Issues - Describe any known errors and issues
Provide Business Process and data flow diagram
3.0 Detail Level Design
3.1 Design Approach
Provide technical design approach along with alternatives and driver that led to choosing a particular approach
3.2 Detailed Design
3.1.1 Technical Configuration Requirements
What configuration is required to support this process? Does this process require master data to be loaded? Specify any application configuration settings, custom table entries, etc.
3.1.2 Object List
Give a list of the component/objects that need be created / modified.
No. Object Name Object Type Description
1.
2.
3.
3.1.3 Object Relationships
Provide pictorial representation of technical design and link it to the list of objects defined above.
u2022 Object relationship diagram
u2022 Data flow diagram
u2022 Screen navigation diagram
u2022 Use-case diagram
4.0 Object details
Provide detail for each object defined in 3.1.2
4.1 Object Name 1
4.1.1 Attributes
4.1.2 List each tables and File Structure
<Enter name(s) of the table(s) be used in the program>
Object Name
Field Short Text Data Element
/ Field Type Field Length Additional info
4.1.3 Function / Methods / processing logic
<Enter name of the functional module used in the programs>
<Indicate status keys and name of the function to be indicated for screens used in the module pool programs, if any>
4.1.4 Interfaces / BDC mappings
Non-EDI Interfaces / Data Mapping
<For BDC, Run SHDB Transaction and give Session name. >
<Embed Data Mapping Sheet here>
<Third party tools such as IM/3>
EDI Interfaces
<Message type, Partner profile details>
4.1.5 Technical configuration / Settings (Including printer settings)
<Enter settings details >
4.1.6 Events
4.1.7 Screen
Parameter / Select options (selection-screen)
Screen Name
TYPE Field Field description Table Mandatory / Non-mandatory Match Code required (Y / N)
u2022 Field Validations
u2022 Radio Groups
u2022 Check Boxes
Push Buttons for Drilldown reports on different levels
Button Field name Drilldown from Drilldown To
Screen Layout (In case of Transactions)
<Enclose the same if applicable and indicate to refer attached sheet>
Navigation Diagram (or Screen flow)
<Provide screen navigation diagram>
4.1.8 Layout and Presentation
4.1.9 Sort Options
4.1.10 <Enter your contents here>
Report or file Layout (In case of Reports)
<Enclose the same if applicable and indicate to refer attached sheet>
< Provide additional information on expectation e.g. Download options>
4.1.11 SAP Script Layout (In case of SAP Scripts)
<Enclose the same if applicable and indicate to refer attached sheet>
Logo for SAPScript in case of non-pre-printed stationary
<Attach TIF file in Version 6.0 & above>
Printing of SAPScript
<Enter printer details, Attach hardcopy of pre-printed Stationary. >
< Provide additional information on expectation e.g. Font type, size etc.>
4.1.12 Special Requirements
<Enter your contents here, if applicable>
4.1.13 Authorization Check
<Enter authorization checks to be incorporated, if required>
4.1.14 Error Control and Handling
What errors may occur and how they should be treated.
Message Reference Number Type
[I,E,W] Stop Program (Yes/No)
Message Text Message Display [Selection screen, Popup, etc.] Conditions Where the Message Should Occur
999 E Yes { e.g. Account group excluded } End of report { e.g. If the group is excluded }
4.1.15 Authorization Groups / Authorization Objects
Please refer to the functional specification for the appropriate security levels.
ABAP Considerations: Do any of the programs need special authorization groups, if so, explain?
Do the users need special security profiles to execute the enhancement, if so, explain?
{e.g. The transaction program will verify that the user has the correct authority on transaction entry. }
4.1.16 Internationalization / Localization
<Enter approach for language translation, currency conversion and compliance to legal requirement here>
5.0 Test data and Conditions
Determine how to validate the Object. (e.g. how do you make sure that the Report was run and has worked correctly?) List any transactional data that will be used to validate the report both in a production state and for testing purposes (i.e. specific types of sales transactional data, adjustments, etc)
<Enter test related data and testing conditions>
<Enter Menu path for Transaction ><Enter details of Test Data / Test cases for program & users. >
6.0 Implementation considerations
6.1 Dependencies
If the object has dependencies on the output of another enhancement, interface, background process, month end close, etc.
6.2 Transitional considerations
{ e.g. If change is being implemented in phased manner, provide the impact of phased implementation on lifecycle and logic of the objects and related configuration and data elements }
6.3 Related Documents
{ e.g. Give the reference or embed of all the documents related to the object }
7.0 Basic assumptions (Notes) and limitations (constraints) of the system
<Include here a description of the architectural constraints, and design assumptions from the perspective of requirements, development, testability and maintainability. >
No. Description Comments / References
1.
2.
3.
8.0 Open Issues
<Enter comments/issues or Concerns that donu2019t logically fit in one of the other sections of the specification document. >
Issue No. Description Comments / References
1.
2.
3. -
Problem in executing BDC through interface.
Hello,
We have developed an interface program for creating notifications through BDC in IW21 . Standard notification transaction IW21 has been enhanced with a screen table control for entering certain data.We have recorded the transaction IW21 in SHDB for developing BDC program for notification creation. When ever this interface is executed ,notification is getting created succesfully without populating the values in the screen table control. But when we executed through debugger then all the data is getting updated in screen table control.
Can anyone guess the problem and suggest the solution.
Thanks in Advance.
VamsiHi Vamsi/Neelima,
Have a wait command after commit work.
COMMIT WORK AND WAIT .
or you can have just WAIT command after execution of transaction.
Cheers,
Varun -
ABAP interfaces build using BDC and BAPIs can be used/replaced with the XI?
Hi,
We have develeloped our interfases using BDC and BAPIs. Now our client has decited to implement XI. Now could you please help in finding whether these interfaces can be used/replaced with the XI.
If yes, please let us know how?
Thanks and Regards,
ShwetaSingh,
Check this threads where they have discussed on how to use them with XI:
import BAPI into XI
Re: interface of xi with bapi
Re: BDC
Regards,
---Satish -
BDC batch interface error /SAPAPO/SCC05
I have created an ABAP program that does a CALL TRANSACTION to transaction /SAPAPO/SCC05 (in an APO program). If I run the program in foreground (the CALL TRANSACTION in background mode), everything works correctly. However, when I try to run the program as a batch job, I receive an error message: "Error calling up user interface components".
I tried changing the CALL TRANSACTION to simply create a BDC session I could run via SM35. The BDC, when run in background mode, gives the same error, but runs fine in foreground.
I located an OSS Note (below) that references the error message (/SAPAPO/SCC 032) (<--message class/message number). I tried changing the settings outlined in the alternative solution in the OSS note, but the problem is still there.
In addition, I have tried to toggle all the different parameters that one has control over in the CALL TRANSACTION (default screen-size, commit work, etc.) No differences that I could find.
Has anyone run into a similar issue? I can be reached at [email protected]. Thank you.
Here is the OSS Note:
SAP Note No. 396020 15.12.2005 Page 1
Number 396020
Version 2 from 17.04.2001
Status Released for Customer
Set on 16.04.2001
Language EN
Master language DE
Short text Error when calling PPM maintenance, SCE or SCC
Responsible SAP AG
Component SCM-APO-OCX
ActiveX controls
Long text
Symptom
When you call the graphical PPM maintenance or SCC/SCE, the system
displays error message "Error calling up user interface components"
/SAPAPO/SCC032
Additional key words
APO-SCC
Cause and prerequisites
You installed a valid APO Frontend patch correctly. When you use
PPM/SCE/SCC now a very rare constellation can occur, a graphical user
setting may be outside of the allowed value area. Thus, when you call
the respective application for the specific user the system displays an
error message of the frontend.
Solution
Workaround:
If possible, create a new user ID for the respective user.
Alternatively:
In database table /SAPAPO/CP_USRPRfor the respective user and for the
respective application (field APPLID) set fields 'MAP CO ********' to
initial (value 0). Note that for changes directly in database tables you
have to be very careful
A solution is being developed. We will update this note as soon as
possibly.
Source code corrections
Page 2
Valid releases
Software Component Release
from to
SAP_APPL SAP Application
46C - 46C
SAP_APO SAP Advanced Planner & Optimizer
30A - 30A
Further components
SCM-APO-MD-PPM
Production Process ModelHey Mike. If it is using any enjoy controls, it is really not a good idea to do a BDC over the transaction. You should find another way to do the transaction, maybe there is a BAPI available or a function module. Or, is there a transaction that does the same with out the controls. In R/3 v46c, there are transaction like ME21(Creat Po) that is the old version, but works the same way as the ME21N which is the enjoy transaction.
My advise is to find another way to do the transaction besides using the tcode that you are currently using. I know that this is not much help. Sorry
Please remember to award points for helpful answers and mark your post as solved when solved completely. Thanks in advance
Regards,
Rich Heilman -
Hi All
1) Please give me a clear picture about BDC and Interfaces, what are the differences between?
2) What is the usage of Update Mode(Synchronous, Asynchronous and Local), please explain me differences between them?
Awaiting for your response.
Regards
Praveen1)
http://help.sap.com/saphelp_47x200/helpdata/en/fa/097140543b11d1898e0000e8322d00/frameset.htm
2)
You use the UPDATE parameter to specify how updates produced by a transaction should be processed. You can select between these modes:
A Asynchronous updating. In this mode, the called transaction does not wait for any updates it produces to be completed. It simply passes the updates to the SAP update service. Asynchronous processing therefore usually results in faster execution of your data transfer program.
Asynchronous processing is NOT recommended for processing any larger amount of data. This is because the called transaction receives no completion message from the update module in asynchronous updating. The calling data transfer program, in turn, cannot determine whether a called transaction ended with a successful update of the database or not.
If you use asynchronous updating, then you will need to use the update management facility (Transaction SM12) to check whether updates have been terminated abnormally during session processing. Error analysis and recovery is less convenient than with synchronous updating.
S Synchronous updating. In this mode, the called transaction waits for any updates that it produces to be completed. Execution is slower than with asynchronous updating because called transactions wait for updating to be completed. However, the called transaction is able to return any update error message that occurs to your program. It is much easier for you to analyze and recover from errors.
L Local updating. If you update data locally, the update of the database will not be processed in a separate process, but in the process of the calling program. (See the ABAP keyword documentation on SET UPDATE TASK LOCAL for more information.)
Regards,
Rich Heilman -
Difference between interface and bdc
Hi All,
Can anybody please explain interface and BDC.
Thanks in advanceHi
Interface is the one which is used to transfer data from SAP to Non SAP system or NON SAP to SAP system.
BAPI, IDOC are some of the interfaces.
BDC is used to upload data from Legacy to SAP system.
Reward points if useful
Regards
Anji -
How do everyone,
We have a feeder interface which replicates the FB01 transaction via BDC. This creates an SM35
session which will then post the documents. Everything is working fine. At present the vendor
which is to be paid only has one bank account. We now need to have two bank accounts.
When looking at FB01 there is nothing to indicate which bank account to use. So I need to update the BDC
program or the actual payment program??
Many thanks
AndyMany thanks for taking the time out to reply Henri. You have solved a very
big headache.
Thanks again
Andy -
MULTIPLE ITEM PROBLEM IN VL31N BDC
hI FRIENDS ,
I AM POSTING A BDC OF TRANSACTION VL31N ,ie FOR SCHEDULE AGREEMENT INBOUND DELIVERY.I CREATE A FUNCTIONAL MODULE OF THE SAME AND CALL IT FROM AN ASP PAGE,IN THAT THERE IS PO NUMBER 5500000986 WHICH HAS TWO ITEMES 62 AND 95 RESPECTIVLY OF SAME MATARIAL NUMBER R010230123041002 AND DIE NUMBER 2304P,NOW THE PROBLEM IS THIS BDC IS WORKING WHEN THERE IS ONLY ONE ITEM BUT GIVES AN ERROR "CANT CREAT INBOUND DELIVERY FOR PO NO ...' WNEN IT HAS MULTIPLE ITEM.WHAT SHOULD I DO ? I ALSO USED LOOP BUT IT ALSO DOSENT WORK AS IT WILL ADD ALL OPEN QTY OF PO 986 AND UPDATE AGAINST ITEM NO 95.
CODE IS AS FOLLOWS:.........
FUNCTION y_synie_bdcinbdly.
""Local interface:
*" IMPORTING
*" VALUE(CTU) LIKE APQI-PUTACTIVE DEFAULT 'X'
*" VALUE(MODE) LIKE APQI-PUTACTIVE DEFAULT 'N'
*" VALUE(UPDATE) LIKE APQI-PUTACTIVE DEFAULT 'L'
*" VALUE(GROUP) LIKE APQI-GROUPID OPTIONAL
*" VALUE(USER) LIKE APQI-USERID OPTIONAL
*" VALUE(KEEP) LIKE APQI-QERASE OPTIONAL
*" VALUE(HOLDDATE) LIKE APQI-STARTDATE OPTIONAL
*" VALUE(NODATA) LIKE APQI-PUTACTIVE DEFAULT '/'
*" VALUE(EXTNID) LIKE MAKT-MAKTG
*" VALUE(VENDORNO) LIKE LFA1-LIFNR
*" VALUE(PONUMBER) LIKE EKKO-EBELN
*" VALUE(ITEMNUMBER) LIKE LIPS-VGPOS
*" VALUE(MATERIAL) LIKE MAKT-MAKTG
*" VALUE(DLYQTY) LIKE LIPS-LFIMG
*" VALUE(BTCHNO) LIKE LIPS-CHARG
*" VALUE(POSLR) LIKE EKES-EBELP OPTIONAL
*" EXPORTING
*" VALUE(SUBRC) LIKE SYST-SUBRC
*" VALUE(INDELYNO) LIKE SY-MSGV2
*" VALUE(MSG1) LIKE SY-MSGV1
*" VALUE(MSG2) LIKE SY-MSGV2
*" VALUE(MSG3) LIKE SY-MSGV3
*" VALUE(MSG4) LIKE SY-MSGV4
*" TABLES
*" MESSTAB STRUCTURE BDCMSGCOLL
*" ERRTAB STRUCTURE YSYNERRMSGS
*" INDLYTAB STRUCTURE YSYN_QTYTAB
Updated by ANAND SYNISE 19.1.2007
DATA: BEGIN OF bdctab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdctab.
DATA: datenow(10) TYPE c,
fldvar(30) TYPE c,
fldno TYPE i,
flditoc(6) TYPE c,
qty(13) TYPE c.
DATA maxposnr LIKE lips-posnr.
DATA testposnr TYPE posnr.
DATA itemnoint TYPE i.
CONCATENATE sy-datum6(2) '.' sy-datum4(2) '.' sy-datum+0(4) INTO datenow.
CLEAR bdctab.
REFRESH bdctab.
PERFORM open_group USING group user keep holddate ctu.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '4007'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'RV50A-VERUR_LA'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '/00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-LIFNR'.
bdctab-fval = vendorno.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LV50C-BSTNR'.
bdctab-fval = ponumber.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-VERUR_LA'.
bdctab-fval = extnid.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '=MKAL_T'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIKP-BLDAT'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '=POPO_T'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIPS-POSNR(01)'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '0111'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'RV50A-PO_MATNR'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = 'WEIT'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-PO_MATNR'.
bdctab-fval = material.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '=POLO_T'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIPS-POSNR(01)'.
APPEND bdctab.
*ADDED BY ANAND ON 22-01-2007
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = ITEMNUMBER . "ITEMNUMBER = LIPS-VGPOS
APPEND bdctab.
************ENDED***********************
ADDED BY MILIND 19.01.2007
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = poslr .
APPEND bdctab.
* ENDED * *
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LIPS_SELKZ(01)'.
bdctab-fval = ''.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '/00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIPS-CHARG(01)'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
QTY = INDLYTAB-DLYQTY.
qty = dlyqty.
bdctab-fnam = 'LIPSD-G_LFIMG(01)'.
bdctab-fval = QTY.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIPS-CHARG(01)'.
* BDCTAB-FVAL = INDLYTAB-BTCHNO.
bdctab-fval = btchno.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-program = 'SAPMV50A'.
bdctab-dynpro = '1000'.
bdctab-dynbegin = 'X'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_OKCODE'.
bdctab-fval = '=SICH_T'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'LIKP-BLDAT'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_CURSOR'.
bdctab-fval = 'LIPS-MATNR(02)'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFDAT_LA'.
bdctab-fval = datenow.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'RV50A-LFUHR_LA'.
bdctab-fval = '00:00'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CLEAR bdctab.
bdctab-fnam = 'BDC_SUBSCR'.
bdctab-fval = 'SAPMV50A'.
APPEND bdctab.
CALL TRANSACTION 'VL31N' USING bdctab MODE 'N' MESSAGES INTO messtab.
subrc = sy-subrc.
PERFORM close_group USING ctu.
CLEAR bdctab.
REFRESH bdctab.
IF sy-subrc EQ 0.
indelyno = sy-msgv2.
ENDIF.
LOOP AT messtab.
MOVE: messtab-msgid TO errtab-msgid,
messtab-msgnr TO errtab-msgnr,
messtab-msgv1 TO errtab-msg1,
messtab-msgv2 TO errtab-msg2,
messtab-msgv3 TO errtab-msg3,
messtab-msgv4 TO errtab-msg4.
APPEND ERRtab.
ENDLOOP.
LOOP AT errtab.
SELECT SINGLE text FROM t100
INTO errtab-errmsg
WHERE msgnr EQ errtab-msgnr AND arbgb EQ errtab-msgid
AND sprsl EQ sy-langu.
MODIFY errtab.
ENDLOOP.
ENDFUNCTION.Hi,
Check this code:
REPORT Z_CUSTOMER_UPLOAD .
D A T A D E C L A R A T I O N S *
DATA:BEGIN OF IT_CUSTOMER OCCURS 0,
KUNNR LIKE MV10A-KUNNR,
VKORG LIKE MV10A-VKORG,
VTWEG LIKE MV10A-VTWEG,
MATNR LIKE MV10A-MATNR,
KDMAT LIKE MV10A-KDMAT,
MEGRU LIKE MV10A-MEGRU,
SELKZ TYPE C value 'X',
LPRIO LIKE MV10A-LPRIO,
ANTLF LIKE MV10A-ANTLF,
END OF IT_CUSTOMER.
DATA:BEGIN OF IT_success OCCURS 0,
KUNNR LIKE MV10A-KUNNR,
VKORG LIKE MV10A-VKORG,
VTWEG LIKE MV10A-VTWEG,
MATNR LIKE MV10A-MATNR,
KDMAT LIKE MV10A-KDMAT,
MEGRU LIKE MV10A-MEGRU,
SELKZ TYPE C value 'X',
LPRIO LIKE MV10A-LPRIO,
ANTLF LIKE MV10A-ANTLF,
END OF IT_success.
DATA:BEGIN OF IT_error OCCURS 0,
KUNNR LIKE MV10A-KUNNR,
VKORG LIKE MV10A-VKORG,
VTWEG LIKE MV10A-VTWEG,
MATNR LIKE MV10A-MATNR,
KDMAT LIKE MV10A-KDMAT,
MEGRU LIKE MV10A-MEGRU,
SELKZ TYPE C value 'X',
LPRIO LIKE MV10A-LPRIO,
ANTLF LIKE MV10A-ANTLF,
END OF IT_error.
DATA: L_INDEX TYPE SY-TABIX.
DATA:IT_BDC LIKE BDCDATA OCCURS 0 WITH HEADER LINE,
IT_DATA TYPE ALSMEX_TABLINE OCCURS 0 WITH HEADER LINE.
ERROR MESSAGE TABLE
DATA:IT_MESSAGES LIKE BDCMSGCOLL OCCURS 0 WITH HEADER LINE.
DATA : C_S TYPE C VALUE 'S',
C_E TYPE C VALUE 'E'.
*DATA: IT_SUCCESS LIKE IT_CUSTOMER OCCURS 0,
IT_ERROR LIKE IT_CUSTOMER OCCURS 0.
DATA : V_RECTOT TYPE I,
V_RECERR TYPE I,
V_RECSUC TYPE I.
S E L E C T I O N - S C R E E N *
SELECTION-SCREEN : BEGIN OF BLOCK B1 WITH FRAME TITLE TEXT-001.
PARAMETER : P_FILE LIKE RLGRAP-FILENAME .
SELECTION-SCREEN : END OF BLOCK B1.
A T S E L E C T I O N - S C R E E N *
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_FILE.
to get F4 help for p_file
PERFORM F4_FILENAME USING P_FILE.
S T A R T O F S E L E C T I O N *
START-OF-SELECTION.
Uploading data from flat file into it_tab
PERFORM BDC_UPLOAD USING P_FILE.
PERFORM PROCESS_DATA.
PERFORM POPULATE_BDC.
E N D O F S E L E C T I O N *
*END-OF-SELECTION.
PERFORM DISPLAY_REPORT.
*& Form F4_FILENAME
text
-->P_P_FILE text
FORM F4_FILENAME USING P_P_FILE.
DATA:L_FILE TYPE IBIPPARMS-PATH.
CALL FUNCTION 'F4_FILENAME'
EXPORTING
PROGRAM_NAME = SYST-CPROG
DYNPRO_NUMBER = SYST-DYNNR
FIELD_NAME = ' '
IMPORTING
FILE_NAME = L_FILE .
P_P_FILE = L_FILE.
ENDFORM. " F4_FILENAME
*& Form BDC_UPLOAD
text
-->P_P_FILE text
FORM BDC_UPLOAD USING P_P_FILE.
CALL FUNCTION 'ALSM_EXCEL_TO_INTERNAL_TABLE'
EXPORTING
FILENAME = P_P_FILE
I_BEGIN_COL = 1
I_BEGIN_ROW = 1
I_END_COL = 8
I_END_ROW = 1000
TABLES
INTERN = IT_DATA
EXCEPTIONS
INCONSISTENT_PARAMETERS = 1
UPLOAD_OLE = 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.
ENDFORM. " BDC_UPLOAD
*& Form PROCESS_DATA
text
--> p1 text
<-- p2 text
FORM PROCESS_DATA.
SORT IT_DATA BY ROW COL.
LOOP AT IT_DATA.
CASE IT_DATA-COL.
WHEN 1.
IT_CUSTOMER-KUNNR = IT_DATA-VALUE.
WHEN 2.
IT_CUSTOMER-VKORG = IT_DATA-VALUE.
WHEN 3.
IT_CUSTOMER-VTWEG = IT_DATA-VALUE.
WHEN 4.
IT_CUSTOMER-MATNR = IT_DATA-VALUE.
WHEN 5.
IT_CUSTOMER-KDMAT = IT_DATA-VALUE.
WHEN 6.
IT_CUSTOMER-MEGRU = IT_DATA-VALUE.
WHEN 7.
IT_CUSTOMER-LPRIO = IT_DATA-VALUE.
WHEN 8.
IT_CUSTOMER-ANTLF = IT_DATA-VALUE.
APPEND IT_CUSTOMER.
ENDCASE.
ENDLOOP.
ENDFORM. " PROCESS_DATA
*& Form POPULATE_BDC
text
--> p1 text
<-- p2 text
FORM POPULATE_BDC.
DATA:L_COUNTER TYPE N,
L_STRING TYPE STRING.
LOOP AT IT_CUSTOMER.
AT NEW KUNNR.
CLEAR L_COUNTER.
L_INDEX = SY-TABIX.
READ TABLE IT_CUSTOMER INDEX L_INDEX.
perform bdc_dynpro using 'SAPMV10A' '0100'.
perform bdc_field using 'MV10A-KUNNR'
IT_CUSTOMER-KUNNR.
perform bdc_field using 'MV10A-VKORG'
IT_CUSTOMER-VKORG.
perform bdc_field using 'MV10A-VTWEG'
IT_CUSTOMER-VTWEG.
perform bdc_field using 'BDC_OKCODE'
'/00'.
ENDAT.
L_COUNTER = L_COUNTER + 1.
CLEAR L_STRING.
perform bdc_dynpro using 'SAPMV10A' '0200'.
CONCATENATE 'MV10A-MATNR(' L_COUNTER ')' INTO L_STRING.
perform bdc_field using L_STRING
IT_CUSTOMER-MATNR.
CONCATENATE 'MV10A-KDMAT(' L_COUNTER ')' INTO L_STRING.
perform bdc_field using L_STRING
IT_CUSTOMER-KDMAT.
CONCATENATE 'MV10A-MEGRU(' L_COUNTER ')' INTO L_STRING.
perform bdc_field using L_STRING
IT_CUSTOMER-MEGRU.
perform bdc_field using 'BDC_OKCODE'
'/00'.
*-- For Page down in Call Transaction Mode
IF L_COUNTER = 14.
CLEAR L_COUNTER.
PERFORM BDC_DYNPRO USING 'SAPMV45A' '4001'.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'=P+'.
ENDIF.
perform bdc_dynpro using 'SAPMV10A' '0200'.
CONCATENATE 'MV10A-SELKZ(' L_COUNTER ')' INTO L_STRING.
perform bdc_field using L_STRING
IT_CUSTOMER-SELKZ.
perform bdc_field using 'BDC_OKCODE'
'=SELE'.
perform bdc_dynpro using 'SAPMV10A' '0300'.
perform bdc_field using 'MV10A-KDMAT'
IT_CUSTOMER-KDMAT.
perform bdc_field using 'MV10A-LPRIO'
IT_CUSTOMER-LPRIO.
perform bdc_field using 'MV10A-ANTLF'
IT_CUSTOMER-ANTLF.
PERFORM BDC_FIELD USING 'BDC_OKCODE'
'/EBACK'.
at end of kunnr.
READ TABLE IT_CUSTOMER INDEX L_INDEX.
perform bdc_field using 'BDC_OKCODE'
'=SICH'.
CALL TRANSACTION 'VD51' USING IT_BDC MODE 'A' UPDATE 'S'
MESSAGES INTO IT_MESSAGES.
CLEAR IT_BDC.
REFRESH IT_BDC.
ENDAT.
IF NOT IT_MESSAGES[] IS INITIAL.
PERFORM FORMAT_MESSAGE.
ENDIF.
ENDLOOP.
ENDFORM. " POPULATE_BDC
*& Form bdc_dynpro
text
-->P_0273 text
-->P_0274 text
FORM bdc_dynpro USING VALUE(P_0273)
VALUE(P_0274).
IT_BDC-PROGRAM = P_0273.
IT_BDC-DYNPRO = P_0274.
IT_BDC-DYNBEGIN = 'X'.
APPEND IT_BDC.
CLEAR IT_BDC.
ENDFORM. " bdc_dynpro
*& Form bdc_field
text
-->P_0278 text
-->P_RECORD_KUNNR_001 text
FORM bdc_field USING VALUE(P_0278)
VALUE(P_0279).
IT_BDC-FNAM = P_0278.
IT_BDC-FVAL = P_0279.
APPEND IT_BDC.
CLEAR IT_BDC.
ENDFORM. " bdc_field
*& Form FORMAT_MESSAGE
text
--> p1 text
<-- p2 text
FORM FORMAT_MESSAGE.
DATA: L_MSG(100).
LOOP AT IT_MESSAGES.
READ TABLE IT_CUSTOMER INDEX L_INDEX.
CALL FUNCTION 'FORMAT_MESSAGE'
EXPORTING
ID = IT_MESSAGES-MSGID
LANG = SY-LANGU
NO = IT_MESSAGES-MSGNR
V1 = IT_MESSAGES-MSGV1
V2 = IT_MESSAGES-MSGV2
V3 = IT_MESSAGES-MSGV3
V4 = IT_MESSAGES-MSGV4
IMPORTING
MSG = L_MSG
EXCEPTIONS
NOT_FOUND = 1
OTHERS = 2.
IF SY-SUBRC <> 0.
MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ENDIF.
write:/ l_msg.
ENDLOOP.
ENDFORM. " FORMAT_MESSAGE
reward if helpful,
keerthi -
Hi All,
I have a favour from all of you, I want to know what are the type of questions that would be asked in interview if I put these objects
Reports :
Created Material Master report for existing stock details.
Created Material Master report for various storage locations.
BDC :
Migrated legacy data from Non SAP to SAP using SE11 transaction.
Migrated legacy data using MK01 transaction.
LSMW :
Migrated legacy data using MM01 transaction.
Reports
Generated a report to print the purchase order details of goods received with purchase order number.
Generated a program to create a report which calculates the material cost, it selects all the material issued for the entered service order number from stock.
Sap Scripts
Worked on Modifying the predefined Sap Script for Distributing Customer Billing.
Smart Forms
Worked on creating Job requisition form.
Reports:
Developed a ALV Grid Interactive report to evaluate the Vendor performance for a specified purchase organization in a particular period.
Generated a ALV grid interactive report that displays the Material numbers and
corresponding Maintenance status in the basic list and upon selection of a particular
material no it gives the detailed information of that material no in two different levels.
BDC:
Interface to upload change the sales order for open sales order and partial sales order using the transaction VA02 through batch input method.
SAP Scripts :
Modified the Order layout set with slight changes in the terms and conditions, date
format.
Changes made to the invoice layout set as per the client requirement
i would very much indebted to each and everyone whoever is helping to secure a job in ABAP..
Thanking u in advance...
srinivas
u can also mail me @ [email protected]repots:
have you created any reports,
what are the kinds of reports,
what are the sequence of events come in reports,
which method you used for report,
do you know about alv.
bdc:
what are the types of bdc.
how you collect the messages in bdc.
what are the functiona modules in bdc
sap scripts/smart forms:
what is the difference between these two.
what are the functiona modules used in sap script.
how you call the samrt form in your program.
what is the t code for smart form and sap script.
how you define the paragraph formats in sap scripts. -
Is an Open and Close Stmt of some kind mandatory for BDC?
If so what is the quickest way to code it? I am restricting a batch in an interface. In the same interface I unrestrict but it does not work. I am using BDC. I am thinking I may be missing some syntax for open close in my BDC.
Thank-youWith out open and close Group function it is not possible to create the sessioon and not possible to use the BDC session method. only when you open the session then only you should insert and close the Group.
CALL FUNCTION 'BDC_OPEN_GROUP'.
if Open = 'X'.
CALL FUNCTION 'BDC_INSERT'.
endif.
if open = 'X'.
CALL FUNCTIOn 'BDC_CLOSE_GROUP'.
endif. -
hi
i want know what is the difference between BDC and LSMW and which is best also tell me BDC and LSMW using for which type data (like master or transactional data)
thanka in advance
deepakHi deepak,
LSMW and BDC are vastly different.
BDC (Batch Data Communication) is a technology used for data transfer. it is meant for transferring data thru SAP transactions itself. when u use BDC for data transfer, the sequence of steps is the same as when u use standard sap transaction screens for data upload. the only difference is that u can use different options for foreground/background processing.
LSMW on the other hand is a tool that helps migrate data from a legacy system (non-sap system ) to SAP system. it offers u various options to use either batch input, direct input, BAPIs or idocs. it involves a series of some 17-18 steps to migrate data.
BDC:
Batch Data Communication (BDC) is the process of transferring data from one SAP System to another SAP system or from a non-SAP system to SAP System.
Features :
BDC is an automatic procedure.
This method is used to transfer large amount of data that is available in electronic medium.
BDC can be used primarily when installing the SAP system and when transferring data from a legacy system (external system).
BDC uses normal transaction codes to transfer data.
Types of BDC :
CLASSICAL BATCH INPUT (Session Method)
CALL TRANSACTION
BATCH INPUT METHOD:
This method is also called as CLASSICAL METHOD.
Features:
Asynchronous processing.
Synchronous Processing in database update.
Transfer data for more than one transaction.
Batch input processing log will be generated.
During processing, no transaction is started until the previous transaction has been written to the database.
CALL TRANSACTION METHOD :
This is another method to transfer data from the legacy system.
Features:
Synchronous processing. The system performs a database commit immediately before and after the CALL TRANSACTION USING statement.
Updating the database can be either synchronous or asynchronous. The program specifies the update type.
Transfer data for a single transaction.
Transfers data for a sequence of dialog screens.
No batch input processing log is generated.
For BDC:
http://myweb.dal.ca/hchinni/sap/bdc_home.htm
https://www.sdn.sap.com/irj/sdn/wiki?path=/display/home/bdc&
http://www.sap-img.com/abap/learning-bdc-programming.htm
http://www.sapdevelopment.co.uk/bdc/bdchome.htm
http://www.sap-img.com/abap/difference-between-batch-input-and-call-transaction-in-bdc.htm
http://help.sap.com/saphelp_47x200/helpdata/en/69/c250684ba111d189750000e8322d00/frameset.htm
http://www.sapbrain.com/TUTORIALS/TECHNICAL/BDC_tutorial.html
LSMW:
The LSM Workbench is an R/3-based tool that supports You when transferring data from non-SAP systems ("Legacy Systems") to R/3 once or periodically.
The tool supports conversion of data of the legacy system in a convenient way. The data can then be imported into the R/3 system via batch input, direct input, BAPIs or IDocs.
Furthermore, the LSM Workbench provides a recording function that allows to generate a "data migration object" in an entry or change transaction.
The main advantages of the LSM Workbench:
Part of R/3 and thus independent of individual platforms
A variety of technical possibilities of data conversion:
Data consistency due to standard import techniques:
Batch input
Direct input
BAPIs (Business Application Programming Interfaces)
IDocs (Intermediate Documents)
The import technique to be used in an individual case depends on the business object.
Generation of the conversion program on the basis of defined rules
Clear interactive process guide
Interface for data in spreadsheet format
Creation of data migration objects on the basis of recorded transactions
Charge-free for SAP customers and SAP partners
http://help.sap.com/saphelp_nw04s/helpdata/en/87/f3ae74e68111d1b3ff006094b944c8/content.htm
http://www.sap-img.com/sap-data-migration.htm
http://www.scmexpertonline.com/downloads/SCM_LSMW_StepsOnWeb.doc
http://allsaplinks.com/lsmw.html
http://myweb.dal.ca/hchinni/sap/lsmw_home.htm -
Hi ALL i have a BDC code it is not working properly
this BDC code is not working properly , when ever the file is transfering BDC is aborting in the case of invalid material/batch comes into teh picture... so please could you ''Check for invalid material/batch combinations so they are not processed by the BDC in the program and correctly output in an exception report''
*****************************CODE HERE*****************************
S E L E C T I O N S C R E E N
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_file LIKE rlgrap-filename,
p_arch LIKE rlgrap-filename. "RM080107
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N'.
SELECTION-SCREEN END OF BLOCK b1.
I N C L U D E S
INCLUDE zwm_np_stock_recon_top.
INCLUDE zwm_np_stock_recon_f01.
I N I T I A L I Z A T I O N
INITIALIZATION.
PERFORM get_interface_filename USING c_interface_file p_file.
PERFORM get_interface_filename USING c_archive_file p_arch."RM080107
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
PERFORM read_file USING p_file.
PERFORM pre_processing.
E N D O F S E L E C T I O N
END-OF-SELECTION.
PERFORM process_checks.
IF w_no_change = 'X'.
WRITE: / text-b03.
WRITE: / sy-uline(34).
ELSE.
PERFORM bdc_mi09.
PERFORM file_check_report.
PERFORM bdc_report.
ENDIF.
PERFORM post_process_checks.
*-- Move the processed file to archive directory
PERFORM move_file.
...*************.........first include...................************
INCLUDE ZWM_NP_STOCK_RECON_TOP *
Data declaration ----------------------------------------------
TYPES: st_rawdata(2000) TYPE c.
TYPES: BEGIN OF st_stck_cnt,
werks TYPE iseg-werks, "plant
lgort TYPE iseg-lgort, "storage location
matnr TYPE iseg-matnr, "material number
charg TYPE iseg-charg, "batch
vfdat TYPE mch1-vfdat, "Sell by date
lwedt TYPE mch1-lwedt, "Manufacture date
quarn(8) TYPE n, "qaunrantine quantity
menge(8) TYPE n, "quantity on hand
message(1), "Message Type (E/W/I)
msg_txt TYPE t100-text, "Message Text
zerostck(1), "Zero stock identifier "RM220307
END OF st_stck_cnt.
TYPES: BEGIN OF st_batch_errors,
matnr TYPE iseg-matnr, "material number
charg TYPE iseg-charg, "batch
clabs TYPE mchb-clabs, "Stock Balance
END OF st_batch_errors.
DATA:
t_rawdata TYPE TABLE OF st_rawdata,
w_rawdata TYPE st_rawdata,
t_stck_cnt TYPE TABLE OF st_stck_cnt,
d_stck_cnt TYPE TABLE OF st_stck_cnt, "RM191006
w_stck_cnt TYPE st_stck_cnt,
t_batch_errors TYPE TABLE OF st_batch_errors,
w_batch_errors TYPE st_batch_errors,
t_messtab LIKE bdcmsgcoll OCCURS 0,
w_messtab LIKE LINE OF t_messtab,
w_no_change.
CONSTANTS: c_interface_file(26) TYPE c VALUE 'ZNP_STOCK_RECON',
c_archive_file(26) TYPE c
VALUE 'ZNP_STOCK_RECON_ARCHIVE'. "RM080107
.*************................second include..........************
***INCLUDE ZWM_NEXTPHARMA_STOKRECON_F01 .
*& Form read_file
reads NextPharma file sent through via webmethods
-->P_FILENAME
FORM read_file USING p_filename.
CLEAR: t_rawdata,
w_rawdata.
REFRESH: t_rawdata.
OPEN DATASET p_filename FOR INPUT IN TEXT MODE.
IF sy-subrc <> 0.
MESSAGE e720(01).
ENDIF.
DO.
READ DATASET p_filename INTO w_rawdata.
IF sy-subrc <> 0.
EXIT.
ELSE.
APPEND w_rawdata TO t_rawdata.
ENDIF.
ENDDO.
CLOSE DATASET p_filename.
ENDFORM. " read_file
*& Form pre_processing
Read file values into internal table
FORM pre_processing.
DATA: lw_matnr TYPE iseg-matnr.
LOOP AT t_rawdata INTO w_rawdata.
lw_matnr = w_rawdata+21(20). "RM031006
lw_matnr = w_rawdata+22(18). "RM031006
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = lw_matnr
IMPORTING
output = lw_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
MOVE: lw_matnr TO w_stck_cnt-matnr.
w_stck_cnt-werks = w_rawdata+14(4).
w_stck_cnt-lgort = w_rawdata+18(4).
w_stck_cnt-charg = w_rawdata+84(25).
w_stck_cnt-vfdat = w_rawdata+109(8).
w_stck_cnt-lwedt = w_rawdata+117(8).
w_stck_cnt-quarn = w_rawdata+141(8).
w_stck_cnt-menge = w_rawdata+125(8).
APPEND w_stck_cnt TO t_stck_cnt.
CLEAR w_stck_cnt.
ENDLOOP.
SORT t_stck_cnt BY werks
lgort
matnr
charg.
DELETE ADJACENT DUPLICATES FROM t_stck_cnt.
ENDFORM. " pre_processing
*& Form bdc_mi09
Run file data via BDC TCODE: MI09
FORM bdc_mi09.
DATA: t_bdcdata TYPE TABLE OF bdcdata,
w_bdcdata TYPE bdcdata,
lw_datum(10) TYPE c,
lw_count(2) TYPE n.
WRITE sy-datum TO lw_datum DD/MM/YYYY.
Front Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0700'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Enter
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '/00'.
APPEND w_bdcdata TO t_bdcdata.
Count Date
CLEAR w_bdcdata.
w_bdcdata-fnam = 'RM07I-ZLDAT'.
w_bdcdata-fval = lw_datum.
APPEND w_bdcdata TO t_bdcdata.
Document Date
CLEAR w_bdcdata.
w_bdcdata-fnam = 'RM07I-BLDAT'.
w_bdcdata-fval = lw_datum.
APPEND w_bdcdata TO t_bdcdata.
Plant
CLEAR w_bdcdata.
w_bdcdata-fnam = 'IKPF-WERKS'.
w_bdcdata-fval = w_stck_cnt-werks.
APPEND w_bdcdata TO t_bdcdata.
Storage Location
CLEAR w_bdcdata.
w_bdcdata-fnam = 'IKPF-LGORT'.
w_bdcdata-fval = w_stck_cnt-lgort.
APPEND w_bdcdata TO t_bdcdata.
LOOP AT t_stck_cnt INTO w_stck_cnt.
Do not submit items with Errors against them
CHECK w_stck_cnt-message NE 'E' AND
w_stck_cnt-zerostck NE 'X'.
"RM220307
lw_count = lw_count + 1.
Input Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0731'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Page Down
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '=P+'.
APPEND w_bdcdata TO t_bdcdata.
Material
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-MATNR(01)'.
w_bdcdata-fval = w_stck_cnt-matnr.
APPEND w_bdcdata TO t_bdcdata.
Batch
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-CHARG(01)'.
w_bdcdata-fval = w_stck_cnt-charg.
APPEND w_bdcdata TO t_bdcdata.
IF w_stck_cnt-menge NE 0.
Quantity
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-ERFMG(01)'.
w_bdcdata-fval = w_stck_cnt-menge.
APPEND w_bdcdata TO t_bdcdata.
*-- Begin RM220307 - We need to create an item when the quantity is zero
*-- in file and is non-zero in SAP
ELSE.
Zero Stock indicator
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-XNULL(01)'.
w_bdcdata-fval = 'X'.
APPEND w_bdcdata TO t_bdcdata.
*-- End RM220307
ENDIF.
ENDLOOP.
CHECK lw_count NE 0.
After all line items have been input
Final Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0731'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Save Document
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '=BU'.
APPEND w_bdcdata TO t_bdcdata.
CALL TRANSACTION 'MI09' USING t_bdcdata
MODE p_mode
MESSAGES INTO t_messtab.
ENDFORM. " bdc_mi09
*& Form bdc_report
Write BDC Messages.
FORM bdc_report.
DATA: lw_text TYPE t100-text.
SKIP.
WRITE: / text-b01.
WRITE: / sy-uline(21).
SKIP.
Write BDC Messages
LOOP AT t_messtab INTO w_messtab WHERE msgspra = sy-langu.
MESSAGE ID w_messtab-msgid TYPE w_messtab-msgtyp
NUMBER w_messtab-msgnr
WITH w_messtab-msgv1
w_messtab-msgv2
w_messtab-msgv3
w_messtab-msgv4
INTO lw_text.
WRITE: / lw_text.
ENDLOOP.
ENDFORM. " bdc_report
*& Form process_checks
Perform process check before creating BDC Session
FORM process_checks.
DATA: lw_clabs LIKE mchb-clabs,
lw_menge LIKE mchb-clabs,
lw_matnr LIKE mara-matnr,
lw_charg LIKE mch1-charg,
lw_fail,
lw_vfdat TYPE mch1-vfdat,
lv_sell TYPE c, "RM191006
lv_qty(8) TYPE c. "RM191006
CLEAR: d_stck_cnt[], d_stck_cnt. "RM191006
Check if any of the stock figures differ from current stock figures
LOOP AT t_stck_cnt INTO w_stck_cnt.
lw_menge = w_stck_cnt-menge.
SELECT SINGLE clabs INTO lw_clabs
FROM mchb
WHERE matnr = w_stck_cnt-matnr
AND werks = w_stck_cnt-werks
AND lgort = w_stck_cnt-lgort
AND charg = w_stck_cnt-charg.
IF sy-subrc = 0.
IF lw_clabs NE lw_menge.
lw_fail = 'X'.
*-- Begin RM220307 - Do not create PI item if the stock is zero in the
*-- file and is zero in SAP
EXIT.
ELSEIF lw_clabs = 0 AND lw_menge = 0.
w_stck_cnt-zerostck = 'X'.
MODIFY t_stck_cnt FROM w_stck_cnt.
ENDIF.
*-- End RM220307
ELSE.
lw_fail = 'X'.
ERROR
ENDIF.
ENDLOOP.
If no differences are found set NO CHANGE Flag
IF lw_fail NE 'X'.
w_no_change = 'X'.
EXIT.
ENDIF.
Check for Errors in file data
LOOP AT t_stck_cnt INTO w_stck_cnt.
CLEAR lv_sell. "RM191006
SELECT SINGLE matnr INTO lw_matnr
FROM mara
WHERE matnr = w_stck_cnt-matnr.
IF sy-subrc NE 0.
Invalid Material (E)
w_stck_cnt-message = 'E'.
w_stck_cnt-msg_txt = 'Invalid Material'.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
ENDIF.
SELECT SINGLE charg vfdat
INTO (lw_charg, lw_vfdat)
FROM mch1 "KOB01 - changed from MCHA
WHERE matnr = w_stck_cnt-matnr
AND charg = w_stck_cnt-charg.
AND werks = w_stck_cnt-werks.
IF sy-subrc NE 0.
Invalid Material Batch (E)
w_stck_cnt-message = 'E'.
CONCATENATE 'Invalid Material Batch for plant' w_stck_cnt-werks
INTO w_stck_cnt-msg_txt SEPARATED BY space.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
ELSE.
IF w_stck_cnt-vfdat <> lw_vfdat.
Sell by dates do not match (W)
w_stck_cnt-message = 'W'.
w_stck_cnt-msg_txt =
'Sell by Date does not match Shelf life Expiry Date'.
MODIFY t_stck_cnt FROM w_stck_cnt.
lv_sell = 'X'. "RM191006
CONTINUE. "RM191006
ENDIF.
ENDIF.
IF w_stck_cnt-quarn > 0.
Quarantine balance not Zero (W)
w_stck_cnt-message = 'W'.
*-- Begin RM191006
*-- We do want all warning messages on the report
lv_qty = w_stck_cnt-quarn.
CONDENSE lv_qty NO-GAPS.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = lv_qty
IMPORTING
output = lv_qty.
w_stck_cnt-msg_txt = 'Quarantine balance is not zero'.
CONCATENATE 'Quarantine balance is ' lv_qty '- not zero'
INTO w_stck_cnt-msg_txt SEPARATED BY space.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
IF lv_sell = 'X'.
APPEND w_stck_cnt TO d_stck_cnt.
CLEAR lv_sell.
ELSE.
MODIFY t_stck_cnt FROM w_stck_cnt.
ENDIF.
*-- End RM191006
ENDIF.
ENDLOOP.
*-- Begin RM191006
*-- Finally get all the records into dummy table to report
APPEND LINES OF t_stck_cnt TO d_stck_cnt.
SORT d_stck_cnt.
DELETE ADJACENT DUPLICATES FROM d_stck_cnt.
*-- End RM191006
ENDFORM. " process_checks
*& Form file_check_report
Write warning and Error messages from File checks
FORM file_check_report.
WRITE: /2 'Material',
22 'Batch',
32 'Sell By',
45 'Message Text'.
WRITE: /2 sy-uline(115).
SKIP.
LOOP AT t_stck_cnt INTO w_stck_cnt. "RM191006
LOOP AT d_stck_cnt INTO w_stck_cnt. "RM191006
CHECK w_stck_cnt-message NE ' '.
WRITE: /2 w_stck_cnt-matnr,
22 w_stck_cnt-charg,
32 w_stck_cnt-vfdat,
43 w_stck_cnt-message,
45 w_stck_cnt-msg_txt.
ENDLOOP.
ENDFORM. " file_check_report
*& Form post_process_checks
Check Material Batches in SAP against NP File
FORM post_process_checks.
RANGES: r_matnr FOR mchb-matnr,
r_lgort FOR mchb-lgort,
r_werks FOR mchb-werks.
SORT t_stck_cnt.
LOOP AT t_stck_cnt INTO w_stck_cnt.
AT END OF matnr.
r_lgort-sign = 'I'.
r_lgort-option = 'EQ'.
r_lgort-low = w_stck_cnt-lgort.
APPEND r_lgort.
r_werks-sign = 'I'.
r_werks-option = 'EQ'.
r_werks-low = w_stck_cnt-werks.
APPEND r_werks.
r_matnr-sign = 'I'.
r_matnr-option = 'EQ'.
r_matnr-low = w_stck_cnt-matnr.
APPEND r_matnr.
ENDAT.
ENDLOOP.
Select all material batches for NP Materials
SELECT matnr charg clabs
INTO TABLE t_batch_errors
FROM mchb
WHERE werks IN r_werks
AND lgort IN r_lgort.
IF sy-subrc EQ 0.
Check if the Material Batches are in the NP file
LOOP AT t_batch_errors INTO w_batch_errors.
Disregard Batches without positive unrestricted stock
IF w_batch_errors-clabs LE 0.
DELETE t_batch_errors.
CONTINUE.
ENDIF.
READ TABLE t_stck_cnt INTO w_stck_cnt
WITH KEY matnr = w_batch_errors-matnr
charg = w_batch_errors-charg.
IF sy-subrc = 0.
DELETE t_batch_errors.
ENDIF.
ENDLOOP.
ENDIF.
CHECK NOT t_batch_errors[] IS INITIAL.
Write Batch chak results to report
SKIP.
WRITE: / text-b02.
WRITE: / sy-uline(74).
WRITE: /2 'Material',
22 'Batch'.
WRITE: /2 sy-uline(32).
SKIP.
LOOP AT t_batch_errors INTO w_batch_errors.
WRITE: /2 w_batch_errors-matnr,
22 w_batch_errors-charg.
ENDLOOP.
ENDFORM. " post_process_checks
G E T _ I N T E R F A C E _ F I L E N A M E
FORM get_interface_filename USING filename lw_path.
DATA: i_file TYPE filename-fileintern,
out_filename LIKE v_path-pathextern.
CLEAR: out_filename.
i_file = filename.
get the interface filename to be used when creating file
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = i_file
IMPORTING
file_name = out_filename
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
MOVE out_filename TO lw_path.
IF filename NE c_archive_file. "RM080107
CONCATENATE lw_path 'NP_StockBalance.dat'
INTO lw_path.
*-- Begin RM080107 - Add timestamp to the archived file
ELSE.
CONCATENATE lw_path 'NP_StockBalance' sy-datum sy-uzeit '.dat'
INTO lw_path.
ENDIF.
*-- End RM080107
ELSE.
ENDIF.
ENDFORM. "get_interface_filename
*& Form move_file RM080107
Move the processed file to archive directory
FORM move_file.
*-- At last move the file to archive directory
OPEN DATASET p_arch FOR OUTPUT IN TEXT MODE.
IF sy-subrc = 0.
LOOP AT t_rawdata INTO w_rawdata.
TRANSFER w_rawdata TO p_arch.
ENDLOOP.
ENDIF.
CLOSE DATASET p_arch.
DELETE DATASET p_file.
ENDFORM. " move_fileHi,
S E L E C T I O N S C R E E N
SELECTION-SCREEN BEGIN OF BLOCK b1 WITH FRAME.
PARAMETERS: p_file LIKE rlgrap-filename,
p_arch LIKE rlgrap-filename. "RM080107
SELECTION-SCREEN SKIP.
PARAMETERS: p_mode LIKE ctu_params-dismode DEFAULT 'N'.
SELECTION-SCREEN END OF BLOCK b1.
I N C L U D E S
INCLUDE zwm_np_stock_recon_top.
INCLUDE zwm_np_stock_recon_f01.
I N I T I A L I Z A T I O N
INITIALIZATION.
PERFORM get_interface_filename USING c_interface_file p_file.
PERFORM get_interface_filename USING c_archive_file p_arch."RM080107
S T A R T O F S E L E C T I O N
START-OF-SELECTION.
PERFORM read_file USING p_file.
PERFORM pre_processing.
E N D O F S E L E C T I O N
END-OF-SELECTION.
PERFORM process_checks.
IF w_no_change = 'X'.
WRITE: / text-b03.
WRITE: / sy-uline(34).
ELSE.
PERFORM bdc_mi09.
PERFORM file_check_report.
PERFORM bdc_report.
ENDIF.
PERFORM post_process_checks.
*-- Move the processed file to archive directory
PERFORM move_file.
...*************.........first include...................************
INCLUDE ZWM_NP_STOCK_RECON_TOP *
Data declaration ----------------------------------------------
TYPES: st_rawdata(2000) TYPE c.
TYPES: BEGIN OF st_stck_cnt,
werks TYPE iseg-werks, "plant
lgort TYPE iseg-lgort, "storage location
matnr TYPE iseg-matnr, "material number
charg TYPE iseg-charg, "batch
vfdat TYPE mch1-vfdat, "Sell by date
lwedt TYPE mch1-lwedt, "Manufacture date
quarn(8) TYPE n, "qaunrantine quantity
menge(8) TYPE n, "quantity on hand
message(1), "Message Type (E/W/I)
msg_txt TYPE t100-text, "Message Text
zerostck(1), "Zero stock identifier "RM220307
END OF st_stck_cnt.
TYPES: BEGIN OF st_batch_errors,
matnr TYPE iseg-matnr, "material number
charg TYPE iseg-charg, "batch
clabs TYPE mchb-clabs, "Stock Balance
END OF st_batch_errors.
DATA:
t_rawdata TYPE TABLE OF st_rawdata,
w_rawdata TYPE st_rawdata,
t_stck_cnt TYPE TABLE OF st_stck_cnt,
d_stck_cnt TYPE TABLE OF st_stck_cnt, "RM191006
w_stck_cnt TYPE st_stck_cnt,
t_batch_errors TYPE TABLE OF st_batch_errors,
w_batch_errors TYPE st_batch_errors,
t_messtab LIKE bdcmsgcoll OCCURS 0,
w_messtab LIKE LINE OF t_messtab,
w_no_change.
CONSTANTS: c_interface_file(26) TYPE c VALUE 'ZNP_STOCK_RECON',
c_archive_file(26) TYPE c
VALUE 'ZNP_STOCK_RECON_ARCHIVE'. "RM080107
.*************................second include..........************
***INCLUDE ZWM_NEXTPHARMA_STOKRECON_F01 .
*& Form read_file
reads NextPharma file sent through via webmethods
-->P_FILENAME
FORM read_file USING p_filename.
CLEAR: t_rawdata,
w_rawdata.
REFRESH: t_rawdata.
OPEN DATASET p_filename FOR INPUT IN TEXT MODE.
IF sy-subrc <> 0.
MESSAGE e720(01).
ENDIF.
DO.
READ DATASET p_filename INTO w_rawdata.
IF sy-subrc <> 0.
EXIT.
ELSE.
APPEND w_rawdata TO t_rawdata.
ENDIF.
ENDDO.
CLOSE DATASET p_filename.
ENDFORM. " read_file
*& Form pre_processing
Read file values into internal table
FORM pre_processing.
DATA: lw_matnr TYPE iseg-matnr.
LOOP AT t_rawdata INTO w_rawdata.
lw_matnr = w_rawdata+21(20). "RM031006
lw_matnr = w_rawdata+22(18). "RM031006
CALL FUNCTION 'CONVERSION_EXIT_MATN1_INPUT'
EXPORTING
input = lw_matnr
IMPORTING
output = lw_matnr
EXCEPTIONS
length_error = 1
OTHERS = 2.
MOVE: lw_matnr TO w_stck_cnt-matnr.
w_stck_cnt-werks = w_rawdata+14(4).
w_stck_cnt-lgort = w_rawdata+18(4).
w_stck_cnt-charg = w_rawdata+84(25).
w_stck_cnt-vfdat = w_rawdata+109(8).
w_stck_cnt-lwedt = w_rawdata+117(8).
w_stck_cnt-quarn = w_rawdata+141(8).
w_stck_cnt-menge = w_rawdata+125(8).
APPEND w_stck_cnt TO t_stck_cnt.
CLEAR w_stck_cnt.
ENDLOOP.
SORT t_stck_cnt BY werks
lgort
matnr
charg.
DELETE ADJACENT DUPLICATES FROM t_stck_cnt.
ENDFORM. " pre_processing
*& Form bdc_mi09
Run file data via BDC TCODE: MI09
FORM bdc_mi09.
DATA: t_bdcdata TYPE TABLE OF bdcdata,
w_bdcdata TYPE bdcdata,
lw_datum(10) TYPE c,
lw_count(2) TYPE n.
WRITE sy-datum TO lw_datum DD/MM/YYYY.
<b>select single MATNR
WERKS
CHARG
from MCHA
into (l_matnr, l_werks, l_charg)
where matnr = w_stck_cnt-matnr
and werks = w_stck_cnt-werks.
and charg = w_stck_cnt-charg.
if sy-subrc ne 0.
continue.
endif.</b>
Front Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0700'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Enter
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '/00'.
APPEND w_bdcdata TO t_bdcdata.
Count Date
CLEAR w_bdcdata.
w_bdcdata-fnam = 'RM07I-ZLDAT'.
w_bdcdata-fval = lw_datum.
APPEND w_bdcdata TO t_bdcdata.
Document Date
CLEAR w_bdcdata.
w_bdcdata-fnam = 'RM07I-BLDAT'.
w_bdcdata-fval = lw_datum.
APPEND w_bdcdata TO t_bdcdata.
Plant
CLEAR w_bdcdata.
w_bdcdata-fnam = 'IKPF-WERKS'.
w_bdcdata-fval = w_stck_cnt-werks.
APPEND w_bdcdata TO t_bdcdata.
Storage Location
CLEAR w_bdcdata.
w_bdcdata-fnam = 'IKPF-LGORT'.
w_bdcdata-fval = w_stck_cnt-lgort.
APPEND w_bdcdata TO t_bdcdata.
LOOP AT t_stck_cnt INTO w_stck_cnt.
Do not submit items with Errors against them
CHECK w_stck_cnt-message NE 'E' AND
w_stck_cnt-zerostck NE 'X'.
"RM220307
lw_count = lw_count + 1.
Input Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0731'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Page Down
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '=P+'.
APPEND w_bdcdata TO t_bdcdata.
Material
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-MATNR(01)'.
w_bdcdata-fval = w_stck_cnt-matnr.
APPEND w_bdcdata TO t_bdcdata.
Batch
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-CHARG(01)'.
w_bdcdata-fval = w_stck_cnt-charg.
APPEND w_bdcdata TO t_bdcdata.
IF w_stck_cnt-menge NE 0.
Quantity
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-ERFMG(01)'.
w_bdcdata-fval = w_stck_cnt-menge.
APPEND w_bdcdata TO t_bdcdata.
*-- Begin RM220307 - We need to create an item when the quantity is zero
*-- in file and is non-zero in SAP
ELSE.
Zero Stock indicator
CLEAR w_bdcdata.
w_bdcdata-fnam = 'ISEG-XNULL(01)'.
w_bdcdata-fval = 'X'.
APPEND w_bdcdata TO t_bdcdata.
*-- End RM220307
ENDIF.
ENDLOOP.
CHECK lw_count NE 0.
After all line items have been input
Final Screen
CLEAR w_bdcdata.
w_bdcdata-program = 'SAPMM07I'.
w_bdcdata-dynpro = '0731'.
w_bdcdata-dynbegin = 'X'.
APPEND w_bdcdata TO t_bdcdata.
Save Document
CLEAR w_bdcdata.
w_bdcdata-fnam = 'BDC_OKCODE'.
w_bdcdata-fval = '=BU'.
APPEND w_bdcdata TO t_bdcdata.
CALL TRANSACTION 'MI09' USING t_bdcdata
MODE p_mode
MESSAGES INTO t_messtab.
ENDFORM. " bdc_mi09
*& Form bdc_report
Write BDC Messages.
FORM bdc_report.
DATA: lw_text TYPE t100-text.
SKIP.
WRITE: / text-b01.
WRITE: / sy-uline(21).
SKIP.
Write BDC Messages
LOOP AT t_messtab INTO w_messtab WHERE msgspra = sy-langu.
MESSAGE ID w_messtab-msgid TYPE w_messtab-msgtyp
NUMBER w_messtab-msgnr
WITH w_messtab-msgv1
w_messtab-msgv2
w_messtab-msgv3
w_messtab-msgv4
INTO lw_text.
WRITE: / lw_text.
ENDLOOP.
ENDFORM. " bdc_report
*& Form process_checks
Perform process check before creating BDC Session
FORM process_checks.
DATA: lw_clabs LIKE mchb-clabs,
lw_menge LIKE mchb-clabs,
lw_matnr LIKE mara-matnr,
lw_charg LIKE mch1-charg,
lw_fail,
lw_vfdat TYPE mch1-vfdat,
lv_sell TYPE c, "RM191006
lv_qty(8) TYPE c. "RM191006
CLEAR: d_stck_cnt[], d_stck_cnt. "RM191006
Check if any of the stock figures differ from current stock figures
LOOP AT t_stck_cnt INTO w_stck_cnt.
lw_menge = w_stck_cnt-menge.
SELECT SINGLE clabs INTO lw_clabs
FROM mchb
WHERE matnr = w_stck_cnt-matnr
AND werks = w_stck_cnt-werks
AND lgort = w_stck_cnt-lgort
AND charg = w_stck_cnt-charg.
IF sy-subrc = 0.
IF lw_clabs NE lw_menge.
lw_fail = 'X'.
*-- Begin RM220307 - Do not create PI item if the stock is zero in the
*-- file and is zero in SAP
EXIT.
ELSEIF lw_clabs = 0 AND lw_menge = 0.
w_stck_cnt-zerostck = 'X'.
MODIFY t_stck_cnt FROM w_stck_cnt.
ENDIF.
*-- End RM220307
ELSE.
lw_fail = 'X'.
ERROR
ENDIF.
ENDLOOP.
If no differences are found set NO CHANGE Flag
IF lw_fail NE 'X'.
w_no_change = 'X'.
EXIT.
ENDIF.
Check for Errors in file data
LOOP AT t_stck_cnt INTO w_stck_cnt.
CLEAR lv_sell. "RM191006
SELECT SINGLE matnr INTO lw_matnr
FROM mara
WHERE matnr = w_stck_cnt-matnr.
IF sy-subrc NE 0.
Invalid Material (E)
w_stck_cnt-message = 'E'.
w_stck_cnt-msg_txt = 'Invalid Material'.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
ENDIF.
SELECT SINGLE charg vfdat
INTO (lw_charg, lw_vfdat)
FROM mch1 "KOB01 - changed from MCHA
WHERE matnr = w_stck_cnt-matnr
AND charg = w_stck_cnt-charg.
AND werks = w_stck_cnt-werks.
IF sy-subrc NE 0.
Invalid Material Batch (E)
w_stck_cnt-message = 'E'.
CONCATENATE 'Invalid Material Batch for plant' w_stck_cnt-werks
INTO w_stck_cnt-msg_txt SEPARATED BY space.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
ELSE.
IF w_stck_cnt-vfdat <> lw_vfdat.
Sell by dates do not match (W)
w_stck_cnt-message = 'W'.
w_stck_cnt-msg_txt =
'Sell by Date does not match Shelf life Expiry Date'.
MODIFY t_stck_cnt FROM w_stck_cnt.
lv_sell = 'X'. "RM191006
CONTINUE. "RM191006
ENDIF.
ENDIF.
IF w_stck_cnt-quarn > 0.
Quarantine balance not Zero (W)
w_stck_cnt-message = 'W'.
*-- Begin RM191006
*-- We do want all warning messages on the report
lv_qty = w_stck_cnt-quarn.
CONDENSE lv_qty NO-GAPS.
CALL FUNCTION 'CONVERSION_EXIT_ALPHA_OUTPUT'
EXPORTING
input = lv_qty
IMPORTING
output = lv_qty.
w_stck_cnt-msg_txt = 'Quarantine balance is not zero'.
CONCATENATE 'Quarantine balance is ' lv_qty '- not zero'
INTO w_stck_cnt-msg_txt SEPARATED BY space.
MODIFY t_stck_cnt FROM w_stck_cnt.
CONTINUE.
IF lv_sell = 'X'.
APPEND w_stck_cnt TO d_stck_cnt.
CLEAR lv_sell.
ELSE.
MODIFY t_stck_cnt FROM w_stck_cnt.
ENDIF.
*-- End RM191006
ENDIF.
ENDLOOP.
*-- Begin RM191006
*-- Finally get all the records into dummy table to report
APPEND LINES OF t_stck_cnt TO d_stck_cnt.
SORT d_stck_cnt.
DELETE ADJACENT DUPLICATES FROM d_stck_cnt.
*-- End RM191006
ENDFORM. " process_checks
*& Form file_check_report
Write warning and Error messages from File checks
FORM file_check_report.
WRITE: /2 'Material',
22 'Batch',
32 'Sell By',
45 'Message Text'.
WRITE: /2 sy-uline(115).
SKIP.
LOOP AT t_stck_cnt INTO w_stck_cnt. "RM191006
LOOP AT d_stck_cnt INTO w_stck_cnt. "RM191006
CHECK w_stck_cnt-message NE ' '.
WRITE: /2 w_stck_cnt-matnr,
22 w_stck_cnt-charg,
32 w_stck_cnt-vfdat,
43 w_stck_cnt-message,
45 w_stck_cnt-msg_txt.
ENDLOOP.
ENDFORM. " file_check_report
*& Form post_process_checks
Check Material Batches in SAP against NP File
FORM post_process_checks.
RANGES: r_matnr FOR mchb-matnr,
r_lgort FOR mchb-lgort,
r_werks FOR mchb-werks.
SORT t_stck_cnt.
LOOP AT t_stck_cnt INTO w_stck_cnt.
AT END OF matnr.
r_lgort-sign = 'I'.
r_lgort-option = 'EQ'.
r_lgort-low = w_stck_cnt-lgort.
APPEND r_lgort.
r_werks-sign = 'I'.
r_werks-option = 'EQ'.
r_werks-low = w_stck_cnt-werks.
APPEND r_werks.
r_matnr-sign = 'I'.
r_matnr-option = 'EQ'.
r_matnr-low = w_stck_cnt-matnr.
APPEND r_matnr.
ENDAT.
ENDLOOP.
Select all material batches for NP Materials
SELECT matnr charg clabs
INTO TABLE t_batch_errors
FROM mchb
WHERE werks IN r_werks
AND lgort IN r_lgort.
IF sy-subrc EQ 0.
Check if the Material Batches are in the NP file
LOOP AT t_batch_errors INTO w_batch_errors.
Disregard Batches without positive unrestricted stock
IF w_batch_errors-clabs LE 0.
DELETE t_batch_errors.
CONTINUE.
ENDIF.
READ TABLE t_stck_cnt INTO w_stck_cnt
WITH KEY matnr = w_batch_errors-matnr
charg = w_batch_errors-charg.
IF sy-subrc = 0.
DELETE t_batch_errors.
ENDIF.
ENDLOOP.
ENDIF.
CHECK NOT t_batch_errors[] IS INITIAL.
Write Batch chak results to report
SKIP.
WRITE: / text-b02.
WRITE: / sy-uline(74).
WRITE: /2 'Material',
22 'Batch'.
WRITE: /2 sy-uline(32).
SKIP.
LOOP AT t_batch_errors INTO w_batch_errors.
WRITE: /2 w_batch_errors-matnr,
22 w_batch_errors-charg.
ENDLOOP.
ENDFORM. " post_process_checks
G E T _ I N T E R F A C E _ F I L E N A M E
FORM get_interface_filename USING filename lw_path.
DATA: i_file TYPE filename-fileintern,
out_filename LIKE v_path-pathextern.
CLEAR: out_filename.
i_file = filename.
get the interface filename to be used when creating file
CALL FUNCTION 'FILE_GET_NAME'
EXPORTING
logical_filename = i_file
IMPORTING
file_name = out_filename
EXCEPTIONS
file_not_found = 1
OTHERS = 2.
IF sy-subrc = 0.
MOVE out_filename TO lw_path.
IF filename NE c_archive_file. "RM080107
CONCATENATE lw_path 'NP_StockBalance.dat'
INTO lw_path.
*-- Begin RM080107 - Add timestamp to the archived file
ELSE.
CONCATENATE lw_path 'NP_StockBalance' sy-datum sy-uzeit '.dat'
INTO lw_path.
ENDIF.
*-- End RM080107
ELSE.
ENDIF.
ENDFORM. "get_interface_filename
*& Form move_file RM080107
Move the processed file to archive directory
FORM move_file.
*-- At last move the file to archive directory
OPEN DATASET p_arch FOR OUTPUT IN TEXT MODE.
IF sy-subrc = 0.
LOOP AT t_rawdata INTO w_rawdata.
TRANSFER w_rawdata TO p_arch.
ENDLOOP.
ENDIF.
CLOSE DATASET p_arch.
DELETE DATASET p_file.
ENDFORM. " move_file
Best regards,
Prashant -
Hi Experts,
I am doing an Interface, Journal Upload for Transaction FB01 (F-65).
I have to check the following ERROR Handlings.
1. How can I find out a profit Centres is blocked for posting?
2. How can I find out a GL Accounts are blocked for posting?
3. Incorrect VAT code is allocated.
Please explain me clearly.
Thanks & Regards
RajendraHi rajendra,
if you are using bdc, for uploading data, then the transaction itself will take care of raising the errors in case of erroneous data.
If you are able to get that eror message when you are doing the Fb01 transaction manually, the bdc will also result in the same error messages.
You hace to use an internal table of type bdcmsgcoll to collect such messages.
call transaction 'FB01' using it_bdcdata options from xctuparams messages into it_bdcmsgcoll.
loop at it_bdcmsgcoll.
call function 'FORMAT_MESSAGE'
exporting.
importing
message = lv_message.
write:/ lv_message.
endloop. -
RFC enabled function module is not runing the BDC code in it.
Dear Experts,
1. We have created a RFC enabled function module to change status of a activity and to save it we are using BDC code and we have also put the code in the RFC FM only.
The RFC fm is runing fine and changing the data and also saving it by runing the BDC when run in the R/3 system only.
But when i run the FM from portal its just chaning the status but not runing the BDC code in it.
below i am puting the code of the FM.
FUNCTION ZRFC_CRM_STATUS_CHANGE_EXTERN .
""Local Interface:
*" IMPORTING
*" VALUE(CHECK_ONLY) TYPE XFELD DEFAULT ' '
*" VALUE(CLIENT) LIKE SY-MANDT DEFAULT SY-MANDT
*" VALUE(OBJNR) TYPE CRM_JSTO-OBJNR OPTIONAL
*" VALUE(USER_STATUS) LIKE CRM_JEST-STAT
*" VALUE(SET_INACT) TYPE XFELD DEFAULT ' '
*" VALUE(SET_CHGKZ) LIKE CRM_JSTO-CHGKZ OPTIONAL
*" VALUE(XNOAUTO) LIKE CRM_JSTO_UPD-XNOAUTO OPTIONAL
*" VALUE(NO_CHECK) TYPE XFELD DEFAULT ' '
*" VALUE(ZOBJNR) TYPE CHAR80
*" VALUE(OBJECT_ID) TYPE CRMT_OBJECT_ID
*" EXPORTING
*" VALUE(STONR) LIKE TJ30-STONR
*" EXCEPTIONS
*" OBJECT_NOT_FOUND
*" STATUS_INCONSISTENT
*" STATUS_NOT_ALLOWED
*{ INSERT D60K900707 1
DATA: BEGIN OF JSTAT_TMP.
INCLUDE STRUCTURE JSTAT.
DATA: END OF JSTAT_TMP.
data: bdcdata like bdcdata occurs 0 with header line.
data: dire type CRMD_ACTIVITY_H-direction.
CLEAR: DIRE.
OBJNR = ZOBJNR.
MANDT = CLIENT.
JSTAT_TMP-STAT = USER_STATUS.
JSTAT_TMP-INACT = SET_INACT.
IF USER_STATUS+0(1) NE EXTERN.
RAISE STATUS_NOT_ALLOWED.
ENDIF.
Statusobjekt ggf. einlesen
PERFORM STATUS_READ USING OBJNR IOBTYP ISTSMA NOT_FOUND.
CHECK NOT_FOUND = OFF.
ggf. Änderungsbelege aktivieren
IF SET_CHGKZ = 'X' AND JSTO_BUF-CHGKZ = SPACE AND CHECK_ONLY = SPACE.
PERFORM SET_CHGKZ USING OBJNR.
ENDIF.
set XNOAUTO-flag if desired
IF XNOAUTO = 'X' AND CHECK_ONLY = SPACE.
PERFORM SET_XNOAUTO USING OBJNR.
ENDIF.
crm_jostd-OBJNR = OBJNR.
Status-Puffer füllen
REFRESH JEST_BUF_A.
REFRESH JEST_BUF_E.
CLEAR JEST_BUF_A.
CLEAR JEST_BUF_E.
CLEAR JEST_K.
MOVE MANDT TO JEST_K-MANDT.
MOVE crm_jostd-OBJNR TO JEST_K-OBJNR.
READ TABLE JEST_BUF WITH KEY JEST_K BINARY SEARCH.
IF SY-SUBRC IS INITIAL.
TABIX = SY-TABIX.
MOVE-CORRESPONDING JEST_BUF TO JEST_BUF_E.
APPEND JEST_BUF_E.
MOVE-CORRESPONDING JEST_BUF TO JEST_BUF_A.
MOVE MANDT TO JEST_BUF_A-MANDT.
APPEND JEST_BUF_A.
DO.
ADD 1 TO TABIX.
READ TABLE JEST_BUF INDEX TABIX.
IF SY-SUBRC IS INITIAL AND JEST_BUF-OBJNR = crm_jostd-OBJNR.
MOVE-CORRESPONDING JEST_BUF TO JEST_BUF_E.
APPEND JEST_BUF_E.
MOVE-CORRESPONDING JEST_BUF TO JEST_BUF_A.
MOVE MANDT TO JEST_BUF_A-MANDT.
APPEND JEST_BUF_A.
ELSE.
EXIT.
ENDIF.
ENDDO.
ENDIF.
g_no_check = no_check.
OBJNR = ZOBJNR.
PERFORM STATUS_CHANGE_EXTERN USING CHECK_ONLY
OBJNR
JSTAT_TMP
EXTERN.
clear g_no_check.
Zurückschreiben in Puffer
PERFORM CHG_JEST_BUF_E.
ggf. Statusordnungsnummer ermitteln
IF STONR IS REQUESTED.
CALL FUNCTION 'CRM_STATUS_READ'
EXPORTING
OBJNR = OBJNR
ONLY_ACTIVE = 'X'
IMPORTING
STONR = STONR.
ENDIF.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN =
*COMMIT WORK.
wait up to 10 seconds.
CLEAR bdcdata.
bdcdata-program = 'SAPLCRM_1O_MANAG_UI'.
bdcdata-dynpro = '0100'.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_OKCODE'.
bdcdata-fval = '=READ'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-program = 'SAPLCRM_1O_MANAG_UI'.
bdcdata-dynpro = '0510'.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_CURSOR'.
bdcdata-fval = 'GV_OBJECT_ID'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'GV_OBJECT_ID'.
bdcdata-fval = OBJECT_ID.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_OKCODE'.
bdcdata-fval = '=OKAY'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-program = 'SAPLCRM_1O_MANAG_UI'.
bdcdata-dynpro = '0100'.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_OKCODE'.
bdcdata-fval = '=1OMAIN_TT'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-program = 'SAPLCRM_1O_MANAG_UI'.
bdcdata-dynpro = '0100'.
bdcdata-dynbegin = 'X'.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_CURSOR'.
bdcdata-fval = 'CRMT_7010_ACTIVITY_UI-DIRECTION'.
APPEND bdcdata.
select single direction from CRMD_ACTIVITY_H into dire
where guid = objnr.
if sy-subrc = 0.
if dire = '0'.
dire = '1'.
elseif dire = '1'.
dire = ''.
elseif dire is initial.
dire = '1'.
endif.
endif.
CLEAR bdcdata.
bdcdata-fnam = 'CRMT_7010_ACTIVITY_UI-DIRECTION'.
bdcdata-fVAL = DIRE.
APPEND bdcdata.
CLEAR bdcdata.
bdcdata-fnam = 'BDC_OKCODE'.
bdcdata-fval = '=SAVE'.
APPEND bdcdata.
CALL TRANSACTION 'CRMD_BUS2000126' using bdcdata mode 'N'.
CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
EXPORTING
WAIT = 'X'
IMPORTING
RETURN =
*COMMIT WORK.
wait up to 5 seconds.
*} INSERT
ENDFUNCTION.
Thanks and regards
NeelDear experts,
Already the FM is RFC enabled other i won't be able to call it from portal
and coming to using the BAPI_ACTIVITY CHANGE fm that acting very weird so we are using the CRM EXTERN CHANGE USER STATUS fm which is working fine but the only problem is even when we comit from BAPI_TRANSACTION_COMMIT its not getting the delta queue of BW updated eventhough its chaning the status.
So for the above reasons we are using the BDC code in the FM for pressing the save button then its will update the changes to BW delta queue as well.
its working fine when i run it from the system in tcode SE37 only the BDC code is not runing when i am doing it from portal apart from the fm is chaning the status .
thanks and regards
Neel
Maybe you are looking for
-
Is it possible to save (or export) report output in XML format, it is ok with either WebI or DeskI report, here we are concerned about output format not what type of report we can use to produce the output in XML format. Thank you, Srini
-
ECC6.0 ABAP calling webservice XML
Hi, Is it possible to directly call a webservice from ECC 6.0 without using XI, so we can translate an XML request? Can we do that with proxy classes? Thank you, best regards. Ton Groot (SAP HR/ ESS/MSS)
-
Thumbnails of large picture images
Hi, I am having troubles with the thumbnail files of my Nikon Camera! It is a D800 and all is smooth excepts for the finder thumbnails. As you can see from the image I have selected the box "show icon preview" but only for D800 files it doesn't work.
-
How do you do post item validations or calculations?
In Oracle Forms, you can use Post Item triggers or When Validate Item triggers to validate data or do calculations as you move out of a form field. How can I do the same in Apex?
-
Error on System.exit(0)
Hi everybody. I'm running an application with JFrames. And everything works fine. But when i'm trying to close the main JFrame and reach the method System.exit(0); i get the next windows error. instruction on "0x77a7bb99" references to memory on "0x1