Adding vendor batch code to gr/gi slip

Hi
Im doing a script for good receipt slip. the print program is SAPM07DR and script is WA_SCHEINVRS1. output type is 'WE-01'.
i have copied these programs to Z programs .
the problem is i have to capture extra fields listed below with the table
1. MCHA-LICHA
can anybody tell me how to go abt this , what changes should i do in print program as well as script program.
waiting for reply

Hello
U heard correctly OMJX is for MIGO, here against the gield GR/GI slip u have three options for selection INPUT / REQUIRED / DISPLAY / HIDE...u can select according to the requirement e.g ur requirement is to make it mandatory then select Radio button on REQUIRED, iGR / GI Slip field will become mandatory.
Regards
Vineet

Similar Messages

  • Values in "vendor batch" in the Goods-in-order and Goods-in-plan lists are

    Vendor batch No.  : Transaction ZJPMPU322
    (Background)     
    There are "vendor batch" and "batch" fields in Goods-in-order and Goods-in-plan lists (transaction ZJPMPU322). Values for these fields are retrieved from inbound delivery document (transaction VL33N). After core 7.0 upgrade, "vendor batch" is not copied from "batch" in inbound delivery document any more so that nothing appears in the vendor batch field in the lists.
    (Change request)
    Values in "vendor batch" in the Goods-in-order and Goods-in-plan lists are retrieved from "batch" in inbound delivery document ONLY IF "vendor batch" is blank in the inbound delivery document.
    (Current design)
    Batch is retrieved from LIPS-CHARG
    Vendor batch is retrieved from LIPS-LICHN
    (If there is no record in LIPS, blank will be printed out for both fields)
    (After change)
    Batch is retrieved from LIPS-CHARG
    Vendor batch is retrieved from LIPS-LICHN only if LIPS-LICHN is not blank.
    If LIPS-LICHN is blank, vendor batch is retrieved from LIPS-CHARG.
    (If there is no record in LIPS, blank will be printed out for both fields. If both LIPS-CHARG and LIPS-LICHN are blank, blank will be printed out for both fields),
    Following is the program:
    REPORT zjpmrpu322  MESSAGE-ID  zjpm001
                  NO STANDARD PAGE HEADING
                            LINE-COUNT  50
                            LINE-SIZE  255.
    *&   Development ID: PU_DD_322_LJP                                     *
    *&   Report        : ZJPMRPU322                                        *
    *&   The Purpose of this program is to print the  Goods-in-order list  *
    *&   and the Goods in plan list for raw materials, materials purchase  *
    *&   etc at the Sasayama plant, Japan.                                 *
    *&   Change Log:                                                       *
    *&   Init    Who              Date        Text                         *
    *&   PV      P V R S Varma    07-May-2003  Initial Version             *
    *&   DU      D.Usui           2004/02/26   CR No. 1432                 *
    *&   DU      D.Usui           2004/03/08   CR No. 1447                 *
    *&   DU      D.Usui           2004/05/06   CR No. 1591                 *
                            Constants
    CONSTANTS:
    c_werks   LIKE ekpo-werks VALUE 'JP01',    "Plant code - Sasayama plant
    c_id      LIKE thead-tdid VALUE 'F02',     "Text ID for Info record
    c_object  LIKE thead-tdobject VALUE 'EKPO',"Object of text for info rec
    *c_zzjp_r1 LIKE marc-zzjp_re1 VALUE 'GMP',  "Goods in plan- Domestic
    *c_zzjp_r2 LIKE marc-zzjp_re1 VALUE 'GMPI', "Import sales order document
    c_plus    TYPE c VALUE '',                "Holding '' sign
    c_spras   LIKE makt-spras VALUE 'J',       "Language key Japan
    *c_device(7)    type c value 'PRINTER',    "Device type
    c_form(16)     TYPE c VALUE 'ZJPMPU305',  "Form name
    c_ele_gmp(4)   TYPE c VALUE 'GMP',        "GMP Text element
    c_ele_gmpi(4)  TYPE c VALUE 'GMPI',       "GMPI Text element
    add begin CR1432
    c_ele_bgmp(4)  TYPE c VALUE 'BGMP',       "BGMP
    c_ele_bgmpi(5) TYPE c VALUE 'BGMPI',      "BGMPI
    add end CR1432
    c_function(3)  TYPE c VALUE 'SET',        "Function
    c_type(4)      TYPE c VALUE 'BODY',       "Window area in main window
    c_win_head(7)  TYPE c VALUE 'HEADING',    "Heading window
    c_win_shead(7) TYPE c VALUE 'SUBHEAD',    "sub heading window
    c_win_fot1(7)  TYPE c VALUE 'FOOTER1',    "Footer 1 window
    c_win_main(4)  TYPE c VALUE 'MAIN',       "Main window
    c_comd(8)      TYPE c VALUE 'NEW-PAGE',   "New-page command
    c_zar TYPE ekko-bsart VALUE 'ZAR',
    c_x            TYPE c VALUE 'X',          "Indicator for print options
    c_f            TYPE c VALUE 'F',          "Indicator for Purchase Order
    add begin CR1591
    Deletion indicator in purchasing document
    c_loekz(1)     TYPE c VALUE 'L',
    For ranges tables
    c_sign_i(1)    TYPE c VALUE 'I',          "Sign(include)
    c_op_eq(2)     TYPE c VALUE 'EQ',         "Option(=)
    Confirmation category
    c_ebtyp_ab(2)  TYPE c VALUE 'AB',         "Order acknowledgment
    add end CR1591
    c_la(2)        TYPE c VALUE 'LA'.         "Indicator for Inbound deliver
                          Database Tables
                        Vaiables / Internal tables                       *
    Internal table to store PO information
    Not used after CR1591
    DATA: BEGIN OF t_purc OCCURS 0,
             ebeln LIKE eket-ebeln, "Purchasing Document Number
             ebelp LIKE eket-ebelp, "Item Number of Purchasing Document
             eindt LIKE eket-eindt, "Item delivery date
             menge LIKE eket-menge, "Scheduled quantity
             charg LIKE eket-charg, "Batch number
             matnr LIKE ekpo-matnr, "Material code
             werks LIKE ekpo-werks, "Plant
             meins LIKE ekpo-meins, "Unit of measure
             lifnr LIKE ekko-lifnr, "Vendor number
          END OF t_purc.
    Internal table to store material description.
    DATA: BEGIN OF t_makt OCCURS 0,
            matnr LIKE makt-matnr,  "Material code
            maktx LIKE makt-maktx,  "Material description
          END OF t_makt.
    Internal table for storage of final EKET data
    DATA: BEGIN OF t_eket OCCURS 0,
             ebeln LIKE eket-ebeln, "Purchasing Document Number
             ebelp LIKE eket-ebelp, "Item Number of Purchasing Document
             ebelp_ex(6) TYPE n,    "Extended ebelp with length 6
             eindt LIKE eket-eindt, "Item delivery date
             menge LIKE eket-menge, "Scheduled quantity
             dabmg LIKE ekes-dabmg, " Delivered Quantity
             charg LIKE eket-charg, "Batch number
             matnr LIKE ekpo-matnr, "Material code
             werks LIKE ekpo-werks, "Plant
             maktx LIKE makt-maktx, "Material Description-- jp check
             etens LIKE ekes-etens, "Sequence Number
             meins LIKE ekpo-meins, "Unit of measure
             lifnr LIKE ekko-lifnr, "Vendor number
             vbeln LIKE ekes-vbeln,
             vbelp LIKE ekes-vbelp,
             vpnam(40) TYPE c,      "Vendor product name
          END OF t_eket.
    Internal table for extraction of data from EKES
    Not used after CR1591
    DATA: BEGIN OF t_ekes OCCURS 0,
             ebeln LIKE ekes-ebeln, "Purchasing Document Number
             ebelp LIKE ekes-ebelp, "Item Number of Purchasing Document
             etens LIKE ekes-etens, "Sequence No
             eindt LIKE ekes-eindt, "Item delivery date
             menge LIKE ekes-menge, "Scheduled Quantity
             dabmg LIKE ekes-dabmg, " delivered quantity
             vbeln LIKE ekes-vbeln,
             vbelp LIKE ekes-vbelp,
             mark TYPE c,
          END OF t_ekes.
    Internal table for extraction of data from EKES
    Not used after CR1591
    DATA: BEGIN OF t_ekes_temp OCCURS 0,
             ebeln LIKE ekes-ebeln, "Purchasing Document Number
             ebelp LIKE ekes-ebelp, "Item Number of Purchasing Document
             etens LIKE ekes-etens, "Sequence No
             eindt LIKE ekes-eindt, "Item delivery date
             menge LIKE ekes-menge, "Scheduled Quantity
          END OF t_ekes_temp.
    Internal table for storing data from MLGN table.
    DATA: BEGIN OF t_mlgn OCCURS 0,
             matnr LIKE mlgn-matnr, "material code
             lhmg1 LIKE mlgn-lhmg1, "Standard pallet size
             lhme1 LIKE mlgn-lhme1, "Unit of measure
             lety1 LIKE mlgn-lety1, "tower
             ltkze LIKE mlgn-ltkze, "Storage location
          END OF t_mlgn.
    Internal table for storing data from MARM table.
    DATA: BEGIN OF t_marm OCCURS 0,
             matnr LIKE marm-matnr, "material code
             umrez LIKE marc-zzjp_cas_size, "Std package unit
             meins LIKE ekpo-meins, "alternate unit
          END OF t_marm.
    Internal table for storing data from MARC table.
    DATA: BEGIN OF t_marc OCCURS 0,
             matnr LIKE marc-matnr,               "Material code
             zzjp_nyu_sop LIKE marc-zzjp_nyu_sop, "Product Std number
             zzjp_dos_frm LIKE marc-zzjp_dos_frm, "Dosage form
             zzjp_aprn     LIKE marc-zzjp_aprn,   "Apperance
             zzjp_re1     LIKE marc-zzjp_re1,     "Heading
          END OF t_marc.
    Internal table for storing data from lfa1 table.
    DATA: BEGIN OF t_lfa1 OCCURS 0,
             lifnr LIKE lfa1-lifnr, "Vendor code
             name1 LIKE lfa1-name1, "Vendor name
          END OF t_lfa1.
    Internal table for Storing data from LIPS table.
    DATA: BEGIN OF t_lips OCCURS 0,
             vbeln LIKE lips-vbeln, "Delivery document no
             posnr LIKE lips-posnr, "Item number for Delivery document
             charg LIKE lips-charg, "Batch number
             lichn LIKE lips-lichn, "Vendor Batch number
          END OF t_lips.
    Internal table for storing the final display data.
    DATA: BEGIN OF t_display OCCURS 0,
            g_checkbox  type  c,       "check box for selection of records
             ebeln LIKE ekes-ebeln,      "Purchasing Document Number
             ebelp LIKE ekes-ebelp,      "Item Number of Purchasing Document
             etens LIKE ekes-etens,      "Sequence No
             eindt LIKE eket-eindt,      "Item delivery date
             menge LIKE eket-menge,      "Scheduled Quantity
             vpnam(40) TYPE c,          "Vendor product name
             lifnr LIKE ekko-lifnr,      "Vendor code
             name1 LIKE lfa1-name1,      "Vendor name
             meins LIKE ekpo-meins,      "Unit of measure
             matnr LIKE ekpo-matnr,      "Material Number
             maktx LIKE makt-maktx,     "Material Description-- jp check
             charg LIKE lips-charg,      "Batch number
             lichn LIKE lips-lichn,      "Vendor Batch number
             lhmg1 LIKE mlgn-lhmg1,     "standard pallet size
             lhme1 LIKE mlgn-lhme1,      "Unit of standard pallet
             lety1 LIKE mlgn-lety1,     "tower
             ltkze LIKE mlgn-ltkze,      "Storage location
             umrez LIKE marc-zzjp_cas_size,      "Std package unit
             meinh LIKE ekpo-meins,      "alternate unit
             zzjp_nyu_sop LIKE marc-zzjp_nyu_sop,      "Product Std number
             zzjp_dos_frm LIKE marc-zzjp_dos_frm,      "Dosage form
             zzjp_aprn     LIKE marc-zzjp_aprn,          "Apperance
             zzjp_re1     LIKE marc-zzjp_re1,           "Heading
             std_pac_no(13) TYPE n,            "Std receipt package no
             tot_std_pt(13) TYPE n,             "Total no of std pallets
    add begin CR1447
    Add new field 'Goods-in-order','Item' for goods in plan list
             vbeln like ekes-vbeln,     "Goods-in-order
             vbelp like ekes-vbelp,     "Item
    add end CR1447
          END OF t_display.
    Internal table for storing the final display data -Goods in order list
    DATA: BEGIN OF t_display1 OCCURS 0,
             ebeln LIKE ekes-ebeln,      "Purchasing Document Number
             ebelp LIKE ekes-ebelp,      "Item Number of Purchasing Document
             etens LIKE ekes-etens,      "Sequence No
             eindt LIKE eket-eindt,      "Item delivery date
             menge LIKE eket-menge,      "Scheduled Quantity
             vpnam(40) TYPE c,          "Vendor product name
             lifnr LIKE ekko-lifnr,      "Vendor code
             name1 LIKE lfa1-name1,      "Vendor name
             meins LIKE ekpo-meins,      "Unit of measure
             matnr LIKE ekpo-matnr,      "Material Number
             maktx LIKE makt-maktx,     "Material Description-- jp check
             charg LIKE lips-charg,      "Batch number
             lichn LIKE lips-lichn,      "Vendor Batch number
             lhmg1 LIKE mlgn-lhmg1,     "standard pallet size
             lhme1 LIKE mlgn-lhme1,      "Unit of standard pallet
             lety1 LIKE mlgn-lety1,     "tower
             ltkze LIKE mlgn-ltkze,      "Storage location
             umrez LIKE marc-zzjp_cas_size,      "Std package unit
             meinh LIKE ekpo-meins,      "alternate unit
             zzjp_nyu_sop LIKE marc-zzjp_nyu_sop,      "Product Std number
             zzjp_dos_frm LIKE marc-zzjp_dos_frm,      "Dosage form
             zzjp_aprn     LIKE marc-zzjp_aprn,          "Apperance
             zzjp_re1     LIKE marc-zzjp_re1,           "Heading
             std_pac_no(13) TYPE n,            "Std receipt package no
             tot_std_pt(13) TYPE n,             "Total no of std pallets
          END OF t_display1.
    Internal table for storing the final display data - Goods in plan list
    DATA: BEGIN OF t_display2 OCCURS 0,
             ebeln LIKE ekes-ebeln,      "Purchasing Document Number
             ebelp LIKE ekes-ebelp,      "Item Number of Purchasing Document
             etens LIKE ekes-etens,      "Sequence No
             eindt LIKE eket-eindt,      "Item delivery date
             menge LIKE eket-menge,      "Scheduled Quantity
             name1 LIKE lfa1-name1,      "Vendor name
             meins LIKE ekpo-meins,      "Unit of measure
             matnr LIKE ekpo-matnr,      "Material Number
             maktx LIKE makt-maktx,     "Material Description-- jp check
             charg LIKE lips-charg,      "Batch number
             lichn LIKE lips-lichn,      "Vendor Batch number
             lhmg1 LIKE mlgn-lhmg1,     "standard pallet size
             lety1 LIKE mlgn-lety1,     "tower
             ltkze LIKE mlgn-ltkze,      "Storage location
             tot_std_pt(13) TYPE n,             "Total no of std pallets
    add begin CR1447
    Add new field 'Goods-in-order','Item' for goods in plan list
             vbeln like ekes-vbeln,     "Goods-in-order
             vbelp like ekes-vbelp,     "Item
    add end CR1447
          END OF t_display2.
    add begin CR1591
    RANGES: r_matnr FOR mara-matnr,   "for p_matnr
            r_ebeln FOR ekpo-ebeln.   "for p_ebeln
    add end CR1591
    DATA: line TYPE i.            " line number
    DATA: g_checkbox  TYPE  c.       "check box for selection of records
    DATA: g_tab LIKE sy-index.    "variable to hold index
    DATA  g_tabix LIKE sy-tabix.  "holder for table index
    Printing Options.
    DATA: lw_pr_options LIKE itcpo.
    *lw_pr_options-tddest = 'SA03'.      " Print Device Name
    lw_pr_options-tdpreview = 'X'.      " Print Preview
    lw_pr_options-tdnewid = 'X'.        " New Request
    lw_pr_options-tdlifetime = 2.       " Retention in Spool
                            Selection Screen                             *
    SELECTION-SCREEN BEGIN OF BLOCK blk1 WITH FRAME.
    SELECT-OPTIONS:
      s_date  FOR sy-datum DEFAULT sy-datum. " Search period.
    PARAMETERS:
      p_matnr LIKE mara-matnr,               " Material code
      p_ebeln LIKE ekpo-ebeln.               " Purchase Document No
    SELECTION-SCREEN END OF BLOCK blk1.
                       Selection Screen Checks                           *
    AT SELECTION-SCREEN.
      IF ( s_date-low IS INITIAL ) AND
         ( p_matnr IS INITIAL ) AND
         ( p_ebeln IS INITIAL ).
        MESSAGE e000 WITH 'Entry Must in atleast one of the Fields'(t00).
      ENDIF.
      IF ( NOT p_matnr IS INITIAL ) AND
         ( s_date IS INITIAL )      AND
         ( p_ebeln IS INITIAL ).
        MESSAGE e000 WITH 'Date should also be Entered'(t01).
      ENDIF.
    del begin CR1591
    This check is not found in original FS
    IF ( NOT p_matnr IS INITIAL ) AND
        ( s_date IS INITIAL ) AND
        ( NOT p_ebeln IS INITIAL ).
       MESSAGE e000 WITH 'Date should also be Entered'(t01).
    ENDIF.
    del end CR1591
                   Validations for Data selection                        *
    del begin CR1591
    Waste check
    IF ( NOT s_date IS INITIAL ) AND
        ( p_matnr IS INITIAL ) AND
        ( p_ebeln IS INITIAL ).
       PERFORM f_check_date_in_eket.
    ENDIF.
    IF ( NOT s_date IS INITIAL ) AND
        ( NOT p_matnr IS INITIAL ) AND
        ( p_ebeln IS INITIAL ).
       PERFORM f_check_matnr_in_plant.
       PERFORM f_check_matnr_in_ekpo.
       PERFORM f_check_date_in_eket.
       PERFORM f_check_matnr_in_plant.
       PERFORM f_check_matnr_in_ekpo.
    ENDIF.
    IF ( NOT s_date IS INITIAL ) AND
        ( NOT p_matnr IS INITIAL ) AND
        ( NOT p_ebeln IS INITIAL ).
       PERFORM f_check_matnr_in_plant.
       PERFORM f_check_matnr_in_ekpo.
       PERFORM f_check_date_in_eket.
       PERFORM f_check_ebeln_in_ekpo.
       PERFORM f_check_werks_in_ekpo.
    ENDIF.
    IF ( NOT p_ebeln IS INITIAL ) AND
        ( NOT s_date IS INITIAL ) AND
        ( p_matnr IS INITIAL ).
       PERFORM f_check_date_in_eket.
       PERFORM f_check_ebeln_in_ekpo.
       PERFORM f_check_werks_in_ekpo.
    ENDIF.
    IF ( NOT p_ebeln IS INITIAL ) AND
        ( s_date IS INITIAL ) AND
        ( p_matnr IS INITIAL ).
       PERFORM f_check_ebeln_in_ekpo.
       PERFORM f_check_werks_in_ekpo.
    ENDIF.
    del end CR1591
                         Data selection from Tables                      *
    START-OF-SELECTION.
      SET PF-STATUS 'SELECT'.
    add begin CR1591
    Set ranges tables
      PERFORM set_ranges.
    add end CR1591
    mod begin CR1591
    **Selection of PO data from EKET into internal table t_purc.
    PERFORM f_select_eket.
    **Selection of corresponding PO data for EKET from EKES into t_ekes.
    PERFORM f_select_ekes.
    **Selection of material desc from MAKT table into T_makt.
    PERFORM f_select_makt.
    **Copy the contents of t_purc and t_makt into t_eket table.
    PERFORM f_move_eket.
    **Replace the corresponding entries of t_eket with t_ekes.
    PERFORM f_update_eket.
    Selection of PO data from EKET into internal table T_EKET.
      PERFORM f_select_eket2.
    Selection of corresponding PO data from EKES appending to T_EKET.
      PERFORM f_select_ekes2.
    Selection of material desc from MAKT table into T_MAKT.
      PERFORM f_select_makt2.
    mod end CR1591
    *Selection of vendor product name.
      PERFORM f_select_vpnam.
    del begin CR1591
    No need
    **copy t_eket-ebelp into temporary variable.
    PERFORM f_copy_ebelp.
    del end CR1591
    *selection of data from MLGN table into t_mlgn internal table
      PERFORM f_select_mlgn.
    *selection of data from marm table into t_marm internal table
      PERFORM f_select_marm.
    *selection of data from marc table into t_marc internal table
      PERFORM f_select_marc.
    *selection of data from lfa1 table into t_lfa1 internal table
      PERFORM f_select_lfa1.
    *Selection of data from LIPS table into t_lips internal table
      PERFORM f_select_lips.
    del begin CR1591
    Don't display list screen when no data exists
    *END-OF-SELECTION.
    del end CR1591
    *lines = sy-linno - 1.
    *Collection of data into the final display internal table t_Display
      PERFORM f_collect_final.
    *Display the contents of t_display as a simple List
      PERFORM f_list_display.
    AT USER-COMMAND.
      PERFORM f_select_layout.
      INCLUDE zjpmipu315.
      INCLUDE zjpmipu316.
    *&      Form  f_check_MATNR_in_plant
         This Routine is to check if the the selected material code is
         available in the plant 'JP01'.
    FORM f_check_matnr_in_plant.
      DATA: l_matnr LIKE mara-matnr.
      SELECT matnr UP TO 1 ROWS FROM marc
                       INTO l_matnr
                       WHERE
                       matnr = p_matnr AND
                       werks = c_werks.
      ENDSELECT.
      IF l_matnr IS INITIAL.
        MESSAGE e000 WITH
        'The material is not available in '(t02)  c_werks 'plant'(t20).
      ENDIF.
    ENDFORM.                    " f_check_MATNR_in_plant
    *&      Form  f_check_EBELN_in_EKPO
          This Routine is to check if the Purchase order number selected
          is existing or not and if it exists, check if it is related to
          the plant 'JP01'.
    FORM f_check_ebeln_in_ekpo.
      DATA: l_ebeln LIKE ekpo-ebeln.
      SELECT ebeln UP TO 1 ROWS FROM ekpo
                    INTO l_ebeln
                    WHERE
                    ebeln = p_ebeln AND
                    werks = c_werks.
      ENDSELECT.
      IF l_ebeln IS INITIAL.
        MESSAGE e000 WITH
        'PO not available or not related to '(t03) c_werks 'plant'(t21).
      ENDIF.
    ENDFORM.                    " f_check_EBELN_in_EKPO
    *&      Form  f_check_matnr_in_ekko
          This routine is to check if any PO exist for the selected
          Material code.
    FORM f_check_matnr_in_ekpo.
      DATA: l_matnr LIKE ekpo-matnr.
      SELECT matnr UP TO 1 ROWS FROM ekpo
                       INTO l_matnr
                       WHERE
                       matnr = p_matnr.
      ENDSELECT.
      IF l_matnr IS INITIAL.
        MESSAGE e000 WITH
        'PO does not exist for the material no'(t04) p_matnr.
      ENDIF.
    ENDFORM.                    " f_check_matnr_in_ekpo
    *&      Form  f_check_date_in_eket
          This routine is to check if any purchase order exists
          with the selected
    FORM f_check_date_in_eket.
      DATA: l_eindt LIKE eket-eindt.
      SELECT eindt UP TO 1 ROWS FROM eket
                       INTO l_eindt
                       WHERE
                       eindt IN s_date.
      ENDSELECT.
      IF l_eindt IS INITIAL.
        MESSAGE e000 WITH
       'No PO exist with the selected delivery date '(t05).
      ENDIF.
    ENDFORM.                    " f_check_date_in_eket
    *&      Form  f_check_werks_in_ekpo
          This Routine is to check if the selected purchase order
          is associated with the plant JP01
    FORM f_check_werks_in_ekpo.
      DATA: l_ebeln LIKE ekpo-ebeln.
      SELECT ebeln UP TO 1 ROWS FROM ekpo
                       INTO l_ebeln
                       WHERE
                       werks = c_werks.
      ENDSELECT.
      IF l_ebeln IS INITIAL.
        MESSAGE e000 WITH
        'The selected P0 is not relevant to '(t06) c_werks 'plant'(t22).
      ENDIF.
    ENDFORM.                    " f_check_werks_in_ekpo
    *&      Form  f_select_eket
          Routine to collect data from EKET, EKPO, MAKT, EKKO tables
          using inner join and store the data into internal table
          t_PURC. The data selection is based on the selection screen's
          input.
    FORM f_select_eket.
      IF ( NOT s_date-low IS INITIAL ) AND
         ( p_matnr IS INITIAL ) AND
         ( p_ebeln IS INITIAL ).
        SELECT
                eket~ebeln
                eket~ebelp
                eket~eindt
                eket~menge
                eket~charg
                ekpo~matnr
                ekpo~werks
                ekpo~meins
                ekko~lifnr
         INTO TABLE t_purc
        FROM
                 (  ( eket  INNER JOIN  ekko  ON
                  eketebeln = ekkoebeln )   INNER JOIN  ekpo  ON
                  eketebelp = ekpoebelp  AND
                  ekpoebeln = ekkoebeln )
      WHERE
                eket~eindt IN s_date AND
                ekpo~werks = c_werks AND
                ekpo~elikz NE c_x AND
                ekko~bstyp EQ c_f AND
                ekko~bsart NE c_zar.
      ELSEIF ( NOT s_date-low IS INITIAL ) AND
         ( NOT p_matnr IS INITIAL ) AND
         ( p_ebeln IS INITIAL ).
        SELECT
                eket~ebeln
                eket~ebelp
                eket~eindt
                eket~menge
                eket~charg
                ekpo~matnr
                ekpo~werks
                ekpo~meins
                ekko~lifnr
         INTO TABLE t_purc
        FROM
                 (  ( eket  INNER JOIN  ekko  ON
                  eketebeln = ekkoebeln )   INNER JOIN  ekpo  ON
                  eketebelp = ekpoebelp  AND
                  ekpoebeln = ekkoebeln )
      WHERE
                eket~eindt IN s_date AND
                ekpo~matnr = p_matnr AND
                ekpo~werks = c_werks AND
                ekpo~elikz NE c_x AND
                ekko~bstyp EQ c_f AND
                ekko~bsart NE c_zar.
      ELSEIF ( NOT s_date-low IS INITIAL ) AND
         ( NOT p_matnr IS INITIAL ) AND
         ( NOT p_ebeln IS INITIAL ).
        SELECT
                eket~ebeln
                eket~ebelp
                eket~eindt
                eket~menge
                eket~charg
                ekpo~matnr
                ekpo~werks
                ekpo~meins
                ekko~lifnr
         INTO TABLE t_purc
        FROM
                 (  ( eket  INNER JOIN  ekko  ON
                  eketebeln = ekkoebeln )   INNER JOIN  ekpo  ON
                  eketebelp = ekpoebelp  AND
                  ekpoebeln = ekkoebeln )
      WHERE
                eket~eindt IN s_date AND
                ekpo~matnr = p_matnr AND
                ekpo~ebeln = p_ebeln AND
                ekpo~werks = c_werks AND
                ekpo~elikz NE c_x AND
                ekko~bstyp EQ c_f AND
                ekko~bsart NE c_zar.
      ELSEIF ( s_date-low IS INITIAL ) AND
         ( p_matnr IS INITIAL ) AND
         ( NOT p_ebeln IS INITIAL ).
        SELECT
                eket~ebeln
                eket~ebelp
                eket~eindt
                eket~menge
                eket~charg
                ekpo~matnr
                ekpo~werks
                ekpo~meins
                ekko~lifnr
         INTO TABLE t_purc
        FROM
                 (  ( eket  INNER JOIN  ekko  ON
                  eketebeln = ekkoebeln )   INNER JOIN  ekpo  ON
                  eketebelp = ekpoebelp  AND
                  ekpoebeln = ekkoebeln )
      WHERE
                ekpo~ebeln = p_ebeln AND
                ekpo~werks = c_werks AND
                ekpo~elikz NE c_x AND
                ekko~bstyp EQ c_f AND
                ekko~bsart NE c_zar.
      ELSEIF ( NOT s_date-low IS INITIAL ) AND
         ( p_matnr IS INITIAL ) AND
         ( NOT p_ebeln IS INITIAL ).
        SELECT
                eket~ebeln
                eket~ebelp
                eket~eindt
                eket~menge
                eket~charg
                ekpo~matnr
                ekpo~werks
                ekpo~meins
                ekko~lifnr
         INTO TABLE t_purc
        FROM
                 (  ( eket  INNER JOIN  ekko  ON
                  eketebeln = ekkoebeln )   INNER JOIN  ekpo  ON
                  eketebelp = ekpoebelp  AND
                  ekpoebeln = ekkoebeln )
      WHERE
                eket~eindt IN s_date AND
                ekpo~ebeln = p_ebeln AND
                ekpo~werks = c_werks AND
                ekpo~elikz NE c_x AND
                ekko~bstyp EQ c_f AND
                ekko~bsart NE c_zar.
      ENDIF.
    IF sy-subrc <> 0.
       MESSAGE s000 WITH 'Data not found'(t07).
       LEAVE LIST-PROCESSING.
    ELSE.
      SORT t_purc.
    ENDIF.
    ENDFORM.                    " f_select_eket
    *&      Form  f_select_makt
          Routine to select the material description for all the
          materials present in T_purc table
    FORM f_select_makt.
      DATA: l_t_makt(4) TYPE c VALUE 'MAKT'.
      SELECT
          matnr
          maktx
      FROM
          makt
      INTO TABLE t_makt
          FOR ALL ENTRIES IN t_purc
      WHERE
         matnr = t_purc-matnr AND
         spras = c_spras.
      IF sy-subrc <> 0.
        MESSAGE s000 WITH
          'Relevant data not found in'(t09) l_t_makt 'table'(t23).
      ELSE.
        SORT t_makt.
      ENDIF.
    ENDFORM.                    " f_select_makt
    *&      Form  f_move_eket
          Routine to join data in T_PURC and T_MAKT tables into
          internal table T_MAKT.
    FORM f_move_eket.
      LOOP AT t_purc.
        t_eket-ebeln = t_purc-ebeln.
        t_eket-ebelp = t_purc-ebelp.
        t_eket-eindt = t_purc-eindt.
        t_eket-menge = t_purc-menge.
        t_eket-charg = t_purc-charg.
        t_eket-matnr = t_purc-matnr.
        t_eket-werks = t_purc-werks.
        t_eket-meins = t_purc-meins.
        t_eket-lifnr = t_purc-lifnr.
        READ TABLE t_makt WITH KEY matnr = t_purc-matnr
                                         BINARY SEARCH.
        IF sy-subrc = 0.
          t_eket-maktx = t_makt-maktx.
        ENDIF.
        APPEND t_eket.
        CLEAR t_eket.
      ENDLOOP.
    ENDFORM.                    " f_move_eket
    *&      Form  f_select_ekes
          Routine to select EKES data for all corresponding entries
          of T_EKET.
    FORM f_select_ekes.
      DATA: l_tabix TYPE i.
    IF NOT s_date IS INITIAL.
       SELECT
               ebeln
               ebelp
               etens
               eindt
               menge
        INTO   TABLE t_ekes
         FROM
               ekes
        WHERE
               eindt IN s_date.
    ELSE.
      DESCRIBE TABLE t_purc LINES l_tabix.
      IF l_tabix GT 0.
        SELECT
                ebeln
                ebelp
                etens
                eindt
                menge
                dabmg
                vbeln
                vbelp
         FROM
                ekes
         INTO   TABLE t_ekes
               FOR ALL ENTRIES IN t_eket
                FOR ALL ENTRIES IN t_purc
         WHERE
                ebeln = t_purc-ebeln AND
                ebelp = t_purc-ebelp AND
                eindt IN s_date.
              AND ebeln eq p_ebeln.
           and matnr in p_matnr.
      ENDIF.
      CLEAR l_tabix.
      IF NOT s_date IS INITIAL AND NOT p_ebeln IS INITIAL.
        SELECT
                ekes~ebeln
                ekes~ebelp
                ekes~etens
                ekes~eindt
                ekes~menge
                ekes~dabmg
       APPENDING TABLE t_ekes
          FROM ekes
         WHERE
                eindt IN s_date AND
                ebeln EQ p_ebeln AND
                ebtyp EQ c_la.
      ELSEIF NOT s_date IS INITIAL AND p_ebeln IS INITIAL.
        SELECT
                    ekes~ebeln
                    ekes~ebelp
                    ekes~etens
                    ekes~eindt
                    ekes~menge
                    ekes~dabmg
           APPENDING TABLE t_ekes
              FROM ekes
             WHERE
                    eindt IN s_date AND
               ebeln EQ p_ebeln AND
                    ebtyp EQ c_la.
      ELSEIF s_date IS INITIAL AND NOT p_ebeln IS INITIAL.
        SELECT
                    ekes~ebeln
                    ekes~ebelp
                    ekes~etens
                    ekes~eindt
                    ekes~menge
                    ekes~dabmg
           APPENDING TABLE t_ekes
              FROM ekes
             WHERE
               eindt IN s_date AND
                    ebeln EQ p_ebeln AND
                    ebtyp EQ c_la.
      ENDIF.
      IF sy-subrc = 0.
        SORT t_ekes.
      ENDIF.
      IF NOT t_ekes[] IS INITIAL.
        t_ekes_temp[] = t_ekes[].
        SORT t_ekes_temp BY ebeln ebelp.
        DELETE ADJACENT DUPLICATES FROM t_ekes_temp COMPARING ebeln ebelp.
        LOOP AT t_ekes_temp.
          READ TABLE t_purc WITH KEY ebeln = t_ekes_temp-ebeln
                                     ebelp = t_ekes_temp-ebelp.
          IF sy-subrc NE 0.
            CLEAR t_purc.
            SELECT SINGLE
                  eket~ebeln
                  eket~ebelp
                  eket~eindt
                  eket~menge
                  eket~charg
                  ekpo~matnr
                  ekpo~werks
                  ekpo~meins
                  ekko~lifnr
           INTO  CORRESPONDING FIELDS OF t_purc
          FROM
                   (  ( eket  INNER JOIN  ekko  ON
                    eketebeln = ekkoebeln )   INNER JOIN  ekpo  ON
                    eketebelp = ekpoebelp  AND
                    ekpoebeln = ekkoebeln )
        WHERE
                 eket~ebeln = t_ekes_temp-ebeln
          AND    eket~ebelp = t_ekes_temp-ebelp
          AND    ekpo~elikz NE c_x
          AND    ekko~bstyp EQ c_f
          AND    ekko~bsart NE c_zar.
            IF sy-subrc EQ 0.
              APPEND t_purc.
              CLEAR t_purc.
            ENDIF.
          ENDIF.
        ENDLOOP.
      ENDIF.
      REFRESH: t_ekes_temp, t_ekes.
      CLEAR: t_ekes_temp, t_ekes.
    Once the header is filled up get the details from EKES
      SELECT ebeln ebelp  etens eindt menge dabmg vbeln vbelp
                         INTO TABLE t_ekes
                         FROM ekes
                         FOR ALL ENTRIES IN t_purc
                   WHERE ebeln EQ t_purc-ebeln.
    Mark the entries as 'X' which falls in the date range
      LOOP AT t_ekes.
        IF t_ekes-eindt IN s_date.
          t_ekes-mark = 'X'.
          MODIFY t_ekes INDEX sy-tabix TRANSPORTING mark.
        ENDIF.
      ENDLOOP.
      SORT t_ekes BY ebeln ebelp ASCENDING mark DESCENDING.
    Delete the entries from eket if no entries in EKES falls in the period
      LOOP AT t_purc.
        l_tabix = sy-tabix.
        READ TABLE t_ekes WITH KEY ebeln = t_purc-ebeln
                                   ebelp = t_purc-ebelp.
        IF sy-subrc EQ 0.
          IF t_ekes-mark NE 'X'.
            DELETE t_purc INDEX l_tabix.
          ENDIF.
        ENDIF.
      ENDLOOP.
    delete the entries from EKES which do not fall in the specified period
      DELETE t_ekes WHERE mark NE 'X'.
    ENDFORM.                    " f_select_ekes
    *&      Form  f_update_eket
          Routine to substitute relevant t_eket entries  with that of
          t_ekes entries.It does not modify the remaining entries for
          for which the corresponding values in t_ekes doesnot  exist.
    FORM f_update_eket.
      DATA: BEGIN OF lt_temp_eket OCCURS 0,
               ebeln LIKE eket-ebeln, "Purchasing Document Number
               ebelp LIKE eket-ebelp, "Item Number of Purchasing Document
               eindt LIKE eket-eindt, "Item delivery date
               menge LIKE eket-menge, "Scheduled quantity
               dabmg LIKE ekes-dabmg,  " Delivered quantity
               matnr LIKE ekpo-matnr, "Material code
               maktx LIKE makt-maktx, "Material Description-- jp check
               etens LIKE ekes-etens, "Sequence Number
               meins LIKE ekpo-meins, "Unit of measure
               lifnr LIKE ekko-lifnr, "Vendor number
               charg LIKE eket-charg, " Batch number   Added by PD 08/08/03
               vbeln LIKE ekes-vbeln,
               vbelp LIKE ekes-vbelp,
            END OF lt_temp_eket,
            l_menge LIKE ekes-menge.
      LOOP AT t_eket.
        LOOP AT t_ekes WHERE ebeln = t_eket-ebeln
                        AND  ebelp = t_eket-ebelp.
    Added by PD 08/08/03
          MOVE t_eket-charg TO lt_temp_eket-charg.
    addition ends
          MOVE t_eket-ebeln TO lt_temp_eket-ebeln.
          MOVE t_eket-ebelp TO lt_temp_eket-ebelp.
          MOVE t_eket-meins TO lt_temp_eket-meins.
          CLEAR l_menge.
          l_menge = t_ekes-menge - t_ekes-dabmg.
          IF l_menge LE 0.
            CONTINUE.
          ELSE.
            MOVE l_menge TO lt_temp_eket-menge.
          ENDIF.
          MOVE t_ekes-eindt TO lt_temp_eket-eindt.
          MOVE t_ekes-etens TO lt_temp_eket-etens.
          MOVE t_eket-lifnr TO lt_temp_eket-lifnr.
          MOVE t_eket-maktx TO lt_temp_eket-maktx.
          MOVE t_eket-matnr TO lt_temp_eket-matnr.
          MOVE t_ekes-vbeln TO lt_temp_eket-vbeln.
          MOVE t_ekes-vbelp TO lt_temp_eket-vbelp.
          APPEND lt_temp_eket.
          CLEAR lt_temp_eket.
          CLEAR t_ekes.
        ENDLOOP.
        IF sy-subrc NE 0.
    Added by PD 08/08/03
          MOVE t_eket-charg TO lt_temp_eket-charg.
    addition ends
          MOVE t_eket-ebeln

    Dear
    Problem No 1 : we are working in a process industries with three plants each of them have three order type. we have define MRP group in "OPPR" then assign each MRP group to Orde types in "OPPE". Now the problem is whn i convert plan order in process order for any material systme automaticaly pick the order type PIi01.
    Answer :
    1.Please check the OPPR -Plant and MRP group -Select Order Type Button -Check what Order Type you have assinged here ( PI01( May be the default Process Order Type )
    2.If you are maintaing MRP group ( 0001 or 0002) , did you asisng the same in MRP1 view ?? because
    3.Did you maintain the similar Order type in OPKP -Define Production Scheduling Profile ? -This has highest priority .
    4.Did you maintain correct order type in OPJH-Maintain Order Type ??
    Refer the expert comments on the same issue : Strategy group to define production order type
    Problem No 2: 2nd Problem is system system is not creating plan order for prrevios dates. say i enter PIR for month of november from first november to 30th november and run MRP on 29th the sytem create plan order on 30th of november with exception message 30.
    Answer : You can plan the order in back dated , if you maitain Satrt date in the Past optiuon in OPU3/OPU5-Define Scheduling parameters .Goto OPU3 -Select the Order Type -Double click -Maintain 90-60 days in the Start Date in the past in Scheduling Control and Details scheduling tab .
    Hope it helps
    regards
    JH

  • Inspection type 01 - inspection lot creation based on vendor batch number

    Hi Guys,
    this topic has been discussed several times here, but I was not able to find a suitable answer for my question.
    I am facing the folowing requirement:
    I have activated inspection type 01 for a raw material.
    I am receiving a firs goods receipt from vendor A with vendor batch number 0001.
    The system creates its own goods receipt batch number 0546 based on internal numbering.
    A new inspection lot is created.
    I am posting a second goods receipt from vendor a with vendor batch 0001.
    The system creates a new batch number 0547 based on internal numbering.
    A new inspection lot is created.
    I do not want to get the second inspection lot, because I received vendor batch 0001 before and I am assuming it has been inspected or is in inspection.
    Option 1: Post the second goods receipt against the first internal batch number created.
    I am aware of this need at the moment, but a user is not always checking if there is an internal batch with the same vendor received before.
    Can I customize the system to create inspection lots based on the fact that the vendor batch number was received before?
    Or do I have to use an exit and some ABAP code to get the wanted result?
    Thanks for your advice in advance.

    You need to use one of the enhancements that Do-Wook has suggested.  There is no standard SAP way to suppress the inspection based on the vendor batch number.
    With the first enhancement you use the system to check for a previously received vendor batch and if one is found, then that batch number is proposed and not the next one from the numbering series.  In this case, the lot isn't created than due to the inspection lot control of the inspection type.
    With the second enhancement you check the vendor batch number and if it's been received you suppress the inspection lot creation and the stock goes right to unrestricted.
    You'll probably need to do one or the other.  Myself, I prefer the first enhancement.
    Craig

  • To bring the Vendor name & Code in FBL3N Report

    Hi Friends,
    As we need to bring the Vendor name / Code in FBL3N report, we have given the settings in the SPRO ( SPRO>Financial Accounting>General Ledger Accounting>G/L Accounts->Line items>Line items Display-->Define special fields for finding and sorting data ) by putting of BSEG table and assigned the same with LIFNR field and transported the same to Development server for testing, but after transport, the above requirements are NOT coming while we run the FBL3N report,
    Please guide me to bring the same in FBL3N as it is important requirement for us.
    Thanks
    G. Jana

    Hi
    If you are on ECC 6.0 you can use report FAGLL03. However, if you need to get vendor name also, you need to do refer to link
    Re: adding a field to FBL3N
    Regards
    Sanil K Bhandari

  • Vendor Batch Tracking

    Dear Sir
    For Getting Vendor Batch Tracking
    We are have adopted a Process in our company as below.
    1) @ Inward entry (105 nmovement ) an internal Batch will be created.
    2) @Quality clearance(qa32) the item is being moved to unrestricted  stock by selecting the  option  "New material", and by giving the same material code & entering new manual batch(Vendor batch) we are moving it into the stock .
    So internal batch will be a parent batch in our premises for tracking the Vendor batch.
    But the  problem we are facing in this procedure is
    the vendor batches we are getting is 15 to 18 characters but internal or external batch number is only of 10 characters.
    Does the poblem will be solved with document batch adoption.
    So kindly please suggest a new procedure or any adoptabl;e condition to overcome my problem.
    Regards
    Chaitanya

    Hi,
    You should use Vendor Batch field (MCHA-LICHA) under Trading Data Info in Basic data1 of Batch Master record in order to store Vendor Batch tracking. This field has 15 length character. So if you need to have more character you should go for text field only.
    Regards,
    Girang

  • Vendor batch is retrieved from LIPS-LICHN only if LIPS-LICHN is not blank,

    (Current design)
    Batch is retrieved from LIPS-CHARG
    Vendor batch is retrieved from LIPS-LICHN
    (If there is no record in LIPS, blank will be printed out for both fields)
    REQUIREMENT:
    Batch is retrieved from LIPS-CHARG
    Vendor batch is retrieved from LIPS-LICHN only if LIPS-LICHN is not blank.
    If LIPS-LICHN is blank, vendor batch is retrieved from LIPS-CHARG.
    (If there is no record in LIPS, blank will be printed out for both fields. If both LIPS-CHARG and LIPS-LICHN are blank, blank will be printed out for both fields)
    t-lips is the internal table :
    DATA: BEGIN OF t_lips OCCURS 0,
             vbeln LIKE lips-vbeln, "Delivery document no
             posnr LIKE lips-posnr, "Item number for Delivery document
             charg LIKE lips-charg, "Batch number
             lichn LIKE lips-lichn, "Vendor Batch number
          END OF t_lips.
    Following is the piece of code:
    *&      Form  f_collect_final
          Routine to collect all the display data into the final internal
          table t_display.
    FORM f_collect_final.
      DATA: l_std_pac_no LIKE eket-menge,
            l_std_pac_no_out(13) TYPE p,
            l_tot_std_pt(13) TYPE c,
            l_rmdr(13) TYPE n,
            l_qtnt(13) TYPE n,
            l_tabix TYPE i.
      LOOP AT t_eket.
        t_display-ebeln = t_eket-ebeln.
        t_display-ebelp = t_eket-ebelp.
        t_display-etens = t_eket-etens.
        t_display-eindt = t_eket-eindt.
        t_display-menge = t_eket-menge.
        t_display-meins = t_eket-meins.
        t_display-matnr = t_eket-matnr.
    mod begin CR1591
       t_display-maktx = t_eket-maktx.
        READ TABLE t_makt WITH KEY matnr = t_eket-matnr
                          BINARY SEARCH.
        IF sy-subrc = 0.
          t_display-maktx = t_makt-maktx.
        ENDIF.
    mod end CR1591
        t_display-vpnam = t_eket-vpnam.
        t_display-lifnr = t_eket-lifnr.
        t_display-charg = t_eket-charg.
        READ TABLE t_mlgn WITH KEY matnr = t_eket-matnr
                                          BINARY SEARCH.
        IF sy-subrc = 0.
          t_display-lhmg1 = t_mlgn-lhmg1.
          t_display-lhme1 = t_mlgn-lhme1.
          t_display-lety1 = t_mlgn-lety1.
          t_display-ltkze = t_mlgn-ltkze.
        ENDIF.
        READ TABLE t_marm WITH KEY matnr = t_eket-matnr
                                               BINARY SEARCH.
        IF sy-subrc = 0.
          t_display-umrez = t_marm-umrez.
          t_display-meinh = t_eket-meins.
        ENDIF.
        READ TABLE t_marc WITH KEY matnr = t_eket-matnr
                                             BINARY SEARCH.
        IF sy-subrc = 0.
          t_display-zzjp_nyu_sop = t_marc-zzjp_nyu_sop.
          t_display-zzjp_dos_frm = t_marc-zzjp_dos_frm.
          t_display-zzjp_aprn    = t_marc-zzjp_aprn.
          t_display-zzjp_re1     = t_marc-zzjp_re1.
        ENDIF.
        READ TABLE t_lfa1 WITH KEY lifnr = t_eket-lifnr
                                          BINARY SEARCH.
        IF sy-subrc = 0.
          t_display-name1 = t_lfa1-name1.
        ENDIF.
        READ TABLE t_lips WITH KEY vbeln = t_eket-vbeln
                                   posnr = t_eket-vbelp
                                   BINARY SEARCH.
        l_tabix = sy-tabix.
        IF sy-subrc = 0.
          t_display-charg = t_lips-charg.(I think this is the place to change).
         t_display-lichn = t_lips-charg.
        ENDIF.
    I have tried with the following code, but it is not working.
    IF sy-subrc = 0.
          t_display-charg = t_lips-charg.
    IF not t_lips-lichn is initial.
         t_display-lichn = t_lips-lichn.
        ELSE.
       t_display-lichn = t_lips-charg.
        ENDIF.
    ENDIF.

    Hi,
    Find the modification below, consider the bold text and remove the old one:
    READ TABLE t_lips WITH KEY vbeln = t_eket-vbeln
    posnr = t_eket-vbelp
    BINARY SEARCH.
    l_tabix = sy-tabix.
    IF sy-subrc = 0.
    <b>if t_lips-lichn EQ space AND
    t_lips-charg NE space.
    t_display-charg = t_lips-charg.
    t_display-lichn = t_lips-charg.
    endif.</b>
    <i>t_display-charg = t_lips-charg.(I think this is the place to change).
    t_display-lichn = t_lips-charg.</i>ENDIF.

  • Adding new Batch Number to AP Invoice

    i am working on adding new batch number to an existing AP IN by SDK function. I try the following codes, no errors prompt but also nothing updated. Can anyone advise me how to add new batch number to AP Invoice? Many Thanks!
    Dim ErrMsg As String
    Dim ErrCode As Integer
    Dim opch As SAPbobsCOM.Documents
    opch = oCompany.GetBusinessObject(SAPbobsCOM.BoObjectTypes.oPurchaseInvoices)
    opch.GetByKey(5)
    opch.Lines.BatchNumbers.Add()
    opch.Lines.BatchNumbers.BatchNumber = "3"
    opch.Lines.BatchNumbers.Quantity = 3
    ret = opch.Update
    If ret <> 0 Then
          oCompany.GetLastError(ErrCode, ErrMsg)
          MsgBox(ErrCode & " " & ErrMsg)
    End If

    Hi ,
    Steps to do:
    1.Create an User Defined Field on Document Row Level:
    Name: Serial / Batch Details
    Type: Alphanumeric
    Structure: Text
    - Create a Formatted Search which will populate the data from Delivery note.
    - Put the UDF into the Print Layout of Delivery Order.
    Displaying Batch Details
    2.   Decide with information is needed from Batch details to be printed out on A/R Invoice
    On Bacth Details form (Inventory\Item Management\Batches\Batch Details) we can see all the possible details.
    - Batch Number
    - Delivered Quantity
    - Expiration Date
    3.    Build the formatted search SQL command.
    By a SQL cursor driven result set we can build a text which contains the list of the delivered batch details separated by new lines. The relations between A/R Invoice and Delivery note is defined on A/R Invoice Form. in columns 45, 46, and 43 
    declare @batch as nvarchar(100)
    declare @txt nvarchar(max)
    set @txt = ''
    declare P cursor for SELECT T0.[BatchNum] + space(1)
      + cast(cast(T1.[Quantity] as decimal(19,2)) as nvarchar)
      + space(1) + case when T0.[ExpDate] is null then '' else convert(nvarchar,T0.[ExpDate],102) end
      FROM OIBT T0 INNER JOIN IBT1 T1 ON T0.ItemCode = T1.ItemCode and T0.WhsCode = T1.WhsCode
      and T0.BatchNUm = T1.BatchNum
      WHERE T1.[BaseEntry] =$[$38.45.0] and T1.[BaseLinNum] =$[$38.46.0]
    open P
    fetch next from P into @batch
    while @@fetch_status = 0
    begin
    set @txt = @txt '\n'@batch +','
    fetch next from P into @batch
    end
    close P
    deallocate P
    select @txt
    4. Defined the formatted search on the A/R Invoice.

  • MIGO field selection - vendor batch number

    I created a new movement type by copying from the standard SAP movement type 501 (GR w/o purchase order).
    When posting a GR with this movement type and a batch-managed material, the Batch field is open for entry but the Vendor Batch field (GOITEM-LICHA) is suppressed. I suppose this is because SAP does not expect you to enter any vendor-related information if you do not have a PO. And similarly if you have vendor-related information (like a vendor's batch number) you should be using a PO.
    However the business requires a Vendor Batch number to be entered in this scenario.
    Does anyone know how to make the Vendor Batch field open for input when using a specific movement type?
    I'm thinking maybe a BADI like MB_MIGO_ITEM_BADI is my only option. I've tried the MIGO field selection (OMJX) but couldn't make this work. Any input would be appreciated.
    Thanks!

    I am afraid I must confirm that, as you have already seen, it is not possible to enter a Vendor Batch (LICHA) in a goods receipt without reference to the purchase order with the movemement types 501, 511 or 561.
    There is no standard system setting or program code available which can set this entry as required or optional. This kind of requirement can only be achieved through a software modification,
    Also, please notice that although you can enter a Vendor Batch when posting a goods movement with reference to a purchase order, you cannot display it later with transaction MIGO:
    Please, kindly check the information contained under the attached note regarding this matter:
    330585 - MIGO: Vendor batch in material document display.
    As stated in this note, under the 'System response after the note is implemented' section:
    "After the attached correction instructions are implemented, the field
      can no longer be seen in the display of the material document for the
      vendor batch using Transaction MIGO. Displaying the vendor batch does
      not make much sense since it might have changed since the posting of
      the material document. The material document itself does not have the
      information of the vendor batch that was entered at that time. In the
      system, only the information of the current vendor batch exists for
      the batch."
    Sorry not having a positive answer ! =/
    Plauto

  • Database logon failed. Database Vendor Error Code: 0

    Hi all,
    I'm running a java web application and use crystal report XI.
    It works normally. One thing is : i would like to change the "Connection URL" when runtime.
    These are my config:
    _CRConfig.xml :
    <?xml version="1.0" encoding="utf-8"?><CrystalReportEngine-configuration>
        <reportlocation>../..</reportlocation>
        <timeout>10</timeout>
        <ExternalFunctionLibraryClassNames>
              <classname> </classname>
              <classname> </classname>
        </ExternalFunctionLibraryClassNames>
    <keycode>B6W60-01CS200-00GEGC0-0EX1</keycode>
    <Javaserver-configuration>
    <DataDriverCommon>
         <JavaDir>C:\Business Objects\j2sdk1.4.2_08\bin</JavaDir>
        <Classpath>C:\Business Objects\Common\3.5\java/lib/crlovmanifest.jar;C:\Business Objects\Common\3.5\java/lib/CRLOVExternal.jar;C:\Business Objects\Common\3.5\java/lib/CRDBJavaServerCommon.jar;C:\Business Objects\Common\3.5\java/lib/CRDBJavaServer.jar;C:\Business Objects\Common\3.5\java/lib/CRDBJDBCServer.jar;C:\Business Objects\Common\3.5\java/lib/CRDBXMLServer.jar;C:\Business Objects\Common\3.5\java/lib/CRDBJavaBeansServer.jar;C:\Business Objects\Common\3.5\java/lib/external/CRDBXMLExternal.jar;C:\Business Objects\Common\3.5\java/lib/external/log4j.jar;C:\Business Objects\Common\3.5\java/lib/cecore.jar;C:\Business Objects\Common\3.5\java/lib/celib.jar;C:\Business Objects\Common\3.5\java/lib/ebus405.jar;C:\Business Objects\Common\3.5\java/lib/corbaidl.jar;C:\Business Objects\Common\3.5\java/lib/external/freessl201.jar;C:\Business Objects\Common\3.5\java/lib/external/asn1.jar;C:\Business Objects\Common\3.5\java/lib/external/certj.jar;C:\Program Files\Business Objects\Common\3.5\java/lib/external/jsafe.jar;C:\Business Objects\Common\3.5\java/lib/external/sslj.jar;C:\tomcat\common\lib\oracle-driver.jar${CLASSPATH}</Classpath>
         <IORFileLocation>${TEMP}</IORFileLocation>
         <JavaServerTimeout>1800</JavaServerTimeout>
         <JVMMaxHeap>256000000</JVMMaxHeap>
         <JVMMinHeap>32000000</JVMMinHeap>
         <NumberOfThreads>100</NumberOfThreads>
    </DataDriverCommon>
    <JDBC>
         <CacheRowSetSize>100</CacheRowSetSize>
         <JDBCURL>jdbc:mysql://Komodo-vmw:3306/warcraft</JDBCURL>
         <JDBCClassName>com.mysql.jdbc.Driver</JDBCClassName>
         <JDBCUserName>root</JDBCUserName>
         <JNDIURL></JNDIURL>
         <JNDIConnectionFactory></JNDIConnectionFactory>
         <JNDIInitContext>/</JNDIInitContext>
         <JNDIUserName>weblogic</JNDIUserName>
         <GenericJDBCDriver>
              <Default>
                   <ServerType>UNKNOWN</ServerType>
                   <QuoteIdentifierOnOff>ON</QuoteIdentifierOnOff>
                   <StoredProcType>Standard</StoredProcType>
                   <LogonStyle>Standard</LogonStyle>
              </Default>
              <Sybase>
                   <ServerType>SYBASE</ServerType>
                   <QuoteIdentifierOnOff>OFF</QuoteIdentifierOnOff>
                   <DriverClassName>com.sybase.jdbc2.jdbc.SybDriver</DriverClassName>
                   <StoredProcType>Standard</StoredProcType>
                   <LogonStyle>MySQL</LogonStyle>
              </Sybase>
         </GenericJDBCDriver>
    </JDBC>
    <XML>
         <CacheRowSetSize>100</CacheRowSetSize>
         <PreReadNBytes>4096</PreReadNBytes>
         <XMLLocalURL></XMLLocalURL>
         <SchemaLocalURL></SchemaLocalURL>
         <XMLHttpURL></XMLHttpURL>
         <SchemaHttpURL></SchemaHttpURL>
    </XML>
    <JavaBeans>
        <CacheRowSetSize>100</CacheRowSetSize>
         <JavaBeansClassPath></JavaBeansClassPath>
    </JavaBeans>
    </Javaserver-configuration>
    </CrystalReportEngine-configuration>
    _JSP file :
    public ConnectionInfos setLogon()  {
              String dbUser = "root";
              String dbPassword ="root";
              ConnectionInfos oConnectionInfos=null;
               try
                    //Create a new ConnectionInfos and ConnectionInfo object;
                    oConnectionInfos = new ConnectionInfos();
                  ConnectionInfo oConnectionInfo = new ConnectionInfo();
                  //Set username and password for the report's database
                  oConnectionInfo.setUserName(dbUser);
                  oConnectionInfo.setPassword(dbPassword);
              PropertyBag pro = new PropertyBag();
                  Map<String, String> bag = new HashMap<String, String>();
                   bag.put("Connection URL", "jdbc:mysql://Komodo-vmw:3306/warcraft");
                   bag.put("Server Type", "JDBC (JNDI)");
                   bag.put("Database DLL", "crdb_jdbc.dll");
                   bag.put("Database Class Name", "com.mysql.jdbc.Driver");
                  oConnectionInfo.setAttributes(new PropertyBag(bag));          
                  //Add object to collection
                  oConnectionInfos.add(oConnectionInfo);               
              } catch(Exception se) {
                   se.printStackTrace();
                   System.out.println("[error in setLogon ]");
              return oConnectionInfos;     
    And i got error every times i run the report :
    Database logon failed. Database Vendor Error Code: 0
    Please help me.Thank you so much!

    Hi quang.
    can u tell me how to solve this issue? on trying to open a report am facing this issue!
    TIA

  • Vendor batch and batch field on the inbound delivery

    hi GUrus,
    i have looked through most of the threads where the topic of vendor batch and batch on the inbound delviery has comeup. I'm specifically looking at a scneario where i would want to pass the on the batch number provided by the vendor on the IDOC to batch field on the inbound delivery. The reason for this is , i can look at the batch field in the confirmations tab of the PO, in the purchase order histroy tab of the PO, and also MMBE tcode. the material is also batch managed turned on in hte material master. But the issue is that even though i put the batch provided by vendor in the CHARG field on the ASN IDOC, it is still getting populated in the vendor batch field in the inbound delivery.
    any ideas?
    Thanks
    Ravi

    Hi,
       Refer the note:  833668 - Creating batches in the inbound delivery using IDOC  which explains the system design.
    Regards,
    AKPT

  • While creating PO using BAPI_PO_CREATE1 vendor batch number is not comming.

    Hi Friends,
    I am using BAPI "    'BAPI_PO_CREATE1' to create PO in my report.
    The PO's are getting created but i the vendor batch number is not found in the PO.
    Where as i am passing the vendor batch number.
             bapimepoitem-vendrbatch = '2'.
              bapimepoitemx-vendrbatch = 'X'.
      CALL FUNCTION 'BAPI_PO_CREATE1'
        EXPORTING
          poheader          = bapimepoheader
          poheaderx         = bapimepoheaderx
          memory_uncomplete = 'X'
        IMPORTING
          exppurchaseorder  = v_po_number
        TABLES
          return            = bapiret2
          poitem            = bapimepoitem
          poitemx           = bapimepoitemx
          poschedule        = bapimeposchedule
          poschedulex       = bapimeposchedulx.
        Commit the transaction
      IF v_po_number NE space.
        CALL FUNCTION 'BAPI_TRANSACTION_COMMIT'
          EXPORTING
            wait   = 'X'
          IMPORTING
            return = bapiret2_c.
      ENDIF.
    Please reply urgently.
    Thanks Regards,
    Sandipan Jena

    Hi
    My answer is pure assumption.
    Please check the following OSS notes
    Note 758810 - BAPI_PO_CHANGE vendor batch and batch not visible
    Note 1230268 - Field Vendor Batch never filled for PO BAPIs
    Please take help from BASIS and SAP, before implementing the OSS note
    Regards
    Madhan D

  • Code for Vendor Tax Code uniqueness

    Hi,
    When we are trying to create a new customer (transaction XD01) we would like to be informed if the  Vendor Tax Code (KNA1-stcd2) is being used already.
    Can you tell me what code do we have to insert and where.
    Thanks.

    Hello,
    I dont there would be direct way to check this out in SAP R/3.
    What you can do is create a Z-DB table , say ZTAXCODE, which has Customer,Customer Group as Key Fields and taxcode as another field.
    Now when User tries to save the Customer- then u can
    1) Make use of BADI - CUSTOMER_ADD_DATA (SE18/SE19)
    2) Make use of User Exit - FM EXIT_SAPMF02D_001 (Customers: User Exit for Checks prior to Saving) (SMOD/CMOD)
    Here, you can the entry to your newly created table and chk if the entry user tries to maintain already exists. If yes, you can display an error message to the user.
    Hope this helps.

  • Vendor company code

    Hi,
    Can anybody give a detailed explanation about what do u mean by vendor company codes.

    Hi Sandeep,
    You want to know abt the assignement of vendor at diffferent levels then , it is assigned at 3 levels :
    Client
    company Code
    Pur Org
    Apartf rom above you can miantina vendor related information pertaining to plant, provided plant should come under the pur org.
    If you want to know about the screen layout of venor master/field status for company codes, ckeck the link below :
    http://help.sap.com/saphelp_47x200/helpdata/en/01/a9b47b455711d182b40000e829fbfe/frameset.htm
    BR,
    Krishna

  • Vendor _company code mandatory

    could some one tel me how to make the company code mandatory while creating the vendor using xk01

    Hi,
    This can not be controlled via field selection. You have to go for Transaction Variant for this in SHD0
    Refer link;
    [Step By Step Guide - Creating Transaction Variants|http://www.mortenhjorthnielsen.dk/Security/transactionvariants.htm]
    In SHD0, enter following
    Transaction Code XK01
    Transaction Variant  ZXK01
    Now click on "Create" button
    Here fill following
    Vendor
    Company Code
    Purchasing Org.
    Account Grpoup
    And press enter, it will give the Screen entries pop-up
    Here first fill 'Screen variant short txt" and then select Company Code as "Required" and click on "Enter" button in screen
    Now press enter and save the info record, a pop-up will come save it after filling Screen variant short txt
    And finally the main screen appears for the Full Vendor Master fields just save this by clicking on "SAVE" button on top.
    It will as for "Package", specify and save it then it will ask for Request, create new and save it. This will be repeated for all the screens you have passed.
    Now in SHD0, initial screen, go to "Standard Variants" Tab,
    here enter Name as "ZXK01" and click on "Activate" button beside this field
    Now go to XK01 and check plant will become a mandatory field.
    Also take help of ABAPer if required.

  • Vendor Company Code View

    Hello,
    I wanted to know the importnace of Payment method supplement in Vendor Company code view>>payment transaction view.
    It would be kind if you explain by giving an example.
    Thanks.

    List of the Payment Methods to be Considered
    List of payment methods which may be used in automatic payment transactions with this customer/vendor if you do not specify a payment method in the item to be paid.
    If you do specify a particular payment method in the item to be paid, this specification has priority over the specifications in the master record. You may also specify payment methods in the item which are not listed in the master record.
    This field notifies that whether the vendor payment is to be made in cash, by cheque, bank draft etc.

Maybe you are looking for