CHLinguistic Sample code doesn't add languages
I have a problem with CHLinguistic speller example in Adobe InDesign CS3 version 5.0. Based on this sample code, I want to create a speller for Lithuanian language, a different one than provided by Proximity, but it seems I can't change the vendor. Different vendor doesn't show up in Edit->Preferences->Dictionary for spelling. When I compile and load CHLinguistic plug-in as it is, I do not see Aramaic, English Zambia, Bemba Zambia, Bemba Botswana, and I cannot change the vendor for Bulgarian or Hungarian language dictionary. What might be a problem?
Jurate
Thank you, I have just run out all this patches, it's a so hard work, and it took me three days to run them.
Now I'll turn to test the effect of the patches to the ODM schema, if there is still any question, I'll turn to you for help, thanks in advance!
Similar Messages
-
FormattedText sample code doesn't work.
Hi -
In the supplied sample files with flash 8 (Samples &
Tutorials/Samples/Actionscript/Loadtext) there's a sample called
"formattedText.fla". It's exactly what I need... but it doesn't
work more than once. After one test of the file, without changing
anything, when I test again I get the unformatted text.
To get it to work again - *get this* - I have to close the
file and then open it and try again. It looks great...once.
I would really love this to work. I've attached the "factory"
code. Please try it more than once.
TIA some expert input on this.
JLThank you, I have just run out all this patches, it's a so hard work, and it took me three days to run them.
Now I'll turn to test the effect of the patches to the ODM schema, if there is still any question, I'll turn to you for help, thanks in advance! -
Regarding sample code to update partner function using SD_PARTNER_UPDATE
Hi All,
Please provide some sample code to update/add partner function using FM 'SD_PARTNER_UPDATE'.
regards
VishnuA better option would be to use a break point on this FM while creating a sales order. That way you will know how standard uses this FM.
Thanks,
Vikram.M -
Please add Forms/Reports in the Sample Code section
Hi
When we click on the Breadcrumb menu->Sample code
http://www.oracle.com/technology/sample_code/index.html
In the Sample ApplicationsDevelopment Tools there is no link for
Forms and Reports product. Please add these links there:
http://www.oracle.com/technology/sample_code/products/forms/index.html
http://www.oracle.com/technology/sample_code/products/reports/index.htmlGood point; we have made these additions.
Cheers, OTN -
Help with displaying image using OpenGL ES sample code - image size prb
I am using some sample code that currently displays an image 256x256 pixels. The code states the image size must be a power of 2. I have tried an image 289x289 (17^2) and it displays a square the same size as the 256x256 with a white background. I want an image 320x320 displayed. Should be obvious for people familiar with OpenGL. Here is the code which displays the image and rotates:
- (void)setupView
// Sets up an array of values to use as the sprite vertices.
const GLfloat spriteVertices[] = {
-0.5f, -0.5f,
0.5f, -0.5f,
-0.5f, 0.5f,
0.5f, 0.5f,
// Sets up an array of values for the texture coordinates.
const GLshort spriteTexcoords[] = {
0, 0,
1, 0,
0, 1,
1, 1,
CGImageRef spriteImage;
CGContextRef spriteContext;
GLubyte *spriteData;
size_t width, height;
// Sets up matrices and transforms for OpenGL ES
glViewport(0, 0, backingWidth, backingHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-1.0f, 1.0f, -1.5f, 1.5f, -1.0f, 1.0f);
glMatrixMode(GL_MODELVIEW);
// Clears the view with black
//glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glClearColor(255, 255, 255, 1.0f);
// Sets up pointers and enables states needed for using vertex arrays and textures
glVertexPointer(2, GL_FLOAT, 0, spriteVertices);
glEnableClientState(GLVERTEXARRAY);
glTexCoordPointer(2, GL_SHORT, 0, spriteTexcoords);
glEnableClientState(GLTEXTURE_COORDARRAY);
// Creates a Core Graphics image from an image file
spriteImage = [UIImage imageNamed:@"bottle.png"].CGImage;
// Get the width and height of the image
width = CGImageGetWidth(spriteImage);
height = CGImageGetHeight(spriteImage);
// Texture dimensions must be a power of 2. If you write an application that allows users to supply an image,
// you'll want to add code that checks the dimensions and takes appropriate action if they are not a power of 2.
if(spriteImage) {
// Allocated memory needed for the bitmap context
spriteData = (GLubyte *) malloc(width * height * 4);
// Uses the bitmatp creation function provided by the Core Graphics framework.
spriteContext = CGBitmapContextCreate(spriteData, width, height, 8, width * 4, CGImageGetColorSpace(spriteImage), kCGImageAlphaPremultipliedLast);
// After you create the context, you can draw the sprite image to the context.
CGContextDrawImage(spriteContext, CGRectMake(0.0, 0.0, (CGFloat)width, (CGFloat)height), spriteImage);
// You don't need the context at this point, so you need to release it to avoid memory leaks.
CGContextRelease(spriteContext);
// Use OpenGL ES to generate a name for the texture.
glGenTextures(1, &spriteTexture);
// Bind the texture name.
glBindTexture(GLTEXTURE2D, spriteTexture);
// Speidfy a 2D texture image, provideing the a pointer to the image data in memory
glTexImage2D(GLTEXTURE2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GLUNSIGNEDBYTE, spriteData);
// Release the image data
free(spriteData);
// Set the texture parameters to use a minifying filter and a linear filer (weighted average)
glTexParameteri(GLTEXTURE2D, GLTEXTURE_MINFILTER, GL_LINEAR);
// Enable use of the texture
glEnable(GLTEXTURE2D);
// Set a blending function to use
glBlendFunc(GL_ONE, GLONE_MINUS_SRCALPHA);
// Enable blending
glEnable(GL_BLEND);
// Updates the OpenGL view when the timer fires
- (void)drawView
// Make sure that you are drawing to the current context
[EAGLContext setCurrentContext:context];
glBindFramebufferOES(GLFRAMEBUFFEROES, viewFramebuffer);
glRotatef(direction * 3.0f, 0.0f, 0.0f, 1.0f);
glClear(GLCOLOR_BUFFERBIT);
glDrawArrays(GLTRIANGLESTRIP, 0, 4);
glBindRenderbufferOES(GLRENDERBUFFEROES, viewRenderbuffer);
[context presentRenderbuffer:GLRENDERBUFFEROES];
}+I am using some sample code that currently displays an image 256x256 pixels. The code states the image size must be a power of 2. I have tried an image 289x289 (17^2)+
The phrase "a power of 2" refers to 2^x so your choices above 256 are 512, 1024 etc.
The texture size has nothing to do with the displayed size - OGL will stretch or shrink your texture to fit the size of the polygon you're displaying it on. I recommend you scale your image to 256x256 and work on make the polygon the size you want and work on your image quality from there.
You can work on the size or orientation of the poly surface to make it larger but OGL doesn't support setting a model to a screen image size or anything like that. That sounds more like a Quartz or CoreGraphics kind of thing if you want to set an exact screen size to the pixel.
HTH,
=Tod
PS You can display your code correctly by using { code } (without the spaces) on either side of your code block. -
DX11 Video Renderer sample code is incomplete.
Your ref : http://code.msdn.microsoft.com/windowsdesktop/DirectX-11-Video-Renderer-0e749100
Dear Sirs,
So ... that project creates a DLL, which isn't a standard EVR so I have no clue how to fire it up.
Feeback states that the only way to test it is to use a closed source version of topedit in the Windows 8 SDK.
That isn't very helpful as that doesn't demonstrate how to use the thing.
Please provide sample code - the simpler the better that demonstrates how to use this DirectX11 Video Renderer or a derivative to throw a video texture on some simple geometry on the screen.
As a follow up, please demonstrate multiple video textures playing simultaneously to demonstrate the API supports this feature. If it doesn't, please add this support :)
Sorry to give you a hard time but I need a solid video API and if Windows doesn't provide one, it's time to look to other operating systems for a robust solution.
Regards,
Steve.Media Foundation in Windows 8 added the
IMFMediaEngine interface, which can be used to very easily set up media playback without dealing with media sessions, media sources, etc. The best part is that this interface lets you set it up as a D3D11 frame server and you can just pull frames from it.
There is a
sample that shows how to do this. There is no D3D11 support in Media Foundation before Win8, which is also when this API was introduced. It was said above, but before Win8 you need to continue to transfer textures between D3D9 and D3D11.
Although it's probably not the method you want to use, since you asked, I'll add some info about the sample. The DX11 video renderer sample shows how to create a video renderer that is compatible with D3D11 hardware acceleration, but it's limited to the
most fundamental property of a video renderer: presenting a video to a window. The sample's presenter implements IMFVideoDisplayControl just like the EVR does, so you can call IMFVideoDisplayControl::SetVideoWindow in the same way to send output to a given
HWND. You can see in Presenter.h that it actually only implements SetVideoWindow and Get/SetFullscreen for this interface; the full EVR implements the entire interface.
If you wanted to modify the sample for presenting into a larger D3D scene, you would need to change the logic a bit so that the presenter would give out textures or something instead of presenting to a swap-chain. This would roughly need to happen where
the current implementation calls CPresenter::PresentFrame. Again, I think IMFMediaEngine is much simpler for your purposes, but it's certainly possible to adapt the sample if you really need the extra flexibility. -
How to Delete a Specific Cell in a Matrix + plz Give sample code for Lost F
hello there !!!!
i m in Great Trouble please help me out..
i have to search for a specific Column n then i have to validate that portion, similarly after validating i have to add update delete all the fuction apply... so please help me i m very upset.
Public Sub HandleEventts_Allowance(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef EventEnum As SAPbouiCOM.BoEventTypes, ByRef BubbleEvent As Boolean)
Try
Dim Count As Int32
If FormUID.Equals("Allowance") Then
If (pVal.BeforeAction = True) And (pVal.ItemUID = "1") And (pVal.EventType = SAPbouiCOM.BoEventTypes.et_CLICK) Then
If pVal.Row = 0 Then
'BubbleEvent = False
End If
o_Matrix = SBO_Application1.Forms.Item(FormUID).Items.Item("MatAllow").Specific
Count = o_Matrix.RowCount()
SBO_Application1.MessageBox("Matrix Count is " & o_Matrix.RowCount)
Validate(pVal, EventEnum, FormUID, BubbleEvent)
End If
End If
Catch ex As Exception
SBO_Application1.MessageBox(ex.Message)
End Try
End Sub
Public Sub Validate(ByRef pval As SAPbouiCOM.ItemEvent, ByRef EventEnum As SAPbouiCOM.BoEventTypes, ByVal FormUID As String, ByRef BubbleEvent As Boolean)
Dim Row, ii As Integer
o_Matrix = SBO_Application1.Forms.Item(FormUID).Items.Item("MatAllow").Specific
o_Matrix.FlushToDataSource()
Try
For Row = 2 To o_Matrix.RowCount
StrName = Convert.ToString(DBtable.GetValue("CardCode", Row - 1)).Trim()''' i got Error over there n rest of my code is also not working pls...
StrUId = Convert.ToString(DBtable.GetValue("U_AlwID", Row - 1)).Trim()
StrEnter = Convert.ToString(DBtable.GetValue("U_SupEnter", Row - 1)).Trim()
StrExist = Convert.ToString(DBtable.GetValue("U_SupExist", Row - 1)).Trim()
If Row - 1 < DBtable.Rows.Count - 1 Or (Not (StrName.Equals(String.Empty) And StrUId.Equals(String.Empty) And (StrEnter.Equals(String.Empty) Or StrExist.Equals(String.Empty))) And (Row - 1 = DBtable.Rows.Count - 1)) Then
If (Not StrName.Equals(String.Empty)) And ((StrUId.Equals(String.Empty) Or StrEnter.Equals(String.Empty)) Or StrExist.Trim.Equals(String.Empty)) Then
SBO_Application1.StatusBar.SetText("Invalid values provided!Blank values not vllowed", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
BubbleEvent = False
Exit Sub
End If
For ii = Row To DBtable.Rows.Count - 1
If Convert.ToString(DBtable.GetValue("ColName", ii)).Trim().Equals(StrName.Trim()) Then
SBO_Application1.StatusBar.SetText("Invalid Allowance ID: Duplication Not Allowed", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
oForm.Mode = SAPbouiCOM.BoFormMode.fm_UPDATE_MODE
BubbleEvent = False
Exit Sub
End If
Next
If CDbl(StrName) < 0 Then
SBO_Application1.StatusBar.SetText("Invalid values provided!Blank values not vllowed", SAPbouiCOM.BoMessageTime.bmt_Short, SAPbouiCOM.BoStatusBarMessageType.smt_Error)
BubbleEvent = False
Exit Sub
End If
End If
Next Row
Catch ex As Exception
SBO_Application1.MessageBox(ex.Message)
End Try
End SubHello there
sir i want to Add Update and delete these three basic operation onto the Matrix, Sir u game me a Sample code of Delete a specific Column...
Sir can u do me a favour pls leave every thing n just told me how to update a matrix ,like i have to fill the matrix field through the DATABASE table now i want to update the DataBase table from the matrix..
i just only know thta i have to fill back database table with the help of FLUSHTODATABASE()
here is my Sample Code...n i have to update in the validate portion...
Public Sub HandleEventts_Allowance(ByVal FormUID As String, ByRef pVal As SAPbouiCOM.ItemEvent, ByRef EventEnum As SAPbouiCOM.BoEventTypes, ByRef BubbleEvent As Boolean)
Try
Dim oCellValue As SAPbouiCOM.EditText
If FormUID.Equals("Allowance") Then
If (pVal.ItemUID = "MatAllow") Then
If pVal.Row = 0 Then Exit Sub
o_Matrix = SBO_Application1.Forms.Item(FormUID).Items.Item("MatAllow").Specific
If (pVal.Row > o_Matrix.RowCount) Then Exit Sub
oForm = SBO_Application1.Forms.Item(FormUID)
If (pVal.ItemUID = "1" Or EventEnum = SAPbouiCOM.BoEventTypes.et_CLICK) Then
o_Matrix = SBO_Application1.Forms.Item(FormUID).Items.Item("MatAllow").Specific
If pVal.ColUID = "ColName" And pVal.BeforeAction = True Then
If pVal.Row = 0 Then Exit Sub
oCellValue = CType(o_Matrix.Columns.Item(pVal.ColUID).Cells.Item(pVal.Row).Specific(), SAPbouiCOM.EditText)
If (oCellValue.Value.Trim().Equals(String.Empty) And o_Matrix.RowCount <> pVal.Row) Then
SBO_Application1.StatusBar.SetText("Invalid Allowance ID: Blank Value Not Allowed", )
oCellValue.Active = True
BubbleEvent = False
Exit Sub
End If
End If
End If
End If
End If
Validate(pVal, EventEnum, FormUID, BubbleEvent)
Catch ex As Exception
SBO_Application1.MessageBox(ex.Message)
End Try
End Sub
Public Sub Validate(ByRef pval As SAPbouiCOM.ItemEvent, ByRef EventEnum As SAPbouiCOM.BoEventTypes, ByVal FormUID As String, ByRef BubbleEvent As Boolean)
Dim str, str1 As String
Dim checkbox1, Checkbox2 As SAPbouiCOM.CheckBox
Dim o_Matrix As SAPbouiCOM.Matrix
Dim Sum As Integer
Dim oRecordset As SAPbobsCOM.Recordset
Dim Container As Integer
Dim Count As Int32
o_Matrix = SBO_Application1.Forms.Item(FormUID).Items.Item("MatAllow").Specific
oRecordset = o_CompanyObj.GetBusinessObject(SAPbobsCOM.BoObjectTypes.BoRecordset)
Try
For Count = 0 To DBtable.Rows.Count - 1
CodeFill = Convert.ToString(DBtable.GetValue("Name", Count).Trme())
NameID = Convert.ToString(DBtable.GetValue("ColUID", Count).Trim())
Price = Convert.ToString(DBtable.GetValue("ColPrice", Count).Trim())
Quantity = Convert.ToString(DBtable.GetValue("ColQuant", Count).Trim())
Total = Convert.ToString(DBtable.GetValue("ColTotal", Count).Trim())
checkbox1 = o_Matrix.Columns.Item("ColSEnter").Cells.Item(Count).Specific
Checkbox2 = o_Matrix.Columns.Item("ColSExist").Cells.Item(Count).Specific
If (checkbox1.Checked = True) And (Checkbox2.Checked = True) Then
Dim Sql As String
Sql = "Update [@Supplier] Set U_Price=' " & Price & " ',U_ID=" & NameID & "Where Name ='" & CodeFill & " '"
oRecordset.DoQuery(Sql)
End If
Next Count
SBO_Application1.MessageBox("Record was Updated")
Catch ex As Exception
SBO_Application1.MessageBox(ex.Message)
End Try
End Sub -
Error while running a sample code
Hello,
I 'm getting the following error while i'm trying to run a
sample code which I have imported into Flex 3.
===================================================================
Severity and Description Path Resource Location Creation Time
Id
unable to open 'C:\Documents and Settings\sn55179\My
Documents\Flex Builder
3\FlexForDummies_Chapter3_Code\libs'FlexForDummies_Chapter3_Code
Unknown 1237909480511 215
===================================================================
Can anyone help me in resolving this issue.
Many thanks in advance.It's very frustrating that FB stops working when the libs
folder is missing. If you are checking in project files to a source
control app like Perforce, empty folders don't get added, so if you
don't add an initial dummy file, the next time you do a clean sync,
the libs folder may not be there, and even though there is nothing
there, FB complains. :-( -
Simple sample code to display a Crystal Report from Crystal Enterprise?
I am looking for a sample application that will "simply" view a report stored on our Crystal Enterprise server. I have looked at "boesdk_net_samples_12.zip", but that isn't really what I am looking for. And, the "CrystalReportViewer" and "CrystalReportSource" add ins for Visual Studio seem to only work with a "local" file (instead of one Managed or UnManaged on our Crystal Enterprise server).
Can anyone point me to the right place? (Navigating the SAP site is so damn confusing!)Hi Shayne,
You are not clear on how you will know which report you want and for which user? You can query the CMS database for the user and get all of their reports but without knowing which report object ID to get you will need to have the user select one. Unless you simply assume you want the last one, but if you don't give them a choice and they miss one day, or what ever your parameter is to select, there will be no way to get back to that report.
For sample code on how to query the BOE Server look in the Enterpise SDK samples. You do need to use managed code. I don't suggest going into the FRS\output folder to use unmanaged reporting. There are a lot of folders created and it's easier to simply query the CMS database to get the latest instance.
Since you have BOE you should also have a support contract. I suggest you log a case on line in Service Market Place and get a dedicated Engineer to assist you.
This may be simply easier for you to use the Personal Favorites folder of the user so they can browse all report instances belonging to them. I suggest you talk to the BOE Administrator for more info on what BOE is capable of doing. what you want is fairly easy to manage with Enterprise itself.
Thank you
Don -
Badi ME_PROCESS_REQ_CUST Sample Code required for changing the values
Dear Friends,
I am new to the Badi technology. We would like to populate/change the standard field values, (Purchasing group) during Purchase Requisition creation/change.
Method --> PROCESS_ITEM.
I tried the following code, but system blnaks out all the field values entered during PR creation.
Appreciate, if you could provide me some sample code which can be of help.
Reg
Kumar
Sample code----
METHOD if_ex_me_process_req_cust~process_item .
DATA: k_mereqitem TYPE mereq_item,
om_data type mereq_item,
om_datax type mereq_itemx,
k_mereqitem = im_item->get_data( ).
check im_count = 1.
if k_mereqitem-bsart = 'ST' and
k_mereqitem-loekz = ' '.
om_data-pstyp = '5'. " assign default item category code
om_data-bnfpo = k_mereqitem-bnfpo.
om_data-WERKS = k_mereqitem-WERKS.
om_datax-pstyp = 'X'.
call method im_item->set_datax
exporting im_datax = om_datax.
call method im_item->set_data
exporting im_data = om_data.
endif.
ENDMETHOD.Hi Kumar,
i have not a special solution for your case, but i use this BADI with great effort
As my comments in example are in german lg. i explain in short words what i do:
X) define data
1) select data from base item
1a) header-data
1b) item data (easy)
1c) accounting data
2+3) check field values, post warning message + mostly change values + sometimes set cursor focus on field
Have a look and give me some points if my example increased your BADI knowledge
regards
Jörg
METHOD if_ex_me_process_po_cust~process_item .
* Business-Add-Inn ME_PROCESS_PO_CUST
* Jörg Sauterleute - 23.12.2005
* Ablauf:
* 1. Datenbschaffung
* 2. Feldänderungen prüfen + Warnung ausgeben
* 3. Feldinhalte prüfen + evtl. ändern u. Hinweis ausgeben
DATA: ls_mepoitem TYPE mepoitem,
ls_mepoheader TYPE mepoheader,
ls_mepoaccounting TYPE mepoaccounting.
* Interfacereferenz auf <if_purchase_order_mm>
DATA: header_obj TYPE REF TO if_purchase_order_mm.
* Interfacereferenz auf <if_purchase_order_account_mm> über Tabelle
DATA: it_accountings TYPE purchase_order_accountings, "Tabelle
accounting_obj TYPE purchase_order_accounting.
* Include für Ausgabe von Meldungen
* im BAdI ME_PROCESS_PO_CUST niemals ABAP-Statement MESSAGE verwenden!
INCLUDE mm_messages_mac.
* Hilfsvariablen
DATA: h_change_mepoitem TYPE c,
h_text TYPE string.
IF sy-sysid = 'HLT'. break sau. ENDIF.
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 1. Datenbeschaffung
* Kopfdaten
header_obj = im_item->get_header( ).
ls_mepoheader = header_obj->get_data( ).
* Positionsdaten
ls_mepoitem = im_item->get_data( ).
* Kontierungsdaten (Accounting) über Tabelle it_accountings
it_accountings = im_item->get_accountings( ).
* ...IF eingebaut, weil sonst später Abbruch, wenn sy-subrc <> 0
IF NOT ls_mepoitem-knttp IS INITIAL.
LOOP AT it_accountings INTO accounting_obj.
ls_mepoaccounting = accounting_obj-accounting->get_data( ).
ENDLOOP.
ENDIF.
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 2. Daten prüfen -> Warnmeldung
* Feld Empfänger (Kontierung) prüfen -> Warnmeldung
IF ls_mepoheader-ekorg = '1000' AND
ls_mepoheader-bsart = 'IB'.
IF NOT ls_mepoitem-knttp IS INITIAL.
CASE ls_mepoheader-ekgrp.
WHEN '500' OR '501'.
IF NOT ls_mepoaccounting-wempf IS INITIAL.
mmpur_metafield mmmfd_recipient. "Warenempfänger - Cursor setzen
mmpur_message_forced 'I' 'ME' '303' text-011 '' '' ''.
* Warnmeldung wieder aus Protokoll entfernen.
IF ls_mepoaccounting-wempf IS INITIAL.
mmpur_remove_messages_by_id ls_mepoaccounting-id.
mmpur_business_obj_id ls_mepoaccounting-id.
ENDIF.
ENDIF.
WHEN OTHERS.
IF ls_mepoaccounting-wempf IS INITIAL.
mmpur_metafield mmmfd_recipient. "Warenempfänger - Cursor setzen
mmpur_message_forced 'W' 'ME' '303' text-010 '' '' ''.
ENDIF.
* Warnmeldung wieder aus Protokoll entfernen.
IF NOT ls_mepoaccounting-wempf IS INITIAL.
mmpur_remove_messages_by_id ls_mepoaccounting-id.
mmpur_business_obj_id ls_mepoaccounting-id.
ENDIF.
ENDCASE.
ENDIF.
ENDIF.
* Ende Feld Empfänger (Kontierung) prüfen -> Warnmeldung
* Ende test
* ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
* 3. Positionsdaten prüfen/ändern -> setzen
CLEAR: h_change_mepoitem,
h_text.
* Kennzeichen Wareneingang prüfen/ändern
* Belegart 'NB' immer mit "Wareneingang" wegen Log. Rechnungsprüfung
* Belegart 'IB' immer ohne "Wareneingang" weil Einsatz Workflow
* (Kennzeichen 'WEPOS' setzen/nicht setzen)
IF NOT ls_mepoitem-knttp IS INITIAL.
CASE ls_mepoheader-bsart.
WHEN 'NB'.
* Prüfung ob gesetzt
* Wenn nicht, dann setzen und Daten übergeben
* Cursor auf Metafeld (aus Typgruppe MMMFD) für Fehlerbehandlung
IF ls_mepoitem-wepos IS INITIAL.
ls_mepoitem-wepos = 'X'.
h_change_mepoitem = 'X'.
* im_item->set_data( EXPORTING im_data = ls_mepoitem ).
h_text = text-001.
mmpur_metafield mmmfd_gr_ind . "WE-Kennzeichen - Cursor setzen
* message erst später ausführen!
* mmpur_message_forced 'I' 'ME' '303' text-001 '' '' ''.
ENDIF.
WHEN 'IB'.
* Prüfung ob nicht gesetzt
* Wenn doch, dann entfernen und Daten übergeben
* Cursor auf Metafeld (aus Typgruppe MMMFD) für Fehlerbehandlung
IF NOT ls_mepoitem-wepos IS INITIAL.
ls_mepoitem-wepos = ' '.
h_change_mepoitem = 'X'.
* im_item->set_data( EXPORTING im_data = ls_mepoitem ).
h_text = text-002.
mmpur_metafield mmmfd_gr_ind . "WE-Kennzeichen - Cursor setzen
* message erst später ausführen!
* mmpur_message_forced 'I' 'ME' '303' text-002 '' '' ''.
ENDIF.
ENDCASE.
ENDIF.
* Ende Kennzeichen Wareneingang prüfen/ändern
* Kennzeichen aut. WE-Abrech. (Rechnung) prüfen/ändern
* (für autom. Gutschriftsverfahren Verpackungseinkauf)
* Kreditordaten
DATA: it_lfm1 TYPE TABLE OF lfm1,
wa_lfm1 TYPE lfm1.
IF ls_mepoheader-ekorg = '1000' AND
ls_mepoheader-bsart = 'NB' OR
ls_mepoheader-bsart = 'KA'.
IF ls_mepoitem-xersy IS INITIAL AND
ls_mepoitem-umson IS INITIAL. "kostenlose Lieferung
SELECT * FROM lfm1 INTO CORRESPONDING FIELDS OF TABLE it_lfm1
WHERE lifnr = ls_mepoheader-lifnr AND
ekorg = ls_mepoheader-ekorg.
IF sy-subrc = 0.
READ TABLE it_lfm1 INTO wa_lfm1 INDEX 1.
IF wa_lfm1-xersy = 'X'.
ls_mepoitem-xersy = 'X'.
h_change_mepoitem = 'X'.
* im_item->set_data( EXPORTING im_data = ls_mepoitem ).
h_text = text-005.
mmpur_metafield mmmfd_ers. " Kennz. aut.WE-Abrechnung - Cursor setzen
* message erst später ausführen!
* mmpur_message_forced 'I' 'ME' '303' text-005 '' '' ''.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* Ende Kennzeichen aut. WE-Abrech. (Rechnung) prüfen/ändern
* Kennzeichen WE-bezogene Rechnungsprüfung (Rechnung) prüfen/ändern
* (für autom. Gutschriftsverfahren Verpackungseinkauf)
* Kreditordaten bereits deklariert
* DATA: it_lfm1 TYPE TABLE OF lfm1,
* wa_lfm1 TYPE lfm1.
IF ls_mepoitem-knttp IS INITIAL.
* nicht anwenden bei kontierten Bestellungen
IF ls_mepoitem-pstyp = 0.
* nicht anwenden bei gefülltem Positionstyp (z.B. 'L' = Lohnbearbeitung, Preis 0,00 EUR)
IF ls_mepoheader-ekorg = '1000' AND
ls_mepoheader-bsart = 'NB' OR
ls_mepoheader-bsart = 'KA'.
IF ls_mepoitem-webre IS INITIAL AND
ls_mepoitem-umson IS INITIAL. "kostenlose Lieferung
SELECT * FROM lfm1 INTO CORRESPONDING FIELDS OF TABLE it_lfm1
WHERE lifnr = ls_mepoheader-lifnr AND
ekorg = ls_mepoheader-ekorg.
IF sy-subrc = 0.
READ TABLE it_lfm1 INTO wa_lfm1 INDEX 1.
IF wa_lfm1-webre = 'X'.
ls_mepoitem-webre = 'X'.
h_change_mepoitem = 'X'.
* im_item->set_data( EXPORTING im_data = ls_mepoitem ).
h_text = text-006.
mmpur_metafield mmmfd_gr_based_iv. "WE-bezogene RP - Cursor setzen
* message erst später ausführen!
* mmpur_message_forced 'I' 'ME' '303' text-006 '' '' ''.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
* Ende Kennzeichen WE-bezogene Rechnungsprüfung (Rechnung) prüfen/ändern
** Kennzeichen Auftragsbestätigungspflicht prüfen/ändern
** (bisher nur Natec)
** Infosatzdaten (Konditionen) deklarieren
** Verweis of Tabelle mit Kopfzeilen immer mit TYPE TABLE OF
* DATA: it_ekomd TYPE TABLE OF ekomd,
* wa_ekomd TYPE ekomd.
* IF ls_mepoheader-ekorg = '1300' AND
* ls_mepoheader-bsart = 'NB' .
* CALL FUNCTION 'ME_GET_INFORECORD_CONDITIONS'
* EXPORTING
* i_ekorg = ls_mepoheader-ekorg
* i_esokz = '0' " '0' = NB
* i_infnr = ls_mepoitem-infnr
* i_lifnr = ls_mepoheader-lifnr
* i_matkl = ls_mepoitem-matkl
* i_matnr = ls_mepoitem-matnr
* i_werks = ls_mepoitem-werks
* TABLES
* tekomd = it_ekomd.
* SORT it_ekomd BY datbi DESCENDING.
* READ TABLE it_ekomd INTO wa_ekomd INDEX 1.
* CASE ls_mepoheader-ekorg.
* WHEN '1300'.
** Anforderung Natec: wenn Infosatz-Kondition
** a) leer o. nicht gültig => AB setzen, wenn fehlt
** b) älter 2 Monate => AB setzen, wenn fehlt
** c) nicht älter 2 Monate => AB entfernen, wenn gesetzt
** Hilfsvariablen
* DATA: h_vgldat TYPE sy-datum. " Vergleichsdatum
* DATA: h_ergebnis TYPE c.
** Alter der Infosatzkondition ermitteln.
* CALL FUNCTION 'CCM_GO_BACK_MONTHS'
* EXPORTING
* currdate = sy-datum
* backmonths = '002'
* IMPORTING
* newdate = h_vgldat.
* IF wa_ekomd-datbi < sy-datum OR " gefunden Kondition nicht gültig oder
* wa_ekomd-datbi IS INITIAL. " keine Kondition gefunden
* h_ergebnis = 'a'.
* ENDIF.
* IF wa_ekomd-datab < h_vgldat.
* h_ergebnis = 'b'.
* ENDIF.
* IF wa_ekomd-datab > h_vgldat.
* h_ergebnis = 'c'.
* ENDIF.
** Prüfung ob nicht gesetzt
* IF ls_mepoitem-kzabs = ' ' AND
* h_ergebnis = 'a' OR
* h_ergebnis = 'b' .
* ls_mepoitem-kzabs = 'X'.
* h_change_mepoitem = 'X'. "Merker setzen, geändert wird am Schluss
** im_item->set_data( EXPORTING im_data = ls_mepoitem ).
* h_text = text-003.
** message erst später ausführen!
** mmpur_message_forced 'I' 'ME' '303' text-004 '' '' ''.
* ENDIF.
** Prüfung ob gesetzt
* IF ls_mepoitem-kzabs = 'X' AND
* h_ergebnis = 'c' .
* ls_mepoitem-kzabs = ' '.
* h_change_mepoitem = 'X'. "Merker setzen, geändert wird am Schluss
** im_item->set_data( EXPORTING im_data = ls_mepoitem ).
* h_text = text-004.
** message erst später ausführen!
** mmpur_message_forced 'I' 'ME' '303' text-003 '' '' ''.
* ENDIF.
* ENDCASE.
* ENDIF.
** Ende Kennzeichen Auftragsbestätigungspflicht prüfen/ändern
* Bestell-/Bestellpreis-Mengeneinheit prüfen/setzen
DATA: h_txz01 TYPE mepoitem-txz01. " Materialkurztext
IF ( ls_mepoheader-ekorg = '1000' OR
ls_mepoheader-ekorg = '1500' ) AND
ls_mepoheader-bsart = 'IB' AND
NOT ls_mepoitem-knttp IS INITIAL.
* Vergleichen ob eingegebene Mengeneinheit in Kurztext "avisiert"
CONCATENATE '(' ls_mepoitem-meins ')' INTO h_txz01.
IF ls_mepoitem-txz01 CS h_txz01.
IF NOT ls_mepoitem-meins IS INITIAL.
mmpur_metafield mmmfd_unit . "Steuer-Kennz. - Cursor setzen
mmpur_message_forced 'W' 'ME' '303' 'ME' ls_mepoitem-meins
text-031 ''.
ENDIF.
* sonst standarmäßig 'LE' setzen wegen Problemen bei Obligo
ELSE.
IF NOT ls_mepoitem-meins = 'LE'.
ls_mepoitem-meins = 'LE'.
ls_mepoitem-bprme = 'LE'.
h_change_mepoitem = 'X'.
* im_item->set_data( EXPORTING im_data = ls_mepoitem ).
h_text = text-030.
mmpur_metafield mmmfd_unit . "Steuer-Kennz. - Cursor setzen
* message erst später ausführen!
* mmpur_message_forced 'I' 'ME' '303' text-030 '' '' ''.
ENDIF.
ENDIF.
ENDIF.
* Ende Bestell-Mengeneinheit prüfen/ändern
* Steuerkennzeichen prüfen/setzen (für EK-Gruppe 500,501)
IF ls_mepoheader-ekorg = '5000' AND
ls_mepoitem-matnr IS INITIAL.
CASE ls_mepoheader-ekgrp.
WHEN '500' OR '501'.
IF ls_mepoitem-mwskz IS INITIAL.
ls_mepoitem-mwskz = 'V4'.
h_change_mepoitem = 'X'.
* " im_item->set_data( EXPORTING im_data = ls_mepoitem ).
* h_text = text-020.
* mmpur_metafield mmmfd_tax_code . "Cursor Steuer-Kennz.
* " message erst später ausführen!
* " mmpur_message_forced 'I' 'ME' '303' text-020 '' '' ''.
ENDIF.
ENDCASE.
ENDIF.
* Ende Steuerkennzeichen prüfen/ändern
* zu 3.
* zum Schluss noch die geänderten mepoitem-xxxx setzen
* + gleiche Meldungen (I ME 303) ausgeben
IF h_change_mepoitem = 'X'.
im_item->set_data( EXPORTING im_data = ls_mepoitem ).
ENDIF.
IF NOT h_text IS INITIAL.
mmpur_message_forced 'I' 'ME' '303' h_text '' '' ''.
ENDIF.
* Ende Daten prüfen/ändern -> setzen
ENDMETHOD. "IF_EX_ME_PROCESS_PO_CUST~PROCESS_ITEM -
Sample code in Update Rule to restrict data selection?
We used to restrict data selection in InfoPackage data selection, e.g., for company code range when loading data from a source system (e.g. EBP which is similar to R3), but somehow the company code range we set in InfoPackage data selection not working and we found actually it occurs on the source system side when running RSA3 on EBP side and input the company code range in RSA3 selection section, but still it extracts data beyond the company code range. We don't understand why EBP data selection doesn't work, then we consider in update rule on BW to set the company code range. We know in update rule, we can select Start Routine, formula, or routine to set the company code range. But we would be appreciated if experts here can recommend which one is the most efficient to load data fast for data load performance reason and would be appreicated if you can let us know the sample code!
Thanks in advance!hi Hari,
I copy the whole code of the start routine below:
PROGRAM UPDATE_ROUTINE.
$$ begin of global - insert your declaration only below this line -
TABLES: ...
Includes to update generic objects
INCLUDE rsbctgn_top .
INCLUDE rsbctgn_update_rules .
INCLUDE rsbctbbp_generic_objects.
The following section is prepared for you if you compound
the business partner 0BPARTNER with the
Source System 0BBP_SYS_BP or if you compound the organizational
Unit 0ORGUNIT with the source System 0BBP_SYS_BP
TYPE-POOLS: RRSV.
Data: L_HLP_CHAVL_CMP TYPE RSCHAVL.
DATA:
L_S_DEP TYPE RRSV_S_DEP,
L_T_DEP TYPE RRSV_T_DEP.
End of compound
DATA: l_s_errorlog TYPE rssm_s_errorlog_int,
l_hlp_chavl TYPE rschavl.
$$ end of global - insert your declaration only before this line -
The follow definition is new in the BW3.x
TYPES:
BEGIN OF DATA_PACKAGE_STRUCTURE.
INCLUDE STRUCTURE /BIC/CS0BBP_CONF_TD_1.
TYPES:
RECNO LIKE sy-tabix,
END OF DATA_PACKAGE_STRUCTURE.
DATA:
DATA_PACKAGE TYPE STANDARD TABLE OF DATA_PACKAGE_STRUCTURE
WITH HEADER LINE
WITH NON-UNIQUE DEFAULT KEY INITIAL SIZE 0.
FORM startup
TABLES MONITOR STRUCTURE RSMONITOR "user defined monitoring
MONITOR_RECNO STRUCTURE RSMONITORS " monitoring with record n
DATA_PACKAGE STRUCTURE DATA_PACKAGE
USING RECORD_ALL LIKE SY-TABIX
SOURCE_SYSTEM LIKE RSUPDSIMULH-LOGSYS
CHANGING ABORT LIKE SY-SUBRC. "set ABORT <> 0 to cancel update
$$ begin of routine - insert your code only below this line -
fill the internal tables "MONITOR" and/or "MONITOR_RECNO",
to make monitor entries
delete data_package where 0comp_code < 'X300' OR 0comp_code > 'X6ZZ'.
if abort is not equal zero, the update process will be canceled
ABORT = 0.
$$ end of routine - insert your code only before this line -
ENDFORM. -
This code doesn't pass run time. Can you please help me.
* Copyright (c) 2004 David Flanagan. All rights reserved.
* This code is from the book Java Examples in a Nutshell, 3nd Edition.
* It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
* You may study, use, and modify it for any non-commercial purpose,
* including teaching and use in open-source projects.
* You may distribute it non-commercially as long as you retain this notice.
* For a commercial use license, or to purchase the book,
* please visit http://www.davidflanagan.com/javaexamples3.
import java.io.*;
import java.net.*;
import java.util.*;
import java.lang.*;
* This program is a very simple Web server. When it receives a HTTP request
* it sends the request back as the reply. This can be of interest when
* you want to see just what a Web client is requesting, or what data is
* being sent when a form is submitted, for example.
public class HttpMirror {
public static void main(String args[]) {
try {
// Get the port to listen on
int port = Integer.parseInt(args[0]);
// Create a ServerSocket to listen on that port.
ServerSocket ss = new ServerSocket(port);
// Now enter an infinite loop, waiting for & handling connections.
for(;;) {
// Wait for a client to connect. The method will block;
// when it returns the socket will be connected to the client
Socket client = ss.accept();
// Get input and output streams to talk to the client
BufferedReader in = new BufferedReader(
new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(client.getOutputStream());
// Start sending our reply, using the HTTP 1.1 protocol
out.print("HTTP/1.1 200 \r\n"); // Version & status code
out.print("Content-Type: text/plain\r\n"); // The type of data
out.print("Connection: close\r\n"); // Will close stream
out.print("\r\n"); // End of headers
// Now, read the HTTP request from the client, and send it
// right back to the client as part of the body of our
// response. The client doesn't disconnect, so we never get
// an EOF. It does sends an empty line at the end of the
// headers, though. So when we see the empty line, we stop
// reading. This means we don't mirror the contents of POST
// requests, for example. Note that the readLine() method
// works with Unix, Windows, and Mac line terminators.
String line;
while((line = in.readLine()) != null) {
if (line.length() == 0) break;
out.print(line + "\r\n");
// Close socket, breaking the connection to the client, and
// closing the input and output streams
out.close(); // Flush and close the output stream
in.close(); // Close the input stream
client.close(); // Close the socket itself
} // Now loop again, waiting for the next connection
// If anything goes wrong, print an error message
catch (Exception e) {
System.err.println(e);
System.err.println("Usage: java HttpMirror <port>");
* Copyright (c) 2004 David Flanagan. All rights reserved.
* This code is from the book Java Examples in a Nutshell, 3nd Edition.
* It is provided AS-IS, WITHOUT ANY WARRANTY either expressed or implied.
* You may study, use, and modify it for any non-commercial purpose,
* including teaching and use in open-source projects.
* You may distribute it non-commercially as long as you retain this notice.
* For a commercial use license, or to purchase the book,
* please visit http://www.davidflanagan.com/javaexamples3.
class MulthServ extends Thread
Socket s;
BufferedReader i;
PrintWriter o;
public MulthServ(Socket s) throws Exception
this.s = s;
this.i = new BufferedReader(new
InputStreamReader(s.getInputStream()));
this.o = new PrintWriter(s.getOutputStream(), true);
public void run()
try {
o.close();
i.close();
s.close();
catch(Exception e) {}
}just compiled and ran it on my machine. runs fine, just as the comments say it should.
i ran it using this java command:
F:\Software\Java\Forum>java HttpMirror 9999which starts the server listening for http requests on port 9999.
i entered this url into my browser:
http://localhost:9999/?first=foo&last=bari got this response back in my browser, just as the comments said i would:
GET /?first=foo&last=bar HTTP/1.1
Host: localhost:9999
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.8) Gecko/20050511 Firefox/1.0.4
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alivewhat does "not running" look like to you? maybe you don't know what http is all about.
% -
How to use documentbeforesaved method? And why my code doesn't work in template files?
Can someone help me with these two codes?
----Beginning of code 1-------------
Private WithEvents App As Word.Application
Private Sub Document_Open()
Set App = Word.Application
End Sub
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
MsgBox("BeforeSave")
End Sub
--------------End of the code----------------
Beginning of code 2--------------- Code 2 is from https://msdn.microsoft.com/en-us/library/office/ff838299(v=office.15).aspx
Public WithEvents appWord as Word.Application
Private Sub appWord_DocumentBeforeSave _
(ByVal Doc As Document, _
SaveAsUI As Boolean, _
Cancel As Boolean)
Dim intResponse As Integer
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
MsgBox("BeforeSave")
End Sub
In the first code, they have:
Private Sub Document_Open()
Set App = Word.Application
End Sub
I test these two codes in "This document" object, and I find out the first code works but the second code are not!
Why second code doesn't work?
Extra question: I am using microsoft 2013. I insert this code into a macro-enabled template. But when I am about to save my file I am expecting these code works. However, they didn't work!
Thank you for solving these problem for me!Hello,
Please note that the code snippet 2 in your post is different from the code snippet in the MSDN document. Also please read the comments of the MSDN code sample:
This example prompts the user for a yes or no response before saving any document.
This code must be placed in a class module, and an instance of the class must be correctly initialized to see this example work; see
Using Events with the Application Object for directions on how to accomplish this.
Public WithEvents appWord as Word.Application
Private Sub appWord_DocumentBeforeSave _
(ByVal Doc As Document, _
SaveAsUI As Boolean, _
Cancel As Boolean)
Dim intResponse As Integer
intResponse = MsgBox("Do you really want to " _
& "save the document?", _
vbYesNo)
If intResponse = vbNo Then Cancel = True
End Sub
So the problem in your code snippet 2 is that you didn't put it into a class module and initialize the class module. If you just put it into ThisDocument, you have to initialize the word application object.
We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
Click
HERE to participate the survey. -
ISF/javascript code doesn't work for non-English RequestCenter proile
ISF/javascript code doesn't work for non-English RequestCenter proile
Hello,
I am not sure if i posted the same question before also. We have some customers who have set thier language profile in newScale requestcenter to French. However, all the javascript customizations configured on the service forms do not function for 'French' as a Langauge preference. Has anyone encountered the similar issue before and can anyone please suggest a solution for it?
Thanks,
Mihirwe had a similar issue a while back where the Approval button was not working in Spanish, needed a fix from nS for it
The way to fix this would be to locate the language XML file, override the French caption with Submit and on onLoad write a global JS that would write the button label again (not so sure about this)
But really its an major defect and they should be able to fix it. -
Hi guys please give me sample code for call transaction that handles error
hi guys, please give me sample code for call transaction that handles error,
please send me the sample code in which there should be all decleration part and everything, based on the sample code i will develop my code.
please do help me as it is urgent.
thanks and regards.
prasadnn.Hi Prasad,
Check this code.
Source Code for BDC using Call Transaction
*Code used to create BDC
*& Report ZBDC_EXAMPLE *
*& Example BDC program, which updates net price of item 00010 of a *
*& particular Purchase order(EBELN). *
REPORT ZBDC_EXAMPLE NO STANDARD PAGE HEADING
LINE-SIZE 132.
Data declaration
TABLES: ekko, ekpo.
TYPES: BEGIN OF t_ekko,
ebeln TYPE ekko-ebeln,
waers TYPE ekko-waers,
netpr TYPE ekpo-netpr,
err_msg(73) TYPE c,
END OF t_ekko.
DATA: it_ekko TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_ekko TYPE t_ekko,
it_error TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_error TYPE t_ekko,
it_success TYPE STANDARD TABLE OF t_ekko INITIAL SIZE 0,
wa_success TYPE t_ekko.
DATA: w_textout LIKE t100-text.
DATA: gd_update TYPE i,
gd_lines TYPE i.
*Used to store BDC data
DATA: BEGIN OF bdc_tab OCCURS 0.
INCLUDE STRUCTURE bdcdata.
DATA: END OF bdc_tab.
*Used to stores error information from CALL TRANSACTION Function Module
DATA: BEGIN OF messtab OCCURS 0.
INCLUDE STRUCTURE bdcmsgcoll.
DATA: END OF messtab.
*Screen declaration
SELECTION-SCREEN BEGIN OF BLOCK block1 WITH FRAME
TITLE text-001. "Purchase order Num
SELECT-OPTIONS: so_ebeln FOR ekko-ebeln OBLIGATORY.
SELECTION-SCREEN END OF BLOCK block1.
SELECTION-SCREEN BEGIN OF BLOCK block2 WITH FRAME
TITLE text-002. "New NETPR value
PARAMETERS: p_newpr(14) TYPE c obligatory. "LIKE ekpo-netpr.
SELECTION-SCREEN END OF BLOCK block2.
*START-OF-SELECTION
START-OF-SELECTION.
Retrieve data from Purchase order table(EKKO)
SELECT ekkoebeln ekkowaers ekpo~netpr
INTO TABLE it_ekko
FROM ekko AS ekko INNER JOIN ekpo AS ekpo
ON ekpoebeln EQ ekkoebeln
WHERE ekko~ebeln IN so_ebeln AND
ekpo~ebelp EQ '10'.
*END-OF-SELECTION
END-OF-SELECTION.
Check data has been retrieved ready for processing
DESCRIBE TABLE it_ekko LINES gd_lines.
IF gd_lines LE 0.
Display message if no data has been retrieved
MESSAGE i003(zp) WITH 'No Records Found'(001).
LEAVE TO SCREEN 0.
ELSE.
Update Customer master data (instalment text)
LOOP AT it_ekko INTO wa_ekko.
PERFORM bdc_update.
ENDLOOP.
Display message confirming number of records updated
IF gd_update GT 1.
MESSAGE i003(zp) WITH gd_update 'Records updated'(002).
ELSE.
MESSAGE i003(zp) WITH gd_update 'Record updated'(003).
ENDIF.
Display Success Report
Check Success table
DESCRIBE TABLE it_success LINES gd_lines.
IF gd_lines GT 0.
Display result report column headings
PERFORM display_column_headings.
Display result report
PERFORM display_report.
ENDIF.
Display Error Report
Check errors table
DESCRIBE TABLE it_error LINES gd_lines.
If errors exist then display errors report
IF gd_lines GT 0.
Display errors report
PERFORM display_error_headings.
PERFORM display_error_report.
ENDIF.
ENDIF.
*& Form DISPLAY_COLUMN_HEADINGS
Display column headings
FORM display_column_headings.
WRITE:2 ' Success Report '(014) COLOR COL_POSITIVE.
SKIP.
WRITE:2 'The following records updated successfully:'(013).
WRITE:/ sy-uline(42).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase Order'(004), sy-vline,
(11) 'Old Netpr'(005), sy-vline,
(11) 'New Netpr'(006), sy-vline.
WRITE:/ sy-uline(42).
ENDFORM. " DISPLAY_COLUMN_HEADINGS
*& Form BDC_UPDATE
Populate BDC table and call transaction ME22
FORM bdc_update.
PERFORM dynpro USING:
'X' 'SAPMM06E' '0105',
' ' 'BDC_CURSOR' 'RM06E-BSTNR',
' ' 'RM06E-BSTNR' wa_ekko-ebeln,
' ' 'BDC_OKCODE' '/00', "OK code
'X' 'SAPMM06E' '0120',
' ' 'BDC_CURSOR' 'EKPO-NETPR(01)',
' ' 'EKPO-NETPR(01)' p_newpr,
' ' 'BDC_OKCODE' '=BU'. "OK code
Call transaction to update customer instalment text
CALL TRANSACTION 'ME22' USING bdc_tab MODE 'N' UPDATE 'S'
MESSAGES INTO messtab.
Check if update was succesful
IF sy-subrc EQ 0.
ADD 1 TO gd_update.
APPEND wa_ekko TO it_success.
ELSE.
Retrieve error messages displayed during BDC update
LOOP AT messtab WHERE msgtyp = 'E'.
Builds actual message based on info returned from Call transaction
CALL FUNCTION 'MESSAGE_TEXT_BUILD'
EXPORTING
msgid = messtab-msgid
msgnr = messtab-msgnr
msgv1 = messtab-msgv1
msgv2 = messtab-msgv2
msgv3 = messtab-msgv3
msgv4 = messtab-msgv4
IMPORTING
message_text_output = w_textout.
ENDLOOP.
Build error table ready for output
wa_error = wa_ekko.
wa_error-err_msg = w_textout.
APPEND wa_error TO it_error.
CLEAR: wa_error.
ENDIF.
Clear bdc date table
CLEAR: bdc_tab.
REFRESH: bdc_tab.
ENDFORM. " BDC_UPDATE
FORM DYNPRO *
stores values to bdc table *
--> DYNBEGIN *
--> NAME *
--> VALUE *
FORM dynpro USING dynbegin name value.
IF dynbegin = 'X'.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-program,
value TO bdc_tab-dynpro,
'X' TO bdc_tab-dynbegin.
APPEND bdc_tab.
ELSE.
CLEAR bdc_tab.
MOVE: name TO bdc_tab-fnam,
value TO bdc_tab-fval.
APPEND bdc_tab.
ENDIF.
ENDFORM. " DYNPRO
*& Form DISPLAY_REPORT
Display Report
FORM display_report.
FORMAT COLOR COL_NORMAL.
Loop at data table
LOOP AT it_success INTO wa_success.
WRITE:/ sy-vline,
(10) wa_success-ebeln, sy-vline,
(11) wa_success-netpr CURRENCY wa_success-waers, sy-vline,
(11) p_newpr, sy-vline.
CLEAR: wa_success.
ENDLOOP.
WRITE:/ sy-uline(42).
REFRESH: it_success.
FORMAT COLOR COL_BACKGROUND.
ENDFORM. " DISPLAY_REPORT
*& Form DISPLAY_ERROR_REPORT
Display error report data
FORM display_error_report.
LOOP AT it_error INTO wa_error.
WRITE:/ sy-vline,
(10) wa_error-ebeln, sy-vline,
(11) wa_error-netpr CURRENCY wa_error-waers, sy-vline,
(73) wa_error-err_msg, sy-vline.
ENDLOOP.
WRITE:/ sy-uline(104).
REFRESH: it_error.
ENDFORM. " DISPLAY_ERROR_REPORT
*& Form DISPLAY_ERROR_HEADINGS
Display error report headings
FORM display_error_headings.
SKIP.
WRITE:2 ' Error Report '(007) COLOR COL_NEGATIVE.
SKIP.
WRITE:2 'The following records failed during update:'(008).
WRITE:/ sy-uline(104).
FORMAT COLOR COL_HEADING.
WRITE:/ sy-vline,
(10) 'Purchase Order'(009), sy-vline,
(11) 'Netpr'(010), sy-vline,
(73) 'Error Message'(012), sy-vline.
WRITE:/ sy-uline(104).
FORMAT COLOR COL_NORMAL.
ENDFORM. " DISPLAY_ERROR_HEADINGS
Hope this resolves your query.
Reward all the helpful answers.
Regards
Maybe you are looking for
-
N95 8GB v20.0.016 - mass memory failure #3
For the third time my N95 8GB has managed to corrupt its mass memory ("mass memory corrupted") - only this time, I am unable to reformat it at all! The problem behaviour is as follows: Used the phone last night to take several pictures, accessing the
-
Hi guys any tips or advise on how to resize an image i know there are various tools but is there a tool in Adobe flash professional and how can I do it cheers
-
How to delete a Database view?
HI Everyone, Created a Database in ECC to get the bank details from two tables BNKA and BKPF, but now I wanted to delete this View. Can someone tell me how to delete the Database view? Thanks Vandana
-
I should know this i suppose but is it possible to export a flash animation (fla/flv) and make it into a quicktime movie that works??? I know its possible, sort of because i did it but the quicktime was really stretched out and didnt work great. Ther
-
Loading albums - to keep them as albums
I want to load albums so I can select and play them as albums. Don't want the tracks extracted and presented as one long list which is what's happened on loading my albums.. So can someone explain how I load albums so I can select that album and play