Grouping of backend POs

Hi,
My requirement is that the when i create PO's from the sourcing cockpit, they should be grouped according to requester and not the standard criteria used by SRM (vendor, plant, company code etc.).
I understand that the BADI to change the grouping criteria is valid only for local POs and not backend POs.
Is there some other method/user exitsin R/3 which can be used to change the grouping criteria
Regards,

Hi Vikram,
Thanks for the reply. But I thinkn this BADI is for changing the fields when the data is sent to create the backend PO.How can this be used to change the grouping criteria?
Will be helpful if you can elaborate.
Regards

Similar Messages

  • Lync 2013 Error 31055 ,31059 LS Call Park Service, The database being used by Group Pickup is not the appropriate version and There was a problem communicating with the Group Pickup backend database.

    Hello
    I have Lync 2013 and 2010  , still i didn't finish my migration completely from 2010 to 2013 .this  is  coexistence environment that contains both Lync Server 2010 and Lync Server 2013 .
    There was no error's in my lync 2013 front end and back end server's and every thing was fine, yesterday I installed windows updated AND CU for my lync 2013  front end and backend server's .
    later on after restarting both the front end and the back end server's i start having hundred's of  these error's related to "LS Call Park Service".
    so any advice for these issue ? and what is the effect for these error .
    below is the error I got .
    The database being used by Group Pickup is not the appropriate version.
    The database is not the correct version:
    Connection: Data Source=HQ-LYNC2013-BE.aaaaaaaaaaaaaaaaaaaaaaaaaaa\rtc;Initial Catalog=cpsdyn;Integrated Security=True
    Expected... SchemaVersion: 1, SprocVersion: 1, UpgradeVersion: 2
    Actual...   SchemaVersion: 0, SprocVersion: 0, UpgradeVersion: 0
    Cause: The database has not been upgraded.
    Resolution:
    Upgrade the database to CU1.
    ==============================================================
    There was a problem communicating with the Group Pickup backend database.
    There were problems accessing SQL server:
    Connection: Data Source=HQ-LYNC2013-BE.aaaaaaaaaaaaaaaaaaaaaaaaaa\rtc;Initial Catalog=cpsdyn;Integrated Security=True
    Message: The EXECUTE permission was denied on the object 'DbpGetVersionSchema', database 'cpsdyn', schema 'dbo'.
    Error code: -2146232060
    Error number: 229
    Cause: This may be caused by connectivity issues with the backend database.
    Resolution:
    Check if SQL backend is running and accepts connections from Group Pickup.
    =============================================================================
    Kind Regards
    MK

    Hello
    thanks Holger for u r replay .
    due to the Microsoft article about the cu :
    I run only :
    Install-CsDatabase -ConfiguredDatabases -SqlServerFqdn FEBE.FQDN -Verbose
    Note In a coexistence environment that contains both Lync Server 2010 and Lync Server 2013 and in which the Central Management Service is located on a Lync Server 2010 pool, do not run the
    Install-CsDatabase -CentralManagementDatabase command. If you later move the Central Management Service to a Lync Server 2013 pool, you have to run the
    Install-CsDatabase -CentralManagementDatabase command to apply the changes.
    here is what I get on my power shell after i run the command : "WARNING: Warning: Failed to execute batch --"
    PS C:\Users\MK> Install-CsDatabase -ConfiguredDatabases -SqlServerFqdn HQ-LYNC2013-BE.MyDomain -Verbose
    VERBOSE: Creating new log file
    "C:\Users\MK\AppData\Local\Temp\2\Install-CsDatabase-82d6613c-f2e3-47e6-8fc4-8f75d2efe6e4.xml".
    VERBOSE: Install databases required by Lync Server role(s).
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.BlobStore'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rtcxds.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.AbsDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rtcab.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.RgsConfigDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rgsconfig.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.RgsDynDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rgsdyn.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.CpsDynDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database cpsdyn.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.ArchivingDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\arc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database LcsLog.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.MonitoringDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\mon. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database LcsCDR.
    VERBOSE: Assigning "BackendStore:BlobStore:LogPath" to F:\CsData
    VERBOSE: Assigning "BackendStore:RtcSharedDatabase:LogPath" to F:\CsData
    VERBOSE: Assigning "ArchivingStore:ArchivingDatabase:LogPath" to F:\CsData
    VERBOSE: Assigning "MonitoringStore:MonitoringDatabase:LogPath" to F:\CsData
    VERBOSE: Assigning "MonitoringStore:QoEMetricsDatabase:LogPath" to F:\CsData
    VERBOSE: Assigning "ArchivingStore:ArchivingDatabase:DbPath" to F:\CsData
    VERBOSE: Assigning "MonitoringStore:MonitoringDatabase:DbPath" to F:\CsData
    VERBOSE: Assigning "MonitoringStore:QoEMetricsDatabase:DbPath" to F:\CsData
    VERBOSE: Assigning "ABSStore:AbsDatabase:LogPath" to F:\CsData
    VERBOSE: Assigning "ApplicationStore:RgsConfigDatabase:LogPath" to F:\CsData
    VERBOSE: Assigning "ApplicationStore:RgsDynDatabase:LogPath" to F:\CsData
    VERBOSE: Assigning "ApplicationStore:CpsDynDatabase:LogPath" to F:\CsData
    VERBOSE: Assigning "BackendStore:BlobStore:DbPath" to F:\CsData
    VERBOSE: Assigning "BackendStore:RtcSharedDatabase:DbPath" to F:\CsData
    VERBOSE: Assigning "ABSStore:AbsDatabase:DbPath" to F:\CsData
    VERBOSE: Assigning "ApplicationStore:RgsConfigDatabase:DbPath" to F:\CsData
    VERBOSE: Assigning "ApplicationStore:RgsDynDatabase:DbPath" to F:\CsData
    VERBOSE: Assigning "ApplicationStore:CpsDynDatabase:DbPath" to F:\CsData
    VERBOSE: Installing "BackendStore" on HQ-LYNC2013-BE.MyDomain\rtc, collocated: False
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.BlobStore'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rtcxds.
    Checking state for database rtcxds.
    State of database rtcxds is DbState_RequiresMinorUpgrade.
    Database rtcxds set to mode Restricted.
    Dropping all procedures, functions and views from database rtcxds.
    Executing RtcDb.sql...
    Adding master role...
    Setting owner for database rtcxds to sa.
    Creating login MyDomain\RTCHSUniversalServices.
    Creating user MyDomain\RTCHSUniversalServices.
    Creating Schema MyDomain\RTCHSUniversalServices.
    Creating login MyDomain\RTCUniversalReadOnlyAdmins.
    Creating user MyDomain\RTCUniversalReadOnlyAdmins.
    Creating Schema MyDomain\RTCUniversalReadOnlyAdmins.
    Creating login MyDomain\RTCUniversalServerAdmins.
    Creating user MyDomain\RTCUniversalServerAdmins.
    Creating Schema MyDomain\RTCUniversalServerAdmins.
    Adding account MyDomain\RTCHSUniversalServices to role ConsumerRole.
    Adding account MyDomain\RTCUniversalReadOnlyAdmins to role ConsumerRole.
    Adding account MyDomain\RTCHSUniversalServices to role ReplicatorRole.
    Adding account MyDomain\RTCHSUniversalServices to role PublisherRole.
    Adding account MyDomain\RTCUniversalServerAdmins to role PublisherRole.
    Setting database version: Schema Version 15, Sproc Version 13, Update Version 2.
    Setting the database rtcxds to multi user mode.
    Database rtcxds is set to multi user mode.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.RtcSharedDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rtcshared.
    Database created by script "RtcSharedDatabase" already exists and is current.
    VERBOSE: Successfully installed the database. For details, see the following log:
    "C:\Users\MK\AppData\Local\Temp\2\Create-BackendStore-HQ-LYNC2013-BE.MyDomain_rtc-[2014_11_13][14_35_01].log"
    VERBOSE: Installing "ABSStore" on HQ-LYNC2013-BE.MyDomain\rtc, collocated: False
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.AbsDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rtcab.
    Checking state for database rtcab.
    State of database rtcab is DbState_RequiresMinorUpgrade.
    Database rtcab set to mode Restricted.
    Dropping all procedures, functions and views from database rtcab.
    Executing RtcAbTypes.sql...
    WARNING: Warning: Failed to execute batch --
    -- Copyright (c) Microsoft Corporation. All rights reserved.
    exec sp_addrole N'ServerRole'.
    Executing RtcAbDb.sql...
    Setting owner for database rtcab to sa.
    Creating login MyDomain\RTCComponentUniversalServices.
    Creating user MyDomain\RTCComponentUniversalServices.
    Creating Schema MyDomain\RTCComponentUniversalServices.
    Adding account MyDomain\RTCComponentUniversalServices to role ServerRole.
    Setting database version: Schema Version 62, Sproc Version 42, Update Version 3.
    Setting the database rtcab to multi user mode.
    Database rtcab is set to multi user mode.
    VERBOSE: Successfully installed the database. For details, see the following log:
    "C:\Users\MK\AppData\Local\Temp\2\Create-ABSStore-HQ-LYNC2013-BE.MyDomain_rtc-[2014_11_13][14_35_20].log"
    VERBOSE: Installing "ApplicationStore" on HQ-LYNC2013-BE.MyDomain\rtc, collocated: False
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.RgsConfigDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rgsconfig.
    Database created by script "RgsConfigDatabase" already exists and is current.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.RgsDynDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database rgsdyn.
    Database created by script "RgsDynDatabase" already exists and is current.
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.CpsDynDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\rtc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database cpsdyn.
    Checking state for database cpsdyn.
    State of database cpsdyn is DbState_RequiresMinorUpgrade.
    Database cpsdyn set to mode Restricted.
    Dropping all procedures, functions and views from database cpsdyn.
    Executing CpsDyn.sql...
    Setting owner for database cpsdyn to sa.
    Creating login MyDomain\RTCComponentUniversalServices.
    Creating user MyDomain\RTCComponentUniversalServices.
    Creating Schema MyDomain\RTCComponentUniversalServices.
    Creating login MyDomain\RTCUniversalReadOnlyAdmins.
    Creating user MyDomain\RTCUniversalReadOnlyAdmins.
    Creating Schema MyDomain\RTCUniversalReadOnlyAdmins.
    Creating login MyDomain\RTCUniversalServerAdmins.
    Creating user MyDomain\RTCUniversalServerAdmins.
    Creating Schema MyDomain\RTCUniversalServerAdmins.
    Adding account MyDomain\RTCComponentUniversalServices to role ReadWriteRole.
    Adding account MyDomain\RTCUniversalServerAdmins to role ReadWriteRole.
    Adding account MyDomain\RTCUniversalReadOnlyAdmins to role ReadOnlyRole.
    Setting database version: Schema Version 1, Sproc Version 1, Update Version 2.
    Setting the database cpsdyn to multi user mode.
    Database cpsdyn is set to multi user mode.
    VERBOSE: Successfully installed the database. For details, see the following log:
    "C:\Users\MK\AppData\Local\Temp\2\Create-ApplicationStore-HQ-LYNC2013-BE.MyDomain_rtc-[2014_11_13][14_35_37].log"
    VERBOSE: Installing "ArchivingStore" on HQ-LYNC2013-BE.MyDomain\arc, collocated: False
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.ArchivingDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\arc. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database LcsLog.
    Database created by script "ArchivingDatabase" already exists and is current.
    VERBOSE: Successfully installed the database. For details, see the following log:
    "C:\Users\MK\AppData\Local\Temp\2\Create-ArchivingStore-HQ-LYNC2013-BE.MyDomain_arc-[2014_11_13][14_35_51].log"
    VERBOSE: Installing "MonitoringStore" on HQ-LYNC2013-BE.MyDomain\mon, collocated: False
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.MonitoringDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\mon. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database LcsCDR.
    Checking state for database LcsCDR.
    Checking state for database LcsCDR.
    State of database LcsCDR is DbState_RequiresMinorUpgrade.
    WARNING: The database LcsCDR being updated has data file path at
    \\HQ-LYNC2013-BE.MyDomain\C$\CsData\MonitoringStore\mon\DbPath\LcsCDR.mdf and supplied data file path is
    \\HQ-LYNC2013-BE.MyDomain\F$\CsData\MonitoringStore\mon\DbPath\LcsCDR.mdf. Supplied path will be ignored.
    WARNING: The database LcsCDR being updated has log file path at
    \\HQ-LYNC2013-BE.MyDomain\C$\CsData\MonitoringStore\mon\LogPath\LcsCDR.ldf and supplied data file path is
    \\HQ-LYNC2013-BE.MyDomain\F$\CsData\MonitoringStore\mon\LogPath\LcsCDR.ldf. Supplied path will be ignored.
    Database LcsCDR set to mode Restricted.
    Dropping all procedures, functions and views from database LcsCDR.
    Executing CdrDb.sql...
    Setting owner for database LcsCDR to sa.
    Creating login MyDomain\CSAdministrator.
    Creating user MyDomain\CSAdministrator.
    Creating Schema MyDomain\CSAdministrator.
    Creating login MyDomain\RTCComponentUniversalServices.
    Creating user MyDomain\RTCComponentUniversalServices.
    Creating Schema MyDomain\RTCComponentUniversalServices.
    Adding account MyDomain\RTCComponentUniversalServices to role ServerRole.
    Adding account MyDomain\RTCComponentUniversalServices to role ReportsReadOnlyRole.
    Adding account MyDomain\CSAdministrator to role ReportsReadOnlyRole.
    Setting database version: Schema Version 39, Sproc Version 82, Update Version 2.
    Setting the database LcsCDR to multi user mode.
    Database LcsCDR is set to multi user mode.
    SQL Server Agent is running and its start mode was detected as Auto.
    Executing CdrJobs.sql...
    ****Creating DbSetupInstance for 'Microsoft.Rtc.Common.Data.QoEMetricsDatabase'****
    Trying to connect to Sql Server HQ-LYNC2013-BE.MyDomain\mon. using windows authentication...
    Sql version: Major: 11, Minor: 0, Build 5058.
    Sql version is acceptable.
    Checking state for database QoEMetrics.
    Checking state for database QoEMetrics.
    Checking state for database QoEMetrics.
    State of database QoEMetrics is DbState_RequiresMinorUpgrade.
    WARNING: The database QoEMetrics being updated has data file path at
    \\HQ-LYNC2013-BE.MyDomain\C$\CsData\MonitoringStore\mon\DbPath\QoEMetrics.mdf and supplied data file path is
    \\HQ-LYNC2013-BE.MyDomain\F$\CsData\MonitoringStore\mon\DbPath\QoEMetrics.mdf. Supplied path will be ignored.
    WARNING: The database QoEMetrics being updated has log file path at
    \\HQ-LYNC2013-BE.MyDomain\C$\CsData\MonitoringStore\mon\LogPath\QoEMetrics.ldf and supplied data file path is
    \\HQ-LYNC2013-BE.MyDomain\F$\CsData\MonitoringStore\mon\LogPath\QoEMetrics.ldf. Supplied path will be ignored.
    Database QoEMetrics set to mode Restricted.
    Dropping all procedures, functions and views from database QoEMetrics.
    Executing QoEDb.sql...
    Setting owner for database QoEMetrics to sa.
    Creating login MyDomain\RTCComponentUniversalServices.
    Creating user MyDomain\RTCComponentUniversalServices.
    Creating Schema MyDomain\RTCComponentUniversalServices.
    Adding account MyDomain\RTCComponentUniversalServices to role ServerRole.
    Setting database version: Schema Version 62, Sproc Version 90, Update Version 1.
    Setting the database QoEMetrics to multi user mode.
    Database QoEMetrics is set to multi user mode.
    SQL Server Agent is running and its start mode was detected as Auto.
    Executing QoEJobs.sql...
    VERBOSE: Successfully installed the database. For details, see the following log:
    "C:\Users\MK\AppData\Local\Temp\2\Create-MonitoringStore-HQ-LYNC2013-BE.MyDomain_mon-[2014_11_13][14_35_51].log"
    VERBOSE: No changes were made to the Central Management Store.
    VERBOSE: Creating new log file
    "C:\Users\MK\AppData\Local\Temp\2\Install-CsDatabase-82d6613c-f2e3-47e6-8fc4-8f75d2efe6e4.html".
    WARNING: "Install-CsDatabase" processing has completed with warnings. "5" warnings were recorded during this run.
    WARNING: Detailed results can be found at
    "C:\Users\MK\AppData\Local\Temp\2\Install-CsDatabase-82d6613c-f2e3-47e6-8fc4-8f75d2efe6e4.html".
    PS C:\Users\MK>
    I hope some one can confirm no issue with what I did ??
    Kind Regards
    MK

  • Backend POs based on product category

    Hello all,
    SRM 4.0, R/3 4.7, classic scenario
    inquiry if it is possible somehow to create from single shopping cart several backend POs based on product category.
    We have one SC with several product categories, would like to have several backend POs with one product category in each.
    TIA
    Gordan

    didnt gey any reply so closing the question...

  • How to use logon group of backend systems via reverse proxy

    Hi
    we have setup EP 6.0 in DMZ2 and connected backend servers in INTERNAL network. We have another firewall for DMZ1. In order to provide access to EP and respective backend systems, we have installed two reverse proxy servers on Apache, one in DMZ1 and another in DMZ2. We could able to reach to the backend system successfully in this setup by using proper rewrite rule for virtual systems in order to connect to multiple systems.
    However we have observed that connection for backend systems is established only to respective CI and not to any of the application server, even though we have created "Load Balancing" systems in EP and used the same logon group of backend systems.
    Kindly suggest us if there is any option using which we can establish connection via Load balancing option in this current setup of ours.
    Thanks
    Pradeep

    Hi Mechael/Dutt
    We r using Integrated ITS in WAS 6.40. and we r maintaing seperate entries for each systems in rewrite rule.
    Thanks
    PRadeep

  • Error : There was a problem communicating with the Group Pickup backend database.

    Hi , 
    I found this error in Event viewer for Every 2 min on lync server 2013 :
    There was a problem communicating with the Group Pickup backend database.
    There were problems accessing SQL server:
    Connection: Data Source=(local)\rtc;Initial Catalog=cpsdyn;Integrated Security=True
    Message: The EXECUTE permission was denied on the object 'DbpGetVersionSchema', database 'cpsdyn', schema 'dbo'.
    Error code: -2146232060
    Error number: 229
    Cause: This may be caused by connectivity issues with the backend database.
    Resolution:
    Check if SQL backend is running and accepts connections from Group Pickup.
    what can i  do ?

    Hi,
    Did you solve the issue with the help of the suggest Anthony provided above?
    If the issue persists, please check if you update the latest vesion of Lync Server 2013. If not, please update it, make sure after install the update for all FE Servers,
    then make sure to update BE Server as well. Then rerun Step 2 Setup or remove Lync Server Components.
    Here is a similar case may help you:
    https://social.technet.microsoft.com/Forums/lync/en-US/3b616e51-93ad-430a-aa93-57c2fd19e0f6/call-pickup-db-issue-after-cu1-update-to-lync-2013-enterprise?forum=lyncdeploy
    Best Regards,
    Eason Huang
    Eason Huang
    TechNet Community Support

  • Grouping more MM pos document to a single FI document

    Hi to all,
    I've a problem during the transfer of a MM document to FI (MIGO, MIRO and some other MM trx).
    My client asked me to collect more MM document position with the same characteristics to a single FI document position.
    I know that in SD there is the VBRK-ZUKRI that work to do that. Do you know if there is a field in MM that can be used to change the spliiting or collecting of an MM document position to FI?
    If there is this kind of field, where can I modify it to change the MM position grouping?
    Best Regards.
    Paolo
    Edited by: Paolo Castello on Jan 13, 2009 6:02 PM

    Check the setting for max no of items allowed in the excise setting for excise transactions.

  • Limiting POs from backend system for Confirmations

    We have activated the ALE model for Confirming Goods Receipt from backend POs.  I know that I can use BADI BBP_WF_LIST to filter the POs displayed in the Create/Display Confirmation transaction.  However I would like to limit the POs that are sent from the backend system to EBP by document number range.  This should prevent cluttering the EBP system with junk POs.  Is this possible?
    Thanks,
    Nancy

    Hi
    <b>Please go through the links below, which deal with the same issue -></b>
    BADI BBP_WF_LIST implementation
    Re: Is it the right BADI
    Get PO details from backend
    Filtering content in the SRM confirmation worklist
    Re: Worklist for confirm goods using BBPCF02
    Problem in badi for sourcing worklist 'BBP_WF_LIST'
    Re: Confirm Goods / Services Centrally - BBPCF03
    Using BADi's BBP_PGRP_FIND  and BBP_WF_LIST  for Sourcing
    Hope this will help.
    Do let me know.
    Regards
    - Atul

  • Limit creation of PO  by purchasing group to a maximum value

    Hi there experts,
    I want that some purchasing groups can process POs just only when the value of the PO is less than X value. Do I have to use user-exits? How?
    Tanks in advance.

    Define release procedure through characteristics and create characteristics of value according to the requirement.
    Regards,
    qsm sap

  • SQL Group by issues

    Hi All
    I am new to SQL .
    There are two tables EMP and DEPT . The common column betwee these two is DEPT_NO
    Al I am trying to do is display the department name , number of employees and the department's average salary of the employees.
    Below id my query . I am not able to complete the query due to the issues that group by clause poses .
    Could some one please help ?
    SELECT DEPT.DEPT_NAME , SUM(EMP.EMP_NO) , AVG(EMP.SAL)
    FROM EMP , DEPT
    WHERE EMP.DEPT_NO = DEPT.DEPT_NO
    GROUP BY DEPT.DEPT_NAME
    Thanks
    Guna

    user9967723 wrote:
    I want to display the employee name, department number, and all the employees that work in the same department .This seems very different from your original request.
    Also please let me know where i can find a 'attachment link in this page' to attach the table snap shot. You cannot attach anything in this forum. Creating a text version would be the most helpful as some external sites that host images are blocked for some of the users here.
    It is always helpful to provide the following:
    1. Oracle version (SELECT * FROM V$VERSION)
    2. Sample data in the form of CREATE / INSERT statements.
    3. Expected output
    4. Explanation of expected output (A.K.A. "business logic")
    5. Use \ tags for #2 and #3. See FAQ (Link on top right side) for details.
    Also see the third post in this thread:
    {thread:id=2174552}                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   

  • Creating contracts on backend - iDocs not even sent from SRM

    Hi all
    I'm having a bit of trouble configuring backend contracts and could use a little help from the experts.
    Trying to create a contract from SoCo or bid invitation results in a success message informing a contract number, but idocs BLAORD and COND_A don't appear on WE02 on the backend. Checking on WE05 on SRM, no idocs are listed, so I'm assuming they are not even being created.
    BAdIs BBP_DETERMINE_LOGSYS and BBP_CTR_BE_CREATE are implemented and active, logical systems and RFC destinations are defined correctly and organizational data is ok. Also backend POs are working fine. Please advice.
    Best regards
    Alvaro

    Hello Alvaro,
    for backend contract creation, there is no IDOC generated in SRM, but directy in R/3, but the function BBPV_CONTRACT_CREATE.
    If an error occurs during this function call, you should get an error message in Application Monitoring.
    You can access those monitors via the web, with role SAP_BBP_STAL_ADMINISTRATOR, or directly in SAP GUI with transaction RZ10.
    Last option: debug the process
    Rgds
    Christophe
    PS: please reward points for helpfull answers

  • Missing "Administrators" Group in the Netweaver portal??

    Hi,
    We have a lot of portals, but the "Administrators" group is missing in identity management???
    We have this group in all other portals, but now the issue is who should set up this group so it can be found in identity management!
    Upload the Group from backend, I guess is not good because this will not set uop the permissions that goes with this group.
    It has Super admin and administrator roles in it but giving these two roles to my user don't fix it, so I need to know how to get this  group in the portal?
    Any idea anyone??

    Hi Jesper Andersen,
    Try to search your group with the first letter in CAPS.  "Administrator"
    If not, please found you user Administrator or J2EE_admin and tell us with groups you have assigned to this user?
    Please remember to evaluate the replays, this incentive the SDN to keep growing,
    regards,
    Fabio

  • Number range for extended classic scenario

    Hi,
    we've activated extended classic scenario for some defined categories (material groups), other will use classic scenario as before. It works, we are able to craete POs in both ways. I've tried to use the same number range for backend POs and for local POs. I've set the same number for both ranges but only the one which is used is getting updated. Is it possible to syncronize these ranges so backend POs will all be created in the same range?
    Regards
    Hubert

    Hi Hubert,
    Not the best practice that you are following. it might work for some time  but will fail for most of the time . The maintenance is going to be huge and you could expect problem with these.
    I would suggest not to think on the solution of same number range itself.
    Thanks
    Iftekhar Alam

  • Why is BBP_WF_LIST not displaying the correct PO worklist?????????????

    Hi SRM Gurus,
    My requirement is to display only those Purchase Orders to the user that he has created once user clicks on Purchasing Tab->Ordered or Refresh Button .
    In order to achieve this requirement, I implemented the method 'BBP_WF_LIST' of BADI 'BBP_WF_LIST' for filter type = 'BUS2201'and inserted the following code:-
        li_list1[] = e_pdlist[].
      Looping at PO List
        LOOP AT li_list1 INTO lx_pdlist.
        Getting the PO details through function module
          CALL FUNCTION 'BBP_PD_PO_GETDETAIL'
            EXPORTING
              i_guid   = lx_pdlist-guid
            IMPORTING
              e_header = lx_header
            TABLES
              e_item   = li_item.
          IF NOT li_item IS INITIAL.
            SORT li_item BY number_int.
          Read first line item
            READ TABLE li_item INTO lx_po_item
                               WITH KEY number_int = c_num
                               BINARY SEARCH.
            IF sy-subrc = 0.
            Call FM to get details for shopping cart item
              CALL FUNCTION 'BBP_PD_SC_ITEM_GETDETAIL'
                EXPORTING
                  i_guid = lx_po_item-src_guid
                IMPORTING
                  e_item = lx_sc_item.
               IF NOT lx_sc_item IS INITIAL.
                  IF lx_sc_item-created_by = sy-uname.
                    APPEND lx_pdlist TO li_list.
                  ENDIF.
              ENDIF.
            ENDIF.
          ENDIF.
        ENDLOOP.
      ENDIF.
      refresh e_pdlist.
      e_pdlist[] = li_list[].
      SORT e_pdlist BY object_id.
    Now when I debugged this BADI , the logic is working fine and finally E_PDLIST[] holds only the list of Purchase Orders that meet our requirement but thw worklist that is finally displayed shows all the POs that exist in the system.
    Kindly provide me the solution for the same at the earliest.Have to deliver the object by tommorrow.
    Thanks in Advance,
    Swati

    Hi
    <u>Which SRM version are you using ?</u>
    <u><b>Please see the below mentioned SAP OSS Notes, which will help -></b></u>
    <u>Note 1113156 Post processing of BAdI BBP_WF_LIST not correct</u>
    Note 1018095 BBP_WF_LIST: Only documents for employees from one team
    <u>Note 557295 Changes in the interface of BBP_WF_LIST</u>
    Note 386468 Backend POs not taken into account in BADI BBP_WF_LIST
    <u>Note 549846 FAQ: Goods receipt confirmation</u>
    <u>Other related SAP OSS Notes -></u>
    Note 691300 Transfer of BE_ITEM_SRV to BADI BBP_WF_LIST
    Note 972773 No R/3 purchasing org or purchasing group in BBP_WF_LIST
    Note 549383 BBP_WF_LIST: Only documents for employees from one team
    Note 438793 Transfer of BE_ITEM_SRV to BADI BBP_WF_LIST
    Note 508386 Sorting the list during searching
    Note 457357 Worklist: Confirmation and invoice for desktop user
    Note 423518 Number of the purchase orders in list
    Do let me know.
    Regards
    - Atul

  • Trying to get lighttpd to upload a file through perl cgi

    Hi, I'm quite new in these things, so I might be doing something obvious wrong, but I'd like some help on this.
    I'm trying to make a webpage where people can upload files, this is the html page (located at /srv/html/index.html):
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>lighttpd Test Page</title>
    </head>
    <body>
    <div style="text-align:center; font: 12px sans-serif;">
    <span style="font-weight: bold; font-size: 20px;">
    Arch Linux
    </span>
    <br><br>
    This is a test page for the lighttpd Web Server.<br>
    <form action="/cgi-bin/upload.pl" method="post" enctype="multipart/form-data">
    <input type="file" name="fileName" size="40">
    <input type="submit" value="Send">
    <input type="reset">
    </form>
    </div>
    </body>
    </html>
    And the backend (in /srv/html/cgi-bin/upload.pl):
    #!/usr/bin/perl -wT
    use strict;
    use CGI;
    use CGI::Carp qw ( fatalsToBrowser );
    use File::Basename;
    $CGI::POST_MAX = 1024 * 1024 * 5000; # 5GB filesize limit
    my $safe_filename_characters = "a-zA-Z0-9_.-";
    my $upload_dir = "/srv/jail/";
    my $query = new CGI;
    my $filename = $query->param("fileName");
    if ( !$filename )
    print $query->header ( );
    print "There was a problem uploading your file (filesize limit may be exceeded).";
    exit;
    my ( $name, $path, $extension ) = fileparse ( $filename, '\..*' );
    $filename = $name . $extension;
    $filename =~ tr/ /_/;
    $filename =~ s/[^$safe_filename_characters]//g;
    if ( $filename =~ /^([$safe_filename_characters]+)$/ )
    $filename = $1;
    else
    die "Filename contains invalid characters";
    my $upload_filehandle = $query->upload("fileName");
    open ( UPLOADFILE, ">$upload_dir/$filename" ) or die "$!";
    binmode UPLOADFILE;
    while ( <$upload_filehandle> )
    print UPLOADFILE;
    close UPLOADFILE;
    print $query->header ( );
    print <<END_HTML;
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Done!</title>
    </head>
    <body>
    <p>Uploading done!</p>
    </body>
    </html>
    END_HTML
    My server config:
    # lighttpd configuration file
    # use it as a base for lighttpd 1.0.0 and above
    # $Id: lighttpd.conf,v 1.7 2004/11/03 22:26:05 weigon Exp $
    ############ Options you really have to take care of ####################
    ## modules to load
    # at least mod_access and mod_accesslog should be loaded
    # all other module should only be loaded if really neccesary
    # - saves some time
    # - saves memory
    server.modules = (
    # "mod_rewrite",
    # "mod_redirect",
    # "mod_alias",
    "mod_access",
    # "mod_cml",
    # "mod_trigger_b4_dl",
    # "mod_auth",
    # "mod_status",
    # "mod_setenv",
    # "mod_fastcgi",
    # "mod_proxy",
    # "mod_simple_vhost",
    # "mod_evhost",
    # "mod_userdir",
    "mod_cgi",
    # "mod_compress",
    # "mod_ssi",
    # "mod_usertrack",
    # "mod_expire",
    # "mod_secdownload",
    # "mod_rrdtool",
    "mod_accesslog" )
    ## a static document-root, for virtual-hosting take look at the
    ## server.virtual-* options
    server.document-root = "/srv/http/"
    ## where to send error-messages to
    server.errorlog = "/var/log/lighttpd/error.log"
    # files to check for if .../ is requested
    index-file.names = ( "index.php", "index.html",
    "index.htm", "default.htm" )
    ## set the event-handler (read the performance section in the manual)
    # server.event-handler = "freebsd-kqueue" # needed on OS X
    # mimetype mapping
    mimetype.assign = (
    ".pdf" => "application/pdf",
    ".sig" => "application/pgp-signature",
    ".spl" => "application/futuresplash",
    ".class" => "application/octet-stream",
    ".ps" => "application/postscript",
    ".torrent" => "application/x-bittorrent",
    ".dvi" => "application/x-dvi",
    ".gz" => "application/x-gzip",
    ".pac" => "application/x-ns-proxy-autoconfig",
    ".swf" => "application/x-shockwave-flash",
    ".tar.gz" => "application/x-tgz",
    ".tgz" => "application/x-tgz",
    ".tar" => "application/x-tar",
    ".zip" => "application/zip",
    ".mp3" => "audio/mpeg",
    ".m3u" => "audio/x-mpegurl",
    ".wma" => "audio/x-ms-wma",
    ".wax" => "audio/x-ms-wax",
    ".ogg" => "application/ogg",
    ".wav" => "audio/x-wav",
    ".gif" => "image/gif",
    ".jar" => "application/x-java-archive",
    ".jpg" => "image/jpeg",
    ".jpeg" => "image/jpeg",
    ".png" => "image/png",
    ".xbm" => "image/x-xbitmap",
    ".xpm" => "image/x-xpixmap",
    ".xwd" => "image/x-xwindowdump",
    ".css" => "text/css",
    ".html" => "text/html",
    ".htm" => "text/html",
    ".js" => "text/javascript",
    ".asc" => "text/plain",
    ".c" => "text/plain",
    ".cpp" => "text/plain",
    ".log" => "text/plain",
    ".conf" => "text/plain",
    ".text" => "text/plain",
    ".txt" => "text/plain",
    ".dtd" => "text/xml",
    ".xml" => "text/xml",
    ".mpeg" => "video/mpeg",
    ".mpg" => "video/mpeg",
    ".mov" => "video/quicktime",
    ".qt" => "video/quicktime",
    ".avi" => "video/x-msvideo",
    ".asf" => "video/x-ms-asf",
    ".asx" => "video/x-ms-asf",
    ".wmv" => "video/x-ms-wmv",
    ".bz2" => "application/x-bzip",
    ".tbz" => "application/x-bzip-compressed-tar",
    ".tar.bz2" => "application/x-bzip-compressed-tar",
    # default mime type
    "" => "application/octet-stream",
    # Use the "Content-Type" extended attribute to obtain mime type if possible
    #mimetype.use-xattr = "enable"
    ## send a different Server: header
    ## be nice and keep it at lighttpd
    # server.tag = "lighttpd"
    #### accesslog module
    accesslog.filename = "/var/log/lighttpd/access.log"
    ## deny access the file-extensions
    # ~ is for backupfiles from vi, emacs, joe, ...
    # .inc is often used for code includes which should in general not be part
    # of the document-root
    url.access-deny = ( "~", ".inc" )
    $HTTP["url"] =~ "\.pdf$" {
    server.range-requests = "disable"
    # which extensions should not be handle via static-file transfer
    # .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
    static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
    ######### Options that are good to be but not neccesary to be changed #######
    ## bind to port (default: 80)
    server.port = ###
    ## bind to localhost (default: all interfaces)
    #server.bind = "127.0.0.1"
    ## error-handler for status 404
    #server.error-handler-404 = "/error-handler.html"
    #server.error-handler-404 = "/error-handler.php"
    ## to help the rc.scripts
    server.pid-file = "/var/run/lighttpd/lighttpd.pid"
    ###### virtual hosts
    ## If you want name-based virtual hosting add the next three settings and load
    ## mod_simple_vhost
    ## document-root =
    ## virtual-server-root + virtual-server-default-host + virtual-server-docroot
    ## or
    ## virtual-server-root + http-host + virtual-server-docroot
    #simple-vhost.server-root = "/srv/http/vhosts/"
    #simple-vhost.default-host = "www.example.org"
    #simple-vhost.document-root = "/htdocs/"
    ## Format: <errorfile-prefix><status-code>.html
    ## -> ..../status-404.html for 'File not found'
    #server.errorfile-prefix = "/usr/share/lighttpd/errors/status-"
    #server.errorfile-prefix = "/srv/http/errors/status-"
    ## virtual directory listings
    #dir-listing.activate = "enable"
    ## enable debugging
    #debug.log-request-header = "enable"
    #debug.log-response-header = "enable"
    #debug.log-request-handling = "enable"
    #debug.log-file-not-found = "enable"
    ### only root can use these options
    # chroot() to directory (default: no chroot() )
    #server.chroot = "/"
    ## change uid to <uid> (default: don't care)
    server.username = "http"
    ## change uid to <uid> (default: don't care)
    server.groupname = "http"
    #### compress module
    #compress.cache-dir = "/var/cache/lighttpd/compress/"
    #compress.filetype = ("text/plain", "text/html")
    #### proxy module
    ## read proxy.txt for more info
    #proxy.server = ( ".php" =>
    # ( "localhost" =>
    # "host" => "192.168.0.101",
    # "port" => 80
    #### fastcgi module
    ## read fastcgi.txt for more info
    ## for PHP don't forget to set cgi.fix_pathinfo = 1 in the php.ini
    #fastcgi.server = ( ".php" =>
    # ( "localhost" =>
    # "socket" => "/var/run/lighttpd/php-fastcgi.socket",
    # "bin-path" => "/usr/bin/php-cgi"
    #### CGI module
    cgi.assign = ( ".pl" => "/usr/bin/perl",
    ".cgi" => "/usr/bin/perl" )
    #### SSL engine
    #$SERVER["socket"] == "0.0.0.0:443" {
    ssl.engine = "enable"
    ssl.pemfile = "/etc/ssl/private/lighttpd.pem"
    # server.errorlog = "/var/log/lighttpd/error-ssl.log"
    # accesslog.filename = "/var/log/lighttpd/access-ssl.log"
    # server.document-root = "/home/lighttpd/html-ssl"
    #### status module
    #status.status-url = "/server-status"
    #status.config-url = "/server-config"
    #### auth module
    ## read authentication.txt for more info
    #auth.backend = "plain"
    #auth.backend.plain.userfile = "lighttpd.user"
    #auth.backend.plain.groupfile = "lighttpd.group"
    #auth.backend.ldap.hostname = "localhost"
    #auth.backend.ldap.base-dn = "dc=my-domain,dc=com"
    #auth.backend.ldap.filter = "(uid=$)"
    #auth.require = ( "/server-status" =>
    # "method" => "digest",
    # "realm" => "download archiv",
    # "require" => "user=jan"
    # "/server-config" =>
    # "method" => "digest",
    # "realm" => "download archiv",
    # "require" => "valid-user"
    #### url handling modules (rewrite, redirect, access)
    #url.rewrite = ( "^/$" => "/server-status" )
    #url.redirect = ( "^/wishlist/(.+)" => "http://www.123.org/$1" )
    #### both rewrite/redirect support back reference to regex conditional using %n
    #$HTTP["host"] =~ "^www\.(.*)" {
    # url.redirect = ( "^/(.*)" => "http://%1/$1" )
    # define a pattern for the host url finding
    # %% => % sign
    # %0 => domain name + tld
    # %1 => tld
    # %2 => domain name without tld
    # %3 => subdomain 1 name
    # %4 => subdomain 2 name
    #evhost.path-pattern = "/srv/http/vhosts/%3/htdocs/"
    #### expire module
    #expire.url = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes")
    #### ssi
    #ssi.extension = ( ".shtml" )
    #### rrdtool
    #rrdtool.binary = "/usr/bin/rrdtool"
    #rrdtool.db-name = "/var/lib/lighttpd/lighttpd.rrd"
    #### setenv
    #setenv.add-request-header = ( "TRAV_ENV" => "mysql://user@host/db" )
    #setenv.add-response-header = ( "X-Secret-Message" => "42" )
    ## for mod_trigger_b4_dl
    # trigger-before-download.gdbm-filename = "/var/lib/lighttpd/trigger.db"
    # trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" )
    # trigger-before-download.trigger-url = "^/trigger/"
    # trigger-before-download.download-url = "^/download/"
    # trigger-before-download.deny-url = "http://127.0.0.1/index.html"
    # trigger-before-download.trigger-timeout = 10
    ## for mod_cml
    ## don't forget to add index.cml to server.indexfiles
    # cml.extension = ".cml"
    # cml.memcache-hosts = ( "127.0.0.1:11211" )
    #### variable usage:
    ## variable name without "." is auto prefixed by "var." and becomes "var.bar"
    #bar = 1
    #var.mystring = "foo"
    ## integer add
    #bar += 1
    ## string concat, with integer cast as string, result: "www.foo1.com"
    #server.name = "www." + mystring + var.bar + ".com"
    ## array merge
    #index-file.names = (foo + ".php") + index-file.names
    #index-file.names += (foo + ".php")
    #### include
    #include /etc/lighttpd/lighttpd-inc.conf
    ## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"
    #include "lighttpd-inc.conf"
    #### include_shell
    #include_shell "echo var.a=1"
    ## the above is same as:
    #var.a=1
    The site is running over https with a self signed ssl-cert, if that matters. If I try to upload a file, the browser just quickly reloades the page, the filename still in the input field. The file isn't uploaded and the page that the script should display when completed doesn't show neither.
    Does anyone know how to troubleshoot this? I'm not getting any errors, it just doesn't work..

    I haven't used Websphere before so I can't say much about that. Try putting <%@ page language="Java" %> at the top of your jsp page.
    Try putting your java files into a package and see if that helps. I read somewhere that Tomcat once had issues with running classes that weren't in a package. Make sure to put the package statement at the top of your Java files if you do.
    Websphere says it caught an unhandled exception. Instead of having your method throw and Exception put your code in a try-catch block and then print a stack trace to see if it says anything when it trys to read and write data.
    Try{
        PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter("doUpload.txt")));
        ServletInputStream in = request.getInputStream();
        int a=0;
        a=in.read();
        while (a!= -1){
            pw.print((char) a);
            a=in.read();
        pw.close();
    }catch(Exception e){
      e.printStackTrace();
    }Sorry I can't really give you more help.
    -S-

  • Alv : drill down not working.

    Hi All,
    Could you please tell me whats wrong with this code ? its not drilling down to show 'ebeln' with me22n.  Am I missing something ?
    Please help.
    Hrishi
    code is :-
    REPORT  Z_VENDOR_BACKORDER_REPORT_ALV .
    TABLES:  EKKO, LFA1, MAKT, EKET, EKPO, AFPO, MARC.
    *Data Declaration
    DATA:  BEGIN OF ITAB OCCURS 0 ,
            ebeln       LIKE ekko-ebeln  ,  " PO number
            aedat       LIKE ekko-aedat  ,  " creation date
            ebelp       LIKE ekpo-ebelp  ,  " item no
            lifnr       LIKE ekko-lifnr  ,  " vendor number
            name1       LIKE lfa1-name1  ,  " vendor name
            RESWK       LIKE EKKO-RESWK  ,  " PLANT NO
            MEMORY      LIKE EKKO-MEMORY , " ORDER INCOMPLETE
            matnr       LIKE ekpo-matnr  ,  " material number
            werks       like ekpo-werks  ,  " plant
            txz01       LIKE ekpo-txz01  ,  " material description
            eindt       LIKE eket-eindt  ,  " Promised date
            menge       LIKE eket-menge  ,  " quantity
            wemng       LIKE eket-wemng  ,  " delivered quantity
            netpr       like ekpo-netpr  ,  " value in AUD
            peinh       like ekpo-peinh  ,  " price unit
            banfn       like ekpo-banfn  ,  " PR no
            aufnr       like ebkn-aufnr  ,  " Production order no
            MAABC       LIKE MARC-MAABC  ,  " MATERIAL ABC Indicator
            maktx       like makt-maktx  ,  " material long description
            open_quant  type p decimals 2,  " quantity - delivered
            VALUE       TYPE p decimals 2,  " $ VALUE * OPEN QUANTITY
            end of ITAB.
    data: wa like itab.
    DATA: bdcdata LIKE bdcdata OCCURS 0 WITH HEADER LINE.
    DATA: TEMP TYPE EKKO-LIFNR.
    data: opt like CTU_PARAMS.
    *DATA:  WA TYPE FINAL.
    all ALV declarations
    type-pools: slis.                                 "ALV Declarations
    DATA:   fieldcatalog        TYPE slis_t_fieldcat_alv with header line,
            G_REPID             TYPE SY-REPID,
            GS_PRINT            TYPE SLIS_PRINT_ALV,
            GT_LIST_TOP_OF_PAGE TYPE SLIS_T_LISTHEADER,
            GT_EVENTS           TYPE SLIS_T_EVENT,
            GT_SORT             TYPE SLIS_T_SORTINFO_ALV,
            GS_LAYOUT           TYPE SLIS_LAYOUT_ALV,
            COL_POS TYPE I.
    -----------------SELECTION SCREEN----------------------
      selection-screen begin of block b1 with frame title text-001.
      select-options VENDORNO for ekko-lifnr.
      select-options MATERIAL for ekpo-matnr.
      SELECT-OPTIONS PLANT FOR EKKO-RESWK.
      select-options REQDAT for eket-eindt.
      selection-screen end of block b1.
    *................... GET DATA..................
    START-OF-SELECTION.
    PERFORM GATHER_DATA.
    END-OF-SELECTION.
    FORM USER_COMMAND USING r_ucomm LIKE sy-ucomm
    rs_selfield TYPE slis_selfield.
    CASE r_ucomm.
    WHEN '&IC1'.
    CASE  rs_selfield-sel_tab_field.
    WHEN 'ITAB-EBELN'.
    CHECK NOT rs_selfield-value IS INITIAL.
    SET PARAMETER ID 'BUS' FIELD rs_selfield-value.
    CALL TRANSACTION 'ME22N' AND SKIP FIRST SCREEN.
    Do something at 'Sales document type' field selection
    when 'ITAB-MATNR'.
    SET PARAMETER ID 'BUS' FIELD rs_selfield-value.
    CALL TRANSACTION 'MD04' AND SKIP FIRST SCREEN.
    ENDCASE.
    ENDCASE.
    ENDFORM.
    form gather_data.
    SELECT EKKO~EBELN
           EKKO~AEDAT
           EKKO~LIFNR
          EKKO~MEMORY
          EKKO~RESWK
           EKPO~EBELP
           EKPO~MATNR
           ekpo~werks
           ekpo~netpr
           ekpo~peinh
           ekpo~banfn
           ekpo~txz01
          makt~maktx
           EKET~EINDT
           EKET~MENGE
           EKET~WEMNG
           LFA1~NAME1
    INTO corresponding fields of ITAB
    FROM (
    EKKO inner JOIN EKPO
    ON EKKOEBELN = EKPOEBELN
    inner JOIN EKET
    ON EKPOEBELN = EKETEBELN
    AND EKPOEBELP = EKETEBELP
    inner JOIN LFA1
    ON EKKOLIFNR = LFA1LIFNR
    *left outer join makt
    *on ekpomatnr = maktmatnr
    WHERE EKKO~LIFNR IN VENDORNO
    AND EKKO~RESWK IN PLANT
    and EKPO~MATNR IN MATERIAL
    and ekpo~elikz eq ' '
    and ekpo~loekz ne 'L'
    and eket~eindt in REQDAT.
    append itab.
    CLEAR ITAB.
    endselect.
    clear temp.
    sort itab by lifnr.
    loop at itab .
    ITAB-OPEN_QUANT = ITAB-MENGE - ITAB-WEMNG.
    if itab-matnr eq ''.
    select single aufnr from ebkn into itab-aufnr where banfn = itab-banfn.
      select single matnr from afpo into itab-matnr where aufnr = itab-aufnr.
    endif.
    select single maktx from makt into itab-maktx where matnr = itab-matnr.
    select single maabc from MARC INTO ITAB-MAABC WHERE MATNR = ITAB-MATNR.
    ITAB-VALUE = ITAB-NETPR * ITAB-OPEN_QUANT / itab-peinh.
    modify itab.
    endloop.
    SKIP.
      fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'LIFNR'.
      fieldcatalog-seltext_m   = 'vendor no'.
      fieldcatalog-col_pos     = 1.
      fieldcatalog-outputlen   = 15.
       fieldcatalog-inttype = 'C'.
      fieldcatalog-emphasize   = 'X'.
      fieldcatalog-key         = 'X'.
    fieldcatalog-do_sum      = 'X'.
      fieldcatalog-no_zero     = 'X'.
      append fieldcatalog to fieldcatalog.
        clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'EBELN'.
      fieldcatalog-seltext_m   = 'po Number'.
      fieldcatalog-col_pos     = 2.
       fieldcatalog-inttype = 'C'.
       fieldcatalog-emphasize = 'C401'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'AEDAT'.
      fieldcatalog-seltext_m   = 'po date'.
      fieldcatalog-col_pos     = 3.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
    fieldcatalog-fieldname   = 'EBELP'.
      fieldcatalog-seltext_m   = 'item number'.
      fieldcatalog-col_pos     = 4.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'MATNR'.
       fieldcatalog-no_zero     = 'X'.
      fieldcatalog-seltext_m   = 'material number'.
      fieldcatalog-col_pos     = 5.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'MAABC'.
      fieldcatalog-seltext_m   = 'material type'.
      fieldcatalog-col_pos     = 6.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'TXZ01'.
      fieldcatalog-seltext_m   = 'short text'.
      fieldcatalog-col_pos     = 7.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'MAKTX'.
      fieldcatalog-seltext_m   = 'long text'.
      fieldcatalog-col_pos     = 8.
       fieldcatalog-inttype = 'C'.
       fieldcatalog-outputlen   = 15.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
    fieldcatalog-fieldname   = 'EINDT'.
      fieldcatalog-seltext_m   = 'date promised'.
      fieldcatalog-col_pos     = 9.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'MENGE'.
      fieldcatalog-seltext_m   = 'Quantity'.
      fieldcatalog-col_pos     = 10.
       fieldcatalog-inttype = 'C'.
      fieldcatalog-outputlen   = 15.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'WEMNG'.
      fieldcatalog-seltext_m   = 'Delivered'.
      fieldcatalog-col_pos     = 11.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
      fieldcatalog-fieldname   = 'OPEN_QUANT'.
      fieldcatalog-seltext_m   = 'Open quantity'.
      fieldcatalog-col_pos     = 12.
       fieldcatalog-inttype = 'C'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    fieldcatalog-tabname = 'ITAB'.
    fieldcatalog-fieldname   = 'VALUE'.
      fieldcatalog-seltext_m   = '$ value'.
      fieldcatalog-col_pos     = 13.
       fieldcatalog-inttype = 'C'.
       fieldcatalog-do_sum      = 'X'.
      append fieldcatalog to fieldcatalog.
      clear  fieldcatalog.
    call function 'REUSE_ALV_GRID_DISPLAY'
           exporting
                i_callback_program      = g_repid
                 I_CALLBACK_USER_COMMAND = 'USER_COMMAND'
                it_fieldcat             = fieldcatalog[]
                is_layout               = GS_layout
                  IT_SORT                = gt_sort
                  I_DEFAULT = 'X'
                    I_SAVE = 'X'
               is_variant              = z_template
           tables
                t_outtab                = ITAB
                exceptions
                program_error           = 1
                others                  = 2.
    endform.

    hi,
    please run the code below.
    REPORT yfi7g_ing_mic_001 .
    *PROGRAM YFI7G_ING_MIC_001.
    TABLES: vbak .
    TABLES: mara .
    TYPES: BEGIN OF tp_vbak ,
          vbeln TYPE vbak-vbeln,
          erdat TYPE vbak-erdat,
          erzet TYPE vbak-erzet,
          ernam TYPE vbak-ernam,
          vbtyp TYPE vbak-vbtyp,
          trvog TYPE vbak-trvog,
          auart TYPE vbak-auart,
          lifsk TYPE vbak-lifsk,
          faksk TYPE vbak-faksk,
          waerk TYPE vbak-waerk,
          vkorg TYPE vbak-vkorg,
          kunnr TYPE vbak-kunnr,
          vgbel TYPE vbak-vgbel,
          vgtyp TYPE vbak-vgtyp,
    END OF tp_vbak .
    TYPES: BEGIN OF tp_mara ,
            matnr TYPE mara-matnr,
    END OF tp_mara .
    TYPES: BEGIN OF tp_alv1_data.
    INCLUDE TYPE tp_vbak .
    TYPES: END OF tp_alv1_data.
    TYPES: BEGIN OF tp_alv2_data.
    INCLUDE TYPE tp_mara .
    TYPES: END OF tp_alv2_data.
    TYPE-POOLS: slis.
    DATA: gt_vbak TYPE STANDARD TABLE OF tp_vbak WITH HEADER LINE.
    DATA: gt_mara TYPE STANDARD TABLE OF tp_mara WITH HEADER LINE.
    DATA: gs_variant LIKE disvariant.
    DATA: gt_alv1_data TYPE STANDARD TABLE OF tp_alv1_data WITH HEADER LINE.
    DATA: gt_alv2_data TYPE STANDARD TABLE OF tp_alv2_data WITH HEADER LINE.
    SELECTION-SCREEN                                                     *
    BLOCK b0                                                             *
    SELECTION-SCREEN BEGIN OF BLOCK b0 WITH FRAME.
    SELECT-OPTIONS: s_vbeln FOR vbak-vbeln.        "<field not defined?>
    PARAMETERS: p_matnr LIKE mara-matnr.           "<field not defined?>
    SELECTION-SCREEN END OF BLOCK b0.
    BLOCK bvar                                                           *
    SELECTION-SCREEN BEGIN OF BLOCK bvar WITH FRAME.
    PARAMETERS: p_vari  LIKE disvariant-variant.
    SELECTION-SCREEN END OF BLOCK bvar.
    BLOCK bbox                                                           *
    SELECTION-SCREEN BEGIN OF BLOCK bbox WITH FRAME.
    PARAMETERS: p_box_up  RADIOBUTTON GROUP b1,
                p_box_do  RADIOBUTTON GROUP b1 DEFAULT 'X',
                p_box_no  RADIOBUTTON GROUP b1.
    SELECTION-SCREEN END OF BLOCK bbox.
          AT SELECTION-SCREEN ON P_VARI                                 *
    AT SELECTION-SCREEN ON p_vari.
      PERFORM alv_variant_existence USING    p_vari
                                    CHANGING gs_variant.
          AT SELECTION-SCREEN ON VALUE REQUEST FOR P_VARI               *
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR p_vari.
      PERFORM alv_variant_f4 CHANGING p_vari
                                      gs_variant.
    INITIALIZATION                                                       *
    INITIALIZATION.
    START-OF-SELECTION                                                   *
    START-OF-SELECTION.
      PERFORM authority_check.
      PERFORM get_control_data.
      PERFORM get_transaction_data.
      PERFORM process_transaction_data.
    END-OF-SELECTION                                                     *
    END-OF-SELECTION.
      PERFORM output_data.
    F   O   R   M   S                                                   *
          FORM AUTHORITY_CHECK                                          *
          Perform authority checks for the report                       *
    FORM authority_check.
    !!! Note: authorisation checks are application-dependent.
    !!! Some common cases are listed below - please select one of them
    !!! or add new authorisation checks.
    !!! If the report is creating batch input session or using LDB
    !!! it may be sufficient to use automatic SAP auth.checks.
    Authorisation for displaying documents in a single company code
    authority-check object 'F_BKPF_BUK'
           id 'BUKRS' field p_bukrs
           id 'ACTVT' field '03'.
    if sy-subrc <> 0.
      message e001(z9) with 'No authorisation to display documents'
                            'in company code' p_bukrs.
    endif.
    Displaying documents from a list of company codes (select-options)
    call function 'Y_BUKRS_AUTHORITY_CHECK'
       EXPORTING
            ACTVT     = '03'
            NOMESSAGE = ' '
       tables
            s_bukrs   = s_bukrs.
    ENDFORM.                              " AUTHORITY_CHECK
          FORM GET_CONTROL_DATA                                         *
          Read configuration etc.                                       *
    FORM get_control_data.
    ENDFORM.                               " GET_CONTROL_DATA
          FORM GET_TRANSACTION_DATA                                     *
          Read documents etc.                                           *
    FORM get_transaction_data.
    !!! Data selection statement below has been generated automatically.
    !!! Please check if it is correct and complete.
    !!! Use table joins or 'SELECT FOR ALL ENTRIES' when selecting data
    !!! from related tables.
      SELECT
                vbeln
                erdat
                erzet
                ernam
       FROM vbak
          INTO CORRESPONDING FIELDS OF TABLE gt_vbak
      CHECK NOT gt_vbak[] IS INITIAL.
      SELECT
                matnr
       FROM mara
          INTO CORRESPONDING FIELDS OF TABLE gt_mara
          FOR ALL ENTRIES IN gt_vbak
          WHERE ernam = gt_vbak-ernam
    ENDFORM.                               " GET_TRANSACTION_DATA
          FORM PROCESS_TRANSACTION_DATA                                 *
    FORM process_transaction_data.
      LOOP AT gt_vbak .
        MOVE-CORRESPONDING gt_vbak TO gt_alv1_data .
        APPEND gt_alv1_data .
      ENDLOOP.
      FREE gt_vbak .
      LOOP AT gt_mara .
        MOVE-CORRESPONDING gt_mara TO gt_alv2_data .
        APPEND gt_alv2_data .
      ENDLOOP.
      FREE gt_mara .
    ENDFORM.                               " PROCESS_TRANSACTION_DATA
          FORM OUTPUT_DATA                                              *
    FORM output_data.
      PERFORM alv_list_display.
    ENDFORM.                               " OUTPUT_DATA
          FORM DISPLAY_RECORD                                           *
          Display object associated with the current ALV line           *
    FORM display_record USING is_selfield TYPE slis_selfield.
      READ TABLE gt_alv1_data INDEX is_selfield-tabindex.
      CHECK sy-subrc = 0.
    !!! SAMPLE IMPLEMENTATION FOR DISPLAYING FI DOCUMENTS:
      SET PARAMETER ID 'BUK' FIELD gt_alv1_data-vbeln.
    set parameter id 'BLN' field gt_alv1_data-belnr.
    set parameter id 'GJR' field gt_alv1_data-gjahr.
      CALL TRANSACTION 'FB03' AND SKIP FIRST SCREEN.
    ENDFORM.                               " DISPLAY_RECORD
          FORM ALV_LIST_DISPLAY                                         *
          Invoke main ALV function to format and show the report        *
    FORM alv_list_display.
      DATA: ls_layout      TYPE slis_layout_alv,
            ls_print       TYPE slis_print_alv,
            ls_keyinfo     TYPE slis_keyinfo_alv,
            lt_fieldcat    TYPE slis_t_fieldcat_alv,
            lt_exctab      TYPE slis_t_extab,
            lt_sorttab     TYPE slis_t_sortinfo_alv,
            lt_events      TYPE slis_t_event.
      PERFORM alv_init_report_events TABLES   lt_events.
      PERFORM alv_init_report_layout TABLES   lt_fieldcat
                                              lt_exctab
                                              lt_sorttab
                                     CHANGING ls_layout
                                              ls_print
                                              ls_keyinfo.
      CALL FUNCTION 'REUSE_ALV_HIERSEQ_LIST_DISPLAY'
        EXPORTING
          i_interface_check        = ' '
          i_callback_program       = sy-cprog
          is_layout                = ls_layout
          it_fieldcat              = lt_fieldcat
          it_excluding             = lt_exctab
        IT_SPECIAL_GROUPS        =
          it_sort                  = lt_sorttab
        IT_FILTER                =
        IS_SEL_HIDE              =
        I_SCREEN_START_COLUMN    = 0
        I_SCREEN_START_LINE      = 0
        I_SCREEN_END_COLUMN      = 0
        I_SCREEN_END_LINE        = 0
        I_DEFAULT                = 'X'
          i_save                   = 'A'
          is_variant               = gs_variant
          it_events                = lt_events
        IT_EVENT_EXIT            =
          i_tabname_header         = 'GT_ALV1_DATA'
          i_tabname_item           = 'GT_ALV2_DATA'
        I_STRUCTURE_NAME_HEADER  =
        I_STRUCTURE_NAME_ITEM    =
          is_keyinfo               =  ls_keyinfo
          is_print                 =  ls_print
        IS_REPREP_ID             =
      IMPORTING
        E_EXIT_CAUSED_BY_CALLER  =
        ES_EXIT_CAUSED_BY_USER   =
        TABLES
          t_outtab_header          = gt_alv1_data
          t_outtab_item            = gt_alv2_data.
      EXCEPTIONS
        PROGRAM_ERROR            = 1
        OTHERS                   = 2
    ENDFORM.                           " ALV_LIST_DISPLAY
          FORM ALV_INIT_REPORT_LAYOUT                                   *
          Set up report layout definition for ALV_LIST_DISPLAY          *
    <-- OT_FIELDCAT list of fields                                     *
    <-- OT_EXCTAB   excluded menu options                              *
    <-- OT_SORTTAB  sorting/grouping definition                        *
    <-- OS_LAYOUT   global report layout settings                      *
    <-- OS_PRINT    global report printout settings                    *
    <-- OS_KEYINFO  itab key fields (required only for hier.lists)     *
    FORM alv_init_report_layout TABLES ot_fieldcat TYPE slis_t_fieldcat_alv
                                       ot_exctab   TYPE slis_t_extab
                                       ot_sorttab  TYPE slis_t_sortinfo_alv
                              CHANGING cs_layout   TYPE slis_layout_alv
                                       cs_print    TYPE slis_print_alv
                                       cs_keyinfo  TYPE slis_keyinfo_alv.
    add menu items to be excluded to ot_exctab.
      REFRESH ot_exctab.
      REFRESH ot_fieldcat.
      REFRESH ot_sorttab.
    !!! List all ALV data fields for display here:
    DD-struct  = data dictionary structure name
    DD-field   = field of data dictionary structure
    itab       = internal table for output data
    itab-field = internal table field name
    key        = set to 'X' if key field
    sum        = set to 'X' for totals
    hid        = set to 'X' if field is initially hidden
    row        = list row number (multi-line list if >1)
    DD-struct    DD-field     itab         itab-field  key sum hid row
      PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:
    'VBAK'       'VBELN'      'GT_ALV1_DATA' 'VBELN'     ' ' ' ' ' ' 1 ,
    'VBAK'       'ERDAT'      'GT_ALV1_DATA' 'ERDAT'     ' ' ' ' ' ' 1 ,
    'VBAK'       'ERZET'      'GT_ALV1_DATA' 'ERZET'     ' ' ' ' ' ' 1 ,
    'VBAK'       'ERNAM'      'GT_ALV1_DATA' 'ERNAM'     ' ' ' ' ' ' 1.
      PERFORM alv_build_fieldcat TABLES ot_fieldcat USING:
    'MARA'       'MATNR'      'GT_ALV2_DATA' 'MATNR'     ' ' ' ' ' ' 1 .
    !!! List all ALV data fields for sorting/grouping here
    itab       = internal table for output data
    itab-field = internal table field name
    up         = sort ascending
    down       = sort descending
    grp        = group by
    comp       = group initially compressed
    pos        = field position in sort sequence
    itab                   field              up down grp comp        pos
      PERFORM alv_build_sorttab TABLES ot_sorttab USING:
    'GT_ALV1_DATA'         'VBELN'             'X' ' ' ' ' ' '           1.
      PERFORM alv_build_sorttab TABLES ot_sorttab USING:
    'GT_ALV2_DATA'         'MATNR'             'X' ' ' ' ' ' '           1.
    !!! key definition - required only for hierarchical display (2 itabs)
      cs_keyinfo-header01 = 'VBELN' .
      cs_keyinfo-item01   = 'MATNR' .
    !!! See the declaration of type SLIS_LAYOUT_ALV and set the fields
    !!! of OS_LAYOUT record to change list-level attributes
    os_layout-no_colhead     = 'X'.         " no headings
      cs_layout-zebra          = 'X'.         " stripped pattern
    os_layout-no_vline       = 'X'.         " columns separated by space
    os_layout-totals_only    = 'X'.         " show only totals
    os_layout-totals_text    = 'Total'.     " totals line label
    os_layout-subtotals_text = 'Subtotal'.  " subtotals line label
    os_layout-subtotals_text = 'Subtotal'.  " subtotals line label
    os_layout-key_hotspot    = 'X'.         " keys as hotspot
    os_layout-expand_all     = 'X'.         " Expand all positions
    os_layout...
      cs_print-no_print_selinfos = 'X'.       " Skip selection statistics
      cs_print-no_print_listinfos = 'X'.      " Skip list statistics
    os_print-...
    ENDFORM.                               " INIT_REPORT_LAYOUT
          FORM ALV_BUILD_FIELDCAT                                       *
          Format a single line for ALV_INIT_REPORT_LAYOUT               *
    FORM alv_build_fieldcat TABLES ot_fieldcat
                            USING  iv_ref_tabname   "ref to a table/field
                                   iv_ref_fieldname
                                   iv_tabname     "actual table/field name
                                   iv_fieldname
                                   iv_key
                                   iv_do_sum
                                   iv_no_out
                                   iv_row_pos.
    status variables for auto-numbering of field column position
    (column number reset when a new table or row begins)
      STATICS: sv_last_tabname TYPE slis_tabname,
               sv_last_row_pos TYPE i,
               sv_current_col  TYPE i.
      IF sv_last_tabname <> iv_tabname OR sv_last_row_pos <> iv_row_pos.
        sv_current_col = 1.
      ELSE.
        ADD 1 TO sv_current_col.
      ENDIF.
      sv_last_tabname = iv_tabname.
      sv_last_row_pos = iv_row_pos.
      DATA: ls_fieldcat    TYPE slis_fieldcat_alv.
      DATA: lv_fieldname   TYPE slis_fieldname.
      lv_fieldname = iv_fieldname.
    !!! List all the special formatting requirements in cases below
    case lv_fieldname.
      when 'WRBTR'.                      "<-- link with currency required
        ls_fieldcat-cfieldname = 'WAERS'.
        ls_fieldcat-ctabname   = iv_tabname.
      when 'HKONT'.                     "<-- change default column header
        ls_fieldcat-seltext_s  = 'GL Acc.'.
        ls_fieldcat-ddictxt    = 'S'.          " (S)hort (M)iddle (L)ong
      when 'SOME_NUMBER'                 "<-- change number formatting
        ls_fieldcat-nosign     = 'X'.
        ls_fieldcat-nozero     = 'X'.
        ls_fieldcat-just       = 'L'.         " (L)eft (R)ight (C)enter
    endcase.
      ls_fieldcat-ref_tabname   = iv_ref_tabname.
      ls_fieldcat-ref_fieldname = iv_ref_fieldname.
      ls_fieldcat-tabname       = iv_tabname.
      ls_fieldcat-fieldname     = iv_fieldname.
      ls_fieldcat-key           = iv_key.
      ls_fieldcat-do_sum        = iv_do_sum.
      ls_fieldcat-no_out        = iv_no_out.
      ls_fieldcat-row_pos       = iv_row_pos.
      ls_fieldcat-col_pos       = sv_current_col.
      APPEND ls_fieldcat TO ot_fieldcat.
    ENDFORM.                          " ALV_BUILD_FIELDCAT
          FORM ALV_BUILD_SORTTAB                                        *
          Set up sorting information for ALV_INIT_REPORT_LAYOUT         *
    FORM alv_build_sorttab TABLES ot_sorttab TYPE slis_t_sortinfo_alv
                           USING  iv_tabname   TYPE slis_fieldname
                                  iv_fieldname TYPE slis_fieldname
                                  iv_up        TYPE c
                                  iv_down      TYPE c
                                  iv_subtot    TYPE c
                                  iv_comp      TYPE c
                                  iv_spos      TYPE n.
      ot_sorttab-spos      = iv_spos.
      ot_sorttab-fieldname = iv_fieldname.
      ot_sorttab-tabname   = iv_tabname.
      ot_sorttab-up        = iv_up.
      ot_sorttab-down      = iv_down.
      ot_sorttab-subtot    = iv_subtot.
      ot_sorttab-comp      = iv_comp.
      APPEND ot_sorttab.
    ENDFORM.                            " ALV_BUILD_SORTTAB
          FORM ALV_INIT_REPORT_EVENTS                                   *
          Set up program events for ALV_LIST_DISPLAY                    *
    <-- OT_EVENTS   list of events and associated report subroutines   *
    FORM alv_init_report_events TABLES ot_events TYPE slis_t_event.
      CLEAR   ot_events.
      REFRESH ot_events.
      ot_events-name = slis_ev_user_command.
      ot_events-form = 'USER_COMMAND'.
      APPEND ot_events.
      ot_events-name = slis_ev_pf_status_set.
      ot_events-form = ''.                         "'PF_STATUS_SET'.
      APPEND ot_events.
      ot_events-name = slis_ev_top_of_list.
      ot_events-form = 'TOP_OF_LIST'.
      APPEND ot_events.
      ot_events-name = slis_ev_end_of_list.
      ot_events-form = 'END_OF_LIST'.
      APPEND ot_events.
      ot_events-name = slis_ev_top_of_page.
      ot_events-form = 'TOP_OF_PAGE'.
      APPEND ot_events.
      ot_events-name = slis_ev_end_of_page.
      ot_events-form = 'END_OF_PAGE'.
      APPEND ot_events.
      ot_events-name = slis_ev_foreign_top_of_page.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_foreign_end_of_page.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_top_of_coverpage.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_end_of_coverpage.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_before_line_output.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_after_line_output.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_caller_exit_at_start.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_list_modify.
      ot_events-form = ''.
      APPEND ot_events.
      ot_events-name = slis_ev_subtotal_text.
      ot_events-form = ''.
      APPEND ot_events.
    ENDFORM.                            " ALV_INIT_REPORT_EVENTS
          FORM USER_COMMAND                                             *
          Subroutine attached as callback form to ABAP List Viewer      *
      --> UCOMM    - user command code passed from ALV                  *
      --> SELFIELD - information record describing current line/field   *
    FORM user_command USING value(iv_ucomm) LIKE sy-ucomm
                            is_selfield     TYPE slis_selfield.
      CASE iv_ucomm.
        WHEN '&IC1'.                                  "ALV record selection
          PERFORM display_record USING is_selfield.
      when ...
      ENDCASE.
    ENDFORM.                               " USER_COMMAND
          FORM PF_STATUS_SET                                            *
          Subroutine attached as callback form to ABAP List Viewer,     *
          allows setting alternative menu.  If necessary:               *
          1. Copy 'STANDARD' menu from SAPLKKBL and modify as required, *
          2. Activate callback                                          *
    FORM pf_status_set USING it_exctab TYPE slis_t_extab.
    set pf-status 'STANDARD' excluding it_exctab.
    ENDFORM.                               " PF_STATUS_SET
          FORM TOP_OF_LIST                                              *
          Subroutine attached as callback form to ABAP List Viewer,     *
          executed once at the start of list output.                    *
    FORM top_of_list.
      DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.
      DATA: lv_report LIKE sy-repid.
      lv_report = sy-repid.             "do not pass sy-repid to function!
      IF p_box_up = 'X'. "display select options at report start
        CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
          EXPORTING
            curr_report     = lv_report
          TABLES
            selection_table = lt_seltab.
    remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'
    before display, if necessary
        CALL FUNCTION 'RS_LIST_SELECTION_TABLE'
           EXPORTING
                report        = lv_report
                seltext       = 'X'
            dyn_range     =
                newpage       = ' '
            screennr      = 1000
           TABLES
                sel_tab       = lt_seltab
           EXCEPTIONS
                sel_tab_empty = 1.
      ENDIF. "p_box_up = 'X'
    ENDFORM.                               " TOP_OF_LIST
          FORM END_OF_LIST                                              *
          Subroutine attached as callback form to ABAP List Viewer      *
          executed once at the end of list output.                      *
    FORM end_of_list.
      DATA: lt_seltab TYPE STANDARD TABLE OF rsparams WITH HEADER LINE.
      DATA: lv_report LIKE sy-repid.
      lv_report = sy-repid.             "do not pass sy-repid to function!
      IF p_box_do = 'X'. "display select options at report end
        CALL FUNCTION 'RS_REFRESH_FROM_SELECTOPTIONS'
          EXPORTING
            curr_report     = lv_report
          TABLES
            selection_table = lt_seltab.
    remove 'technical' parameters with 'DELETE LT_SELTAB WHERE...'
    before display, if necessary
        CALL FUNCTION 'RS_LIST_SELECTION_TABLE'
           EXPORTING
                report        = lv_report
                seltext       = 'X'
            dyn_range     =
                newpage       = ' '
            screennr      = 1000
           TABLES
                sel_tab       = lt_seltab
           EXCEPTIONS
                sel_tab_empty = 1.
      ENDIF. "p_box_do = 'X'
    ENDFORM.                               " END_OF_LIST
          FORM TOP_OF_PAGE                                              *
          Subroutine attached as callback form to ABAP List Viewer      *
    FORM top_of_page.
    standard Ingram Micro report page heading
      DATA: lv_coco_pos TYPE i,          "CurPos of 'Company confidential'
            lv_title_pos TYPE i,           "CurPos of report title
            lv_title(70) TYPE c,           "Truncated report title
            lv_page_pos TYPE i,            "CurPos of page number
            lv_date_pos TYPE i,            "CurPos of date and time
            lv_page_no(10) TYPE c,
            lv_date(25) TYPE c,
            lv_time(20) TYPE c,
            lv_page(10) TYPE c.
    We may need to truncate title if the line size is < 81.
      IF sy-linsz < 81.
        lv_title = sy-title+0(50).
      ELSE.
        lv_title = sy-title.
      ENDIF.
    Decide on positioning of text depending on width of page
      lv_title_pos = ( sy-linsz / 2 ) - ( STRLEN( lv_title ) / 2 ).
      lv_coco_pos = sy-linsz - 20.
      FORMAT COLOR COL_HEADING INTENSIFIED ON.
      WRITE: / 'Ingram Micro',
               AT lv_title_pos lv_title,
               AT lv_coco_pos 'Company Confidential'.
    Setup data correctly in the correct format for the display fields.
      lv_page = sy-pagno.
      SHIFT lv_page LEFT DELETING LEADING ' '.
      CONCATENATE sy-datum6(2) sy-datum4(2) sy-datum+0(4)
                   INTO lv_date SEPARATED BY '.'.
      CONCATENATE sy-uzeit0(2) ':' sy-uzeit2(2) INTO lv_time.
      CONCATENATE lv_date lv_time INTO lv_date SEPARATED BY ' '.
      CONCATENATE 'Page' lv_page INTO lv_page_no SEPARATED BY ' '.
    Decide on positioning of text depending on width of page.
      lv_page_pos = sy-linsz - ( STRLEN( lv_page_no ) ).
      WRITE: / lv_date,
               AT lv_page_pos lv_page_no.
      ULINE.
    ENDFORM.                               " TOP_OF_PAGE
          FORM END_OF_PAGE                                              *
          Subroutine attached as callback form to ABAP List Viewer      *
    FORM end_of_page.
    ENDFORM.                               " END_OF_PAGE
          Form  ALV_VARIANT_EXISTENCE
          Reads ALV variant definition
    FORM alv_variant_existence  USING    iv_variant LIKE disvariant-variant
                                CHANGING os_variant LIKE disvariant.
      CHECK NOT iv_variant IS INITIAL.
      os_variant-report  = sy-repid.
      os_variant-variant = iv_variant.
      IF iv_variant CP '/*'.    "user-specific variants begin with slash
        os_variant-username = sy-uname.
      ENDIF.
      CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
        EXPORTING
          i_save        = 'A'
        CHANGING
          cs_variant    = os_variant
        EXCEPTIONS
          wrong_input   = 1
          not_found     = 2
          program_error = 3
          OTHERS        = 4.
      IF sy-subrc <> 0.
        MESSAGE e001(z9) WITH 'Please select a valid display variant.'.
      ENDIF.
    ENDFORM.                               " ALV_VARIANT_EXISTENCE
          FORM ALV_VARIANT_F4                                           *
          Display list of layout variants on report selection screen    *
    FORM alv_variant_f4  CHANGING cv_varname  LIKE disvariant-variant
                                  cs_variant  LIKE disvariant.
      DATA: lv_exit(1) TYPE c.
      cs_variant-report = sy-repid.
      CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
           EXPORTING
                is_variant          = cs_variant
                i_save              = 'A'
              it_default_fieldcat =
           IMPORTING
                e_exit              = lv_exit
                es_variant          = cs_variant
           EXCEPTIONS
                not_found = 2.
      IF sy-subrc = 2.
        MESSAGE ID sy-msgid TYPE 'S'      NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ELSE.
        IF lv_exit = space.
          cv_varname = cs_variant-variant.
        ENDIF.
      ENDIF.
    hope this will help.
    see form  user_command.
    regards,
    Ruchika

Maybe you are looking for