0% found this document useful (0 votes)
412 views

Bapi For Extending Material For Plant and Storage

This document defines data types and tables to store information for extending material master data using BAPI calls. It declares variables for the BAPI calls, retrieves relevant data based on a sales document number selection, and loops through the retrieved data to call the BAPI to create or update material master records, displaying any error messages.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
412 views

Bapi For Extending Material For Plant and Storage

This document defines data types and tables to store information for extending material master data using BAPI calls. It declares variables for the BAPI calls, retrieves relevant data based on a sales document number selection, and loops through the retrieved data to call the BAPI to create or update material master records, displaying any error messages.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

Bapi for extending material for plant and storage

type-pools : slis.
tables : vbap.

TYPES : BEGIN OF T1,
  VBELN TYPE VBAP-VBELN,
  WERKS TYPE VBAP-WERKS,
  END OF T1.

TYPES : BEGIN OF T2,
  WERKS TYPE T001L-WERKS,
  LGORT TYPE T001L-LGORT,
END OF T2.

types : BEGIN OF ty_popup,
  CHECKBOX(1),
  WERKS type T001L-werks,
  LGORT type T001L-lgort,
  END OF ty_popup.

DATA : IT_T1 TYPE TABLE OF T1,
      WA_T1 LIKE LINE OF IT_T1.

DATA : IT_T2 TYPE TABLE OF T2,
      WA_T2 LIKE LINE OF IT_T2.

DATA : IT_T3 TYPE TABLE OF mard,
      WA_T3 LIKE LINE OF IT_T3.

data : it_pop type TABLE OF ty_popup,
      wa_pop type ty_popup.

DATA : IT_FCAT TYPE SLIS_T_FIELDCAT_ALV,
      WA_FCAT LIKE LINE OF IT_FCAT.

DATA : IT_BOM TYPE TABLE OF YBOM1,
      WA_BOM LIKE LINE OF IT_BOM.
DATA : IT_BOM1 TYPE TABLE OF YBOM1,
      WA_BOM1 LIKE LINE OF IT_BOM.

data : it_VBAP type TABLE OF vbap,
      wa_VBAP like line of it_VBAP.

*****************************declearation for bapi

DATA: v_vbeln            LIKE vbak-vbeln.

DATA : HEADDATA             LIKE BAPIMATHEAD,
      CLIENTDATA            LIKE BAPI_MARA,
      CLIENTDATAX           LIKE BAPI_MARAX,
      PLANTDATA             LIKE BAPI_MARC,
      PLANTDATAX            LIKE BAPI_MARCX,
      STORAGELOCATIONDATA   LIKE BAPI_MARD,
      STORAGELOCATIONDATAX  LIKE BAPI_MARDX.
DATA:  WA_RETURN            TYPE  BAPIRET2,
      IT_RETURN            TYPE TABLE OF BAPIRET2.
DATA:  WA_message            TYPE  BAPIRET2,
      IT_message            TYPE TABLE OF BAPIRET2,
        ls_fieldcatlog TYPE slis_fieldcat_alv,
    lt_fieldcatlog TYPE slis_t_fieldcat_alv.
*******************************************************

SELECTION-SCREEN BEGIN OF BLOCK B1 WITH FRAME.
PARAMETERS : p_vbeln type vbap-vbeln.
SELECTION-SCREEN END OF BLOCK B1.

AT SELECTION-SCREEN OUTPUT.
  set PF-STATUS 'ZSTATE'.

AT SELECTION-SCREEN .
  PERFORM GET_DATA.

FORM GET_DATA .
  CASE SY-UCOMM.
    WHEN 'POPUP'.
      SELECT VBELN WERKS FROM VBAP INTO CORRESPONDING FIELDS OF TABLE IT_T1
        WHERE VBELN = P_VBELN.
      IF IT_T1 IS NOT INITIAL.
        SELECT WERKS LGORT FROM T001L INTO CORRESPONDING FIELDS OF TABLE IT_T2
          FOR ALL ENTRIES IN IT_T1
          WHERE WERKS = IT_T1-WERKS.
      ENDIF.
      SELECT  matnr FROM YBOM1 INTO CORRESPONDING FIELDS OF TABLE
        it_bom WHERE vbeln = p_vbeln.

      if it_t2 is not INITIAL.
        select * from mard into CORRESPONDING FIELDS OF table it_t3 FOR ALL ENTRIES IN it_t2 w
here lgort = it_t2-lgort and werks = it_t2-werks.
      endif.
      loop at it_t2 into wa_t2.
        WA_POP-WERKS = WA_T2-WERKS.
        WA_POP-LGORT = WA_T2-LGORT.
        APPEND WA_POP TO IT_POP.
      ENDLOOP.

      perform display_popup.
      PERFORM GET_BAPI.

  ENDCASE.
ENDFORM.                    " GET_DATA

FORM DISPLAY_POPUP.
*  CLEAR : WA_FCAT.
*  WA_FCAT-COL_POS = '1'.
*  WA_FCAT-FIELDNAME = 'CHECKBOX'.
**WA_FCAT-TABNAME   = 'IT_POP'.
*  WA_FCAT-SELTEXT_M = 'CHECKBOX'.
*  APPEND WA_FCAT TO IT_FCAT.

  CLEAR : WA_FCAT.
  WA_FCAT-COL_POS = '2'.
  WA_FCAT-FIELDNAME = 'WERKS'.
*WA_FCAT-TABNAME   = 'IT_POP'.
  WA_FCAT-SELTEXT_M = 'PLANT NO'.
  APPEND WA_FCAT TO IT_FCAT.

  CLEAR : WA_FCAT.
  WA_FCAT-COL_POS = '1'.
  WA_FCAT-FIELDNAME = 'LGORT'.
*WA_FCAT-TABNAME   = 'IT_POP'.
  WA_FCAT-SELTEXT_M = 'STORAGE LOCATION'.
  APPEND WA_FCAT TO IT_FCAT.

  CALL FUNCTION 'REUSE_ALV_POPUP_TO_SELECT'
    EXPORTING
*     I_TITLE              =
*     I_SELECTION          = 'X'
*     I_ALLOW_NO_SELECTION =
      I_ZEBRA              = 'X'
*     I_SCREEN_START_COLUMN         = 0
*     I_SCREEN_START_LINE  = 0
*     I_SCREEN_END_COLUMN  = 0
*     I_SCREEN_END_LINE    = 0
      I_CHECKBOX_FIELDNAME = 'CHECKBOX'
*     I_LINEMARK_FIELDNAME =
*     I_SCROLL_TO_SEL_LINE = 'X'
      I_TABNAME            = 'IT_POP'
      IT_FIELDCAT          = IT_FCAT
    TABLES
      T_OUTTAB             = IT_POP.

  REFRESH IT_FCAT.

ENDFORM.                    " DISPLAY_POPUP

* Sales document type
FORM GET_BAPI.

    LOOP AT IT_POP INTO WA_POP WHERE CHECKBOX = 'X'.
      PLANTDATA-PLANT                      = Wa_pop-werks.
      PLANTDATAX-PLANT                     = wa_pop-werks.

      Storagelocationdata-plant            = Wa_pop-werks.
      StoragelocationdataX-plant           = Wa_pop-werks.

      Storagelocationdata-STGE_LOC         = WA_POP-LGORT.
      STORAGELOCATIONDATAX-STGE_LOC        = wa_pop-lgort.
    ENDLOOP.

      LOOP AT IT_T3 INTO WA_T3 where matnr is NOT INITIAL and werks = wa_pop-werks and lgort 
= wa_pop-lgort.
        READ TABLE IT_BOM INTO WA_BOM WITH KEY MATNR = WA_T3-MATNR.
        if sy-subrc eq 0.
          WA_BOM1-MATNR = WA_BOM-MATNR.
          APPEND WA_BOM1 TO IT_BOM1.
          clear wa_bom.
        endif.
      ENDLOOP.

  loop at it_bom1 into wa_bom1 where matnr is NOT INITIAL.
    clear wa_return.
    Headdata-MATERIAL = wa_bom1-matnr.
    CLEAR wa_bom1.
    CALL FUNCTION 'BAPI_MATERIAL_SAVEDATA'
      EXPORTING
        HEADDATA             = HEADDATA
*       CLIENTDATA           = CLIENTDATA
*       CLIENTDATAX          = CLIENTDATAX
        PLANTDATA            = PLANTDATA
        PLANTDATAX           = PLANTDATAX
*       FORECASTPARAMETERS   =
*       FORECASTPARAMETERSX  =
*       PLANNINGDATA         =
*       PLANNINGDATAX        =
        STORAGELOCATIONDATA  = STORAGELOCATIONDATA
        STORAGELOCATIONDATAX = STORAGELOCATIONDATAX
*       VALUATIONDATA        =
*       VALUATIONDATAX       =
*       WAREHOUSENUMBERDATA  =
*       WAREHOUSENUMBERDATAX =
*       SALESDATA            =
*       SALESDATAX           =
*       STORAGETYPEDATA      =
*       STORAGETYPEDATAX     =
*       FLAG_ONLINE          = ' '
*       FLAG_CAD_CALL        = ' '
*       NO_DEQUEUE           = ' '
*       NO_ROLLBACK_WORK     = ' '
*       AFS_HEADDATA         =
*       AFS_CLIENTDATA       =
*       AFS_CLIENTDATAX      =
*       AFS_PLANTDATA        =
*       AFS_PLANTDATAX       =
*       AFS_SALESDATA        =
*       AFS_SALESDATAX       =
      IMPORTING
        RETURN               = WA_return
*   TABLES
*       MATERIALDESCRIPTION  =
*       UNITSOFMEASURE       =
*       UNITSOFMEASUREX      =
*       INTERNATIONALARTNOS  =
*       MATERIALLONGTEXT     =
*       TAXCLASSIFICATIONS   =
*       RETURNMESSAGES       =
*       PRTDATA              =
*       PRTDATAX             =
*       EXTENSIONIN          =
*       EXTENSIONINX         =
*       SKU_UNITSOFMEASURE   =
*       SKU_INTERNATIONALARTNOS        =
*       SKU_PLANTDATA_MRP    =
*       SKU_PLANTDATA_VALUATION        =
*       SKU_PALLETIZATION_WM =
*       SKU_STRATEGIES_WM    =
*       SKU_CAPUSAGE_WM      =
*       SKU_STORAGETYPEDATA  =
*       AFS_SEASONDATA       =
*       SKU_SALESDATA        =
*       AFS_QUOTACATEGORIES  =
*       SKU_COMM_CODES       =
*       AFS_RETAIL_DATA      =
*       SKU_GROUP_PROD_VERSIONS        =
*       SKU_PLANTDATA_VALUATIONX       =
*       SKU_PLANTDATA_MRPX   =
*       SKU_PALLETIZATION_WMX          =
*       SKU_STRATEGIES_WMX   =
*       SKU_CAPUSAGE_WMX     =
*       SKU_STORAGETYPEDATAX =
*       SKU_SALESDATAX       =
*       SKU_COMM_CODESX      =
*       SKU_UNITSOFMEASUREX  =
      .
        APPEND WA_RETURN TO IT_RETURN.
        loop at it_return into wa_return WHERE type = 'E'.
        move wa_return to wa_message..
        CONCATENATE Headdata-MATERIAL wa_message-message into wa_message-message SEPAR
ATED BY '/'.
        APPEND wa_message to it_message.
        ENDLOOP.

  ENDLOOP.
  if it_message is INITIAL .
      MESSAGE 'MATERIAL created' TYPE 'I'.
   else.

  ls_fieldcatlog-row_pos   = '1'.
  ls_fieldcatlog-col_pos   = '1'.
  ls_fieldcatlog-fieldname = 'TYPE'.
    ls_fieldcatlog-OUTPUTLEN = 15.
*  ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
  ls_fieldcatlog-seltext_m = 'Message Type'.
  APPEND ls_fieldcatlog TO lt_fieldcatlog.
  CLEAR ls_fieldcatlog.

  ls_fieldcatlog-row_pos   = '1'.
  ls_fieldcatlog-col_pos   = '2'.
  ls_fieldcatlog-OUTPUTLEN = 80.
  ls_fieldcatlog-fieldname = 'MESSAGE'.
*  ls_fieldcatlog-tabname   = 'IT_DISPLAY'.
  ls_fieldcatlog-seltext_m = 'Message'.
  APPEND ls_fieldcatlog TO lt_fieldcatlog.
  CLEAR ls_fieldcatlog.

CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
 EXPORTING
*   I_INTERFACE_CHECK                 = ' '
*   I_BYPASSING_BUFFER                = ' '
*   I_BUFFER_ACTIVE                   = ' '
    I_CALLBACK_PROGRAM                = sy-repid
*   I_CALLBACK_PF_STATUS_SET          = ' '
*   I_CALLBACK_USER_COMMAND           = ' '
*   I_CALLBACK_TOP_OF_PAGE            = ' '
*   I_CALLBACK_HTML_TOP_OF_PAGE       = ' '
*   I_CALLBACK_HTML_END_OF_LIST       = ' '
*   I_STRUCTURE_NAME                  =
*   I_BACKGROUND_ID                   = ' '
    I_GRID_TITLE                      = 'Result'
*   I_GRID_SETTINGS                   =
*   IS_LAYOUT                         =
    IT_FIELDCAT                       = lt_fieldcatlog
*   IT_EXCLUDING                      =
*   IT_SPECIAL_GROUPS                 =
*   IT_SORT                           =
*   IT_FILTER                         =
*   IS_SEL_HIDE                       =
*   I_DEFAULT                         = 'X'
*   I_SAVE                            = ' '
*   IS_VARIANT                        =
*   IT_EVENTS                         =
*   IT_EVENT_EXIT                     =
*   IS_PRINT                          =
*   IS_REPREP_ID                      =
   I_SCREEN_START_COLUMN             = 10
   I_SCREEN_START_LINE               = 20
   I_SCREEN_END_COLUMN               = 100
   I_SCREEN_END_LINE                 = 40
*   I_HTML_HEIGHT_TOP                 = 0
*   I_HTML_HEIGHT_END                 = 0
*   IT_ALV_GRAPHICS                   =
*   IT_HYPERLINK                      =
*   IT_ADD_FIELDCAT                   =
*   IT_EXCEPT_QINFO                   =
*   IR_SALV_FULLSCREEN_ADAPTER        =
* IMPORTING
*   E_EXIT_CAUSED_BY_CALLER           =
*   ES_EXIT_CAUSED_BY_USER            =
  TABLES
    T_OUTTAB                          = it_message
 EXCEPTIONS
   PROGRAM_ERROR                     = 1
   OTHERS                            = 2
          .
IF SY-SUBRC <> 0.
* Implement suitable error handling here
ENDIF.

    ENDIF.

*ELSE.
*  MESSAGE 'PLEASE SELECT ATLEAST ONE RECORD' TYPE 'I'.
*ENDIF.
*  endif.

refresh it_fcat.
ENDFORM.

You might also like