ALV
Hello ,
I am facing problem while working on ALV report , requirement is to select multiple records from ALV list and pass them to trasaction VKM3 . which is a credit report. For making more clear , i am pasting my code also . Hope will get any clue .
Thanks in advance
Samir
REPORT ZSDIS_MASTER_SALES_ORDER_R.
* Include containing Work tables and data variables used.
INCLUDE ZSDIS_MASTER_SALES_ORDER_I.
*Initialization
INITIALIZATION.
MOVE SY-REPID TO W_REPID.
CLEAR W_VARIANT1.
W_VARIANT1-REPORT = W_REPID.
* get default variant
W_VARIANT = W_VARIANT1.
CALL FUNCTION 'REUSE_ALV_VARIANT_DEFAULT_GET'
EXPORTING
I_SAVE = C_A
CHANGING
CS_VARIANT = W_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 0.
P_VARI = W_VARIANT-VARIANT.
ENDIF.
* Get the names of already existing Variant names
AT SELECTION-SCREEN ON VALUE-REQUEST FOR P_VARI.
* Get variant on F4
PERFORM F4_FOR_VARIANT.
* Check thta the variant exists.
AT SELECTION-SCREEN ON P_VARI.
* check for the variant
PERFORM CHK_VARIANT.
* Checking on Block MBLOCK of Selection Screen.
AT SELECTION-SCREEN ON BLOCK MBLOCK.
W_PERCENTAGE = 5.
W_DISPLAY_TEXT = TEXT-007 .
PERFORM SET_PROGRESS USING W_PERCENTAGE W_DISPLAY_TEXT.
* Checking Authorizations for Sales Organization,
* Distribution Channel and Division.
PERFORM AUTHORITY_CHECK USING C_AUTH_OBJ.
* Checking for Partner Functions Selections is not blank and < 7.
IF NOT S_PARVW[] IS INITIAL.
SORT S_PARVW ASCENDING BY LOW.
DELETE ADJACENT DUPLICATES FROM S_PARVW.
DESCRIBE TABLE S_PARVW LINES W_LN.
IF W_LN GT 7.
MESSAGE E208(00)
WITH TEXT-001.
ENDIF.
ENDIF.
* Checking if user has entered values for Customer Number 1/2/3
* then the corresponding Partner Function 1/2/3 is required.
IF NOT S_KUNN1[] IS INITIAL AND S_PARV1[] IS INITIAL.
CONCATENATE 'Please enter Partner function '(002) C_1 INTO W_MSG.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
IF NOT S_KUNN2[] IS INITIAL AND S_PARV2[] IS INITIAL.
CONCATENATE 'Please enter Partner function '(002) C_2 INTO W_MSG.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
IF NOT S_KUNN3[] IS INITIAL AND S_PARV3[] IS INITIAL.
CONCATENATE 'Please enter Partner function '(002) C_3 INTO W_MSG.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
* Start Selction.
START-OF-SELECTION.
IF NOT P_BLOCK IS INITIAL.
R_BLOCK-SIGN = C_I.
R_BLOCK-OPTION = C_EQ.
R_BLOCK-LOW = C_B.
APPEND R_BLOCK.
R_BLOCK-SIGN = C_I.
R_BLOCK-OPTION = C_EQ.
R_BLOCK-LOW = C_C.
APPEND R_BLOCK.
ENDIF.
* If Delivery Status is All then read the domain values from
* database and populate the range R_CSTAT for further processing.
IF NOT P_RDALL IS INITIAL.
REFRESH R_CSTAT.
SELECT DOMVALUE_L INTO R_CSTAT-LOW FROM DD07L
WHERE DOMNAME = C_STATV.
R_CSTAT-SIGN = C_I.
R_CSTAT-OPTION = C_EQ.
APPEND R_CSTAT.
ENDSELECT.
ENDIF.
IF NOT P_RDCLS IS INITIAL.
REFRESH R_CSTAT.
R_CSTAT-SIGN = C_I.
R_CSTAT-OPTION = C_EQ.
R_CSTAT-LOW = C_C.
APPEND R_CSTAT.
ENDIF.
IF NOT P_RDOPN IS INITIAL.
REFRESH R_CSTAT.
R_CSTAT-SIGN = C_E.
R_CSTAT-OPTION = C_EQ.
R_CSTAT-LOW = C_C.
APPEND R_CSTAT.
ENDIF.
* Set the Work Table Name for processing and displaying list.
W_TNAME = C_T_HDAT.
* Generate the Field Catelog with ref. to W_TNAME.
PERFORM FIELD_CATALOG_BUILD TABLES TAB_FIELDCAT.
* Get the ALV Grid Events.
PERFORM EVENTTAB_BUILD USING TAB_EVENTS.
* Retrieve the basic data required for processing list as per
* user selections on the selection screen.
PERFORM GET_BASIC_DATA.
* Display the Sales Orders List using Work Table Name -
* Whether Sales Order Header / Sales Order Items.
PERFORM DISPLAY_LIST USING W_TNAME.
* Free the memory occupied by Work Tables.
PERFORM FREE_WORK_TABLES.
END-OF-SELECTION.
*Eject
*---------------------------------------------------------------------*
* FORM AUTHORITY_CHECK *
*---------------------------------------------------------------------*
* Check whether user is authorized to run transaction VKM3 *
* ----> P_CHECK Transaction code
*---------------------------------------------------------------------*
FORM AUTHORITY_CHECK USING P_CHECK.
CASE P_CHECK.
WHEN C_VKM3.
CALL FUNCTION 'AUTHORITY_CHECK_TCODE'
EXPORTING
TCODE = 'VKM3'
EXCEPTIONS
OK = 1
NOT_OK = 2
OTHERS = 3.
IF SY-SUBRC <> 1.
MESSAGE S208(00)
WITH TEXT-006 .
ENDIF.
WHEN OTHERS.
IF NOT S_VKORG[] IS INITIAL.
LOOP AT S_VKORG.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VKORG' FIELD S_VKORG-LOW
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC NE 0.
CONCATENATE TEXT-011
S_VKORG-LOW INTO W_MSG SEPARATED BY SPACE.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT S_VTWEG[] IS INITIAL.
LOOP AT S_VTWEG.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'VTWEG' FIELD S_VTWEG-LOW
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC NE 0.
CONCATENATE TEXT-011
S_VTWEG-LOW INTO W_MSG SEPARATED BY SPACE.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
ENDLOOP.
ENDIF.
IF NOT S_SPART[] IS INITIAL.
LOOP AT S_SPART.
AUTHORITY-CHECK OBJECT 'V_VBAK_VKO'
ID 'SPART' FIELD S_SPART-LOW
ID 'ACTVT' FIELD '03'.
IF SY-SUBRC NE 0.
CONCATENATE TEXT-011
S_SPART-LOW INTO W_MSG SEPARATED BY SPACE.
MESSAGE E208(00) WITH W_MSG.
ENDIF.
ENDLOOP.
ENDIF.
ENDCASE.
ENDFORM. "AUTHORITY_CHECK
*Eject
*---------------------------------------------------------------------*
* FORM FIELD_CATALOG_BUILD *
*---------------------------------------------------------------------*
* Building Field Catelog for Header / Item List *
*---------------------------------------------------------------------*
* --> T_FIELDCAT *
*---------------------------------------------------------------------*
FORM FIELD_CATALOG_BUILD TABLES
T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
REFRESH : T_FIELDCAT, TAB_FIELDCAT.
IF W_TNAME = C_T_HDAT.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-CPROG
I_INTERNAL_TABNAME = C_T_HDAT
I_INCLNAME = C_INCLUDE
CHANGING
CT_FIELDCAT = T_FIELDCAT[].
SORT T_FIELDCAT ASCENDING BY FIELDNAME.
** Add the subtotal Functionality and change the Column Descptions
** for Several fields.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = 'KLIMK'.
IF SY-SUBRC = 0.
T_FIELDCAT-DO_SUM = C_X.
T_FIELDCAT-JUST = C_R.
T_FIELDCAT-REF_TABNAME = 'KNKK'.
T_FIELDCAT-REF_FIELDNAME = 'KLIMK'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KLPRZ.
IF SY-SUBRC = 0.
T_FIELDCAT-DO_SUM = C_X.
T_FIELDCAT-JUST = C_R.
T_FIELDCAT-REF_TABNAME = 'VBAP'. "C_RF02L.
T_FIELDCAT-REF_FIELDNAME = 'NETWR'. "'KLPRZ'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = 'MWSBP'.
IF SY-SUBRC = 0.
T_FIELDCAT-DO_SUM = C_X.
T_FIELDCAT-JUST = C_R.
T_FIELDCAT-REF_TABNAME = 'KOMP'.
T_FIELDCAT-REF_FIELDNAME = 'MWSBP'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = 'NETWR'.
IF SY-SUBRC = 0.
T_FIELDCAT-DO_SUM = 'X'.
T_FIELDCAT-JUST = 'R'.
T_FIELDCAT-REF_TABNAME = 'VBAK'.
T_FIELDCAT-REF_FIELDNAME = 'NETWR'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
** Change the headings of some of the fields.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_BEZEI.
IF SY-SUBRC = 0.
T_FIELDCAT-SELTEXT_L = C_SATY.
T_FIELDCAT-SELTEXT_M = C_SATY.
T_FIELDCAT-SELTEXT_S = C_SATY.
T_FIELDCAT-REPTEXT_DDIC = C_SATY.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_SCDES.
IF SY-SUBRC = 0.
T_FIELDCAT-SELTEXT_L = C_SCDESR.
T_FIELDCAT-SELTEXT_M = C_SCDESR.
T_FIELDCAT-SELTEXT_S = C_SCDESR.
T_FIELDCAT-REPTEXT_DDIC = 'SC Description'.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_DEL.
IF SY-SUBRC = 0.
T_FIELDCAT-NO_OUT = C_X.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_SONAM.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_SORG."
T_FIELDCAT-SELTEXT_L = C_SORG.
T_FIELDCAT-SELTEXT_M = C_SORG.
T_FIELDCAT-SELTEXT_S = C_SORG.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = W_DCNAM.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_DCHL.
T_FIELDCAT-SELTEXT_L = C_DCHL.
T_FIELDCAT-SELTEXT_M = C_DCHL.
T_FIELDCAT-SELTEXT_S = C_DCHL.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_DVNAM.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_DVN.
T_FIELDCAT-SELTEXT_L = C_DVN.
T_FIELDCAT-SELTEXT_M = C_DVN.
T_FIELDCAT-SELTEXT_S = C_DVN.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_NAME1.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_SOLD.
T_FIELDCAT-SELTEXT_L = C_SOLD.
T_FIELDCAT-SELTEXT_M = C_SOLD.
T_FIELDCAT-SELTEXT_S = C_SOLD.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN1.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST1.
T_FIELDCAT-SELTEXT_L = C_CUST1.
T_FIELDCAT-SELTEXT_M = C_CUST1.
T_FIELDCAT-SELTEXT_S = C_CUST1.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_BLDAT.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC =
T_FIELDCAT-SELTEXT_L = C_BLDATE.
T_FIELDCAT-SELTEXT_M = C_BLDATE.
T_FIELDCAT-SELTEXT_S = C_BLDATE.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM1.
IF SY-SUBRC = 0.
T_FIELDCAT-SELTEXT_L = C_CUST1NAME.
T_FIELDCAT-SELTEXT_M = C_CUST1NAME.
T_FIELDCAT-SELTEXT_S = C_CUST1NAME.
T_FIELDCAT-REPTEXT_DDIC = C_CUST1NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN2.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST2.
T_FIELDCAT-SELTEXT_L = C_CUST2.
T_FIELDCAT-SELTEXT_M = C_CUST2.
T_FIELDCAT-SELTEXT_S = C_CUST2.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM2.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST2NAME.
T_FIELDCAT-SELTEXT_L = C_CUST2NAME.
T_FIELDCAT-SELTEXT_M = C_CUST2NAME.
T_FIELDCAT-SELTEXT_S = C_CUST2NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN3.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST3.
T_FIELDCAT-SELTEXT_L = C_CUST3.
T_FIELDCAT-SELTEXT_M = C_CUST3.
T_FIELDCAT-SELTEXT_S = C_CUST3.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM3.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST3NAME.
T_FIELDCAT-SELTEXT_L = C_CUST3NAME.
T_FIELDCAT-SELTEXT_M = C_CUST3NAME.
T_FIELDCAT-SELTEXT_S = C_CUST3NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN4.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST4.
T_FIELDCAT-SELTEXT_L = C_CUST4.
T_FIELDCAT-SELTEXT_M = C_CUST4.
T_FIELDCAT-SELTEXT_S = C_CUST4.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM4.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST4NAME.
T_FIELDCAT-SELTEXT_L = C_CUST4NAME.
T_FIELDCAT-SELTEXT_M = C_CUST4NAME.
T_FIELDCAT-SELTEXT_S = C_CUST4NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN5.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST5.
T_FIELDCAT-SELTEXT_L = C_CUST5.
T_FIELDCAT-SELTEXT_M = C_CUST5.
T_FIELDCAT-SELTEXT_S = C_CUST5.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM5.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST5NAME.
T_FIELDCAT-SELTEXT_L = C_CUST5NAME.
T_FIELDCAT-SELTEXT_M = C_CUST5NAME.
T_FIELDCAT-SELTEXT_S = C_CUST5NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN6.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST6.
T_FIELDCAT-SELTEXT_L = C_CUST6.
T_FIELDCAT-SELTEXT_M = C_CUST6.
T_FIELDCAT-SELTEXT_S = C_CUST7.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM6.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST6NAME.
T_FIELDCAT-SELTEXT_L = C_CUST6NAME.
T_FIELDCAT-SELTEXT_M = C_CUST6NAME.
T_FIELDCAT-SELTEXT_S = C_CUST6NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KUNN7.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST7.
T_FIELDCAT-SELTEXT_L = C_CUST7.
T_FIELDCAT-SELTEXT_M = C_CUST7.
T_FIELDCAT-SELTEXT_S = C_CUST7.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CNAM7.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST7NAME.
T_FIELDCAT-SELTEXT_L = C_CUST7NAME.
T_FIELDCAT-SELTEXT_M = C_CUST7NAME.
T_FIELDCAT-SELTEXT_S = C_CUST7NAME.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P1.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST1PT.
T_FIELDCAT-SELTEXT_L = C_CUST1PT.
T_FIELDCAT-SELTEXT_M = C_CUST1PT.
T_FIELDCAT-SELTEXT_S = C_CUST1PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P2.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST2PT.
T_FIELDCAT-SELTEXT_M = C_CUST2PT.
T_FIELDCAT-SELTEXT_S = C_CUST2PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P3.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST3PT.
T_FIELDCAT-SELTEXT_L = C_CUST3PT.
T_FIELDCAT-SELTEXT_M = C_CUST3PT.
T_FIELDCAT-SELTEXT_S = C_CUST3PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P4.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST4PT.
T_FIELDCAT-SELTEXT_L = C_CUST4PT.
T_FIELDCAT-SELTEXT_M = C_CUST4PT.
T_FIELDCAT-SELTEXT_S = C_CUST4PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P5.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST5PT.
T_FIELDCAT-SELTEXT_L = C_CUST5PT.
T_FIELDCAT-SELTEXT_M = C_CUST5PT.
T_FIELDCAT-SELTEXT_S = C_CUST5PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P6.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST6PT.
T_FIELDCAT-SELTEXT_L = C_CUST6PT.
T_FIELDCAT-SELTEXT_M = C_CUST6PT.
T_FIELDCAT-SELTEXT_S = C_CUST6PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_P7.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CUST7PT.
T_FIELDCAT-SELTEXT_L = C_CUST7PT.
T_FIELDCAT-SELTEXT_M = C_CUST7PT.
T_FIELDCAT-SELTEXT_S = C_CUST7PT.
T_FIELDCAT-KEY = ' '.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_VSBED.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_COND..
T_FIELDCAT-SELTEXT_L = C_COND.
T_FIELDCAT-SELTEXT_M = C_COND.
T_FIELDCAT-SELTEXT_S = C_COND.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_SCDES.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_SCDESR1..
T_FIELDCAT-SELTEXT_L = C_SCDESR1.
T_FIELDCAT-SELTEXT_M = C_SCDESR1.
T_FIELDCAT-SELTEXT_S = C_SCDESR1.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_ERDAT.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_ORDC.
T_FIELDCAT-SELTEXT_L = C_ORDC.
T_FIELDCAT-SELTEXT_M = C_ORDC.
T_FIELDCAT-SELTEXT_S = C_ORDC.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_VDATU.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_REQDT..
T_FIELDCAT-SELTEXT_L = C_REQDT.
T_FIELDCAT-SELTEXT_M = C_REQDT.
T_FIELDCAT-SELTEXT_S = C_REQDT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_LIFSK.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_DELVB..
T_FIELDCAT-SELTEXT_L = C_DELVB.
T_FIELDCAT-SELTEXT_M = C_DELVB.
T_FIELDCAT-SELTEXT_S = C_DELVB.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_FAKSK.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_BILBK..
T_FIELDCAT-SELTEXT_L = C_BILBK.
T_FIELDCAT-SELTEXT_M = C_BILBK.
T_FIELDCAT-SELTEXT_S = C_BILBK.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = 'BBDES'.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_BILBLDESCR.
T_FIELDCAT-SELTEXT_L = C_BILBLDESCR.
T_FIELDCAT-SELTEXT_M = C_BILBLDESCR.
T_FIELDCAT-SELTEXT_S = C_BILBLDESCR.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KLPRZ.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CRDLMT.
T_FIELDCAT-SELTEXT_L = C_CRDLMT.
T_FIELDCAT-SELTEXT_M = C_CRDLMT.
T_FIELDCAT-SELTEXT_S = C_CRDLMT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_ZTERM.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_PYMT.
T_FIELDCAT-SELTEXT_L = C_PYMT.
T_FIELDCAT-SELTEXT_M = C_PYMT.
T_FIELDCAT-SELTEXT_S = C_PYMT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_CMFRE.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_RLSDT.
T_FIELDCAT-SELTEXT_L = C_RLSDT.
T_FIELDCAT-SELTEXT_M = C_RLSDT.
T_FIELDCAT-SELTEXT_S = C_RLSDT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
ELSE.
CALL FUNCTION 'REUSE_ALV_FIELDCATALOG_MERGE'
EXPORTING
I_PROGRAM_NAME = SY-CPROG
I_INTERNAL_TABNAME = C_T_IDAT
I_INCLNAME = C_INCLUDE
CHANGING
CT_FIELDCAT = T_FIELDCAT[].
SORT T_FIELDCAT ASCENDING BY FIELDNAME.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_NAME1 BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_FIELDCAT-SELTEXT_L = C_WERKS.
T_FIELDCAT-SELTEXT_M = C_WERKS.
T_FIELDCAT-SELTEXT_S = C_WERKS.
T_FIELDCAT-REPTEXT_DDIC = C_WERKS.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
ENDIF.
ENDFORM. "FIELD_CATALOG_BUILD
*Eject
*---------------------------------------------------------------------*
* FORM EVENTTAB_BUILD *
*---------------------------------------------------------------------*
* Getting all the events available for ALV Grid Control *
*---------------------------------------------------------------------*
* --> IT_EVENTS *
*---------------------------------------------------------------------*
FORM EVENTTAB_BUILD USING IT_EVENTS TYPE SLIS_T_EVENT.
DATA: L_EVENT TYPE SLIS_ALV_EVENT.
REFRESH: TAB_EVENTS.
CALL FUNCTION 'REUSE_ALV_EVENTS_GET'
EXPORTING
I_LIST_TYPE = 0
IMPORTING
ET_EVENTS = IT_EVENTS.
SORT IT_EVENTS ASCENDING BY NAME.
READ TABLE IT_EVENTS WITH KEY NAME = SLIS_EV_TOP_OF_LIST
INTO L_EVENT BINARY SEARCH.
IF SY-SUBRC = 0.
MOVE C_TOP_OF_LIST TO L_EVENT-FORM.
APPEND L_EVENT TO IT_EVENTS.
ENDIF.
ENDFORM. "EVENTTAB_BUILD.
*Eject
*---------------------------------------------------------------------*
* FORM GET_BASIC_DATA *
*---------------------------------------------------------------------*
* Fetching basic data from various sales tables and populating work *
* tables for further processing. *
*---------------------------------------------------------------------*
FORM GET_BASIC_DATA.
W_PERCENTAGE = 10.
W_DISPLAY_TEXT = TEXT-008.
PERFORM SET_PROGRESS USING W_PERCENTAGE W_DISPLAY_TEXT.
SELECT VBELN AUART VKORG VTWEG SPART VSBED ERDAT VDATU NETWR LIFSK
FAKSK CMFRE KUNNR
INTO CORRESPONDING FIELDS OF TABLE T_VBAK
FROM VBAK
WHERE VKORG IN S_VKORG
AND VTWEG IN S_VTWEG
AND SPART IN S_SPART
AND ERDAT IN S_ERDAT
AND AUART IN S_AUART
AND VDATU IN S_VDATU
AND VSBED IN S_VSBED
AND ERNAM IN S_UNAME.
PERFORM CHECK_CUSTOMER_PF.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE T_VBAP
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND PSTYV IN S_PSTYV
AND MATNR IN S_MATNR
AND PRODH IN S_PRODH
AND WERKS IN S_WERKS
AND LPRIO IN S_LPRIO.
* START CHANGES BY VIJAY "001
SELECT * FROM VBUK INTO CORRESPONDING FIELDS OF TABLE T_VBUK_B
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND CMGST EQ C_B.
LOOP AT T_VBUK_B.
T_VBUK1-VBELN = T_VBUK_B-VBELN.
APPEND T_VBUK1.
CLEAR T_VBUK1.
ENDLOOP.
* LOOP AT T_VBUK_B.
* CALL FUNCTION 'CONVERSION_EXIT_ALPHA_INPUT'
* EXPORTING
* INPUT = T_VBUK_B-VBELN
* IMPORTING
* OUTPUT = T_VBUK1-VBELN.
*
* APPEND T_VBUK1.
* CLEAR T_VBUK1.
*
* ENDLOOP.
SELECT * FROM CDHDR INTO CORRESPONDING FIELDS OF TABLE T_CDHDR
FOR ALL ENTRIES IN T_VBUK1
WHERE OBJECTID = T_VBUK1-VBELN
AND OBJECTCLAS = C_VERKBELEG.
SELECT * FROM CDPOS INTO CORRESPONDING FIELDS OF TABLE T_CDPOS
FOR ALL ENTRIES IN T_CDHDR
WHERE OBJECTID = T_CDHDR-OBJECTID
AND OBJECTCLAS = C_VERKBELEG
AND CHANGENR = T_CDHDR-CHANGENR
AND TABNAME = C_VBUK
AND FNAME = C_CMGST
AND CHNGIND = C_U.
* LOOP AT T_CDPOS WHERE VALUE_NEW EQ C_B.
* READ TABLE T_CDHDR WITH KEY OBJECTID EQ T_CDPOS-OBJECTID
* OBJECTCLAS EQ C_VERKBELEG
* CHANGENR EQ T_CDPOS-CHANGENR.
* IF SY-SUBRC EQ 0.
*
* ENDIF.
*
* ENDLOOP.
* END CHANGES BY VIJAY ON 31/01/03.
* Checking on Blocked for Credit Control Option.
IF NOT R_BLOCK[] IS INITIAL.
SELECT * FROM VBUK INTO CORRESPONDING FIELDS OF TABLE T_VBUK
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND LFSTK IN R_CSTAT
AND CMGST IN R_BLOCK.
ELSE.
SELECT * FROM VBUK INTO CORRESPONDING FIELDS OF TABLE T_VBUK
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND LFSTK IN R_CSTAT.
ENDIF.
IF NOT S_BSTKD IS INITIAL AND
NOT S_BSARK[] IS INITIAL.
* Checking on Purchase Order and Purchase Order Type.
SELECT * FROM VBKD INTO CORRESPONDING FIELDS OF TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND BSTKD IN S_BSTKD
AND BSARK IN S_BSARK.
ELSEIF NOT S_BSTKD IS INITIAL.
* Checking on Purchase Order.
SELECT * FROM VBKD INTO CORRESPONDING FIELDS OF TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND BSTKD IN S_BSTKD.
IF SY-SUBRC NE 0.
CLEAR T_VBAK.
REFRESH T_VBAK.
ENDIF.
ELSEIF NOT S_BSARK[] IS INITIAL .
* Checking on Purchase Order Type.
SELECT * FROM VBKD INTO CORRESPONDING FIELDS OF TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN
AND BSARK IN S_BSARK.
IF SY-SUBRC NE 0.
CLEAR T_VBAK.
REFRESH T_VBAK.
ENDIF.
ELSE.
* Getting all records from VBKD Table for matching Sales Document.
SELECT * FROM VBKD INTO CORRESPONDING FIELDS OF TABLE T_VBKD
FOR ALL ENTRIES IN T_VBAK
WHERE VBELN = T_VBAK-VBELN.
ENDIF.
W_FIN = STRLEN( S_BSTKD ).
LOOP AT T_VBKD.
IF NOT T_VBKD-BSTKD IN R_BSTKD.
DELETE T_VBKD.
ENDIF.
ENDLOOP.
* Get the customer name from kna1.
SELECT KUNNR NAME1 INTO CORRESPONDING FIELDS OF TABLE T_NAME1
FROM KNA1 FOR ALL ENTRIES IN T_VBAK WHERE
KUNNR = T_VBAK-KUNNR.
LOOP AT T_VBAK.
READ TABLE T_NAME1 WITH KEY KUNNR = T_VBAK-KUNNR.
IF SY-SUBRC = 0.
MOVE T_NAME1-NAME1 TO T_VBAK-NAME1.
MODIFY T_VBAK." INDEX SY-TABIX TRANSPORTING NAME1.
ENDIF.
ENDLOOP.
** Get the Seven Customers and the partner functions from the Sales
SELECT VBELN PARVW KUNNR INTO TABLE T_VBPA FROM VBPA
FOR ALL ENTRIES IN T_VBAK WHERE
VBELN = T_VBAK-VBELN AND
POSNR = '000000'.
SORT T_VBAK ASCENDING BY VBELN.
SORT T_VBAP ASCENDING BY VBELN.
SORT T_VBKD ASCENDING BY VBELN.
SORT T_VBUK ASCENDING BY VBELN.
* SORT T_CDHDR ASCENDING BY OBJECTID CHANGENR.
SORT T_VBPA ASCENDING BY VBELN.
* Building T_HDAT ( Header ) table for displaying List.
LOOP AT T_VBAK.
READ TABLE T_VBAP WITH KEY VBELN = T_VBAK-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
MOVE-CORRESPONDING T_VBAK TO T_HDAT.
* LOOP AT T_CDHDR WHERE OBJECTID = T_VBAK-VBELN.
* T_HDAT-USERNAME = T_CDHDR-USERNAME.
* ENDLOOP.
*
IF NOT T_VBUK[] IS INITIAL.
READ TABLE T_VBUK WITH KEY VBELN = T_VBAK-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-CMPSA = T_VBUK-CMPSA.
T_HDAT-CMPSB = T_VBUK-CMPSB.
T_HDAT-CMPSC = T_VBUK-CMPSC.
T_HDAT-CMPSD = T_VBUK-CMPSD.
T_HDAT-CMPSE = T_VBUK-CMPSE.
T_HDAT-CMPSF = T_VBUK-CMPSF.
T_HDAT-CMPSG = T_VBUK-CMPSG.
T_HDAT-CMPSH = T_VBUK-CMPSH.
T_HDAT-CMPSI = T_VBUK-CMPSI.
T_HDAT-CMPSJ = T_VBUK-CMPSJ.
T_HDAT-CMPSK = T_VBUK-CMPSK.
T_HDAT-CMPSL = T_VBUK-CMPSL.
T_HDAT-CMPSM = T_VBUK-CMPSM.
T_HDAT-CMPS0 = T_VBUK-CMPS0.
T_HDAT-CMPS1 = T_VBUK-CMPS1.
T_HDAT-CMPS2 = T_VBUK-CMPS2.
T_HDAT-CMGST = T_VBUK-CMGST.
IF NOT T_VBKD[] IS INITIAL.
READ TABLE T_VBKD WITH
KEY VBELN = T_VBAK-VBELN BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-BSARK = T_VBKD-BSARK.
T_HDAT-BSTKD = T_VBKD-BSTKD.
T_HDAT-ZTERM = T_VBKD-ZTERM.
T_HDAT-CSTAT = T_VBUK-LFSTK.
APPEND T_HDAT.
ENDIF.
ELSE.
T_HDAT-CSTAT = T_VBUK-LFSTK.
APPEND T_HDAT.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
*
* If Header work table T_HDAT is not blank then build other tables.
IF NOT T_HDAT[] IS INITIAL.
SELECT DISTINCT AUART BEZEI FROM TVAKT
INTO CORRESPONDING FIELDS OF TABLE T_AUART
FOR ALL ENTRIES IN T_HDAT
WHERE AUART = T_HDAT-AUART
AND SPRAS = SY-LANGU.
SELECT DISTINCT VKORG VTEXT FROM TVKOT
INTO CORRESPONDING FIELDS OF TABLE T_VKORG
FOR ALL ENTRIES IN T_HDAT
WHERE VKORG = T_HDAT-VKORG
AND SPRAS = SY-LANGU.
SELECT DISTINCT VTWEG VTEXT FROM TVTWT
INTO CORRESPONDING FIELDS OF TABLE T_VTWEG
FOR ALL ENTRIES IN T_HDAT
WHERE VTWEG = T_HDAT-VTWEG
AND SPRAS = SY-LANGU.
SELECT DISTINCT SPART VTEXT FROM TSPAT
INTO CORRESPONDING FIELDS OF TABLE T_SPART
FOR ALL ENTRIES IN T_HDAT
WHERE SPART = T_HDAT-SPART
AND SPRAS = SY-LANGU.
SELECT DISTINCT VSBED VTEXT FROM TVSBT
INTO CORRESPONDING FIELDS OF TABLE T_VSBED
FOR ALL ENTRIES IN T_HDAT
WHERE VSBED = T_HDAT-VSBED
AND SPRAS = SY-LANGU.
SELECT DISTINCT LIFSP VTEXT FROM TVLST
INTO CORRESPONDING FIELDS OF TABLE T_LIFSP
FOR ALL ENTRIES IN T_HDAT
WHERE LIFSP = T_HDAT-LIFSK
AND SPRAS = SY-LANGU.
SELECT DISTINCT FAKSP VTEXT FROM TVFST
INTO CORRESPONDING FIELDS OF TABLE T_FAKSP
FOR ALL ENTRIES IN T_HDAT
WHERE FAKSP = T_HDAT-FAKSK
AND SPRAS = SY-LANGU.
* Processing the Header Data for displaying List.
PERFORM PROCESS_DATA TABLES TAB_FIELDCAT.
PERFORM GET_CUSTOMER_NAMES TABLES T_HDAT.
SORT T_HDAT ASCENDING BY VBELN.
ENDIF.
ENDFORM. " GET_BASIC_DATA
*Eject
*---------------------------------------------------------------------*
* FORM PROCESS_DATA *
*---------------------------------------------------------------------*
* Processing Header Data Table for other details. *
*---------------------------------------------------------------------*
FORM PROCESS_DATA TABLES T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
FIELD-SYMBOLS : <L_FS>.
W_PERCENTAGE = 60.
W_DISPLAY_TEXT = TEXT-009 .
PERFORM SET_PROGRESS USING W_PERCENTAGE W_DISPLAY_TEXT.
SORT T_AUART ASCENDING BY AUART.
SORT T_VKORG ASCENDING BY VKORG.
SORT T_VTWEG ASCENDING BY VTWEG.
SORT T_SPART ASCENDING BY SPART.
SORT T_VSBED ASCENDING BY VSBED.
SORT T_LIFSP ASCENDING BY LIFSP.
SORT T_FAKSP ASCENDING BY FAKSP.
CLEAR W_CNT1.
LOOP AT T_HDAT.
READ TABLE T_AUART WITH KEY AUART = T_HDAT-AUART BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-BEZEI = T_AUART-BEZEI.
ENDIF.
READ TABLE T_VKORG WITH KEY VKORG = T_HDAT-VKORG BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-SONAM = T_VKORG-VTEXT.
ENDIF.
READ TABLE T_VTWEG WITH KEY VTWEG = T_HDAT-VTWEG BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-DCNAM = T_VTWEG-VTEXT.
ENDIF.
READ TABLE T_SPART WITH KEY SPART = T_HDAT-SPART BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-DVNAM = T_SPART-VTEXT.
ENDIF.
READ TABLE T_VSBED WITH KEY VSBED = T_HDAT-VSBED BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-SCDES = T_VSBED-VTEXT.
ENDIF.
READ TABLE T_LIFSP WITH KEY LIFSP = T_HDAT-LIFSK BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-DBDES = T_LIFSP-VTEXT.
ENDIF.
READ TABLE T_FAKSP WITH KEY FAKSP = T_HDAT-FAKSK BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_HDAT-BBDES = T_FAKSP-VTEXT.
ENDIF.
** To invoke The Parner Functions and Respective customers into T_HDAT.
W_CNT1 = W_CNT1 + 1.
CLEAR T_VBPA_1.
REFRESH T_VBPA_1.
CLEAR T_VBPA_2.
REFRESH T_VBPA_2.
SELECT VBELN PARVW KUNNR INTO TABLE T_VBPA_1 FROM VBPA
WHERE VBELN = T_HDAT-VBELN AND
POSNR = '000000' AND
PARVW IN S_PARVW.
IF SY-SUBRC = 0.
DESCRIBE TABLE T_VBPA_1 LINES W_LIN.
DESCRIBE TABLE S_PARVW LINES W_LIN1.
IF S_PARVW[] IS INITIAL.
W_LIN1 = W_LIN.
ENDIF.
IF W_LIN = W_LIN1.
LOOP AT T_VBPA_1.
W_TABIX1 = SY-TABIX.
IF S_PARVW[] IS INITIAL.
IF SY-TABIX > 7.
EXIT.
ENDIF.
ENDIF.
CONCATENATE 'T_HDAT-KUNN' W_TABIX1 INTO W_FLD1.
CONCATENATE 'T_HDAT-P' W_TABIX1 INTO W_FLD2.
ASSIGN (W_FLD1) TO <FS1>.
ASSIGN (W_FLD2) TO <FS2>.
MOVE T_VBPA_1-KUNNR TO <FS1>.
MOVE T_VBPA_1-PARVW TO <FS2>.
MODIFY T_HDAT INDEX W_CNT1.
ENDLOOP.
IF NOT S_PARVW[] IS INITIAL.
DESCRIBE TABLE S_PARVW LINES W_LIN.
IF W_LIN < 7.
SELECT VBELN POSNR PARVW KUNNR INTO TABLE T_VBPA_2
FROM VBPA
WHERE VBELN = T_HDAT-VBELN AND
POSNR = '000000' .
W_LIN1 = 7 - W_LIN.
LOOP AT T_VBPA_2.
READ TABLE T_VBPA_1 WITH KEY VBELN = T_VBPA_2-VBELN
PARVW = T_VBPA_2-PARVW.
IF SY-SUBRC NE 0.
W_LIN = W_LIN + 1.
IF W_LIN > 7.
EXIT.
ENDIF.
W_TABIX1 = W_LIN.
CONCATENATE 'T_HDAT-KUNN' W_TABIX1 INTO W_FLD1.
CONCATENATE 'T_HDAT-P' W_TABIX1 INTO W_FLD2.
ASSIGN (W_FLD1) TO <FS1>.
ASSIGN (W_FLD2) TO <FS2>.
MOVE T_VBPA_2-KUNNR TO <FS1>.
MOVE T_VBPA_2-PARVW TO <FS2>.
MODIFY T_HDAT INDEX W_CNT1.
ENDIF.
ENDLOOP.
ENDIF.
ENDIF.
ELSE.
MOVE 'X' TO T_HDAT-DEL.
MODIFY T_HDAT INDEX W_CNT1.
ENDIF.
ELSE.
MOVE 'X' TO T_HDAT-DEL.
MODIFY T_HDAT INDEX W_CNT1.
ENDIF.
SELECT SINGLE KUNNR INTO VBPA-KUNNR
FROM VBPA
WHERE VBELN = T_HDAT-VBELN
AND ( PARVW = C_PY OR PARVW = C_RG ) .
SELECT SINGLE KUNNR KKBER CTLPC KLIMK KNKLI SKFOR SSOBL
INTO (KNKK-KUNNR,KNKK-KKBER,KNKK-CTLPC,KNKK-KLIMK,
KNKK-KNKLI,KNKK-SKFOR,KNKK-SSOBL)
FROM KNKK
WHERE KUNNR = VBPA-KUNNR
AND KKBER = T_HDAT-VKORG.
* Calculating Credit Limit Used for the Customer.
IF SY-SUBRC EQ 0.
T_HDAT-KLIMK = KNKK-KLIMK.
PERFORM ERMITTELN_SAUFT IN PROGRAM SAPMF02C
USING KNKK-KNKLI RF02L-SAUFT RF02L-HORDA.
RF02L-OBLIG = KNKK-SKFOR + KNKK-SSOBL + RF02L-SAUFT.
PERFORM AUSSCHOEPFUNGSGRAD_BERECHNEN IN PROGRAM SAPMF02C
USING KNKK-KLIMK RF02L-OBLIG RF02L-KLPRZ.
T_HDAT-KLPRZ = RF02L-KLPRZ.
ENDIF.
* Moving Partner No and Name (dynamically) to the Header Data table.
SORT T_FIELDCAT ASCENDING BY EXPONENT.
LOOP AT S_PARVW.
READ TABLE T_FIELDCAT WITH
KEY EXPONENT = S_PARVW-LOW BINARY SEARCH.
IF SY-SUBRC EQ 0.
ASSIGN COMPONENT T_FIELDCAT-FIELDNAME OF STRUCTURE
T_HDAT TO <L_FS>.
IF SY-SUBRC EQ 0.
SELECT SINGLE KUNNR INTO VBPA-KUNNR FROM VBPA
WHERE VBELN = T_HDAT-VBELN
AND PARVW = S_PARVW-LOW.
IF SY-SUBRC EQ 0.
<L_FS> = VBPA-KUNNR.
CONDENSE T_FIELDCAT-FIELDNAME.
CONCATENATE C_CNAM T_FIELDCAT-FIELDNAME+4(1) INTO W_FLD.
CONDENSE W_FLD.
ASSIGN COMPONENT W_FLD OF STRUCTURE T_HDAT TO <L_FS>.
IF SY-SUBRC EQ 0.
SELECT SINGLE NAME1 INTO <L_FS> FROM KNA1
WHERE KUNNR = VBPA-KUNNR.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
* Calculating Tax amount for the Sales Order.
SELECT SUM( MWSBP ) INTO T_HDAT-MWSBP FROM VBAP
WHERE VBELN = T_HDAT-VBELN.
* Modifying Header Data Table with the modified entries.
MODIFY T_HDAT.
ENDLOOP.
DELETE T_HDAT WHERE DEL = 'X'.
ENDFORM. " PROCESS_DATA
*Eject
*---------------------------------------------------------------------*
* FORM DISPLAY_LIST *
*---------------------------------------------------------------------*
* Display Header / Item data using Header / Item table name *
*---------------------------------------------------------------------*
* --> P_TABNM *
*---------------------------------------------------------------------*
FORM DISPLAY_LIST USING P_TABNM.
W_PERCENTAGE = 100.
W_DISPLAY_TEXT = TEXT-010.
PERFORM SET_PROGRESS USING W_PERCENTAGE W_DISPLAY_TEXT.
S_LAYOUT-COLWIDTH_OPTIMIZE = C_X.
S_LAYOUT-ZEBRA = C_X.
S_LAYOUT-BOX_FIELDNAME = C_BOX.
S_LAYOUT-GROUP_CHANGE_EDIT = C_X.
S_LAYOUT-DETAIL_POPUP = C_X.
S_LAYOUT-F2CODE = C_F_CODE.
GS_VARIANT-REPORT = SY-REPID.
G_SAVE = C_A.
IF P_TABNM = C_T_HDAT.
PERFORM DISPLAY_HEADER_DATA.
ELSE.
PERFORM DISPLAY_ITEM_DATA.
ENDIF.
ENDFORM. " DISPLAY_LIST
*Eject
*---------------------------------------------------------------------*
* FORM DISPLAY_HEADER_DATA *
*---------------------------------------------------------------------*
* Display Sales Order Header Data. *
*---------------------------------------------------------------------*
FORM DISPLAY_HEADER_DATA.
IF NOT T_HDAT[] IS INITIAL.
DESCRIBE TABLE T_HDAT LINES W_LIN.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BUFFER_ACTIVE = ''
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = C_PF_STATUS_SET
I_CALLBACK_USER_COMMAND = C_USER_COMMAND
I_BYPASSING_BUFFER = 'X'
IT_FIELDCAT = TAB_FIELDCAT[]
IS_LAYOUT = S_LAYOUT
I_SAVE = G_SAVE
IS_VARIANT = W_VARIANT1
IT_EVENTS = TAB_EVENTS[]
TABLES
T_OUTTAB = T_HDAT.
ELSE.
MESSAGE S208(00) WITH TEXT-005.
ENDIF.
ENDFORM. " DISPLAY_HEADER_DATA
*Eject
*---------------------------------------------------------------------*
* FORM DISPLAY_ITEM_DATA *
*---------------------------------------------------------------------*
* Display Sales Order Item Data. *
*---------------------------------------------------------------------*
FORM DISPLAY_ITEM_DATA.
DATA: BEGIN OF T_PLANT OCCURS 0,
WERKS LIKE VBAP-WERKS,
NAME1 LIKE T001W-NAME1,
END OF T_PLANT.
SELECT * FROM VBAP INTO CORRESPONDING FIELDS OF TABLE T_IDAT
WHERE VBELN = W_SONUM
AND PSTYV IN S_PSTYV
AND MATNR IN S_MATNR
AND PRODH IN S_PRODH
AND WERKS IN S_WERKS
AND LPRIO IN S_LPRIO.
IF NOT T_IDAT[] IS INITIAL.
* START CHANGE BY samir inserting the delivery date in second level
LOOP AT T_CDPOS ."WHERE VALUE_NEW EQ C_B.
IF T_CDPOS-VALUE_NEW EQ C_B.
READ TABLE T_CDHDR WITH KEY OBJECTID = T_CDPOS-OBJECTID
OBJECTCLAS = C_VERKBELEG
CHANGENR = T_CDPOS-CHANGENR.
IF SY-SUBRC EQ 0.
move T_CDHDR-OBJECTID to T_CDHDR1-OBJECTID.
move T_CDHDR-UDATE to T_CDHDR1-UDATE .
append T_CDHDR1.
CLEAR T_CDHDR1.
ENDIF.
endif.
ENDLOOP.
loop at T_IDAT.
READ TABLE T_CDHDR1 WITH KEY OBJECTID = T_IDAT-vbeln.
IF SY-SUBRC EQ 0.
move T_CDHDR1-UDATE to T_IDAT-VBEPD.
modify T_IDAT.
ENDIF.
ENDLOOP.
*End of samir change
SELECT DISTINCT PSTYV VTEXT FROM TVAPT
INTO CORRESPONDING FIELDS OF TABLE T_PSTYV
FOR ALL ENTRIES IN T_IDAT
WHERE PSTYV = T_IDAT-PSTYV
AND SPRAS = SY-LANGU.
SELECT DISTINCT LPRIO BEZEI FROM TPRIT
INTO CORRESPONDING FIELDS OF TABLE T_LPRIO
FOR ALL ENTRIES IN T_IDAT
WHERE LPRIO = T_IDAT-LPRIO
AND SPRAS = SY-LANGU.
SELECT DISTINCT WERKS NAME1 FROM T001W INTO CORRESPONDING FIELDS OF
TABLE T_PLANT FOR ALL ENTRIES IN T_IDAT
WHERE WERKS = T_IDAT-WERKS.
SELECT SINGLE VTEXT INTO T_IDAT-BBDES FROM TVFST
WHERE FAKSP = T_IDAT-FAKSP.
SORT T_PSTYV ASCENDING BY PSTYV.
SORT T_PLANT ASCENDING BY WERKS.
SORT T_LPRIO ASCENDING BY LPRIO.
LOOP AT T_IDAT.
AT NEW PSTYV.
READ TABLE T_PSTYV WITH KEY PSTYV = T_IDAT-PSTYV BINARY SEARCH.
IF SY-SUBRC NE 0.
CLEAR T_PSTYV-VTEXT.
ENDIF.
ENDAT.
T_IDAT-ICDES = T_PSTYV-VTEXT.
READ TABLE T_PLANT WITH KEY WERKS = T_IDAT-WERKS BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_IDAT-NAME1 = T_PLANT-NAME1.
ENDIF.
READ TABLE T_LPRIO WITH KEY LPRIO = T_IDAT-LPRIO BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_IDAT-DPDES = T_LPRIO-BEZEI.
ENDIF.
MODIFY T_IDAT.
ENDLOOP.
W_ALV_STAT = C_I.
CALL FUNCTION 'REUSE_ALV_GRID_DISPLAY'
EXPORTING
I_BUFFER_ACTIVE = SPACE
I_CALLBACK_PROGRAM = SY-CPROG
I_CALLBACK_PF_STATUS_SET = C_PF_STATUS_SET
I_CALLBACK_USER_COMMAND = C_USER_COMMAND
IT_FIELDCAT = TAB_FIELDCAT[]
IS_LAYOUT = S_LAYOUT
I_SAVE = G_SAVE
IS_VARIANT = GS_VARIANT
IT_EVENTS = TAB_EVENTS[]
TABLES
T_OUTTAB = T_IDAT.
CLEAR W_SONUM.
W_TNAME = C_T_HDAT.
ELSE.
MESSAGE S208(00) WITH TEXT-005.
ENDIF.
ENDFORM. " DISPLAY_ITEM_DATA
*Eject
*---------------------------------------------------------------------*
* FORM USER_COMMAND *
*---------------------------------------------------------------------*
* Processing based on the functions executed by the user. *
*---------------------------------------------------------------------*
* --> F_UCOMM *
* --> I_SELFIELD *
*---------------------------------------------------------------------*
FORM USER_COMMAND USING F_UCOMM LIKE SY-UCOMM
I_SELFIELD TYPE SLIS_SELFIELD.
DATA: LW_ORDER LIKE VBAK-VBELN.
IF I_SELFIELD-TABINDEX EQ 0.
MESSAGE S208(00) WITH TEXT-003.
I_SELFIELD-REFRESH = C_X.
EXIT.
ENDIF.
CASE F_UCOMM.
WHEN C_F_CODE.
IF I_SELFIELD-SEL_TAB_FIELD NS C_VBELN.
MESSAGE S208(00) WITH TEXT-004.
.
EXIT.
ENDIF.
IF W_SONUM NE I_SELFIELD-VALUE.
W_TNAME = C_T_IDAT.
W_SONUM = I_SELFIELD-VALUE.
PERFORM FIELD_CATALOG_BUILD TABLES TAB_FIELDCAT.
PERFORM DISPLAY_LIST USING W_TNAME.
ENDIF.
* If user has selected Display Sales Order / Display Credit Data.
WHEN C_VA03 OR C_VKM3.
IF I_SELFIELD-VALUE IS INITIAL.
READ TABLE T_HDAT INDEX I_SELFIELD-TABINDEX
TRANSPORTING VBELN.
LW_ORDER = T_HDAT-VBELN.
ELSE.
LW_ORDER = I_SELFIELD-VALUE.
ENDIF.
SET PARAMETER ID C_AUN FIELD LW_ORDER.
* When Display Sales Order is selected.
IF F_UCOMM = C_VA03.
* Display the Selected Sales Order.
CALL TRANSACTION C_VA03 AND SKIP FIRST SCREEN.
ELSE.
* Check on user authorization for executing VKM3 transaction.
PERFORM AUTHORITY_CHECK USING C_VKM3.
********************************************************************
*
* ALY MULTIPLE RECORDS WILL BE INCORPOTARED HERE
* IF I_SELFIELD-VALUE IS INITIAL.
* loop at T_HDAT.
*
* READ TABLE T_HDAT INDEX I_SELFIELD-TABINDEX
* TRANSPORTING VBELN.
* LW_ORDER = T_HDAT-VBELN.
** append lw_order.
** clear lw_order.
** ELSE.
** LW_ORDER = I_SELFIELD-VALUE.
* endloop.
* ENDIF.
* SET PARAMETER ID C_AUN FIELD LW_ORDER.
*******************************************************************
* If user is authorized then execute VKM3 transaction.
CHECK SY-SUBRC EQ 1.
CALL TRANSACTION C_VKM3 AND SKIP FIRST SCREEN.
* If the selected item is released refresh list with the released
* sales order.
PERFORM CHECK_RELEASE_STATUS USING I_SELFIELD-VALUE.
I_SELFIELD-REFRESH = C_X.
ENDIF.
ENDCASE.
CLEAR F_UCOMM.
ENDFORM.
*Eject
*---------------------------------------------------------------------*
* FORM PF_STATUS_SET *
*---------------------------------------------------------------------*
* Set the Application Toolbar and System Functions. *
*---------------------------------------------------------------------*
* --> RT_EXTAB *
*---------------------------------------------------------------------*
FORM PF_STATUS_SET USING RT_EXTAB TYPE SLIS_T_EXTAB.
CLEAR RT_EXTAB.
IF W_TNAME = C_T_HDAT.
SET PF-STATUS C_PF_STATUS.
ELSE.
SET PF-STATUS C_PF_STATUS_DTL.
ENDIF.
ENDFORM.
*Eject
*---------------------------------------------------------------------*
* FORM CHECK_RELEASE_STATUS *
*---------------------------------------------------------------------*
* Check in the database table for released sales order, if released *
* then delete the current saled order from the list and refresh it. *
*---------------------------------------------------------------------*
* --> P_VBELN *
*---------------------------------------------------------------------*
FORM CHECK_RELEASE_STATUS USING P_VBELN.
SELECT SINGLE CMFRE INTO VBAK-CMFRE FROM VBAK
WHERE VBELN = P_VBELN.
IF NOT VBAK-CMFRE IS INITIAL.
DELETE T_HDAT WHERE VBELN = P_VBELN.
ENDIF.
ENDFORM. " CHECK_RELEASE_STATUS
*Eject
*---------------------------------------------------------------------*
* FORM MODIFY_FIELDCAT *
*---------------------------------------------------------------------*
* Modifying Field Catelog for populating Partner Function Details. *
*---------------------------------------------------------------------*
* --> T_FIELDCAT *
*---------------------------------------------------------------------*
FORM MODIFY_FIELDCAT TABLES T_FIELDCAT TYPE SLIS_T_FIELDCAT_ALV.
LOOP AT S_PARVW.
SELECT SINGLE VTEXT INTO R_PARVW-LOW
FROM TPART
WHERE PARVW = S_PARVW-LOW
AND SPRAS = C_E.
R_PARVW-OPTION = S_PARVW-LOW.
APPEND R_PARVW.
ENDLOOP.
SORT R_PARVW ASCENDING BY OPTION.
DELETE ADJACENT DUPLICATES FROM R_PARVW.
SORT T_FIELDCAT ASCENDING BY FIELDNAME.
CLEAR W_CTR.
LOOP AT R_PARVW.
ADD 1 TO W_CTR.
CONCATENATE C_KUNN W_CTR INTO W_FLD.
CONDENSE W_FLD.
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = W_FLD BINARY SEARCH.
IF SY-SUBRC EQ 0.
T_FIELDCAT-SELTEXT_L = R_PARVW-LOW.
T_FIELDCAT-SELTEXT_M = R_PARVW-LOW.
T_FIELDCAT-SELTEXT_S = R_PARVW-LOW.
T_FIELDCAT-REPTEXT_DDIC = R_PARVW-LOW.
T_FIELDCAT-EXPONENT = R_PARVW-OPTION.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.
ENDLOOP.
ENDFORM.
*Eject
*---------------------------------------------------------------------*
* FORM SET_PROGRESS *
*---------------------------------------------------------------------*
* Set System Progress Bar Indicator with percentage and message. *
*---------------------------------------------------------------------*
* --> P_W_PERCENTAGE *
* --> P_W_DISPLAY_TEXT *
*---------------------------------------------------------------------*
FORM SET_PROGRESS USING P_W_PERCENTAGE P_W_DISPLAY_TEXT.
CALL FUNCTION 'SAPGUI_PROGRESS_INDICATOR'
EXPORTING
PERCENTAGE = P_W_PERCENTAGE
TEXT = P_W_DISPLAY_TEXT.
ENDFORM. " SET_PROGRESS
*Eject
*---------------------------------------------------------------------*
* FORM FREE_WORK_TABLES *
*---------------------------------------------------------------------*
* Free the contents and memory occupied by work tables. *
*---------------------------------------------------------------------*
FORM FREE_WORK_TABLES.
FREE: T_HDAT, T_IDAT, T_VBAK, T_VBAP, T_VBUK, T_VBKD.
ENDFORM.
*Eject
*&---------------------------------------------------------------------*
*& Form GET_CUSTOMER_NAMES
*&---------------------------------------------------------------------*
* Get the Customer names from KNA1.
*----------------------------------------------------------------------*
* Tables T_HDAT.
*----------------------------------------------------------------------*
FORM GET_CUSTOMER_NAMES TABLES T_HDAT STRUCTURE T_HDAT.
SELECT KUNNR NAME1 INTO TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN1.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN2.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN3.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN4.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN5.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN6.
SELECT KUNNR NAME1 APPENDING TABLE T_KNA1_NAME
FROM KNA1 FOR ALL ENTRIES IN T_HDAT
WHERE KUNNR = T_HDAT-KUNN7.
SORT T_KNA1_NAME BY KUNNR NAME1.
DELETE ADJACENT DUPLICATES FROM T_KNA1_NAME.
CLEAR T_HDAT.
LOOP AT T_HDAT.
W_TABIX = SY-TABIX.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN1.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM1.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN2.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM2.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN3.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM3.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN4.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM4.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN5.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM5.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN6.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM6.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
READ TABLE T_KNA1_NAME WITH KEY KUNNR = T_HDAT-KUNN7.
IF SY-SUBRC = 0.
MOVE T_KNA1_NAME-NAME1 TO T_HDAT-CNAM7.
MODIFY T_HDAT INDEX W_TABIX .
ENDIF.
ENDLOOP.
ENDFORM. " GET_CUSTOMER_NAMES
*Eject
*&---------------------------------------------------------------------*
*& Form F4_FOR_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM F4_FOR_VARIANT.
DATA: LW_EXIT.
* Get saved list of variant on pressing F4.
CALL FUNCTION 'REUSE_ALV_VARIANT_F4'
EXPORTING
IS_VARIANT = W_VARIANT1
I_SAVE = C_A
IMPORTING
E_EXIT = LW_EXIT
ES_VARIANT = W_VARIANT
EXCEPTIONS
NOT_FOUND = 2.
IF SY-SUBRC = 2.
MESSAGE ID SY-MSGID TYPE 'S' NUMBER SY-MSGNO
WITH SY-MSGV1 SY-MSGV2 SY-MSGV3 SY-MSGV4.
ELSE.
IF LW_EXIT = SPACE.
P_VARI = W_VARIANT-VARIANT.
ENDIF.
ENDIF.
ENDFORM. " F4_FOR_VARIANT
*Eject
*&---------------------------------------------------------------------*
*& Form CHK_VARIANT
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHK_VARIANT.
CLEAR W_VARIANT1.
W_VARIANT1-REPORT = W_REPID.
IF NOT P_VARI IS INITIAL.
MOVE W_VARIANT1 TO W_VARIANT.
MOVE P_VARI TO W_VARIANT-VARIANT.
* check the existence of the variant in saved list
CALL FUNCTION 'REUSE_ALV_VARIANT_EXISTENCE'
EXPORTING
I_SAVE = C_A
CHANGING
CS_VARIANT = W_VARIANT.
W_VARIANT1 = W_VARIANT.
ELSE.
CLEAR W_VARIANT1.
W_VARIANT1-REPORT = W_REPID.
ENDIF.
ENDFORM. " CHK_VARIANT
*&---------------------------------------------------------------------*
*& Form CHECK_CUSTOMER_PF
*&---------------------------------------------------------------------*
* text
*----------------------------------------------------------------------*
* --> p1 text
* <-- p2 text
*----------------------------------------------------------------------*
FORM CHECK_CUSTOMER_PF.
LOOP AT T_VBAK.
IF NOT S_KUNN1[] IS INITIAL AND
NOT S_KUNN2[] IS INITIAL AND
NOT S_KUNN3[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN1
AND PARVW IN S_PARV1.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN2
AND PARVW IN S_PARV2.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN3
AND PARVW IN S_PARV3.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN1[] IS INITIAL AND
NOT S_KUNN2[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN1
AND PARVW IN S_PARV1.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN2
AND PARVW IN S_PARV2.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN1[] IS INITIAL AND
NOT S_KUNN3[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN1
AND PARVW IN S_PARV1.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN3
AND PARVW IN S_PARV3.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN2[] IS INITIAL AND
NOT S_KUNN3[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN2
AND PARVW IN S_PARV2.
IF SY-SUBRC EQ 0.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN3
AND PARVW IN S_PARV3.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN1[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN1
AND PARVW IN S_PARV1.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN2[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN2
AND PARVW IN S_PARV2.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ELSE.
IF NOT S_KUNN3[] IS INITIAL.
SELECT SINGLE VBELN INTO VBPA-VBELN
FROM VBPA
WHERE VBELN = T_VBAK-VBELN
AND KUNNR IN S_KUNN3
AND PARVW IN S_PARV3.
IF SY-SUBRC NE 0.
DELETE T_VBAK.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDIF.
ENDLOOP.
ENDFORM. " CHECK_CUSTOMER_PF
Pasting your entire code is not clear
I would use the FM REUSE_ALV_POPUP_TO_SELECT with some field in parameter I_CHECKBOX_FIELDNAME or I_LINEMARK_FIELDNAME
_________________
François Henrotte
ABAP Consultant
+32.475.28.75.32
(Belgium)
Please visit http://www.eponasolutions.com
why u are writing so many read statements : instead of that use performs and forms . and then put ur request. thatz better
READ TABLE T_FIELDCAT WITH KEY FIELDNAME = C_KLPRZ.
IF SY-SUBRC = 0.
T_FIELDCAT-REPTEXT_DDIC = C_CRDLMT.
T_FIELDCAT-SELTEXT_L = C_CRDLMT.
T_FIELDCAT-SELTEXT_M = C_CRDLMT.
T_FIELDCAT-SELTEXT_S = C_CRDLMT.
MODIFY T_FIELDCAT INDEX SY-TABIX.
ENDIF.