Data Security Standard PCI-DSS - SAP Datacenter

Hello,
one of our prospect asked the following question: Does the SAP Datacenter in Germany fullfill the requirements of PCI-DSS?
It seems that this Standard is related to the Payment Card Processing.
I checked all certifiates but I don´t find any infomation about that Standard.
Best Regards
Andreas Czech

Hi Gina,
Did you find good information about PCI-DSS compliance topics with SAP from this forum?  In particular we are looking at options to comply with requirement 11, File Integrity Monitoring.
We would appreciate any guidance.
Thank you, TMM

Similar Messages

  • Payment Card Industry Data Security Standards Requirement

    We store credit card numbers in our CRM and ERP systems for billing
    purposes. We use Delego software for credit card security. We also mask
    the credit card numbers during display.
    According to our interpretation of section 3 of the Payment Card
    Industry (PCI) Data Security Standards, we understand that we can
    retain cardholder data only as long as needed for business, legal,
    and/or regulatory purposes. According to our compliance policy that
    period is 3 years.
    Hence we wish to replace all card numbers older than 3 years with dummy
    card numbers. Since this requirement is mandated by the PCI-DSS, we
    believe SAP should be supplying us means to accomplish this. Are there any programs delivered by SAP to modify card numbers? Has anybody come across such a requirement?

    Hi Gina,
    Did you find good information about PCI-DSS compliance topics with SAP from this forum?  In particular we are looking at options to comply with requirement 11, File Integrity Monitoring.
    We would appreciate any guidance.
    Thank you, TMM

  • PCI DSS  - Payment Card Industry / Data Security Standard

    Hello Guru's;
    Has anyone implemented the necessary security around credit cards according to the latest PCI DSS?  If so - I'd like to chat about that.  It's no longer just encrypting the credit card information, it's much more...  Would love to hear good and bad.
    Thanks!
    Gina

    Hi Gina,
    Did you find good information about PCI-DSS compliance topics with SAP from this forum?  In particular we are looking at options to comply with requirement 11, File Integrity Monitoring.
    We would appreciate any guidance.
    Thank you, TMM

  • Achieving PCI DSS compliance of BPEL/ESB components ?

    Hi all,
    I'd like to get some input on achieving compliance with the Payment Card Industry Data Security Standard (PCI DSS). Issues arise in particular with dehydration and audit trails vs. requirements 3.3 and 3.4.
    Has anyone looked at this and if so, how did you approach it ?
    Regards,
    Diego

    Have a look at Microsoft Endpoint Protection for Windows Azure.
    http://blogs.msdn.com/b/windowsazure/archive/2012/03/26/microsoft-endpoint-protection-for-windows-azure-customer-technology-preview-now-available-for-free-download.aspx
    http://blog.maartenballiauw.be/post/2012/03/27/Protecting-Windows-Azure-Web-and-Worker-roles-from-malware.aspx

  • Template for SAP Security Standard document

    Hi SAP Gurus,
    I was asked to overhaul our company's SAP Security Standards document. So Im hoping someone can give me a template on what information/data should be in the document?

    Hmm, interesting comments. Is it really a Standard that you're after? Not wishing to ask if you like salt with your eggs but I assume we know the differences between Standard, Policy, Procedure? You'd be surprised with the number of so called Security experts /Consultants that can't articulate this. I have seen big 4 people who are meant to be delivering Policy but actually documenting a Standard, even Procedures
    So are you looking at delivering a Standard per Application? You should also have a Generic App Security Standard.
    Standard - you're looking to no more than 10-20 pages.
    SAP hooks into several other documents so you should be explicitly referencing O/S and Database Standards.
    Authenticating against SAP - that should be covered in Access Control Policy /Standard.
    Encryption ....? Your encryption doc's and so on. 
    SAP sits on an O/S, so if you're an IBM house then you're looking at AIX. SAP would assume this as a pre-req. Database? You've got Oracle and if again you're an IBM house you follow DB2.
    DB2 inherits numerous priv's from the underlying O/S. So if AIX is poorly configured, then DB2 inherits this. Of course there's a bunch of stuff that you can do from SYS* parameters etc.
    I've just put together a bunch of stuff for an Org. The actual SAP piece is actually not that hard. The Procedure is a little more specific e.g. specific Install Accounts /Passwords that need to be changed, how you secure external interfaces.
    Please let me know if you need anything further.
    Cheers, N

  • Data security (Data from SAP BW) for AD users

    Hi  All,
    I have a scenario.
    BO env : Business Objects 3.1 Sp3
    Sap Integration kit Sp3
    My target is to implement AD SSO & also provide data security for data from SAP BW. Currently there are no roles & authorization defined in the sap System. My plan was
    Step 1:-  Implement AD SSO in Business Objects
    Step 2:  Map the AD users in SAP system
    Step 3:- Crate roles in SAP System
    Step 4:-  Assign the users roles
    Steps 5:- (Not sure) :-  Map the users (Now in SAP) to BO & then aliases them with the users from AD.
    Pleas let me know if this would be correct approach... if not please suggest.... I am kind of new to SAP BO integration with experience in BO admin

    Step 1: Setup Windows AD SSO on your BOBJ server
    Step 2: Import Windows AD groups in BO
    Step 2-  Setup Server-side SNC between BO and your SAP system
    Step 3:- Create roles in SAP System and import them in BO
    Step 4:-  Assign SAP users the created roles
    Step 5: - In the CMC create SAP aliases for your Windows AD accounts
    Step 6: - Setup your reports and/or universe connections to use SSO.
    For more information on server side SNC check the installation guide of the integration Kit.
    Regards,
    Stratos

  • SAP BOBI 4.0: Data Security Profile Issue

    Consider the below scenario :
    We have two environments(SAP BOBI 4.0): Dev and Prod
    Schemas used are test and testABC in DEV and Prod respectively. And structure (table
    names and column names) inside both the schemas is same.
    We have created several data security profiles in Dev
    environment. So now when we migrate via Promotion Management, the universe from Dev to Prod, “data
    security profiles” also gets migrated.
    So once migrated we change schema name from test to testABC
    in data foundation layer which makes our dfx to point to testABC schema in
    Prod.
    Once above process is done when we go to data security
    profiles, table names gets changed from test to testABC But inside WHERE
    Clause, schema name is still test it doesn’t gets changed to testABC.
    Now question is  :
    Is there any way so that schema name inside
    WHERE Clause should get changed automatically from test to testABC?
    Is there any way we can restrict Data Security
    profiles to get migrated when we are migrating the universe?

    What is your data source? Did you try to edit the security profile in where clause?
    Is there any way we can restrict Data Security
    profiles to get migrated when we are migrating the universe? - You can only exclude to promote User/Folder/Object security, not inside the Universe.

  • PCI DSS 3.0 Section 11.5

    PCI DSS 3.0 Section 11.5 says this: "Deploy a change-detection mechanism (for example, file-integrity monitoring tools) to alert personnel to unauthorized modification of critical system files, configuration files, or content files; and configure the software to perform critical file comparisons at least weekly."
    Has anyone figured out a solution for this?  I submitted a VMware support ticket asking and they said they have no tool/app today that does this nor could they recommend any.  I find it rather surprising this standard has been effective since Jan 1, 2015 and there is hardly any info on what people are doing to fulfil this (and 11.5.1) requirement.  Thanks!

    Hello,
    Then you really want to look into HyTrust CloudCOntrol and/or Catbird vSecurity as it will monitor changes to a host for you. The reporting is to monitor for change drift or unauthorized changes. How you do that depends on how you feel you should do it. If I monitor the contents of a file for change, it does not mean I need to monitor the entire file for change. Contents is really what is important not the actual file itself.
    If your QSA is really stuck on you must have a file integrity monitor, then they are sticking to the letter of the law, so to speak, instead of the intent. I would fire them and get one that truly understands the intent. Also, if you control access to the management console, that is also a compensating control and that is captured as well. You need to think how those files would change in the first place and if I can control said change, log said change, etc. then I have a compensating control that is sufficient.
    I can also use the hardening guide to monitor critical files for change as well by monitoring the critical settings within those files. I have a tool that does just that as do many others.
    Best regards,
    Edward L. Haletky
    VMware Communities User Moderator, VMware vExpert 2009-2015
    Author of the books 'VMWare ESX and ESXi in the Enterprise: Planning Deployment Virtualization Servers', Copyright 2011 Pearson Education. 'VMware vSphere and Virtual Infrastructure Security: Securing the Virtual Environment', Copyright 2009 Pearson Education.
    Virtualization and Cloud Security Analyst: The Virtualization Practice, LLC -- vSphere Upgrade Saga -- Virtualization Security Round Table Podcast

  • Row Level Security not working for SAP R/3

    Hi Guys
    We have an environment where the details are as mentioned below:
    1. Crystal Reports are created using Open SQL driver to extract data from SAP R/3 using the SAP Integration Kit.
    2. The SAP roles are imported in Business Objects CMC.
    3. Crystal Reports are published on the Enterprise as well.
    3. Authorization objects are created in SAP R/3 and added as required for the row level security as mentioned in the SAP Installation guide as well. The aim is when the user logs into the Infoview and refreshes the report he should only see data that he is meant to so through the authorization objects.The data security works very much fine when the reports are designed directly on the table but when the reports are built on the Business View it doesnt work hence the user is able to see all data.
    Any help in this issue is greatly appreciated.
    Thanks and Regards
    Kamal

    Hi,
    In order for row level security to work for you using the OpenSql driver, you need to configure the Security Definition Editor on your SAP server.  This is a server side tool which the Integration solution for SAP offers as a transport.
    This tool defined which tables are to be restricted based on authorizations.
    However since you are seeing the issue on reports based on Business Views, you need to identify whether the Business View is configured in such a way where the user refreshing the report is based on the user logging into Infoview.  If the connection to your SAP server is always established with the same user when BV is used then you security definition is pointless.
    You can confirm this by tracing your SAP server to identify what user is being used to logon to SAP to refresh the reports.
    thanks
    Mike

  • Adding Data to the database for SAP Transactions

    Hi
    I'm new to the whole ABAP. I would like to enquire about adding transaction data in SAP through ABAP but it must be immediate.
    I know that one can use a BAPI to add data and can rollback if any problems occur.
    But if no BAPI exists how does one write code to add a document to the SAP database but with everything SAP transaction requires like the BAPI. What is the process and how???
    So let say I wanted to do FB01 which is SAP FI document and must be immediate. There is a BAPI that exists for it but if there was not one how would I do this???
    I know one can also use BDC but that creates a batch and then needs to be executed in SM35, I want a way to add data for two or three SAP transactions, if any problems occur with any of the steps rollback everything else commit everything to the database.
    Any simple detail examples (code) that satisfy the above will be greatly appreciated and REWARDED.
    Thanks in advance

    Luis,
    i have a code exactly same BDC for FB01.
    refer:
    REPORT z_etching_fb01
           NO STANDARD PAGE HEADING LINE-SIZE 255.
    *etching invoice load
    INCLUDE bdcrecx1.
    TYPE-POOLS: truxs , slis.
    *PARAMETERS: dataset(132) LOWER CASE DEFAULT
    *                              'c:\temp\etchingload.txt'.
    PARAMETER: pfile LIKE rlgrap-filename." OBLIGATORY.
    SELECTION-SCREEN BEGIN OF BLOCK a WITH FRAME TITLE text-001.
    PARAMETER:    p_kunnr LIKE kna1-kunnr OBLIGATORY,           "kna1-kunnr
                  p_bukrs LIKE bseg-bukrs,
                  p_mwskz LIKE t007a-mwskz OBLIGATORY,"t007a-mwskz
                  p_prctr LIKE cepc-prctr OBLIGATORY,"cepc-prctr
    *            p_newko LIKE ska1-saknr OBLIGATORY DEFAULT 41000000,"
                p_budat LIKE bkpf-budat OBLIGATORY ,
                p_hkont LIKE bseg-hkont OBLIGATORY DEFAULT 41000000 ,
                p_waers TYPE waers OBLIGATORY DEFAULT 'GBP'."tcurr-waers
    SELECTION-SCREEN END OF BLOCK a.
    SELECTION-SCREEN BEGIN OF BLOCK b WITH FRAME TITLE text-002.
    PARAMETER : report AS CHECKBOX DEFAULT 'X'.
    SELECTION-SCREEN END OF BLOCK b.
    ***    DO NOT CHANGE - the generated data section - DO NOT CHANGE    ***
    *   If it is nessesary to change the data section use the rules:
    *   1.) Each definition of a field exists of two lines
    *   2.) The first line shows exactly the comment
    *       '* data element: ' followed with the data element
    *       which describes the field.
    *       If you don't have a data element use the
    *       comment without a data element name
    *   3.) The second line shows the fieldname of the
    *       structure, the fieldname must consist of
    *       a fieldname and optional the character '_' and
    *       three numbers and the field length in brackets
    *   4.) Each field must be type C.
    *** Generated data section with specific formatting - DO NOT CHANGE  ***
    *                          ALV                                           *
    DATA: it_fieldcat     TYPE    slis_t_fieldcat_alv,
          wa_fieldcat     LIKE    LINE OF it_fieldcat,
          it_top_of_page  TYPE    slis_t_listheader,
          ls_layout       TYPE    slis_layout_alv,
          gt_events       TYPE    slis_t_event.
    DATA: it_raw TYPE truxs_t_text_data.
    DATA: BEGIN OF record,
    * data element: BLDAT
            bldat_001(010),   "Invoice Date
    * data element: BLART
            blart_002(002),   " Doc Type DR or DG if credit
    * data element: BUKRS
            bukrs_003(004),   " Company Code
    * data element: BUDAT
            budat_004(010),   "Posting Date
    * data element: MONAT
            monat_005(002),   "period"
    * data element: WAERS
            waers_006(005),   "Currency
    * data element: XBLNR1
            xblnr_007(016),   "Invoice Number
    * data element: BKTXT
            bktxt_008(025),   "PO number
    * data element: SAEOBJART
            docid_009(010),
    * data element: NEWBS
            newbs_010(002),   "posting Key
    * data element: NEWKO
            newko_011(017),   "Customer number or GL account
    * data element: WRBTR
            wrbtr_012(016),   "Amount
    * data element: DZTERM
            zterm_013(004),
    * data element: DZBD1T
            zbd1t_014(003),
    * data element: DZFBDT
            zfbdt_015(010),
    * data element: DZUONR
            zuonr_016(018),   "Invoice Number
    * data element: SGTXT
            sgtxt_017(050),   " PO number
    * data element: NEWBS
            newbs_018(002),
    * data element: NEWKO
            newko_019(017),   "GL Account
    * data element: WRBTR
            wrbtr_020(016),   "Amount
    * data element: MWSKZ
            mwskz_021(002),   "Tax
    * data element: DZUONR
            zuonr_022(018),   "Invoice Number
    * data element: SGTXT
            sgtxt_023(050),   "PO Number
    * data element: PRCTR
            prctr_024(010),   "Profit Center
    * data element: WRBTR
            wrbtr_025(016),   " Amount
    * data element: MWSKZ
            mwskz_026(002),   "Tax
    * data element: DZUONR
            zuonr_027(018),   "Invoice Number
    * data element: SGTXT
            sgtxt_028(050),   "PO Number
    * data element: FMORE
            fmore_029(001),
    * data element: PRCTR
            prctr_030(010),   "Pr Center
    * data element: FWSTE
            fwste_01_031(016),
          END OF record.
    DATA: BEGIN OF it_excel OCCURS 0,
    * data element: XBLNR1
          xblnr_007(016),   "Invoice Number
    * data element: BLDAT
          bldat_001(010),   "Invoice Date
    * data element: WRBTR
          wrbtr_012(016),   "Amount
    * data element: WRBTR
          wrbtr_025(016),   " Tax Amount
    * data element: WRBTR
          wrbtr_020(016),   "Gross Amount
    * data element: BLART
          blart_002(002),   " No of units
    * data element: MONAT
          monat_005(002),   "No of units second test"
    * data element: BKTXT
            bktxt_008(025),   "PO number
    * data element: SGTXT
          sgtxt_017(050),   " PO number
    * data element: BUKRS
          bukrs_003(004),   " Company Code
    * data element: BUDAT
          budat_004(010),   "Posting Date
    *        budat_004 TYPE string,   "Posting Date
    * data element: WAERS
          waers_006(005),   "Currency*
    * data element: NEWKO
          newko_011(017),   "Customer number or GL account
    * data element : kunnr
          kunnr_019(010),   " customer
          mwskz(002),
         prctr(010),
          date(002),
          month(002),
    ** data element: BKTXT
    *      bktxt_008(025),   "PO number
    ** data element: SAEOBJART
    *      docid_009(010),
    ** data element: NEWBS
    *      newbs_010(002),   "posting Key
    ** data element: DZTERM
    *      zterm_013(004),
    ** data element: DZBD1T
    *      zbd1t_014(003),
    ** data element: DZFBDT
    *      zfbdt_015(010),
    ** data element: DZUONR
    *      zuonr_016(018),   "Invoice Number
    ** data element: NEWBS
    *      newbs_018(002),
    ** data element: NEWKO
    *      newko_019(017),   "GL Account
    ** data element: MWSKZ
    *      mwskz_021(002),   "Tax
    ** data element: DZUONR
    *      zuonr_022(018),   "Invoice Number
    ** data element: SGTXT
    *      sgtxt_023(050),   "PO Number
    ** data element: PRCTR
    *      prctr_024(010),   "Profit Center
    ** data element: MWSKZ
    *      mwskz_026(002),   "Tax
    ** data element: DZUONR
    *      zuonr_027(018),   "Invoice Number
    ** data element: SGTXT
    *      sgtxt_028(050),   "PO Number
    ** data element: FMORE
    *      fmore_029(001),
    ** data element: PRCTR
    *      prctr_030(010),   "Pr Center
    ** data element: FWSTE
    *      fwste_01_031(016),
        END OF it_excel.
    DATA : BEGIN OF it_bkpf OCCURS 0,
            belnr LIKE bkpf-belnr,
            budat LIKE bkpf-budat,
            bldat LIKE bkpf-bldat,
            xblnr LIKE bkpf-xblnr,
            bktxt LIKE bkpf-bktxt,
            total LIKE bseg-dmbtr,
            numdocs TYPE p DECIMALS 0,
            END OF it_bkpf,
            BEGIN OF it_bseg OCCURS 0,
              belnr LIKE bseg-belnr,
              dmbtr LIKE bseg-dmbtr,
              mwsts LIKE bseg-mwsts,
              pswsl LIKE bseg-pswsl,
              END OF it_bseg,
              BEGIN OF it_final OCCURS 0,
                belnr LIKE bkpf-belnr,
                budat LIKE bkpf-budat,
                bldat LIKE bkpf-bldat,
                xblnr LIKE bkpf-xblnr,
                bktxt LIKE bkpf-bktxt,
                dmbtr LIKE bseg-dmbtr,
                mwsts LIKE bseg-mwsts,
                pswsl LIKE bseg-pswsl,
                END OF it_final.
    ***** End generated data section ***
    AT SELECTION-SCREEN ON VALUE-REQUEST FOR pfile.
      PERFORM sub_browse_file. "Get file name
    START-OF-SELECTION.
      PERFORM sub_data_load.  " Transfer excel into internal table.
      PERFORM sub_calc_excel.
      IF report = 'X'.
    *    PERFORM data_selection.
    *    PERFORM data_move.
    *********************************GET ALV  DATA
        PERFORM alv_get_data.
    *********************************ALV GRID DATA
        PERFORM alv_grid.
      ENDIF.
    *if report = ''.
    *  PERFORM write.
    *  PERFORM open_dataset USING dataset.
      PERFORM open_group.
    *  DO.
    *    READ DATASET dataset INTO record.
      LOOP AT it_excel.
    *   IF sy-subrc <> 0. EXIT. ENDIF.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0100'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'RF05A-NEWKO'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'BKPF-BLDAT'
                                      it_excel-bldat_001.
        PERFORM bdc_field       USING 'BKPF-BLART'
                                      'DR'." record-blart_002.
        PERFORM bdc_field       USING 'BKPF-BUKRS'
                                      it_excel-bukrs_003.
        PERFORM bdc_field       USING 'BKPF-BUDAT'
                                      it_excel-budat_004.
        PERFORM bdc_field       USING 'BKPF-MONAT'
                                    '3'. "record-monat_005.
        PERFORM bdc_field       USING 'BKPF-WAERS'
                                      it_excel-waers_006.
        PERFORM bdc_field       USING 'BKPF-XBLNR'
                                      it_excel-xblnr_007.
        PERFORM bdc_field       USING 'BKPF-BKTXT'
                                      it_excel-bktxt_008.
        PERFORM bdc_field       USING 'FS006-DOCID'
                                     '*' ."record-docid_009.
        PERFORM bdc_field       USING 'RF05A-NEWBS'
                                    '01'." record-newbs_010.
        PERFORM bdc_field       USING 'RF05A-NEWKO'
                                    it_excel-kunnr_019  .
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0301'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'RF05A-NEWKO'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'
                                    it_excel-wrbtr_020."  it_excel-wrbtr_012.
        PERFORM bdc_field       USING 'BSEG-ZTERM'
                                      'NT30' ."  record-zterm_013.
        PERFORM bdc_field       USING 'BSEG-ZBD1T'
                                      '30'."record-zbd1t_014.
        PERFORM bdc_field       USING 'BSEG-ZFBDT'
                                      it_excel-bldat_001."record-zfbdt_015.
        PERFORM bdc_field       USING 'BSEG-ZUONR'
                                      it_excel-xblnr_007."record-zuonr_016.
        PERFORM bdc_field       USING 'BSEG-SGTXT'
                                      it_excel-sgtxt_017.
        PERFORM bdc_field       USING 'RF05A-NEWBS'
                                     '50'." record-newbs_018.
        PERFORM bdc_field       USING 'RF05A-NEWKO'
                                   it_excel-newko_011."  record-newko_019."Gl account
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'BSEG-SGTXT'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '/00'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'
                                      it_excel-wrbtr_012."changes from 12 to 20
        PERFORM bdc_field       USING 'BSEG-MWSKZ'
                                     it_excel-mwskz." record-mwskz_021.
        PERFORM bdc_field       USING 'BSEG-ZUONR'
                                    it_excel-xblnr_007."  record-zuonr_022.
        PERFORM bdc_field       USING 'BSEG-SGTXT'
                                     it_excel-sgtxt_017."  record-sgtxt_023.
        PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'COBL-PRCTR'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTE'.
        PERFORM bdc_field       USING 'COBL-PRCTR'
                                    it_excel-prctr ." record-prctr_024.
        PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'BSEG-WRBTR'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=STER'.
        PERFORM bdc_field       USING 'BSEG-WRBTR'
                                     it_excel-wrbtr_012." it_excel-wrbtr_025.
        PERFORM bdc_field       USING 'BSEG-MWSKZ'
                                      it_excel-mwskz.
        PERFORM bdc_field       USING 'BSEG-ZUONR'
                                     it_excel-xblnr_007." record-zuonr_027.
        PERFORM bdc_field       USING 'BSEG-SGTXT'
                                     it_excel-sgtxt_017." record-sgtxt_028.
        PERFORM bdc_field       USING 'DKACB-FMORE'
                                     'X' ."record-fmore_029.
        PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'COBL-PARGB'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=ENTE'.
        PERFORM bdc_field       USING 'COBL-PRCTR'
                                     it_excel-prctr." record-prctr_030.
        PERFORM bdc_dynpro      USING 'SAPLTAX1' '0300'.
        PERFORM bdc_field       USING 'BDC_CURSOR'
                                      'BSET-FWSTE(01)'.
        PERFORM bdc_field       USING 'BDC_OKCODE'
                                      '=GOBU'.
        PERFORM bdc_field       USING 'BSET-FWSTE(01)'
                                    it_excel-wrbtr_025."  record-fwste_01_031.
        PERFORM bdc_transaction USING 'FB01'.
        REFRESH:bdcdata,messtab.
      ENDLOOP.
      REFRESH:bdcdata.
    **    PERFORM bdc_dynpro      USING 'SAPMF05A' '0100'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'RF05A-NEWKO'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '/00'.
    *    PERFORM bdc_field       USING 'BKPF-BLDAT'
    *                                  record-bldat_001.
    *    PERFORM bdc_field       USING 'BKPF-BLART'
    *                                  record-blart_002.
    *    PERFORM bdc_field       USING 'BKPF-BUKRS'
    *                                  record-bukrs_003.
    *    PERFORM bdc_field       USING 'BKPF-BUDAT'
    *                                  record-budat_004.
    *    PERFORM bdc_field       USING 'BKPF-MONAT'
    *                                  record-monat_005.
    *    PERFORM bdc_field       USING 'BKPF-WAERS'
    *                                  record-waers_006.
    *    PERFORM bdc_field       USING 'BKPF-XBLNR'
    *                                  record-xblnr_007.
    *    PERFORM bdc_field       USING 'BKPF-BKTXT'
    *                                  record-bktxt_008.
    *    PERFORM bdc_field       USING 'FS006-DOCID'
    *                                  record-docid_009.
    *    PERFORM bdc_field       USING 'RF05A-NEWBS'
    *                                  record-newbs_010.
    *    PERFORM bdc_field       USING 'RF05A-NEWKO'
    *                                  record-newko_011.
    *    PERFORM bdc_dynpro      USING 'SAPMF05A' '0301'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'RF05A-NEWKO'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '/00'.
    *    PERFORM bdc_field       USING 'BSEG-WRBTR'
    *                                  record-wrbtr_012.
    *    PERFORM bdc_field       USING 'BSEG-ZTERM'
    *                                  record-zterm_013.
    *    PERFORM bdc_field       USING 'BSEG-ZBD1T'
    *                                  record-zbd1t_014.
    *    PERFORM bdc_field       USING 'BSEG-ZFBDT'
    *                                  record-zfbdt_015.
    *    PERFORM bdc_field       USING 'BSEG-ZUONR'
    *                                  record-zuonr_016.
    *    PERFORM bdc_field       USING 'BSEG-SGTXT'
    *                                  record-sgtxt_017.
    *    PERFORM bdc_field       USING 'RF05A-NEWBS'
    *                                  record-newbs_018.
    *    PERFORM bdc_field       USING 'RF05A-NEWKO'
    *                                  record-newko_019.
    *    PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'BSEG-SGTXT'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '/00'.
    *    PERFORM bdc_field       USING 'BSEG-WRBTR'
    *                                  record-wrbtr_020.
    *    PERFORM bdc_field       USING 'BSEG-MWSKZ'
    *                                  record-mwskz_021.
    *    PERFORM bdc_field       USING 'BSEG-ZUONR'
    *                                  record-zuonr_022.
    *    PERFORM bdc_field       USING 'BSEG-SGTXT'
    *                                  record-sgtxt_023.
    *    PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'COBL-PRCTR'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '=ENTE'.
    *    PERFORM bdc_field       USING 'COBL-PRCTR'
    *                                  record-prctr_024.
    *    PERFORM bdc_dynpro      USING 'SAPMF05A' '0300'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'BSEG-WRBTR'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '=STER'.
    *    PERFORM bdc_field       USING 'BSEG-WRBTR'
    *                                  record-wrbtr_025.
    *    PERFORM bdc_field       USING 'BSEG-MWSKZ'
    *                                  record-mwskz_026.
    *    PERFORM bdc_field       USING 'BSEG-ZUONR'
    *                                  record-zuonr_027.
    *    PERFORM bdc_field       USING 'BSEG-SGTXT'
    *                                  record-sgtxt_028.
    *    PERFORM bdc_field       USING 'DKACB-FMORE'
    *                                  record-fmore_029.
    *    PERFORM bdc_dynpro      USING 'SAPLKACB' '0002'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'COBL-PARGB'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '=ENTE'.
    *    PERFORM bdc_field       USING 'COBL-PRCTR'
    *                                  record-prctr_030.
    *    PERFORM bdc_dynpro      USING 'SAPLTAX1' '0300'.
    *    PERFORM bdc_field       USING 'BDC_CURSOR'
    *                                  'BSET-FWSTE(01)'.
    *    PERFORM bdc_field       USING 'BDC_OKCODE'
    *                                  '=GOBU'.
    *    PERFORM bdc_field       USING 'BSET-FWSTE(01)'
    *                                  record-fwste_01_031.
    *    PERFORM bdc_transaction USING 'FB01'.
    *  ENDDO.
      PERFORM close_group.
    *  PERFORM close_dataset USING dataset.
    *endif.
    *&      Form  sub_browse_file
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM sub_browse_file .
      CALL FUNCTION 'F4_FILENAME'
       EXPORTING
         program_name        = syst-cprog
         dynpro_number       = syst-dynnr
    *   FIELD_NAME          = ' '
       IMPORTING
         file_name           = pfile.
    ENDFORM.                    " sub_browse_file
    *&      Form  sub_data_load
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM sub_data_load .
      CALL FUNCTION 'TEXT_CONVERT_XLS_TO_SAP'
        EXPORTING
    *     I_FIELD_SEPERATOR          =
          i_line_header              = 'X'
          i_tab_raw_data             = it_raw
          i_filename                 = pfile
        TABLES
          i_tab_converted_data       = it_excel[]
    *   EXCEPTIONS
    *     CONVERSION_FAILED          = 1
    *     OTHERS                     = 2
      IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
      ENDIF.
    ENDFORM.                    " sub_data_load
    **&      Form  data_selection
    **       text
    **  -->  p1        text
    **  <--  p2        text
    *FORM data_selection .
    *  SELECT * FROM bkpf
    *      INTO CORRESPONDING FIELDS OF TABLE it_bkpf
    *      WHERE budat = p_budat AND
    *      bukrs = p_bukrs.
    *  IF NOT it_bkpf[] IS INITIAL.
    *    SELECT belnr dmbtr mwsts pswsl
    *        FROM bseg INTO TABLE it_bseg
    *        FOR ALL ENTRIES IN it_bkpf
    *        WHERE belnr = it_bkpf-belnr AND
    *        kunnr = p_kunnr AND
    *        hkont = p_hkont AND
    *        pswsl = p_waers.
    *  ENDIF.
    *ENDFORM.                    " data_selection
    **&      Form  data_move
    **       text
    **  -->  p1        text
    **  <--  p2        text
    *FORM data_move.
    *  SORT : it_bseg BY belnr,
    *          it_bkpf BY belnr.
    *  LOOP AT it_bseg.
    *    it_final-dmbtr = it_bseg-dmbtr.
    *    it_final-belnr = it_bseg-belnr.
    *    it_final-mwsts = it_bseg-mwsts.
    *    it_final-pswsl = it_bseg-pswsl.
    *    READ TABLE it_bkpf WITH KEY belnr = it_bseg-belnr BINARY SEARCH.
    *    IF sy-subrc = 0.
    *      it_final-budat = it_bkpf-budat.
    *      it_final-bldat = it_bkpf-bldat.
    *      it_final-xblnr = it_bkpf-xblnr.
    *      it_final-bktxt = it_bkpf-bktxt.
    *    ENDIF.
    *    APPEND it_final.
    *    CLEAR it_final.
    *  ENDLOOP.
    *ENDFORM.                    " data_move
    *&      Form  alv_get_data
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM alv_get_data .
      CLEAR it_fieldcat.
    ***************** Document number
    *  wa_fieldcat-col_pos    = '1'.                    " ALV O/P COL-1
      wa_fieldcat-fieldname  = 'XBLNR_007'.
      wa_fieldcat-seltext_m  = 'Document number'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 15.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ***************** Posting Date
    *  wa_fieldcat-col_pos    = '2'.                    " ALV O/P COL-1
      wa_fieldcat-fieldname  = 'BUDAT_004'.
      wa_fieldcat-seltext_m  = 'Posting Date'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 20.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ******************** Document Date
    *  wa_fieldcat-col_pos    = '3'.                     " ALV O/P COL-2
      wa_fieldcat-fieldname  = 'BLDAT_001'.
      wa_fieldcat-seltext_m  = 'Document Date'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ********************* REFERENCE DOCUMENT
    **  wa_fieldcat-col_pos    = '4'.                     " ALV O/P COL-2
    *  wa_fieldcat-fieldname  = 'XBLNR'.
    *  wa_fieldcat-seltext_m  = 'REFERENCE DOCUMENT'.
    *  wa_fieldcat-just       = 'L'.
    *  wa_fieldcat-tabname    = 'IT_EXCEL'.
    **  wa_fieldcat-outputlen  = 15.
    *  APPEND wa_fieldcat TO it_fieldcat.
    *  CLEAR wa_fieldcat.
    ***************** DOCUMENT HEADER TEXT
    *  wa_fieldcat-col_pos    = '5'.                     " ALV O/P COL-3
      wa_fieldcat-fieldname  = 'SGTXT_017'.
      wa_fieldcat-seltext_m  = 'DOCUMENT HEADER TEXT'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
    *  wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *******************Invoice Net amount
    *  wa_fieldcat-col_pos    = '6'.                     " ALV O/P COL-4
      wa_fieldcat-fieldname  = 'WRBTR_012'.
      wa_fieldcat-seltext_m  = 'Invoice Net amount'.
      wa_fieldcat-just       = 'L'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
    *  wa_fieldcat-outputlen  = 15.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** Tax Amount
    *  wa_fieldcat-col_pos    = '7'.                     " ALV O/P COL-5
      wa_fieldcat-fieldname  = 'WRBTR_025'.
      wa_fieldcat-seltext_m  = 'Tax Amount'.
      wa_fieldcat-just       = 'L'.
    * wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** NEt Amount
    *  wa_fieldcat-col_pos    = '7'.                     " ALV O/P COL-5
      wa_fieldcat-fieldname  = 'WRBTR_020'.
      wa_fieldcat-seltext_m  = 'Net Amount'.
      wa_fieldcat-just       = 'L'.
    * wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    *********** General ledger currency
    *  wa_fieldcat-col_pos    = '7'.                     " ALV O/P COL-5
      wa_fieldcat-fieldname  = 'WAERS_006'.
      wa_fieldcat-seltext_l  = 'General ledger currency'.
      wa_fieldcat-just       = 'L'.
    * wa_fieldcat-no_zero(1) = 'X'.
      wa_fieldcat-outputlen  = 25.
      wa_fieldcat-tabname    = 'IT_EXCEL'.
      APPEND wa_fieldcat TO it_fieldcat.
      CLEAR wa_fieldcat.
    ENDFORM.                    " alv_get_data
    *&      Form  alv_grid
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM alv_grid .
    *  PERFORM fill_list_header USING it_top_of_page[].
    *  PERFORM event-build USING gt_events[].
      PERFORM fill_layout USING ls_layout.
    MESSAGE 'Please press F3 to generate a session or call transaction method after getting report!' TYPE 'I'.
      CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
        EXPORTING
          i_callback_program = sy-repid
          is_layout          = ls_layout
          it_fieldcat        = it_fieldcat
          it_events          = gt_events[]
          i_save             = 'A'
        TABLES
          t_outtab           = it_excel
        EXCEPTIONS
          program_error      = 1
          OTHERS             = 2.
      IF sy-subrc <> 0.
        MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
                WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
      ENDIF.
    ENDFORM.                    " alv_grid
    *                                     FORM FILL_LAYOUT                      *
    FORM fill_layout  USING    p_ls_layout  TYPE slis_layout_alv.
      p_ls_layout-zebra       = 'X'.
      p_ls_layout-cell_merge  = 'X'.
    ENDFORM.                                                         "fill_layout
    *&      Form  sub_calc_excel
    *       text
    *  -->  p1        text
    *  <--  p2        text
    FORM sub_calc_excel .
          data: idate TYPE sy-datum,
              tdat8 type string.
      LOOP AT it_excel.
        CONCATENATE  it_excel-blart_002 '/' it_excel-monat_005 '/' it_excel-bktxt_008 INTO
            it_excel-sgtxt_017.
        it_excel-bukrs_003 = p_bukrs.
    *    it_excel-budat_004 = p_budat.
        it_excel-waers_006 = p_waers.
        it_excel-newko_011 = p_hkont.
        it_excel-kunnr_019 = p_kunnr.
        it_excel-mwskz     = p_mwskz.
        it_excel-prctr     = p_prctr.
        idate              = p_budat.
        CALL FUNCTION 'DATUMSAUFBEREITUNG'
         EXPORTING
    *       FLAGM                 = ' '
    *       FLAGW                 = ' '
           IDATE                 = idate
    *       IMONT                 = ' '
    *       IWEEK                 = ' '
         IMPORTING
    *       MDAT4                 =
    *       MDAT6                 =
    *       TDAT4                 =
    *       TDAT6                 =
            TDAT8                 = tdat8
    *       WDAT4                 =
    *       WDAT6                 =
    *     EXCEPTIONS
    *       DATFM_UNGUELTIG       = 1
    *       DATUM_UNGUELTIG       = 2
    *       OTHERS                = 3
        IF sy-subrc <> 0.
    * MESSAGE ID SY-MSGID TYPE SY-MSGTY NUMBER SY-MSGNO
    *         WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
        ENDIF.
          it_excel-budat_004 = tdat8.
    *    CONCATENATE it_excel-budat_004+4(2) '/' it_excel-budat_004+6(2) '/'  it_excel-budat_004+0(4)
    *                INTO it_excel-budat_004.
    *    SPLIT it_excel-bldat_001 AT '/' INTO it_excel-month it_excel-date.
    *    CONCATENATE it_excel-date '.' it_excel-month '.' it_excel-bldat_001+6(4) INTO it_excel-bldat_001.
        MODIFY it_excel.
        CLEAR it_excel.
      ENDLOOP.
    ENDFORM.                    " sub_calc_excel
    *&      Form  write
    *       text
    *  -->  p1        text
    *  <--  p2        text
    *form write .
    *OPEN DATASET dataset FOR OUTPUT IN TEXT MODE ENCODING DEFAULT.
    *data: wa_excel like line of it_excel.
    *loop at it_excel into wa_excel.
    *TRANSFER wa_excel to dataset.
    *endloop.
    *CLOSE DATASETdataset.
    *endform.                    " write

  • Upload data from legacy system to SAP through ALE IDOC

    Hello All,
    I have a requirement where i need to upload the data from legacy system to SAP. So i am using ALE IDOC.
    In my requirement i need to extend the Standard IDOC. I have extended the IDOC and even found the exit for the updation of the extended fields to SAP. My data would be be placed in the application server.
    Can anybody tell me how to retrieve the data and update in the tables for the extended fields.
    Could you please provide a sample program for retrieving data for IDOC.
    Thanks

    Hi,
    You can find the sample code in the following link.
    Re: calling idoc_input_creditor
    Regards
    Sajid

  • Standard report in SAP materials ordered

    Hi Guru's
    Can any one help me for getting a standard report in SAP where one can track the materials ordered. That is when the materials have to be delivered, the date when the vendor despatched the goods, when we received it i.e actual GR date etc.
    Thus it gives all the dates, the quanties etc... so that we can find exactly where the delay is happening and remind the vendor for this particular order.
    Best Regards
    Mouli

    Hi Mouli,
    If you want send reminders for deliveries, then you can do that in advance or after the desired delivery date with ME91F
    If you only want monitor open POs that are late, then you can do that in ME2M or ME2L by using selection parameter WE101 and setting the delivery date to today and add with F2 the smaller sign.
    Do you record the date when the vendor dispatched the goods in your PO's ? it is possible with shipping notification.
    A report showing all this info must probably be developed by yourself, if you are not satisfied with the options in ME2M ME2L.
    It may very usefull to you
    Regards
    Madhu

  • Database Data Security: both from within (using MIMEbase64 encoding) and from without (using encryption).

    In my MDB file databases (Jet 4.x format) I turn on both compression and encryption.  This gives me data security from without, meaning, I can't open a MDB file in a Word Processing software (or otherwise) and read the data in a humanly recognized
    format.   But I am also using MIMEbase64 encoding of my stored data so that the data is humanly unreadable from within - meaning that anyone performing an SQL query will not be able to humanly read the data in my database.  I do the decoding
    (from MIMEbase64) within my end-user software interfaces to the databases. 
    I found out just recently (last few months) that I can do this from Win32 Perl, so I encorporated this feature into my Perl database applications.   Only thing is that MIMEbase64 increases the size of the data stored.
    Is there a better encoding strategy available today which might actually compress the data a little?    

     INSTRUCTIONS FOR SECURE/CUSTOM (non-formula based) TEXTFILE ENCODING (should be undecipherable w/o mappings file):
    by Eric C. Hansen. You may freely use these encoding instructions, and the code I have provided, but please
    acknowledge me as the author where credit is due - such as in a publication. And do not try to sell it.
    However, any code I have provided you may freely use in any programs you write to be sold for your own profit,
    except you may not attempt to sell this encoding scheme (or my code provided), as a generic encoding tool, for
    general use, to be marketed as a turn-key custom encoding solution. 
    (1) Create a unique code list 
          Using the characters:  A-Z a-z 0-9 only. That's 62 characters only.  
           62 (1 char codes) + 3844 (2 char codes) + 238,328 (3 char codes) = 242,234 total codes
                     62x1         +      62x62         +       62x62x62    
           REMINDS ME of my college Genetics course i.e. dominant/recessive trait inheritance tables  
           EXAMPLE CODES:  a, k, 3c, A4, xy1, H8j
    (2) Create a unique word(+punc) list from your textfile which is to be encoded. You know how to do this.
           Example of 9 words(+punc) found between whitespace within a textfile input line:
                "Hello", this is Mr. Bell-va-deer. My number is 999-342-8998.   
                    1       2    3   4       5              6      7       8       9
     PERL code for STEPS 3-7 is provided below. Code for STEP 1 above was previously provided. 
             You should have little trouble writing the textfile encode/decode logic yourself.  
    (3) Read your list of unique codes into an array.
    (4) Read your list of unique words(+punc) into another array.
         LOOP   #-- 0 to number of elements in words array
                (5)     select a random code and a random word(+punc) from the 2 arrays.
                (6)     now remove that code and that word(+punc) from each array using "splice".
                (7)     then save them as key/val pairs to persistent Perl SDBM database files ("mappings").  
         END LOOP
     (8) Once you have your persistent, random code/word mappings, you can convert your textfile
          to an encoded textfile. Read in one line at a time from your textfile (chomp), parse the words(+punc.)
         between whitespace within that line, then for each word(+punc) parsed, perform
         the word-to-code mapping conversions by doing a lookup within the Perl SDBM database
         file of key/val pairs, where KEY=word and VAL=code. You will then need to 
         concatenate these codes (space delimited) to your outputline, in the same order as found in your
         inputline, finally writing the outputline (newline "\n" terminated) to your new encoded textfile.    
    (9) Keep your persistent Perl SDBM database file ("mappings") in SAFE KEEPING, with a naming
         convention of your choice that perhaps hides any relationship to the name of
         your encoded text document - which it specifically pertains to. But keep a record of that joint
        relationship somewhere.  Keep a copy of both the original textfile and the encoded textfile,
        or perhaps you'd like to keep just the encoded textfile?, and not the original?  You can always decode it. 
    (10) Send your encoded text document via email as an attachment, to the recipient of your choice.
    (11) Upload your persistent Perl SDBM database "mappings" file to your secure login FTP download site. 
         NOTE:  If your encoded text document is very large, you may want to reverse 10 & 11, putting the encoded file
             on the FTP site, and sending the Perl SDBM database file ("mappings") as the email attachment.
    (12) Call your recipient to see if they have received the encoded textfile, email attachment.
         Let them know that the "mappings" file is uploaded for them to download from the FTP site.
        You can have a LINGO you both use/know on the phone, to secretly convey this message, if you like,
          to avoid possible interception of this sensitive information.
         Recipient will then take the encoded textfile email attachment, the FTP downloaded "mappings" file,
        and place them both in a directory on their PC where the Perl decoding program is located which you
         had previously sent them to handle all the decoding anytime you send them an encoded textfile + "mappings".
         Recipient will run the Perl decoding utility program to create the original textfile.
    use Win32;         #-- as you can see, I use a Windows O/S Perl distribution. 
    use IO::Handle;
    use SDBM_File;     #-- my understanding is this module comes standard with every Perl distribution
    use Fcntl;
        $PWD=Win32::GetCwd();  #-- get current working directory on Windows O/S platform.            
        srand;        #-- random seeding initiated, do this just once at top.
        @codesARR=();    @wordsARR=();          #-- initialize the arrays
        print "working.  please wait...\n\n";
        unlink( "$PWD\\Project_0836_Mappings_CtoW.pag" )
                    if (-e "$PWD\\Project_0836_Mappings_CtoW.pag" );
       unlink( "$PWD\\Project_0836_Mappings_CtoW.dir" )
                  if (-e "$PWD\\Project_0836_Mappings_CtoW.dir" );
        unlink( "$PWD\\Project_0836_Mappings_WtoC.pag" )
                  if (-e "$PWD\\Project_0836_Mappings_WtoC.pag" );
       unlink( "$PWD\\Project_0836_Mappings_WtoC.dir" )
                 if (-e "$PWD\\Project_0836_Mappings_WtoC.dir" );
         unlink( "$PWD\\Project_0836_Mappings.txt" )
                 if (-e "$PWD\\Project_0836_Mappings.txt" );
       $cnt1=0;    $ret="Y";
        open(CODES,"$PWD\\codes.txt") || do {$ret="N";};
        if ($ret eq "N") {  
               print "Codes input file not opened \n";  
               sleep 5;   die;  
        while (<CODES>) {
               chomp $_;
              $codesARR[$cnt1]=$_;
              $cnt1++;
        print $cnt1 . " codes loaded\n\n";
       close(CODES);
       $cnt2=0;    $ret="Y";
       open(WORDS,"$PWD\\words.txt") || do {$ret="N";};
        if ($ret eq "N") {  
                print "Words input file not opened \n";  
               sleep 5;   die;  
       while (<WORDS>) {
               chomp $_;
              $wordsARR[$cnt2]=$_;
                $cnt2++;
        print $cnt2 . " words loaded\n\n";
        close(WORDS);
        sleep 3;       #-- a little time to check on record counts loaded to both arrays
      tie( %Project_0836_Mappings_WtoC, "SDBM_File", '.\Project_0836_Mappings_WtoC', O_RDWR|O_CREAT, 0666 );
       if (tied %Project_0836_Mappings_WtoC) {
               print "WtoC Hash/SDBM File are now tied\n\n";    
       } else {
              print "Could not tie WtoC Hash/SDBM File\n\n";  sleep 5;  die;
       tie( %Project_0836_Mappings_CtoW, "SDBM_File", '.\Project_0836_Mappings_CtoW', O_RDWR|O_CREAT, 0666 );
        if (tied %Project_0836_Mappings_CtoW) {
                 print "CtoW Hash/SDBM File are now tied\n\n";    
        } else {
               untie(%Project_0836_Mappings_WtoC);  #-- close the successful tie made directly above 
              print "Could not tie CtoW Hash/SDBM File\n\n";  sleep 5;  die;
      open (OUT,"> $PWD\\Project_0836_Mappings.txt");
       OUT->autoflush(1);
       $cnt2=$#wordsARR;   #-- we do this because we will be removing elements from wordsARR
       for ($i=0; $i<=$cnt2; $i++) {
             $index   = rand @codesARR;    # get a random index from the codes array
            $code    = $codesARR[$index]; # get the value of that array element
            splice(@codesARR,$index,1);   # removes only this element from the codes array.
            $index   = rand @wordsARR;    # get a random index from the words array
            $word    = $wordsARR[$index]; # get the value of that array element
            splice(@wordsARR,$index,1);   # removes only this element from the words array.
            $Project_0836_Mappings_WtoC{$word}=$code;   # key/value pair where: word is key, code is value
            $Project_0836_Mappings_CtoW{$code}=$word;   # key/value pair where: code is key, word is value
        print "Your Mappings have been created and saved to (.dir and .pag extension files)\n\n";
        print OUT "Here are your Mappings you just created:\n\n";
        foreach $key (keys %Project_0836_Mappings_WtoC) {
              print OUT "word=" . $key . "     code=" . $Project_0836_Mappings_WtoC{$key} . "\n";
      print OUT "##################################################\n";
       foreach $key (keys %Project_0836_Mappings_CtoW) {
               print OUT "code=" . $key . "     word=" . $Project_0836_Mappings_CtoW{$key} . "\n";
        untie(%Project_0836_Mappings_WtoC);  #-- now you have saved a persistent word/code mappings file
        untie(%Project_0836_Mappings_CtoW);  #-- now you have saved a persistent code/word mappings file
        close(OUT);   
        print "Done.  Goodbye!\n";
        sleep 5;
        exit;

  • Is there any standard thing in sap to find how old is the invoice or Bill.

    Hi Experts,
    i have query regading the invoice or bill.
    i.e. is there any standard functionality in sap to find how old is the invoice or bill.
    Thanks i advance,
    Roopa.K.

    Bill Number and all its corresponding dates may be seen in the table VBRK.
    Bill Document: VBELN
    Billing Date: FKDAT
    Date on Which Record Was Created: ERDAT
    Billing date for the invoice list: FKDAT_RL

  • Extraction from Standard Extractors in SAP-BW

    Hi
    How i can extracts data from standard extractors from R3 system to  SAP-BW
    like 0CUSTOMER_ATTR is standard extractors.
    Regards
    Atul
    Edited by: AtulMohan Mishra on Nov 4, 2010 1:08 PM

    There are standard steps for this...
    1.Activate Dasasource in R/3 (RSA5)
    2. Replicate DataSource in BW
    3. Create Update rule / Transformations
    4. Create Infopackages / DTP's and load data.
    You can get details in any BW/BI book.
    SSS

Maybe you are looking for

  • How to save 4 bit .bmp file in photoshop

    I saved gif file to 4 bit bmp file, but the next time I try doing it I cannot, the photo shop does not support it. If I have to do I have to do it I have to close photoshop and open the application once again to save another gif file to bmp. I need a

  • Displaying a row by default in ALV table

    Hi all, I have created an alv table in which i have to display a row by default. I have set all the fields of the table as editable. Also I have created the total calculation for the amount field by using the aggregation method, I want to displat the

  • Possible to Search for a Calendar

    Somehow I ended up with Calendars named "Untitled", "Untitled 2" and "Untitled 3". I don't know how these showed up and don't know what events could be associated with them. Don't want to just delete these Calendars without knowing what they have in

  • Another Transfer ID

    I am getting the strangest error. I was wondering if anyone has seen this. Environment: Source server is NW 65 SP8 with eDirectory 8.8.4. Target server is Sles 10SP3 OES2 PS2 eDir 8.8.5. Installation of OES was done during the install of SLES not as

  • How to write queries more efficiently? Please Help a sinking guy

    Hello Query Guru's,   I am having issue writing the SQL statements efficiently, please help/guide me to learn how to write SQL's more efficiently and logically. At my work I am being a fun every day by my team when comes the coding please guide me to